:root { color-scheme: light; --ink:#20221f; --muted:#777a74; --paper:#f7f5ef; --card:#fffefa; --line:#dedbd3; --accent:#246b56; --weekend:#d5d6d4; --danger:#a6433a; }
* { box-sizing: border-box; }
html { min-height:100%; background:var(--paper); }
body { margin:0; min-height:100vh; color:var(--ink); background:var(--paper); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.topbar { position:sticky; z-index:10; top:0; border-bottom:1px solid rgba(220,216,207,.85); background:rgba(247,245,239,.92); backdrop-filter:blur(14px); }
.topbar__inner { display:flex; width:min(100% - 2rem,62rem); margin:auto; padding:1.1rem 0 .85rem; align-items:flex-end; justify-content:space-between; gap:1rem; }
.kicker { margin:0 0 .22rem; color:var(--accent); font-size:.7rem; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
h1 { margin:0; font-size:clamp(2rem,7vw,3rem); line-height:.95; letter-spacing:-.055em; }
.save-state { display:flex; align-items:center; gap:.5rem; padding-bottom:.2rem; color:var(--muted); font-size:.75rem; white-space:nowrap; }
.save-state span { width:.48rem; height:.48rem; border-radius:50%; background:#69a875; }
.save-state.is-saving span { background:#d39a3e; animation:pulse 1s infinite; }
.save-state.is-error { color:var(--danger); }
.save-state.is-error span { background:var(--danger); }
.calendar { display:grid; width:min(100% - 2rem,62rem); margin:.8rem auto 4rem; gap:1px; border:1px solid var(--line); background:var(--line); }
.day { display:grid; grid-template-columns:8.2rem 1fr; min-height:6.25rem; background:var(--card); }
.day--today { box-shadow:inset .25rem 0 var(--accent); }
.date-block { padding:.9rem .85rem .75rem 1rem; border-right:1px solid var(--line); background:#faf9f5; }
.day--marked .date-block { background:var(--weekend); }
.weekday { margin:0 0 .35rem; color:var(--muted); font-size:.68rem; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.date { display:flex; margin:0; align-items:baseline; gap:.4rem; }
.date b { font-size:1.9rem; line-height:1; letter-spacing:-.06em; }
.date span { color:var(--muted); font-size:.85rem; }
.holiday { margin:.45rem 0 0; color:#62655f; font-size:.64rem; line-height:1.2; }
.day-content { display:grid; padding:.7rem 1.1rem; gap:.55rem; }
.field { display:grid; min-width:0; grid-template-columns:6.5rem 1fr; align-items:start; gap:.7rem; }
.field > span { padding-top:.4rem; color:var(--muted); font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
textarea { display:block; width:100%; min-height:1.9rem; resize:none; overflow:hidden; border:0; border-radius:.35rem; outline:0; color:var(--ink); background:transparent; font:inherit; line-height:1.35; transition:background .15s,box-shadow .15s; }
textarea:hover { background:#f7f5ef; }
textarea:focus { background:#f3f1e9; box-shadow:0 0 0 .4rem #f3f1e9; }
textarea::placeholder { color:#a8aaa5; }
.field--menu textarea { font-size:clamp(1.02rem,2.2vw,1.2rem); font-weight:750; letter-spacing:-.02em; }
.field--note { padding-top:.45rem; border-top:1px solid var(--line); }
.field--note textarea { color:#656862; font-size:.86rem; }
@keyframes pulse { 50% { opacity:.35; } }
@media (max-width:40rem) {
  .topbar__inner,.calendar { width:min(100% - 1rem,62rem); }
  .topbar__inner { padding-top:1rem; }
  .calendar { margin-top:.6rem; }
  .day { grid-template-columns:5.8rem 1fr; min-height:8rem; }
  .date-block { padding:.8rem .55rem .7rem .85rem; }
  .weekday { font-size:.57rem; letter-spacing:.03em; }
  .date { display:block; }
  .date b { display:block; font-size:1.8rem; }
  .date span { font-size:.75rem; }
  .holiday { font-size:.58rem; }
  .day-content { padding:.7rem .85rem; }
  .field { display:block; }
  .field > span { display:block; padding:0 0 .3rem; font-size:.57rem; }
  .field--menu textarea { font-size:1.03rem; }
  .save-state b { display:none; }
}
@media (prefers-reduced-motion:reduce) { * { animation:none!important; } }

button,input,select,textarea{font:inherit}.site-header{position:sticky;z-index:20;top:0;border-bottom:1px solid var(--line);background:rgba(247,245,239,.95);backdrop-filter:blur(14px)}.site-header__inner{display:flex;width:min(100% - 2rem,62rem);height:3.6rem;margin:auto;align-items:center;gap:1.5rem}.brand{color:var(--ink);font-weight:900;text-decoration:none}.site-header nav{display:flex;align-self:stretch;gap:.15rem}.site-header nav a{display:grid;padding:0 .7rem;place-items:center;color:var(--muted);font-size:.82rem;font-weight:700;text-decoration:none;border-bottom:.2rem solid transparent}.site-header nav a.active{color:var(--accent);border-color:var(--accent)}.site-header form{margin-left:auto}.link-button{border:0;color:var(--muted);background:none;cursor:pointer}.page-heading{display:flex;width:min(100% - 2rem,62rem);margin:1.6rem auto 1rem;align-items:flex-end;justify-content:space-between;gap:1rem}.primary{border:0;border-radius:.55rem;padding:.75rem 1rem;color:#fff;background:var(--accent);font-weight:800;cursor:pointer}.primary.compact{padding:.65rem .9rem}.store-filters{display:flex;width:min(100% - 2rem,62rem);margin:0 auto 1rem;gap:.45rem;overflow:auto}.store-filters button,.chips button{border:1px solid var(--line);border-radius:999px;padding:.48rem .75rem;background:#fff;white-space:nowrap;cursor:pointer}.store-filters button.active{color:#fff;border-color:var(--accent);background:var(--accent)}.shopping-list,.history-list,.admin-list,.admin-add{width:min(100% - 2rem,62rem);margin:0 auto 4rem}.shopping-group{margin-bottom:1.35rem}.shopping-group h2,.admin-list h2{margin:0 0 .45rem;color:var(--muted);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase}.shopping-row{display:grid;grid-template-columns:2.8rem 1fr 2.5rem;min-height:4rem;margin-bottom:1px;align-items:center;background:#fff;border:1px solid var(--line)}.buy-check{width:1.7rem;height:1.7rem;margin:auto;border:2px solid #b4b7b1;border-radius:50%;color:transparent;background:#fff;font-weight:900;cursor:pointer}.item-main{display:grid;padding:.6rem 0}.item-main strong{font-size:1rem}.item-main span{margin-top:.15rem;color:var(--muted);font-size:.75rem}.edit-item{height:100%;border:0;background:transparent;color:var(--muted);cursor:pointer}.shopping-row.purchased{opacity:.5}.shopping-row.purchased .buy-check{color:#fff;border-color:var(--accent);background:var(--accent)}.shopping-row.purchased strong{text-decoration:line-through}.empty{padding:2rem;border:1px dashed #bbb;border-radius:.7rem;color:var(--muted);text-align:center}.picker,dialog[data-item-dialog]{width:min(100% - 1rem,38rem);max-height:90vh;padding:0;border:0;border-radius:1rem;background:var(--paper);box-shadow:0 2rem 5rem #0005}.picker::backdrop,dialog::backdrop{background:#18201dbb}.dialog-head{position:sticky;z-index:2;top:0;display:flex;padding:1rem;align-items:center;justify-content:space-between;background:var(--paper);border-bottom:1px solid var(--line)}.dialog-head h2{margin:0}.dialog-head button{border:0;background:none;font-size:1.6rem}.quick-add{display:grid;grid-template-columns:1fr auto auto;padding:1rem;gap:.5rem}.quick-add input,.quick-add select,.admin-add input,.admin-add select,.login-card input,dialog[data-item-dialog] input,dialog[data-item-dialog] select,dialog[data-item-dialog] textarea{min-width:0;border:1px solid var(--line);border-radius:.5rem;padding:.7rem;background:#fff}.picker-group{padding:0 1rem 1rem}.picker-group h3{margin:.5rem 0;font-size:.75rem;text-transform:uppercase;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.recent>div{display:flex;border-top:1px solid var(--line);align-items:center}.recent>div>button:first-child{flex:1;padding:.65rem;border:0;background:none;text-align:left}.forget{border:0;color:var(--danger);background:none;font-size:.72rem}.admin-add{display:grid;grid-template-columns:1fr auto auto;gap:.5rem}.admin-list>section{margin-bottom:1.3rem}.admin-list article{display:flex;padding:.55rem .7rem;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fff}.admin-list button{border:0;padding:.45rem;background:none}.admin-list .danger{color:var(--danger)}.history-list article{display:grid;padding:.75rem;border-bottom:1px solid var(--line);background:#fff}.history-list span{color:var(--muted);font-size:.75rem}.login-page{display:grid;place-items:center}.login-card{display:grid;width:min(100% - 2rem,24rem);padding:2rem;gap:1rem;border:1px solid var(--line);border-radius:1rem;background:#fff}.login-card label{display:grid;gap:.35rem;color:var(--muted);font-size:.8rem}.login-card .check{display:flex;align-items:center}.form-error{color:var(--danger)}dialog[data-item-dialog] form{display:grid;padding:1.2rem;gap:1rem}dialog[data-item-dialog] h2{margin:0}dialog[data-item-dialog] label{display:grid;gap:.35rem}.quantity{display:grid;grid-template-columns:3rem 1fr 3rem}.quantity button{border:1px solid var(--line);background:#fff;font-size:1.3rem}.quantity input{text-align:center}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}.dialog-actions>button:first-child{border:0;background:none}
@media(max-width:42rem){.site-header__inner{width:100%;height:auto;flex-wrap:wrap;padding:.65rem .5rem 0;gap:.5rem}.brand{display:none}.site-header nav{order:2;width:100%;height:2.7rem;justify-content:space-around}.site-header nav a{padding:0 .35rem}.site-header form{position:absolute;right:.5rem;top:.5rem}.page-heading{margin-top:1rem}.quick-add,.admin-add{grid-template-columns:1fr auto}.quick-add select,.admin-add select{grid-column:1/2}.quick-add .primary,.admin-add .primary{grid-column:2;grid-row:1/3}.shopping-list{width:100%}.shopping-group h2{padding-left:.7rem}.shopping-row{border-left:0;border-right:0;border-radius:0}}
.admin-list .fixed-name{color:var(--ink);font-weight:700;text-align:left;cursor:pointer}
