@font-face{font-family:Atkinson;src:url(/fonts/atkinson-hyperlegible-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Atkinson;src:url(/fonts/atkinson-hyperlegible-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:Lexend;src:url(/fonts/lexend-latin-wght-normal.woff2) format("woff2");font-weight:100 900;font-display:swap}
/* 1rem = 20px at 1280x800, 15px at 1024x600 */
html{font-size:20px;font-size:min(1.5625vw,2.5vh)}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:#0B1433;color:#F5F7FF}
body{font:400 1rem/1.25 Atkinson,"Trebuchet MS",sans-serif;-webkit-font-smoothing:antialiased}
.num,.lx{font-family:Lexend,Atkinson,sans-serif;font-weight:600;font-variant-numeric:tabular-nums}
.wrap{display:flex;gap:1.2rem;padding:1rem 1.2rem;width:100vw;height:100vh}
.left{flex:806 1 0;min-width:0;display:flex;flex-direction:column;gap:.7rem}
.right{flex:402 1 0;min-width:0;display:flex;flex-direction:column;gap:.7rem}
/* top: clock + weather strip */
.top{display:flex;gap:.9rem;align-items:stretch;height:5.9rem;flex:none}
.clock{flex:none;width:13.5rem;display:flex;flex-direction:column;justify-content:center}
.clock .t{font-size:4.4rem;line-height:.95;letter-spacing:-.1rem;white-space:nowrap}
.clock .t small{font-size:1.4rem;letter-spacing:0;margin-left:.3rem;color:#B8C0E0}
.clock .d{font:500 1.1rem Lexend,sans-serif;color:#B8C0E0;margin-top:.3rem;white-space:nowrap}
.wx{flex:1;min-width:0;background:#16204A;border-radius:.9rem;display:flex;align-items:center;padding:0 .8rem;gap:.6rem;overflow:hidden}
.now{display:flex;align-items:center;gap:.4rem;padding-right:.7rem;border-right:.1rem solid #2C3870;flex:none}
.now svg{width:2.7rem;height:2.7rem}
.now .tp{font-size:2.6rem}
.now .meta{white-space:nowrap;font-size:max(15px,.85rem);color:#B8C0E0;line-height:1.3}
.now .meta b{color:#F5F7FF;font-weight:700}
.days{flex:1;display:flex;justify-content:space-around;min-width:0}
.day{text-align:center;font-size:max(15px,.8rem);color:#B8C0E0;line-height:1.2}
.day svg{width:1.5rem;height:1.5rem;display:block;margin:.05rem auto}
.day .n{font-family:Lexend,sans-serif;font-weight:600;color:#F5F7FF;font-size:max(15px,.9rem);font-variant-numeric:tabular-nums;white-space:nowrap}
.day .n span{color:#B8C0E0;font-weight:400}
.day .r{font-size:max(15px,.75rem);color:#8E98C4}
.day .r.hi{color:#3FD8D0;font-weight:700}
/* today callout */
.today{flex:none;background:#FF7A1A;color:#0B1433;border-radius:.9rem;padding:.55rem 1rem .6rem;max-height:9.5rem;overflow:hidden}
.today h2{font:600 max(15px,.9rem) Lexend,sans-serif;letter-spacing:.05rem;text-transform:uppercase}
.ev{display:flex;align-items:baseline;gap:.8rem;font-size:1.3rem;font-weight:700;margin-top:.15rem;line-height:1.2}
.ev .tm{width:5.9rem;flex:none;font:600 1rem Lexend,sans-serif;font-variant-numeric:tabular-nums}
.ev .tt{flex:1;min-width:0}
.ev.past{opacity:.5}
.today .t1{font-size:1.4rem;font-weight:700;margin-top:.1rem}
.today .t2{font-size:1.05rem;font-weight:700}
.tag{display:inline-block;background:#0B1433;color:#F5F7FF;font-size:max(15px,.8rem);font-weight:700;border-radius:99px;padding:.05rem .6rem;margin-left:.5rem;vertical-align:.15rem;white-space:nowrap;line-height:1.3}
.tag.care{background:#3FD8D0;color:#0B1433}
.tag.rsvp{background:#FF7A1A;color:#0B1433}
.tag.gift{background:#FFD23F;color:#0B1433}
.tag.bd{background:#B48CFF;color:#0B1433}
.more{font-size:max(15px,.85rem);color:#B8C0E0;padding:.2rem 0 .1rem 4.4rem}
.today .more{color:#0B1433;padding-left:6.7rem}
/* calendar */
.cal{background:#16204A;border-radius:.9rem;padding:.2rem 1rem;flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.cday{display:flex;gap:.7rem;padding:.4rem 0;border-bottom:.1rem solid #2C3870;align-items:baseline;flex:none}
.cday.nob{border-bottom:0}
.dl{width:4.5rem;flex:none;font-size:1.1rem;white-space:nowrap}
.dl .n{display:inline-block;width:1.5rem;text-align:right;font-family:Lexend,sans-serif;font-weight:600;font-variant-numeric:tabular-nums}
.dl .w{color:#B8C0E0;margin-left:.4rem}
.evs{flex:1;min-width:0;font-size:1.15rem;line-height:1.3}
.sep{color:#8E98C4;margin:0 .3rem;font-weight:700}
.evs .e{white-space:nowrap}
.evs .ns{color:#FFD23F;font-weight:700}
.evs .et{color:#3FD8D0;font-family:Lexend,sans-serif;font-weight:600;margin-right:.4rem}
.evs .tag{margin-left:.3rem;vertical-align:.1rem}
.gap{display:flex;align-items:center;gap:.6rem;height:1.5rem;color:#8E98C4;font-size:max(15px,.75rem);font-weight:700;flex:none}
.gap:before,.gap:after{content:"";flex:1;border-top:.1rem dotted #4A5684}
.none{color:#8E98C4;font-size:1rem;padding:.6rem 0}
/* foot */
.foot{display:flex;gap:.7rem;height:3.2rem;flex:none}
.bday{flex:1;min-width:0;white-space:nowrap;overflow:hidden;background:#16204A;border-radius:.7rem;display:flex;align-items:center;gap:.5rem;padding:0 .8rem;font-size:1rem}
.bday img{width:1.4rem;height:1.4rem;flex:none}
.rem{flex:2.1;min-width:0;white-space:nowrap;overflow:hidden;background:#16204A;border-radius:.7rem;border-left:.4rem solid #FFD23F;display:flex;align-items:center;padding:0 .7rem;font-size:.95rem;font-weight:700}
.rem .tag{background:#FFD23F;color:#0B1433}
.rem span.x{overflow:hidden;text-overflow:ellipsis}
.hide{display:none}
/* chore cards */
.card{background:#16204A;border:.2rem solid #3FD8D0;border-radius:1rem;padding:.5rem .8rem;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.hd{display:flex;align-items:center;gap:.5rem;flex:none}
.hd img{width:2.3rem;height:2.3rem;border-radius:50%}
.hd h3{font:600 1.5rem Lexend,sans-serif;flex:1;min-width:0;white-space:nowrap;overflow:hidden}
.hd .c{font:600 1.5rem Lexend,sans-serif;font-variant-numeric:tabular-nums}
.hd .c span{font-size:1rem;color:#B8C0E0}
.pills{display:flex;gap:.4rem;margin:.3rem 0 .2rem;flex:none}
.pill{display:flex;align-items:center;gap:.3rem;background:#0B1433;border:.1rem solid #2C3870;border-radius:99px;padding:.1rem .6rem .1rem .4rem;font:600 max(15px,.85rem) Lexend,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}
.pill svg{width:1rem;height:1rem;flex:none}
.pill.g svg{width:1.2rem}
.bar{position:relative;height:1.5rem;display:flex;align-items:center;justify-content:center;color:#FFD23F;font:600 max(15px,.8rem) Lexend,sans-serif;background:#0B1433;border-radius:99px;margin:.2rem 0 .3rem;overflow:hidden;flex:none}
.bar .fill{position:absolute;left:0;top:0;bottom:0;background:#FF7A1A;background:linear-gradient(90deg,#FF7A1A,#FFD23F);border-radius:99px}
.bar .lbl{position:relative}
.bar.go .lbl{color:#0B1433}
.bar img{position:absolute;top:.1rem;height:1.3rem}
.slots{display:flex;justify-content:space-between;padding:0 .1rem;flex:none}
.sl{text-align:center;font:700 max(15px,.75rem) Lexend,sans-serif;color:#B8C0E0;width:1.7rem}
.sl img{width:1.3rem;height:1.3rem;display:block;margin:0 auto .1rem}
.sl.dim img{opacity:.35}
.sl.td img{border-radius:50%;box-shadow:0 0 0 .15rem #FFD23F}
.sl.td span{background:#FFD23F;color:#0B1433;border-radius:99px;padding:0 .3rem}
ul{list-style:none;margin-top:.15rem;flex:1;min-height:0;overflow:hidden}
li{display:flex;align-items:center;gap:.5rem;font-size:1rem;height:1.4rem;white-space:nowrap}
li img{width:1.2rem;height:1.2rem;flex:none}
li .lb{overflow:hidden;text-overflow:ellipsis;min-width:0}
li .q{margin-left:auto;color:#B8C0E0;font:600 max(15px,.85rem) Lexend,sans-serif;padding-left:.3rem}
li.dn{color:#8E98C4}
li.dn .lb{text-decoration:line-through}
li.mr{color:#B8C0E0;font-size:max(15px,.85rem)}
.launch{color:#FFD23F;font:600 1.1rem Lexend,sans-serif;text-align:center;margin:auto 0}
.launch small{display:block;color:#B8C0E0;font:400 max(15px,.85rem) Atkinson,sans-serif;margin-top:.2rem}
.msg{color:#B8C0E0;padding:1rem;font-size:1rem}
/* night */
.night{display:none;position:fixed;left:0;top:0;width:100vw;height:100vh;background:#000000;text-align:center;padding-top:22vh}
.n-clock{font-size:10rem;color:#5A4A2A;line-height:1}
.n-date{font:500 2rem Lexend,sans-serif;color:#B5A383;margin-top:1rem}
body.is-night .wrap{display:none}
body.is-night .night{display:block}
/* v2 fit tweaks */
.day{line-height:1.15}.day .n{line-height:1.1}
.rem{font-size:max(15px,.95rem)}
li{height:1.3rem}
ul{margin-top:.1rem}
.bar{margin:.15rem 0 .2rem}
li.mr:empty{display:none}
/* progress label beside the track, never under the rocket */
.bar{background:none;justify-content:flex-start;gap:.5rem;overflow:visible;border-radius:0}
.bar .trk{position:relative;flex:1;min-width:0;height:1.5rem;background:#0B1433;border-radius:99px;overflow:hidden}
.bar .lbl{flex:none;white-space:nowrap;color:#FFD23F}
.bar img{top:.1rem}
.bar img{width:2rem;height:1.3rem;object-fit:contain}

/* ---- touch: full-screen views ---- */
.fv{display:none;position:fixed;left:0;top:0;z-index:20;background:#0B1433;width:100vw;height:100vh;padding:0.88rem 1.1rem;flex-direction:column;gap:0.77rem}
.fv-bar{display:flex;align-items:center;gap:1.1rem;flex:none;height:3.96rem}
.home{width:3.63rem;height:3.63rem;border-radius:1.1rem;background:#FF7A1A;color:#0B1433;display:flex;flex-direction:column;align-items:center;justify-content:center;font:700 1.1rem Lexend,sans-serif;flex:none}
.home svg{width:1.54rem;height:1.54rem}
.fv-bar h1{font:600 1.76rem Lexend,sans-serif;flex:1}
.idle{color:#B8C0E0;font-size:1.1rem;white-space:nowrap}
.idle b{color:#FFD23F}
.fv-body{flex:1;min-height:0;display:flex;gap:1.1rem}
.pan{background:#16204A;border-radius:0.99rem;padding:0.77rem 0.99rem;min-height:0;overflow:hidden}
/* calendar */
.grid{flex:1.45;display:flex;flex-direction:column}
.dow{display:flex;color:#B8C0E0;font:600 1.1rem Lexend,sans-serif;margin-bottom:0.33rem}
.dow div{flex:1;text-align:center}
.wk{flex:1;display:flex;gap:0.275rem;margin-bottom:0.275rem}
.cell{flex:1;background:#0B1433;border-radius:0.55rem;padding:0.22rem 0.33rem;overflow:hidden;border:0.132rem solid #0B1433}
.cell .n{font:600 1.1rem Lexend,sans-serif}
.cell.c-today{border-color:#FF7A1A}
.cell.sel{border-color:#FFD23F;background:#1F2B5C}
.cell.past .n{color:#6F7AA8}
.dots{display:flex;flex-wrap:wrap;gap:0.165rem;margin-top:0.165rem}
.dot{width:0.55rem;height:0.55rem;border-radius:50%;background:#3FD8D0}
.dot.off{background:#FFD23F}.dot.party{background:#B48CFF}.dot.appt{background:#FF7A1A}
.mini{font-size:0.748rem;color:#B8C0E0;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:none}
.agenda{flex:1;display:flex;flex-direction:column;gap:0.55rem}
.agenda h2{font:600 1.32rem Lexend,sans-serif;color:#FFD23F}
.ag{background:#0B1433;border-radius:0.77rem;padding:0.55rem 0.77rem}
.ag .t{font-size:1.21rem;font-weight:700}
.ag .m{color:#B8C0E0;font-size:1.1rem;margin-top:0.11rem}
.ag .m b{color:#3FD8D0;font-family:Lexend,sans-serif;font-weight:600}
.chip{display:inline-block;border-radius:99px;padding:0.055rem 0.66rem;font:700 1.1rem Atkinson,sans-serif;margin:0.275rem 0.33rem 0 0;background:#FFD23F;color:#0B1433}
.chip.care{background:#3FD8D0}.chip.rsvp{background:#FF7A1A}.chip.soft{background:#2C3870;color:#F5F7FF}
.legend{display:flex;gap:1.1rem;color:#B8C0E0;font-size:1.1rem;margin-top:0.22rem}
.legend span{display:flex;align-items:center;gap:0.33rem}
/* weather */
.hourly{flex:1.6;display:flex;flex-direction:column}
.hourly svg.hc{flex:1;width:100%;min-height:0}
.daily{flex:1;display:flex;flex-direction:column;gap:0.385rem}
.dc{display:flex;align-items:center;gap:0.66rem;background:#0B1433;border-radius:0.66rem;padding:0.275rem 0.66rem;font-size:1.16rem;flex:1}
.dc svg{width:1.98rem;height:1.98rem;flex:none}
.dc .d{width:3.74rem;font-weight:700}
.dc .hi{font:600 1.26rem Lexend,sans-serif;width:2.86rem}
.dc .lo{color:#B8C0E0;width:2.86rem}
.dc .c{color:#B8C0E0;flex:1;font-size:1.1rem}
.dc .r{font:600 1.1rem Lexend,sans-serif;color:#6F7AA8;width:3.52rem;text-align:right}
.dc .r.hi2{color:#3FD8D0}
.dc.dc-today{border:0.132rem solid #FF7A1A}
/* chores */
.h3{font:600 1.21rem Lexend,sans-serif;color:#B8C0E0}
/* confirm sheet */

.fv.on{display:flex}
body.is-night .fv{display:none}
.fv .cell{cursor:pointer}
.fv .dc svg{width:2rem;height:2rem}
/* tap hints on the main screen */
.cal,.wx,.card{position:relative;cursor:pointer}
.cal:after{content:"Tap for more \203A";position:absolute;right:.55rem;bottom:.35rem;font:600 max(15px,.7rem) Lexend,sans-serif;color:#B8C0E0;background:#0B1433;border:.08rem solid #2C3870;border-radius:99px;padding:.05rem .5rem;opacity:.85}
.wx{padding-right:1.7rem}
.wx:after{content:"\203A";position:absolute;right:.5rem;top:50%;margin-top:-.7rem;font:600 1.1rem Lexend,sans-serif;color:#B8C0E0}
.card .hd .c:after{content:" \203A";color:#B8C0E0;font-size:1.1rem}
/* ---- compact chore cards + shared to-do list (right column) ---- */
.kids{display:flex;flex-direction:column;gap:.7rem;flex:none}
.card{flex:none;padding:.55rem .8rem .5rem}
.card .slots{margin-top:.1rem}
.todo{flex:1;min-height:0;background:#16204A;border-radius:1rem;padding:.55rem .9rem .4rem;display:flex;flex-direction:column;overflow:hidden}
.todo .th{display:flex;align-items:baseline;gap:.6rem;flex:none;margin-bottom:.2rem}
.todo h2{font:600 1.5rem Lexend,sans-serif;flex:1}
.todo .tn{font:600 max(15px,.85rem) Lexend,sans-serif;color:#B8C0E0}
.todo ul{flex:1;min-height:0;overflow:hidden;margin:0}
.todo li{height:auto;white-space:normal;display:flex;align-items:center;gap:.6rem;padding:.36rem 0;border-bottom:.1rem solid #2C3870;font-size:1.15rem;line-height:1.2;transition:opacity .6s}
.todo li:last-child{border-bottom:0}
.todo li .bx{flex:none;width:1.6rem;height:1.6rem;border-radius:50%;border:.18rem solid #4A5684;position:relative}
.todo ul.ck li .bx{border-color:#3FD8D0}
.todo li .tt{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.todo li .du{flex:none;font:600 max(15px,.85rem) Lexend,sans-serif;color:#B8C0E0;white-space:nowrap}
.todo li .du.soon{color:#3FD8D0}
.todo li .du.od{color:#E8894A;background:#16204A;border:.08rem solid #5A4048;border-radius:99px;padding:0 .45rem;font-weight:600}
.todo li.od .bx{border-color:#B8703F}
.todo li.dn{opacity:.4}
.todo li.dn .bx{background:#3FD8D0;border-color:#3FD8D0}
.todo li.dn .bx:after{content:"";position:absolute;left:.42rem;top:.12rem;width:.4rem;height:.8rem;border:solid #0B1433;border-width:0 .2rem .2rem 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}
.todo li.dn .tt{text-decoration:line-through}
.todo li.tmore{color:#B8C0E0;font-size:max(15px,.85rem);border-bottom:0;padding:.3rem 0 0 2.2rem}
.todo li.tnone{color:#B8C0E0;font-size:1.3rem;justify-content:center;border-bottom:0;padding-top:1.5rem}
/* to-do fit: due label inline after the text; slightly tighter cards */
.todo li .du{display:inline;margin-left:.35rem;vertical-align:.05rem}
.todo li .du.od{display:inline-block;line-height:1.25}
.todo li .tt{font-size:1.1rem}
.card .hd img{width:2rem;height:2rem}
.card .hd h3,.card .hd .c{font-size:1.35rem}
.card .pills{margin:.2rem 0 .1rem}
.right{gap:.6rem}.kids{gap:.6rem}
.todo li{padding:.3rem 0}
.todo li .tt{font-size:1.05rem;line-height:1.18}
.todo li.tmore{padding-top:.2rem}
.todo .th{margin-bottom:.05rem}
.todo li.tmore:empty{display:none}
.todo li .du{margin:0 .3rem 0 0}
.todo ul li.od .bx{border-color:#B8703F}

/* ---- polish (Oct 18): night next line + burn-in shift, legible gaps, whole to-dos, 16px hints with 44px targets ---- */
.n-in{-webkit-transition:-webkit-transform 2s;transition:transform 2s}
.n-next{font:500 1.5rem Lexend,sans-serif;color:#857559;margin-top:1.4rem;padding:0 2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.n-next:empty{display:none}
.gap{color:#B8C0E0;font-size:max(15px,.8rem);font-weight:600;height:1.7rem}
.gap:before,.gap:after{border-top-color:#6B76A8}
.none{color:#B8C0E0}
.todo li .tt{display:block;-webkit-line-clamp:none;overflow:visible;text-overflow:clip}
.cal{padding-bottom:2.2rem}
.cal:after{font-size:16px;line-height:1;padding:.3rem .6rem;bottom:.3rem}
.cal:before{content:"";position:absolute;right:0;bottom:0;width:9rem;height:max(44px,2.2rem)}
.more{font-size:16px;min-height:max(44px,2.2rem);display:flex;align-items:center;padding-top:0;padding-bottom:0}
.more:empty{display:none}
.today .more{min-height:0}
.wx:after{font-size:16px;margin-top:-22px;height:44px;line-height:44px;width:1.4rem;text-align:center;right:.2rem}
.todo li.tmore{font-size:16px;min-height:max(44px,2.2rem);padding-top:0;padding-bottom:0}
