*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #090807;--surface: #121110;--card: #1a1816;--card-hover: #24211d;--text: #f0ebe4;--text-muted: #7d7770;--accent: #e07a50;--accent-glow: rgba(224, 122, 80, .1);--accent-border: rgba(224, 122, 80, .35);--sage: #8ba882;--border: rgba(240, 235, 228, .06);--border-hover: rgba(240, 235, 228, .13)}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:Plus Jakarta Sans,system-ui,sans-serif;font-weight:400;min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");pointer-events:none;z-index:1}.container{max-width:940px;margin:0 auto;padding:2rem 1.5rem 4rem}header{text-align:center;margin-bottom:2.8rem;padding-top:1.2rem}header h1{font-family:Fraunces,serif;font-weight:400;font-size:3.4rem;font-optical-sizing:auto;letter-spacing:-.03em;color:var(--text);line-height:1;margin-bottom:.35rem}header h1 span{color:var(--accent);font-style:italic;font-variation-settings:"SOFT" 100,"WONK" 1}.subtitle{font-size:.72rem;color:var(--text-muted);letter-spacing:.28em;text-transform:uppercase;font-weight:500}.week-nav{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:2.2rem}.week-nav button{background:var(--card);border:1px solid var(--border);color:var(--text-muted);width:42px;height:42px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:1.1rem}.week-nav button:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-glow)}.week-nav button:active{transform:scale(.95)}.week-label{font-family:Fraunces,serif;font-size:1.25rem;font-weight:500;color:var(--text);min-width:220px;text-align:center}.week-label .year{color:var(--text-muted);font-weight:400;font-size:.95rem}.week-nav .today-btn{font-size:.65rem;width:auto;padding:.4rem 1rem;border-radius:20px;letter-spacing:.12em;text-transform:uppercase;font-family:Plus Jakarta Sans,sans-serif;font-weight:600}.grid-header{display:grid;grid-template-columns:68px 1fr 1fr 1fr;gap:5px;margin-bottom:5px;padding:0 2px}.grid-header span{text-align:center;font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;color:var(--text-muted);padding:.5rem 0;font-weight:600}.grid-header span:first-child{text-align:left}.meal-grid{display:grid;grid-template-columns:68px 1fr 1fr 1fr;gap:5px}.grid-col{display:flex;flex-direction:column;gap:5px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.day-label{display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.7rem .3rem;min-height:62px;animation:fadeInUp .35s ease both}.day-label .day-abbr{font-family:Fraunces,serif;font-size:1.2rem;font-weight:600;line-height:1}.day-label .day-date{font-size:.6rem;color:var(--text-muted);margin-top:2px;font-weight:500}.day-label.is-today{background:var(--accent);color:var(--bg);border-color:var(--accent)}.day-label.is-today .day-date{color:#09080780}.meal-cell{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.65rem .85rem;min-height:62px;display:flex;align-items:center;cursor:grab;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;position:relative;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}.meal-cell:hover{border-color:var(--border-hover);background:var(--card-hover)}.meal-cell:hover:after{content:"edit";position:absolute;right:8px;top:5px;font-size:.5rem;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;opacity:.4}.meal-cell.editing{border-color:var(--accent);background:var(--card-hover);box-shadow:0 0 16px var(--accent-glow);cursor:text}.meal-cell.editing:after{display:none}.meal-cell.dragging{z-index:50;box-shadow:0 16px 48px #00000080,0 0 0 2px var(--accent),0 0 24px var(--accent-glow);cursor:grabbing}.meal-cell.empty .meal-text{color:var(--text-muted);font-style:italic;opacity:.35;font-size:.85rem}.meal-text{font-size:.92rem;font-weight:400;color:var(--text);line-height:1.3;pointer-events:none}.meal-input{background:transparent;border:none;outline:none;color:var(--text);font-family:Plus Jakarta Sans,sans-serif;font-size:.92rem;font-weight:400;width:100%;padding:0;-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.meal-input::placeholder{color:var(--text-muted);opacity:.35}.status-bar{display:flex;justify-content:space-between;align-items:center;margin-top:1.8rem;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-size:.72rem;color:var(--text-muted)}.save-status{display:flex;align-items:center;gap:6px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--sage);transition:background .3s}.status-dot.saving{background:var(--accent);animation:pulse .8s infinite}.status-dot.error{background:#c44}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.meal-count strong{color:var(--accent);font-weight:600}.actions-row{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.action-btn{background:var(--card);border:1px solid var(--border);color:var(--text-muted);padding:.5rem 1rem;border-radius:8px;font-family:Plus Jakarta Sans,sans-serif;font-size:.72rem;letter-spacing:.04em;cursor:pointer;transition:all .2s ease;font-weight:500}.action-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-glow)}.action-btn:active{transform:scale(.97)}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%) translateY(20px);background:var(--accent);color:var(--bg);padding:.6rem 1.4rem;border-radius:10px;font-size:.82rem;font-weight:500;z-index:100;opacity:0;pointer-events:none;transition:all .3s ease}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.confirm-bar{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--border-hover);padding:.7rem 1.2rem;border-radius:12px;display:flex;align-items:center;gap:1rem;font-size:.82rem;color:var(--text);z-index:100;box-shadow:0 8px 32px #0006}.confirm-bar button{border:none;padding:.35rem .9rem;border-radius:6px;font-family:Plus Jakarta Sans,sans-serif;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s ease}.confirm-yes{background:#c44;color:#fff}.confirm-yes:hover{background:#d55}.confirm-no{background:var(--card);color:var(--text-muted);border:1px solid var(--border)}.confirm-no:hover{border-color:var(--border-hover);color:var(--text)}@media(max-width:640px){.container{padding:1rem .7rem 3rem}header{margin-bottom:2rem}header h1{font-size:2.4rem}.grid-header,.meal-grid{grid-template-columns:50px 1fr 1fr 1fr;gap:4px}.grid-col{gap:4px}.grid-header{margin-bottom:4px}.day-label{padding:.5rem .2rem;min-height:54px}.day-label .day-abbr{font-size:.95rem}.meal-cell{padding:.5rem .6rem;min-height:54px}.meal-text,.meal-input{font-size:.82rem}.meal-cell:hover:after{display:none}.week-nav{gap:.7rem}.week-label{font-size:1rem;min-width:150px}}@media(max-width:380px){.grid-header,.meal-grid{grid-template-columns:42px 1fr 1fr 1fr;gap:3px}.grid-col{gap:3px}}
