:root{--bg: #f6efe4;--surface: #fffaf3;--surface-2: #f1e6d6;--line: #e2d3bd;--text: #2b2118;--muted: #7a6a58;--accent: #b5651d;--accent-strong: #8f4c12;--accent-soft: #f3d9bd;--ok: #2e7d4f;--ok-soft: #d8efe0;--warn: #b3261e;--warn-soft: #f9dcd9;--info: #3b6ea5;--info-soft: #dbe7f5;--busy: rgba(120, 90, 60, .18);--quiet: rgba(60, 60, 120, .12);--active: #e0a86a;--passive: #cfe3d3;--attended: #f0c8a0;--shadow: 0 1px 2px rgba(60, 40, 20, .08), 0 4px 14px rgba(60, 40, 20, .06);--radius: 14px;--nav-h: 60px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}:root[data-theme=dark]{--bg: #1c1712;--surface: #26201a;--surface-2: #322a22;--line: #45392d;--text: #f1e8dc;--muted: #b3a191;--accent: #e0955a;--accent-strong: #f0b078;--accent-soft: #4a3320;--ok: #7ed19a;--ok-soft: #223a2b;--warn: #ff8a80;--warn-soft: #4a2320;--info: #8fb7e8;--info-soft: #24344a;--busy: rgba(230, 200, 160, .16);--quiet: rgba(140, 140, 220, .14);--active: #b9772f;--passive: #2f4a38;--attended: #7a5330;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 14px rgba(0, 0, 0, .3);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}a{color:var(--accent-strong)}h1,h2,h3{margin:0;line-height:1.2}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}p{margin:.4rem 0}svg{vertical-align:-.15em}.shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar .brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.1rem;color:var(--text);text-decoration:none}.topbar .brand img{width:26px;height:26px;border-radius:7px}.topbar .actions{display:flex;gap:4px}.page{flex:1;padding:16px 16px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom));max-width:760px;width:100%;margin:0 auto}.page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.page-title h1{display:flex;align-items:center;gap:8px}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:repeat(4,1fr);height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line)}.bottomnav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);text-decoration:none;font-size:.72rem;font-weight:600}.bottomnav a svg{font-size:1.5rem}.bottomnav a.active{color:var(--accent-strong)}.bottomnav a.active svg{color:var(--accent)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.card+.card,.stack>*+*{margin-top:12px}.card h2,.card h3{margin-bottom:8px;display:flex;align-items:center;gap:6px}.row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row.between{justify-content:space-between}.grow{flex:1}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.8rem}.mono{font-variant-numeric:tabular-nums}.center{text-align:center}.mt{margin-top:12px}.mb{margin-bottom:12px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--surface-2);color:var(--muted)}.badge.accent{background:var(--accent-soft);color:var(--accent-strong)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.info{background:var(--info-soft);color:var(--info)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.stat-grid-3{grid-template-columns:repeat(3,1fr)}.stat-grid-3 .stat .v{font-size:1.02rem}.stat{background:var(--surface-2);border-radius:10px;padding:8px 10px}.stat .k{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat .v{font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}.notice{padding:10px 12px;border-radius:10px;font-size:.9rem;display:flex;gap:8px;align-items:flex-start}.notice svg{flex:none;font-size:1.2rem;margin-top:1px}.notice.warn{background:var(--warn-soft);color:var(--warn)}.notice.ok{background:var(--ok-soft);color:var(--ok)}.notice.info{background:var(--info-soft);color:var(--info)}.notice.soft{background:var(--surface-2);color:var(--text)}.empty{text-align:center;color:var(--muted);padding:32px 12px}.empty svg{font-size:2.4rem;display:block;margin:0 auto 8px;opacity:.6}button,.btn{font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);text-decoration:none}button:disabled{opacity:.5;cursor:default}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:not(:disabled):active{background:var(--accent-strong)}button.danger{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,var(--line))}button.ghost{background:transparent;border-color:transparent}button.small{min-height:38px;padding:0 12px;font-size:.85rem;border-radius:9px}button.icon-btn{width:44px;padding:0}button.icon-btn.small{width:34px}button.block{width:100%}button.big{min-height:56px;font-size:1.05rem;border-radius:14px}button svg{font-size:1.25em}.btn-row{display:flex;gap:8px;flex-wrap:wrap}.btn-row>*{flex:1}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field>span{font-size:.85rem;font-weight:600;color:var(--muted)}input,select,textarea{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;min-height:44px;padding:8px 12px;width:100%}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--accent)}textarea{min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:1px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.field-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.check{display:flex;align-items:center;gap:8px;min-height:44px}.ing-row{display:grid;grid-template-columns:1.3fr 1.15fr 64px 34px;gap:6px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.ing-row:last-of-type{border-bottom:0}.ing-row input,.ing-row select{min-height:40px;padding:6px 8px}.ing-row .ing-sub{grid-column:1 / -1;display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}.ing-row .ing-sub input{min-height:34px;font-size:.85rem;background:transparent;border-style:dashed}.ing-row .ing-pct{min-width:56px;text-align:right;font-variant-numeric:tabular-nums}.ing-row .ing-hyd{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;color:var(--muted)}.ing-row .ing-hyd input{width:64px;min-height:34px}.password-input{position:relative}.password-input input{padding-right:44px}.password-toggle{position:absolute;right:2px;top:2px;bottom:2px;width:40px;min-height:0;border:0;background:transparent;color:var(--muted)}.segmented{display:flex;background:var(--surface-2);border-radius:12px;padding:3px;gap:3px}.segmented button{flex:1;min-height:38px;border:0;background:transparent;border-radius:9px;font-size:.9rem}.segmented button.on{background:var(--surface);box-shadow:var(--shadow);color:var(--accent-strong)}.error{color:var(--warn);font-size:.9rem;margin:6px 0}.form-actions{display:flex;gap:8px;margin-top:8px}.form-actions>*{flex:1}table.ingredients{width:100%;border-collapse:collapse;font-size:.95rem}table.ingredients th,table.ingredients td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left}table.ingredients th{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}table.ingredients td.num,table.ingredients th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.ingredients tr.total td{font-weight:700;border-bottom:0}table.ingredients.amount-first td.amount{font-weight:700;font-size:1.05rem;width:1%;padding-right:12px}table.ingredients.amount-first th:first-child{padding-right:12px}table.ingredients td .note{display:block;font-size:.75rem;color:var(--muted)}.list{display:flex;flex-direction:column;gap:10px}.list-item{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.list-item .body{flex:1;min-width:0}.list-item .title{font-weight:700}.list-item .sub{color:var(--muted);font-size:.85rem}.list-item svg.chev{color:var(--muted)}.steps{display:flex;flex-direction:column;gap:6px}.step{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:start;padding:8px 0;border-bottom:1px solid var(--line)}.step:last-child{border-bottom:0}.step .dot{width:12px;height:12px;border-radius:50%;margin:6px auto 0;background:var(--passive);border:2px solid var(--line)}.step .dot.active{background:var(--active)}.step .dot.attended{background:var(--attended)}.step .dot.done{background:var(--ok);border-color:var(--ok)}.step .dot.skipped{background:transparent;border-color:var(--muted)}.step .dot.current{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 30%,transparent);background:var(--accent);border-color:var(--accent)}.step .name{font-weight:600}.step .meta{color:var(--muted);font-size:.82rem}.step .time{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.85rem;white-space:nowrap}.step.child{padding-left:24px}.step.child .name{font-weight:500}.step.done .name,.step.skipped .name{color:var(--muted);text-decoration:line-through}.kind-chip{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.kind-chip.active{background:var(--active)}.kind-chip.passive{background:var(--passive);border:1px solid var(--line)}.kind-chip.attended{background:var(--attended)}.now-card{border:2px solid var(--accent)}.now-card .phase{color:var(--accent-strong);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.now-card h2{font-size:1.4rem;margin:4px 0}.countdown{font-size:2.6rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1.1;margin:8px 0 2px}.countdown.over{color:var(--warn)}.countdown.long{font-size:2rem}.countdown-sub{color:var(--muted);font-size:.85rem}.progress{height:6px;background:var(--surface-2);border-radius:3px;overflow:hidden;margin:10px 0}.progress>div{height:100%;background:var(--accent);border-radius:3px;transition:width .5s linear}.week-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.week{display:grid;grid-template-columns:34px repeat(7,1fr);gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;user-select:none;-webkit-user-select:none}.week .head{font-size:.7rem;text-align:center;padding:6px 0;border-bottom:1px solid var(--line);color:var(--muted);font-weight:600}.week .head b{display:block;font-size:.85rem;color:var(--text)}.week .hours{position:relative;font-size:.65rem;color:var(--muted)}.week .hours span{position:absolute;right:4px;transform:translateY(-50%)}.week .day{position:relative;border-left:1px solid var(--line);touch-action:pan-y}.week .hline{position:absolute;left:0;right:0;border-top:1px dashed color-mix(in srgb,var(--line) 70%,transparent);pointer-events:none}.week .blk{position:absolute;left:2px;right:2px;border-radius:6px;padding:2px 4px;font-size:.65rem;line-height:1.15;overflow:hidden;cursor:pointer}.week .blk.block{background:var(--busy);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--text)}.week .blk.quiet{background:var(--quiet);border:1px dashed color-mix(in srgb,var(--info) 40%,transparent);color:var(--muted);pointer-events:none}.week .blk.draft{background:color-mix(in srgb,var(--accent) 35%,transparent);border:1px solid var(--accent)}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.78rem;color:var(--muted);margin-top:8px}.legend span{display:inline-flex;align-items:center;gap:4px}.legend i{width:12px;height:12px;border-radius:3px;display:inline-block}.timeline{position:relative}.timeline .tl-day{font-weight:700;font-size:.85rem;color:var(--muted);margin:10px 0 4px;position:sticky;top:56px;background:var(--surface);padding:2px 0}.tl-item{display:grid;grid-template-columns:50px 14px 1fr;gap:8px;align-items:stretch}.tl-item .t{font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--muted);padding-top:6px}.tl-item .bar{position:relative}.tl-item .bar:before{content:"";position:absolute;left:5px;top:0;bottom:0;width:4px;border-radius:2px;background:var(--passive)}.tl-item.active .bar:before{background:var(--active)}.tl-item.attended .bar:before{background:var(--attended)}.tl-item.conflict .bar:before{background:var(--warn)}.tl-item .c{padding:6px 0 10px}.tl-item .c .n{font-weight:600}.tl-item.child .c .n{font-weight:500}.tl-item .c .d{font-size:.8rem;color:var(--muted)}.tl-item.conflict .c .n{color:var(--warn)}.tl-item .busy-tag{font-size:.75rem;color:var(--warn)}.proposal{cursor:pointer}.proposal.selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:50;display:flex;align-items:flex-end;justify-content:center}.modal-panel{width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding-bottom:calc(16px + env(safe-area-inset-bottom))}@media(min-width:640px){.modal-overlay{align-items:center}.modal-panel{border-radius:var(--radius)}}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.auth{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px}.auth .card{width:100%;max-width:380px}.auth .logo{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:16px}.auth .logo img{width:64px;height:64px;border-radius:16px}.loading{display:flex;justify-content:center;padding:48px;color:var(--muted)}.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.divider{border:0;border-top:1px solid var(--line);margin:12px 0}details summary{cursor:pointer;font-weight:600}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:var(--surface-2);border-radius:999px;padding:6px 14px;font-size:.88rem;min-height:42px}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong)}.action-bar{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:19;padding:8px 16px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line)}.action-bar button{width:100%;min-height:52px;font-size:1.02rem;max-width:728px;margin:0 auto;display:flex;white-space:nowrap}.action-bar-name{font-weight:500;opacity:.85;overflow:hidden;text-overflow:ellipsis;min-width:0}.page:has(.action-bar){padding-bottom:calc(var(--nav-h) + 96px + env(safe-area-inset-bottom))}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));background:var(--text);color:var(--bg);padding:10px 16px;border-radius:12px;z-index:60;font-size:.9rem;box-shadow:var(--shadow);max-width:92vw}
