:root{--ink: #15151c;--paper: #f4f2eb;--card: #fffef8;--lime: #d7ff3f;--yellow: #ffe872;--coral: #ff6048;--ink-60: rgba(21, 21, 28, .6);--ink-40: rgba(21, 21, 28, .4);--ink-12: rgba(21, 21, 28, .12);--rule: 1px solid var(--ink);--rail: 60px;--display: "Anton", "Arial Narrow", Impact, sans-serif;--body: "DM Sans", Inter, system-ui, -apple-system, "Segoe UI", sans-serif}@media(min-width:900px){:root{--rail: 76px}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{overflow-x:hidden}body{margin:0;font-family:var(--body);font-size:16px;line-height:1.45;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:-.02em;line-height:.92;margin:0}h1{font-size:clamp(2.25rem,11vw,4.5rem)}h2{font-size:clamp(1.35rem,5.5vw,2rem)}h3{font-size:1.05rem;letter-spacing:0}.label,.eyebrow{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;line-height:1.2}.eyebrow{display:block;margin-bottom:.5rem;color:var(--ink-60)}.muted{color:var(--ink-60)}.error{color:var(--coral);font-weight:700}.success{font-weight:700}button{font:inherit;font-weight:700;cursor:pointer;border:var(--rule);border-radius:0;background:var(--card);color:var(--ink);padding:.6rem 1rem;text-transform:uppercase;font-size:12px;letter-spacing:.08em;min-height:44px;transition:background .12s steps(2),color .12s steps(2)}button:hover{background:var(--lime)}button.primary{background:var(--ink);color:var(--paper)}button.primary:hover,button.danger:hover{background:var(--coral);color:var(--card)}button:disabled{opacity:.4;cursor:default;background:var(--card)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--coral);outline-offset:1px}.icon-button{padding:0;width:44px;min-height:44px;display:grid;place-items:center;flex:none}.link-button{border:none;background:none;padding:.25rem 0;min-height:0;text-decoration:underline;text-underline-offset:3px;font-size:11px}.link-button:hover{background:var(--lime)}.link-button.danger{color:var(--coral)}input,select,textarea{font:inherit;padding:.6rem .7rem;border:var(--rule);border-radius:0;background:var(--card);color:var(--ink);width:100%;min-height:44px}textarea{resize:vertical}input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--ink);flex:none}label{display:flex;flex-direction:column;gap:.35rem;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}label input,label select,label textarea{text-transform:none;letter-spacing:0;font-weight:400;font-size:16px}label.checkbox{flex-direction:row;align-items:center;gap:.6rem}label.checkbox input{width:20px}.layout{min-height:100vh;min-height:100dvh;padding-left:var(--rail)}.rail{position:fixed;top:0;left:0;bottom:0;width:var(--rail);background:var(--ink);border-right:var(--rule);display:flex;flex-direction:column;align-items:center;z-index:20;padding-bottom:env(safe-area-inset-bottom)}.rail-brand{font-family:var(--display);font-size:22px;color:var(--lime);height:var(--rail);display:grid;place-items:center;width:100%;border-bottom:1px solid rgba(244,242,235,.25);text-decoration:none;flex:none}.rail-nav{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.75rem 0;width:100%;overflow-x:hidden;overflow-y:auto}.rail-link{position:relative;width:100%;aspect-ratio:1;max-height:60px;flex:none;display:grid;place-items:center;color:#f4f2eb8c;text-decoration:none}.rail-link:hover,.rail-link.active{color:var(--ink);background:var(--lime)}.rail-link span{position:absolute;left:calc(100% + 8px);background:var(--ink);color:var(--paper);border:1px solid var(--paper);padding:.3rem .5rem;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .1s}@media(hover:hover){.rail-link:hover span{opacity:1}}.rail-foot{margin-top:auto;width:100%;display:flex;flex-direction:column;align-items:center;gap:2px;padding:.75rem 0}.rail-foot .rail-link{max-height:52px}main{padding:1.25rem 1rem 4rem;max-width:1180px}@media(min-width:700px){main{padding:2rem 2rem 5rem}}.page{display:flex;flex-direction:column;gap:1.25rem}.page-loading{padding:4rem 1rem;text-align:center;font-family:var(--display);text-transform:uppercase;font-size:1.5rem}.masthead{border-bottom:2px solid var(--ink);padding-bottom:.75rem}.masthead h1{overflow-wrap:anywhere}.masthead-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-top:.75rem}.masthead-actions{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.card{background:var(--card);border:var(--rule);border-radius:0;padding:1rem}@media(min-width:700px){.card{padding:1.25rem}}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;border-bottom:var(--rule);padding-bottom:.6rem;margin-bottom:.9rem}.card-head .label{display:flex;align-items:center;gap:.4rem}.card.invert{background:var(--ink);color:var(--paper);border-color:var(--ink)}.card.invert .muted,.card.invert .eyebrow{color:#f4f2eb99}.card.invert .card-head{border-bottom-color:#f4f2eb4d}.card.lime{background:var(--lime)}.card.coral{background:var(--coral);color:var(--card)}.badge{display:inline-block;background:var(--lime);color:var(--ink);border:var(--rule);border-radius:0;padding:1px 6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap}.badge.overdue{background:var(--coral);color:var(--card)}.badge.person{background:var(--yellow)}.badge.ghost{background:transparent}.button-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.75rem}.auth-page{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:1.5rem 1rem;background-image:linear-gradient(var(--ink-12) 1px,transparent 1px),linear-gradient(90deg,var(--ink-12) 1px,transparent 1px);background-size:48px 48px}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:1rem}.auth-card h1{font-size:clamp(2rem,9vw,3rem)}.widget-grid{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:780px){.widget-grid{grid-template-columns:repeat(6,1fr)}.widget-grid>.span-4{grid-column:span 4}.widget-grid>.span-3{grid-column:span 3}.widget-grid>.span-2{grid-column:span 2}.widget-grid>.span-6{grid-column:span 6}}.dinner-title{font-family:var(--display);text-transform:uppercase;font-size:clamp(1.75rem,8vw,3.25rem);line-height:.9;letter-spacing:-.02em;overflow-wrap:anywhere}.dinner-empty{font-family:var(--display);text-transform:uppercase;font-size:clamp(1.4rem,6vw,2.25rem);line-height:.95;color:#f4f2eb73}.note{background:var(--yellow);border:var(--rule);padding:.9rem 1rem;transform:rotate(-1.6deg);font-weight:500}.note .label{display:block;margin-bottom:.35rem}.stat{display:flex;flex-direction:column;justify-content:space-between;gap:.5rem;text-decoration:none;color:inherit;min-height:118px}.stat:hover{background:var(--lime)}.stat-value{font-family:var(--display);font-size:clamp(2.5rem,13vw,4rem);line-height:.85;letter-spacing:-.03em}.upcoming{list-style:none;margin:0;padding:0}.upcoming li{display:grid;grid-template-columns:62px 1fr;gap:.9rem;align-items:baseline;padding:.75rem 0;border-top:var(--rule)}.upcoming li:first-child{border-top:none;padding-top:0}.upcoming-when{font-family:var(--display);font-size:13px;text-transform:uppercase;letter-spacing:.02em;line-height:1.15}.upcoming-when.is-today{background:var(--coral);color:var(--card);padding:2px 4px}.upcoming-what{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;font-weight:500;overflow-wrap:anywhere}.preschool-tomorrow{display:flex;flex-direction:column}.preschool-tomorrow-child{padding:.65rem 0;border-top:var(--rule)}.preschool-tomorrow-child:first-child{border-top:none;padding-top:0}.preschool-tomorrow-name{display:block;font-weight:800;font-size:1rem;margin-bottom:.5rem;overflow-wrap:anywhere}.preschool-tomorrow-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.preschool-tomorrow-col{display:flex;flex-direction:column;gap:.15rem;min-width:0}.preschool-tomorrow-time{font-weight:700;font-size:.95rem;font-variant-numeric:tabular-nums}.preschool-tomorrow-by{font-size:.85rem;overflow-wrap:anywhere}.empty{padding:1.25rem 0;text-align:center;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-40)}.week-strip{display:flex;flex-direction:column;border:var(--rule);background:var(--card)}.day-row{display:grid;grid-template-columns:68px 1fr;align-items:stretch;border-bottom:var(--rule);min-height:76px}.day-row:last-child{border-bottom:none}@media(min-width:700px){.day-row{grid-template-columns:132px 1fr;min-height:88px}}.day-name{border-right:var(--rule);padding:.75rem .6rem;display:flex;flex-direction:column;gap:.15rem;background:var(--paper)}.day-row.is-today .day-name{background:var(--lime)}.day-name b{font-family:var(--display);font-weight:400;text-transform:uppercase;font-size:clamp(1rem,4.5vw,1.5rem);line-height:1}.day-name .label{color:var(--ink-60)}.day-row.is-today .day-name .label{color:var(--ink)}.meal-cell{border:none;background:none;text-align:left;padding:.75rem .9rem;width:100%;min-height:100%;text-transform:none;letter-spacing:0;font-size:1.05rem;font-weight:700;display:flex;align-items:center;gap:.5rem;overflow-wrap:anywhere}.meal-cell.is-empty{color:var(--ink-40);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.meal-edit{padding:.5rem .75rem;display:flex;align-items:center}.meal-edit input{border:2px solid var(--ink);font-weight:700}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:var(--rule);border-top:var(--rule);background:var(--card)}.calendar-weekday{text-align:center;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;padding:.4rem .15rem;background:var(--ink);color:var(--paper);border-right:var(--rule);border-bottom:var(--rule)}.calendar-day{min-height:62px;padding:.25rem;text-align:left;display:flex;flex-direction:column;align-items:stretch;gap:2px;border:none;border-right:var(--rule);border-bottom:var(--rule);background:var(--card);overflow:hidden;text-transform:none;letter-spacing:0;font-weight:400;min-width:0}@media(min-width:700px){.calendar-day{min-height:100px;padding:.4rem}}.calendar-day.other-month{background:var(--paper);color:var(--ink-40)}.calendar-day.today .day-number{background:var(--coral);color:var(--card)}.calendar-day.selected{background:var(--yellow)}.day-number{font-size:11px;font-weight:800;align-self:flex-start;padding:1px 4px}.day-events{display:flex;flex-direction:column;gap:2px;width:100%;min-width:0}.event-pill{font-size:10px;font-weight:700;line-height:1.3;padding:1px 3px;border-left:3px solid var(--ink);background:var(--lime);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.event-pill.google{background:var(--yellow)}@media(max-width:420px){.event-pill{height:5px;padding:0;border-left:none;text-indent:-999em}}.event-list{list-style:none;padding:0;margin:0}.event-list li{padding:.7rem 0;border-top:var(--rule);display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.event-list li:first-child{border-top:none}.event-list li strong{font-size:1.05rem}.event-list li p{flex-basis:100%;margin:.2rem 0 0;font-size:.9rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#15151cbf;display:grid;place-items:end center;z-index:40}@media(min-width:640px){.modal-backdrop{place-items:center;padding:1.5rem}}.modal{width:100%;max-width:460px;display:flex;flex-direction:column;gap:.9rem;max-height:92vh;max-height:92dvh;overflow-y:auto;border-width:2px;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}.time-row{display:flex;gap:.75rem}.time-row label{flex:1}.two-col{display:grid;grid-template-columns:1fr;gap:1rem;align-items:start}@media(min-width:780px){.two-col{grid-template-columns:250px 1fr}}.list-picker{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.list-picker li{border-bottom:var(--rule)}.list-picker li:last-child{border-bottom:none}.list-picker button{width:100%;text-align:left;border:none;background:none;padding:.7rem .5rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.list-picker button.active{background:var(--ink);color:var(--paper)}.list-picker button.active .badge{background:var(--lime)}.inline-form{display:flex;gap:.5rem;margin-top:.75rem}.inline-form input{flex:1;min-width:0}.todo-form{display:grid;grid-template-columns:1fr;gap:.5rem;margin-bottom:1rem}@media(min-width:780px){.todo-form{grid-template-columns:1fr auto auto auto;align-items:center}}.section-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;border-bottom:var(--rule);padding-bottom:.6rem;margin-bottom:.75rem}.item-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.item-list li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .15rem;border-bottom:var(--rule)}.item-list li:last-child{border-bottom:none}.item-list li label{flex-direction:row;align-items:center;gap:.7rem;font-size:1rem;font-weight:500;text-transform:none;letter-spacing:0;min-width:0;overflow-wrap:anywhere}.item-list li.checked label{text-decoration:line-through;color:var(--ink-40)}.item-meta{display:flex;align-items:center;gap:.4rem;flex:none}.invite-url code{word-break:break-all;background:var(--yellow);border:var(--rule);padding:.15rem .3rem;font-size:.85rem}.preschool-children{display:grid;gap:1rem;margin-bottom:1rem}@media(min-width:900px){.preschool-children{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start}}.preschool-week{border-top:var(--rule)}.preschool-day{padding:.7rem 0;border-bottom:1px solid var(--ink-12)}.preschool-day:last-child{border-bottom:none;padding-bottom:0}.preschool-day-name{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem}.preschool-day-name b{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.02em;font-size:.95rem}.preschool-slots{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:.4rem}@media(max-width:460px){.preschool-slots{grid-template-columns:1fr}}.preschool-slot{display:grid;gap:.3rem}.preschool-slot input[type=time]{font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}.note{transform:none}}
