:root{--ink:#292219;--muted:#756b5e;--gold:#9a743b;--paper:#f7f2e8;--card:#fffdf8;--line:#ded2bd;--green:#3c8258;--red:#a34b43}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:radial-gradient(circle at 15% 0,rgba(204,174,112,.2),transparent 28rem),var(--paper);font-family:system-ui,-apple-system,"Segoe UI",sans-serif}h1,h2,p{margin-top:0}h1,h2{font-family:Georgia,serif;font-weight:500}h1{font-size:clamp(2.2rem,5vw,4.4rem);line-height:1;margin-bottom:.4rem}h2{font-size:1.7rem;margin-bottom:1rem}.eyebrow{margin:0 0 .45rem;text-transform:uppercase;letter-spacing:.16em;color:var(--gold);font-size:.72rem;font-weight:750}.muted,.empty{color:var(--muted)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}label{display:grid;gap:.4rem;font-weight:650;margin:1rem 0}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:.85rem;background:#fff;color:var(--ink)}button:not(.meal-card,.text-button,.quiet,.dialog-close,.remove,.check){padding:.78rem 1.05rem;border-radius:12px;background:var(--ink);color:white}.login-page{min-height:100vh;display:grid;place-items:center}.login-shell{width:min(1000px,92vw);display:grid;grid-template-columns:1.1fr .8fr;gap:4rem;align-items:center}.brand img{width:min(100%,540px);max-height:250px;object-fit:contain;border-radius:18px;box-shadow:0 18px 50px #59421f26;margin-bottom:2rem}.brand h1{font-size:clamp(2.8rem,6vw,5rem)}.brand>p:last-child{color:var(--muted);max-width:550px;font-size:1.1rem}.login-card,.side-card,.todos{background:rgba(255,253,248,.9);border:1px solid var(--line);border-radius:24px;padding:1.7rem;box-shadow:0 15px 40px #4c35131a}.login-card form>button{width:100%;margin-top:.5rem}.text-button,.quiet{background:none;color:var(--gold);padding:.7rem 0}.error{color:var(--red);min-height:1.3rem;margin:.8rem 0 0}.topbar{height:84px;padding:0 max(4vw,20px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fffdf8d9;backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.wordmark{display:flex;align-items:center;gap:.8rem;text-decoration:none;color:var(--ink);font-family:Georgia,serif;font-size:1.2rem}.wordmark img{width:50px;height:50px;object-fit:cover;border-radius:50%}.wordmark small{display:block;color:var(--gold);font:700 .65rem system-ui;text-transform:uppercase;letter-spacing:.1em}.topbar>div{display:flex;align-items:center;gap:1rem}.layout{width:min(1440px,94vw);margin:0 auto;padding:3.5rem 0;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:2rem}.title-row{display:flex;justify-content:space-between;gap:2rem;align-items:end;margin-bottom:1.8rem}.week-nav{display:flex;gap:.5rem;white-space:nowrap}.meal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.75rem}.meal-card{text-align:left;min-height:175px;padding:1rem;border:1px solid var(--line);border-radius:18px;background:#fffaf1;color:var(--ink);display:flex;flex-direction:column;gap:.6rem;transition:.15s}.meal-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #49341618}.meal-card.filled{background:var(--card);border-color:#c3a56e}.meal-card.today{box-shadow:inset 0 0 0 2px var(--gold)}.meal-card .day{font-size:.78rem;text-transform:uppercase;color:var(--gold);font-weight:750}.meal-card strong{font-family:Georgia,serif;font-size:1.15rem}.meal-card>span:not(.day){font-size:.85rem;color:var(--muted)}.meal-card small{margin-top:auto;color:var(--muted)}aside{display:grid;gap:1rem;align-content:start;position:sticky;top:105px}.side-card{box-shadow:none}.member{display:flex;align-items:center;gap:.7rem;padding:.7rem 0;border-bottom:1px solid #eee5d7}.member:last-child{border:0}.member div,.timeline div{display:grid}.member small,.timeline small,.todo small{color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;background:#b8afa1}.dot.online{background:var(--green);box-shadow:0 0 0 4px #3c825820}.timeline div{padding:.55rem 0;border-bottom:1px solid #eee5d7}.todos{margin-top:2rem}.todo-form{display:grid;grid-template-columns:1fr 180px auto;gap:.6rem}.todo{display:grid;grid-template-columns:32px 1fr 28px;align-items:center;gap:.6rem;padding:.8rem 0;border-bottom:1px solid #eee5d7}.todo div{display:grid}.todo.done strong{text-decoration:line-through;color:var(--muted)}.check{width:27px;height:27px;border:1px solid var(--line);border-radius:50%;background:white;color:var(--green)}.remove,.dialog-close{background:none;color:var(--muted);font-size:1.5rem}.dialog-close{position:absolute;right:1rem;top:.7rem}dialog{width:min(520px,92vw);border:1px solid var(--line);border-radius:22px;padding:1.8rem;background:var(--card);color:var(--ink);box-shadow:0 25px 80px #241a0d55}dialog::backdrop{background:#20170d88;backdrop-filter:blur(3px)}dialog form{position:relative}.dialog-actions{display:flex;justify-content:space-between;margin-top:1rem}.danger{background:transparent!important;color:var(--red)!important}#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:white;padding:.8rem 1.2rem;border-radius:12px;opacity:0;transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1050px){.meal-grid{grid-template-columns:repeat(4,1fr)}.layout{grid-template-columns:1fr}aside{position:static;grid-template-columns:1fr 1fr}}
@media(max-width:700px){.login-shell{grid-template-columns:1fr;gap:1.5rem;padding:2rem 0}.brand img{max-height:150px;margin-bottom:1rem}.brand>p:last-child{display:none}.topbar{height:72px}.wordmark span{font-size:1rem}.topbar #me{display:none}.layout{padding:2rem 0}.title-row{display:block}.week-nav{margin-top:1rem}.meal-grid{grid-template-columns:1fr 1fr}.meal-card{min-height:145px}.todo-form{grid-template-columns:1fr}.todo-form button{width:100%}aside{grid-template-columns:1fr}.dialog-actions{gap:.5rem}.dialog-actions button{flex:1}}
.login-shell.private{width:min(430px,92vw);display:block}.login-heading{font-size:clamp(2.2rem,8vw,3.4rem)}.back-link{display:inline-block;margin-top:1rem;color:var(--gold);text-decoration:none}
.matrix-login{position:relative;overflow:hidden;background:#020705}.matrix-canvas,.matrix-shade{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}.matrix-canvas{z-index:0}.matrix-shade{z-index:1;background:radial-gradient(circle at center,transparent 0,rgba(0,8,4,.2) 42%,rgba(0,4,2,.82) 100%)}.matrix-login .login-shell{position:relative;z-index:2}.matrix-login .login-card{background:rgba(6,17,11,.9);border-color:rgba(75,255,137,.24);color:#e9fff0;box-shadow:0 24px 80px rgba(0,0,0,.65),0 0 38px rgba(29,255,103,.08);backdrop-filter:blur(12px)}.matrix-login .eyebrow{color:#58ee8b}.matrix-login input{color:#edfff2;background:rgba(0,8,4,.76);border-color:rgba(91,255,145,.28)}.matrix-login input:focus{outline:2px solid rgba(86,255,142,.65);outline-offset:2px}.matrix-login form>button{background:#16833d;color:#f1fff5}.matrix-login form>button:hover{background:#1a9d49}@media(prefers-reduced-motion:reduce){.matrix-canvas{opacity:.42}}
.app-nav{display:flex;gap:.35rem;align-items:center;padding:.25rem;border:1px solid var(--line);border-radius:999px;background:#f4ead9}.app-nav a{color:var(--muted);text-decoration:none;font-size:.9rem;font-weight:700;padding:.52rem .85rem;border-radius:999px;white-space:nowrap}.app-nav a.active{background:var(--ink);color:#fff;box-shadow:0 5px 14px #3a29132b}.app-page[hidden]{display:none!important}.content-card{scroll-margin-top:105px}.content-card h3{font-family:Georgia,serif;font-size:1.2rem;margin:1.4rem 0 .5rem}.content-card form{display:grid;gap:.75rem}.content-card fieldset{border:1px solid var(--line);border-radius:14px;padding:.8rem}.content-card legend{font-weight:700;padding:0 .35rem}.person-chips{display:flex;flex-wrap:wrap;gap:.5rem}.person-chips label{display:block;margin:0;cursor:pointer}.person-chips input{position:absolute;opacity:0;pointer-events:none}.person-chips span{display:block;padding:.5rem .8rem;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted)}.person-chips input:checked+span{background:var(--ink);border-color:var(--ink);color:#fff}.completed-box{margin-top:1.25rem;border-top:1px solid var(--line);padding-top:1rem}.completed-box summary{cursor:pointer;font-family:Georgia,serif;font-size:1.25rem;font-weight:600}.shopping-card{margin-top:0}.section-title.split{display:flex;align-items:center;justify-content:space-between;gap:1rem}.shopping-form{grid-template-columns:1fr 190px auto!important}.outline{background:transparent!important;color:var(--gold)!important;border:1px solid var(--line)!important}.small{font-size:.85rem}.alert-banner{position:sticky;top:96px;z-index:4;margin-bottom:1.2rem;padding:1rem 1.2rem;border:1px solid #8cbf84;border-radius:14px;background:#e9f6e5;color:#25532c;box-shadow:0 8px 24px #2649221c}.alert-banner a{color:inherit;font-weight:700}.todo small+small{margin-top:.15rem}.shopping-card .danger{margin-top:1rem}
.contracts-card{margin-top:0}.contract-members{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.contract-member{border:1px solid var(--line);border-radius:16px;padding:1rem;background:#fffaf1}.contract-member-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.65rem}.contract-member-head h3,.timeline-head h3{margin:0;font-family:Georgia,serif;font-size:1.2rem}.contract-member-head button{width:38px;height:38px;padding:0!important;border-radius:50%!important}.contract-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:center;padding:.85rem 0;border-top:1px solid #eee5d7}.contract-item:first-of-type{border-top:0}.contract-item div{display:grid;gap:.18rem}.contract-item strong{font-family:Georgia,serif;font-size:1.15rem}.contract-item span,.contract-item small,.contract-item p{color:var(--muted)}.contract-item p{margin:.35rem 0 0;font-size:.9rem}.contract-timeline-wrap{margin-top:1.5rem;border-top:1px solid var(--line);padding-top:1rem}.timeline-head{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.contract-timeline{overflow-x:auto;padding-bottom:.4rem}.timeline-scale{position:relative;min-width:760px;height:30px;border-bottom:1px solid var(--line);color:var(--muted);font-size:.78rem}.timeline-scale span{position:absolute;bottom:.45rem;transform:translateX(-50%);white-space:nowrap}.timeline-row{display:grid;grid-template-columns:145px minmax(760px,1fr);gap:.75rem;align-items:center;min-height:48px}.timeline-label{display:grid;padding:.45rem 0}.timeline-label small{color:var(--muted)}.timeline-track{position:relative;height:28px;border-left:1px solid var(--line);border-right:1px solid var(--line);background:linear-gradient(90deg,rgba(154,116,59,.1) 1px,transparent 1px);background-size:8.33% 100%}.timeline-bar{position:absolute;top:4px;height:20px;border-radius:999px;background:var(--green);color:#fff;min-width:34px;box-shadow:0 4px 12px #12351d22;overflow:hidden}.timeline-bar.ending-soon{background:var(--red)}.timeline-bar span{display:block;padding:2px .55rem;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contract-form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.75rem}
@media(max-width:850px){.topbar{height:auto;min-height:72px;align-items:flex-start;flex-wrap:wrap;padding-top:.7rem;padding-bottom:.7rem}.app-nav{order:3;width:100%;overflow-x:auto;justify-content:flex-start;border-radius:16px}.shopping-form{grid-template-columns:1fr!important}.section-title.split{align-items:flex-start;flex-direction:column}.section-title.split button{width:100%}.alert-banner{top:118px}}
@media(max-width:850px){.contract-members{grid-template-columns:1fr}.contract-item{grid-template-columns:1fr}.contract-item button{width:100%}.timeline-head{display:block}.timeline-row{grid-template-columns:115px minmax(620px,1fr)}.timeline-scale{min-width:620px}.contract-form-grid{grid-template-columns:1fr}}
.dot{width:12px;height:12px;border:2px solid var(--ink);border-radius:50%;background:transparent;flex:0 0 12px}.dot.online{background:var(--green);box-shadow:none}
:root{--ink:#202124;--muted:#667085;--gold:#6f5a34;--paper:#f8fafc;--card:#fff;--line:#d8dde6;--green:#2f7d51;--red:#b0443e}body{background:var(--paper)}h1{font-size:clamp(2rem,4vw,3.4rem)}.topbar{background:#fff;backdrop-filter:none;box-shadow:0 1px 0 var(--line)}.login-card,.side-card,.todos,.content-card,.contract-member,.meal-card{background:#fff;border-color:var(--line);border-radius:8px;box-shadow:none}.meal-card{background:#fff}.meal-card.filled{border-color:#b8c0cc}.brand img{border-radius:8px;box-shadow:none}input,select,textarea,button:not(.meal-card,.text-button,.quiet,.dialog-close,.remove,.check){border-radius:6px}.app-nav{display:flex;gap:.5rem;padding:0;border:0;border-radius:0;background:transparent}.app-nav a{display:block;min-width:7.2rem;text-align:center;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:4px;padding:.62rem .8rem;line-height:1.1;box-shadow:none;overflow:visible}.app-nav a.active{background:#edf2f7;color:var(--ink);border-color:#9aa4b2;box-shadow:none}.wordmark img{border-radius:6px}.wordmark small{color:var(--muted)}.eyebrow{color:var(--muted)}.alert-banner{border-radius:8px;box-shadow:none}.contract-member-head button{border-radius:4px!important}
@media(max-width:850px){.topbar{gap:.65rem}.app-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:100%;overflow:visible}.app-nav a{min-width:0;width:100%;white-space:normal;font-size:.92rem;padding:.7rem .35rem}.wordmark{min-width:0}.wordmark span{line-height:1.15}.topbar>div{margin-left:auto}.alert-banner{top:132px}}
@media(max-width:420px){.app-nav a{font-size:.86rem;padding:.65rem .25rem}.wordmark img{width:42px;height:42px}.wordmark span{font-size:.92rem}}
