:root{--ink:#253329;--muted:#6d796f;--cream:#f7f4ed;--paper:#fffdf8;--green:#52755a;--green-dark:#35543e;--sage:#dfe8da;--gold:#dfa957;--red:#a8453e;--border:#dde2d9;--shadow:0 12px 35px rgba(38,55,42,.09)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,"Times New Roman",serif}h1{font-size:clamp(2rem,4vw,3.2rem);line-height:1.05;margin-bottom:.6rem}h2{margin-bottom:.5rem}.container{max-width:1180px;margin:auto;padding:42px 24px 80px}.topbar{height:72px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;gap:28px;background:rgba(255,253,248,.96);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:9px;color:var(--green-dark);font:700 1.18rem Georgia;text-decoration:none;white-space:nowrap}.brand span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--sage)}nav{display:flex;gap:5px;flex:1}nav a{padding:9px 11px;border-radius:9px;text-decoration:none;color:var(--muted);font-size:.92rem;font-weight:650}nav a:hover{background:var(--sage);color:var(--green-dark)}.logout-form{margin:0}.nav-toggle{display:none;background:none;border:0;font-size:1.3rem}.btn{border:0;border-radius:10px;padding:10px 17px;font-weight:700;text-decoration:none;display:inline-flex;justify-content:center;align-items:center}.btn.primary{background:var(--green);color:white;box-shadow:0 5px 15px rgba(53,84,62,.2)}.btn.primary:hover{background:var(--green-dark)}.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--ink)}.wide{width:100%;padding:13px}.eyebrow{font-size:.75rem;font-weight:800;letter-spacing:.16em;color:var(--green);margin-bottom:8px}.muted{color:#929b94}.hero,.page-heading{display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:32px}.hero.compact p:last-child,.page-heading p:last-child{color:var(--muted)}.alert{border-radius:10px;padding:12px 16px;margin:0 0 20px}.alert.success{background:#dbe9d9;color:#284a31}.alert.error{background:#f4dedb;color:#7e2f29}.login-shell{min-height:100vh;display:grid;place-items:center;max-width:none;padding:24px;background:radial-gradient(circle at 15% 15%,#d8e5d3,transparent 34%),var(--cream)}.login-card{display:grid;grid-template-columns:1fr 1fr;max-width:820px;width:100%;min-height:510px;background:var(--paper);border-radius:24px;overflow:hidden;box-shadow:var(--shadow)}.login-art{padding:50px;display:flex;flex-direction:column;justify-content:end;color:white;background:linear-gradient(160deg,rgba(53,84,62,.42),rgba(30,47,34,.9)),radial-gradient(circle at 50% 20%,#8cab7c,#35543e)}.login-art span{font-size:4rem}.login-art h1{margin:.4rem 0}.login-art p{opacity:.85}.login-form{padding:55px;display:flex;flex-direction:column;justify-content:center;gap:17px}.login-form h2{font-size:2rem}.login-form small{color:var(--muted);text-align:center}.login-form label,.form-grid label,.inline-edit label{display:grid;gap:6px;font-weight:650;font-size:.88rem}input,textarea,select{width:100%;border:1px solid #ccd4cb;border-radius:9px;background:#fff;padding:10px 12px;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(82,117,90,.12)}textarea{resize:vertical}.carousel{position:relative}.carousel-track{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;padding:18px calc(50% - 330px) 34px;scrollbar-width:none}.carousel-track::-webkit-scrollbar{display:none}.day-card{scroll-snap-align:center;flex:0 0 min(660px,calc(100vw - 100px));display:grid;grid-template-columns:110px 1fr;min-height:515px;background:var(--paper);border:1px solid var(--border);border-radius:22px;overflow:hidden;box-shadow:var(--shadow);opacity:.68;transform:scale(.96);transition:.25s}.day-card.today{opacity:1;transform:scale(1);border-color:#a5ba9d}.date-block{background:var(--sage);display:flex;flex-direction:column;align-items:center;padding-top:40px;color:var(--green-dark)}.date-block strong{font:700 3rem Georgia}.date-block span{font-weight:800;text-transform:uppercase;letter-spacing:.12em}.date-block small{text-transform:uppercase}.day-content{padding:34px 38px}.today-tag{display:inline-block;background:var(--green);color:white;border-radius:99px;padding:4px 10px;font-size:.7rem;font-weight:800;letter-spacing:.1em;margin-bottom:15px}.meal-row{display:grid;grid-template-columns:38px 1fr;gap:8px;border-bottom:1px solid var(--border);padding:13px 0}.meal-row:last-of-type{border-bottom:0}.meal-row h3{font:700 1.1rem Georgia;margin:0 0 3px}.meal-row ul{margin:0;padding-left:18px}.meal-row p{margin:0}.meal-icon{font-size:1.2rem}.note{background:#faf0dd;border-left:3px solid var(--gold);padding:10px 12px;margin-top:14px}.carousel-arrow{position:absolute;z-index:2;top:48%;width:45px;height:45px;border-radius:50%;background:white;border:1px solid var(--border);box-shadow:var(--shadow);font-size:1.3rem}.carousel-arrow.prev{left:0}.carousel-arrow.next{right:0}.carousel-dots{display:flex;gap:6px;justify-content:center;max-width:200px;overflow:hidden;margin:auto}.carousel-dots button{width:7px;height:7px;border:0;border-radius:50%;padding:0;background:#c8cec6}.carousel-dots button.active{background:var(--green);width:20px;border-radius:6px}.editor{background:var(--paper);border:1px solid var(--border);border-radius:14px;padding:0 20px;margin-bottom:28px;box-shadow:0 5px 18px rgba(30,50,35,.04)}.editor>summary{padding:17px 0;font-weight:800;color:var(--green-dark);cursor:pointer}.editor[open]>summary{border-bottom:1px solid var(--border)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:22px 0;align-items:end}.span-2{grid-column:1/-1}fieldset{border:0;padding:0;margin:0}legend{font-weight:650;font-size:.88rem;margin-bottom:8px}.checks{display:flex;flex-wrap:wrap;gap:8px 18px}.checks label,.check{display:flex!important;align-items:center;gap:7px;font-weight:500!important}.checks input,.check input{width:auto}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.data-card{display:flex;gap:16px;background:var(--paper);border:1px solid var(--border);border-radius:15px;padding:22px;box-shadow:0 4px 14px rgba(30,50,35,.04)}.data-card.vertical{display:block}.data-card h2{font-size:1.35rem;margin:0}.grow{flex:1;min-width:0}.avatar{flex:none;width:45px;height:45px;display:grid;place-items:center;background:var(--sage);color:var(--green-dark);border-radius:50%;font:700 1.3rem Georgia}.chips{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0}.chips span,.role{font-size:.72rem;font-weight:750;background:var(--sage);color:var(--green-dark);border-radius:99px;padding:4px 8px}.allergy{color:var(--red);font-size:.84rem}.diet-list{padding:0;margin:13px 0;list-style:none}.diet-list li{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--border);font-size:.86rem}.inline-edit{margin-top:12px}.inline-edit summary,.link{color:var(--green);font-size:.85rem;font-weight:700;cursor:pointer}.inline-edit form{display:grid;gap:10px;background:var(--cream);padding:14px;margin-top:8px;border-radius:10px}.delete-form{display:inline-block;margin:8px 0}.link{border:0;background:none;padding:4px}.link.danger{color:var(--red)}.table-wrap{overflow:auto;background:var(--paper);border:1px solid var(--border);border-radius:14px}table{border-collapse:collapse;width:100%;min-width:690px}th,td{text-align:left;padding:14px 17px;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:#f3f3ed}td form{margin:0}.shopping-form{grid-template-columns:repeat(4,1fr)}.shopping-layout{columns:2;column-gap:18px}.shopping-category{break-inside:avoid;background:var(--paper);border:1px solid var(--border);border-radius:14px;margin:0 0 18px;overflow:hidden}.category-head{display:flex;align-items:center;gap:10px;padding:18px;background:var(--sage);color:var(--green-dark)}.category-head h2{font-size:1.25rem;margin:0}.shopping-category ul{list-style:none;padding:8px 18px;margin:0}.shopping-category li{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.shopping-category li:last-child{border:0}.shopping-category form{margin:0}.item-name{flex:1}.shopping-category li.done .item-name{text-decoration:line-through;color:var(--muted)}.round-check{width:22px;height:22px;border-radius:50%;padding:0;border:1px solid #aab5aa;background:white;color:var(--green)}.empty-state{text-align:center;color:var(--muted);padding:70px}.empty-state span{font-size:3rem}.role.admin{background:#eee1c8;color:#73541f}
@media(max-width:820px){.topbar{height:auto;min-height:66px;flex-wrap:wrap;padding:14px 20px}.nav-toggle{display:block;margin-left:auto}.topbar nav{display:none;order:3;flex-basis:100%;flex-direction:column}.topbar nav.open{display:flex}.logout-form{margin-left:0}.container{padding:30px 16px 60px}.login-card{grid-template-columns:1fr}.login-art{min-height:190px;padding:30px}.login-form{padding:35px}.form-grid,.shopping-form{grid-template-columns:1fr}.span-2{grid-column:auto}.shopping-layout{columns:1}.hero,.page-heading{align-items:flex-start;flex-direction:column}.carousel-track{padding-left:34px;padding-right:34px}.day-card{grid-template-columns:75px 1fr;flex-basis:calc(100vw - 72px)}.date-block{padding-top:30px}.day-content{padding:24px 19px}.carousel-arrow{display:none}.cards-grid{grid-template-columns:1fr}}
@media(max-width:440px){.day-card{grid-template-columns:1fr}.date-block{padding:10px;flex-direction:row;justify-content:center;gap:8px}.date-block strong{font-size:1.7rem}.login-form{padding:28px}.data-card{padding:16px}}
.install-btn{background:var(--sage);color:var(--green-dark);white-space:nowrap;font-size:.82rem;padding:8px 12px}.install-btn[hidden]{display:none}.round-check{width:24px;height:24px;font-weight:900}.round-check:disabled{opacity:.55}.install-dialog{width:min(440px,calc(100vw - 30px));border:0;border-radius:18px;padding:30px;box-shadow:0 20px 70px rgba(20,35,25,.3);color:var(--ink)}.install-dialog::backdrop{background:rgba(20,30,22,.55)}.dialog-close{position:absolute;right:14px;top:12px;border:0;background:none;font-size:1.6rem}.install-icon{width:55px;height:55px;border-radius:14px;display:grid;place-items:center;background:var(--sage);color:var(--green-dark);font-size:1.8rem}.install-dialog h2{margin-top:14px}.install-dialog ol{padding-left:22px}.ios-instructions{display:none}.install-dialog.is-ios .ios-instructions{display:block}.install-dialog.is-ios .generic-instructions{display:none}
@media(max-width:820px){.install-btn{order:2;margin-left:auto}.logout-form{order:2}.topbar nav{order:4}}
.json-editor{display:grid;gap:10px}.json-rows{display:grid;gap:9px}.json-row{display:grid;gap:9px;align-items:center}.allergy-row,.composition-row{grid-template-columns:minmax(0,1fr) 38px}.diet-row{grid-template-columns:minmax(0,1fr) minmax(100px,150px) 38px}.icon-btn{width:36px;height:36px;display:grid;place-items:center;padding:0;border-radius:50%;font-size:1.25rem;font-weight:800;line-height:1}.add-json-row{background:var(--green);color:white;border:0}.remove-json-row{background:#fff;border:1px solid #e1c5c2;color:var(--red)}.icon-btn:hover{transform:translateY(-1px)}.json-editor>.add-json-row{justify-self:start}.json-editor input{min-width:0}.json-editor+small,legend small{color:var(--muted);font-weight:500}
@media(max-width:520px){.diet-row{grid-template-columns:minmax(0,1fr) 92px 36px}.json-row{gap:6px}.json-row input{padding-left:9px;padding-right:9px}}
.resident-modal{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:rgba(24,35,27,.18);color:var(--ink);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.resident-modal::backdrop{background:rgba(12,20,14,.46);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.resident-modal-shell{height:100%;display:flex;flex-direction:column}.resident-modal-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px max(22px,calc((100vw - 1050px)/2));background:rgba(255,253,248,.94);border-bottom:1px solid rgba(221,226,217,.8);box-shadow:0 5px 18px rgba(20,35,25,.14);z-index:2}.resident-modal-header h2{margin:0;font-size:1.8rem}.resident-modal-header .eyebrow{margin-bottom:3px}.resident-modal-body{flex:1;overflow-y:auto;padding:28px max(22px,calc((100vw - 1050px)/2)) 60px}.resident-edit-form{background:rgba(255,253,248,.96);border:1px solid rgba(221,226,217,.82);border-radius:16px;padding:26px;box-shadow:0 18px 55px rgba(15,28,18,.24)}.resident-edit-form .diet-row{grid-template-columns:minmax(240px,1fr) minmax(140px,190px) 38px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:8px}.open-resident-modal{margin-top:8px}
@media(max-width:820px){.resident-modal-header{padding:16px}.resident-modal-body{padding:18px 14px 40px}.resident-edit-form{padding:18px;grid-template-columns:1fr}.resident-edit-form .span-2{grid-column:auto}.resident-edit-form .diet-row{grid-template-columns:minmax(0,1fr) 105px 36px}.modal-actions{position:sticky;bottom:-18px;background:var(--paper);padding:14px 0 2px}.resident-modal-header h2{font-size:1.45rem}}
.btn i,.install-btn i,summary i{margin-right:7px}.icon-btn i,.carousel-arrow i,.round-check i,.dialog-close i,.nav-toggle i{margin:0}.link i{font-size:.9rem}
