:root{--bg:#faf7f2;--surface:#fff;--surface-2:#f3eee6;--border:#e6dfd3;--text:#2a2622;--muted:#847a6e;--accent:#d9622b;--accent-soft:#fbe6da;--accent-text:#fff;--note:#eef2e6;--note-text:#4e6b2c;--danger:#c0392b;--radius:12px;--shadow:0 1px 2px #3c28140f, 0 4px 12px #3c28140d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:15px/1.45 -apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:var(--surface-2);border:1px solid #0000;border-radius:8px;padding:8px 14px;transition:background .15s,border-color .15s,transform .1s}button:active{transform:scale(.97)}button.primary{background:var(--accent);color:var(--accent-text);font-weight:600}button.primary:hover{filter:brightness(1.05)}button.ghost{border-color:var(--border);background:0 0}button.ghost:hover{background:var(--surface-2)}button.small{padding:5px 10px;font-size:13px}button.danger{color:var(--danger)}button.icon{background:0 0;width:34px;height:34px;padding:0;font-size:20px;line-height:1}button.icon:hover{background:var(--surface-2)}input,textarea{background:var(--surface);border:1px solid var(--border);border-radius:8px;outline:none;width:100%;padding:9px 12px}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea{resize:vertical}.app{max-width:1400px;margin:0 auto;padding:0 20px 40px}.topbar{padding:calc(16px + env(safe-area-inset-top)) 0 16px;background:var(--bg);z-index:5;align-items:center;gap:24px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.tabs{background:var(--surface-2);border-radius:10px;gap:4px;padding:4px;display:flex}.tabs button{color:var(--muted);background:0 0;padding:6px 14px;font-weight:500}.tabs button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.count{color:var(--muted);margin-left:4px;font-size:12px}.menu-wrap{margin-left:auto;position:relative}.menu-backdrop{z-index:10;position:fixed;inset:0}.menu{z-index:11;background:var(--surface);border:1px solid var(--border);transform-origin:100% 0;border-radius:12px;flex-direction:column;min-width:210px;padding:6px;animation:.14s ease-out pop;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #3c281426}.menu button{text-align:left;background:0 0;padding:10px 12px}.menu button:hover{background:var(--surface-2)}.planner{grid-template-columns:240px 1fr;align-items:start;gap:20px;display:grid}.sidebar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;max-height:calc(100vh - 96px);padding:14px;display:flex;position:sticky;top:76px}.sidebar h3{margin:0;font-size:15px}.hint{color:var(--muted);margin:2px 0 10px;font-size:12px}.side-list{flex-direction:column;gap:4px;margin:10px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.side-list li{background:var(--surface-2);cursor:grab;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:14px;display:flex}.side-list li:hover{background:var(--accent-soft)}.side-list li:active{cursor:grabbing}.grip{color:var(--muted);letter-spacing:-2px;font-size:11px}.side-list .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.mins{color:var(--muted);font-size:12px}.empty-li{color:var(--muted);padding:8px;font-size:13px;list-style:none}.week-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.week-nav{align-items:center;gap:6px;display:flex}.week-title{text-align:center;flex-direction:column;min-width:170px;line-height:1.2;display:flex}.week-title span{color:var(--muted);font-size:13px}.week-stats{color:var(--muted);align-items:center;gap:10px;font-size:13px;display:flex}.days{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;display:grid}.day{flex-direction:column;gap:8px;display:flex}.day-head{align-items:baseline;gap:6px;padding:0 4px;display:flex}.wd{text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:700}.dm{color:var(--muted);font-size:13px}.day.today .wd,.day.today .dm{color:var(--accent)}.day.past{opacity:.6}.slot{border-radius:var(--radius);border:1.5px dashed var(--border);cursor:pointer;background:0 0;flex-direction:column;gap:4px;min-height:96px;padding:10px;transition:border-color .15s,background .15s;display:flex;position:relative}.slot:hover{border-color:var(--accent)}.slot.filled{border-style:solid;border-color:var(--border);background:var(--surface);box-shadow:var(--shadow)}.day.today .slot.filled{border-color:var(--accent)}.slot.note{background:var(--note);color:var(--note-text)}.slot.drop{border-color:var(--accent);background:var(--accent-soft);border-style:solid}.meal-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:600}.slot-text{word-break:break-word;font-size:14px;font-weight:600;line-height:1.3}.slot-add{color:var(--muted);opacity:0;margin:auto;font-size:22px;transition:opacity .15s}.slot:hover .slot-add{opacity:1}.slot .clear{width:22px;height:22px;color:var(--muted);opacity:0;background:0 0;padding:0;font-size:11px;position:absolute;top:6px;right:6px}.slot:hover .clear{opacity:1}.slot .clear:hover{background:var(--surface-2);color:var(--danger)}.toolbar{gap:10px;margin-bottom:12px;display:flex}.toolbar .search{max-width:420px}.chips{flex-wrap:wrap;gap:6px;margin-bottom:18px;display:flex}.chip{background:var(--surface);border-color:var(--border);border-radius:999px;padding:4px 12px;font-size:13px}.chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.recipe-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:16px;display:flex}.recipe-card:hover{border-color:var(--accent)}.recipe-card h3{margin:0;font-size:16px}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.tags{flex-wrap:wrap;gap:4px;display:flex}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:2px 8px;font-size:12px}.empty{color:var(--muted);text-align:center;padding:60px 0}.modal-backdrop{z-index:50;background:#140f0a73;place-items:center;padding:16px;animation:.15s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;flex-direction:column;width:min(560px,100%);max-height:calc(100dvh - 32px);animation:.18s cubic-bezier(.2,.9,.3,1.1) pop;display:flex;box-shadow:0 20px 60px #00000040}.modal-head{justify-content:space-between;align-items:center;padding:16px 18px 8px;display:flex}.modal-head h2{margin:0;font-size:18px}.modal-body{overscroll-behavior:contain;padding:8px 18px 18px;overflow-y:auto}.modal-body:has(>.modal-actions,>.form){padding-bottom:0}.modal-actions{background:var(--surface);border-top:1px solid var(--border);padding:12px 0 calc(14px + env(safe-area-inset-bottom));justify-content:space-between;gap:8px;margin-top:6px;display:flex;position:sticky;bottom:0}.form .modal-actions{justify-content:flex-end}@keyframes fade{0%{opacity:0}}@keyframes sheet{0%{transform:translateY(100%)}}@keyframes pop{0%{opacity:0;transform:scale(.96)translateY(6px)}}.form{flex-direction:column;gap:12px;display:flex}.form label{flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.form small{color:var(--muted);font-weight:400}.form .row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.detail h4{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 0 6px;font-size:13px}.ingredients{margin:0;padding-left:20px}.ingredients li{padding:2px 0}.instructions{white-space:pre-wrap;margin:0}.current{background:var(--surface-2);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;font-size:14px;display:flex}.current-actions{gap:6px;display:flex}.pick-list{flex-direction:column;gap:2px;max-height:50vh;margin:10px 0 0;padding:0;list-style:none;display:flex;overflow-y:auto}.pick-list button{text-align:left;background:0 0;justify-content:space-between;gap:12px;width:100%;padding:9px 10px;display:flex}.pick-list button:hover{background:var(--surface-2)}.pick-list button.selected{background:var(--accent-soft)}.pick-list .muted{color:var(--muted);font-size:13px}.pick-list .as-note{color:var(--note-text);font-style:italic}@media (width<=1100px){.planner{grid-template-columns:1fr}.sidebar{display:none}}@media (width<=760px){.app{padding:0 16px 32px}input,textarea{font-size:16px}.topbar{gap:10px}.brand-name{display:none}.tabs{flex:1}.tabs button{flex:1;padding:6px 8px}.week-title{min-width:0}.modal-backdrop{place-items:end stretch;padding:0}.modal{border-radius:18px 18px 0 0;width:100%;max-height:calc(100dvh - 24px);animation:.24s cubic-bezier(.2,.9,.3,1) sheet}.modal-body{padding-bottom:calc(18px + env(safe-area-inset-bottom))}.modal-actions button{flex:1;padding:12px}.pick-list button{flex-direction:column;gap:2px}.days{grid-template-columns:1fr}.day{grid-template-columns:56px 1fr 1fr;align-items:stretch;display:grid}.day-head{flex-direction:column;gap:0;padding-top:10px}.slot{min-height:72px}.slot .clear,.slot-add{opacity:1}.toolbar{flex-direction:column}}.center{text-align:center;align-content:center;place-items:center;gap:12px;min-height:100vh;padding:16px;display:grid}.muted{color:var(--muted)}.login{background:var(--surface);border:1px solid var(--border);width:min(320px,100%);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:12px;padding:28px 24px;display:flex}.login .brand{justify-content:center;margin-bottom:8px}.login button:disabled{opacity:.6;cursor:default}.login-error{color:var(--danger);margin:0;font-size:14px}.toast{left:50%;bottom:calc(20px + env(safe-area-inset-bottom));background:var(--text);color:var(--bg);box-shadow:var(--shadow);z-index:100;cursor:pointer;border-radius:10px;max-width:calc(100% - 32px);padding:10px 16px;font-size:14px;position:fixed;transform:translate(-50%)}.voice{text-align:center;justify-items:center;gap:14px;padding:8px 0 4px;display:grid}.voice-hint{max-width:34ch;margin:0;font-size:17px}.voice-button{background:var(--accent);width:132px;height:132px;color:var(--accent-text);box-shadow:var(--shadow);border:none;border-radius:50%;font-size:52px}.voice-button.recording{background:var(--danger);font-size:40px;animation:1.6s ease-out infinite voice-pulse}@keyframes voice-pulse{0%{box-shadow:0 0 #c0392b73}to{box-shadow:0 0 0 28px #c0392b00}}@media (prefers-reduced-motion:reduce){.voice-button.recording{animation:none}}.voice-label{color:var(--muted);margin:0;font-size:17px}.voice-time{font-variant-numeric:tabular-nums;margin:0;font-size:28px;font-weight:600}.voice-spinner{border:5px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;width:56px;height:56px;animation:.9s linear infinite voice-spin}@keyframes voice-spin{to{transform:rotate(360deg)}}.voice-error{color:var(--danger);margin:0;font-size:17px}.pending-banner{border-radius:var(--radius);background:var(--accent-soft);justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.pending-banner button{flex-shrink:0}.pending-error{color:var(--danger)}.pending-note{border-radius:var(--radius);background:var(--accent-soft);margin:0 0 12px;padding:10px 14px}.detail .recording{width:100%;margin-bottom:12px;display:block}
