*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}html{font-size:2.1vmin;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:max(14px,min(2.1vmin,30px))}body{color:#eef2f6;-webkit-font-smoothing:antialiased;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;background:#101418;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow:hidden}::-webkit-scrollbar{display:none}:root{--bg:#101418;--ink:#f3f6f9;--muted:#a7b1bc;--accent:#f0c074;--today:#7fd1ae;--warn:#ff8f7a;--line:#f3f6f91f;--card:#ffffff0b;--today-card:#7fd1ae1a;--space:.85rem}body{background:radial-gradient(120vmax 80vmax at 50% -10%, #1b232c, var(--bg))}.hub{grid-gap:var(--space);gap:var(--space);grid-template:"head""banner""grid"minmax(0,1fr)"foot"/minmax(0,1fr);height:100vh;padding:1.4rem 1.6rem .8rem;display:grid;overflow:hidden}.hub-head{grid-area:head}.banner{grid-area:banner}.grid{grid-area:grid}.hub-foot{grid-area:foot}.hub-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;padding-bottom:.6rem;display:flex}.brand{letter-spacing:.01em;margin-right:var(--space);font-size:1.6rem;font-weight:650}.brand-dot{color:var(--accent)}.clock{text-align:right;line-height:1.05}.clock-time{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:4.2rem;font-weight:700;display:block}.clock-date{color:var(--muted);margin-top:.2rem;font-size:1.5rem;display:block}.banner{border-left:.3rem solid var(--accent);min-height:4.4rem;padding-left:var(--space);justify-content:space-between;align-items:center;display:flex}.banner-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:1;min-width:0;font-size:2rem;font-weight:600;line-height:1.25;animation:.6s ease-out banner-in;display:-webkit-box;overflow:hidden}.banner-text--pinned{color:var(--accent)}.banner-rose{margin-right:.5rem}.banner-meta{margin-left:var(--space);flex-direction:column;align-items:flex-end;display:flex}.banner-dots{display:flex}.banner-dot{background:var(--line);border-radius:50%;width:.55rem;height:.55rem;margin-left:.4rem}.banner-dot--active{background:var(--accent)}@keyframes banner-in{0%{opacity:0}to{opacity:1}}.grid{grid-gap:var(--space);gap:var(--space);grid-template:"weather weather""calendar meals"minmax(0,1.85fr)"lists lists"minmax(0,1fr)/minmax(0,1.25fr) minmax(0,1fr);min-height:0;display:grid}.panel--calendar{grid-area:calendar}.panel--weather{grid-area:weather}.panel--meals{grid-area:meals}.panel--lists{grid-area:lists}.panel{background:var(--card);border:1px solid var(--line);border-radius:1rem;flex-direction:column;min-height:0;padding:.9rem 1.1rem;display:flex;overflow:hidden}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;margin-bottom:.6rem;display:flex}.panel-title{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);white-space:nowrap;margin-right:.6rem;font-size:1.05rem;font-weight:650}.panel-body{flex:1;min-height:0;font-size:1.3rem;overflow:hidden}.panel-note{color:var(--muted);font-size:1.3rem}.panel-note--error{color:var(--warn)}.panel-extra{color:var(--muted);white-space:nowrap;font-size:.95rem}.stale-badge{color:var(--warn);white-space:nowrap;opacity:.85;align-items:center;font-size:.9rem;display:inline-flex}.stale-dot{background:var(--warn);border-radius:50%;width:.5rem;height:.5rem;margin-right:.4rem;display:inline-block}.banner .stale-badge{margin-top:.4rem}.rows,.events{list-style:none}.day{margin-bottom:.35rem}.day-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.2rem;font-size:1.1rem;font-weight:700}.day--today .day-label{color:var(--today)}.event{border-bottom:1px solid var(--line);border-radius:.5rem;align-items:center;padding:.35rem .5rem;display:flex}.event:last-child{border-bottom:none}.event--today{background:var(--today-card)}.event--conflict{box-shadow:inset .25rem 0 0 var(--warn)}.event-icon{margin-right:.7rem;font-size:1.7rem}.event-main{flex:1;min-width:0;line-height:1.2}.event-title,.event-sub{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.event-title{font-size:1.45rem;font-weight:600}.event-sub{color:var(--muted);font-size:1.05rem}.event-when{text-align:right;white-space:nowrap;margin-left:.7rem;line-height:1.2}.event-time{color:var(--accent);font-size:1.3rem;font-weight:650}.event--today .event-time{color:var(--today)}.event-conflict{color:var(--warn);font-size:.95rem;font-weight:700}.updated-at{color:var(--muted);white-space:nowrap;font-size:.95rem}.updated-at--stale{color:var(--warn)}.weather{align-items:center;display:flex}.weather-now{flex:none;align-items:center;margin-right:1.4rem;line-height:1;display:flex}.weather-icon{margin-right:.8rem;font-size:3.6rem}.weather-temp{letter-spacing:-.02em;white-space:nowrap;font-size:4.6rem;font-weight:700}.weather-unit{color:var(--muted);vertical-align:top;margin-left:.15rem;font-size:1.6rem}.weather-summary{flex:1;min-width:0}.weather-desc{font-size:1.5rem;font-weight:600}.weather-details{color:var(--muted);margin-top:.2rem;font-size:1.05rem}.weather-today{border-left:1px solid var(--line);flex:none;max-width:34%;padding-left:1.2rem;font-size:1.2rem}.weather-today-label{font-weight:600;display:block}.weather-today-details{color:var(--muted);margin-top:.15rem;display:block}.meal{border-bottom:1px solid var(--line);border-radius:.5rem;padding:.35rem .5rem}.meal:last-child{border-bottom:none}.meal--tonight{background:var(--today-card)}.meal-slot,.meal-value{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.meal-slot{color:var(--accent);text-transform:capitalize;font-size:1rem;font-weight:650}.meal--tonight .meal-slot{color:var(--today);text-transform:uppercase;letter-spacing:.06em}.meal-value{font-size:1.35rem;font-weight:600}.list-columns{height:100%;display:flex}.list-block{flex:1;min-width:0;margin-right:1.4rem}.list-block:last-child{margin-bottom:0;margin-right:0}.list-name{text-transform:capitalize;color:var(--accent);justify-content:space-between;align-items:baseline;margin-bottom:.25rem;font-size:1.25rem;font-weight:700;display:flex}.list-count{color:var(--muted);text-transform:none;margin-left:.5rem;font-size:.95rem;font-weight:500}.list-item{border-bottom:1px solid var(--line);align-items:baseline;padding:.2rem 0;font-size:1.25rem;display:flex}.list-item:last-child{border-bottom:none}.list-item--done{color:var(--muted);text-decoration:line-through}.list-check{width:1.5rem;color:var(--accent);flex:none}.list-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.list-more{color:var(--muted);margin-top:.2rem;font-size:1rem}.hub-foot{text-align:center;color:var(--muted);border-top:1px solid var(--line);padding-top:.4rem;font-size:.95rem}.notice{flex-direction:column;justify-content:center;max-width:60rem;height:100vh;margin:0 auto;padding:3rem;display:flex}.notice .brand{margin-bottom:2rem}.notice-title{color:var(--accent);margin-bottom:1rem;font-size:3rem;font-weight:700}.notice-text{margin-bottom:1rem;font-size:1.6rem;line-height:1.4}.notice-text--muted{color:var(--muted);font-size:1.3rem}.notice-list{color:var(--warn);margin:0 0 1.5rem 1.5rem;font-size:1.4rem}.notice-list li{margin-bottom:.3rem}@media (orientation:landscape){.hub{grid-template:"banner head""grid grid"minmax(0,1fr)"foot foot"/minmax(0,1fr) auto;padding:1rem 1.4rem .6rem}.hub-head{border-bottom:none;flex-direction:column;align-items:flex-end;padding-bottom:0}.hub-head .brand{color:var(--muted);margin-right:0;font-size:1.2rem}.clock-time{font-size:3.8rem}.clock-date{font-size:1.3rem}.banner{align-self:end;min-height:0;padding-top:.4rem;padding-bottom:.4rem}.banner-text{font-size:1.8rem}.grid{grid-template:"calendar weather lists""calendar meals lists"minmax(0,1fr)/minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr)}.weather{display:block}.weather-now{margin-right:0}.weather-summary{margin-top:.4rem}.weather-today{border-left:none;border-top:1px solid var(--line);max-width:none;margin-top:.7rem;padding:.6rem 0 0}.list-columns{flex-direction:column}.list-block{flex:none;margin-bottom:.8rem;margin-right:0}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
