:root{
  color-scheme:dark;
  --night:#03040a;
  --ice:#5ce1ff; --gold:#f5c66b; --rose:#ff7ab6; --violet:#a98bff; --mint:#6ff2c4; --pearl:#fff3e6;
  --ink-1:#f6efe6; --ink-2:rgba(var(--k-246-239-230,246,239,230),.74); --ink-3:rgba(var(--k-246-239-230,246,239,230),.5);
  --hair:rgba(var(--k-246-239-230,246,239,230),.10); --hair-2:rgba(var(--k-246-239-230,246,239,230),.2);
  --display:"Newsreader","Didot","Bodoni 72","Bodoni MT","Palatino Linotype","Book Antiqua","Iowan Old Style",Palatino,Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --ease:cubic-bezier(.19,1,.22,1);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--night);color:var(--ink-1);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}
/* phones and tablets: a field under 16px makes iPhone zoom the page when it's tapped, so every field is at least 16px
   on a touch screen (desktop keeps its sizes). The page doesn't pinch-zoom either; Customize › Look & language › Text size
   is how words get bigger (public/js/textsize.js) */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (pointer:coarse){
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),textarea,select{font-size:16px!important}
  .fr-input{font-size:18px!important}
  /* a bigger Text size: fields grow a step too, but stay on one line beside their buttons */
  html[data-text-size="larger"] :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),textarea,select){font-size:17px!important}
  html[data-text-size="largest"] :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),textarea,select){font-size:18px!important}
  html[data-text-size="xlarge"] :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),textarea,select){font-size:20px!important}
  html[data-text-size] .fr-input{font-size:20px!important}
}
/* NOVA in Spanish or Arabic: held back until the words are in (a moment), then shown; Arabic in Arabic type */
html.i18n-wait body{visibility:hidden}
html[lang=ar]{--sans:"SF Arabic","Geeza Pro","Noto Sans Arabic","Segoe UI",Tahoma,-apple-system,sans-serif;--display:"Noto Naskh Arabic","Geeza Pro","SF Arabic","Times New Roman",serif}
html[lang=ar] body{letter-spacing:0}
/* Scheduled: what NOVA does at set times, and everything that repeats (public/js/scheduled.js) */
.sch-side{margin-top:22px}.sch-side-h{display:flex;align-items:center;gap:10px}.sch-side-h h4{margin:0}.sch-count{font-size:12px;color:var(--ink-3)}
.sch-add{margin-inline-start:auto;font-size:12.5px;color:var(--gold,#f5c66b);padding:6px 10px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}.sch-add:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}.sch-add:active{transform:scale(.97)}
.sch-mini{display:flex;flex-direction:column;margin-top:8px}
.sch-mrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--hair)}.sch-mrow:last-child{border-bottom:0}
.sch-mrow.off .sch-mt,.sch-row.off .sch-main{opacity:.5}
.sch-mt{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;text-align:start;gap:1px}.sch-mt b{font-weight:500;font-size:13.5px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.sch-mt small{font-size:11.5px;color:var(--ink-3)}
.sch-ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--gold,#f5c66b);background:rgba(var(--k-245-198-107,245,198,107),.08);border:1px solid rgba(var(--k-245-198-107,245,198,107),.18)}.sch-ic svg{width:16px;height:16px}
.sch-sugg{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:start;margin-top:10px;padding:10px 12px;border-radius:12px;border:1px dashed rgba(var(--k-196-182-255,196,182,255),.35);font-size:13px;color:var(--ink-2);transition:border-color .15s ease}.sch-sugg:hover{border-color:rgba(var(--k-196-182-255,196,182,255),.6)}.sch-sugg span{font-size:11px;color:var(--ink-3)}.sch-sugg b{font-weight:500;color:var(--ink-1)}.sch-sugg small{font-size:12px;color:var(--ink-3)}
.sch-all{margin-top:10px;font-size:13px}
/* the screen (Nov 7 2026): two panes on a computer (the list, and one task opened), list then a full page on a phone */
.panel.sch-panel{position:relative;width:min(1180px,100%);height:min(88vh,880px);max-height:none;padding:0;overflow:hidden;display:flex;flex-direction:column}
.sch-panel>.sch-x{position:absolute;top:18px;inset-inline-end:18px;z-index:4;background:rgb(var(--k-8-9-19,8,9,19))}
#schBody{flex:1;min-height:0;display:flex;flex-direction:column}#schBody>.ow-pad{margin:auto}
.sch2{flex:1;min-height:0;display:grid;grid-template-columns:minmax(340px,410px) minmax(0,1fr)}
.sch2-list{min-height:0;overflow:auto;overscroll-behavior:contain;padding:28px 16px 32px 22px;border-inline-end:1px solid var(--hair);scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.14) transparent}
.sch2-detail{min-height:0;overflow:auto;overscroll-behavior:contain;padding:26px 34px 36px;background:rgb(var(--k-11-12-22,11,12,22));scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.14) transparent}
.sch2-head{padding:0 6px}.sch2-head h2{margin:0}.sch2-lead{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-3);max-width:34ch}
.sch-filter{display:inline-flex;gap:2px;padding:3px;margin:16px 6px 14px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.045);border:1px solid var(--hair)}
.sch-filter button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:999px;font-size:14px;color:var(--ink-2);transition:background-color .15s ease,color .15s ease}
.sch-filter button:hover{color:var(--ink-1)}.sch-filter button[aria-pressed="true"]{background:rgba(var(--k-246-239-230,246,239,230),.11);color:var(--ink-1)}
.sch-filter button:focus-visible{outline:2px solid var(--ice);outline-offset:1px}.sch-n{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
/* the Schedule a task box */
.sch-ask{margin:0 0 6px}
.sch-ask-box{display:flex;align-items:flex-end;gap:6px;padding:6px 6px 6px 16px;border-radius:20px;background:rgb(var(--k-17-19-31,17,19,31));border:1px solid var(--hair-2);transition:border-color .15s ease,box-shadow .2s ease}
.sch-ask-box:focus-within{border-color:rgba(var(--k-245-198-107,245,198,107),.55);box-shadow:0 0 0 3px rgba(var(--k-245-198-107,245,198,107),.08)}
.sch-ask-box textarea{flex:1;min-width:0;min-height:44px;max-height:132px;padding:11px 0;background:transparent;border:0;outline:none;resize:none;color:var(--ink-1);font:inherit;font-size:16px;line-height:1.4}
.sch-ask-box textarea::placeholder{color:var(--ink-3)}.sch-ask-box textarea:disabled{opacity:.6}
.sch-mic,.sch-send{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sch-mic{color:var(--ink-2)}.sch-mic:hover{background:rgba(var(--k-246-239-230,246,239,230),.07)}.sch-mic[aria-pressed="true"]{color:var(--ice);background:rgba(var(--k-92-225-255,92,225,255),.12)}
.sch-send{background:var(--ink-1);color:var(--h-141018,#141018)}.sch-send:disabled{background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-3);cursor:default}
.sch-mic:active,.sch-send:not(:disabled):active,.sch-plus:active,.sch-iconbtn:active{transform:scale(.96)}
.sch-mic:focus-visible,.sch-send:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.sch-ask-out:empty{display:none}.sch-ask-out{margin-top:10px}.sch-ask-wait{justify-content:flex-start;padding:6px 8px;font-size:14px;color:var(--ink-2)}
.sch-ask-q{margin:0;padding:12px 14px;border-radius:14px;background:rgba(var(--k-92-225-255,92,225,255),.06);border:1px solid rgba(var(--k-92-225-255,92,225,255),.22);font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.sch-ok{padding:14px 14px 12px;border-radius:16px;background:rgb(var(--k-17-19-31,17,19,31));border:1px solid rgba(var(--k-245-198-107,245,198,107),.32);display:flex;flex-direction:column;gap:10px}
.sch-ok-row{display:flex;align-items:center;gap:12px}.sch-ok-note{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.sch-ok-acts{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.sch-ok-done{margin:0;font-size:14px;color:var(--mint)}
.btn.sch-act{background:transparent;color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.5)}.btn.sch-act:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}
#schBody .btn-sm{min-height:40px;padding:0 16px;font-size:14px}
/* groups and rows */
.sch-panel .sch-gh{margin:24px 6px 6px;font-family:var(--sans);font-size:14.5px;font-weight:500;letter-spacing:normal;text-transform:none;color:var(--ink-2)}
.sch-gl{margin:-2px 6px 8px;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.sch-rows{display:flex;flex-direction:column;gap:2px}
.sch-r{display:flex;align-items:center;gap:4px;border-radius:14px;transition:background-color .15s ease}
@media (hover:hover){.sch-r:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}}
.sch-r.sel{background:rgba(var(--k-246-239-230,246,239,230),.075)}
.sch-r.focus{background:linear-gradient(90deg,rgba(var(--k-245-198-107,245,198,107),.08),transparent 75%)}
.sch-r-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;min-height:58px;padding:9px 8px;border-radius:14px;text-align:start;color:inherit;font:inherit;cursor:pointer}
.sch-r-main:focus-visible,.sch-card-row:focus-visible{outline:2px solid var(--ice);outline-offset:-2px}
.sch-r-t{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.sch-r-t b{max-width:100%;font-weight:500;font-size:15px;line-height:1.3;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-st{display:block;font-size:13px;line-height:1.4;color:var(--ink-3)}.sch-st-in{display:inline}
.t-rose{color:var(--rose)}.t-gold{color:var(--gold)}.t-ice{color:var(--ice)}.t-mint{color:var(--mint)}
.sch-r.off .sch-r-main>.sch-ic,.sch-r.off .sch-r-t b{opacity:.62}
.sch-r>.ag-sw{margin-inline-end:10px}
.sch-r .sch-ic,.sch-card .sch-ic,.sch-chat-h .sch-ic{width:38px;height:38px;border-radius:12px}.sch-r .sch-ic svg{width:18px;height:18px}
.sch-ic.lg{width:46px;height:46px;border-radius:14px}.sch-ic.lg svg{width:21px;height:21px}
.sch-ic.v{color:var(--violet);background:rgba(var(--k-169-139-255,169,139,255),.08);border-color:rgba(var(--k-169-139-255,169,139,255),.22)}
.sch-r-act{flex:none;margin-inline-end:8px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(var(--k-255-122-182,255,122,182),.4);color:var(--rose);font-size:13.5px}
.sch-plus{flex:none;width:40px;height:40px;margin-inline-end:8px;border-radius:50%;display:grid;place-items:center;color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sch-plus:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}.sch-plus:disabled{opacity:.5}
.sch-g-ic{display:inline-grid;place-items:center;line-height:0}
.sch-need{display:block;margin-top:1px;font-size:12.5px;color:var(--ink-3)}.sch-covered{color:var(--violet)}
.sch-rec .sch-st{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sch-more{margin:6px 14px 0;font-size:13.5px}
.sch-none{margin:6px 6px 0;font-size:14px;line-height:1.5;color:var(--ink-3)}
.sch-empty{margin:4px 0 0;padding:16px;border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.03);border:1px solid var(--hair)}
.sch-empty-t{margin:0;font-size:16px;font-weight:500;color:var(--ink-1)}.sch-empty-l{margin:6px 0 12px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.sch-ex{display:flex;flex-direction:column;gap:8px}
.sch-ex-b{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;padding:10px 12px 10px 14px;border-radius:12px;border:1px solid var(--hair-2);text-align:start;font-size:14.5px;line-height:1.4;color:var(--ink-1);transition:border-color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sch-ex-b:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-245-198-107,245,198,107),.04)}.sch-ex-b:active{transform:scale(.99)}.sch-ex-b .sch-g-ic{color:var(--gold)}
/* one task, opened */
.sch-back{display:none}
.sch-d-head{display:flex;align-items:flex-start;flex-wrap:wrap;gap:12px;padding-inline-end:52px}
.sch-d-title{flex:1;min-width:0;display:flex;align-items:center;gap:14px}
.sch-d-tt{min-width:0}.sch-d-tt h3{margin:0 0 3px;font-family:var(--sans);font-size:22px;font-weight:500;line-height:1.25;color:var(--ink-1);overflow-wrap:anywhere}
.sch-d-acts{position:relative;display:flex;gap:8px}
.sch-iconbtn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hair-2);transition:background-color .15s ease,border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sch-iconbtn:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}.sch-iconbtn[aria-pressed="true"],.sch-iconbtn[aria-expanded="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.55);color:var(--gold)}
.sch-iconbtn:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.sch-menu{position:absolute;top:48px;inset-inline-end:0;z-index:5;min-width:200px;padding:6px;border-radius:14px;background:rgb(var(--k-21-23-36,21,23,36));border:1px solid var(--hair-2);box-shadow:0 18px 44px rgba(0,0,0,.55);display:flex;flex-direction:column;transform-origin:top right;animation:sch-pop .16s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .sch-menu{transform-origin:top left}
.sch-menu button{min-height:42px;padding:0 12px;border-radius:9px;text-align:start;font-size:14.5px;color:var(--ink-1)}.sch-menu button.t-rose{color:var(--rose)}
.sch-menu button:hover,.sch-menu button:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.08);outline:none}
@keyframes sch-pop{from{opacity:0;transform:scale(.96) translateY(-4px)}}
.sch-d-acts .calm-confirm{position:absolute;top:0;inset-inline-end:0;z-index:5;padding:8px 10px;border-radius:14px;background:rgb(var(--k-21-23-36,21,23,36));border:1px solid var(--hair-2);white-space:nowrap}
.sch-d-body{margin-top:20px;display:flex;flex-direction:column;gap:16px;max-width:780px}
.sch-d-what{display:flex;flex-direction:column;gap:6px}
.sch-d-do{margin:0;font-size:15.5px;line-height:1.55;color:var(--ink-2);overflow-wrap:anywhere}
.sch-call{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.035);border:1px solid var(--hair-2)}
.sch-call>p{flex:1 1 240px;margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.sch-call.gold{background:rgba(var(--k-245-198-107,245,198,107),.05);border-color:rgba(var(--k-245-198-107,245,198,107),.38)}
.sch-call.rose{background:rgba(var(--k-255-122-182,255,122,182),.05);border-color:rgba(var(--k-255-122-182,255,122,182),.34)}
.sch-res{padding:18px 22px 8px;border-radius:18px;background:rgb(var(--k-17-19-31,17,19,31));border:1px solid var(--hair)}
.sch-res>.ow-pad{padding:24px 0 30px}
.sch-res-h{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-bottom:10px;font-size:13.5px;color:var(--ink-3)}.sch-res-h .link{font-size:13.5px}
.sch-tag{padding:2px 9px;border-radius:999px;background:rgba(var(--k-92-225-255,92,225,255),.1);color:var(--ice);font-size:12.5px}
.sch-res-b{font-size:15.5px}.sch-res-b :is(th,td){overflow-wrap:normal}.sch-res-b>:last-child{margin-bottom:10px}
.sch-res-none{padding:4px 0 14px;display:flex;flex-direction:column;align-items:flex-start;gap:6px}.sch-res-none p{margin:0;font-size:15px;color:var(--ink-1)}.sch-res-none .btn{margin-top:8px}
.sch-d-go{display:flex;flex-wrap:wrap;gap:10px}
.sch-hist{list-style:none;margin:-6px 0 0;padding:0;border-top:1px solid var(--hair)}
.sch-hist button{width:100%;display:grid;grid-template-columns:minmax(150px,auto) minmax(0,1fr);align-items:baseline;gap:4px 14px;min-height:46px;padding:10px 8px;border-bottom:1px solid var(--hair);text-align:start;font-size:14px;color:var(--ink-2);transition:background-color .15s ease}
.sch-hist button:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}.sch-hist button[aria-current="true"]{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.sch-hist-w{font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}.sch-hist-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sch-note{margin:0;font-size:13px;line-height:1.5;color:var(--ink-3)}
.sch-intro{max-width:440px;margin:14vh auto 0;padding:0 8px}
.sch-intro-t{margin:0 0 16px;font-family:var(--display);font-size:26px;line-height:1.2;color:var(--ink-1)}
.sch-intro-l{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px;font-size:14.5px;line-height:1.55;color:var(--ink-2)}.sch-intro-l b{font-weight:500;color:var(--ink-1)}
.sch-sw-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:0 16px;border-radius:14px;border:1px solid var(--hair);font-size:15px}
.sch-nudge{padding:14px 16px;border-radius:16px;background:rgba(var(--k-169-139-255,169,139,255),.05);border:1px solid rgba(var(--k-169-139-255,169,139,255),.34);display:flex;flex-direction:column;gap:6px}
.sch-nudge-t{margin:0;font-size:15px;font-weight:500;color:var(--ink-1)}.sch-nudge-l{margin:2px 0 6px;font-size:14px;color:var(--ink-2)}.sch-nudge .sch-st{margin:0}
/* edit */
.sch-form{display:flex;flex-direction:column;gap:14px;max-width:640px}
.sch-lbl{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:13.5px;color:var(--ink-2)}
#schBody .sch-form :is(input[type=text],input[type=time],input[type=date],input[type=number],select,textarea){width:100%;min-height:44px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);color:var(--ink-1);font:inherit;font-size:16px}
#schBody .sch-form textarea{min-height:104px;line-height:1.5;resize:vertical}
#schBody .sch-form :is(input,select,textarea):focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.sch-when-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.sch-when-row>.sch-lbl{flex:1 1 140px}.sch-mday-l{max-width:110px}
.sch-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sch-days{display:flex;gap:6px;flex-wrap:wrap}.sch-days button{min-width:40px;min-height:40px}
.sch-web{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-2)}
.sch-go{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}.sch-go .link{font-size:14px}
.sch-err{margin:0;font-size:14px;color:var(--rose)}.sch-err:empty{display:none}
/* the same row under a chat answer, and at the top of a task's own chat */
.sch-card .cv-ok-k{margin:0 0 2px;font-size:13px;letter-spacing:normal;text-transform:none;color:var(--ink-3)}
.sch-card-row{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;padding:8px 0;text-align:start;color:inherit;font:inherit;border-radius:12px}
.sch-card-row.off .sch-r-t b{opacity:.62}
.sch-lcard .sch-card-row+.sch-card-row{border-top:1px solid var(--hair)}
.sch-card-do{margin:2px 0 0;font-size:14px;line-height:1.5;color:var(--ink-1);overflow-wrap:anywhere}.sch-card-do>span:first-child{color:var(--ink-3)}
.sch-card-own{margin:6px 0 0;font-size:13px;color:var(--ink-3)}.sch-card-st{display:block}
.sch-chat-h{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 16px;border-radius:16px;background:rgb(var(--k-17-19-31,17,19,31));border:1px solid var(--hair)}
.sch-chat-h .sch-r-t b{white-space:normal}
@media (max-width:760px){
  #scheduled.overlay{padding:0}
  .panel.sch-panel{width:100%;height:100%;border:0;border-radius:0;padding-top:env(safe-area-inset-top,0px)}
  .sch-panel>.sch-x{top:calc(12px + env(safe-area-inset-top,0px));inset-inline-end:12px;width:44px;height:44px}
  .sch2{grid-template-columns:minmax(0,1fr)}
  .sch2-list{padding:20px 12px calc(32px + env(safe-area-inset-bottom,0px));border:0}
  .sch2-head{padding-inline-end:52px}
  .sch2-detail{display:none;padding:10px 16px calc(32px + env(safe-area-inset-bottom,0px));background:transparent}
  .sch2.show-detail .sch2-list{display:none}
  .sch2.show-detail .sch2-detail{display:block;animation:sch-in .22s cubic-bezier(.23,1,.32,1)}
  html[dir=rtl] .sch2.show-detail .sch2-detail{animation-name:sch-in-rtl}
  .sch-back{display:inline-flex;align-items:center;gap:2px;min-height:44px;margin:0 0 10px -8px;padding:0 12px 0 4px;border-radius:999px;font-size:15.5px;color:var(--ink-2)}
  .sch-d-head{padding-inline-end:0}
  .sch-d-tt h3{font-size:20px}
  .sch-res{padding:14px 14px 4px}
  .sch-two{grid-template-columns:1fr}
  .sch-hist button{grid-template-columns:minmax(0,1fr)}
  .sch-intro{display:none}
  .sch-chat-h .sch-r-t{flex:1 1 0}.sch-chat-h>.btn{flex-basis:100%}
}
@keyframes sch-in{from{opacity:0;transform:translateX(18px)}}
@keyframes sch-in-rtl{from{opacity:0;transform:translateX(-18px)}}
@media (prefers-reduced-motion:reduce){.sch-menu,.sch2.show-detail .sch2-detail{animation:none}}
.sch-side .ag-sw[aria-checked="true"],#schBody .ag-sw[aria-checked="true"]{background:rgba(var(--k-245-198-107,245,198,107),.62)}
html[dir=rtl] .ag-sw i{left:auto;right:3px}html[dir=rtl] .ag-sw[aria-checked="true"] i{transform:translateX(-16px)}
/* right to left: the menu sheet opens from the side its button is on */
html[dir=rtl] #sheet{left:auto;right:0;border-right:0;border-left:1px solid var(--hair);transform:translateX(102%)}html[dir=rtl] #sheet.on{transform:none}html[dir=rtl] .agx-row.open .agx-chev{transform:rotate(-90deg)}
::selection{background:rgba(var(--k-245-198-107,245,198,107),.35);color:var(--ink-1)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
input{font:inherit;color:inherit}
:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}
/* a whole screen or panel that takes focus so the keyboard works inside it never gets a focus ring (or a reshaped edge) */
[tabindex="-1"]:focus,[tabindex="-1"]:focus-visible{outline:none}
#stage{position:fixed;inset:0;overflow:hidden;overflow:clip;background:var(--night);touch-action:none}
canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#fig{cursor:grab} #fig.dragging{cursor:grabbing}

.chrome{opacity:0;transition:opacity 1.2s var(--ease)}
.ready .chrome{opacity:1}

header.chrome{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:calc(22px + env(safe-area-inset-top,0px)) 26px 22px;z-index:5;pointer-events:none}
header>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:16px}
/* the panel has its own wordmark and buttons: the bar's step aside so none peek out past its edge */
.brand{transition:opacity .2s cubic-bezier(.23,1,.32,1)}
#stage:has(#sheet.on) header.chrome .brand{opacity:0;pointer-events:none}
.menu{width:38px;height:38px;border-radius:50%;border:1px solid var(--hair);display:grid;place-items:center;color:var(--ink-2);transition:border-color .2s,color .2s}
.menu:hover{border-color:var(--hair-2);color:var(--ink-1)}
.wordmark{display:block;height:20px;width:auto;aspect-ratio:250/60;overflow:visible}
.wm-home{display:block;padding:9px 2px;border-radius:8px;transition:opacity .2s,transform .16s ease-out}
.wm-home:hover{opacity:.85}
.wm-home:active{transform:scale(.97)}
.wm-home:focus-visible{outline:1px solid var(--hair-2);outline-offset:4px}
/* NOVA's panel button at the top of every full screen */
.nav-menu{flex:none;background:rgba(var(--k-3-4-10,3,4,10),.4)}
.ld-mark{flex:none;display:block;padding:9px 2px;color:var(--ink-1);transition:opacity .2s}
.ld-mark:hover{opacity:.85}
.ld-mark .wordmark{height:16px}
#life>.life-menu{position:absolute;top:calc(22px + env(safe-area-inset-top,0px));left:26px;z-index:6}
#life .life-top{left:80px}
.ov-titles{flex:1;min-width:0}
.ov-top>.nav-menu{margin-top:2px}
@media (max-width:760px){
  .ld-mark{display:none}
  #life>.life-menu{top:calc(16px + env(safe-area-inset-top,0px));left:16px}
  #life .life-top{left:66px}
}
.me{display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--ink-3)}
.me time{font-variant-numeric:tabular-nums}
.avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);padding:2px;background:var(--night)}
.avatar span{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:rgba(var(--k-245-198-107,245,198,107),.12);color:var(--gold);font-family:var(--display);font-size:15px}
.avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.me{position:relative}
button.avatar{cursor:pointer;transition:border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
button.avatar:hover,button.avatar[aria-expanded="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.85)}
button.avatar:active{transform:scale(.96)}
button.avatar:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:3px}
/* the account menu: drops from the photo it belongs to */
.acct{position:fixed;top:calc(68px + env(safe-area-inset-top,0px));right:26px;width:272px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 90px);overflow:auto;padding:8px;border-radius:16px;border:1px solid var(--hair-2);background:rgb(var(--k-10-12-24,10,12,24));box-shadow:0 18px 50px rgba(var(--k-0-0-0,0,0,0),.55);z-index:60;pointer-events:auto;transform-origin:top right;opacity:1;transform:scale(1);transition:opacity .15s cubic-bezier(.23,1,.32,1),transform .15s cubic-bezier(.23,1,.32,1)}
@starting-style{.acct{opacity:0;transform:scale(.96)}}
.acct[hidden]{display:none}
/* the menu sits outside the top bar (so opening it never lifts the bar through a panel); it hides with the bar */
#stage.in-life .acct,#stage.in-overview .acct{display:none}
.acct-me{display:flex;align-items:center;gap:11px;padding:8px 8px 12px;margin-bottom:4px;border-bottom:1px solid var(--hair)}
.acct-pic{flex:none;width:34px;height:34px;border-radius:50%;overflow:hidden;background:rgba(var(--k-245-198-107,245,198,107),.12);color:var(--gold);display:grid;place-items:center;font-family:var(--display);font-size:15px;line-height:1}
.acct-pic img{width:100%;height:100%;object-fit:cover}
.acct-me>div:not(.acct-pic){min-width:0;display:flex;flex-direction:column;gap:2px}
.acct-me b{font-weight:500;font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-me small{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct>button{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border-radius:10px;font-size:13.5px;color:var(--ink-1);text-align:left;transition:background .15s}
.acct>button:hover,.acct>button:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.06);outline:none}
.acct>button svg{color:var(--ink-3)}
.acct>button.acct-quiet{font-size:12.5px;color:var(--ink-3);padding-left:10px}
.acct>a.acct-link{display:block;padding:8px 10px;border-radius:10px;font-size:12.5px;color:var(--ink-3);text-decoration:none}
.acct>a.acct-link:hover,.acct>a.acct-link:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-2);outline:none}
.gate-lang{justify-content:center;margin-top:16px}.gate-lang button,.w-lang button{min-height:32px;padding:6px 14px;font-size:13px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}.gate-lang button:active,.w-lang button:active{transform:scale(.97)}
.w-lang{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 14px}.w-lang>span{font-size:13px;color:var(--ink-3)}
.gate-about{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--hair,rgba(255,255,255,.08));font-size:12.5px;line-height:1.5;color:var(--ink-3)}.gate-links{margin:8px 0 0;display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px}.gate-links a{color:var(--ink-2);text-underline-offset:3px}
.gate-legal{margin:14px 0 0;font-size:12px;color:var(--ink-3)}.gate-legal a{color:var(--ink-2);text-underline-offset:3px}
/* two-step (authenticator app) dialog */
/* phone: a way to the dashboard from the header, whatever is on screen (the glance line hides while NOVA is answering) */
.dash-entry{display:none}
@media (max-width:760px){
  .dash-entry{display:inline-flex}
  .dash-entry span{white-space:nowrap}
  /* a bigger Text size: the header keeps room by showing just the icon (its name stays as its label) */
  html[data-text-size] .dash-entry span{display:none}
  #stage.in-overview .dash-entry{border-color:rgba(var(--k-245-198-107,245,198,107),.6);color:var(--gold)}
  #stage #toast{top:74px}
}
/* the brain's lit core is the present: a quiet label on it, and a tap opens Right now */
.now-core{position:absolute;left:0;top:0;z-index:6;width:0;height:0;padding:0;border:0;background:none;color:rgba(var(--k-255-242-224,255,242,224),.9);transition:opacity .4s ease}
.now-core.off,#stage.in-life .now-core,#stage.in-overview .now-core,#stage.focusing .now-core,[data-state="approval"] .now-core{opacity:0;pointer-events:none}
.now-core i{position:absolute;left:-34px;top:-34px;width:68px;height:68px;border-radius:50%;cursor:pointer}
.now-core:focus-visible{outline:none}.now-core:focus-visible i{outline:1.5px solid rgba(var(--k-245-198-107,245,198,107),.6);outline-offset:2px}
.now-core:active i{transform:scale(.97)}
/* Settings: NOVA on your phone, and policies */
.phoneapps{display:flex;flex-direction:column}
.apps-item{padding:12px 0 14px;border-bottom:1px solid var(--hair)}
.apps-head{display:flex;align-items:center;gap:10px}
.apps-mark{border-radius:7px}
.apps-head b{font-weight:500;color:var(--ink-1);font-size:14px}
.apps-ver{font-size:12px;color:var(--gold)}
.apps-s{font-size:13px;color:var(--ink-2);margin:4px 0 0;line-height:1.5}
.apps-fine{font-size:12px;color:var(--ink-3);margin:10px 0 0;line-height:1.5}
.apps-row{display:flex;gap:10px;margin-top:10px}
.apps-row .btn{text-decoration:none}
.apps-row .apps-hot{background:var(--gold);color:var(--h-1a1206,#1a1206);border-color:transparent}
.apps-scan{display:flex;align-items:center;gap:14px;margin-top:12px}
.apps-scan .apps-s{margin:0;max-width:220px}
.apps-qr{flex:none;width:112px;padding:6px;border-radius:12px;background:var(--h-fff,#fff)}.apps-qr svg{display:block;width:100%;height:auto}
.apps-steps{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--ink-2);line-height:1.6}
.apps-steps b{color:var(--ink-1);font-weight:500}
/* Customize › More settings › This device: one folded group per device, in the same list look as Settings itself */
.dev-list{border:1px solid var(--hair);border-radius:14px;overflow:hidden;background:rgba(var(--k-255-255-255,255,255,255),.02)}
.dev-group{border-bottom:1px solid var(--hair)}
.dev-group:last-child{border-bottom:0}
.dev-sum{display:flex;align-items:center;gap:14px;padding:13px 14px;cursor:pointer;list-style:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color .18s ease}
.dev-sum::-webkit-details-marker{display:none}
.dev-sum::marker{content:""}
.dev-sum:hover{background:rgba(var(--k-255-255-255,255,255,255),.035)}
.dev-sum:active{background:rgba(var(--k-255-255-255,255,255,255),.06)}
.dev-sum:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:-2px}
.dev-sum .set-main b{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dev-here{font-size:11px;font-weight:500;line-height:18px;color:var(--gold);padding:0 8px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.dev-sep{color:var(--ink-3);opacity:.7}
.dev-chev{flex:none;width:8px;height:8px;margin:0 6px 4px 2px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg);transition:transform .22s cubic-bezier(.23,1,.32,1)}
.dev-group[open]:not(.closing)>.dev-sum .dev-chev{transform:translateY(4px) rotate(-135deg)}
.dev-group[open]:not(.closing)>.dev-sum{background:rgba(var(--k-255-255-255,255,255,255),.02)}
.dev-body{padding:0 16px 6px;padding-inline-start:58px}
.dev-body>.apps-item:first-child{padding-top:4px}
.dev-body>.apps-item:last-child{border-bottom:0}
.dev-body>.phone{margin:6px 0 4px;padding-bottom:10px;border-bottom:1px solid var(--hair)}
@media (max-width:520px){.dev-body{padding-inline-start:16px}}
/* the iPhone texts setup inside its group: the same quiet chevron as the groups, not the browser's triangle */
.apps-sc>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;-webkit-tap-highlight-color:transparent}
.apps-sc>summary::-webkit-details-marker{display:none}
.apps-sc>summary::marker{content:""}
.apps-sc>summary::after{content:"";flex:none;width:7px;height:7px;margin:0 6px 3px 0;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.apps-sc[open]>summary::after{transform:translateY(3px) rotate(-135deg)}
.apps-sc>summary:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:2px;border-radius:6px}
@media (prefers-reduced-motion:reduce){.dev-chev{transition:none}}
.policies a.row{text-decoration:none;color:inherit}
.pol-go{color:var(--ink-3);font-size:13px;margin-top:2px}
.policies .btn-sm{text-decoration:none;flex:none;align-self:center}
/* quick capture, in the Memory tab: what came in lately and where it went */
.capsec{margin-top:6px}
.cap-list{display:flex;flex-direction:column}
.cap{--wc:246,239,230;display:grid;grid-template-columns:10px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--hair)}
.cap-dot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:rgb(var(--wc))}
.cap.undone .cap-dot,.cap.failed .cap-dot{background:transparent;border:1px solid var(--ink-3)}
.cap-main{min-width:0}
.cap-where{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:rgb(var(--wc))}
.cap.undone .cap-where{color:var(--ink-3)}
.cap-t{font-size:14px;color:var(--ink-1);margin-top:2px;overflow-wrap:anywhere}
.cap-mem{font-size:13px;color:var(--ink-2);margin:6px 0 0}
.cap-task{font-size:12.5px;color:var(--ink-2);margin-top:4px}
.cap-work{font-size:12.5px;color:var(--ink-3);margin-top:3px}
.cap-meta{font-size:12px;color:var(--ink-3);margin-top:3px}
.cap-meet{display:flex;flex-wrap:wrap;gap:2px 0}.cap-meet>span+span::before{content:'·';margin:0 7px;color:var(--ink-3)}.cap-meet-todo{color:var(--gold)}
.cap-src{display:inline-block;font-size:12.5px;color:var(--ink-2);margin-top:4px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}.cap-src:hover{color:var(--ink-1)}
.cap-err{font-size:12px;color:var(--h-f3a38f,#f3a38f);margin-top:4px}
.cap-acts{display:flex;gap:6px;margin-top:8px}
.cap-act{appearance:none;border:1px solid var(--hair-2);background:none;color:var(--ink-1);border-radius:999px;font-family:inherit;font-weight:500;font-size:12px;line-height:1;padding:7px 12px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.cap-act:active,.cap-chip:active{transform:scale(.97)}
.cap-move{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.cap-chip{appearance:none;border:1px solid rgba(var(--wc),.35);background:rgba(var(--wc),.06);color:var(--ink-1);border-radius:999px;font-family:inherit;font-weight:500;font-size:12px;line-height:1;padding:7px 10px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background .2s ease}
.cap-chip:hover{background:rgba(var(--wc),.14)}
.cap-empty{font-size:13px;color:var(--ink-3);margin:4px 0 0;line-height:1.5}
.cap-how{margin-top:10px}
.cap-how summary{cursor:pointer;font-size:13px;color:var(--gold);padding:6px 0;list-style:none}
.cap-how summary::-webkit-details-marker{display:none}
.cap-how summary::after{content:" ›";display:inline-block;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.cap-how[open] summary::after{transform:rotate(90deg)}
.cap-way{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:13px;color:var(--ink-2);line-height:1.5}
.cap-way b{font-weight:500;color:var(--ink-1);font-size:13px}
.cap-way code{font-size:12.5px;color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06);padding:1px 6px;border-radius:6px}
.cap-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cap-file{font-size:12px;color:var(--ink-3);padding:3px 9px;border-radius:999px;border:1px solid var(--hair)}.cap-file b{font-weight:500;color:var(--ink-2)}.cap-file.off{opacity:.65}
.cap-senders{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.cap-sub{font-size:12.5px;color:var(--ink-3)}
.cap-sender-list{display:flex;flex-wrap:wrap;gap:6px}
.cap-sender{display:inline-flex;align-items:center;gap:6px;padding:4px 4px 4px 11px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-1)}
.cap-sender button{width:22px;height:22px;border-radius:50%;color:var(--ink-3);font-size:14px;line-height:1}.cap-sender button:hover{color:var(--ink-1)}
.cap-sender-f{display:flex;gap:8px}.cap-sender-f input{flex:1;min-width:0;padding:8px 12px;border-radius:10px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font:inherit;font-size:13px}
.cap-way-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:4px}
.cap-confirm{display:flex;flex-direction:column;gap:6px;margin:4px 0 12px;padding:12px 14px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-245-198-107,245,198,107),.08);font-size:13px;line-height:1.5;color:var(--ink-2)}
.cap-confirm b{font-weight:500;color:var(--ink-1)}
.cap-confirm code{font-size:12.5px;color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06);padding:1px 6px;border-radius:6px;overflow-wrap:anywhere}
.cap-confirm .cap-code{font-size:18px;letter-spacing:.12em;padding:4px 10px;font-variant-numeric:tabular-nums}
/* "Your NOVA email address": the small reminder card in Career, Business, Finance, Connected services and the end of setup (public/js/mailcard.js) */
.mailcard{position:relative;margin:16px 0 0;padding:16px 18px 8px;border-radius:18px;background:var(--sf-1,#181a22);border:1px solid var(--hair);display:flex;flex-direction:column;gap:10px;color:var(--ink-1);max-width:680px;text-align:start;animation:mc2In .24s cubic-bezier(.23,1,.32,1) both}
.world-mail>.mailcard{margin:18px auto 4px;width:calc(100% - 4px)}
/* on a wide world page it spans the dashboard: what to send and why it's safe on the left, the address on the right */
@media (min-width:900px){.world-mail>.mailcard{max-width:none;width:auto;margin:16px 0 14px;padding:18px 22px 10px;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,420px);grid-template-areas:"head head" "line row" "safe how";column-gap:32px;row-gap:8px;align-items:start}
.world-mail>.mailcard .mc2-head{grid-area:head}.world-mail>.mailcard .mc2-line{grid-area:line}.world-mail>.mailcard .mc2-row{grid-area:row;margin-top:0}
.world-mail>.mailcard .mc2-safe{grid-area:safe}.world-mail>.mailcard .mc2-links{grid-area:how;margin-top:-4px}}
.mailcard .mc2-ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.mc2-head{display:flex;align-items:center;gap:10px;min-height:28px}
.mc2-mail{width:20px!important;height:20px!important;color:var(--ice)}
.mailcard .mc2-head h4.mc2-t{margin:0;padding:0;flex:1;min-width:0;font-family:inherit;font-size:16px;font-weight:600;line-height:1.3;color:var(--ink-1);letter-spacing:0;text-transform:none;opacity:1}
.mc2-x{flex:none;width:44px;height:44px;margin-block:-10px;margin-inline-end:-12px;border-radius:999px;display:grid;place-items:center;background:none;border:0;padding:0;color:var(--ink-3);cursor:pointer;transition:color .15s,background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
@media (hover:hover){.mc2-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.07)}}.mc2-x:active{transform:scale(.94)}
.mc2-line{margin:0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.mc2-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}
.mc2-addr{flex:1 1 230px;min-width:0;min-height:44px;display:flex;align-items:center;box-sizing:border-box;padding:10px 14px;border-radius:12px;background:rgba(var(--k-3-4-10,3,4,10),.55);border:1px solid var(--hair);color:var(--ink-1);font:15px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:break-word;user-select:all;-webkit-user-select:all;direction:ltr;unicode-bidi:isolate}
.mc2-copy{flex:none;min-height:44px;min-width:96px;padding:0 20px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.55);background:transparent;color:var(--gold);font:inherit;font-size:15px;font-weight:500;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
@media (hover:hover){.mc2-copy:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}}.mc2-copy:active{transform:scale(.97)}
.mc2-copy.done{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.5)}
.mc2-safe{margin:2px 0 0;display:flex;gap:9px;align-items:flex-start;font-size:14px;line-height:1.45;color:var(--ink-2)}
.mailcard .mc2-lock{width:16px;height:16px;margin-top:2px;color:var(--mint)}
.mc2-links{display:flex;flex-wrap:wrap;align-items:center;gap:0 18px}
.mc2-how{min-height:44px;display:inline-flex;align-items:center;gap:5px;color:var(--ice);font-size:15px;text-decoration:none;border-radius:8px}
.mailcard .mc2-out-ic{width:14px;height:14px;opacity:.85}
html[dir="rtl"] .mailcard .mc2-out-ic{transform:scaleX(-1)}
.mc2-add{min-height:44px;padding:0;background:none;border:0;color:var(--gold);font:inherit;font-size:15px;cursor:pointer;border-radius:8px;transition:transform .16s cubic-bezier(.23,1,.32,1)}.mc2-add:active{transform:scale(.97)}.mc2-add[hidden]{display:none}
@media (hover:hover){.mc2-how:hover,.mc2-add:hover{text-decoration:underline;text-underline-offset:3px}}
.mc2-said{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mailcard.mc2-out{opacity:0;transform:translateY(4px) scale(.98);transition:opacity .18s ease-out,transform .18s cubic-bezier(.23,1,.32,1);pointer-events:none}
@keyframes mc2In{from{opacity:0;transform:translateY(6px)}}
.cl-panel>.mailcard{margin:14px 0 4px;max-width:none}
.fr-win .mailcard{margin-top:8px;background:rgba(var(--k-246-239-230,246,239,230),.03);border-color:var(--fr-line,var(--hair))}
@media (max-width:600px){.mailcard{padding:14px 14px 6px;border-radius:16px}.mc2-row{flex-wrap:nowrap;gap:8px}.mc2-addr{flex:1 1 0;font-size:14px;padding:10px 12px;letter-spacing:-.01em}.mc2-copy{flex:none;min-width:76px;padding:0 14px}}
@media (prefers-reduced-motion:reduce){.mailcard{animation:none}}
.ft-ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
html[dir="rtl"] .ft-out{transform:scaleX(-1)}
.ft-card{margin-top:10px;max-width:560px;padding:14px 16px 10px;border-radius:14px;background:var(--sf-1,#181a22);border:1px solid var(--hair);display:grid;gap:4px;text-align:start;animation:mc2In .22s cubic-bezier(.23,1,.32,1) both}
.ft-card p{margin:0}
.turn-a+.ft-card,#reply+.ft-card{margin-top:0}
.ft-head{display:flex;align-items:center;gap:9px;min-height:24px}
.ft-mark{color:var(--ice)}
.ft-name{font-size:15px;font-weight:600;color:var(--ink-1);line-height:1.3}
.ft-free{font-size:12.5px;font-weight:600;color:var(--mint);padding:2px 9px;border-radius:999px;background:rgba(var(--k-111-242-196,111,242,196),.1)}
.ft-what{color:var(--ink-2);font-size:14px;line-height:1.5;text-wrap:pretty}
.ft-from{color:var(--ink-3);font-size:13px;line-height:1.45}
.ft-acts{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:6px}
.ft-open{min-height:44px;display:inline-flex;align-items:center;gap:6px;padding:0 18px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.55);color:var(--gold);font-size:14.5px;font-weight:500;text-decoration:none;transition:background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.ft-open .ft-out{width:14px;height:14px}
@media (hover:hover){.ft-open:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}}.ft-open:active{transform:scale(.97)}
.ft-lang{color:var(--ink-3);font-size:13px}
.ft-career{position:relative;margin:16px 0 0;padding:16px 18px 12px;border-radius:18px;background:var(--sf-1,#181a22);border:1px solid var(--hair);display:flex;flex-direction:column;gap:8px;color:var(--ink-1);max-width:680px;text-align:start;animation:mc2In .24s cubic-bezier(.23,1,.32,1) both}
.world-mail>.ft-career{margin:16px 0;width:auto;max-width:none}
.ft-chead{display:flex;align-items:center;gap:10px;min-height:28px}
.ft-career .ft-chead h4.ft-ct{margin:0;padding:0;flex:1;min-width:0;font-family:inherit;font-size:16px;font-weight:600;line-height:1.3;color:var(--ink-1);letter-spacing:0;text-transform:none;opacity:1}
.ft-x{flex:none;width:44px;height:44px;margin-block:-10px;margin-inline-end:-12px;border-radius:999px;display:grid;place-items:center;background:none;border:0;padding:0;color:var(--ink-3);cursor:pointer;transition:color .15s,background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
@media (hover:hover){.ft-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.07)}}.ft-x:active{transform:scale(.94)}
.ft-cline{margin:0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.ft-list{list-style:none;margin:2px 0 0;padding:0;display:grid;gap:8px}
.ft-item{display:flex;flex-direction:column;gap:2px}
.ft-row{min-height:56px;display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:12px;background:rgba(var(--k-3-4-10,3,4,10),.3);border:1px solid var(--hair);color:var(--ink-1);text-decoration:none;transition:border-color .15s,background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
@media (hover:hover){.ft-row:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.45)}}.ft-row:active{transform:scale(.985)}
.ft-row:focus-visible,.ft-open:focus-visible,.ft-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.ft-words{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.ft-rname{font-size:15px;font-weight:600;line-height:1.3}
.ft-rshort{font-size:14px;line-height:1.4;color:var(--ink-2);text-wrap:balance}
.ft-row .ft-out{color:var(--gold);width:16px;height:16px}

.ft-career .ft-from{margin:0;text-wrap:balance}
@media (min-width:900px){.world-mail>.ft-career{padding:18px 22px 12px}.ft-career .ft-list{grid-template-columns:1fr 1fr;gap:10px}}
.ft-career.ft-gone{opacity:0;transform:translateY(4px) scale(.98);transition:opacity .18s ease-out,transform .18s cubic-bezier(.23,1,.32,1);pointer-events:none}
@media (prefers-reduced-motion:reduce){.ft-card,.ft-career{animation:none}}
.cap-bm{display:inline-flex;align-items:center;gap:6px;border:1px dashed rgba(var(--k-245-198-107,245,198,107),.6);color:var(--gold);border-radius:999px;padding:8px 14px;font-size:13px;text-decoration:none;cursor:grab}
.cap-bm:active{cursor:grabbing}
.mfa-dlg{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:16px;background:rgba(var(--k-3-4-10,3,4,10),.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .18s cubic-bezier(.23,1,.32,1)}
.mfa-dlg.on{opacity:1}
.mfa-card{position:relative;width:min(400px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:26px 24px 18px;border-radius:22px;background:var(--h-0d0f16,#0d0f16);border:1px solid var(--hair-2);box-shadow:0 30px 80px rgba(var(--k-0-0-0,0,0,0),.55);transform:translateY(8px) scale(.98);transition:transform .22s cubic-bezier(.23,1,.32,1)}
.mfa-dlg.on .mfa-card{transform:none}
.mfa-card h2{margin:10px 0 6px;font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.mfa-shield{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1);border:1px solid rgba(var(--k-245-198-107,245,198,107),.28)}
.mfa-x{position:absolute;top:8px;inset-inline-end:8px;width:44px;height:44px;border-radius:50%;font-size:22px;line-height:1;color:var(--ink-3)}
.mfa-x:hover,.mfa-x:focus-visible{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06);outline:none}
.mfa-why{margin:0 0 14px;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.mfa-steps{margin:0 0 12px;padding-left:18px;font-size:13.5px;line-height:1.55;color:var(--ink-2)}.mfa-steps b{color:var(--ink-1);font-weight:600}
.mfa-qr{width:188px;margin:4px auto 10px;padding:8px;border-radius:14px;background:var(--h-fff,#fff)}.mfa-qr svg{display:block;width:100%;height:auto}
.mfa-key{margin:0 0 12px;font-size:12.5px;color:var(--ink-3)}.mfa-key summary{cursor:pointer}.mfa-key p{margin:8px 0 0}.mfa-key code{font-size:13px;color:var(--ink-1);letter-spacing:.06em;word-break:break-all}.mfa-key a{color:var(--ink-1)}
.mfa-form{display:grid;gap:10px}
.mfa-code{width:100%;box-sizing:border-box;padding:14px 12px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:600 26px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.32em;text-align:center}
.mfa-code-b{font-size:20px;letter-spacing:.12em}
.mfa-code:focus{outline:2px solid var(--gold);outline-offset:2px}
.mfa-phone{display:flex;gap:8px;min-width:0}.mfa-cc,.mfa-tel{box-sizing:border-box;min-height:50px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font-family:inherit;font-size:16px;font-weight:500;line-height:1.2}
.mfa-cc{flex:0 0 auto;max-width:44%;padding:0 30px 0 12px;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-2) 50%),linear-gradient(-45deg,transparent 50%,var(--ink-2) 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat;text-overflow:ellipsis}
.mfa-cc option{background:#0b0d14;color:var(--ink-1)}
.mfa-ccw{position:relative;flex:0 0 auto;display:flex}.mfa-ccw .mfa-cc{position:absolute;inset:0;width:100%;max-width:none;opacity:0;cursor:pointer}
.mfa-ccv{display:inline-flex;align-items:center;min-height:50px;box-sizing:border-box;padding:0 30px 0 14px;border-radius:14px;border:1px solid var(--hair-2);background-color:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font-size:16px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.mfa-ccv{background-image:linear-gradient(45deg,transparent 50%,var(--ink-2) 50%),linear-gradient(-45deg,transparent 50%,var(--ink-2) 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.mfa-ccw:focus-within .mfa-ccv{outline:2px solid var(--gold);outline-offset:2px}
.mfa-rates{margin:0}
.mfa-tel{flex:1 1 auto;min-width:0;padding:0 14px;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.mfa-cc:focus,.mfa-tel:focus{outline:2px solid var(--gold);outline-offset:2px}
.mfa-num{font-weight:600;color:var(--ink-1);font-variant-numeric:tabular-nums;unicode-bidi:isolate;white-space:nowrap}
.mfa-resend:disabled{color:var(--ink-2);text-decoration:none;cursor:default}.mfa-wait{font-variant-numeric:tabular-nums}
.mfa-form .btn{justify-self:stretch;padding:12px 16px;font-size:14px}.mfa-form .btn:active{transform:scale(.98)}
.mfa-err{margin:0;min-height:18px;font-size:12.5px;color:var(--h-ffb4a8,#ffb4a8)}
.mfa-alt{display:block;margin:6px auto 0}
.mfa-ok{margin:0 0 6px;font-size:15px;color:var(--mint)}
.mfa-backup{list-style:none;margin:0 0 12px;padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;border-radius:12px;background:rgba(var(--k-246-239-230,246,239,230),.04);border:1px solid var(--hair);font:14px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink-1)}
.mfa-row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.mfa-card>.mfa-body>.btn{width:100%;padding:12px 16px;font-size:14px}
.mfa-foot{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--hair);font-size:12.5px;line-height:1.5;color:var(--ink-2)}.mfa-foot a{color:var(--ink-2)}
.mfa-sec .row{margin-bottom:8px}
@media (prefers-reduced-motion:reduce){.mfa-dlg,.mfa-card{transition:none}}
.bank-picks{display:grid;gap:10px;margin:2px 0 10px}
.bank-pick{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;padding:14px 16px;border-radius:16px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.035);text-align:left;color:var(--ink-1);transition:border-color .2s ease,background-color .2s ease,transform .16s var(--ease)}
.bank-pick b{font-size:15px;font-weight:600}.bank-pick small{font-size:12.5px;color:var(--ink-3)}
.bank-pick:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.bank-pick:active{transform:scale(.98)}.bank-pick[disabled]{opacity:.55}
.bank-pick:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.bank-have{margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.bank-wait{display:flex;gap:10px;align-items:flex-start;margin:0 0 14px;font-size:14px;line-height:1.55;color:var(--ink-2)}
.bank-dot{flex:none;width:9px;height:9px;margin-top:6px;border-radius:50%;background:var(--gold);animation:bankPulse 1.6s ease-in-out infinite}
@keyframes bankPulse{0%,100%{opacity:.35}50%{opacity:1}}
.bank-again{display:block;margin:0 0 10px}
.mfa-body>a.btn{display:block;text-align:center;box-sizing:border-box;text-decoration:none}
/* passkeys, the new-device sign-in step and Settings › Security (public/js/mfa.js) */
.mfa-pk{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px 16px;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1)}.mfa-pk:active{transform:scale(.98)}.mfa-pk:disabled{opacity:.7}
.mfa-pk+.mfa-err{min-height:0;margin-top:8px}.mfa-pk+.mfa-err:empty{margin:0}
.mfa-alts{display:flex;flex-wrap:wrap;justify-content:center;gap:0 18px;margin-top:0}.mfa-alts .mfa-alt{margin:0}
.mfa-alt,.mfa-out{min-height:44px;font-size:13.5px;color:var(--ink-1);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-245-198-107,245,198,107),.55)}.mfa-alt:hover,.mfa-out:hover{color:var(--gold)}.mfa-out{color:var(--ink-2)}
.mfa-alt-t{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:0 4px;min-height:44px;font-size:13px;color:var(--ink-2)}.mfa-alt-t .mfa-alt{min-height:0;margin:0}
a.mfa-alt{display:inline-flex;align-items:center}
.mfa-hint{margin:8px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-2)}.mfa-hint-top{margin:0 0 10px;font-size:13.5px;color:var(--ink-1)}
.mfa-pk+.mfa-hint{text-align:center}
.mfa-remember-box{margin:6px 0 4px}.mfa-remember-box .mfa-hint{margin:-6px 0 0 28px}[dir=rtl] .mfa-remember-box .mfa-hint{margin:-6px 28px 0 0}
.mfa-warn{margin:2px 0 6px;font-size:13px;font-weight:500;color:var(--gold)}
.mfa-nudge{margin:4px 0 6px;padding:11px 14px;border-radius:12px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.32);background:rgba(var(--k-245-198-107,245,198,107),.07);font-size:13px;line-height:1.5;color:var(--ink-1)}
.mfa-cancel{display:block;margin:6px auto 0}
.mfa-remember{display:flex;align-items:center;gap:10px;min-height:44px;font-size:13.5px;color:var(--ink-2);cursor:pointer;-webkit-tap-highlight-color:transparent}
.mfa-remember input{width:18px;height:18px;margin:0;accent-color:var(--gold);flex:none}
.mfa-body>.mfa-remember{margin:6px 0 0}
.mfa-out{display:block;margin:10px auto 0}
.mfa-gate{padding-top:30px}
#gate.gate-step .gate-in{visibility:hidden}
.mfa-sec{display:grid;gap:4px}
.mfa-group{padding:14px 0 10px;border-bottom:1px solid var(--hair)}.mfa-group:last-child{border-bottom:0}
.mfa-group .row{border-bottom:0;padding:10px 0;align-items:center}
.mfa-group .row .btn-sm{border-radius:999px}.mfa-group>.btn-sm,.mfa-group>.btn{border-radius:999px;margin-top:4px}
.mfa-group .btn-sm.ghost{color:var(--ink-2)}.mfa-group .mfa-row .btn-sm{border-radius:999px}
.btn-sm:active{transform:scale(.97)}
.mfa-h{margin:0 0 4px;font-family:var(--sans);font-size:14px;font-weight:600;color:var(--ink-1)}
.mfa-lead{margin:0 0 10px;font-size:13px;line-height:1.55;color:var(--ink-2);max-width:56ch}
.mfa-switch{padding-top:2px}.mfa-switch .t{white-space:normal}
.mfa-switch .ag-sw:disabled{opacity:.45;cursor:not-allowed}
/* "Confirm your email first" for accounts made on the website (public/js/emailcheck.js) */
.ec-card .ec-icon{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06);border-color:var(--hair-2)}
.ec-to{display:flex;flex-direction:column;gap:2px;margin:0 0 12px;padding:12px 14px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.04);border:1px solid var(--hair);font-size:12.5px;color:var(--ink-3)}
.ec-to b{font-size:15px;font-weight:600;color:var(--ink-1);overflow-wrap:anywhere;text-align:start}
.ec-how{margin:0 0 16px;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.ec-body{display:grid;gap:8px}
.ec-body .btn{width:100%;min-height:46px;padding:12px 16px;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1)}.ec-body .btn:active{transform:scale(.98)}.ec-body .btn:disabled{opacity:.6}
.ec-msg{min-height:0;margin:2px 0 0;line-height:1.5}.ec-msg:empty{display:none}.ec-msg.ec-ok{color:var(--mint)}.ec-msg.ec-note{color:var(--ink-2)}
.ec-body .btn.ec-danger{color:var(--h-ffb4a8,#ffb4a8);border-color:rgba(var(--k-255-180-168,255,180,168),.45)}
@media (max-width:520px){.mfa-group .row{flex-wrap:wrap}.mfa-group .row .main{flex-basis:calc(100% - 96px)}}
.bank-cancel{display:block;margin:4px 0 0;color:var(--ink-3)}
.bank-list{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px;font-size:14px;color:var(--ink-2)}.bank-list b{color:var(--ink-1);font-weight:600}
@media (prefers-reduced-motion:reduce){.bank-dot{animation:none}}

.acct-confirm{padding:6px 10px 8px}
.acct.is-asking>button,.acct.is-asking>a{display:none}
.acct-q{display:block;margin:2px 0 6px;font-weight:500;font-size:14px;line-height:1.4;color:var(--ink-1)}
.acct-confirm p{margin:0 0 10px;font-size:12.5px;line-height:1.5;color:var(--ink-2)}
.acct-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.acct-row .link{white-space:nowrap}
@media (prefers-reduced-motion:reduce){.acct{transition:none}button.avatar:active{transform:none}}

/* what NOVA knows, pinned to real neurons — they travel as the brain turns */
.anchor{position:absolute;left:0;top:0;z-index:4;display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);white-space:nowrap;pointer-events:none;will-change:transform,opacity}
.anchor i{width:34px;height:1px;flex:none;background:linear-gradient(90deg,rgba(var(--c),.9),rgba(var(--c),0))}
.anchor.l{flex-direction:row-reverse}
.anchor.l i{background:linear-gradient(270deg,rgba(var(--c),.9),rgba(var(--c),0))}
.anchor b{font-weight:600;color:var(--ink-1)}
.anchor span{text-shadow:0 0 6px rgba(var(--k-3-4-10,3,4,10),.95),0 0 14px rgba(var(--k-3-4-10,3,4,10),.8)}

/* domain key — also a control: click to light a region */
.key{position:absolute;left:26px;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:2px}
.key button{display:flex;align-items:center;gap:10px;padding:7px 12px 7px 8px;border-radius:999px;font-size:12.5px;color:var(--ink-3);text-align:left;transition:color .2s,background .2s}
.key button:hover,.key button.on{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.05)}
.key .sw{width:8px;height:8px;border-radius:50%;background:rgb(var(--c));flex:none}
.key small{color:var(--ink-3);font-size:11px;font-variant-numeric:tabular-nums;margin-left:4px}
/* the rail: the two main ways into her life, the dashboard and the life sections. One element that stays
   put from the mind to the worlds and back, so moving between them never rebuilds the side of the screen */
#key{display:none}
.rail{position:absolute;z-index:12;left:max(26px,3vw);top:50%;transform:translateY(-50%);width:262px;display:flex;flex-direction:column;gap:10px}
/* laptop and desktop: the panel lives between the top bar and the bottom of the screen, centred when there's room.
   It never rises over the menu, the NOVA mark or Your life at the top; when the window is short, the list of
   sections scrolls inside its own card instead of the panel running off the screen */
@media (min-width:761px){
  .rail{top:92px;bottom:18px;transform:none;pointer-events:none}
  .rail>*{flex:none;pointer-events:auto}
  .rail>:first-child{margin-top:auto}.rail>:last-child{margin-bottom:auto}
  .rail .rail-peek{pointer-events:none}
  .rail-life{flex:0 1 auto;min-height:96px;grid-template-rows:auto minmax(0,1fr)}
  .rail-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.14) transparent}
}
/* a short window: the dashboard card drops its bars so the sections keep their room */
@media (min-width:761px) and (max-height:760px){
  .rail{gap:8px}
  .rail-dash .rd-bars{display:none}
  .rail-card{padding-top:12px;padding-bottom:12px}
}
.rail-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:5px;padding:16px 18px 15px 20px;border-radius:18px;text-align:left;color:var(--ink-1);background:rgba(var(--k-14-16-27,14,16,27),.58);border:1px solid rgba(var(--k-246-239-230,246,239,230),.085);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:background .3s ease,border-color .3s ease,transform .16s cubic-bezier(.23,1,.32,1)}
button.rail-card:hover{background:rgba(var(--k-30-32-48,30,32,48),.86);border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
button.rail-card:active{transform:scale(.98)}
.rail button:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.8);outline-offset:3px}
.rc-k{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)}
.rc-t{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-family:var(--display);font-size:21px;line-height:1.15;color:var(--ink-1)}
.rc-t i{font-style:normal;font-family:system-ui,sans-serif;font-size:14px;color:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),color .2s}
button.rail-card:hover .rc-t i,.rail-head:hover .rc-t i{transform:translateX(3px);color:var(--gold)}
.rc-s{font-size:12.5px;line-height:1.4;color:rgba(var(--k-246-239-230,246,239,230),.78)}
.rail-head{display:grid;gap:5px;padding:0;margin-bottom:8px;text-align:left;border-radius:8px}
/* the dashboard, featured: your whole life as one number, a bar per section, and today's focus */
.rail-dash{gap:10px;padding:16px 18px 16px 18px;border-color:rgba(var(--k-245-198-107,245,198,107),.26);background:radial-gradient(120% 120% at 0% 0%,rgba(var(--k-245-198-107,245,198,107),.09),rgba(var(--k-245-198-107,245,198,107),0) 55%),rgba(var(--k-14-16-27,14,16,27),.66);box-shadow:0 14px 40px rgba(var(--k-0-0-0,0,0,0),.25),inset 0 1px 0 rgba(var(--k-255-240-210,255,240,210),.05)}
.rail-dash .rd-focus{display:none}
button.rail-dash:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:radial-gradient(120% 120% at 0% 0%,rgba(var(--k-245-198-107,245,198,107),.16),rgba(var(--k-245-198-107,245,198,107),0) 55%),rgba(var(--k-30-32-48,30,32,48),.9)}
.rd-top{display:flex;align-items:center;gap:13px}
/* today's focus under My day on the home panel: one quiet line, her own words (Nov 1 review) */
.rd-fx{display:flex;align-items:baseline;gap:6px;min-width:0;padding-top:8px;border-top:1px solid rgba(var(--k-246-239-230,246,239,230),.08);font-size:12.5px;line-height:1.35;text-align:start}
.rd-fx[hidden]{display:none}
.rd-fx b{flex:none;font-size:12px;font-weight:600;color:var(--gold)}
.rd-fx-t{min-width:0;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd-ring{position:relative;flex:none;width:56px;height:56px;display:grid;place-items:center}
.rd-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.rd-ring .trk{fill:none;stroke:rgba(var(--k-246-239-230,246,239,230),.12);stroke-width:2.5}
.rd-ring .val{fill:none;stroke:var(--gold);stroke-width:2.5;stroke-linecap:round;filter:drop-shadow(0 0 4px rgba(var(--k-245-198-107,245,198,107),.55));transition:stroke-dashoffset 1.2s cubic-bezier(.19,1,.22,1)}
.rd-ring b{font-family:var(--display);font-weight:400;font-size:21px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.rd-head{display:grid;gap:3px;min-width:0;flex:1}
.rd-head .rc-t{font-size:20px}
.rd-sum{font-size:12px;color:rgba(var(--k-246-239-230,246,239,230),.72);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd-bars{display:flex;align-items:flex-end;gap:3px;height:22px}
.rd-bars i{flex:1;min-width:3px;border-radius:2px 2px 1px 1px;background:rgba(var(--c),.75);transition:opacity .2s}
.rd-bars i.none{background:rgba(var(--k-246-239-230,246,239,230),.14)}
.rd-focus{display:grid;gap:2px;padding:8px 10px;border-radius:10px;background:rgba(var(--k-245-198-107,245,198,107),.08);border:1px solid rgba(var(--k-245-198-107,245,198,107),.2)}
.rd-focus small{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.rd-focus span{font-size:13px;line-height:1.35;color:var(--ink-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rd-focus.done{background:rgba(var(--k-111-242-196,111,242,196),.07);border-color:rgba(var(--k-111-242-196,111,242,196),.25)}.rd-focus.done small{color:var(--mint)}
.rail-dash .rc-s{display:none}
/* hovering a section shows just that one: the others dim, and a card beside the panel tells its story */
.rail-list ol:has(button:hover) button:not(:hover):not(.on){opacity:.38}
.rail-list ol button{transition:color .2s ease,background-color .2s ease,opacity .2s ease}
.rail-peek{position:absolute;left:calc(100% + 14px);top:0;z-index:20;width:280px;padding:15px 16px 14px;border-radius:16px;border:1px solid rgba(var(--c),.4);background:radial-gradient(120% 100% at 0% 0%,rgba(var(--c),.16),rgba(var(--c),0) 60%),rgba(var(--k-16-18-28,16,18,28),.96);box-shadow:0 18px 50px rgba(var(--k-0-0-0,0,0,0),.5);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:none;opacity:0;transform:translateX(-6px);transition:opacity .16s ease-out,transform .2s cubic-bezier(.23,1,.32,1),top .2s cubic-bezier(.23,1,.32,1)}
.rail-peek.on{opacity:1;transform:none}
.rail-peek::before{content:'';position:absolute;left:-6px;top:var(--ay,24px);width:10px;height:10px;transform:rotate(45deg);background:rgba(var(--k-16-18-28,16,18,28),.96);border-left:1px solid rgba(var(--c),.4);border-bottom:1px solid rgba(var(--c),.4)}
.rp-top{display:flex;align-items:center;gap:12px}
.rp-ring{position:relative;flex:none;width:46px;height:46px;display:grid;place-items:center}
.rp-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.rp-ring .trk{fill:none;stroke:rgba(var(--k-246-239-230,246,239,230),.14);stroke-width:2.5}
.rp-ring .val{fill:none;stroke:rgb(var(--c));stroke-width:2.5;stroke-linecap:round}
.rp-ring b{font-family:var(--display);font-weight:400;font-size:17px;color:var(--ink-1)}
.rp-n{display:grid;gap:2px;min-width:0}
.rp-n b{font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1)}
.rp-n span{font-size:12px;color:rgb(var(--c))}
.rp-why{margin:10px 0 0;font-size:13px;line-height:1.45;color:var(--ink-2)}
.rp-q{margin:10px 0 0;padding:8px 10px;border-radius:10px;background:rgba(var(--c),.08);font-size:12.5px;line-height:1.4;color:var(--ink-1)}
.rp-q small{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgb(var(--c));margin-bottom:2px}
.rp-go{margin:10px 0 0;font-size:11.5px;color:var(--ink-3)}
@media (prefers-reduced-motion:reduce){.rail-peek{transition:opacity .12s}}
.rail-list{position:relative;margin:0 -8px}
.rail-list ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
.rail-list ol button{position:relative;z-index:1;width:100%;display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:10px;font-size:14px;text-align:left;color:rgba(var(--k-246-239-230,246,239,230),.8);transition:color .2s ease,background-color .2s ease}
.rail-list ol button:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.05)}
.rail-list ol button:active{transform:scale(.985)}
.rail-list .n{width:18px;font-size:11px;letter-spacing:.08em;color:var(--ink-3);font-variant-numeric:tabular-nums;transition:color .3s}
.rail-list .d{width:8px;height:8px;flex:none;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.5)}
.rail-list .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-list .sc{font-size:12px;color:rgba(var(--c),.95);font-variant-numeric:tabular-nums}
.rail-list ol button.on{color:var(--ink-1)}
.rail-list ol button.on .n{color:rgb(var(--c))}
/* where she is: a lit band that slides to the world she's facing, taking on its colour */
.rail-ind{position:absolute;left:0;right:0;top:0;border-radius:10px;background:rgba(var(--c,245,198,107),.13);box-shadow:inset 2px 0 0 rgb(var(--c,245,198,107));opacity:0;pointer-events:none;transition:transform .45s cubic-bezier(.23,1,.32,1),opacity .3s ease,background-color .45s ease,box-shadow .45s ease}
.rail-ind.on{opacity:1}
#stage.in-life .rail-life{border-color:rgba(var(--k-245-198-107,245,198,107),.3);background:rgba(var(--k-20-22-34,20,22,34),.84)}
.rail .life-ask{align-self:flex-start;padding:9px 16px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-20-22-34,20,22,34),.6);font-size:12.5px;color:var(--ink-2);opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .3s ease,transform .3s cubic-bezier(.23,1,.32,1),border-color .2s,color .2s}
.rail .life-ask:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
#stage.in-life .rail .life-ask{opacity:1;pointer-events:auto;transform:none}
#stage.in-overview .rail,#stage.in-overview .rail>*,#stage.focusing .rail,#stage.focusing .rail>*{opacity:0!important;pointer-events:none!important;transition:opacity .35s}
#stage.in-world .rail .life-ask{opacity:0;pointer-events:none}
/* inside a world's own page the panel stays on the left and the page makes room for it */
#stage.in-world .life-detail.dash{--padL:max(var(--padX),calc(max(26px,3vw) + 262px + 32px))}
#stage.in-world.rail-min .life-detail.dash{--padL:max(var(--padX),calc(max(26px,3vw) + 58px + 32px))}
/* folding the panel: a slim strip of the same things (the dashboard, and a dot per section) */
.rail-fold{align-self:flex-end;width:30px;height:30px;margin-bottom:-4px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--hair);background:rgba(var(--k-20-22-34,20,22,34),.6);color:var(--ink-3);transition:color .2s ease,border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.rail-fold:hover{color:var(--ink-1);border-color:var(--hair-2)}
.rail-fold:active{transform:scale(.94)}
.rail-fold svg{transition:transform .25s cubic-bezier(.23,1,.32,1)}
.rc-ic{display:none;color:var(--gold)}
#stage.rail-min .rail{width:58px}
#stage.rail-min .rail-fold{align-self:center;margin-bottom:0}
#stage.rail-min .rail-fold svg{transform:rotate(180deg)}
#stage.rail-min .rail-card{padding:12px 0;justify-items:center}
#stage.rail-min .rc-ic{display:block}
#stage.rail-min .rail-dash .rc-k,#stage.rail-min .rail-dash .rc-t,#stage.rail-min .rail-dash .rc-s,#stage.rail-min .rail-head,#stage.rail-min .rail .life-ask{display:none}
#stage.rail-min .rail-dash .rd-head,#stage.rail-min .rail-dash .rd-bars,#stage.rail-min .rail-dash .rd-focus{display:none}
#stage.rail-min .rail-dash{padding:9px 0}
#stage.rail-min .rd-ring{width:42px;height:42px}#stage.rail-min .rd-ring b{font-size:16px}
#stage.rail-min .rail-list{margin:0 6px;width:calc(100% - 12px)}
#stage.rail-min .rail-list ol button{justify-content:center;padding:10px 0}
#stage.rail-min .rail-list .n,#stage.rail-min .rail-list .t,#stage.rail-min .rail-list .sc{display:none}
#stage.rail-min .rail-list .d{width:10px;height:10px}
#stage.rail-min .rail-ind{box-shadow:none}
@media (prefers-reduced-motion:reduce){.rail-ind,.rail .life-ask{transition:opacity .2s}}

#tip{position:absolute;left:0;top:0;z-index:8;pointer-events:none;padding:8px 12px;border-radius:12px;background:rgba(var(--k-6-7-16,6,7,16),.86);border:1px solid rgba(var(--c),.45);font-size:12px;color:var(--ink-2);opacity:0;transition:opacity .15s;white-space:nowrap}
#tip b{color:rgb(var(--c));font-weight:600;margin-right:6px}

.greet{position:absolute;left:50%;transform:translateX(-50%);width:min(640px,92vw);text-align:center;z-index:4;pointer-events:none}
.greet::before{content:"";position:absolute;inset:-50px -90px -40px;background:radial-gradient(closest-side,rgba(var(--k-3-4-10,3,4,10),.8),rgba(var(--k-3-4-10,3,4,10),0));z-index:-1}
.hello{margin:0 0 6px;font-size:13px;letter-spacing:.14em;color:var(--gold)}
html[dir=rtl] .hello{letter-spacing:0} /* Arabic letters join: never spaced apart */
/* the greeting made for this moment (public/js/greeting.js) fades in over the plain hello, always on one line */
.hello{line-height:20px;transition:opacity .16s cubic-bezier(.23,1,.32,1)}.hello.hello-out{opacity:0}
/* a sentence reads as a sentence: a touch larger, normal tracking, the same 20px line, so nothing below moves */
.hello:has(>[data-no-i18n]),.hello.hello-line{font-size:15px;letter-spacing:.01em;text-shadow:0 0 3px rgba(5,7,12,.9),0 1px 16px rgba(5,7,12,.9)}
@media (max-width:760px){.hello:has(>[data-no-i18n]),.hello.hello-line{font-size:14.5px;letter-spacing:0}}
@media (prefers-reduced-motion:reduce){.hello{transition:none}}
.greet h1{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(22px,2.6vw,32px);line-height:1.15;color:var(--ink-1)}
.status{margin-top:12px;font-size:13px;color:var(--ink-3);min-height:18px}
.status .pip{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ice);margin-inline-end:8px;vertical-align:1px}
/* the thinking orb (public/js/orb.js) in place of the dot: its shape and colour say what NOVA is doing */
.status .orb,.turn-work .orb{position:static;inset:auto;display:inline-block;vertical-align:middle;margin:0;margin-inline-end:8px;flex:none} /* not the full-bleed canvas rule: the orb sits before the words, never on them */
.turn-work .orb~.tw-dots{display:none}
[data-state="listening"] .status .pip,[data-state="thinking"] .status .pip,[data-state="retrieving"] .status .pip,[data-state="acting"] .status .pip{animation:pip 1.4s ease-in-out infinite}
[data-state="approval"] .status .pip{background:var(--gold)}
[data-state="complete"] .status .pip{background:var(--mint)}
@keyframes pip{0%,100%{opacity:.35}50%{opacity:1}}

/* the message box: the home screen's (#dock) and every section's (.wt-bar, public/js/worldtalk.js) are this one bar */
.dock{display:flex;align-items:center;gap:10px;padding:8px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.78)}
#dock{position:absolute;left:50%;transform:translate(-50%,calc(var(--grow,0px) * -1));width:min(620px,92vw);z-index:5}
/* a side panel open on a computer (Settings, Chats, Tasks…: #sheet, 460px): the greeting, the box and the conversation
   move into the room beside it, so the panel never covers Talk (Oct 17 release check), and Life at a glance steps back. `translate` composes with each
   one's own transform; it eases in with the panel and the widths keep a gutter at 1024–1280px and every Text size. */
@media (min-width:1024px){
  #stage{--pane-shift:calc(min(460px,100vw) / 2)}
  html[dir=rtl] #stage{--pane-shift:calc(min(460px,100vw) / -2)}
  #stage:not(.simple):has(#sheet.on) :is(#greet,#dock,#dockHint,#convo,#convoResume){translate:var(--pane-shift) 0}
  #stage:not(.simple):has(#sheet.on) :is(#dock,#dockHint){width:min(620px,calc(100vw - 460px - 48px))}
  #stage:not(.simple):has(#sheet.on) #greet{width:min(640px,calc(100vw - 460px - 48px))}
  #stage:not(.simple):has(#sheet.on) #convo{width:min(780px,calc(100vw - 460px - 48px))}
  /* the note above the box moves with it; Life at a glance steps back while the panel is open (it would sit over the box) */
  #stage:not(.simple):has(#sheet.on) #toast{translate:var(--pane-shift) 0;max-width:calc(100vw - 460px - 48px)}
  #stage:not(.simple):has(#sheet.on) :is(#glance,.rail){opacity:0!important;pointer-events:none!important} /* (in Arabic the rail sits opposite the panel; in English the panel already covers it) */
  #stage:not(.simple):has(#sheet.on):has(#toast.on) #greet{translate:var(--pane-shift) calc(var(--toast-h,0px) * -1)}
  #stage:not(.simple):has(#sheet.on) #dock,#stage:not(.simple):has(#sheet.on) #dockHint{transition:opacity 1.2s var(--ease),translate .3s var(--ease)}
  #stage:not(.simple):has(#sheet.on) #greet{transition:opacity .2s ease-out,translate .3s var(--ease)}
  #stage:not(.simple):has(#sheet.on) #convo{transition:opacity .5s var(--ease),transform .7s var(--ease),translate .3s var(--ease)}
}
@media (min-width:1024px) and (prefers-reduced-motion:reduce){#stage:not(.simple):has(#sheet.on) :is(#greet,#dock,#dockHint,#convo){transition:none}}
/* Talk: a spoken conversation (NOVA listens, answers aloud, listens again) */
.talk{position:relative;flex:none;height:48px;display:inline-flex;align-items:center;gap:9px;padding:0 18px 0 14px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-size:14px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),background .3s}
/* the video call button, beside Talk */
.vcall-btn{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--ink-1);border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.05);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.vcall-btn:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.vcall-btn:active{transform:scale(.95)}
.vcall-btn[hidden]{display:none}
.dock.in-talk .vcall-btn{display:none}
/* on a phone the dock has no room for both: the camera sits where Send is until she types (or adds a file) */
@media (max-width:760px){
  .dock .vcall-btn{order:9}.dock .send{order:10}
  .dock:has(.field:not(:placeholder-shown)) .vcall-btn,.dock:has(.att-tray:not([hidden])) .vcall-btn{display:none}
  .dock:has(.vcall-btn:not([hidden])):has(.field:placeholder-shown):not(:has(.att-tray:not([hidden]))) .send{display:none}
}
/* a video call with NOVA, "the Lens" (public/js/videocall.js, lens.js): you see yourself first, then NOVA fills the room
   as a round lens holding one seamless loop of her. What she's doing (listening, speaking, thinking, connecting) is light
   on and around the rim, eased and tied to her real voice; the video itself is never switched, seeked, moved or scaled. */
.lcall{--ink-1:#f6efe6;--ink-2:rgba(246,239,230,.76);--ink-3:rgba(246,239,230,.58);--hair:rgba(246,239,230,.10);--hair-2:rgba(246,239,230,.18);--gold:#f5c66b;--ice:#5ce1ff;--violet:#a98bff;
  --lc-surface:rgba(10,11,19,.94);--lc-end:#c8463a;--e-out:cubic-bezier(.23,1,.32,1);--e-move:cubic-bezier(.32,.72,0,1);--e-swing:cubic-bezier(.77,0,.175,1);
  --D:clamp(220px,min(50vh,40vw),460px);
  position:fixed;inset:0;z-index:60;color-scheme:dark;color:var(--ink-1);background:#020308;overflow:hidden;
  display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr);
  padding:max(18px,env(safe-area-inset-top)) 28px max(24px,env(safe-area-inset-bottom));
  opacity:0;transition:opacity .24s var(--e-out)}
.lcall.on{opacity:1}
.lc-space{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.lc-top{position:relative;z-index:3;display:flex;align-items:center;gap:16px;min-height:40px}
.lc-mark{height:15px;flex:none;opacity:.92}
.lc-state{display:none;margin:0;align-items:center;gap:9px;font-size:13.5px;color:var(--ink-2);min-width:0}
/* NOVA's step ("Preparing an email for your OK") is one line however long, so the top bar never grows */
.lc-state-t{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-dot{flex:none}
.lcall[data-phase=call] .lc-state{display:inline-flex}
.lc-dot{width:7px;height:7px;border-radius:50%;background:var(--ice);box-shadow:0 0 0 4px rgba(92,225,255,.12);transition:background-color .25s ease,box-shadow .25s ease}
.lcall[data-s=speaking] .lc-dot{background:var(--gold);box-shadow:0 0 0 4px rgba(245,198,107,.14)}
.lcall:is([data-s=thinking],[data-s=working],[data-s=looking]) .lc-dot{background:var(--violet);box-shadow:0 0 0 4px rgba(169,139,255,.16)}
.lc-sp{flex:1}
.lc-clock{display:none;margin:0;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.lcall[data-phase=call] .lc-clock{display:block}
.lc-clock b{font-weight:500;color:var(--ink-2)}
.lc-clock span::before{content:"·";margin:0 8px;color:var(--ink-3)}
.lc-clock.low span{color:var(--gold)}
.lc-x{width:40px;height:40px;flex:none;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);background:rgba(246,239,230,.06);box-shadow:inset 0 0 0 1px var(--hair-2);transition:transform .16s var(--e-out),color .2s ease,background-color .2s ease}
.lc-x[hidden]{display:none}
.lc-x:active{transform:scale(.95)}
/* the stage: NOVA's lens, her name while you wait, and (v2) what she shows you */
.lc-stage{position:relative;z-index:3;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;pointer-events:none}
.lc-lens-wrap{flex:none;width:var(--D);height:var(--D);transform-origin:50% 50%;transition:transform .5s var(--e-move)}
.lcall.big .lc-lens-wrap{transform:var(--lens-t)}
.lc-name{text-align:center;transition:opacity .24s var(--e-out),transform .5s var(--e-move)}
.lcall.big .lc-name{transform:var(--name-t)}
.lcall[data-phase=call] .lc-name{opacity:0}
.lc-name h2{margin:0;font-family:var(--display);font-weight:400;font-size:34px;line-height:1;letter-spacing:.08em}
.lc-sub{margin:10px 0 0;font-size:14.5px;color:var(--ink-2)}
.lc-share[hidden]{display:none}
/* the lens */
.lc-lens{position:relative;width:100%;height:100%}
.lc-halo{position:absolute;inset:-40%;border-radius:50%;pointer-events:none}
.lc-halo-cool{background:radial-gradient(closest-side,rgba(150,210,255,.15) 48%,rgba(120,160,255,.05) 70%,rgba(120,160,255,0) 100%);opacity:.8;transition:opacity .4s var(--e-out)}
.lc-halo-warm{background:radial-gradient(closest-side,rgba(255,200,130,.2) 52%,rgba(255,180,110,.06) 68%,rgba(255,180,110,0) 88%);opacity:0;will-change:opacity,transform}
.lcall[data-phase=connecting] .lc-halo-cool{animation:lcBreath 3.2s cubic-bezier(.45,0,.55,1) infinite}
@keyframes lcBreath{0%,100%{opacity:.45}50%{opacity:1}}
.lc-glass{position:absolute;inset:0;border-radius:50%;overflow:hidden;background:#03050b;isolation:isolate;box-shadow:0 30px 90px -30px rgba(0,0,0,.95)}
.lc-mind{position:absolute;inset:0;width:100%;height:100%;animation:lcTurn 240s linear infinite;transition:opacity .24s var(--e-out)}
/* before you join her mind is at rest: as sharp as in the call, a little dimmer and not yet turning; it wakes (brightens
   and starts to turn) the moment you press Join. Never a blur: a raster blurred by CSS just reads as out of focus. */
.lcall[data-phase=lobby] .lc-mind{opacity:.84;animation-play-state:paused}
.lcall[data-phase=connecting] .lc-mind{opacity:.92}
@keyframes lcTurn{to{transform:rotate(360deg)}}
.lc-clip{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .6s var(--e-out)}
.lc-glass.has-clip .lc-clip{opacity:1}
.lc-glass.has-clip .lc-mind{animation:none}
.lc-still,.lc-face{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .28s var(--e-out)}
.lc-face{background:transparent}
.lc-glass.has-still .lc-still,.lc-glass.has-face .lc-face{opacity:1}
.lc-glass:is(.has-still,.has-face) .lc-mind{animation:none}
/* light on the glass: depth at the edge, one reflection, and her warmth from the rim while she speaks */
.lc-shade{position:absolute;inset:0;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 30% 22%,rgba(220,235,255,.075),rgba(220,235,255,0) 34%),radial-gradient(closest-side,rgba(2,3,8,0) 68%,rgba(2,3,8,.66) 100%)}
.lc-wash{position:absolute;inset:0;border-radius:50%;pointer-events:none;opacity:0;will-change:opacity;background:radial-gradient(closest-side,rgba(255,200,130,0) 78%,rgba(255,200,130,.10) 92%,rgba(255,224,180,.26) 100%)}
.lc-turn{position:absolute;inset:0;pointer-events:none;transition:transform .7s var(--e-swing)}
.lc-rim{position:absolute;inset:-1px;border-radius:50%;opacity:0;will-change:opacity}
.lc-rim::before,.lc-rim::after{content:"";position:absolute;border-radius:50%;background:var(--rim)}
/* a soft band of light just outside the glass, and a fine line of it on the rim */
.lc-rim::before{inset:-22px;opacity:.6;-webkit-mask:radial-gradient(closest-side,transparent calc(100% - 30px),rgba(0,0,0,.7) calc(100% - 23px),#000 calc(100% - 21px),rgba(0,0,0,.3) calc(100% - 11px),transparent 100%);mask:radial-gradient(closest-side,transparent calc(100% - 30px),rgba(0,0,0,.7) calc(100% - 23px),#000 calc(100% - 21px),rgba(0,0,0,.3) calc(100% - 11px),transparent 100%)}
.lc-rim::after{inset:0;-webkit-mask:radial-gradient(closest-side,transparent calc(100% - 2px),rgba(0,0,0,.85) calc(100% - 1.2px));mask:radial-gradient(closest-side,transparent calc(100% - 2px),rgba(0,0,0,.85) calc(100% - 1.2px))}
.lcall[data-s=listening] .lc-halo-cool{opacity:1}
.lc-rim-cool::before{opacity:.85}
.lc-rim-cool{--rim:conic-gradient(from -80deg,rgba(170,232,255,0),rgba(186,238,255,.95) 80deg,rgba(170,232,255,0) 160deg,rgba(170,232,255,0))}
.lc-rim-warm{--rim:conic-gradient(from -120deg,rgba(255,214,150,0),rgba(255,228,184,1) 120deg,rgba(255,214,150,0) 240deg,rgba(255,214,150,0))}
.lc-rim-think{--rim:conic-gradient(from -75deg,rgba(196,182,255,0),rgba(214,200,255,1) 75deg,rgba(196,182,255,0) 150deg,rgba(196,182,255,0));animation:lcTurn 3.6s linear infinite}
/* your picture: full screen while you wait, then a tile in the corner */
.lc-self{position:absolute;z-index:1;top:calc(max(18px,env(safe-area-inset-top)) + 60px);inset-inline-end:28px;width:220px;height:146px;border-radius:18px;overflow:hidden;background:#0b0c14;box-shadow:0 0 0 1px var(--hair-2),0 24px 50px -20px #000;transform-origin:50% 50%;transition:transform .5s var(--e-move),border-radius .5s var(--e-move),box-shadow .3s ease}
.lcall.big .lc-self{transform:var(--self-t);border-radius:0;box-shadow:none}
.lc-self-v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);opacity:0;transition:opacity .3s var(--e-out)}
.lcall.cam-on .lc-self-v{opacity:1}
.lc-self-off{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:9px;background:radial-gradient(120% 100% at 50% 0%,#161828,#090a12);transition:opacity .3s var(--e-out)}
.lcall.cam-on .lc-self-off{opacity:0}
.lc-initial{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-size:21px;color:var(--gold);background:rgba(245,198,107,.1);box-shadow:inset 0 0 0 1px rgba(245,198,107,.26)}
.lc-off-t{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}
.lc-level{position:absolute;inset-inline-start:10px;bottom:10px;display:flex;gap:2px;align-items:flex-end;height:14px}
.lc-level i{width:3px;height:14px;border-radius:2px;background:#fff;opacity:.9;transform-origin:50% 100%;transform:scaleY(.3)}
.lcall:is(.big,.muted) .lc-level,.lcall:not([data-phase=call]) .lc-level{visibility:hidden}
/* NOVA can see: while her camera is on in a call, a quiet, steady tag on her picture (never pulsing) */
.lc-sees{position:absolute;top:8px;inset-inline-start:8px;display:inline-flex;align-items:center;gap:5px;padding:4px 9px 4px 7px;border-radius:999px;background:rgba(3,4,10,.78);box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink-1);font-size:12.5px;line-height:16px;white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(-3px);transition:opacity .2s var(--e-out),transform .2s var(--e-out)}
.lc-sees svg{color:var(--ice);flex:none}
.lcall.cam-on[data-phase=call]:not(.big) .lc-sees{opacity:1;transform:none}
/* while NOVA looks, her picture says so: one hairline ice ring that fades in and out with the look (never loops) */
.lc-self::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1.5px rgba(92,225,255,.7);opacity:0;pointer-events:none;transition:opacity .22s var(--e-out)}
.lcall.cam-on[data-phase=call][data-s=looking]:not(.big) .lc-self::after{opacity:1}
.lc-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .4s var(--e-out);background:linear-gradient(180deg,rgba(2,3,8,.8) 0%,rgba(2,3,8,.3) 32%,rgba(2,3,8,0) 50%,rgba(2,3,8,.4) 68%,rgba(2,3,8,.9) 100%)}
.lcall.big .lc-scrim{opacity:1}
/* what's said: captions on a solid surface (the space is kept, so nothing moves when they come and go) */
.lc-words{position:relative;z-index:3;justify-self:center;width:min(680px,100%);min-width:0;min-height:104px;margin-bottom:22px;display:flex;flex-direction:column;justify-content:flex-end;gap:10px}
.lc-caps{display:none;background:var(--lc-surface);box-shadow:inset 0 0 0 1px var(--hair);border-radius:18px;padding:13px 22px 15px;text-align:center;transition:opacity .2s var(--e-out)}
.lcall[data-phase=call] .lc-caps{display:block}
.lc-caps:has(.lc-cap-nova.lc-cap-none):has(.lc-cap-you[hidden]),.lcall.no-caps .lc-caps{opacity:0;visibility:hidden}
/* her words: one line, its place always kept (so the box never grows when she speaks); NOVA's: a box of fixed height
   (two lines; three on a phone) showing the newest lines. Words only ever add to the end and start-aligned, never
   rebalanced, so nothing above them rewraps; older lines slide up under a soft fade */
.lc-cap-you{margin:0 0 6px;font-size:14px;line-height:1.45;min-height:1.45em;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:start}
.lc-cap-you::before{content:"“"}.lc-cap-you::after{content:"”"}
.lcall[data-phase=call] .lc-cap-you[hidden]{display:block!important;visibility:hidden}
.lc-cap-nova{--cap-lines:2;margin:0;font-size:18px;line-height:1.48;height:calc(var(--cap-lines) * 1.48em);overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;color:var(--ink-1);text-align:start;text-wrap:wrap;
}
.lc-cap-nova.over{-webkit-mask:linear-gradient(180deg,transparent 0,#000 .8em);mask:linear-gradient(180deg,transparent 0,#000 .8em)}
.lc-cap-line{display:block;flex:none;transition:transform .16s var(--e-out)}
.lc-cap-nova:not(.over){justify-content:flex-start}
.lc-note{min-width:0;text-align:center;font-size:14px;line-height:1.5;color:var(--ink-2)}
.lc-note[hidden]{display:none}
/* in a call one line is kept for the note (videocall.js keeps it unhidden), so a short line coming and going never moves the captions or the lens */
.lcall[data-phase=call]:not(.sc-mode) .lc-note{min-height:21px}
.lc-note p{margin:0 auto;max-width:48ch;text-wrap:balance}
/* in a call the one-line note sits on the same solid surface as the captions (never bare text on the stars), in the
   same 21px line, so it still never moves anything */
.lcall[data-phase=call]:not(.sc-mode) .lc-note p{display:inline-block;max-width:100%;padding:3px 14px;margin:-3px auto;border-radius:999px;background:var(--lc-surface);box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-note-acts{display:flex;justify-content:center;flex-wrap:wrap;gap:4px 22px;margin-top:6px}
.lc-link{font-size:14px;color:var(--gold);text-decoration:underline;text-underline-offset:3px;padding:6px 2px}
/* the controls: labelled, so they're clear the first time */
.lc-ctls{position:relative;z-index:3;display:flex;justify-content:center;align-items:flex-start;gap:22px}
.lc-f{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:64px}
.lc-f[hidden]{display:none}
.lc-f figcaption{font-size:12.5px;color:var(--ink-2);min-height:1.25em;white-space:nowrap}
.lc-c{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:var(--ink-1);background:rgba(246,239,230,.08);box-shadow:inset 0 0 0 1px var(--hair-2);transition:transform .16s var(--e-out),background-color .2s ease,color .2s ease}
.lc-c:active:not([disabled]){transform:scale(.95)}
.lc-c .lc-slash{opacity:0;transition:opacity .15s ease}
.lc-c.lc-mute[aria-pressed=true]{background:var(--ink-1);color:#0c0c12;box-shadow:none}
.lc-c.lc-mute[aria-pressed=true] .lc-slash,.lc-c.lc-cam.off .lc-slash{opacity:1}
.lc-c.lc-cc[aria-pressed=true]{background:rgba(92,225,255,.12);box-shadow:inset 0 0 0 1px rgba(92,225,255,.34);color:#dff8ff}
.lc-c.lc-end{width:68px;border-radius:28px;background:var(--lc-end);color:#fff;box-shadow:none}
.lc-c.lc-join{width:auto;min-width:148px;padding:0 30px;border-radius:999px;background:var(--gold);color:#17120a;box-shadow:none;font-size:15.5px;font-weight:600}
.lc-c.lc-again{background:var(--ink-1);color:#12100d}
.lc-c[disabled]{opacity:.4;cursor:default}
@media (hover:hover){.lc-x:hover{color:var(--ink-1);background:rgba(246,239,230,.1)}.lc-c:hover:not([disabled]){background-color:rgba(246,239,230,.14)}.lc-c.lc-end:hover{background:#d4503f}.lc-c.lc-join:hover:not([disabled]){background:#f8d184}.lc-c.lc-again:hover{background:#fff}.lc-c.lc-mute[aria-pressed=true]:hover{background:#fff}}
:is(.lc-c,.lc-x,.lc-link):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* the call moves focus itself (to End when NOVA answers): its ring shows only to someone using the keyboard */
.lcall:not(.keys) :is(.lc-c,.lc-x,.lc-link,.lc-chip,.lc-btn,.sc-btn,.sc-later):focus-visible{outline:none}
.lc-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:700px){
  .lcall{--D:max(150px,min(84vw,calc(100svh - 524px),340px));padding:max(14px,env(safe-area-inset-top)) 16px max(20px,env(safe-area-inset-bottom))}
  .lcall[data-phase=call] .lc-mark{display:none}
  /* the lens starts below your picture in the corner, so her rim light always has room */
  .lc-stage{justify-content:flex-start;padding-top:166px;gap:22px}
  /* in the call her name steps away, so the lens settles a little lower, into the middle of the room */
  .lcall[data-phase=call] .lc-lens-wrap{transform:translateY(40px)}
  .lc-name h2{font-size:30px}
  .lc-self{top:calc(max(14px,env(safe-area-inset-top)) + 54px);inset-inline-end:16px;width:96px;height:132px;border-radius:20px}
  .lc-sees{top:7px;inset-inline-start:7px;padding:5px}
  .lc-sees span{display:none}
  .lc-initial{width:38px;height:38px;font-size:18px}
  .lc-off-t span{display:none}
  .lc-words{min-height:96px;margin-bottom:16px}
  .lc-caps{padding:12px 16px 14px;border-radius:16px}
  .lc-cap-nova{--cap-lines:3;font-size:16.5px}
  .lc-ctls{gap:12px}
  .lc-f{min-width:58px}
  .lc-f figcaption{font-size:12px}
  .lc-c.lc-join{min-width:132px;padding:0 24px}
}
@media (prefers-reduced-motion:reduce){
  .lcall,.lc-self,.lc-lens-wrap,.lc-name,.lc-turn,.lc-glass,.lc-mind,.lc-still,.lc-face,.lc-sees,.lc-self::after,.lc-cap-line{transition:none!important}
  .lc-mind,.lc-rim-think,.lc-halo-cool{animation:none!important}
}
/* ---------- the Desk: a video call's one solid surface under NOVA (public/js/calldesk.js, direction C, Oct 18) ----------
   NOVA on top; one desk below for everything that isn't her face. Its top edge glides (transform) to fit what's on it
   and NOVA scales (transform) to the room left; nothing else moves. */
.lcall.vc{--D:clamp(220px,min(58vh,40vw),520px);--lc-desk:#080a14}
.lcall.vc[data-phase=call] .lc-lens-wrap{transform:var(--lens-d,none);transition:transform .28s var(--e-out)}
.lcall.vc[data-phase=call] .lc-words{display:none}
.lcall.vc[data-phase=call] .lc-state{height:34px;padding:0 14px 0 12px;border-radius:999px;background:rgba(8,10,20,.78);box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink-1)}
.lc-state-n{font-style:normal;color:var(--ink-3);font-variant-numeric:tabular-nums}
.lc-state-n:empty{display:none}
.lc-desk{position:absolute;z-index:3;left:50%;top:var(--desk-clip-top,60%);width:min(800px,calc(100% - 56px));height:var(--desk-clip-h,40%);transform:translateX(-50%);overflow:hidden;border-radius:28px;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .24s var(--e-out),visibility 0s .24s}
.lcall.vc[data-phase=call] .lc-desk{opacity:1;visibility:visible;transition:opacity .24s var(--e-out)}
.lc-desk::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 -1px 0 var(--hair)}
.lc-slab{position:absolute;inset:0;transform:translateY(var(--desk-y,0px));transition:transform .28s var(--e-out);background:var(--lc-desk);border-radius:28px 28px 0 0;box-shadow:inset 0 1px 0 rgba(246,239,230,.06),inset 0 0 0 1px var(--hair);pointer-events:auto}
.lc-desk-in{display:flex;flex-direction:column;gap:16px;padding:22px 28px 24px;max-height:calc(var(--desk-clip-h,100%) - var(--desk-y,0px));overflow:hidden auto;overscroll-behavior:contain;scrollbar-width:none}
.lc-desk-in::-webkit-scrollbar{display:none}
.lc-desk-in.scrolled{-webkit-mask:linear-gradient(180deg,transparent 0,#000 64px);mask:linear-gradient(180deg,transparent 0,#000 64px)}
.lc-grab{display:none}
/* her words: NOVA's small mark, then her line and NOVA's (the caption box of fixed height, now on the desk) */
.lc-dline{display:flex;gap:12px;align-items:flex-start}
.lc-dmark{width:28px;height:28px;margin-top:2px;border-radius:50%;flex:none;background:radial-gradient(circle,#fff 0 18%,var(--gold) 30%,rgba(245,198,107,.15) 62%,transparent 64%),#151726;box-shadow:inset 0 0 0 1px var(--hair-2)}
.lc-desk .lc-caps{display:block;flex:1;min-width:0;background:none;box-shadow:none;padding:0;border-radius:0;text-align:start}
.lc-desk .lc-cap-you{margin-bottom:4px}
.lc-slot{display:flex;flex-direction:column;gap:14px;padding-inline-start:40px}
.lc-slot>[hidden]{display:none!important}
/* while she works the desk already holds the room her work will need (no empty sky, nothing jumps when the draft
   arrives); Simple view stays small */
html:not(.simple) .lc-desk[data-view=work] .lc-desk-in{min-height:min(476px,50vh)}
.lc-desk .lc-note:empty{display:none}
.lc-desk .lc-note{text-align:start;padding-inline-start:40px}
.lc-desk .lc-note p{margin:0}
/* what to ask next: pills in one row; a tap asks it */
.lc-chips{display:flex;flex-wrap:wrap;gap:10px}
.lc-chip{height:44px;max-width:100%;padding:0 18px 0 14px;border-radius:999px;display:inline-flex;align-items:center;gap:9px;font-size:15px;color:var(--ink-1);background:#0d0f1b;box-shadow:inset 0 0 0 1px var(--hair-2);white-space:nowrap;transition:transform .16s var(--e-out),background-color .2s ease,box-shadow .2s ease}
.lc-chip svg{color:var(--ice);flex:none}
.lc-chip.lead svg{color:var(--gold)}
.lc-chip-t{min-width:0;overflow:hidden;text-overflow:ellipsis}
.lc-chip-go{display:none}
.lc-chip:active{transform:scale(.97)}
.lc-chip:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (hover:hover){.lc-chip:hover{background:#141729;box-shadow:inset 0 0 0 1px rgba(246,239,230,.3)}}
/* her work: the real steps as stars on a line, then what she's writing */
.lc-work{display:flex;flex-direction:column;gap:16px}
.lc-steps{list-style:none;margin:0;padding:0 4px;display:flex;align-items:center;min-width:0}
.lc-st{display:flex;align-items:center;gap:9px;min-width:0;font-size:14px;color:var(--ink-3);white-space:nowrap}
.lc-st-t{min-width:0;overflow:hidden;text-overflow:ellipsis}
.lc-star{width:7px;height:7px;border-radius:50%;flex:none;background:rgba(246,239,230,.28)}
.lc-st.done{color:var(--ink-2)}
.lc-st.done .lc-star{background:#fff3e6;box-shadow:0 0 8px 2px rgba(255,243,230,.45);transform:scale(1.4)}
.lc-st.now{color:var(--ink-1)}
.lc-st.now .lc-star{background:var(--gold);box-shadow:0 0 0 4px rgba(245,198,107,.16),0 0 12px 2px rgba(245,198,107,.6);transform:scale(1.55);animation:lcLit .26s var(--e-out) both}
@keyframes lcLit{from{opacity:.3;transform:scale(.7)}to{opacity:1;transform:scale(1.55)}}
.lc-ln{flex:1 1 14px;min-width:14px;height:1px;margin:0 10px;background:var(--hair)}
.lc-ln.lit{background:linear-gradient(90deg,rgba(255,243,230,.55),rgba(245,198,107,.55))}
html[dir=rtl] .lc-ln.lit{background:linear-gradient(270deg,rgba(255,243,230,.55),rgba(245,198,107,.55))}
.lc-doc{display:flex;flex-direction:column;min-width:0}
.lc-skel{display:block;height:11px;margin-top:12px;border-radius:6px;background:rgba(246,239,230,.06)}
.lc-skel:first-child{margin-top:2px}
.lc-fld{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:15px;line-height:1.4}
.lc-fld-k{width:62px;flex:none;color:var(--ink-3)}
.lc-fld-v{min-width:0;font-weight:500;overflow-wrap:anywhere;unicode-bidi:plaintext}
.lc-body{margin:0;padding:14px 0 4px;font-size:16px;line-height:1.6;color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere}
.lc-rest{visibility:hidden}
.lc-caret{display:inline-block;width:2px;height:1.15em;margin-inline-end:-2px;vertical-align:-3px;background:var(--gold);box-shadow:0 0 8px rgba(245,198,107,.8);animation:lcBlink 1s steps(1) infinite}
@keyframes lcBlink{55%{opacity:.3}}
/* done: a mint receipt */
.lc-rcpt{display:flex;gap:14px;align-items:center;padding:14px 16px;border-radius:18px;background:rgba(111,242,196,.06);box-shadow:inset 0 0 0 1px rgba(111,242,196,.35);animation:scIn .24s var(--e-out) both}
.lc-rcpt-ok{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;background:rgba(111,242,196,.16);color:#6ff2c4}
.lc-rcpt-t{min-width:0}
.lc-rcpt-t b{display:block;font-size:16px;font-weight:600;overflow-wrap:anywhere}
.lc-rcpt-t small{display:block;margin-top:3px;font-size:13.5px;color:var(--ink-3)}
/* the comet: circles NOVA only while she works (one rotating element; its line keeps its width at any size) */
.lc-comet{position:absolute;inset:calc(-9px * var(--lens-k,1));border-radius:50%;pointer-events:none;opacity:0;transition:opacity .24s var(--e-out);animation:lcTurn 2.4s linear infinite;animation-play-state:paused}
.lc-comet::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(92,225,255,0) 0deg,rgba(92,225,255,0) 230deg,rgba(92,225,255,.55) 330deg,#e9fbff 360deg);
  -webkit-mask:radial-gradient(closest-side,transparent calc(100% - 2.5px * var(--lens-k,1)),#000 calc(100% - 2px * var(--lens-k,1)));mask:radial-gradient(closest-side,transparent calc(100% - 2.5px * var(--lens-k,1)),#000 calc(100% - 2px * var(--lens-k,1)))}
.lc-comet-head{position:absolute;top:calc(-4.5px * var(--lens-k,1));left:calc(50% - 4.5px * var(--lens-k,1));width:calc(9px * var(--lens-k,1));height:calc(9px * var(--lens-k,1));border-radius:50%;background:#fff;box-shadow:0 0 calc(12px * var(--lens-k,1)) calc(4px * var(--lens-k,1)) rgba(92,225,255,.85)}
.lcall.vc.working .lc-comet{opacity:1;animation-play-state:running}
.lcall.vc.working .lc-rim-think{opacity:0!important}
.lcall.lc-hid .lc-comet,.lcall.lc-hid .lc-caret{animation-play-state:paused}
/* Simple view: calmer. Her words and one row of suggestions; the work is the one line at the top */
/* (the work is one line: the step she's on now, its star lit) */
html.simple .lcall.vc .lc-doc.waiting,html.simple .lcall.vc .lc-ln,html.simple .lcall.vc .lc-st:not(.now){display:none}
html.simple .lcall.vc .lc-chip:nth-child(n+3){display:none}
@media (max-width:700px){
  .lcall.vc{--D:max(150px,min(84vw,calc(100svh - 524px),340px))}
  .lcall.vc[data-phase=call] .lc-self{width:68px;height:92px;border-radius:16px}
  .lcall.vc[data-phase=call] .lc-f figcaption{display:none}
  .lcall.vc[data-phase=call] .lc-ctls{z-index:4}
  .lcall.vc[data-phase=call] .lc-state{height:32px;font-size:13.5px;padding:0 12px 0 10px}
  .lc-desk{left:0;width:100%;transform:none;border-radius:28px 28px 0 0}
  .lc-desk::after{display:none}
  .lc-desk-in{gap:14px;padding:10px 16px calc(100px + env(safe-area-inset-bottom))}
  .lc-grab{display:block;width:40px;height:5px;margin:0 auto -4px;border-radius:5px;background:var(--hair-2)}
  .lc-slot,.lc-desk .lc-note{padding-inline-start:0}
  .lc-chips{flex-direction:column;flex-wrap:nowrap;gap:8px}
  .lc-chip{width:100%;height:52px;padding:0 16px;border-radius:16px;font-size:15.5px;background:rgba(246,239,230,.035);box-shadow:inset 0 0 0 1px var(--hair)}
  .lc-chip-go{display:inline-flex;margin-inline-start:auto;color:var(--ink-3)}
  html[dir=rtl] .lc-chip-go svg{transform:scaleX(-1)}
  .lc-steps{flex-direction:column;align-items:stretch;gap:12px}
  .lc-ln{display:none}
  .lc-body{font-size:15px;line-height:1.5;padding:10px 0 4px}
  html:not(.simple) .lc-desk[data-view=work] .lc-desk-in{min-height:54svh}
  /* her words take two lines while the work or the draft needs the room */
  .lc-desk:is([data-view=work],[data-view=ok]) .lc-cap-nova{--cap-lines:2}
  /* the small tile in a call: her initial and her level, nothing else */
  .lcall.vc[data-phase=call] .lc-off-t{display:none}
  .lc-fld{padding:9px 0;font-size:14.5px}
  html.simple .lcall.vc .lc-chip:nth-child(n+2){display:none}
}
@media (min-width:701px){
  /* the controls join the top bar (labels stay as their names for screen readers and as tooltips) */
  .lcall.vc[data-phase=call] .lc-top .lc-ctls{gap:8px;padding:6px;margin:-8px 0;border-radius:999px;background:rgba(10,11,20,.86);box-shadow:inset 0 0 0 1px var(--hair)}
  .lcall.vc[data-phase=call] .lc-top .lc-f{min-width:0;gap:0;position:relative}
  .lcall.vc[data-phase=call] .lc-top .lc-f figcaption{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .lcall.vc[data-phase=call] .lc-top .lc-c{width:44px;height:44px}
  .lcall.vc[data-phase=call] .lc-top .lc-c.lc-end{width:56px}
}
@media (prefers-reduced-motion:reduce){
  .lcall.vc .lc-slab,.lcall.vc[data-phase=call] .lc-lens-wrap,.lc-chip{transition:none!important}
  .lc-comet,.lc-caret,.lc-st.now .lc-star,.lc-rcpt{animation:none!important}
}
/* her OK on the desk (PR 3): what goes out, from which account, to whom, that it can't be undone; one gold button */
.lc-ok{display:flex;flex-direction:column;min-width:0;animation:scIn .24s var(--e-out) both}
.lc-ok-h{display:flex;align-items:center;gap:10px;margin-bottom:4px;min-width:0}
.lc-tile{width:32px;height:32px;border-radius:10px;flex:none;display:grid;place-items:center;background:rgba(92,225,255,.10);color:var(--ice)}
.lc-ok-t{min-width:0;font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lc-acct{margin-inline-start:auto;flex:none;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border-radius:999px;font-size:13px;color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--hair-2);white-space:nowrap}
.lc-acct i{width:14px;height:14px;border-radius:50%;background:conic-gradient(#5ce1ff 0 25%,#f5c66b 0 50%,#6ff2c4 0 75%,#a98bff 0);opacity:.9}
.lc-cons{margin:14px 0 0;padding:12px 14px;border-radius:14px;background:rgba(245,198,107,.05);box-shadow:inset 0 0 0 1px rgba(245,198,107,.3);font-size:14px;line-height:1.5;color:var(--ink-2)}
.lc-ok-msg{margin:12px 0 0;font-size:14px;color:var(--ink-2)}
.lc-ok-msg.bad{color:#ff9ac4}
.lc-ok-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}
.lc-btn{position:relative;overflow:hidden;height:50px;padding:0 20px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:15.5px;font-weight:500;color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2);white-space:nowrap;transition:transform .16s var(--e-out),background-color .2s ease,opacity .2s ease}
.lc-btn:active:not(:disabled){transform:scale(.97)}
.lc-btn:disabled{opacity:.55;cursor:default}
.lc-btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.lc-btn.lc-yes{background:var(--gold);color:#1d1408;font-weight:600;box-shadow:0 10px 30px -12px rgba(245,198,107,.6)}
.lc-btn.lc-yes>*{position:relative}
.lc-btn.lc-q{box-shadow:none;color:var(--ink-2);padding:0 12px}
.lc-btn.lc-cancel{color:var(--ink-1);box-shadow:inset 0 0 0 1.5px var(--ink-1)}
/* the countdown: the gold drains left to right (start to end) in exactly 3 seconds; it can't be hurried */
.lc-yes-bar{position:absolute!important;inset:0;background:rgba(29,20,8,.22);transform-origin:0 50%;transform:scaleX(0);animation:lcDrain 3s linear both}
html[dir=rtl] .lc-yes-bar{transform-origin:100% 50%}
@keyframes lcDrain{to{transform:scaleX(1)}}
.lc-ok.counting .lc-btn:not(.lc-yes):not(.lc-cancel){opacity:.5}
/* the message on the card has its own scroll when it's long, so the choices under it always fit */
.lc-ok .lc-body{max-height:26vh;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.lc-cons b{color:var(--ink-1);font-weight:600}
.lc-say{display:flex;align-items:center;gap:8px;margin:12px 0 0;font-size:13.5px;color:var(--ink-3)}
.lc-say[hidden]{display:none}
.lc-ok.counting .lc-say{visibility:hidden} /* (during the countdown the hint has done its job) */
.lc-in{width:100%;margin:0;padding:8px 10px;border-radius:10px;background:#0d0f1b;color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2);font:inherit;font-size:15px;line-height:1.5}
.lc-in:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.lc-area{margin-top:12px;resize:vertical;min-height:140px}
@media (hover:hover){.lc-btn:not(.lc-yes):not(:disabled):hover{background:rgba(246,239,230,.06)}.lc-btn.lc-yes:not(:disabled):hover{background:#f8d184}}
@media (max-width:700px){
  /* the gold button on its own row; Edit and Save side by side; Not now as a quiet row under them */
  .lc-ok-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
  .lc-ok-acts .lc-yes,.lc-ok-acts .lc-cancel,.lc-ok-acts .lc-q{grid-column:1/-1}
  .lc-ok-acts .lc-btn:not(.lc-yes):not(.lc-cancel):not(.lc-q){height:auto;min-height:44px;padding:6px 8px;font-size:14.5px;white-space:normal;text-align:center;line-height:1.2}
  .lc-ok-acts .lc-q{height:40px}
  .lc-ok .lc-body{max-height:14svh}
  /* what's on the desk stays above the controls that sit on it */
  .lcall.vc .lc-desk-in{padding-bottom:16px;max-height:calc(var(--desk-clip-h,100%) - var(--desk-y,0px) - var(--ctl-room,100px))}
  .lc-cons{font-size:13.5px;margin-top:10px;padding:10px 12px}
  .lc-say{margin-top:10px;font-size:13px}
}
@media (prefers-reduced-motion:reduce){.lc-ok{animation:none}.lc-yes-bar{animation:none;transform:scaleX(.5)}}
/* ---------- the free setup call (public/js/videocall.js setup mode, public/js/setupcall.js) ---------- */
.lcall.sc-mode{grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr);--D:clamp(180px,min(calc(100vh - 580px),34vw),380px)}
.lcall.sc-mode .lc-self{display:none}
.lcall.sc-mode .lc-stage{gap:18px}
.sc-ic{flex:none}
.sc-person{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 16px;border-radius:999px;background:rgba(10,11,22,.72);box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink-2);font-size:14px;white-space:nowrap;transition:transform .16s var(--e-out),color .2s ease,box-shadow .2s ease}
.sc-person:active{transform:scale(.97)}
.sc-person-s{display:none}
@media (hover:hover){.sc-person:hover{color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2)}}
.sc-person:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* three stars across the top: done ones glow pearl, the one she's on is gold */
.sc-path{position:relative;z-index:3;list-style:none;margin:10px auto 0;padding:0;display:flex;justify-content:center}
.sc-st{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;width:172px;text-align:center}
.sc-st::after{content:"";position:absolute;top:6px;inset-inline-start:calc(50% + 10px);width:calc(100% - 20px);height:1px;background:var(--hair-2)}
.sc-st:last-child::after{display:none}
.sc-st.done::after{background:linear-gradient(90deg,rgba(255,243,230,.7),rgba(245,198,107,.55))}
html[dir=rtl] .sc-st.done::after{background:linear-gradient(-90deg,rgba(255,243,230,.7),rgba(245,198,107,.55))}
.sc-dot{position:relative;z-index:1;width:13px;height:13px;border-radius:50%;background:#2a2c38;box-shadow:inset 0 0 0 1px var(--hair-2);transition:background-color .3s var(--e-out),box-shadow .3s var(--e-out),transform .3s var(--e-out)}
.sc-st.done .sc-dot{background:#fff3e6;box-shadow:0 0 12px rgba(255,243,230,.85),0 0 24px rgba(92,225,255,.45)}
.sc-st.now .sc-dot{background:var(--gold);box-shadow:0 0 0 5px rgba(245,198,107,.16),0 0 16px rgba(245,198,107,.7)}
.sc-st b{font-size:14px;font-weight:500;color:var(--ink-2);line-height:1.3}
.sc-st.done b{color:var(--ink-1)}.sc-st.now b{color:var(--gold)}
.sc-st small{min-height:1.2em;margin-top:-3px;font-size:13px;color:#6ff2c4;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* the one thing to do now, on a solid card under the captions */
.sc-act[hidden]{display:none}
.sc-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:18px;background:var(--lc-surface);box-shadow:inset 0 0 0 1px rgba(245,198,107,.36);animation:scIn .24s var(--e-out) both}
.sc-card.done{box-shadow:inset 0 0 0 1px rgba(111,242,196,.36)}
.sc-card.sc-noticed{box-shadow:inset 0 0 0 1px rgba(169,139,255,.4);align-items:flex-start}
@keyframes scIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.sc-g{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;background:#fff;color:#4285f4;font:700 20px/1 Arial,sans-serif}
.sc-g-o{background:rgba(92,225,255,.1);color:var(--ice)}
.sc-g-ok{background:rgba(111,242,196,.14);color:#6ff2c4;border-radius:50%}
.sc-g-v{background:rgba(169,139,255,.14);color:var(--violet);border-radius:50%}
.sc-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:start}
.sc-tx b{font-size:16px;font-weight:600;color:var(--ink-1)}
.sc-tx small{font-size:14px;line-height:1.45;color:var(--ink-2)}
.sc-mail{align-self:flex-start;unicode-bidi:isolate}
.sc-noticed .sc-tx small{font-size:15px;color:var(--ink-1)}
.sc-acts{display:flex;align-items:center;gap:6px;flex:none}
.sc-btn{min-height:44px;padding:0 20px;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(245,198,107,.6);color:var(--gold);font-size:15px;font-weight:600;white-space:nowrap;transition:transform .16s var(--e-out),background-color .2s ease}
.sc-btn:active:not(:disabled){transform:scale(.97)}.sc-btn:disabled{opacity:.6}
.sc-later{min-height:44px;padding:0 10px;color:var(--ink-3);font-size:14px}
@media (hover:hover){.sc-btn:hover:not(:disabled){background:rgba(245,198,107,.08)}.sc-later:hover{color:var(--ink-2)}}
:is(.sc-btn,.sc-later):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (max-width:700px){
  .sc-person{min-height:36px;padding:0 12px;font-size:13.5px}
  .lcall.sc-mode .lc-state-t,.lcall.sc-mode .lc-clock span{display:none}
  .lcall.sc-mode .lc-top{gap:10px}
  .sc-person-l{display:none}.sc-person-s{display:inline}
  .lcall.sc-mode .lc-stage{padding-top:18px;justify-content:center}
  .lcall.sc-mode[data-phase=call] .lc-lens-wrap{transform:none}
  .lcall.sc-mode{--D:max(150px,min(64vw,calc(100svh - 560px),300px))}
  .sc-path{margin-top:8px}
  .sc-st{width:112px;gap:6px}
  .sc-st b{font-size:13px;line-height:1.2;position:relative;z-index:2}
  .sc-card{flex-wrap:wrap;padding:12px 14px;gap:12px}
  .sc-acts{width:100%}.sc-acts .sc-btn{flex:1}
  .lcall.sc-mode .lc-words{min-height:0}
}
@media (prefers-reduced-motion:reduce){.sc-card{animation:none}.sc-dot{transition:none}}

/* Katie's booking window, inside NOVA (above a call, if one is on) */
.scb{position:fixed;inset:0;z-index:70;display:grid;place-items:center;color:#f6efe6;color-scheme:dark;opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.scb.on{opacity:1}
.scb-scrim{position:absolute;inset:0;background:rgba(3,4,10,.62)}
.scb-win{position:relative;display:flex;width:min(1120px,calc(100vw - 48px));height:min(720px,calc(100svh - 48px));background:#080a14;border-radius:28px;box-shadow:0 0 0 1px rgba(246,239,230,.2),0 30px 90px rgba(0,0,0,.65);overflow:hidden;transform:translateY(8px) scale(.985);transition:transform .24s cubic-bezier(.23,1,.32,1)}
.scb.on .scb-win{transform:none}
.scb.still,.scb.still .scb-win{transition:none}
.scb-x{position:absolute;top:12px;inset-inline-end:12px;z-index:2;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.8);background:#080a14;box-shadow:inset 0 0 0 1px rgba(246,239,230,.12);transition:transform .16s cubic-bezier(.23,1,.32,1)}
.scb-x:active{transform:scale(.95)}
.scb-side{width:360px;flex:none;display:flex;flex-direction:column;padding:28px 26px 22px;border-inline-end:1px solid rgba(246,239,230,.1);overflow-y:auto}
.scb-mono{width:64px;height:64px;flex:none;border-radius:50%;display:grid;place-items:center;font:400 30px/1 var(--display);color:var(--gold);background:radial-gradient(circle at 35% 30%,#2b2516,#12131c);box-shadow:inset 0 0 0 1px rgba(245,198,107,.45)}
.scb-side h2{margin:16px 0 8px;font:400 30px/1.1 var(--display);letter-spacing:-.01em;text-wrap:balance}
.scb-lead{margin:0 0 14px;font-size:15.5px;line-height:1.5;color:rgba(246,239,230,.74)}
.scb-note{display:flex;gap:10px;margin:0 0 14px;padding:11px 13px;border-radius:14px;background:rgba(92,225,255,.06);box-shadow:inset 0 0 0 1px rgba(92,225,255,.25);font-size:14.5px;line-height:1.5}
.scb-note .sc-ic{color:var(--ice);margin-top:2px}
.scb-note-ph{display:none}
.scb-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.scb-rows li{display:flex;gap:12px;align-items:flex-start;padding:8px 0;font-size:15px;line-height:1.45}
.scb-rows .sc-ic{color:var(--ice);margin-top:1px}
.scb-grow{flex:1;min-height:12px}
.scb-keep{min-height:50px;width:100%;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(246,239,230,.2);font-size:16px;color:#f6efe6;transition:transform .16s cubic-bezier(.23,1,.32,1),box-shadow .2s ease}
.scb-keep:active{transform:scale(.98)}
.scb-fine{margin:10px 0 0;font-size:13.5px;line-height:1.45;color:rgba(246,239,230,.6)}
.scb-frame{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px;padding:14px}
.scb-secure{display:flex;align-items:center;gap:8px;min-height:44px;margin:0;padding-inline-end:56px;font-size:13.5px;color:rgba(246,239,230,.6)}
.scb-secure i{width:6px;height:6px;flex:none;border-radius:50%;background:#6ff2c4}
.scb-framebox{position:relative;flex:1;min-height:0;border-radius:16px;overflow:hidden;background:#0f1120;box-shadow:inset 0 0 0 1px rgba(246,239,230,.1)}
.scb-framebox.in{background:#fff}
.scb-wait{position:absolute;inset:0;display:grid;place-items:center;margin:0;font-size:15px;color:rgba(246,239,230,.6)}
.scb-if{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;transition:opacity .2s ease}
.scb-framebox.in .scb-if{opacity:1}
.scb-fall{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;background:#0f1120}
.scb-fall-t{margin:0;font-size:18px;font-weight:500;max-width:34ch}
.scb-fall-s{margin:0 0 8px;font-size:15px;line-height:1.5;color:rgba(246,239,230,.72);max-width:40ch}
.scb-open{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 26px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:16px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.scb-open:active{transform:scale(.97)}
.scb-alt{align-self:center;min-height:36px;padding:0 6px;font-size:13.5px;color:rgba(246,239,230,.6);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(246,239,230,.25)}
@media (hover:hover){.scb-x:hover{color:#f6efe6}.scb-keep:hover{box-shadow:inset 0 0 0 1px rgba(246,239,230,.4)}.scb-open:hover{background:#f8d184}.scb-alt:hover{color:#f6efe6}}
:is(.scb-x,.scb-keep,.scb-open,.scb-alt):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (max-width:700px){
  .scb{place-items:end stretch}
  .scb-win{width:100%;height:calc(100svh - 32px);flex-direction:column;border-radius:24px 24px 0 0;transform:translateY(24px)}
  .scb-side{width:auto;flex:none;padding:16px 16px 10px;padding-inline-end:64px;border:0;border-bottom:1px solid rgba(246,239,230,.1);overflow:visible}
  .scb-side h2{font-size:24px;margin:0 0 4px}
  .scb-lead{font-size:14.5px;margin:0}
  .scb-side :is(.scb-mono,.scb-rows,.scb-grow,.scb-keep,.scb-note){display:none}
  .scb-fine{margin-top:6px}
  .scb-note-ph{display:flex;margin:0}
  .scb-frame{padding:10px 10px max(10px,env(safe-area-inset-bottom))}
  .scb-secure{min-height:0;padding:0 4px}
}

/* home: "You're booked with Katie", or one quiet offer of setup help */
.scbk{position:absolute;z-index:6;left:0;right:0;bottom:calc(112px + env(safe-area-inset-bottom));margin:0 auto;width:min(520px,calc(100% - 24px));padding:20px 20px 18px;border-radius:24px;background:#080a14;box-shadow:0 0 0 1px rgba(246,239,230,.1),0 24px 60px -24px rgba(0,0,0,.9);color:#f6efe6;animation:scIn .24s cubic-bezier(.23,1,.32,1) both}
body:has(.fr,.lcall,.scb,#sheet.on,.overlay:not([hidden]),#stage.first-run,#stage.fr-quiet) .scbk{display:none}
.scbk[hidden]{display:none}
/* the card opened from its line: what's under it on home steps back while it's open */
#brief>:not(.scbk-wrap){transition:opacity .2s ease}
#stage:has(>.scbk:not([hidden])) #brief>:not(.scbk-wrap){opacity:0;pointer-events:none}
.scbk-wrap{margin:0 0 12px;text-align:start}
body:has(.fr,.lcall,.scb,#sheet.on,.overlay:not([hidden])) .scbk-wrap{display:none}
.scbk-line{display:flex;justify-content:center;align-items:center;gap:4px;max-width:100%}
.scbk-chip{flex:0 1 auto;min-width:0;display:inline-flex;align-items:center;gap:10px;min-height:44px;max-width:100%;padding:0 14px 0 6px;border-radius:999px;background:rgba(8,10,20,.86);box-shadow:inset 0 0 0 1px rgba(111,242,196,.32);color:#f6efe6;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),box-shadow .2s ease}
.scbk-chip:has(.sc-star){box-shadow:inset 0 0 0 1px rgba(245,198,107,.36)}
.scbk-chip .scbk-ok{width:32px;height:32px}
.scbk-chip-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scbk-chip i{font-style:normal;color:rgba(246,239,230,.5);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.scbk-chip[aria-expanded=true] i{transform:rotate(90deg)}
html[dir=rtl] .scbk-chip i{transform:scaleX(-1)}html[dir=rtl] .scbk-chip[aria-expanded=true] i{transform:rotate(90deg)}
.scbk-chip:active{transform:scale(.98)}
.scbk-chip-x{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.5)}
@media (hover:hover){.scbk-chip:hover{box-shadow:inset 0 0 0 1px rgba(111,242,196,.55)}.scbk-chip-x:hover{color:#f6efe6}}
:is(.scbk-chip,.scbk-chip-x):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.scbk-x{position:absolute;top:8px;inset-inline-end:8px;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.55);transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease}
.scbk-x:active{transform:scale(.95)}
.scbk-hd{display:flex;align-items:center;gap:12px;padding-inline-end:40px}
.scbk-ok{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;background:rgba(111,242,196,.14);color:#6ff2c4}
.scbk-ok.sc-star{background:rgba(245,198,107,.12);color:var(--gold)}
.scbk h3{margin:0;font-size:20px;font-weight:500;line-height:1.3}
.scbk-when{margin:14px 0 4px;font:400 28px/1.15 var(--display)}
.scbk-meta{margin:10px 0 0;font-size:15px;line-height:1.5;color:rgba(246,239,230,.74)}
.scbk-when+.scbk-meta{margin-top:4px}
.scbk-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.scbk-btn{min-height:46px;padding:0 20px;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(246,239,230,.2);font-size:15px;color:#f6efe6;transition:transform .16s cubic-bezier(.23,1,.32,1),box-shadow .2s ease}
.scbk-btn.gold{background:var(--gold);color:#1d1408;font-weight:600;box-shadow:none}
.scbk-btn:active:not(:disabled){transform:scale(.97)}.scbk-btn:disabled{opacity:.5}
.scbk-kt{display:flex;gap:10px;margin:14px 0 0;padding-top:14px;border-top:1px solid rgba(246,239,230,.1);font-size:14.5px;line-height:1.5;color:rgba(246,239,230,.74)}
.scbk-kt .sc-ic{color:var(--violet);margin-top:1px}
@media (hover:hover){.scbk-x:hover{color:#f6efe6}.scbk-btn:not(.gold):not(:disabled):hover{box-shadow:inset 0 0 0 1px rgba(246,239,230,.4)}.scbk-btn.gold:hover{background:#f8d184}}
:is(.scbk-x,.scbk-btn):focus-visible{outline:2px solid var(--gold);outline-offset:3px}
/* the open card sits where the big question is: the question steps back instead of showing through */
#ask,.sv-ask{transition:opacity .2s ease}
/* one greeting on home (Katie, Oct 28 2026): the headline carries NOVA's line for the moment (public/js/greeting.js);
   the small gold hello shows only beside a conversation, and the status line only with live state */
.greet:not(.talking)>.hello{display:none}
#greet:not(.talking) .status.st-idle{visibility:hidden}
#ask{text-wrap:balance}
#ask.hl-out,.sv-ask.hl-out{opacity:0;transition-duration:.12s}
body:has(#stage>.scbk:not([hidden])) #ask{opacity:0}
@media (max-width:700px){body:has(#stage>.scbk:not([hidden])) .sv-ask{opacity:0}}
@media (max-width:700px){html:not(.simple) .scbk{bottom:calc(178px + env(safe-area-inset-bottom))}.scbk{bottom:calc(92px + env(safe-area-inset-bottom));padding:18px 16px 16px}.scbk-row{flex-direction:column}.scbk-btn{width:100%}.scbk-when{font-size:25px}}
/* Simple view: centred on the conversation pane, beside the sidebar */
@media (min-width:901px){#stage.simple>.scbk{left:var(--sv-w);right:0}html[dir=rtl] #stage.simple>.scbk{left:0;right:var(--sv-w)}}
@media (prefers-reduced-motion:reduce){.scbk{animation:none}.scb,.scb-win{transition:none}}

/* first run: the call as the easy default */
.fr-face{width:48px;height:48px;flex:none;border-radius:50%;background:#10121f center 32%/170% no-repeat;box-shadow:0 0 0 2px rgba(245,198,107,.6),0 0 16px rgba(92,225,255,.22)}
.fr-face-lens{background:radial-gradient(circle at 50% 50%,#fff3e6 0 7%,rgba(245,198,107,.85) 9% 15%,rgba(92,225,255,.35) 28%,rgba(16,18,31,1) 62%)}
.fr-free{display:inline-block;margin-inline-start:8px;padding:2px 9px;border-radius:999px;background:rgba(111,242,196,.12);color:#6ff2c4;font-size:13px;font-weight:600;vertical-align:2px}
.fr-callopt .fr-ot b{display:block}
.fr-links{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 18px}
.fr-link-q{min-height:44px;padding:0 4px;font-size:15px;color:rgba(246,239,230,.74);text-decoration:underline;text-decoration-color:rgba(246,239,230,.25);text-underline-offset:4px}
@media (hover:hover){.fr-link-q:hover{color:#f6efe6}}
.fr-link-q:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.sc-help-note{margin:4px 0 8px;font-size:14px;line-height:1.5;color:var(--ink-3)}
.sc-offer .cv-ok-acts{flex-wrap:wrap}
.talk:active{transform:scale(.97)}
.talk-orb{position:relative;display:inline-flex;align-items:center;gap:2.5px;height:16px}
.talk-orb i{display:block;width:3px;height:7px;border-radius:2px;background:currentColor}
.talk-orb i:nth-of-type(2){height:14px}
.talk-orb.on i{animation:talkWave 1.1s cubic-bezier(.45,0,.55,1) infinite}
.talk-orb.on i:nth-of-type(2){animation-delay:.18s}.talk-orb.on i:nth-of-type(3){animation-delay:.36s}
/* on the phone the bars follow her voice instead of waving on their own */
.talk-orb.on.lv i{animation:none;transform:scaleY(calc(.45 + var(--lv,0) * 1.1));transition:transform .12s cubic-bezier(.23,1,.32,1)}
.talk-orb.on.lv i:nth-of-type(2){transform:scaleY(calc(.5 + var(--lv,0) * .9))}
@keyframes talkWave{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1.15)}}
.field-wrap{flex:1;min-width:0;display:flex;align-items:center;gap:4px;padding-left:4px;position:relative}
/* dictating (Nov 9, Katie): quiet and neutral, nothing blue or glowing. Her voice runs across the bar as a thin gray line
   (dictwave.js: dots when she's quiet, bars that grow as she speaks louder), the time, then ✕ to drop it and ✓ when she's done */
.dict-bar{position:absolute;inset:0;z-index:2;display:flex;align-items:center;gap:8px;padding:0 4px 0 10px;border-radius:999px;background:var(--h-0b0d16,#0b0d16)}
.dict-bar[hidden]{display:none}
.dict-wave{position:static;inset:auto;display:block;flex:1;min-width:0;width:auto;height:26px;color:rgba(var(--k-246-239-230,246,239,230),.62)}
.dict-words{display:none;flex:1;min-width:0;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left}
.dict-bar.has-words .dict-words{display:block}
.dict-time{flex:none;font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--ink-3);padding-inline-end:4px}
.dict-x,.dict-ok{flex:none;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.08);transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.dict-ok{background:rgba(var(--k-246-239-230,246,239,230),.14)}
@media (hover:hover){.dict-x:hover{background:rgba(var(--k-246-239-230,246,239,230),.13)}.dict-ok:hover{background:rgba(var(--k-246-239-230,246,239,230),.2)}}
.dict-x:active,.dict-ok:active{transform:scale(.95)}
@media (pointer:coarse){.dict-x,.dict-ok{width:40px;height:40px}}
.dict-x:focus-visible,.dict-ok:focus-visible{outline:2px solid rgba(var(--k-246-239-230,246,239,230),.6);outline-offset:2px}
.dock.dictating .mic:not(.att-btn){visibility:hidden}
/* Oct 16: while she dictates, her words fill the box itself as she speaks (the box grows with them), with the bar just
   below: the dot and her voice, the time, ✕ to drop it and ✓ when she's done */
.dock.dictating{align-items:flex-end;border-radius:24px}
.dock.dictating .field-wrap{flex-wrap:wrap;row-gap:4px;align-items:stretch}
.dock.dictating .field{flex:1 1 100%;order:1}
.dock.dictating .dict-bar{position:relative;inset:auto;order:2;flex:1 1 100%;min-height:42px}
.dock.dictating .field-wrap>.plus-btn,.dock.dictating .field-wrap>.mic:not(.att-btn){display:none}
.dock.dictating .dict-words{display:none!important}
.dock.dictating .field[readonly]{cursor:default}
/* her words arrive as a draft: muted gray italics while she speaks, ordinary text once she taps ✓ */
.dock.dictating .field{color:var(--ink-2);font-style:italic}
/* the mic inside the box: dictation (talk to text), which fills the box for her to edit and send */
.mic{position:relative;width:38px;height:38px;border-radius:50%;flex:none;color:var(--ink-2);display:grid;place-items:center;transition:transform .15s,color .2s,background .3s}
.mic:hover{color:var(--ink-1)}
.mic:active{transform:scale(.94)}
.talk-live{display:none;flex:1;align-items:center;gap:10px;padding-left:2px;min-width:0;color:var(--ice)}
.talk-state{flex:1;min-width:0;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* in a conversation: the orb is NOVA's ear (the bars follow her voice, never a canned wave), the ring fills while NOVA
   waits out her pause, Send goes now, ✕ ends (anything half-said waits in the box) */
.talk-live .talk-orb{flex:none;width:40px;height:40px;justify-content:center;border-radius:50%;background:rgba(var(--k-92-225-255,92,225,255),.08);transition:background .25s cubic-bezier(.23,1,.32,1)}
.talk-live .talk-orb i{animation:none;transform:scaleY(calc(.32 + var(--lv,0) * 1.3));transition:transform .1s cubic-bezier(.23,1,.32,1)}
.talk-live .talk-orb i:nth-of-type(2){transform:scaleY(calc(.42 + var(--lv,0) * 1.15))}
.talk-live .talk-orb i:nth-of-type(3){transform:scaleY(calc(.32 + var(--lv,0) * .95))}
.talk-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible;pointer-events:none}
.talk-ring circle{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0;transition:opacity .2s}
.dock[data-talk="listening"] .talk-orb{box-shadow:0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.45);animation:earOpen 2.4s ease-in-out infinite}
.dock[data-talk="hearing"] .talk-orb,.dock[data-talk="hush"] .talk-orb{background:rgba(var(--k-92-225-255,92,225,255),.2);box-shadow:0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.6)}
.dock[data-talk="hush"] .talk-ring circle{opacity:1}
.dock:is([data-talk="opening"],[data-talk="connecting"],[data-talk="heard"],[data-talk="thinking"],[data-talk="working"]) .talk-orb i{animation:talkWave 1.1s cubic-bezier(.45,0,.55,1) infinite}
.dock:is([data-talk="opening"],[data-talk="connecting"],[data-talk="heard"],[data-talk="thinking"],[data-talk="working"]) .talk-orb i:nth-of-type(2){animation-delay:.18s}
.dock:is([data-talk="opening"],[data-talk="connecting"],[data-talk="heard"],[data-talk="thinking"],[data-talk="working"]) .talk-orb i:nth-of-type(3){animation-delay:.36s}
.dock[data-talk="speaking"] .talk-orb{background:rgba(var(--k-245-198-107,245,198,107),.12)}
@keyframes earOpen{0%,100%{box-shadow:0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.3)}50%{box-shadow:0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.7),0 0 14px rgba(var(--k-92-225-255,92,225,255),.25)}}
.talk-go{flex:none;height:40px;padding:0 18px;border-radius:999px;background:var(--ice);color:var(--h-07131a,#07131a);font-size:13.5px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),background .2s}
.talk-go:active{transform:scale(.97)}
.dock[data-talk="speaking"] .talk-go{background:transparent;color:var(--ink-1);box-shadow:inset 0 0 0 1px rgba(var(--k-245-198-107,245,198,107),.6)}
.talk-end{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hair-2);transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s,border-color .2s}
.talk-end:hover{color:var(--ink-1);border-color:rgba(var(--k-255-122-182,255,122,182),.5)}
.talk-end:active{transform:scale(.95)}
.dock-hint.in-talk b{color:var(--ink-1)}
.dock.in-talk{border-color:rgba(var(--k-92-225-255,92,225,255),.4)}
.dock.in-talk .talk,.dock.in-talk .field-wrap,.dock.in-talk .send{display:none}
.dock.in-talk .talk-live{display:flex}
.dock.in-talk.speaking .talk-live{color:var(--gold)}
.dock-hint{position:absolute;left:50%;transform:translateX(-50%);width:min(620px,92vw);margin:0;text-align:center;font-size:11.5px;color:var(--ink-3);z-index:5;pointer-events:none}
.dock-hint b{font-weight:500;color:var(--ink-2)}
/* "· Space to talk": computers with Space to talk on (public/js/spacetalk.js) */
.dock-hint .dh-space{display:none}html.space-talk .dock-hint .dh-space{display:inline}
.mic::before,.mic::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:1px solid transparent;pointer-events:none}

@keyframes ring{from{transform:scale(.9);opacity:1}to{transform:scale(1.6);opacity:0}}
.field{flex:1;min-width:0;background:transparent;border:0;outline:0;font-size:15px;color:var(--ink-1);padding:0 6px}
/* the box grows with what she writes (Oct 16: "see several lines instead of scrolling in one place"), up to about nine lines, then scrolls inside */
textarea.field{display:block;resize:none;font:inherit;font-size:15px;line-height:1.45;padding:9px 6px;margin:0;max-height:min(38vh,13.2em);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--hair-2) transparent}
/* smart dictation's settle (public/js/dictsettle.js): the tidied words come up from a little dimmer, and a layer exactly
   over the text lights the words that changed, then fades. Opacity only, under 300 ms each way. */
textarea.field{transition:opacity 220ms cubic-bezier(.23,1,.32,1)}
textarea.field.ds-fresh{opacity:.6;transition:none}
.dict-settle{position:absolute;z-index:1;pointer-events:none;overflow:hidden;box-sizing:border-box;border-style:solid;border-color:transparent;color:transparent;opacity:0;transition:opacity 280ms cubic-bezier(.23,1,.32,1)}
.dict-settle.on{opacity:1;transition-duration:140ms}
.dict-settle .ds-inner{white-space:pre-wrap;overflow-wrap:break-word}
.dict-settle mark{color:transparent;background:rgba(var(--k-246-239-230,246,239,230),.12);border-radius:4px;box-shadow:0 0 0 2px rgba(var(--k-246-239-230,246,239,230),.12)}
@media (prefers-reduced-motion:reduce){textarea.field,.dict-settle{transition:none}}
.dock.tall{align-items:flex-end;border-radius:24px}
.dock.tall,.dock.dictating{background:rgba(var(--k-8-10-22,8,10,22),.97);box-shadow:0 -18px 40px -24px rgba(var(--k-0-0-0,0,0,0),.7)}
/* on a phone, once she's typing, Talk steps aside so the words get the width (it's back when the box is empty) */
@media (max-width:760px){.dock:not(.in-talk):has(.field:not(:placeholder-shown)) .talk{display:none}}
.dock.tall .field-wrap{align-items:flex-end}
.dock.tall .talk{align-self:flex-end}
.field::placeholder{color:var(--ink-3)}
/* the invitation stays on one line, however narrow the box (a section's is longer than the home screen's) */
.dock .field::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
textarea.field::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-text-size] textarea.field::placeholder{font-size:16px}
.send{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hair);transition:color .2s,border-color .2s}
.send:hover{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
/* while NOVA answers: an empty box makes the arrow a stop square; anything she types goes in at once and redirects it */
.send{position:relative;transition:color .2s,border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.send:active{transform:scale(.95)}
.send.stop svg{opacity:0}
.send.stop::after{content:"";position:absolute;inset:0;margin:auto;width:11px;height:11px;border-radius:2.5px;background:currentColor}
.send.stop{color:var(--ink-1);border-color:var(--hair-2)}
.dock.answering:not(.in-talk) .send{display:grid!important}
.dock.answering .vcall-btn{display:none!important}
/* The thinking glow (public/js/thinkglow.js; DESIGN.md › Motion): a thin light circles a composer's edge, and NOVA's
   "writing…" line, only while NOVA works on a reply. Ice → blue → violet while she thinks; a gold sweep while she acts.
   One masked ring and one rotating pseudo-element: the spin is a transform (compositor only, no layout, no repaint),
   the fades are opacity (260ms ease-out). Off at rest (display:none once faded), paused when the tab is hidden. */
:where(.nglow-host){position:relative;isolation:isolate}
.nglow{--gk:92,225,255;--g1:var(--ice);--g2:color-mix(in oklab,var(--ice) 42%,var(--violet));--g3:var(--violet);position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:0;opacity:0;transition:opacity .26s cubic-bezier(.23,1,.32,1)}
.nglow-host[data-glow="act"]>.nglow{--gk:245,198,107;--g1:var(--gold);--g2:var(--pearl);--g3:var(--gold)}
.nglow-host.glowing>.nglow{opacity:1}
.nglow-host.nglow-rest>.nglow{display:none}
.nglow::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 20px -6px rgba(var(--gk),.5),0 0 1px rgba(var(--gk),.3)}
.nglow>i{position:absolute;inset:0;border-radius:inherit;padding:1.25px;overflow:hidden;background:rgba(var(--gk),.14);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.nglow>i::before{content:"";position:absolute;left:50%;top:50%;width:130%;aspect-ratio:1;background:conic-gradient(from 0deg,transparent 0turn,transparent .44turn,rgba(var(--gk),0) .5turn,var(--g3) .66turn,var(--g2) .82turn,var(--g1) .96turn,transparent 1turn);transform:translate(-50%,-50%) rotate(0turn);animation:nglowSpin 3s linear infinite;will-change:transform}
.nglow-host[data-glow="act"]>.nglow>i::before{background:conic-gradient(from 0deg,transparent 0turn,transparent .5turn,rgba(var(--gk),0) .56turn,var(--g3) .8turn,var(--g2) .95turn,transparent 1turn)}
@keyframes nglowSpin{to{transform:translate(-50%,-50%) rotate(1turn)}}
/* Katie, Oct 31: no light travelling round the borders (the thinking pill and the talk bar). The soft, still glow stays. */
.nglow>i{display:none}
html[dir=rtl] .nglow>i{transform:scaleX(-1)}
html.nglow-hidden .nglow>i::before{animation-play-state:paused}
#dock.in-talk>.nglow{display:none}
@media (prefers-reduced-motion:reduce){
  .nglow>i::before{animation:none;transform:translate(-50%,-50%);background:linear-gradient(100deg,var(--g1),var(--g2) 55%,var(--g3));opacity:.75}
  .nglow-host[data-glow="act"]>.nglow>i::before{background:linear-gradient(100deg,var(--g1),var(--g2) 55%,var(--g3))}
}
/* no ring masks (very old browsers): a still, lit edge instead */
@supports not ((mask-composite:exclude) or (-webkit-mask-composite:xor)){
  .nglow>i{display:none}
  .nglow{box-shadow:inset 0 0 0 1px rgba(var(--gk),.6),0 0 18px -6px rgba(var(--gk),.5)}
  .nglow::before{display:none}
}
.turn-stopped{margin:10px 0 0;font-size:12px;color:var(--ink-3)}

/* the approval: a real dialog (UI laws ★5, Oct 17). When NOVA needs an OK before it acts, everything behind it steps back
   under a 70% night scrim and the card sits on a solid surface: centred on a computer, a bottom sheet on a phone. */
.ap-scrim{position:absolute;inset:0;z-index:10;background:rgba(3,4,10,.7);opacity:0;pointer-events:none;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
#stage:has(#approve.ap-open) .ap-scrim{opacity:1;pointer-events:auto}
#stage:has(#approve.ap-open) .rail{z-index:9} /* the left rail steps back under the scrim too */
.approve{position:absolute;z-index:11;left:50%!important;top:50%!important;right:auto!important;bottom:auto!important;width:min(440px,calc(100vw - 48px));max-height:calc(100dvh - 48px);overflow:auto;overscroll-behavior:contain;padding:20px 22px 20px;border-radius:22px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:var(--h-10121f,#10121f);box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);opacity:0;transform:translate(-50%,calc(-50% + 8px)) scale(.98)!important;transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .22s cubic-bezier(.23,1,.32,1);pointer-events:none;visibility:hidden}
.approve.ap-open{opacity:1;transform:translate(-50%,-50%)!important;pointer-events:auto;visibility:visible}
.approve:not(.ap-open){transition:opacity .16s ease-out,transform .16s ease-out,visibility 0s .16s}
.approve:focus{outline:none}
.approve .apd-head{position:absolute;top:8px;inset-inline-end:8px;display:flex;align-items:center;gap:6px}
.approve .count{font-size:13.5px;color:var(--ink-3);letter-spacing:0;font-variant-numeric:tabular-nums}
.approve .ap-x{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-3);transition:color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.approve .ap-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.approve .ap-x:active{transform:scale(.94)}
.approve .ap-x:focus-visible,.approve .row button:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
.approve h2{margin:4px 0 10px;padding-inline-end:40px;font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2;letter-spacing:-.01em;color:var(--ink-1)}
.approve h2:focus{outline:none}
.approve:has(#apCount:not(:empty)) h2{padding-inline-end:96px}
.approve .via{font-size:14.5px;color:var(--ink-2);margin-bottom:12px;line-height:1.4}
.approve .row{display:flex;gap:10px;margin-top:6px}
.approve .row button{flex:1;min-height:48px;padding:0 16px;border-radius:999px;font-size:15.5px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .15s}
.approve .row button:active{transform:scale(.97)}.approve .row button:disabled{opacity:.55}
.approve .yes{background:var(--gold);color:var(--h-1d1408,#1d1408)}
.approve .no{border:1px solid var(--hair-2);color:var(--ink-1)}
@media (max-width:760px){
  .approve{left:0!important;right:0!important;top:auto!important;bottom:0!important;width:auto;max-height:calc(100dvh - 56px);border-radius:28px 28px 0 0;border-bottom:0;padding:16px 18px calc(18px + env(safe-area-inset-bottom,0px));transform:translateY(28px)!important}
  .approve.ap-open{transform:none!important}
  .approve .apd-head{top:6px;inset-inline-end:6px}
  .approve h2{font-size:22px}
}
@media (prefers-reduced-motion:reduce){.ap-scrim,.approve,.approve:not(.ap-open){transition:none!important}.approve{transform:translate(-50%,-50%)!important}}
@media (prefers-reduced-motion:reduce) and (max-width:760px){.approve{transform:none!important}}
[data-state="approval"] .anchor{opacity:0 !important}

.glance{position:absolute;z-index:5;right:14px;top:80px;width:300px;padding:18px 20px 20px;border-radius:22px;background:rgba(var(--k-26-29-44,26,29,44),.9);border:1px solid rgba(var(--k-246-239-230,246,239,230),.13);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 18px 50px rgba(var(--k-0-0-0,0,0,0),.45);max-height:calc(100% - 160px);overflow:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:12px;opacity:0;transform:translateX(10px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.glance::-webkit-scrollbar{display:none}
/* a reminder card in the bottom right: the glance stops 16px above it (scrolls inside) instead of running under it.
   The card's real height comes from tasks.js (--remind-h): a long reminder with notes is taller than a short one.
   80px is the glance's top, 120px the card's bottom. */
@media (min-width:761px){#stage:has(.remind.on) .glance{max-height:max(140px,calc(100% - 216px - var(--remind-h,240px)))}}
.glance.on{opacity:1;transform:none}
.glance[hidden]{display:none}
[data-state="approval"] .glance,#stage.in-life .glance,#stage.in-overview .glance{opacity:0!important;pointer-events:none!important}
#greet.talking ~ .glance{opacity:.28}#greet.talking ~ .glance:hover{opacity:1}
/* today's focus quest */
.qst{--c:245,198,107;position:relative;display:flex;flex-direction:column;gap:7px;padding:14px 15px 13px;border-radius:16px;border:1px solid rgba(var(--c),.32);background:radial-gradient(120% 140% at 100% 0%,rgba(var(--c),.12),rgba(var(--c),0) 60%),rgba(var(--k-246-239-230,246,239,230),.03);text-align:start;transition:border-color .3s,background .3s}
.qst.done{--c:111,242,196}
.qst.pop{animation:qstPop .5s cubic-bezier(.23,1,.32,1)}
@keyframes qstPop{0%{transform:scale(1)}40%{transform:scale(1.02)}100%{transform:scale(1)}}
.qst-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qst-k{font-size:11px;letter-spacing:.16em;color:rgb(var(--c));font-weight:600}
.qst-pts{font-size:11.5px;color:var(--ink-2);font-variant-numeric:tabular-nums;padding:2px 8px;border-radius:999px;border:1px solid var(--hair-2)}
.qst-pts{margin-left:auto;white-space:nowrap;flex:none}
.qst-x{flex:none;width:30px;height:30px;margin:-6px -8px -6px 0;display:grid;place-items:center;border:0;border-radius:999px;background:none;color:var(--ink-3);font-size:18px;line-height:1;transition:color .15s,background .15s}.qst-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.qst-x:active{transform:scale(.94)}
.qst.gone{opacity:0;transform:translateY(-4px);transition:opacity .2s var(--ease),transform .2s var(--ease)}
.qst-where{display:flex;align-items:baseline;gap:8px;align-self:flex-start;padding:0;background:none;border:0;color:var(--ink-3);font:inherit;font-size:12px;cursor:pointer}
.qst-where b{font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}
.qst-where:hover span{color:var(--ink-1)}
.qst-t{margin:0;font-family:var(--display);font-size:20px;line-height:1.25;color:var(--ink-1)}
.qst.done .qst-t{color:var(--ink-2);text-decoration:line-through;text-decoration-color:rgba(var(--k-111-242-196,111,242,196),.5)}
.qst-why{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.qst-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:3px}
.qst-go,.qst-done,.qst-swap{padding:7px 12px;border-radius:999px;font:inherit;font-size:12.5px;cursor:pointer;transition:transform .16s ease-out,background .15s}
.qst-go:active,.qst-done:active,.qst-swap:active{transform:scale(.97)}
.qst-go{background:var(--ink-1);color:var(--h-0b0c12,#0b0c12);border:0;font-weight:500}
.qst-done{background:rgba(var(--c),.14);color:rgb(var(--c));border:1px solid rgba(var(--c),.4)}
.qst-done:disabled{opacity:.5}
.qst-swap{background:none;border:0;color:var(--ink-3);padding:7px 4px}
.qst-swap:hover{color:var(--ink-1)}
.qst-earned{font-size:13px;line-height:1.45;color:var(--mint)}
.qst.compact{padding:12px 13px 11px}.qst.compact .qst-t{font-size:17px}
/* Focus stack (public/js/quest.js): three marks for today, "+15 · next up" after a win, and the next ones under it */
.qst-prog{display:inline-flex;align-items:center;gap:4px;margin-inline-start:auto}.qst-prog i{width:6px;height:6px;border-radius:50%;background:rgba(var(--k-246-239-230,246,239,230),.16);transition:background .3s}.qst-prog i.on{background:rgb(var(--c))}.qst-prog b{font-size:11.5px;font-weight:600;color:rgb(var(--c));font-variant-numeric:tabular-nums}
.qst-prog+.qst-pts{margin-inline-start:0}
.qst-gain{position:absolute;inset-inline-end:15px;top:40px;font-size:12px;font-weight:600;color:var(--mint);white-space:nowrap;pointer-events:none;animation:qstGain 1.5s cubic-bezier(.23,1,.32,1) both}
@keyframes qstGain{0%{opacity:0;transform:translateY(6px)}15%{opacity:1;transform:none}75%{opacity:1;transform:translateY(-2px)}100%{opacity:0;transform:translateY(-6px)}}
.qst-body{display:flex;flex-direction:column;gap:7px}
.qst-next .qst-body{animation:qstIn .28s cubic-bezier(.23,1,.32,1) both}
@keyframes qstIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.qst-acts button:disabled{opacity:.5}
.qst-nextup{display:flex;flex-direction:column;gap:6px;margin-top:4px;padding-top:10px;border-top:1px solid var(--hair)}
.qst-nk{font-size:11.5px;color:var(--ink-3)}
.qst-nextup ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.qst-nextup li{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:13px;line-height:1.35}
.qst-nw{flex:none;font-size:11.5px;color:var(--ink-3)}
.qst-nt{min-width:0;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (prefers-reduced-motion:reduce){.qst-gain,.qst-next .qst-body{animation:none}}
.ov-scroll>.qst{grid-area:quest;align-self:stretch}
/* when Life at a glance folds into one line (tablet and phone) the quest card gives way to a Focus door in that line */
.gl-door.gl-focus{display:none}
@media (max-width:1279px){#glance .qst{display:none}.gl-door.gl-focus{display:flex}.gl-focus b{color:var(--gold)}.gl-focus.done b{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.5)!important;box-shadow:none!important}}
}
@media (max-width:760px){.ov-scroll>.qst{order:-1;margin-bottom:10px}}
.gl-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.gl-k{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--k-246-239-230,246,239,230),.9);font-weight:500}
.gl-open{font-size:12.5px;color:var(--ink-1);border-bottom:1px solid var(--hair-2);padding-bottom:1px;transition:color .15s}.gl-open:hover{color:var(--ink-1)}
.gl-worlds{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 6px}
.gl-world{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 0;border-radius:12px;color:var(--ink-2);opacity:0;transform:translateY(4px);animation:glIn .6s var(--ease) forwards;animation-delay:var(--d);transition:background .2s}
.gl-world:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}.gl-world:active{transform:scale(.97)}
@keyframes glIn{to{opacity:1;transform:none}}
.gl-ring{position:relative;width:46px;height:46px;display:grid;place-items:center}
.gl-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.gl-ring .trk{fill:none;stroke:rgba(var(--k-246-239-230,246,239,230),.16);stroke-width:2}
.gl-ring .val{fill:none;stroke:rgb(var(--c));stroke-width:2;stroke-linecap:round;filter:drop-shadow(0 0 3px rgba(var(--c),.55));transition:stroke-dashoffset 1.2s var(--ease)}
.gl-ring b{font-family:var(--display);font-weight:400;font-size:15px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.gl-name{font-size:12.5px;line-height:1.25;text-align:center;color:var(--ink-1);max-width:88px}
.gl-trend{position:absolute;top:0;right:10px;font-size:7px}.gl-trend.up{color:var(--mint)}.gl-trend.down{color:var(--h-ff9a8b,#ff9a8b)}
.gl-sec{display:flex;flex-direction:column;gap:8px;padding-top:13px;border-top:1px solid rgba(var(--k-246-239-230,246,239,230),.14);text-align:left;width:100%}
.gl-sec h3{margin:0 0 2px;font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(var(--k-246-239-230,246,239,230),.82)}
.gl-goal{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:10px;row-gap:6px;align-items:baseline;text-align:left;padding:3px 0}
.gl-goal .gl-t{grid-column:1;grid-row:1;font-size:14px;line-height:1.35;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-goal .gl-v{grid-column:2;grid-row:1;color:var(--ink-2)}
.gl-goal .gl-bar{grid-column:1/3;grid-row:2}
.gl-bar{height:4px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.14);overflow:hidden}.gl-bar i{display:block;height:100%;background:rgb(var(--c));box-shadow:0 0 6px rgba(var(--c),.6)}
.gl-bar.unknown i{width:0!important}
.gl-v{font-size:12.5px;color:rgba(var(--k-246-239-230,246,239,230),.85);font-variant-numeric:tabular-nums;text-align:right}
.gl-routine{display:flex;align-items:center;gap:10px}
.gl-routine .gl-t{flex:1;min-width:0}
.gl-routine .gl-t{font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-dots{display:flex;gap:4px;flex:none}.gl-dots i{width:7px;height:7px;border-radius:50%;background:rgba(var(--k-246-239-230,246,239,230),.2)}.gl-dots i.on{background:rgb(var(--c));box-shadow:0 0 5px rgba(var(--c),.7)}
.gl-week{cursor:pointer}
.gl-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;align-items:end;height:44px}
.gl-day{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;height:100%}
.gl-stack{display:flex;flex-direction:column-reverse;gap:3px;align-items:center}
.gl-stack i{width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.6)}
.gl-day small{font-size:11.5px;color:rgba(var(--k-246-239-230,246,239,230),.8)}.gl-day.today small{color:var(--gold)}
.gl-week .gl-v{text-align:left}
@media (max-width:1279px){
  .glance{left:50%;right:auto;bottom:auto;width:min(620px,92vw);padding:0;background:none;box-shadow:none;border-radius:0;transform:translate(-50%,8px);max-height:none;overflow:visible;gap:0}
  .glance.on{transform:translate(-50%,0)}
  .gl-head,.gl-sec{display:none}
  .gl-worlds{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;justify-content:space-between;padding:0 2px}
  .gl-worlds::-webkit-scrollbar{display:none}
  .gl-world{flex:none;min-width:40px;gap:4px}
  .gl-ring{width:34px;height:34px}.gl-ring b{font-size:12px}
  .gl-name{font-size:11px;max-width:52px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #greet.talking ~ .glance,.glance.hide-m{opacity:0;pointer-events:none}
  /* a card above the box reaches down into the row of doors: they step back until it's gone, never drawn over its words */
  .glance.gl-yield{opacity:0!important;pointer-events:none!important;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
}
@media (prefers-reduced-motion:reduce){.gl-world{animation:none;opacity:1;transform:none}.glance{transition:none}}
.hint{position:absolute;right:26px;bottom:30px;z-index:4;font-size:12px;color:var(--ink-3);line-height:1.9;text-align:right;pointer-events:none}
.hint b{color:var(--ink-2);font-weight:500}

.review{position:absolute;right:18px;bottom:18px;z-index:7;display:flex;align-items:center;gap:4px;padding:5px;border-radius:999px;border:1px dashed rgba(var(--k-246-239-230,246,239,230),.22);background:rgba(var(--k-3-4-10,3,4,10),.78);font-size:11.5px}
.review span{color:var(--ink-3);padding:0 8px 0 10px}
.review button{padding:6px 10px;border-radius:999px;color:var(--ink-3);transition:color .2s,background .2s}
.review button:hover{color:var(--ink-1)}
.review button[aria-pressed="true"]{background:rgba(var(--k-245-198-107,245,198,107),.14);color:var(--gold)}

@media (max-width:1100px){.hint{display:none}}
@media (max-width:760px){
  header.chrome{padding:calc(16px + env(safe-area-inset-top,0px)) 16px 16px}
  .me time,.key,.anchor{display:none}
  .greet h1{font-size:22px}
  .review{left:16px;right:16px;bottom:12px;overflow-x:auto;justify-content:flex-start;scrollbar-width:none}
  .review::-webkit-scrollbar{display:none}
}

/* a memory, opened: the star it lives in sits at the centre, the memory materialises beside it */
#memcard{position:absolute;z-index:9;left:calc(42% + 64px);top:calc(42% - 70px);width:min(380px,calc(100% - 42% - 96px));max-height:min(62vh,560px);overflow:auto;
  padding:20px 22px 18px;border-radius:20px;background:linear-gradient(180deg,rgba(var(--k-11-12-26,11,12,26),.97),rgba(var(--k-7-8-18,7,8,18),.985));border:1px solid rgba(var(--c),.28);
  box-shadow:0 0 0 1px rgba(var(--k-255-255-255,255,255,255),.02) inset,0 30px 80px rgba(var(--k-0-0-0,0,0,0),.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  opacity:0;transform:translateX(-10px) scale(.98);transform-origin:left center;transition:opacity .35s ease,transform .45s cubic-bezier(.2,.8,.2,1);pointer-events:none}
#memcard.on{opacity:1;transform:none;pointer-events:auto}
#memcard::before{content:"";position:absolute;left:-56px;top:70px;width:52px;height:1px;background:linear-gradient(270deg,rgba(var(--c),.8),rgba(var(--c),0))}
#memcard .mc-top{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgb(var(--c))}
#memcard .mc-top .x{margin-left:auto;color:var(--ink-3);font-size:18px;letter-spacing:0;line-height:1;padding:2px 6px}
#memcard .mc-mem{padding:2px 0 14px}
#memcard .mc-mem+.mc-mem{border-top:1px solid var(--hair);padding-top:14px}
#memcard .mc-text{font-family:var(--display);font-size:21px;line-height:1.35;color:var(--ink-1);margin:0 0 10px;font-variant-numeric:lining-nums}
#memcard{overflow-x:hidden;overflow-wrap:anywhere}
#memcard .mc-link{color:rgb(var(--c));text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;white-space:nowrap}
#memcard .mc-meta{font-size:12px;color:var(--ink-3);line-height:1.5}
#memcard .mc-when{display:inline-flex;align-items:center;gap:7px;font-size:12px;letter-spacing:.04em;color:rgb(var(--c));margin:0 0 6px}
#memcard .mc-when::before{content:"";width:7px;height:7px;border-radius:50%;background:rgb(var(--c))}
#memcard .mc-when.w-next::before{background:transparent;border:1.5px solid rgb(var(--c))}
#memcard .mc-when.w-past::before{opacity:.45}
#memcard .mc-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
#memcard .mc-tags span{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2)}
#memcard .mc-hist{display:flex;flex-direction:column;gap:8px;border-left:1px solid rgba(var(--c),.3);padding-left:12px}
#memcard .mc-hist p{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
#memcard .mc-hist small{display:block;font-size:11.5px;color:var(--ink-3);margin-top:2px}
.mem-time{margin-bottom:6px}.mem-time button[aria-pressed="true"]{border-color:rgba(var(--k-169-139-255,169,139,255),.55);background:rgba(var(--k-169-139-255,169,139,255),.08)}
#memcard .mc-quote{margin:8px 0 0;padding-left:10px;border-left:1px solid rgba(var(--c),.4);font-size:13px;color:var(--ink-2);font-style:italic}
#memcard h5{margin:14px 0 8px;font-size:11px;letter-spacing:.16em;color:var(--ink-3);font-weight:600}
#memcard .mc-near{display:flex;flex-direction:column;gap:4px}
#memcard .mc-near button{text-align:left;font-size:13px;color:var(--ink-2);padding:7px 10px;border-radius:10px;border:1px solid transparent;transition:border-color .2s,background .2s}
#memcard .mc-near button:hover,#memcard .mc-near button:focus-visible{border-color:var(--hair-2);background:rgba(var(--k-255-255-255,255,255,255),.03);color:var(--ink-1)}
#memcard .mc-act{display:flex;gap:8px;margin-top:14px}
#memcard .mc-fix{display:flex;align-items:center;gap:16px;margin-top:8px;font-size:12.5px}
#memcard .mc-fix .link{color:var(--ink-3)}
#memcard .mc-fix .link:hover{color:var(--ink-1)}
#memcard .mc-forget[data-armed="1"]{color:var(--rose,#f08a8a)}
#memcard .mc-edit{display:grid;gap:8px;margin-top:8px}
#memcard .mc-edit textarea{width:100%;resize:vertical;min-height:72px;padding:10px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:14px;line-height:1.5}
#memcard .mc-act button{font-size:13px;padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1)}
#stage.focusing .greet,#stage.focusing .key,#stage.focusing #anchors,#stage.focusing .hint{opacity:0;pointer-events:none;transition:opacity .4s}
@media (max-width:760px){
  #memcard{left:12px;right:12px;width:auto;top:auto;bottom:150px;max-height:44vh;transform:translateY(12px);transform-origin:center bottom}
  #memcard::before{display:none}
}

/* ---------- your life: a flight through the worlds of her life ---------- */
.life-entry{display:inline-flex;align-items:center;gap:8px;margin-left:6px;padding:7px 14px 7px 11px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-2);transition:color .2s,border-color .2s,transform .16s var(--ease)}
.life-entry:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.life-entry:active{transform:scale(.97)}
.life-entry i{width:14px;height:14px;border-radius:50%;border:1px solid currentColor;position:relative;flex:none}
.life-entry i::after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:var(--gold);top:-3px;left:4px}
#fig{transition:opacity .7s var(--ease),transform 1.1s var(--ease)}
#stage.in-life #fig{opacity:0;transform:scale(1.4)}
#stage.in-life .dock-hint,#stage.in-overview .dock-hint,#stage.in-life .greet,#stage.in-life #dock,#stage.in-life .key,#stage.in-life .hint,#stage.in-life #anchors,#stage.in-life header.chrome,#stage.in-life .approve,#stage.in-life .ap-scrim{opacity:0!important;pointer-events:none!important;transition:opacity .35s}
#life:focus{outline:none}
#life{position:absolute;inset:0;z-index:12;border-radius:0;opacity:0;transition:opacity .45s var(--ease);overflow:hidden;overflow:clip}
#life.on{opacity:1}
/* a section opened by name (life.js straightTo): a short fade straight to its page, which arrives whole, no stagger */
#life.direct{transition-duration:.22s}
#life.direct .life-detail.on .ld-in{animation:none}
#life>canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.life-track{position:absolute;inset:0;perspective:1000px;transform-style:preserve-3d;z-index:1;isolation:isolate}
/* a section's dashboard covers the world cards; once it has slid in they're hidden, so their 3D layers never show through it */
#life:has(.life-detail.dash.on) .life-track{visibility:hidden;transition:visibility 0s .4s}
#life .life-back,#life .life-up,#life .life-top,#life .life-hint{z-index:6}#life .life-detail{z-index:8}
/* the space behind a world's page (public/js/lifesky.js), Full view (NOVA has one dark look): the page turns clear so her own
   patch of deep space shows in the gutters, painted once (no frame loop); every block of text keeps its solid surface */
.life-sky{--c:200,215,255;position:absolute;inset:0;z-index:7;overflow:hidden;pointer-events:none;background:radial-gradient(70% 45% at 0% 0%,rgba(var(--c),.07),transparent 70%),radial-gradient(70% 45% at 100% 0%,rgba(var(--c),.07),transparent 70%),#03040a;opacity:0;transition:opacity .22s cubic-bezier(.23,1,.32,1);contain:strict}
.life-sky.on{opacity:1}
.lsk-layer{position:absolute;inset:0}
.lsk-c{position:absolute;left:0;top:0;display:block;transition:opacity .3s cubic-bezier(.23,1,.32,1)}
.lsk-c.in{opacity:0}
.lsk-tw{position:absolute;inset:0}
.lsk-tw i{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.8) 0,rgba(var(--sc),.3) 14%,rgba(var(--sc),0) 50%);opacity:0;animation:lskTw 7s ease-in-out infinite alternate}
@keyframes lskTw{0%,50%{opacity:0}100%{opacity:.36}}
html.simple .life-sky{display:none}
html:not(.simple) #life .life-detail.dash{background:transparent}
html:not(.simple) #life .life-detail.dash .ld-head{background:rgba(5,6,12,.94)}
html:not(.simple) #life .life-detail.dash .wt::before{background:linear-gradient(to top,rgba(3,4,10,.985) calc(100% - 32px),rgba(3,4,10,0))}
@media (prefers-reduced-motion:reduce){.life-sky,.lsk-c{transition:none}.lsk-tw{display:none}}
/* the To-dos and Agents pages (public/js/hub.js) sit in the same still deep space in Full view (Katie, Oct 20): the sky
   lies just under the page across the whole window (Your team keeps the real mind behind it instead), the page turns
   clear, and every block of words keeps a solid surface */
.life-sky.hub-sky{z-index:12;background:#03040a}
#stage:has(#hub.ag-sky-team)>.hub-sky{display:none}
html:root:not(.simple) #hub.hub-space.on{background:transparent}
html:root:not(.simple) #hub.hub-space .hub-head{background:rgba(5,6,12,.94);border-bottom-color:var(--sf-edge)}
html:root:not(.simple) #hub.hub-space .wt::before{background:linear-gradient(to top,rgba(3,4,10,.985) calc(100% - 32px),rgba(3,4,10,0))}
/* words on the space page: a lone heading, a row of filters or a line of help keeps a patch of plain night around it;
   notices get the panel surface; Agents' own pages (Activity, an agent's page, settings, building one) sit on one sheet */
html:root:not(.simple) #hub.hub-space .hub-body :is(.hub-main>h4.ld-sec,.today>h4,.thead,.tfoot>*),html:root:not(.simple) #hub.hub-space :is(.ax-hero,.ax-keys){background:#03040a;box-shadow:0 0 22px 14px #03040a;border-radius:16px}
html:root:not(.simple) #hub.hub-space .hub-body :is(.hub-main>h4.ld-sec,.today>h4),html:root:not(.simple) #hub.hub-space :is(.ax-hero,.ax-keys){width:fit-content;max-width:100%}
html:root:not(.simple) #hub.hub-space .hub-body .tdbl{background:var(--sf-1);overflow:hidden;max-width:100%;box-sizing:border-box}
html:root:not(.simple) #hub.hub-space .hub-body>.ag-work:not(.ag-m-agents,.ag-m-team){padding:20px 28px 28px;border-radius:24px;background:var(--sf-0);border:1px solid var(--sf-edge)}
@media (max-width:760px){html:root:not(.simple) #hub.hub-space .hub-body>.ag-work:not(.ag-m-agents,.ag-m-team){padding:14px 12px 18px;border-radius:20px}}
/* on the space page nothing that holds words is see-through: notes and the closing line get a solid surface, a lone
   caption or link keeps a patch of plain night around it, and the free-form boards (Places under its globe, Together,
   a section's projects) sit on one dark sheet, as they did on the grey page */
html:not(.simple) #life .life-detail.dash .tile.k-note{background:linear-gradient(rgba(var(--c),.05),rgba(var(--c),.05)),var(--sf-0)}
html:not(.simple) #life .life-detail.dash .ld-fine{padding:12px 18px;border-radius:14px;background:var(--sf-0);border:1px solid var(--sf-edge)}
html:not(.simple) #life .life-detail.dash :is(.tl-caption,.ny-plan-row){justify-self:start;width:fit-content;max-width:100%;background:#03040a;box-shadow:0 0 10px 6px #03040a;border-radius:8px}
html:not(.simple) #life .life-detail.dash :is(.atlas,.tg,.pj-strip){background:var(--sf-0);border:1px solid var(--sf-edge)}
html:not(.simple) #life .life-detail.dash .atlas{padding:0 20px 18px;border-radius:24px}
html:not(.simple) #life .life-detail.dash .atlas>.at-hero{margin:-1px -21px 16px;border-radius:24px 24px 0 0}
html:not(.simple) #life .life-detail.dash .tg{padding:20px 24px;border-radius:24px}
html:not(.simple) #life .life-detail.dash .pj-strip{padding:14px 18px 8px;border-radius:20px}
@media (max-width:760px){
  html:not(.simple) #life .life-detail.dash .atlas{padding:0 12px 14px;border-radius:20px}
  html:not(.simple) #life .life-detail.dash .atlas>.at-hero{margin:-1px -13px 12px;border-radius:20px 20px 0 0}
  html:not(.simple) #life .life-detail.dash .tg{padding:16px;border-radius:20px}
  html:not(.simple) #life .life-detail.dash .pj-strip{padding:12px 12px 6px;border-radius:18px}
}
/* a world is not a card: it is a place in space. Its own light (an atmosphere), the curve of its horizon,
   and the words resolving as she arrives (--ar goes 0 → 1 as the camera reaches it) */
.world{position:absolute;display:flex;flex-direction:column;padding:26px 30px 24px;cursor:pointer;will-change:transform,opacity;backface-visibility:hidden;transform-style:preserve-3d;--ar:1}
.world::before{content:"";position:absolute;inset:-22% -16%;z-index:-1;pointer-events:none;border-radius:50%;
  background:radial-gradient(52% 50% at 60% 56%,rgba(var(--c),.13),rgba(var(--c),.045) 48%,rgba(var(--c),0) 72%),radial-gradient(120% 60% at 50% 115%,rgba(var(--k-3-4-10,3,4,10),.8),rgba(var(--k-3-4-10,3,4,10),0) 70%);
  opacity:calc(.35 + var(--ar) * .65)}
.world::after{content:"";position:absolute;left:-14%;right:-14%;top:60%;height:120%;z-index:-1;pointer-events:none;border-radius:50%;
  border:1px solid transparent;border-top-color:rgba(var(--c),.38);transform:rotate(-6deg) scaleX(calc(.6 + var(--ar) * .4));
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent);opacity:var(--ar)}
.world h2{letter-spacing:calc((1 - var(--ar)) * .28em);filter:blur(calc((1 - var(--ar)) * 9px))}
.world .w-line{opacity:clamp(0,calc(var(--ar) * 1.8 - .6),1)}
.world .w-health{opacity:clamp(0,calc(var(--ar) * 2.2 - 1.1),1);transform:translateY(calc((1 - var(--ar)) * 16px))}
.world .w-foot{opacity:clamp(0,calc(var(--ar) * 2.6 - 1.6),1);transform:translateY(calc((1 - var(--ar)) * 22px))}
.world .w-top{opacity:clamp(0,calc(var(--ar) * 2 - .8),1)}
.w-stars{display:inline-flex;gap:5px;align-items:center}
.w-kn .w-stars i{display:block;width:4px;height:4px;border-radius:50%;overflow:visible;background:rgba(var(--c),.18);transition:background .6s var(--ease),box-shadow .6s var(--ease)}
.w-kn .w-stars i.on{background:rgb(var(--c));box-shadow:0 0 6px rgba(var(--c),.9)}
.world .w-open span{display:inline-block;transition:transform .25s var(--ease)}
@media (hover:hover) and (pointer:fine){.world .w-open:hover span{transform:translateX(3px)}}
html[dir=rtl]{--fill-from:right}
@media (hover:hover) and (pointer:fine){html[dir=rtl] .world .w-open:hover span{transform:translateX(-3px)}}
.world .w-open:active{transform:scale(.97)}
.ring .moon{transform-origin:22px 22px;transition:transform 1.4s var(--ease)}
.ring .moon circle{fill:var(--h-fffaf0,#fffaf0);filter:drop-shadow(0 0 3px rgba(var(--c),1))}
.ring.empty .moon{opacity:0}
.world .w-top{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.22em;color:rgba(var(--c),.9)}
.world .w-kind{color:var(--ink-3)}
.world h2{margin:14px 0 6px;will-change:filter;font-family:var(--display);font-weight:400;font-size:clamp(38px,4.6vw,66px);line-height:1.02;color:var(--ink-1);text-shadow:0 0 30px rgba(var(--k-3-4-10,3,4,10),.9);font-variant-numeric:lining-nums}
.world .w-line{margin:0;font-size:15px;color:var(--ink-2);text-shadow:0 0 12px rgba(var(--k-3-4-10,3,4,10),.9)}
.world .w-foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.world .w-know{margin:0;font-size:13px;line-height:1.5;color:var(--ink-3);max-width:70%;text-shadow:0 0 10px rgba(var(--k-3-4-10,3,4,10),1)}
.world .w-open{flex:none;padding:9px 16px;border-radius:999px;border:1px solid rgba(var(--c),.5);color:var(--ink-1);font-size:13px;opacity:0;transform:translateY(4px);transition:opacity .3s var(--ease),transform .3s var(--ease),background .2s}
.world.current .w-open{opacity:1;transform:none}
.world .w-open:hover{background:rgba(var(--c),.12)}
/* health: a ring for how this part of life is going; a fine meter for how well NOVA knows it */
.ring{position:relative;flex:none;width:52px;height:52px}
.ring svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.ring circle{fill:none;stroke-width:2.2}
.ring .trk{stroke:rgba(var(--c),.16)}
.ring .val{stroke:rgb(var(--c));stroke-linecap:round;transition:stroke-dashoffset 1.4s var(--ease);filter:drop-shadow(0 0 4px rgba(var(--c),.55))}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.ring.empty b{color:var(--ink-3)}
.ring.empty .trk{stroke-dasharray:1.5 4.4}
.ring.busy .trk{stroke:rgba(var(--c),.4);animation:ringread 2.4s linear infinite}
@keyframes ringread{to{stroke-dashoffset:-59}}
.world .w-health{display:flex;align-items:center;gap:14px;margin-top:18px}
.w-hl{display:flex;flex-direction:column;gap:4px;min-width:0}
.w-label,.ld-label{font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(var(--c),.95)}
.w-reason{font-size:13px;line-height:1.45;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 0 10px rgba(var(--k-3-4-10,3,4,10),1)}
.world .w-meta{display:flex;flex-direction:column;gap:8px;max-width:72%;min-width:0}
.world .w-meta .w-know{max-width:none}
.w-kn,.ld-kn{display:flex;align-items:center;gap:10px;font-size:11.5px;letter-spacing:.04em;color:var(--ink-3)}
.w-kn b{color:var(--ink-1);font-weight:500}
.w-kn[hidden]{display:none}
.w-kn i,.ld-kn i{position:relative;display:block;width:84px;height:2px;border-radius:2px;background:rgba(var(--c),.16);overflow:hidden}
.w-kn em,.ld-kn em{position:absolute;inset-block:0;inset-inline-start:0;width:0;background:rgba(var(--c),.85)}
.ld-health{display:flex;align-items:center;gap:16px;margin:16px 0 4px}
.ld-health .ring{width:68px;height:68px}
.ld-health .ring b{font-size:25px}
.ld-hl{min-width:0}
.ld-label{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
.ld-trend{letter-spacing:.02em;text-transform:none;font-size:12px;color:var(--ink-2)}
.ld-trend.up{color:rgb(176,228,190)}.ld-trend.down{color:rgb(244,196,168)}
.ld-reason{margin:6px 0 0;font-size:14px;line-height:1.5;color:var(--ink-1)}
.ld-ev{margin:10px 0 0;padding:0 0 0 16px;font-size:13px;line-height:1.55;color:var(--ink-2)}
.ld-ev li::marker{color:rgba(var(--c),.8)}
.ld-basis{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}
.ld-h{margin:22px 0 9px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.ld-sugg{display:flex;flex-direction:column;gap:8px}
.ld-sugg .sg{display:flex;flex-direction:column;gap:3px;width:100%;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid rgba(var(--c),.22);background:rgba(var(--c),.04);transition:border-color .2s,background .2s,transform .15s var(--ease)}
.ld-sugg button.sg:hover{border-color:rgba(var(--c),.55);background:rgba(var(--c),.09)}
.ld-sugg button.sg:active{transform:scale(.985)}
.ld-sugg .sg b{font-weight:500;font-size:14px;line-height:1.4;color:var(--ink-1)}
.ld-sugg .sg span{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ld-kn{font-size:13px;color:var(--ink-1)}
.ld-kn i{flex:1;width:auto}
.ld-kn small{font-size:12px;color:var(--ink-3);white-space:nowrap}
.ld-feeds{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.fd{font-size:12px;padding:6px 11px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-3)}
.fd.on{color:var(--ink-2);border-color:rgba(var(--c),.3)}
button.fd{border-style:dashed;border-color:rgba(var(--c),.35);color:var(--ink-1);transition:border-color .2s,background .2s}
button.fd:hover{border-style:solid;border-color:rgba(var(--c),.65);background:rgba(var(--c),.06)}
.ld-foot{margin:18px 0 0;font-size:12px;color:var(--ink-3)}
.ld-foot .link{font-size:12px}
.life-back{position:absolute;top:22px;right:26px;z-index:3;display:inline-flex;white-space:nowrap;align-items:center;gap:10px;padding:9px 14px 9px 16px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);font-size:13px;color:var(--ink-1)}
.life-back span{font-size:11px;color:var(--ink-3);border:1px solid var(--hair-2);border-radius:6px;padding:1px 5px}
/* the same NOVA mark as on the mind's page, in the same place: top left of every screen */
.life-top{position:absolute;top:calc(22px + env(safe-area-inset-top,0px));left:26px;z-index:3;display:block;padding:8px 0;color:var(--ink-1);transition:opacity .2s}
.life-top .wordmark{height:20px}
.life-top:hover{opacity:.85}
.life-top:focus-visible{outline:1px solid var(--hair-2);outline-offset:4px;border-radius:6px}
.life-up{position:absolute;left:50%;top:18px;transform:translate(-50%,-6px);display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 14px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);opacity:0;pointer-events:none;transition:opacity .4s var(--ease),transform .4s var(--ease),color .2s}
.life-up i{width:9px;height:9px;border-left:1.5px solid currentColor;border-top:1.5px solid currentColor;transform:rotate(45deg);animation:lifeUp 2.4s var(--ease) infinite}
@keyframes lifeUp{0%,100%{transform:translateY(2px) rotate(45deg);opacity:.5}50%{transform:translateY(-3px) rotate(45deg);opacity:1}}
#life.on.at-first .life-up{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.life-up:hover{color:var(--ink-1)}
@media (prefers-reduced-motion:reduce){.life-up i{animation:none}}
.life-hint{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);margin:0;font-size:12px;color:var(--ink-3);letter-spacing:.04em;pointer-events:none}
.life-detail{position:absolute;z-index:4;right:24px;top:84px;bottom:24px;width:min(400px,calc(100vw - 48px));overflow:auto;padding:22px 22px 20px;border-radius:22px;border:1px solid rgba(var(--c),.3);background:rgba(var(--k-7-8-17,7,8,17),.97);
  opacity:0;transform:translateX(14px);transition:opacity .2s var(--ease),transform .25s var(--ease)}
.life-detail.on{opacity:1;transform:none}
.life-detail::before{content:"";position:sticky;display:block;top:-22px;height:0;box-shadow:0 0 120px 60px rgba(var(--c),.10);pointer-events:none}
.life-detail.on .ld-in{animation:ldIn .3s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 40ms)}
/* moving between worlds without leaving: the page slips aside, the next slides in from the side she's heading */
.life-detail.swap-out>:not(.ld-head):not(.wt),.life-detail.swap-out .ld-title{opacity:0;transform:translateX(calc(var(--dir,1) * -22px));transition:opacity .14s ease,transform .14s ease}
.life-detail .ld-swap{animation:ldSwap .3s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 24ms)}
@keyframes ldSwap{from{opacity:0;transform:translateX(calc(var(--dir,1) * 26px))}to{opacity:1;transform:none}}
#life .life-warp{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden;opacity:0}
#life .life-warp.go{animation:warpFlash .42s ease-out both}
#life .life-warp.go.quick{animation-duration:.26s}
#life .life-warp i{position:absolute;height:1.5px;border-radius:2px;background:linear-gradient(calc(270deg + (1 - var(--dir,1)) * 90deg),transparent,rgba(var(--c),.9) 70%,#fff);transform:translateX(0)}
#life .life-warp.go i{animation:warpStreak .38s cubic-bezier(.23,1,.32,1) both}
#life .life-warp.go.quick i{animation-duration:.24s}
@keyframes warpFlash{0%{opacity:0}25%{opacity:1}100%{opacity:0}}
@keyframes warpStreak{from{transform:translateX(calc(var(--dir,1) * 40vw)) scaleX(.3)}to{transform:translateX(calc(var(--dir,1) * -60vw)) scaleX(1.4)}}
@media (prefers-reduced-motion:reduce){#life .life-warp{display:none}.life-detail .ld-swap{animation:none}.life-detail.swap-out>*{transition:none}}
/* (opacity and movement only: a blur animated on every tile was redrawn each frame, slow on a laptop's graphics) */
@keyframes ldIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.life-detail.on .ld-in{animation:none}}
.ld-head{display:flex;align-items:center;justify-content:space-between}
.ld-head h3{margin:0;font-family:var(--display);font-weight:400;font-size:30px;color:var(--ink-1)}
.ld-x{font-size:22px;color:var(--ink-3);padding:2px 8px}
.ld-sub{font-size:13.5px;color:var(--ink-2);line-height:1.55;margin:8px 0 14px}
.ld-list{display:flex;flex-direction:column;gap:6px}
.ld-list button{text-align:left;font-size:14px;line-height:1.45;color:var(--ink-1);padding:10px 12px;border-radius:12px;border:1px solid var(--hair);transition:border-color .2s,background .2s}
.ld-list button:hover{border-color:rgba(var(--c),.5);background:rgba(var(--c),.05)}
.ld-list button{display:flex;flex-direction:column;gap:3px}
.ld-list .ld-when{font-size:11.5px;color:rgba(var(--c),.85);letter-spacing:.02em}
.ld-time{display:flex;gap:6px;margin:0 0 10px;flex-wrap:wrap}
.ld-time button{font-size:12.5px;padding:6px 12px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-2);transition:border-color .2s,color .2s,background .2s}
.ld-time button[aria-pressed="true"]{border-color:rgba(var(--c),.6);color:var(--ink-1);background:rgba(var(--c),.08)}
.ld-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
@media (max-width:760px){
  .life-entry span{display:none}.life-entry{padding:8px;margin-left:0}
  .life-up{top:62px}
  .life-top{top:calc(16px + env(safe-area-inset-top,0px));left:16px}
  .life-back{top:14px;right:14px}.life-back span{display:none}
  .life-hint{display:none}
  .world{padding:22px 20px 20px}
  .world .w-meta{max-width:64%}
  .world .w-health{margin-top:12px}
  .ring{width:46px;height:46px}
  .ring b{font-size:17px}
  .life-detail{left:12px;right:12px;width:auto;top:auto;bottom:12px;max-height:74vh;transform:translateY(14px);background:var(--h-070811,#070811)}
}
@media (prefers-reduced-motion:reduce){.ring.busy .trk{animation:none}.ring .val,.ring .moon,.w-kn em,.ld-kn em{transition:none}.world h2{filter:none;letter-spacing:normal}}

/* ---------- the team map (Agents › Map) ---------- */
/* agents learn from her: why something wasn't needed, and what each one has learned */
.ag-why{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 2px;font-size:12.5px;color:var(--ink-3)}
.ag-why>span{margin-right:2px}
.ag-why-c{padding:5px 11px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:color .16s ease,border-color .16s ease,transform .16s ease-out}
.ag-why-c:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}.ag-why-c:active{transform:scale(.96)}
.ag-why-c.on{color:var(--h-120d04,#120d04);background:var(--gold);border-color:var(--gold)}
.ag-why-c:disabled:not(.on){opacity:.45;cursor:default}
.ag-why-f{display:flex;gap:6px;align-items:center}
.ag-why-f input,.ap-teach input{min-width:0;flex:1;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);font:inherit;font-size:13px;padding:6px 12px;outline:0}
.ag-why-f input:focus,.ap-teach input:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.ag-why-said{margin:6px 0 0;font-size:12.5px;color:var(--ink-3)}
.ap-lessons{display:grid;gap:10px;margin:0 0 18px}
.ap-lesson-list{list-style:none;margin:0;padding:0;display:grid}
.ap-lesson-list li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-top:1px solid var(--hair)}
.ap-lesson-list li:first-child{border-top:0;padding-top:2px}
.ap-lesson-list li>div{display:grid;gap:2px;min-width:0}
.ap-lesson-list span{font-size:13.5px;line-height:1.45;color:var(--ink-1)}
.ap-lesson-list small{font-size:11.5px;color:var(--ink-3);line-height:1.4}
.ap-lx{flex:none;font-size:12px;color:var(--ink-3)}.ap-lx:hover{color:var(--rose)}
.ap-teach{display:flex;gap:6px;align-items:center}
/* what an agent works from: notes, files, pages and Drive docs, each with a switch; NOVA's starters as chips */
.kn{display:grid;gap:10px;margin:0 0 18px;min-width:0}
.kn-list{list-style:none;margin:0;padding:0;display:grid}
.kn-it{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:start;gap:10px;padding:10px 0;border-top:1px solid var(--hair)}
.kn-it:first-child{border-top:0;padding-top:2px}
.kn-it.off .kn-main{opacity:.45}
.kn-main{display:grid;gap:2px;min-width:0;transition:opacity .2s ease}
.kn-t{font:inherit;font-size:13.5px;line-height:1.4;color:var(--ink-1);text-align:left;text-decoration:none;overflow-wrap:anywhere}
button.kn-t:hover,a.kn-t:hover{color:var(--gold)}
.kn-main small{font-size:11.5px;color:var(--ink-3);line-height:1.4;overflow-wrap:anywhere}
.kn-pre{margin:2px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kn-sw{flex:none;position:relative;width:34px;height:20px;margin-top:1px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.12);transition:background-color .2s ease}
.kn-sw i{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.kn-sw[aria-checked="true"]{background:rgba(var(--c,245,198,107),.55)}
.kn-sw[aria-checked="true"] i{transform:translateX(14px);background:var(--h-fff,#fff)}
.kn-x{font-size:16px;line-height:1;color:var(--ink-3);padding:1px 4px;min-width:22px}
.kn-x[data-armed="1"]{font-size:12px;color:var(--h-ffb4a8,#ffb4a8)}
.kn-add{display:flex;flex-wrap:wrap;gap:6px}
.kn-add .btn{font-size:12.5px;padding:6px 12px}
.kn-start{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.kn-start .ag-kind{margin-right:2px}
.kn-chip{font:inherit;font-size:12.5px;padding:5px 11px;border-radius:999px;border:1px dashed var(--hair-2);color:var(--ink-2);transition:border-color .2s ease,color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.kn-chip:hover{border-style:solid;border-color:rgba(var(--c,245,198,107),.55);color:var(--ink-1)}
.kn-chip:active,.kn-sw:active{transform:scale(.97)}
.kn-form{display:grid;gap:8px}
.kn-form input,.kn-form textarea{background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:9px 12px;outline:0;width:100%;min-width:0}
.kn-form input:focus,.kn-form textarea:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.kn-kit{margin:0}
@media (prefers-reduced-motion:reduce){.kn-sw i,.kn-main{transition:none}}
/* NOVA's suggestions to switch an agent on */
.ag-suggest{margin:0 0 18px;padding:14px 16px;border-radius:16px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);background:rgba(var(--k-245-198-107,245,198,107),.04)}
.ag-suggest>.ag-kind{color:var(--gold)}
.ag-sug-list{display:grid;gap:12px;margin-top:10px}
.ag-sug{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}
.ag-sug-t{display:grid;gap:2px;min-width:0}
.ag-sug-name{font:inherit;font-size:14.5px;color:var(--ink-1);text-align:left;justify-self:start}
.ag-sug-name:hover{color:var(--gold)}
.ag-sug-t small{font-size:12px;color:rgba(var(--c),.95)}
.ag-sug-t p{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ag-sug-acts{display:flex;align-items:center;gap:10px}
@media (max-width:760px){.ag-sug{grid-template-columns:auto minmax(0,1fr)}.ag-sug-acts{grid-column:2}}
/* her brand kit: logo, colours, brand images, files and notes */
.ag-kit-wrap{margin:18px 0 0;padding:16px 0 0;border-top:1px solid var(--hair);--c:245,198,107}
.ag-kit-wrap>h4{margin:0 0 6px}
.kit{display:grid;gap:12px;min-width:0}
.kit-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:18px}
.kit-cell{display:grid;gap:8px;align-content:start;min-width:0}
.kit-logo{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.kit-logo img{width:120px;height:80px;object-fit:contain;border-radius:12px;background:repeating-conic-gradient(rgba(var(--k-246-239-230,246,239,230),.06) 0 25%,transparent 0 50%) 0 0/14px 14px;border:1px solid var(--hair)}
.kit-ph{display:grid;place-items:center;width:120px;height:80px;border-radius:12px;border:1px dashed var(--hair-2);font-size:12px;color:var(--ink-3)}
.kit-acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kit-on{font-size:12.5px;color:var(--ink-2);align-items:flex-start;gap:8px;display:flex}
.kit-cols{display:flex;flex-wrap:wrap;gap:8px}
.kit-sw{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:999px;border:1px solid var(--hair-2);font:inherit;font-size:12px;color:var(--ink-2)}
.kit-sw i{width:20px;height:20px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.kit-sw:hover{border-color:var(--h-ffb4a8,#ffb4a8)}
.kit-addcol{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:999px;border:1px dashed var(--hair-2);font-size:12px;color:var(--ink-2);cursor:pointer}
.kit-addcol input{width:20px;height:20px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}
.kit-vis{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}
.kit-vis figure{position:relative;margin:0}
.kit-vis img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;border:1px solid var(--hair)}
.kit-x{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;background:rgba(3,4,10,.72);color:#fff;font-size:14px;line-height:1}
.kit-addimg{display:grid;place-items:center;align-content:center;gap:2px;aspect-ratio:1;border-radius:10px;border:1px dashed var(--hair-2);font:inherit;font-size:11.5px;color:var(--ink-3)}
.kit-addimg span{font-size:18px;color:var(--ink-2)}
.kit-addimg:hover,.kit-addcol:hover{border-color:rgba(var(--c),.55);color:var(--ink-1)}
@media (max-width:760px){.kit-grid{grid-template-columns:minmax(0,1fr)}}
/* Markets' brief and the Wellness Coach's day */
.ag-brief{display:grid;gap:6px;margin:4px 0 14px;padding:12px 14px;border-left:1px solid rgba(var(--c),.45)}
.ag-brief>p{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-1);max-width:66ch}
.ag-brief .ag-fine{margin:2px 0 0}
.ag-week-plan{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:8px 0 0;font-size:13px}
.ag-week-plan dt{color:var(--ink-3)}.ag-week-plan dd{margin:0;color:var(--ink-1)}

.om-back{font-size:13px;color:var(--ink-2);padding:6px 0;margin:2px 0 8px;transition:color .18s}
.om-back:hover{color:var(--ink-1)}
/* an agent's card (agentcard.js): its colour is --ah (r,g,b); --ac is that colour as ink */
.acard{--ac:rgb(var(--ah));position:relative;display:flex;flex-direction:column;gap:14px;padding:20px clamp(16px,2.4vw,22px) 18px;border-radius:22px;border:1px solid var(--hair);background:linear-gradient(180deg,rgba(var(--ah),.07),rgba(var(--ah),0) 140px),rgba(var(--k-246-239-230,246,239,230),.03);min-width:0}
.acard.off .acard-ico{filter:saturate(.35);opacity:.8}
.acard-h{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:start}
.acard-ico{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;color:#0b0c12;background:linear-gradient(150deg,rgb(var(--ah)),color-mix(in srgb,rgb(var(--ah)) 72%,#000));box-shadow:0 8px 24px -10px rgba(var(--ah),.7),inset 0 1px 0 rgba(255,255,255,.35)}
.acard-id{min-width:0;display:flex;flex-direction:column;gap:2px}
.acard-eyebrow{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ac)}
.acard .acard-id h4:not(.x){margin:0;font:600 21px/1.2 var(--sans);letter-spacing:-.01em;color:var(--ink-1);text-wrap:balance}
.acard-purpose{margin:2px 0 0;color:var(--ink-2);font-size:14px;line-height:1.45}
.acard-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-3);white-space:nowrap}
.acard-status i{width:7px;height:7px;border-radius:50%;background:currentColor}
.acard-status.on{color:var(--mint);border-color:color-mix(in srgb,var(--mint) 35%,transparent);background:color-mix(in srgb,var(--mint) 10%,transparent)}
.acard-status.wait{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 35%,transparent)}
.acard-kind{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.acard-kind svg{color:var(--ac)}
.acard-rows{list-style:none;margin:-6px 0 0;padding:0;border-radius:16px;border:1px solid var(--hair);overflow:hidden}
.acard-rows li{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:11px 14px}
.acard-rows li+li{border-top:1px solid var(--hair)}
.acard-rico{flex:none;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:var(--ac);background:rgba(var(--ah),.14)}
.acard-rows b{display:block;font:600 14.5px/1.3 var(--sans);color:var(--ink-1)}
/* (only the line under each title: the icon's tile is a span too, and must stay a centred grid) */
.acard-rows li>div>span{display:block;font-size:13px;line-height:1.4;color:var(--ink-3)}
.acard-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.acard-tile{min-width:0;display:flex;flex-direction:column;gap:6px;padding:13px 14px;border-radius:16px;border:1px solid var(--hair)}
.acard-runs{margin:0 0 6px;font-size:14px;font-weight:600;color:var(--ink-1);line-height:1.35}
.acard-chips{display:flex;flex-wrap:wrap;gap:6px}
.acard-chips>span.has-mark{display:inline-flex;align-items:center;gap:6px;padding-inline-start:4px}
.acard-chips .bmark{border-radius:999px}
.acard-chip-t{min-width:0;overflow:hidden;text-overflow:ellipsis}
.acard-chips>span{font-size:12px;padding:3px 9px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.07);color:var(--ink-2);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acard-dim{margin:0;font-size:13px;color:var(--ink-3)}
.acard-num{font:600 34px/1 var(--sans);letter-spacing:-.02em;color:var(--ac);font-variant-numeric:tabular-nums;margin-top:2px}
.acard-tile.pays p{margin:0;font-size:13px;line-height:1.4;color:var(--ink-2)}
.acard-tile.pays small,.acard-src{font-size:11.5px;color:var(--ink-3)}
.acard-src{text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px;align-self:flex-start}
.acard-src:hover{color:var(--ink-2)}
.acard-f{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:2px;margin-top:auto}
.acard.set-open{grid-column:1/-1}
.acard-set:empty{display:none}
.acard-set .ag-set{margin:0;max-width:760px}
.acard-f .acard-grow{flex:1}
.acards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,400px),1fr));gap:14px;margin-top:8px}
@media (max-width:520px){.acard-grid{grid-template-columns:1fr}.acard-h{grid-template-columns:auto 1fr}.acard-status{grid-column:1/-1;justify-self:start}}

/* ---------- Atlas: the globe inside Places & travel ---------- */
.life-detail.wide{width:min(560px,calc(100vw - 48px))}
/* ---------- a life world's dashboard: it takes the screen ---------- */
.life-detail.dash{--padX:max(28px,calc((100vw - 1240px) / 2));--padL:var(--padX);left:0;right:0;top:0;bottom:0;width:auto;max-height:none;border:0;border-radius:0;padding:22px var(--padX) 48px var(--padL);
  background:radial-gradient(1200px 520px at 50% -120px,rgba(var(--c),.12),transparent 70%),rgba(var(--k-4-5-12,4,5,12),.985);transform:translateY(10px)}
.life-detail.dash.on{transform:none}
.life-detail.dash::before{display:none}
.life-detail.dash{overflow-x:hidden}
/* ---------- talking to NOVA inside a world: a conversation at the foot of the screen that updates the world ---------- */
.wt{position:sticky;bottom:-48px;z-index:5;margin:30px calc(-1 * var(--padX,28px)) -48px calc(-1 * var(--padL,28px));padding:18px var(--padX,28px) max(18px,env(safe-area-inset-bottom)) var(--padL,28px)}
.wt::before{content:"";position:absolute;z-index:-1;inset:-32px 0 0;background:linear-gradient(to top,rgba(var(--k-4-5-12,4,5,12),.985) calc(100% - 32px),rgba(var(--k-4-5-12,4,5,12),0));pointer-events:none}
/* the dock is solid all the way up to its top line ("Earlier here" included); only the 32 px above it fades, so nothing behind reads through its words */
.wt>.wt-thread,.wt>.wt-bar,.wt>.wt-past{max-width:760px;margin-left:auto;margin-right:auto}
.wt-past{display:flex;align-items:center;gap:12px;padding:8px 6px;font-size:12.5px;background:rgb(var(--k-4-5-12,4,5,12));border-radius:10px}
.wt.has-thread .wt-past{display:none}
/* tucked away by a tap elsewhere: the thread folds out of sight and one quiet line can bring it back */
.wt.folded .wt-thread{display:none}
.wt-reopen{display:none}
.wt.has-thread.folded .wt-reopen{display:flex;width:fit-content;align-items:center;gap:8px;margin:0 auto 8px;padding:6px 14px;border:1px solid var(--hair);border-radius:999px;background:rgba(var(--k-8-9-19,8,9,19),.92);color:var(--ink-2);font-size:12.5px;cursor:pointer;transition:color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.wt-reopen:hover{color:var(--ink-1)}.wt-reopen:active{transform:scale(.97)}
.wt-reopen:focus-visible{outline:2px solid rgba(var(--c,245,198,107),.8);outline-offset:3px}
.wt-reopen::before{content:"";width:6px;height:6px;border-radius:50%;background:rgba(var(--c,245,198,107),.85)}
.life-talk .wt-reopen{display:none!important}
.wt-past-one{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1;text-align:left;color:var(--ink-2);transition:color .2s ease}
.wt-past-one:hover{color:var(--ink-1)}
.wt-past-k{flex:none;color:rgba(var(--c,245,198,107),.85)}
.wt-past-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-past-all{flex:none;color:var(--ink-3);transition:color .2s ease}.wt-past-all:hover{color:var(--ink-1)}
:is(.wt-past-one,.wt-past-all):focus-visible{outline:2px solid rgba(var(--c,245,198,107),.8);outline-offset:3px;border-radius:6px}
/* travelling between worlds from inside one */
.ld-nav{display:flex;align-items:center;gap:6px;flex:none}
.ld-prev,.ld-next{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--hair);color:var(--ink-2);font-size:18px;line-height:1;transition:color .2s ease,border-color .2s ease,transform .16s ease-out}
.ld-prev:hover:not(:disabled),.ld-next:hover:not(:disabled){color:var(--ink-1);border-color:var(--hair-2)}
.ld-prev:active:not(:disabled),.ld-next:active:not(:disabled){transform:scale(.94)}
.ld-prev:disabled,.ld-next:disabled{opacity:.25;cursor:default}
.ld-dots{display:flex;align-items:center;gap:2px;padding:0 4px}
.ld-dot{position:relative;width:22px;height:28px;display:grid;place-items:center}
.ld-dot::before{content:"";width:6px;height:6px;border-radius:50%;background:rgba(var(--c),.55);transition:transform .2s ease,background-color .2s ease,box-shadow .2s ease}
.ld-dot:hover::before{background:rgb(var(--c));transform:scale(1.35)}
.ld-dot.on::before{width:8px;height:8px;background:rgb(var(--c));box-shadow:0 0 0 3px rgba(var(--c),.18),0 0 12px rgba(var(--c),.7)}
.ld-dot:focus-visible{outline:1px solid rgba(var(--c),.8);outline-offset:-2px;border-radius:6px}
/* the bar itself is the home screen's message box (.dock, above); here it sits in the section's flow, and the photo
   tray opens above it */
.wt-bar{position:relative}
.wt-thread{position:relative;max-height:min(40vh,360px);overflow:auto;margin:0 0 10px;padding:14px 18px 6px;border-radius:20px;border:1px solid var(--hair);background:rgba(var(--k-8-9-19,8,9,19),.95);overscroll-behavior:contain}
.wt-clear{position:sticky;top:0;float:right;margin:-4px -6px 0 12px;padding:3px 9px;border-radius:999px;border:0;background:rgba(var(--k-8-9-19,8,9,19),.9);color:var(--ink-3);font-size:11.5px;cursor:pointer}.wt-clear:hover{color:var(--ink-1)}
.wt-turn{padding:0 0 12px}.wt-turn+.wt-turn{padding-top:12px;border-top:1px solid var(--hair)}
.wt-you{margin:0 0 8px;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.wt-you::before{content:"You  ";white-space:pre;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.wt-status{margin:0;font-size:13px;color:rgba(var(--c),.9)}
.wt-changes{list-style:none;margin:0 0 6px;padding:0;display:grid;gap:5px}
.wt-ch{display:flex;align-items:baseline;gap:8px;font-size:13px;line-height:1.4;color:var(--ink-1);animation:wtIn .24s cubic-bezier(.23,1,.32,1) both}
.wt-ch::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:rgb(var(--c));transform:translateY(-1px)}
.wt-ch b{flex:none;font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:rgba(var(--c),.95)}
.wt-ch span{min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.wt-ch em{flex:none;font-style:normal;color:var(--ink-2);font-variant-numeric:tabular-nums}
.wt-ch.k-learned,.wt-ch.k-learned b{color:var(--ink-2)}.wt-ch.k-learned::before{background:var(--ink-3)}
.wt-ch.k-none b{color:var(--rose)}.wt-ch.k-none::before{background:var(--rose)}.wt-ch.k-none span{color:var(--ink-2)}
/* the receipt under a reply on the home screen: what this turn changed */
.did{margin:0 0 12px;padding:10px 12px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);border-radius:12px;background:rgba(var(--k-245-198-107,245,198,107),.06)}
.did.none{border-color:rgba(var(--k-255-120-140,255,120,140),.3);background:rgba(var(--k-255-120-140,255,120,140),.05)}
.did-h{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}.did.none .did-h{color:var(--rose)}
.did p{margin:0;font-size:13px;color:var(--ink-2);line-height:1.45}
.did ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.did li{display:flex;align-items:baseline;gap:8px;font-size:13px;line-height:1.4;color:var(--ink-1)}
.did li b{flex:none;font-weight:500;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.did li span{min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.did li:has(.did-rule){flex-wrap:wrap}.did li .did-rule{order:3;flex-basis:100%;display:grid;gap:2px;overflow:visible;-webkit-line-clamp:unset;color:var(--ink-2);font-size:12.5px}.did li .did-rule span{display:block;overflow:visible;-webkit-line-clamp:unset}
.did li em{flex:none;font-style:normal;color:var(--ink-2)}.did-open{flex:none;margin-left:auto;font-size:12px;color:var(--ink-1);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}.did li.more{color:var(--ink-3);font-size:12px}
@keyframes wtIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.wt-reply p{margin:0 0 6px;font-size:14.5px;line-height:1.55;color:var(--ink-1)}
.wt-reply .wt-err{color:var(--h-ffb4a8,#ffb4a8)}
@media (prefers-reduced-motion:reduce){.wt-ch{animation:none}}
@media (max-width:760px){.wt{bottom:-36px;margin:22px -14px -36px;padding:14px 14px max(14px,env(safe-area-inset-bottom))}.wt-thread{max-height:34vh;padding:12px 14px 4px}}
.dash .ld-head,.life-detail.dash .ld-head{position:sticky;top:-22px;z-index:3;display:flex;align-items:center;gap:16px;margin:-22px calc(-1 * var(--padX,28px)) 18px calc(-1 * var(--padL,28px));padding:16px var(--padX,28px) 14px var(--padL,28px);background:rgba(var(--k-4-5-12,4,5,12),.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hair)}
.ld-back{font-size:13px;color:var(--ink-2);padding:7px 12px;border-radius:999px;border:1px solid var(--hair);transition:color .2s,border-color .2s}
.ld-back:hover{color:var(--ink-1);border-color:var(--hair-2)}
.ld-title{flex:1;min-width:0}
.ld-title h3{margin:0;font-family:var(--display);font-weight:400;font-size:30px;line-height:1.05;color:var(--ink-1)}
.ld-line{margin:3px 0 0;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ld-chip{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.ld-chip .ring{width:34px;height:34px}.ld-chip .ring b{font-size:12px}
/* a setup score, explained under the header of a section with its own page (Astrology, Markets, Home, Faith, Together) */
.ld-setup{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:-6px 0 16px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.ld-setup .ld-nextstep-do{margin-left:0}.ld-setup-next{color:var(--ink-1)}
.ld-sec{margin:34px 0 4px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.ld-rest{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:8px 40px;align-items:start}
.ld-col{min-width:0}
.ld-mem{margin-top:6px}
.ld-mem summary{list-style:none;cursor:pointer;font-size:13px;color:var(--ink-2);padding:8px 0;display:flex;align-items:center;gap:8px}
.ld-mem summary::-webkit-details-marker{display:none}
.ld-mem summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s var(--ease)}
.ld-mem[open] summary::before{transform:rotate(45deg)}
.ld-mem summary:hover{color:var(--ink-1)}
.ld-mem .ld-list button{padding:8px 11px;font-size:13px}

/* ---------- tiles ---------- */
.dash{margin:0}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 12px}
.tile{grid-column:span 1;min-width:0;padding:16px 16px 14px;border-radius:18px;border:1px solid var(--hair);background:linear-gradient(180deg,rgba(var(--k-246-239-230,246,239,230),.035),rgba(var(--k-246-239-230,246,239,230),.015));display:flex;flex-direction:column;gap:10px;animation:ldIn .45s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 30ms)}
.tile.s2{grid-column:span 2}.tile.s3{grid-column:span 3}.tile.s4{grid-column:1 / -1}
@media (min-width:1101px){.tiles>.tile.fill{grid-column:span var(--fill)}}
.tl-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tl-h h4{margin:0;font-size:12.5px;font-weight:500;color:var(--ink-2);letter-spacing:.01em}
.tl-go{font-size:12px;color:var(--ink-3);transition:color .2s}.tl-go:hover{color:var(--ink-1)}
.tl-stat{display:flex;flex-direction:column;gap:5px;margin-top:auto}
.tl-v{font-family:var(--display);font-weight:400;font-size:36px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.01em}
button.tl-stat{display:flex;width:100%;text-align:left;background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer}
.tl-sub2{font-size:12px;color:var(--ink-3);line-height:1.45}
.tl-stat.t-good .tl-v{color:var(--mint)}.tl-stat.t-warn .tl-v{color:var(--gold)}.tl-stat.t-bad .tl-v{color:var(--h-ffb4a2,#ffb4a2)}
.tl-spark{display:block;width:120px;height:28px;margin:6px 0 2px;overflow:visible}.tl-spark .ln{fill:none;stroke:rgba(var(--c,246,239,230),.7);stroke-width:1.5;vector-effect:non-scaling-stroke}
.tl-v.txt{font-size:22px;line-height:1.2}
.tl-d{font-size:12px;color:var(--ink-3)}.tl-d.good{color:var(--mint)}.tl-d.bad{color:var(--h-ffb4a2,#ffb4a2)}
.tl-sub{font-size:12px;color:var(--ink-3);line-height:1.4}
.tl-empty{margin:0;font-size:13px;color:var(--ink-3);line-height:1.5}
.tl-caption{margin:2px 2px 8px;font-size:11.5px;color:var(--ink-3)}
/* arranging a life section's page: the way in, the edit bar in the header, the sections as cards (rows on a phone and
   in Simple view), the hidden tray, and the settle after Done (public/js/arrange.js) */
.arr-entry{display:flex;justify-content:flex-end;margin:0 0 4px}
/* the way in is a quiet pencil in the page's header, beside its close (Katie, Oct 18): small to the eye, a full 44px to
   the finger, its name on hover and focus on a computer */
.arr-open{position:relative;flex:none;display:grid;place-items:center;width:44px;height:44px;margin:0 -6px;border-radius:12px;color:var(--ink-3);transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-open .arr-ic{width:17px;height:17px}
.arr-open::after{content:attr(aria-label);position:absolute;top:calc(100% + 4px);inset-inline-end:0;z-index:5;padding:6px 10px;border-radius:9px;background:var(--sf-2,#15161d);border:1px solid var(--sf-edge-2,rgba(255,255,255,.1));color:var(--ink-1);font-size:12.5px;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(-3px);transition:opacity .14s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.arr-ic{width:18px;height:18px;flex:none}
:is(.arr-open,.arr-undo,.arr-done,.arr-act,.arr-chip,.arr-grip,.arr-eye,.arr-more):active{transform:scale(.96)}
.dash.arranging:not(.life-detail)>:not(.arr){display:none!important}
.life-detail.arranging>:not(.ld-head):not(.ld-board){display:none!important}
.ld-board:has(>.dash.arranging)>:not(.dash){display:none!important}
.life-detail.arranging .ld-head :is(.ld-nav,.ld-chip,.ld-line,.ld-x,.ld-back,.arr-open){display:none!important}
.arr-sub{margin:3px 0 0;font-size:14px;line-height:1.35;color:var(--ink-3)}
.arr-tools{margin-inline-start:auto;display:flex;align-items:center;gap:8px}
.arr-undo{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:14px;transition:opacity .15s ease,border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-undo:disabled{opacity:.35;cursor:default;transform:none}
.arr-reset{min-height:44px;padding:0 12px;color:var(--ink-2);font-size:14px;text-decoration:underline;text-underline-offset:5px;text-decoration-color:var(--hair-2);transition:color .15s ease}
.arr-done{min-height:48px;padding:0 28px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:16px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),filter .15s ease}
.arr{display:flex;flex-direction:column;gap:12px;animation:arrIn .22s cubic-bezier(.23,1,.32,1) both}
@keyframes arrIn{from{opacity:0;transform:translateY(8px)}}
.arr :focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.arr-hint{margin:0;padding:12px 16px;border-radius:14px;background:var(--sf-1);border:1px solid var(--sf-edge);font-size:14px;line-height:1.5;color:var(--ink-2);max-width:76ch}
.arr-grid{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.arr-card,.arr-row{--dx:0px;--dy:0px;position:relative;border-radius:18px;border:1px solid var(--sf-edge-2);background:var(--sf-1);transition:transform .22s cubic-bezier(.23,1,.32,1),opacity .16s ease,border-color .15s ease}
.arr-card{display:flex;flex-direction:column;min-height:120px}
.arr-h{display:flex;align-items:center;gap:2px;padding:8px 8px 4px 6px}
:is(.arr-grip,.arr-eye,.arr-more){flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;color:var(--ink-3);transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-grip{cursor:grab;touch-action:none}
.arr-name{flex:1;min-width:0;display:flex;align-items:center;min-height:44px;padding:0 10px;border-radius:12px;text-align:start;font-size:16px;font-weight:600;color:var(--ink-1);cursor:text;transition:background-color .15s ease}
.arr-name:disabled{cursor:default;color:var(--ink-2);font-weight:500}
.arr-nm{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arr-peek{position:relative;max-height:150px;overflow:hidden;padding:0 18px 16px;opacity:.7;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent);mask-image:linear-gradient(180deg,#000 55%,transparent)}
.arr-peek .tiles{display:block;margin:0}
.arr-peek .tile{border:0;background:none;padding:0;animation:none}
.arr-peek .tile>.tl-h{display:none}
.arr-pl{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--ink-2)}
.arr-pe{margin:0;font-size:14px;color:var(--ink-3)}
.arr-card.lifted,.arr-row.lifted{z-index:2;transform:translate(var(--dx),var(--dy)) scale(1.025) rotate(-.5deg);border-color:rgba(245,198,107,.6);box-shadow:inset 0 1px 0 rgba(246,239,230,.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);transition:border-color .15s ease,box-shadow .15s ease}
html[dir=rtl] :is(.arr-card,.arr-row).lifted{transform:translate(var(--dx),var(--dy)) scale(1.025) rotate(.5deg)}
:is(.arr-card,.arr-row).lifted.kb{transition:transform .2s cubic-bezier(.23,1,.32,1),border-color .15s ease}
:is(.arr-card,.arr-row).lifted .arr-grip{color:var(--gold);cursor:grabbing}
:is(.arr-card,.arr-row).settling{transition:transform .26s cubic-bezier(.34,1.45,.64,1)}
.arr-grid.dragging{cursor:grabbing}
.arr-grid.dragging :is(.arr-card,.arr-row):not(.lifted){opacity:.9}
:is(.arr-card,.arr-row).going{opacity:0;transform:scale(.96);transition:opacity .16s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-rn{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid rgba(245,198,107,.6);background:var(--sf-0)}
.arr-rn .arr-input{flex:1;min-width:0;background:none;border:0;padding:0;color:var(--ink-1);font:600 16px var(--sans);outline:none;caret-color:var(--gold)}
.arr .arr-rn .arr-input:focus-visible{outline:none}
.arr-rn-k{font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.arr-tray{padding:14px 16px 16px;border-radius:18px;border:1px dashed var(--hair-2);background:var(--sf-0)}
.arr-tray-h{margin:0 0 10px;font-size:15px;font-weight:600;color:var(--ink-1)}
.arr-chips{display:flex;flex-wrap:wrap;gap:8px}
.arr-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;max-width:100%;padding:0 16px 0 12px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:14.5px;transition:border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-chip .arr-ic{color:var(--gold)}
.arr-tray-n{margin:10px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.arr-empty{grid-column:1/-1;margin:0;padding:18px;border-radius:16px;background:var(--sf-1);font-size:14px;color:var(--ink-2)}
/* the list form: a phone, and Simple view */
.arr-list{max-width:760px}
.arr-list .arr-grid{grid-template-columns:minmax(0,1fr);gap:8px}
.arr-row{border-radius:16px}
.arr-row.open{border-color:rgba(245,198,107,.4)}
.arr-rt{display:flex;align-items:center;gap:2px;min-height:64px;padding:6px 4px}
.arr-rb{flex:1;min-width:0;min-height:52px;display:flex;align-items:center;padding:4px 6px;border-radius:12px;text-align:start}
.arr-rw{display:flex;flex-direction:column;gap:2px;min-width:0}
.arr-rw .arr-nm{font-size:16px;font-weight:600;color:var(--ink-1)}
.arr-q::before{content:" “"}.arr-q::after{content:"”"}
html[lang=ar] .arr-q::before{content:" «"}html[lang=ar] .arr-q::after{content:"»"}
.arr-kind{font-size:13.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arr-panel{display:flex;flex-direction:column;gap:12px;padding:2px 14px 14px;animation:arrIn .2s cubic-bezier(.23,1,.32,1) both}
.arr-f{display:flex;flex-direction:column;gap:6px;font-size:13.5px;color:var(--ink-3)}
.arr-f .arr-input{min-height:48px;padding:0 14px;border-radius:12px;border:1px solid var(--hair-2);background:var(--sf-0);color:var(--ink-1);font:16px var(--sans);caret-color:var(--gold)}
.arr .arr-f .arr-input:focus-visible{outline:none;border-color:rgba(245,198,107,.75)}
.arr-acts{display:flex;flex-wrap:wrap;gap:8px}
.arr-act{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;padding:0 12px;white-space:nowrap;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:14px;transition:opacity .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-act:disabled{opacity:.35;transform:none}
.arr-link{align-self:flex-start;min-height:44px;padding:0 2px;color:var(--ice);font-size:14px}
.arr-tools2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.arr-tools2 .arr-reset{margin-inline-start:auto}
@media (max-width:760px){
  .life-detail.arranging .ld-head>:not(.ld-title):not(.arr-tools){display:none!important}
  .life-detail.arranging .ld-head{flex-wrap:nowrap}
  .arr-done{min-height:44px;padding:0 22px}
  .arr-hint{font-size:13.5px}
  .arr-entry{margin-bottom:6px}
  /* a phone: the pencil sits at the end of the second header row, under the close, and the worlds' dots make room */
  .life-detail.dash .ld-head>.arr-open{order:6;margin:-6px -6px -6px 0}
  html[dir=rtl] .life-detail.dash .ld-head>.arr-open{margin:-6px 0 -6px -6px}
  /* its place is kept on every page, with or without a pencil and before the page's numbers arrive, so › never moves
     under her thumb (hopping with › from a page without one would otherwise land on the pencil) */
  .life-detail.dash .ld-head .ld-nav{width:calc(100% - 48px)}
}
/* the worlds' dots give way before anything else in the header: with every section on (up to 17) the pencil never
   covers ›, and on a computer the section's name stays on one line instead of the dots pushing it to wrap */
.life-detail.dash .ld-head .ld-dots{min-width:0}
.life-detail.dash .ld-head .ld-dot{flex:0 1 22px;min-width:8px}
.life-detail.dash .ld-head :is(.ld-prev,.ld-next){flex:none}
@media (min-width:761px){
  /* only the name and the dots give way when the header is short of room (on a narrower window they share it by their
     size), so the name never collapses and Worlds never wraps; the space left over stays after the name */
  .life-detail.dash .ld-head>.ld-title{flex:0 1 auto;margin-inline-end:auto}
  .life-detail.dash .ld-head>.ld-nav{flex:0 1 auto;min-width:0}
  .life-detail.dash .ld-head>:not(.ld-title):not(.ld-nav):not(.arr-tools){flex-shrink:0}
  /* the same on a computer: the pencil's place beside × is kept, so the dots don't jump when it arrives */
  .life-detail.dash .ld-head:not(:has(>.arr-open))>.ld-x{margin-inline-start:48px}
}
/* a full-size window: the dots give way first, so the name keeps its one line */
@media (min-width:1100px){.life-detail.dash .ld-head>.ld-title{flex-shrink:0}}
/* after Done: her sections settle into their new places, and a few sparks leave Done */
.tiles.arr-mine{grid-auto-flow:row dense}
.tiles.has-lanes{display:flex;flex-direction:column;gap:22px}
.tiles.has-lanes>.tiles{margin:0}
.lanes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.lanes.n2{grid-template-columns:repeat(2,minmax(0,1fr))}.lanes.n1{grid-template-columns:minmax(0,1fr)}
.lane-g{display:flex;flex-direction:column;gap:10px;min-width:0;animation:ldIn .45s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 40ms)}
.lane-h{display:flex;align-items:center;gap:10px;margin:0;padding:0 2px 8px;border-bottom:1px solid var(--hair);font-size:17px;font-weight:600;line-height:1.3;color:var(--ink-1)}
.lane-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
/* words never sit on the stars (a life section's own sky sits behind its page): the group names, the way into
   arranging and the dashed group headings in edit mode keep a patch of plain night */
.lane-h>span{background:#03040a;box-shadow:0 0 10px 6px #03040a;border-radius:8px}
.arr-entry .arr-open{background:#03040a}
.l-done .lane-dot{background:var(--mint);box-shadow:0 0 10px rgba(111,242,196,.45)}
.l-now .lane-dot{background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.45)}
.l-next .lane-dot{background:var(--ice);box-shadow:0 0 10px rgba(92,225,255,.4)}
.l-now .lane-h{border-bottom-color:rgba(245,198,107,.35)}
.lane-tiles{margin:0}
.lanes .lane-tiles{grid-template-columns:minmax(0,1fr)}
.lanes .lane-tiles>.tile{grid-column:1 / -1}
.lane-empty{margin:0;padding:14px 16px;border-radius:16px;border:1px dashed var(--hair-2);background:var(--sf-0);font-size:14px;line-height:1.5;color:var(--ink-3)}
.tiles.arr-settle .lane-g{animation:arrSettle .28s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 40ms)}
.arr-card.arr-lane{grid-column:1 / -1;min-height:0;background:#03040a;border-style:dashed}
.arr-card.arr-wide{grid-column:1 / -1}
.arr-card.arr-lane .arr-peek{display:none}
.arr-row.arr-lane{background:#03040a;border-style:dashed}
.arr-row.arr-in{margin-inline-start:14px}
@media (max-width:1100px){.lanes,.lanes.n2{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.lane-g{animation:none!important}}
.tiles.arr-settle>.tile,.sb.arr-settle .sb-g{animation:arrSettle .28s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 26ms)}
@keyframes arrSettle{from{opacity:.35;transform:translateY(10px) scale(.985)}}
.arr-spark{position:fixed;z-index:90;width:0;height:0;pointer-events:none}
.arr-spark i{position:absolute;left:-2.5px;top:-2.5px;width:5px;height:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(245,198,107,.8);animation:arrSpark .3s cubic-bezier(.23,1,.32,1) forwards}
@keyframes arrSpark{from{transform:translate(0,0) scale(.7);opacity:1}to{transform:translate(var(--x),var(--y)) scale(.4);opacity:0}}
@media (hover:hover){
  .arr-open:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
  .arr-open:is(:hover,:focus-visible)::after{opacity:1;transform:none;transition-delay:.35s}
  .arr-reset:hover{color:var(--ink-1)}
  .arr-done:hover{filter:brightness(1.06)}
  :is(.arr-grip,.arr-eye,.arr-more):hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
  .arr-name:hover:not(:disabled){background:rgba(var(--k-246-239-230,246,239,230),.05)}
  .arr-chip:hover{border-color:rgba(245,198,107,.55)}
}
@media (prefers-reduced-motion:reduce){
  .arr,.arr-panel,.tiles.arr-settle>.tile,.sb.arr-settle .sb-g{animation:none!important}
  :is(.arr-card,.arr-row){transition:none!important}
  :is(.arr-card,.arr-row).lifted,html[dir=rtl] :is(.arr-card,.arr-row).lifted{transform:translate(var(--dx),var(--dy))}
}
/* sections she can open and close */
.tile.fold{gap:6px}
.tl-fold{display:flex;align-items:center;gap:10px;width:100%;margin:-4px 0;padding:4px 0;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.tl-fold-t{flex:1}
.tl-fold-c{flex:none;width:8px;height:8px;margin-right:4px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.tile.fold.open .tl-fold-c{transform:rotate(-135deg) translate(-2px,-2px)}
.tl-fold:hover .tl-fold-t{color:var(--ink-1)}
.tl-peek{margin:0;font-size:13px;color:var(--ink-3);cursor:pointer}
.tile.fold:not(.open){background:rgba(var(--k-246-239-230,246,239,230),.02)}
.tile.wrap .tl-row .m b,.tile.wrap .tl-row .m small{white-space:normal}
.tile.wrap .tl-row .m small{line-height:1.45}
/* the day's message */
.tile.k-today{padding:20px 20px 18px;border-color:rgba(var(--c),.3);background:radial-gradient(90% 120% at 100% 0%,rgba(var(--c),.12),rgba(var(--c),0) 60%),linear-gradient(180deg,rgba(var(--k-246-239-230,246,239,230),.04),rgba(var(--k-246-239-230,246,239,230),.012))}
.tl-today{display:flex;flex-direction:column;gap:10px;max-width:880px}
.td-date{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(var(--c),.95)}
.td-head{margin:0;font-family:var(--display);font-size:clamp(26px,3vw,36px);line-height:1.1;color:var(--ink-1)}
.td-text{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-2);max-width:70ch}
.td-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.td-p{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-3-4-10,3,4,10),.3);border:1px solid var(--hair)}
.td-p small{font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.td-p.up small{color:var(--mint)}.td-p.down small{color:var(--gold)}
.td-p span{font-size:13.5px;line-height:1.45;color:var(--ink-1)}
.td-q{margin:2px 0 0;display:flex;flex-direction:column;gap:3px;font-family:var(--display);font-size:19px;line-height:1.35;color:var(--ink-1)}
.td-q small{font-family:var(--sans);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.td-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}
.td-words{display:flex;flex-direction:column;gap:8px;flex:1 1 300px}
.td-energy{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;min-width:220px}
.td-n{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.td-n b{font-family:var(--display);font-weight:400;font-size:44px;line-height:1;color:var(--ink-1)}
.td-n span{font-size:13px;color:rgba(var(--c),.95);letter-spacing:.04em}
.td-n small{flex-basis:100%;font-size:12px;color:var(--ink-3)}
.td-week{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;height:58px;align-items:end}
.td-bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%}
.td-bar i{display:block;width:100%;max-width:18px;border-radius:4px 4px 2px 2px;background:rgba(var(--c),.28)}
.td-bar.now i{background:rgba(var(--c),.9)}.td-bar.best i{background:var(--mint);opacity:.8}
.td-bar small{font-size:11px;color:var(--ink-3)}
.td-best{margin:0;font-size:12px;color:var(--mint)}
.td-why{margin:0;font-size:12.5px;color:var(--ink-3)}
@media (max-width:760px){.td-two{grid-template-columns:1fr}.tile.k-today{padding:16px 14px 14px}}
/* finance command center: money flow and net worth (public/js/money.js) */
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mn-flow,.mn-worth{display:flex;flex-direction:column;gap:14px}
.mn-head{display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}
.mn-seg{display:inline-flex;gap:2px;padding:3px;border-radius:999px;border:1px solid var(--hair);background:rgba(var(--k-3-4-10,3,4,10),.35)}
.mn-seg button{padding:6px 12px;border-radius:999px;font-size:12.5px;color:var(--ink-3);transition:color .15s ease,background .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.mn-seg button:hover{color:var(--ink-1)}
.mn-seg button:active{transform:scale(.97)}
.mn-seg button[aria-selected="true"]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.1)}
.mn-seg.small button{padding:5px 10px;font-size:12px;font-variant-numeric:tabular-nums}
.mn-sum{margin:0;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px;color:var(--ink-3)}
.mn-sum b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.mn-sum .kept b{color:var(--mint)}.mn-sum .over b{color:var(--rose)}
.mn-stage{position:relative;min-height:300px}
.mn-svg{display:block;overflow:visible}
.mn-band{opacity:.34;transition:opacity .18s ease;outline:none}
.mn-band:focus-visible{opacity:.75}
.mn-svg.dim .mn-band{opacity:.14}.mn-svg.dim .mn-band.on{opacity:.7}
.mn-lead{fill:none;stroke:var(--hair-2);stroke-width:1}
.mn-node{opacity:.95}.mn-node.mid{opacity:.8}
.mn-l{font-size:13px;fill:var(--ink-1);font-family:var(--sans)}
.mn-l.mid{font-size:12px;fill:var(--ink-2);letter-spacing:.02em}
.mn-l.on,.mn-v.on{paint-order:stroke;stroke:rgba(var(--k-3-4-10,3,4,10),.85);stroke-width:3px;stroke-linejoin:round}
.mn-v{font-size:12px;fill:var(--ink-3);font-variant-numeric:tabular-nums;font-family:var(--sans)}
.mn-tip span{display:block;color:var(--ink-2)}
.mn-tip b{display:block;color:var(--ink-1);font-weight:600;margin-bottom:2px}
.mn-wtop{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}
.mn-big{display:flex;flex-direction:column;gap:4px}
.mn-big b{font-family:var(--display);font-weight:400;font-size:clamp(34px,4vw,48px);line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.mn-chg{font-size:13px;color:var(--ink-3)}.mn-chg.up{color:var(--mint)}.mn-chg.down{color:var(--rose)}
.mn-chart{position:relative;min-height:170px;margin:0 -2px}
.mn-wsvg{display:block;overflow:visible;touch-action:pan-y}
.mn-line{fill:none;stroke:rgb(var(--c));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.mn-g0{stop-color:rgb(var(--c));stop-opacity:.22}.mn-g1{stop-color:rgb(var(--c));stop-opacity:0}
.mn-grid{stroke:var(--hair);stroke-width:1}
.mn-ax{font-size:11px;fill:var(--ink-3);font-family:var(--sans);font-variant-numeric:tabular-nums}
.mn-dot{fill:rgb(var(--c));stroke:var(--h-0b0c16,#0b0c16);stroke-width:2}
.mn-cross{stroke:var(--hair-2);stroke-width:1;transition:opacity .12s ease}
.mn-dot.hot{transition:opacity .12s ease}
.mn-lower{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:28px;margin-top:4px}
.mn-split{display:flex;flex-direction:column;gap:18px}
.mn-sp{display:flex;flex-direction:column;gap:8px}
.mn-sp-h{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink-2)}
.mn-sp-h b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.mn-sp-t{display:flex;gap:2px;height:10px;min-width:8px}
.mn-sp-t i{display:block;min-width:3px;border-radius:3px;outline:none}
.mn-sp-t i:focus-visible{box-shadow:0 0 0 2px var(--ink-1)}
.mn-sp-t.empty{background:var(--hair);border-radius:3px}
.mn-key{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.mn-key i,.mn-g-h i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:0}
.mn-groups{display:flex;flex-direction:column;gap:14px}
.mn-g{display:flex;flex-direction:column}
.mn-g-h{display:flex;align-items:baseline;gap:8px;padding:0 0 6px;border-bottom:1px solid var(--hair);font-size:13px;color:var(--ink-2)}
.mn-g-h span{flex:1}
.mn-g-h em{font-style:normal;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.mn-g-h em.up{color:var(--mint)}.mn-g-h em.down{color:var(--rose)}
.mn-g-h b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.mn-a{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 0;border-bottom:1px solid var(--hair);text-align:left;transition:background .15s ease}
.mn-a:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.mn-a:active{transform:scale(.995)}
.mn-a-m,.mn-a-v{display:flex;flex-direction:column;gap:2px;min-width:0}
.mn-a-v{align-items:flex-end;flex:none}
.mn-a b{font-weight:500;font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.mn-a small{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mn-a small.up{color:var(--mint)}.mn-a small.down{color:var(--rose)}
.mn-foot{margin:0;font-size:12px;line-height:1.5;color:var(--ink-3)}
@media (max-width:760px){
  .mn-lower{grid-template-columns:1fr;gap:22px}
  .mn-head{flex-direction:column;align-items:stretch}
  .mn-seg{align-self:flex-start;max-width:100%;overflow-x:auto;scrollbar-width:none}
  .tile.k-flow,.tile.k-worth{padding:16px 14px 14px}
}
@media (prefers-reduced-motion:reduce){.mn-band,.mn-cross,.mn-dot.hot{transition:none}}
/* finance drill-down: right under the header, following whatever is picked in it (public/js/moneydrill.js) */
.tile.md{margin:0 0 14px;padding:16px 20px 18px;gap:14px;animation:none}
.md-h{align-items:center;flex-wrap:wrap;gap:8px 16px}
.md-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0;font-size:14px}
.md-crumb{padding:2px 0;color:var(--ink-3);font-size:14px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2);transition:color .15s ease}
.md-crumb:hover{color:var(--ink-1)}
.md-sep{color:var(--ink-3);opacity:.6}
.md-here{font-weight:500;color:var(--ink-1)}
.md-right{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-left:auto}
.md-clear{font-size:12.5px;color:var(--ink-3);text-decoration:underline;text-underline-offset:3px}
.md-clear:hover{color:var(--ink-1)}
.md-tabs{display:inline-flex;gap:2px;padding:3px;border-radius:999px;border:1px solid var(--hair);background:rgba(var(--k-3-4-10,3,4,10),.35)}
.md-tab{padding:5px 11px;border-radius:999px;font-size:12px;color:var(--ink-3);transition:color .15s ease,background .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-tab:hover{color:var(--ink-1)}.md-tab:active{transform:scale(.97)}
.md-tab.on{color:var(--ink-1);background:rgba(var(--c),.16);box-shadow:inset 0 0 0 1px rgba(var(--c),.35)}
.md-body{display:flex;flex-direction:column;gap:18px;animation:mdIn .22s cubic-bezier(.23,1,.32,1)}
@keyframes mdIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.md-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 18px}
.md-stat{display:flex;flex-direction:column;gap:3px;min-width:0}
.md-stat b{font-family:var(--display);font-weight:400;font-size:clamp(24px,2.4vw,32px);line-height:1.05;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}
.md-stat span{font-size:12.5px;color:var(--ink-2)}
.md-stat small{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.md-stat .t-good,.md-bar small.t-good,.md-acct small.t-good,.md-acct-v b.t-good{color:var(--mint)}
.md-stat .t-bad,.md-bar small.t-bad,.md-acct small.t-bad{color:var(--rose)}
.md-stat .t-warn{color:var(--gold)}
.md-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:22px 30px;align-items:start}
.md-block{display:flex;flex-direction:column;gap:8px;min-width:0}
.md-kh{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.md-k{margin:0;font-size:12.5px;font-weight:500;color:var(--ink-2);letter-spacing:.01em}
.md-count{font-size:12px;color:var(--ink-3)}
.md-bars{display:flex;flex-direction:column}
.md-bar{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(40px,1fr) auto;align-items:center;gap:12px;width:100%;padding:8px 6px;margin:0 -6px;border-radius:10px;text-align:left;color:inherit;transition:background .15s ease}
button.md-bar:hover,button.md-bar.on{background:rgba(var(--k-246-239-230,246,239,230),.04)}
button.md-bar:active{transform:scale(.995)}
.md-bar-n{display:flex;align-items:center;gap:8px;min-width:0;font-size:13.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-dot{flex:none;width:8px;height:8px;border-radius:2px}
.md-bar-t{height:8px;border-radius:4px;background:rgba(var(--k-246-239-230,246,239,230),.05);overflow:hidden}
.md-bar-t i{display:block;height:100%;border-radius:4px;background:rgba(var(--c),.7)}
.md-bar-v{display:flex;flex-direction:column;align-items:flex-end;gap:1px;min-width:76px}
.md-bar-v b{font-weight:500;font-size:13.5px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.md-bar-v small{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.md-tx,.md-stmt{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.md-txr,.md-stmt-r{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 0;border-bottom:1px solid var(--hair);text-align:left;color:inherit}
button.md-txr,button.md-stmt-r{transition:background .15s ease}
button.md-txr:hover,button.md-stmt-r:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
button.md-txr:active,button.md-stmt-r:active{transform:scale(.995)}
.md-txm{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.md-txm b{font-weight:500;font-size:13.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-txm small{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-txv{flex:none;font-size:13.5px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.md-txv.in{color:var(--mint)}
.md-after{flex:none;min-width:78px;text-align:right;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.md-after.low{color:var(--gold)}
.md-stmt-head{display:flex;justify-content:flex-end;gap:12px;padding:0 0 4px;border-bottom:1px solid var(--hair);font-size:11.5px;color:var(--ink-3)}
.md-stmt-head span:first-child{flex:1}.md-stmt-head span:last-child{min-width:78px;text-align:right}
.md-stmt-cut{padding:14px 0 4px;font-size:12px;color:var(--ink-3);letter-spacing:.02em}
.md-more{align-self:flex-start;margin-top:4px;font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}
.md-more:hover{color:var(--ink-1)}
.md-accts{display:flex;flex-direction:column}
.md-acct{display:grid;grid-template-columns:minmax(0,1fr) 120px auto;align-items:center;gap:14px;width:100%;padding:10px 0;border-bottom:1px solid var(--hair);text-align:left;color:inherit;transition:background .15s ease}
.md-acct:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.md-acct:active{transform:scale(.995)}
.md-acct-m,.md-acct-v{display:flex;flex-direction:column;gap:2px;min-width:0}
.md-acct-v{align-items:flex-end;min-width:90px}
.md-acct b{font-weight:500;font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.md-acct small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-spark{display:block;width:100%;height:auto;overflow:visible}
.md-acct .md-spark{height:30px}
.md-wide .md-spark{height:90px}
.md-spark-l{fill:none;stroke:rgb(var(--c));stroke-width:1.6;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.md-spark-a{fill:rgba(var(--c),.1);stroke:none}
.md-spark-d{fill:rgb(var(--c))}
.md-note,.md-hint,.md-empty{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.md-empty{padding:6px 0}
.md-acts{display:flex;flex-wrap:wrap;gap:8px}
.md-act{padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);font-size:13px;color:var(--ink-1);transition:background .15s ease,border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-act:hover{border-color:rgba(var(--c),.6)}
.md-act.primary{border-color:rgba(var(--c),.55);background:rgba(var(--c),.1)}
.md-act:active{transform:scale(.97)}
.md :is(button):focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px}
@media (max-width:760px){
  .tile.md{padding:14px 14px 16px;margin:0 0 12px}
  .md-right{margin-left:0;width:100%;justify-content:space-between}
  .md-cols{grid-template-columns:1fr;gap:20px}
  .md-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md-acct{grid-template-columns:minmax(0,1fr) 72px auto;gap:10px}
  .md-bar{grid-template-columns:minmax(0,1fr) 64px auto;gap:10px}
}
@media (prefers-reduced-motion:reduce){.md-body{animation:none}}
.tl-wx{display:flex;flex-direction:column;gap:14px}
.wx-top{display:flex;flex-direction:column;gap:8px;max-width:820px}
.wx-week{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(var(--c),.95)}
.wx-head{margin:0;font-family:var(--display);font-size:clamp(24px,2.8vw,34px);line-height:1.12;color:var(--ink-1);text-wrap:balance}
.wx-text{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.wx-text:empty{display:none}
.wx-focus{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.wx-for{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 4px;font-size:13.5px;color:var(--ink-3)}
.wx-for b{font-weight:600;color:var(--ink-1)}
.wx-dot{color:var(--ink-3)}
.wx-change{margin-left:6px;padding:2px 0;font-size:13px;color:rgba(var(--c),.95);border-bottom:1px solid rgba(var(--c),.35);transition:color .15s ease,border-color .15s ease}
.wx-change:hover,.wx-change[aria-expanded="true"]{color:var(--ink-1);border-color:currentColor}
.wx-why{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.wx-pick{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:6px;padding:12px 0 2px;border-top:1px solid var(--hair)}
.wx-pick .tchips button{min-height:34px;padding:6px 12px;font-size:12.5px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.wx-pick .tchips button:disabled{opacity:.4}
.wx-pick .tchips button:active:not(:disabled){transform:scale(.97)}
.wx-days{list-style:none;margin:2px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.wx-day{display:flex;flex-direction:column;gap:10px;padding:14px 12px 14px;border-left:1px solid var(--hair);transition:opacity .2s ease}
.wx-day:first-child{border-left:0;padding-left:2px}
.wx-k{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.wx-d{font-size:12.5px;font-weight:600;color:var(--ink-1)}
.wx-ic{width:26px;height:26px;color:var(--ink-3)}
.wx-c{font-size:12px;color:var(--ink-3)}
.wx-l{margin:0;font-size:13px;line-height:1.45;color:var(--ink-2)}
.c-clear .wx-ic,.c-bright .wx-ic{color:var(--gold)}
.c-gusty .wx-ic{color:var(--ice)}
.c-storm .wx-ic{color:var(--rose)}
.c-fog .wx-ic{color:var(--violet)}
.wx-day.today{background:linear-gradient(180deg,rgba(var(--c),.10),rgba(var(--c),0) 70%);box-shadow:inset 0 2px 0 rgba(var(--c),.9)}
.wx-day.today .wx-d{color:rgba(var(--c),1)}
.wx-day.today .wx-l{color:var(--ink-1)}
.wx-day.past{opacity:.48}
.wx-kit{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.wx-p{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-3-4-10,3,4,10),.3);border:1px solid var(--hair)}
.wx-p small{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.wx-p.up small{color:var(--mint)}.wx-p.down small{color:var(--gold)}
.wx-p span{font-size:13.5px;line-height:1.45;color:var(--ink-1)}
.wx-p.say span{font-family:var(--display);font-size:16px;line-height:1.35}
.wx-head,.wx-text,.wx-l,.wx-p span{transition:filter .18s ease,opacity .18s ease}
.wx-swap{filter:blur(3px);opacity:.25}
.tl-wx.writing .wx-week::after{content:" · NOVA is writing this week’s";text-transform:none;letter-spacing:.02em;color:var(--ink-3)}
@media (max-width:900px){
  .wx-days{grid-template-columns:1fr}
  .wx-day{display:grid;grid-template-columns:118px 1fr;align-items:center;gap:12px;padding:11px 4px 11px 10px;border-left:0;border-top:1px solid var(--hair)}
  .wx-day:first-child{padding-left:10px}
  .wx-day:first-child{border-top:0}
  .wx-k{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:1px;align-items:center}
  .wx-k .wx-ic{grid-column:1;grid-row:1/3;width:24px;height:24px}
  .wx-k .wx-d{grid-column:2;grid-row:1}.wx-k .wx-c{grid-column:2;grid-row:2}
  .wx-day.today{box-shadow:inset 2px 0 0 rgba(var(--c),.9);background:linear-gradient(90deg,rgba(var(--c),.10),rgba(var(--c),0) 70%)}
  .wx-kit{grid-template-columns:1fr}
  .tile.k-weather{padding:16px 14px 14px}
}
@media (prefers-reduced-motion:reduce){.wx-swap{filter:none}}
/* the big three */
.tile.k-big3{padding:20px 20px 18px;border-color:rgba(var(--c),.28);background:radial-gradient(120% 100% at 0% 0%,rgba(var(--c),.09),rgba(var(--c),0) 60%),linear-gradient(180deg,rgba(var(--k-246-239-230,246,239,230),.035),rgba(var(--k-246-239-230,246,239,230),.012))}
.tl-big3{display:flex;flex-direction:column;gap:16px}
.b3-lede{margin:0;font-family:var(--display);font-size:clamp(20px,2.2vw,27px);line-height:1.25;color:var(--ink-1);max-width:46ch;text-wrap:balance}
.b3-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.b3{--el:214,196,255;display:flex;flex-direction:column;gap:8px;padding:14px 14px 12px;border-radius:14px;border:1px solid var(--hair);background:rgba(var(--el),.045)}
.b3.el-fire{--el:255,170,120}.b3.el-earth{--el:196,214,150}.b3.el-air{--el:178,198,255}.b3.el-water{--el:120,214,222}
.b3-top{display:flex;align-items:center;gap:8px}
.b3-g{font-size:18px;color:rgb(var(--el));width:20px;text-align:center}
.b3-role{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.b3-sign{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.b3-sg{font-size:20px;color:rgb(var(--el))}
.b3-sign b{font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.b3-sign small{font-size:12px;color:var(--ink-3)}
.b3-text{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.b3-notice{margin:0;padding:8px 10px;border-left:2px solid rgba(var(--el),.6);font-size:13.5px;line-height:1.5;color:var(--ink-1);background:rgba(var(--el),.05);border-radius:0 8px 8px 0}
.b3-notice span{color:rgb(var(--el))}
.b3-ask{align-self:flex-start;margin-top:auto;padding:6px 0 0;background:none;border:0;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px}
.b3-ask:hover{color:var(--ink-1)}
.b3-missing{border-style:dashed;align-items:flex-start}
.b3-bal{margin:0;font-size:13px;color:var(--ink-3)}
/* readings: wrapped, not one line */
.tl-read{display:flex;flex-direction:column}
.rd{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:start;gap:4px 10px;width:100%;padding:10px 0;border-top:1px solid var(--hair);background:none;border-left:0;border-right:0;border-bottom:0;color:inherit;font:inherit;text-align:left}
.rd:first-child{border-top:0;padding-top:2px}
button.rd{cursor:pointer;transition:background .15s}button.rd:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.rd-when{grid-column:1 / -1;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(var(--c),.9)}
.rd-g{font-size:15px;line-height:1.3;color:rgba(var(--c),.95);text-align:center}
.rd-m b{display:block;font-weight:500;font-size:13.5px;color:var(--ink-1)}
.rd-m p{margin:3px 0 0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.rd.t-good .rd-g{color:var(--mint)}.rd.t-warn .rd-g{color:var(--gold)}
.tl-read.grouped{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px 18px}
@media (min-width:1101px){.tl-read.grouped.g1{grid-template-columns:1fr}.tl-read.grouped.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.tl-read.grouped.g3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.tl-read.grouped.g1{grid-template-columns:1fr}
.rd-lede{margin:0 0 8px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.rd-group h5{margin:2px 0 4px;font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
/* Astrology's header: today's horoscope (the first view), her chart, and her map (astrocartography: her lines on NASA's
   Earth at night, public/js/astromap.js). The header is always night, whatever the page theme. */
.sc-date{margin:0;font-size:12px;letter-spacing:.06em;color:rgba(var(--c),.95)}
.sc-two{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:520px}
.sc-two-p{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border-radius:12px;background:rgba(var(--k-3-4-10,3,4,10),.45);border:1px solid var(--hair)}
.sc-two-p small{font-size:11.5px;color:var(--ink-3)}.sc-two-p.up small{color:var(--mint)}.sc-two-p.down small{color:var(--gold)}
.sc-two-p span{font-size:13px;line-height:1.4;color:var(--ink-1)}
.sc-hero.sc-mapview{grid-template-columns:1fr;align-items:start;min-height:0;background:linear-gradient(rgba(3,4,10,.8),rgba(3,4,10,.88)),#02030a var(--space)}
.sc-mapbox .am-read{background:linear-gradient(180deg,rgba(var(--c),.09),rgba(6,8,18,.72))}
.sc-hero.sc-mapview .sc-scene{display:none}
.sc-hero.sc-mapview .sc-over{grid-column:1;padding-bottom:6px}
.sc-hero.sc-mapview .sc-line{max-width:70ch}
.sc-mapbox{grid-column:1;position:relative;z-index:2;padding:4px 34px 28px 40px;min-width:0}
.sc-mapbox[hidden]{display:none}
@media (max-width:760px){.sc-mapbox{padding:0 14px 18px}.sc-two{grid-template-columns:1fr}}
.am-stage{position:relative;border-radius:14px;overflow:hidden;background:#04060d;touch-action:pan-y;box-shadow:inset 0 0 0 1px rgba(214,226,250,.08)}
.am-stage.globe{touch-action:none}
.am-stage.loading{animation:skPulse 1.4s ease-in-out infinite}
.am-cv{display:block;width:100%;height:100%;cursor:default;-webkit-tap-highlight-color:transparent}
.am-view{position:absolute;top:10px;right:10px;padding:6px 13px;border-radius:999px;border:1px solid rgba(214,226,250,.22);background:rgba(5,7,15,.72);color:#f6efe6;font:inherit;font-size:12.5px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.am-view:hover{border-color:rgba(214,226,250,.45)}.am-view:active{transform:scale(.97)}
.am-tip{position:absolute;z-index:2;max-width:min(300px,80%);padding:9px 12px 10px;border-radius:12px;border:1px solid rgba(214,226,250,.18);background:rgba(5,7,15,.94);color:#f6efe6;font-size:12.5px;line-height:1.45;pointer-events:none;box-shadow:0 12px 30px -12px rgba(0,0,0,.7)}
.am-tip b{display:block;font-weight:500;font-size:13.5px;margin-bottom:2px}.am-tip b i{font-style:normal}
.am-tip span{display:block;color:rgba(246,239,230,.74)}
.am-hint{margin:8px 0 0;font-size:12px;color:var(--ink-3)}
.am-keys{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.am-k,.am-g{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background .2s ease,border-color .2s ease,color .2s ease}
.am-k:active,.am-g:active{transform:scale(.97)}
.am-k i{font-style:normal;font-size:14px;color:rgb(var(--pc))}
.am-k[aria-pressed="true"]:not(.all){border-color:rgba(var(--pc),.6);background:rgba(var(--pc),.1);color:var(--ink-1)}
.am-k[aria-pressed="false"]:not(.all){opacity:.62}
.am-k.all[aria-pressed="true"]{border-color:var(--ink-3);color:var(--ink-1)}
.am-legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;font-size:12px;color:var(--ink-3)}
.am-legend span{display:inline-flex;align-items:center;gap:6px}
.am-legend span::before{content:"";width:16px;border-top:1.5px solid var(--ink-3)}
.am-legend span.dash::before{border-top-style:dashed}
.am-read{margin-top:14px;padding:14px 16px 12px;border-radius:14px;border:1px solid rgba(var(--c),.24);background:linear-gradient(180deg,rgba(var(--c),.07),rgba(var(--c),.02));display:flex;flex-direction:column;gap:8px}
.am-rh{display:flex;flex-direction:column;gap:2px}
.am-rk{font-size:12px;color:rgba(var(--c),.95)}
.am-rn{margin:0;font-family:var(--display);font-weight:400;font-size:26px;line-height:1.1;color:var(--ink-1)}
.am-rl{margin:0;font-size:14px;line-height:1.55;color:var(--ink-2);max-width:72ch}
.am-chips{display:flex;flex-wrap:wrap;gap:6px}
.am-chip{padding:3px 10px;border-radius:999px;font-size:12px;border:1px solid var(--hair-2)}
.am-chip.up{color:var(--mint);border-color:color-mix(in srgb,var(--mint) 45%,transparent)}
.am-chip.down{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.am-lines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:2px}
.am-line{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;padding:9px 0;border-top:1px solid var(--hair)}
.am-lg{font-size:17px;line-height:1.2;text-align:center;color:rgb(var(--pc))}
.am-lt{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.am-lt b{font-weight:500;font-size:13.5px;color:var(--ink-1)}.am-lt small{font-size:12px;color:var(--ink-3)}
.am-lm p{margin:3px 0 0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.am-line.t-intense .am-lt small::after{content:" · intense";color:var(--gold)}
.am-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:18px}
.am-col h5{margin:0 0 8px;font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1)}
.am-search{display:flex;gap:8px;margin-bottom:6px}
.am-search input{flex:1;min-width:0;padding:8px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:13.5px}
.am-search input:focus-visible{outline:none;border-color:rgba(var(--c),.7)}
.am-go{padding:8px 14px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--c),.12);color:var(--ink-1);font:inherit;font-size:13px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.am-go:active{transform:scale(.97)}.am-go:disabled{opacity:.6;cursor:default}
.am-list{display:flex;flex-direction:column}
.am-p{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:9px 8px 9px 4px;border:0;border-top:1px solid var(--hair);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:0;transition:background .15s ease}
.am-p:first-child{border-top:0}.am-p:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.am-p.on{background:rgba(var(--c),.07);box-shadow:inset 2px 0 0 rgba(var(--c),.9)}
.am-pd{width:8px;height:8px;margin-left:3px;border-radius:50%;background:var(--ink-3)}
.am-p.k-home .am-pd{background:var(--gold);box-shadow:0 0 0 2.5px color-mix(in srgb,var(--gold) 30%,transparent)}
.am-p.k-trip .am-pd{background:var(--gold)}.am-p.k-search .am-pd{background:var(--ice)}
.am-p.k-birth .am-pd{background:none;width:auto;height:auto;margin:0;line-height:1;color:var(--ink-2)}.am-p.k-birth .am-pd::before{content:"✦";font-size:12px}
.am-pm{display:flex;flex-direction:column;min-width:0}
.am-pm b{font-weight:500;font-size:13.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.am-pm small{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.am-pg{display:flex;gap:6px;align-items:center}
.am-pg i{font-style:normal;font-size:15px;color:rgb(var(--pc))}.am-pg i.near{opacity:.5}.am-pg i.close{opacity:.85}
.am-pg small{font-size:12px;color:var(--ink-3)}
.am-more{margin-top:6px;align-self:flex-start;padding:6px 0;border:0;background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px}
.am-goals{display:flex;flex-wrap:wrap;gap:6px}
.am-g[aria-pressed="true"]{border-color:color-mix(in srgb,var(--gold) 60%,transparent);background:color-mix(in srgb,var(--gold) 12%,transparent);color:var(--ink-1)}
.am-gw{margin:12px 0 4px;font-size:12.5px;color:var(--ink-3)}
.am-blist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.am-b{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;width:100%;padding:9px 8px 9px 2px;border:0;border-top:1px solid var(--hair);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .15s ease}
.am-blist li:first-child .am-b{border-top:0}.am-b:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.am-b.on{background:color-mix(in srgb,var(--gold) 8%,transparent)}
.am-bn{width:20px;height:20px;margin-top:1px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--h-1a1206,#1a1206);font-size:11px;font-weight:600}
.am-bm{display:flex;flex-direction:column;gap:1px;min-width:0}
.am-bm b{font-weight:500;font-size:13.5px;color:var(--ink-1)}.am-bm small{font-size:12px;color:var(--ink-3)}
.am-bm span{margin-top:2px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.am-empty{margin:8px 0 0;font-size:13px;line-height:1.5;color:var(--ink-3)}
/* finding a place: a search above the map, suggestions as she types */
.am-find{position:relative;display:flex;align-items:center;margin:0 0 10px}
.am-find-ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);display:grid;color:var(--ink-3);pointer-events:none}
.am-find-in{width:100%;padding:11px 14px 11px 38px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:14.5px;transition:border-color .2s ease}
.am-find-in::placeholder{color:var(--ink-3)}
.am-find-in:focus-visible{outline:none;border-color:rgba(var(--c),.7);box-shadow:0 0 0 3px rgba(var(--c),.1)}
.am-sug{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;border-radius:16px;border:1px solid var(--hair-2);background:var(--h-0b0e1a,#0b0e1a);box-shadow:0 18px 44px -18px rgba(0,0,0,.8);max-height:320px;overflow:auto}
.am-sg{display:flex;align-items:baseline;gap:8px;padding:9px 12px;border-radius:10px;cursor:pointer}
.am-sg b{font-weight:500;font-size:14px;color:var(--ink-1)}.am-sg small{font-size:12.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.am-sg:hover,.am-sg.on{background:rgba(var(--c),.12)}
/* the map's buttons, top right: crossings and globe */
.am-tools{position:absolute;top:10px;right:10px;display:flex;gap:6px}
.am-tools .am-view{position:static}
.am-view[aria-pressed="true"]{border-color:rgba(var(--c),.7);background:rgba(var(--c),.2)}
/* where her lines cross */
.am-cols:has(.am-cross){grid-template-columns:repeat(3,minmax(0,1fr))}
.am-x{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:start;gap:10px;width:100%;padding:9px 8px 9px 2px;border:0;border-top:1px solid var(--hair);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .15s ease}
.am-list .am-x:first-child{border-top:0}.am-x:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.am-x.on{background:rgba(var(--c),.07);box-shadow:inset 2px 0 0 rgba(var(--c),.9)}
.am-xg{display:flex;gap:1px;padding-top:1px}.am-xg i{font-style:normal;font-size:15px;color:rgb(var(--pc))}
.am-xh{margin-top:2px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.am-x .am-pm b,.am-x .am-pm small{white-space:normal}
.am-rx{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-1)}.am-rx i{font-style:normal;font-size:17px;margin-right:1px}
.am-xnear{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}
.am-xnear small{font-size:12px;color:var(--ink-3);margin-right:2px}
.am-xchip{padding:4px 10px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.am-xchip:hover{border-color:rgba(var(--c),.6);color:var(--ink-1)}.am-xchip:active{transform:scale(.97)}
@media (max-width:1100px){.am-cols:has(.am-cross){grid-template-columns:repeat(2,minmax(0,1fr))}.am-cross{grid-column:1 / -1}}
@media (max-width:760px){
  .am-lines,.am-cols,.am-cols:has(.am-cross){grid-template-columns:1fr}
  .am-find-in{font-size:16px}
  .am-cols{gap:18px}
  .am-read{padding:12px 13px 10px}
  .am-rn{font-size:23px}
  .am-k,.am-g{padding:6px 11px}
  .am-keys{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-14px;padding-right:14px;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .am-keys::-webkit-scrollbar{display:none}
  .am-k{flex:none}
}

/* how to read a chart */
.tl-howto{display:flex;flex-direction:column;gap:14px}
.ht-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ht-steps li{display:flex;flex-direction:column;gap:4px;padding-top:10px;border-top:1px solid rgba(var(--c),.35)}
.ht-g{font-size:17px;color:rgba(var(--c),.95)}
.ht-steps b{font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1)}
.ht-steps p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.ht-ex{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;background:rgba(var(--c),.06);border:1px solid rgba(var(--c),.2)}
.ht-k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:rgba(var(--c),.95)}
.ht-eq{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.ht-part{flex:1 1 150px;display:flex;flex-direction:column;gap:2px;padding:9px 11px;border-radius:10px;background:rgba(var(--k-3-4-10,3,4,10),.35)}
.ht-part small{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.ht-part b{font-weight:500;color:var(--ink-1)}
.ht-part span{font-size:12.5px;color:var(--ink-2)}
.ht-plus{align-self:center;color:var(--ink-3)}
.ht-sent{margin:0;font-family:var(--display);font-size:19px;line-height:1.35;color:var(--ink-1)}
.ht-more,.ht-wheel{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.ht-wheel{color:var(--ink-3)}
/* the sign cheat sheet */
.tl-signs{display:flex;flex-direction:column;gap:12px}
.zs-filter{display:flex;gap:6px;flex-wrap:wrap}
.zs-f{padding:5px 12px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:background .15s,color .15s}
.zs-f[aria-pressed="true"]{background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.35)}
.zs-f:active{transform:scale(.97)}
.zs-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:stretch}
.zs{--el:214,196,255;display:flex;flex-direction:column;gap:5px;padding:12px;border-radius:12px;border:1px solid var(--hair);background:rgba(var(--el),.035);color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.zs:hover{border-color:rgba(var(--el),.45)}
.zs.el-fire{--el:255,170,120}.zs.el-earth{--el:196,214,150}.zs.el-air{--el:178,198,255}.zs.el-water{--el:120,214,222}
.zs.mine{border-color:rgba(var(--el),.4);background:rgba(var(--el),.08)}
.zs-top{display:flex;align-items:center;gap:10px}
.zs-g{font-size:24px;line-height:1;color:rgb(var(--el));width:26px;text-align:center}
.zs-n b{display:block;font-weight:500;color:var(--ink-1)}
.zs-n small{font-size:11.5px;color:var(--ink-3)}
.zs p{margin:0;font-size:12.5px;line-height:1.45}
.zs-meta{color:var(--ink-3)}.zs-k{color:var(--ink-1)}.zs-sh{color:var(--ink-2)}
.zs-mine{color:rgb(var(--el));font-size:12px}
@media (max-width:1100px){.zs-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ht-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.tl-read.grouped{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){
  .b3-row{grid-template-columns:1fr}.zs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ht-steps{grid-template-columns:1fr 1fr;gap:10px}
  .tl-read.grouped{grid-template-columns:1fr}.tile.k-big3{padding:16px 14px 14px}
}
.tl-bars,.tl-meters{display:flex;flex-direction:column;gap:10px}
.tl-bar,.tl-meter{outline-offset:4px;border-radius:6px}
button.tl-meter{display:block;width:100%;text-align:left;background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer}
.tl-edit{margin-left:auto;margin-right:10px;font-size:12px;color:var(--ink-3);opacity:0;transition:opacity .15s ease}
.tl-goal:hover .tl-edit,.tl-goal:focus-visible .tl-edit{opacity:1}
@media (hover:none){.tl-edit{opacity:.7}}
.ds-prog{display:flex;align-items:center;gap:10px}.ds-prog input{flex:1;accent-color:var(--gold)}.ds-pv{min-width:3.2em;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.ds-acts{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ds-del{margin-left:auto;color:var(--rose,#f08a8a)}
.pj-del{align-self:flex-start;margin-top:4px;font-size:13px;color:var(--ink-3)}.pj-del[data-armed="1"]{color:var(--rose,#f08a8a)}
.tl-meter.t-warn .tl-sub{color:var(--gold)}
.tl-bar-t{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:5px}
.tl-bar-t .l{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tl-bar-t .v{color:var(--ink-1);font-variant-numeric:tabular-nums;white-space:nowrap}
.tl-track{position:relative;height:6px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.06)}
.tl-track i{position:absolute;inset-block:0;inset-inline-start:0;border-radius:3px;background:rgba(var(--c),.85)}
.tl-ref{position:absolute;top:-3px;bottom:-3px;width:2px;margin-left:-1px;border-radius:1px;background:var(--ink-2)}
.tl-legend{display:flex;align-items:center;gap:6px;margin:2px 0 0;font-size:11.5px;color:var(--ink-3)}
.tl-legend i.fill{width:12px;height:6px;border-radius:3px;background:rgba(var(--c),.85)}
.tl-legend i.tick{width:2px;height:10px;border-radius:1px;background:var(--ink-2);margin-left:8px}
.tl-cols,.tl-line{position:relative;display:flex;flex-direction:column;gap:6px;margin-top:auto}
.tl-cmax{position:absolute;top:-2px;right:0;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tl-cplot{display:flex;align-items:flex-end;gap:4px;height:112px;border-bottom:1px solid var(--hair);padding-top:14px}
.tl-col{flex:1;height:100%;display:flex;align-items:flex-end;border-radius:4px 4px 0 0;outline-offset:2px}
.tl-col i{display:block;width:100%;border-radius:4px 4px 0 0;background:rgba(var(--c),.45);transition:background .2s}
.tl-col i.last{background:rgba(var(--c),.9)}
.tl-col:hover i,.tl-col:focus i{background:rgba(var(--c),1)}
.tl-clabels{display:flex;gap:4px;font-size:11px;color:var(--ink-3)}
.tl-clabels span{flex:1;text-align:center;white-space:nowrap;overflow:hidden}
@media (max-width:760px){.tl-clabels.thin span{overflow:visible}.tl-clabels.thin span:nth-child(even){visibility:hidden}.tile.k-list{grid-column:1 / -1}}
.tl-clabels.ends{justify-content:space-between}.tl-clabels.ends span{flex:none}
.tl-svg{width:100%;height:96px;display:block;overflow:visible}
.tl-svg .ln{fill:none;stroke:rgba(var(--c),.95);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.tl-svg .area{fill:rgba(var(--c),.08)}
.tl-hits{position:absolute;left:0;right:0;top:0;height:96px}
.tl-hits span{position:absolute;top:0;bottom:0;width:20px;margin-left:-10px;outline-offset:0}
.tl-hits i{position:absolute;left:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 0 2px #070811;opacity:0;transition:opacity .15s}
.tl-hits span:hover i,.tl-hits span:focus i{opacity:1}
.tl-list{display:flex;flex-direction:column}
/* goals she reached: one line back through time, a mint point lit for each */
.tl-reached{list-style:none;margin:0;padding:0 0 0 2px;position:relative;display:flex;flex-direction:column}
.tl-reached::before{content:"";position:absolute;left:6px;top:14px;bottom:14px;width:1px;background:linear-gradient(180deg,rgba(var(--k-111-242-196,111,242,196),.55),rgba(var(--k-111-242-196,111,242,196),.08))}
.tr-r{position:relative;display:flex;align-items:center;gap:12px;padding:9px 0 9px 22px}
.tr-r+.tr-r{border-top:1px solid var(--hair)}
.tr-dot{position:absolute;left:2px;top:50%;width:9px;height:9px;margin-top:-4.5px;border-radius:50%;background:rgb(var(--k-111-242-196,111,242,196));box-shadow:0 0 0 3px rgba(var(--k-111-242-196,111,242,196),.14),0 0 12px rgba(111,242,196,.45)}
.tr-r:not(:first-child) .tr-dot{opacity:.7;box-shadow:0 0 0 3px rgba(var(--k-111-242-196,111,242,196),.1)}
.tr-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tr-m b{font-weight:500;font-size:14px;line-height:1.35}.tr-m small{font-size:12px;color:var(--ink-3)}
.tr-acts{flex:none;display:flex;gap:6px}
.tr-b{appearance:none;border:1px solid var(--hair-2);background:none;color:var(--ink-1);border-radius:999px;font:500 12px/1 var(--sans);padding:7px 11px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.tr-b:active{transform:scale(.97)}.tr-b.quiet{color:var(--ink-3)}.tr-b:disabled{opacity:.5;cursor:default}
@media (max-width:560px){.tr-r{flex-wrap:wrap}.tr-acts{width:100%}.tr-dot{top:15px;margin-top:0}}
.tl-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 0;border-top:1px solid var(--hair);font-size:13.5px}
.tl-row .tcheck{margin:0}.tl-row.has-tick:has(.tcheck.on) b{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.tl-row:first-child{border-top:0;padding-top:2px}
button.tl-row{transition:background .15s}button.tl-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.tl-row .m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tl-row .m b{font-weight:500;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-row .m small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-row.t-dim .m b{color:var(--ink-3)}
.tl-rv{font-variant-numeric:tabular-nums;color:var(--ink-1);white-space:nowrap}
.tl-rv.good{color:var(--mint)}.tl-rv.bad{color:var(--h-ffb4a2,#ffb4a2)}
.tl-tag{flex:none;font-size:11px;letter-spacing:.12em;padding:3px 7px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2)}
.tl-tag.good{border-color:rgba(var(--k-111-242-196,111,242,196),.4);color:var(--mint)}.tl-tag.warn{border-color:rgba(var(--k-245-198-107,245,198,107),.45);color:var(--gold)}.tl-tag.bad{border-color:rgba(var(--k-255-180-162,255,180,162),.45);color:var(--h-ffb4a2,#ffb4a2)}
.tl-more{margin-top:8px;align-self:flex-start;font-size:12.5px;color:var(--ink-2);padding:7px 12px;border-radius:999px;border:1px dashed rgba(var(--c),.45)}.tl-more:hover{color:var(--ink-1)}
.tl-note{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.tl-note p{flex:1 1 280px;margin:0;font-size:14px;line-height:1.55;color:var(--ink-2)}
.tl-note-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.cd-note{display:flex;flex-direction:column;gap:12px}
.cd-why{margin:0;font-size:14px;line-height:1.55;color:var(--ink-2);max-width:62ch}
.cd-cap{margin:4px 0 -6px;font-size:12.5px;color:var(--ink-3)}
.cd-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.cd-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 0;border-top:1px solid var(--hair)}
.cd-name{flex:1 1 140px;min-width:0;font-size:14.5px;color:var(--ink-1);overflow-wrap:anywhere}
.cd-pick{display:flex;align-items:center;gap:10px;flex:none}
.cd-sel{font:inherit;font-size:14px;color:var(--ink-1);background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid var(--hair-2);border-radius:10px;padding:0 10px;min-height:44px;min-width:7.5em}
.cd-sel option{background:var(--h-0b0d16,#0b0d16);color:var(--ink-1)}
.cd-save{min-height:44px;min-width:80px;border-radius:999px;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .2s ease}
.cd-save:active:not(:disabled){transform:scale(.97)}.cd-save:disabled{opacity:.6;cursor:default}
.cd-save.done:disabled{opacity:1;color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.35)}
.cd-x{margin-inline-start:auto;flex:none;display:grid;place-items:center;width:44px;height:44px;margin-block:-10px;margin-inline-end:-10px;border-radius:999px;color:var(--ink-3);transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease}
.cd-x:hover{color:var(--ink-1)}.cd-x:active{transform:scale(.94)}
@media (max-width:560px){.cd-pick{flex:1 1 100%}.cd-sel{flex:1}}
.tl-checkin{display:flex;flex-direction:column;gap:12px}
.ck-sub{margin:0;font-size:13px;color:var(--ink-3)}
.ck-chips{display:flex;flex-wrap:wrap;gap:8px}
.ck-chip{padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);font-size:13.5px;color:var(--ink-1);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.ck-chip:hover{border-color:rgba(var(--c),.5)}
.ck-chip:active{transform:scale(.97)}
.ck-chip[aria-expanded="true"]{border-color:rgba(var(--c),.75);background:rgba(var(--c),.1)}
.ck-chip.done{border-color:rgba(var(--k-111-242-196,111,242,196),.45);background:rgba(var(--k-111-242-196,111,242,196),.08)}
.ck-chip.done::before{content:"✓ ";color:var(--mint)}
.ck-other{color:var(--ink-3);border-style:dashed}
.ck-pick{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:rgba(var(--c),.07)}
.ck-pick[hidden]{display:none}
.ck-q{font-size:13.5px;color:var(--ink-2);margin-right:4px}
.ck-how{padding:7px 14px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-size:13px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .2s}
.ck-how:active{transform:scale(.96)}.ck-how[disabled]{opacity:.5}
:is(.ck-chip,.ck-how):focus-visible{outline:2px solid rgba(var(--c),.9);outline-offset:2px}
.sc-steps{margin:6px 0 12px;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.sc-steps b{color:var(--ink-1);font-weight:600}
.sc-key{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.apps-sc{margin-top:12px;border-top:1px solid var(--hair);padding-top:10px}.apps-sc summary{cursor:pointer;font-size:14px;color:var(--ink-1);font-weight:500}.apps-scbox{padding-top:8px}
.sc-status{margin:2px 0 10px;padding:8px 12px;border-radius:10px;background:color-mix(in srgb,var(--mint,#37a07b) 12%,transparent);color:var(--ink-1)}
.sc-status.bad{background:color-mix(in srgb,var(--gold,#b8893a) 16%,transparent)}
.sc-f{width:100%;display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}
.sc-f small{grid-column:1/-1;font-size:12px;color:var(--ink-3)}
.sc-f input{min-width:0;height:36px;padding:0 10px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:13px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
.tile.k-note{border-style:dashed;border-color:rgba(var(--c),.35);background:rgba(var(--c),.03)}
.tl-tip{position:fixed;left:0;top:0;z-index:60;pointer-events:none;max-width:260px;padding:7px 10px;border-radius:9px;background:var(--h-10131f,#10131f);border:1px solid var(--hair-2);font-size:12px;line-height:1.4;color:var(--ink-1);opacity:0;transition:opacity .12s;box-shadow:0 8px 24px rgba(var(--k-0-0-0,0,0,0),.45)}
.tl-tip.on{opacity:1}
.fp-live{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:12px;padding-top:10px;border-top:1px solid var(--hair);font-size:12.5px;color:var(--ink-3)}
.fp-live-t{flex:1;min-width:180px}
/* Finance › Accounts › Breakdown by group (public/js/acctgroups.js): each group's accounts, then two quiet lines (when its
   bank was last read · Sync now, and Something missing? Add an account). Plain text, 44px to tap, nothing shouting. */
.acg{display:flex;flex-direction:column;gap:6px}
.acg-g{display:flex;flex-direction:column}
.acg-g+.acg-g{margin-top:6px;padding-top:12px;border-top:1px solid var(--hair)}
.acg-h{display:flex;align-items:baseline;gap:6px;padding:0 0 2px}
.acg-h h4{margin:0;flex:1;font-size:13px;font-weight:500;line-height:1.3;color:var(--ink-2)}
.acg-sum{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.acg-owed{font-size:12px;color:var(--ink-3)}
.acg-f{display:flex;flex-direction:column;margin-top:2px}
.acg-line{display:flex;align-items:center;flex-wrap:wrap;gap:0 6px;min-height:44px;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.acg-act{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;color:var(--ink-1);text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px;transition:text-decoration-color .15s ease,opacity .15s ease}
.acg-act:hover{text-decoration-color:currentColor}
.acg-act:disabled{opacity:.5}
.acg-dot{color:var(--ink-3)}
.acg-sync.busy .acg-t{color:var(--ink-2)}
.acg-sync+.acg-add{margin-top:-10px}
button.acg-miss{width:100%;text-align:start;padding:0;border-radius:10px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
button.acg-miss:active{transform:scale(.99)}
button.acg-miss .acg-act{pointer-events:none}
.acg-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:2px 0 8px;animation:acgIn .18s cubic-bezier(.23,1,.32,1)}
.acg-opts[hidden]{display:none}
.acg-o{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:start;min-height:44px;padding:11px 14px;border-radius:14px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.025);transition:background-color .15s ease,border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.acg-o:hover{background:rgba(var(--k-246-239-230,246,239,230),.05);border-color:var(--hair-2)}
.acg-o:active{transform:scale(.98)}
.acg-o b{font-weight:500;font-size:13.5px;color:var(--ink-1)}
.acg-o small{font-size:12px;line-height:1.4;color:var(--ink-3)}
@keyframes acgIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (max-width:560px){.acg-opts{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.acg-opts{animation:none}button.acg-miss,.acg-o{transition:none}}
/* Finance overview panels (public/js/finpanels.js): a title and its total, a switch, a few clear rows, the rest a tap away */
/* every section's panels share Finance's calm: a clear title, room around it, one question per panel */
.dash .tile:not(.fp):not(.k-today):not(.k-big3){padding:18px 18px 14px;gap:12px;border-radius:20px}
.dash .tile .tl-h h4,.dash .tile.md .md-here{font-size:16px;font-weight:500;color:var(--ink-1);letter-spacing:0}
.dash .tile .tl-go{font-size:12.5px}
.tl-extra .tl-row:first-child{border-top:1px solid var(--hair);padding-top:9px}
.tl-showmore{margin-top:6px}
/* a section's read-out: three calm panels (how it's going, what to do, what NOVA knows) instead of one long column */
.ld-rest{margin-top:2px;gap:12px 12px}
.ld-col{display:flex;flex-direction:column;gap:12px}
.ld-panel{grid-column:auto}
.ld-panel .ld-label{font-family:var(--display);font-size:22px;line-height:1.2;color:var(--ink-1);display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px}
.ld-panel .ld-reason{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.ld-panel .ld-nextstep{margin:2px 0 0}
.ld-why summary{list-style:none;cursor:pointer;font-size:12.5px;color:var(--ink-3);display:inline-flex;align-items:center;gap:7px;padding:2px 0}
.ld-why summary::-webkit-details-marker{display:none}
.ld-why summary::before{content:"";width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.ld-why[open] summary::before{transform:rotate(45deg)}
.ld-why summary:hover{color:var(--ink-1)}
.ld-panel .ld-ctx{margin:0}
.ld-panel .ld-sugg{gap:0}
.ld-panel .sgw{position:relative;align-items:center;gap:6px;padding:4px 0}
.ld-panel .sgw+.sgw,.ld-panel .ld-act+.sgw,.ld-panel .ld-act+.ld-act,.ld-panel .sgw+.ld-act{border-top:1px solid var(--hair)}
.ld-panel .ld-sugg .sg{padding:8px 6px;margin:0 -6px;border:0;background:none;border-radius:10px;gap:2px}
.ld-panel .ld-sugg button.sg:hover{background:rgba(var(--k-246-239-230,246,239,230),.035);border:0}
.ld-panel .ld-sugg .sg span{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.ld-panel .ld-act{border:0;border-radius:0;padding:10px 0;background:none}
.ld-panel .ld-act .la-t span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ld-panel .ld-feeds{margin-top:0}
.ld-panel .ld-mem{margin-top:0}
.ld-panel .ld-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:2px;padding-top:12px;border-top:1px solid var(--hair)}
.ld-act-l{font-size:13px;color:var(--ink-1);padding:2px 0;text-decoration:underline;text-decoration-color:rgba(var(--c),.5);text-underline-offset:4px;transition:color .15s ease}
.ld-act-l:hover{text-decoration-color:rgb(var(--c))}
.ld-panel .ld-foot{margin:0 0 0 auto;font-size:12px;color:var(--ink-3)}
/* a run of small numbers: one panel, each number a cell with its own label */
.tile.k-metrics{padding:6px 6px}
.tl-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.tl-metrics.n2{grid-template-columns:repeat(2,minmax(0,1fr))}.tl-metrics.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tl-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0;padding:12px 14px 12px 22px;text-align:left;color:inherit;border-radius:14px;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tl-cell::before{content:"";position:absolute;left:10px;top:14px;bottom:14px;width:3px;border-radius:2px;background:var(--hair-2)}
.tl-cell.t-good::before{background:var(--mint)}.tl-cell.t-warn::before{background:var(--gold)}.tl-cell.t-bad::before{background:var(--h-ffb4a2,#ffb4a2)}
button.tl-cell:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}button.tl-cell:active{transform:scale(.98)}
.tl-cell-k{font-size:12.5px;color:var(--ink-3);line-height:1.3}
.tl-cell-v{font-family:var(--display);font-weight:400;font-size:28px;line-height:1.05;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums;overflow:hidden;text-overflow:ellipsis;max-width:100%;white-space:nowrap}
.tl-cell-v.txt{font-size:20px;line-height:1.2;white-space:normal}
.tl-cell.t-good .tl-cell-v{color:var(--mint)}.tl-cell.t-warn .tl-cell-v{color:var(--gold)}.tl-cell.t-bad .tl-cell-v{color:var(--h-ffb4a2,#ffb4a2)}
.tl-cell-s{font-size:12px;line-height:1.4;color:var(--ink-3)}
.tl-cell .tl-d{font-size:12px}
.tl-cell-go{font-size:12px;color:var(--ink-2)}
@media (max-width:760px){.tl-metrics,.tl-metrics.n3{grid-template-columns:repeat(2,minmax(0,1fr))}.tile.k-metrics{grid-column:1 / -1}}
.fp-total{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.fp-total b{font-family:var(--display);font-weight:400;font-size:22px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.fp-total small{font-size:12px;color:var(--ink-3)}
.fp-tabs,.fp-alloc,.fp-pace{display:flex;flex-direction:column;gap:10px;min-width:0}
.fp-seg{display:grid;grid-template-columns:repeat(var(--n,2),minmax(0,1fr));gap:2px;padding:3px;border-radius:999px;border:1px solid var(--hair);background:rgba(var(--k-3-4-10,3,4,10),.35)}
.fp-seg button{padding:7px 10px;border-radius:999px;font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fp-seg button:hover{color:var(--ink-1)}.fp-seg button:active{transform:scale(.97)}
.fp-seg button[aria-selected="true"]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.1)}
.fp-hint{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.fp-list{display:flex;flex-direction:column}
.fp-row{display:flex;align-items:center;gap:12px;width:100%;min-width:0;text-align:left;padding:10px 6px;margin:0 -6px;border-radius:12px;color:inherit;position:relative}
.fp-row+.fp-row::before{content:"";position:absolute;left:54px;right:6px;top:0;border-top:1px solid var(--hair)}
button.fp-row{transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
button.fp-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}button.fp-row:active{transform:scale(.99)}
.fp-ic{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-2)}
.fp-ic svg{width:18px;height:18px}
.fp-prog{display:block;height:4px;margin-top:5px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.07);overflow:hidden}
.fp-prog i{display:block;height:100%;border-radius:2px;background:rgb(var(--c))}
.fp-alerts{display:flex;flex-direction:column;gap:6px}
.fp-alert{position:relative;display:flex;align-items:center;gap:4px}
.fp-alert::before{content:"";flex:none;width:7px;height:7px;margin-inline-end:8px;border-radius:50%;background:var(--gold)}
.fp-alert.t-bad::before{background:var(--h-ffb4a2,#ffb4a2)}
.fp-alert+.fp-alert{border-top:1px solid var(--hair)}
.fp-alert .fp-alert-r{flex:1;min-width:0}
.fp-alert .fp-m small{white-space:normal;line-height:1.4}
.fp-x{flex:none;width:30px;height:30px;border-radius:50%;color:var(--ink-3);font-size:16px;line-height:1;transition:color .15s ease,background-color .15s ease}
.fp-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.fp-set summary{list-style:none;cursor:pointer;font-size:12.5px;color:var(--ink-3);display:inline-flex;align-items:center;gap:7px;padding:4px 0}
.fp-set summary::-webkit-details-marker{display:none}
.fp-set summary::before{content:"";width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.fp-set[open] summary::before{transform:rotate(45deg)}
.fp-set-b{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px 18px;padding:8px 0 2px}
.fp-mrow{display:flex;align-items:center;gap:4px;transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.fp-mrow>.fp-row{flex:1;min-width:0}
.fp-mrow.is-going{opacity:.35;transform:translateX(6px);pointer-events:none}
.fp-mrow.is-ended .fp-row{opacity:.72}
.fp-mrow+.fp-mrow{border-top:1px solid var(--hair)}
.fp-ask{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 4px;min-height:56px}
.fp-ask>b{flex:1 1 100%;font-size:13.5px;font-weight:550;color:var(--ink-1)}
.fp-chip{min-height:36px;padding:7px 14px;border-radius:999px;font-size:13px;color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fp-chip:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}
.fp-chip:active{transform:scale(.97)}
.fp-chip:disabled{opacity:.5}
.fp-chip.quiet{color:var(--ink-2);border-color:var(--hair)}
.fp-ended{margin-top:6px}
.fp-ended .fp-set-b{display:block}
.fp-ended .fp-hint{margin-bottom:4px}
.fp-m small.fp-from{display:flex;flex-wrap:wrap;column-gap:8px;row-gap:2px;margin-top:2px;color:var(--ink-3);font-size:11.5px}
.fp-m small.fp-from .fp-raw{font-family:var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:11px;letter-spacing:0;opacity:.85;overflow-wrap:anywhere}
.fp-ended-acts{display:flex;flex-wrap:wrap;gap:6px;flex:none;align-self:center}
@media (max-width:560px){.fp-mrow.is-ended{flex-wrap:wrap}.fp-mrow.is-ended .fp-ended-acts{flex:1 1 100%;padding:0 0 10px 48px}}
.fp-count{font-variant-numeric:tabular-nums;color:var(--ink-2)}
@media (prefers-reduced-motion:reduce){.fp-mrow{transition:none}.fp-mrow.is-going{transform:none}}
@media (max-width:560px){.fp-mrow .fp-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;row-gap:6px}.fp-mrow .fp-row>.fp-ic{grid-row:1/span 2;align-self:start}.fp-mrow .fp-row>.fp-m{grid-column:2;grid-row:1}.fp-mrow .fp-row>.fp-v{grid-column:3;grid-row:1;align-self:start;padding-top:1px}.fp-mrow .fp-row>.fp-tag{grid-column:2/span 2;grid-row:2;justify-self:start}}
.fp-tog{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink-2);cursor:pointer}
.fp-tog input[type=checkbox]{width:16px;height:16px;accent-color:rgb(var(--c, 196,228,178))}
.fp-amt{width:76px;padding:4px 8px;border-radius:8px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font:inherit;font-size:13px}
.ds-picks{display:flex;flex-direction:column;gap:8px;padding:4px 0}
.fp-ic.logo{border-radius:11px;overflow:hidden;background:rgba(var(--k-246-239-230,246,239,230),.06);transition:background-color .2s ease}
.fp-ic.logo.ok{background:#fff}
.fp-ic.logo img{display:block;width:26px;height:26px;object-fit:contain;opacity:0;transition:opacity .2s ease}
.fp-ic.logo.ok img{opacity:1}
.fp-ic.sm{width:30px;height:30px}.fp-ic.sm svg{width:16px;height:16px}
.fp-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fp-m b{font-weight:500;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-m small{font-size:12px;color:var(--ink-3);white-space:normal;line-height:1.4;overflow-wrap:anywhere}
.fp-v{flex:none;font-size:14px;color:var(--ink-1);font-variant-numeric:tabular-nums;white-space:nowrap;direction:ltr;unicode-bidi:isolate}
.fp-v.in{color:var(--mint)}
.fp-tag{flex:none;font-size:11.5px;padding:3px 8px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);white-space:nowrap}
.fp-tag.warn{border-color:rgba(var(--k-245-198-107,245,198,107),.45);color:var(--gold)}.fp-tag.bad{border-color:rgba(var(--k-255-180-162,255,180,162),.45);color:var(--h-ffb4a2,#ffb4a2)}
.fp-row.t-bad .fp-m small{color:var(--h-ffb4a2,#ffb4a2)}
/* nothing goes stale quietly (server/freshness.js): a quiet "as of" line; aging, a soft gold note; stale, the number fades */
.fp-m small.fp-asof{color:var(--ink-3);white-space:normal;line-height:1.4}
.fp-row.is-aging .fp-asof{color:rgba(var(--k-245-198-107,245,198,107),.88)}
.fp-row .fp-v,.fp-row>.fp-ic{transition:opacity .3s cubic-bezier(.23,1,.32,1),color .3s ease}
.fp-row.is-stale .fp-v{color:var(--ink-2)}
.fp-row.is-stale>.fp-ic{opacity:.5}
.fp-row.is-stale .fp-asof{color:var(--ink-2)}
html.simple .fp-row:not(.is-stale):not(.is-aging) .fp-asof{display:none}
.fp-fresh{display:flex;flex-direction:column;gap:6px}
.fp-fresh .fr-lede{max-width:68ch}
.fr-row{position:relative;display:flex;align-items:center;gap:12px;padding:10px 0;min-width:0}
.fr-row+.fr-row{border-top:1px solid var(--hair)}
.fr-row.is-stale>.fp-ic{opacity:.6}
.fr-row.is-aging .fp-asof{color:rgba(var(--k-245-198-107,245,198,107),.88)}
.ds-drop{position:relative;display:flex;align-items:center;justify-content:center;min-height:84px;padding:16px;border-radius:14px;border:1.5px dashed var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.025);color:var(--ink-2);font-size:14px;text-align:center;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}
.ds-drop:hover,.ds-drop:focus-within{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-245-198-107,245,198,107),.05)}
.ds-drop.has{border-style:solid;color:var(--ink-1)}
.ds-drop-in{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.ds-drop-t{pointer-events:none;overflow-wrap:anywhere}
.ds-form>.ds-drop,.ds-form>.ds-det,.ds-form>.btn,.ds-form>.ds-status{grid-column:1/-1}
.ds-det[open]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.ds-det summary{grid-column:1/-1}
.ds-det{border-top:1px solid var(--hair);padding-top:8px}
.ds-det summary{cursor:pointer;color:var(--ink-2);font-size:13px;padding:6px 0}
.ds-det[open] summary{margin-bottom:8px}
.tl-v:not(.txt){unicode-bidi:isolate;direction:ltr}
.tl-stat.t-stale .tl-v{color:var(--ink-2)}
.tl-lk{font-family:var(--sans,inherit);font-size:12px;font-weight:400;color:var(--ink-2);letter-spacing:0;white-space:nowrap}
.tl-upd{display:inline-block;padding:12px 6px;margin-block:-12px;margin-inline:2px -2px;color:var(--ink-1);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2);cursor:pointer;border-radius:4px}
.tl-upd:hover,.tl-upd:focus-visible{text-decoration-color:currentColor}
.sc-h.is-lk{color:var(--ink-2)}.sc-h .sc-lk{margin-inline-start:10px;font-family:var(--sans,inherit);font-size:13px;font-weight:400;color:var(--ink-2);letter-spacing:0;white-space:nowrap}
.sc-based .sc-upd{display:inline-block;margin-block:-12px;margin-inline:4px -4px;padding:12px 4px;border:0;background:none;font:inherit;color:var(--ink-1);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2);cursor:pointer}
.sc-based .sc-upd:hover,.sc-based .sc-upd:focus-visible{text-decoration-color:currentColor}
.sc-line.sc-based{margin-top:-4px;font-size:13px;color:var(--ink-3)}
.sc-line.sc-based.is-aging{color:rgba(var(--k-245-198-107,245,198,107),.85)}
.fr-val{margin-inline-end:6px}.fr-row.is-stale .fr-val{color:var(--ink-2)}
.fr-acts{flex:none;display:flex;align-items:center;gap:4px}
/* every tap target here is at least 44px tall; the links keep to one line each and wrap as whole links */
.fr-acts .link,.fr-item .link,.ntc-a .link,.ov-ntc-a .link{display:inline-flex;align-items:center;min-height:44px;padding-inline:8px;white-space:nowrap}
.fr-acts .btn,.fr-upd,.fr-item .btn-sm,.ntc-a .btn-sm,.ov-ntc-a .btn-sm{min-height:44px}
.ntc-a,.ov-ntc-a{flex-wrap:wrap;gap:0 6px}
.fr-item .fr-acts{flex-wrap:wrap}
.btn.fr-upd,.fr-upd{padding:7px 14px;border-radius:999px;font-size:13px;color:var(--ink-1);border:1px solid rgba(var(--k-245-198-107,245,198,107),.42);background:rgba(var(--k-245-198-107,245,198,107),.06);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fr-upd:hover{background:rgba(var(--k-245-198-107,245,198,107),.12)}.fr-upd:active{transform:scale(.97)}
.fr-more{position:relative}
.fr-more summary{list-style:none;cursor:pointer;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);font-size:15px;transition:background-color .15s ease,color .15s ease}
.fr-more summary::-webkit-details-marker{display:none}
.fr-more summary:hover,.fr-more[open] summary{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.fr-menu{position:absolute;right:0;top:46px;z-index:5;min-width:190px;display:flex;flex-direction:column;padding:6px;border-radius:14px;border:1px solid var(--hair-2);background:var(--sf-1,#181a22);box-shadow:0 12px 32px rgba(0,0,0,.45);transform-origin:top right;animation:frIn .16s cubic-bezier(.23,1,.32,1)}
[dir=rtl] .fr-menu{right:auto;left:0;transform-origin:top left}
.fr-menu button{text-align:start;min-height:44px;padding:9px 12px;white-space:nowrap;border-radius:9px;font-size:13px;color:var(--ink-2)}
.fr-menu button:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
@keyframes frIn{from{opacity:0;transform:scale(.96) translateY(-2px)}to{opacity:1;transform:none}}
html.simple .fp-fresh .fr-row:nth-child(n+2),html.simple .fp-fresh .fr-more{display:none}
@media (max-width:560px){.fr-row{flex-wrap:wrap}.fr-row .fp-m{flex-basis:calc(100% - 48px)}.fr-row .fr-acts{margin-inline-start:48px}}
/* Finance › Keep it current: quiet by default. What needs her is open at the top, one action per row and a "⋯"
   for the rest; what's current and what she muted fold into closed groups; a device's old copies sit in one line. */
.fr-panel{display:flex;flex-direction:column;gap:10px;container:frp/inline-size}
.fr-list{display:flex;flex-direction:column}
.fr-sec{display:flex;flex-direction:column}
.fr-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto 44px;column-gap:12px;row-gap:4px;align-items:center;padding:12px 0;min-width:0}
.fr-item+.fr-item{border-top:1px solid var(--hair)}
.fr-item>.fr-ic{grid-column:1;grid-row:1;align-self:start}
.fr-item>.fr-m{grid-column:2;grid-row:1}
.fr-item>.fr-do{grid-column:3;grid-row:1}
.fr-item>.fr-more{grid-column:4;grid-row:1}
.fr-item>.fr-copies,.fr-item>.fr-nest{grid-column:2/-1}
.fr-item:has(.fr-more[open]){position:relative;z-index:6}
.fr-ic{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-2)}
.fr-ic svg{width:17px;height:17px}
.fr-item.is-stale.is-needs .fr-ic{color:var(--ink-1)}
.fr-item:not(.is-needs) .fr-ic{opacity:.7}
.fr-m{min-width:0;display:flex;flex-direction:column;gap:3px}
.fr-t{display:flex;align-items:baseline;column-gap:8px;row-gap:0;min-width:0;flex-wrap:wrap}
.fr-t b{font-weight:500;font-size:14px;line-height:1.35;color:var(--ink-1);overflow-wrap:anywhere}
.fr-item:not(.is-needs) .fr-t b{color:var(--ink-2)}
.fr-alias{font-size:12px;color:var(--ink-3);direction:ltr;unicode-bidi:isolate}
.fr-v{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.fr-m small{font-size:12px;line-height:1.45;color:var(--ink-3)}
.fr-m small.fp-asof{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.fr-item.is-aging .fp-asof{color:rgba(var(--k-245-198-107,245,198,107),.88)}
.fr-muted{color:var(--ink-3)}
.fr-state{font-size:11.5px;line-height:1;padding:3px 8px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);white-space:nowrap}
.fr-state.is-aging{border-color:rgba(var(--k-245-198-107,245,198,107),.4);color:var(--gold)}
.fr-state.is-stale{border-color:rgba(var(--k-246-239-230,246,239,230),.22)}
.fr-item .fr-do{white-space:nowrap}
.fr-item .fr-more summary{color:var(--ink-3)}
/* the group headings: sentence case, a count, never shouty */
.fr-gh{margin:0;font-size:13px;font-weight:500;letter-spacing:0;color:var(--ink-2)}
.fr-gh.is-top{padding:4px 0 2px;color:var(--ink-1)}
.fr-group{border-top:1px solid var(--hair)}
.fr-group>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;border-radius:10px;transition:color .15s ease}
.fr-group>summary::-webkit-details-marker{display:none}
.fr-group>summary:hover{color:var(--ink-1)}
.fr-group>summary:focus-visible{outline:2px solid var(--focus,rgba(140,200,255,.6));outline-offset:2px}
.fr-chev{width:16px;height:16px;flex:none;color:var(--ink-3);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.fr-group[open]>summary .fr-chev{transform:rotate(90deg)}
[dir=rtl] .fr-chev{transform:scaleX(-1)}[dir=rtl] .fr-group[open]>summary .fr-chev{transform:rotate(90deg)}
.fr-group>.fr-list{padding-bottom:6px}
.fr-group[open]>.fr-list{animation:frIn .18s cubic-bezier(.23,1,.32,1)}
.fr-calm{display:flex;align-items:center;gap:10px;margin:0;padding:10px 0 12px;font-size:13.5px;color:var(--ink-2)}
.fr-calm-i{width:18px;height:18px;flex:none;color:var(--mint,#7fe0c0)}
/* a device's older copies, or a record imported twice: one quiet line under the newest */
.fr-copies{display:flex;flex-wrap:wrap;align-items:center;column-gap:4px;font-size:12.5px;color:var(--ink-3);transition:opacity .2s ease}
.fr-copies.is-going{opacity:.4}
.fr-copies .link{min-height:44px;display:inline-flex;align-items:center;padding-inline:8px;margin-block:-10px;font-size:12.5px;color:var(--ink-1)}
.fr-copies .fr-tidy{color:var(--gold)}
.fr-nest{border-inline-start:1px solid var(--hair);padding-inline-start:12px;margin-top:2px}
.fr-nest .fr-item{grid-template-columns:28px minmax(0,1fr) auto 44px;padding:8px 0}
.fr-nest .fr-ic{width:28px;height:28px}
.fr-rh{display:flex;align-items:center;justify-content:space-between;gap:12px}
@container frp (max-width:560px){
  /* a phone, or Settings' narrow column: the name gets the width; the one action sits under it, the "⋯" beside the name */
  .fr-item{grid-template-columns:34px minmax(0,1fr) 44px}
  .fr-item>.fr-do{grid-column:2;grid-row:2;justify-self:start;margin-top:6px}
  .fr-item>.fr-more{grid-column:3;grid-row:1;align-self:start;margin-top:-6px}
  .fr-item>.fr-copies,.fr-item>.fr-nest{grid-column:2/-1}
  .fr-nest .fr-item{grid-template-columns:28px minmax(0,1fr) 44px}
  /* "how often" and currency rows: when the choice doesn't fit beside its name, it goes under it, whole (never "Every month · …") */
  .fr-rh{flex-wrap:wrap;row-gap:8px}.fr-rh>select{max-width:100%;margin-inline-start:auto}
}
@media (prefers-reduced-motion:reduce){.fp-row .fp-v,.fp-row>.fp-ic{transition:none}.fr-menu{animation:none}}
/* Remove a record for good (public/js/removesource.js): what goes, what stays, then Remove / Replace / Keep */
.fr-item .fr-rm{color:var(--ink-3)}.fr-item .fr-rm:hover,.fr-menu .fr-rm:hover{color:var(--rose)}
.fr-menu .fr-rm{border-top:1px solid var(--hair);border-radius:0 0 9px 9px;margin-top:2px}
.tile:has(.fr-more[open]){z-index:6} /* the open "…" menu sits above the tile below it */
.rs-sheet{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:16px;background:rgba(var(--k-2-3-8,2,3,8),.66);opacity:0;transition:opacity .2s ease}
.rs-sheet.on{opacity:1}
.rs-card{position:relative;width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:24px 24px 20px;border-radius:22px;background:var(--h-0d0f16,#0d0f16);border:1px solid var(--hair-2);box-shadow:0 30px 80px rgba(var(--k-0-0-0,0,0,0),.55);display:flex;flex-direction:column;gap:14px;transform:translateY(8px) scale(.98);transition:transform .24s cubic-bezier(.23,1,.32,1)}
.rs-sheet.on .rs-card{transform:none}
.rs-card h3{margin:0;padding-inline-end:40px;font-family:var(--display);font-weight:400;font-size:23px;line-height:1.25;color:var(--ink-1);overflow-wrap:anywhere}
.rs-card h3:focus{outline:none}
.rs-x{position:absolute;top:12px;inset-inline-end:12px;min-width:44px;min-height:44px}
.rs-body{display:flex;flex-direction:column;gap:14px}
.rs-lede{margin:-4px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.rs-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rs-col{padding:12px 14px;border-radius:14px;border:1px solid var(--hair);min-width:0}
.rs-col h4{margin:0 0 6px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.rs-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.rs-list li{position:relative;padding-inline-start:16px;font-size:13.5px;line-height:1.45;color:var(--ink-1);display:flex;flex-wrap:wrap;gap:2px 8px;overflow-wrap:anywhere}
.rs-list li::before{content:"";position:absolute;inset-inline-start:2px;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--ink-3)}
.rs-list.goes li::before{background:var(--rose)}
.rs-list.stays li::before{background:var(--mint)}
.rs-list .rs-sub{flex-basis:100%;font-size:12px;color:var(--ink-3)}
.rs-v{color:var(--ink-2);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.rs-opts{display:flex;flex-direction:column;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.rs-tog{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:44px;padding:10px 0;cursor:pointer}
.rs-tog+.rs-tog{border-top:1px solid var(--hair)}
.rs-tog-t{display:flex;flex-direction:column;gap:3px;min-width:0}
.rs-tog-t b{font-weight:500;font-size:14px;color:var(--ink-1);overflow-wrap:anywhere}
.rs-tog-t small{font-size:12px;line-height:1.45;color:var(--ink-3)}
.rs-sw{appearance:none;-webkit-appearance:none;flex:none;position:relative;width:44px;height:26px;margin:0;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.14);border:1px solid var(--hair-2);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}
.rs-sw::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--ink-1);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.rs-sw:checked{background:rgba(var(--k-255-122-182,255,122,182),.5);border-color:rgba(var(--k-255-122-182,255,122,182),.7)}
.rs-sw:checked::after{transform:translateX(18px)}
[dir=rtl] .rs-sw::after{left:auto;right:2px}[dir=rtl] .rs-sw:checked::after{transform:translateX(-18px)}
.rs-sw:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.rs-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px}
.rs-card .rs-go,.rs-card .rs-alt{min-height:44px;border-radius:999px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.rs-card .rs-go{background:rgba(var(--k-255-122-182,255,122,182),.16);color:var(--ink-1);border:1px solid rgba(var(--k-255-122-182,255,122,182),.55)}
.rs-card .rs-go:hover:not(:disabled){background:rgba(var(--k-255-122-182,255,122,182),.26)}
.rs-card .rs-alt{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.rs-card .rs-go:active:not(:disabled),.rs-card .rs-alt:active{transform:scale(.97)}
.rs-card .rs-go:disabled{opacity:.6;cursor:default}
.rs-keep{min-height:44px;display:inline-flex;align-items:center;padding-inline:8px}
.rs-err{margin:0;font-size:13px;color:var(--rose)}.rs-err:empty{display:none}
.rs-note{margin:-4px 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}
@media (max-width:560px){
  .rs-sheet{place-items:end stretch;padding:0}
  .rs-card{width:100%;max-height:calc(100dvh - 40px);border-radius:22px 22px 0 0;padding:22px 18px calc(18px + env(safe-area-inset-bottom,0px));transform:translateY(24px)}
  .rs-card h3{font-size:21px}
  .rs-cols{grid-template-columns:1fr}
  .rs-acts{flex-direction:column;align-items:stretch}
  .rs-acts .rs-keep{justify-content:center}
}
@media (prefers-reduced-motion:reduce){.rs-sheet,.rs-card,.rs-sw,.rs-sw::after{transition:none}}
.fp-more{align-self:stretch;margin-top:2px;padding:10px 14px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.06);font-size:13px;color:var(--ink-1);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fp-more:hover{background:rgba(var(--k-246-239-230,246,239,230),.1)}.fp-more:active{transform:scale(.98)}
.fp-more.quiet{background:none;border:1px dashed rgba(var(--c),.4);color:var(--ink-2)}
.tile.fp{padding:10px 14px;gap:0;border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.02)}
.fp-check{display:flex;align-items:center;gap:12px;width:100%;min-width:0;text-align:left;color:inherit}
button.fp-check{transition:transform .16s cubic-bezier(.23,1,.32,1)}button.fp-check:active{transform:scale(.99)}
.fp-check p{flex:1;margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.fp-check .fp-ic{color:var(--mint);background:rgba(var(--k-111-242-196,111,242,196),.08)}
.fp-check.t-warn .fp-ic{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.fp-link{flex:none;font-size:12.5px;color:var(--ink-1);padding:6px 12px;border-radius:999px;border:1px solid var(--hair-2);transition:border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fp-link:hover{border-color:rgba(var(--c),.6)}.fp-link:active{transform:scale(.97)}
.fp-ring{position:relative;width:min(210px,64%);aspect-ratio:1;margin:6px auto 4px}
.fp-ring svg{display:block;width:100%;height:100%}
.fp-ring-bg{stroke:rgba(var(--k-246-239-230,246,239,230),.06)}
.fp-arc{transition:opacity .15s ease}.fp-arc:hover{opacity:.8}
.fp-ring-mid{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;pointer-events:none}
.fp-ring-mid b{font-family:var(--display);font-weight:400;font-size:24px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.fp-ring-mid small{font-size:12px;color:var(--ink-3)}
.fp-legend{display:flex;flex-direction:column}
.fp-lg{display:grid;grid-template-columns:4px minmax(0,1fr) auto minmax(84px,auto);align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--hair);font-size:14px}
.fp-lg:first-child{border-top:0}
.fp-lg i{height:18px;border-radius:2px}
.fp-lg.owed i{background:var(--hair-2)}
.fp-lg .l{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-lg .p{color:var(--ink-3);font-variant-numeric:tabular-nums}
.fp-lg .v{color:var(--ink-1);text-align:right;font-variant-numeric:tabular-nums}
.fp-pl{display:flex;flex-direction:column}
.fp-pr{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;width:100%;padding:7px 0;text-align:left;color:inherit}
.fp-pr+.fp-pr{border-top:1px solid var(--hair)}
.fp-pm{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink-1);flex:none;white-space:nowrap}
.fp-pm i{width:4px;height:20px;border-radius:2px;background:rgb(var(--c))}
.fp-pr.then .fp-pm i{background:var(--ink-3)}
.fp-pv{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:0}
.fp-pv b{font-weight:500;font-size:15px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.fp-pv small{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.fp-pv small.good{color:var(--mint)}.fp-pv small.bad{color:var(--h-ffb4a2,#ffb4a2)}
.fp-pc{position:relative;min-height:150px}
.fp-pc svg{display:block;overflow:visible;touch-action:pan-y}
.fp-now{fill:none;stroke:rgb(var(--c));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.fp-then{fill:none;stroke:var(--ink-3);stroke-width:1.5;stroke-linejoin:round}
.fp-g0{stop-color:rgb(var(--c));stop-opacity:.2}.fp-g1{stop-color:rgb(var(--c));stop-opacity:0}
.fp-grid{stroke:var(--hair);stroke-dasharray:3 4}
.fp-ax{fill:var(--ink-3);font-size:11px;font-variant-numeric:tabular-nums}
.fp-dot{fill:rgb(var(--c));stroke:var(--night);stroke-width:2}
.fp-cross{stroke:var(--ink-3);stroke-width:1;transition:opacity .12s ease}
/* the Spending overview inside Finance's drill-down */
.md-spend{display:flex;flex-direction:column;gap:10px}
.dash .tile.k-stat .tl-stat{margin-top:4px}
.md-spend-n{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.md-spend-n b{font-family:var(--display);font-weight:400;font-size:clamp(30px,3vw,38px);line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.md-spend-n span{font-size:13px;color:var(--ink-3)}
.md-spend-s{margin:0;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.md-spend-s .t-good{color:var(--mint)}.md-spend-s .t-bad{color:var(--h-ffb4a2,#ffb4a2)}
.md-strip{display:flex;gap:2px;height:14px;border-radius:7px;overflow:hidden;margin-top:4px}
.md-strip i{min-width:3px}
.md-cats{display:flex;flex-direction:column}
.md-cat{display:flex;align-items:center;gap:12px;width:100%;padding:10px 6px;margin:0 -6px;border-radius:12px;text-align:left;color:inherit;position:relative;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-cat+.md-cat::before{content:"";position:absolute;left:54px;right:6px;top:0;border-top:1px solid var(--hair)}
.md-cat:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}.md-cat:active{transform:scale(.99)}
.md-cat-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.md-cat-m b{font-weight:500;font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-cat-t{height:4px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.07);overflow:hidden}
.md-cat-t i{display:block;height:100%;border-radius:2px}
.md-cat-v{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:72px}
.md-cat-v b{font-weight:500;font-size:14px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.md-cat-v small{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.md-cat-v small.t-good{color:var(--mint)}.md-cat-v small.t-bad{color:var(--h-ffb4a2,#ffb4a2)}
.tiles.sk .tile{min-height:130px;animation:skPulse 1.4s ease-in-out infinite}
@keyframes skPulse{0%,100%{opacity:.45}50%{opacity:.8}}
.dash-sheet{margin:0 0 14px;padding:16px 18px;border-radius:18px;border:1px solid rgba(var(--c),.35);background:rgba(var(--k-10-12-24,10,12,24),.96);animation:ldIn .35s cubic-bezier(.23,1,.32,1) both}
.ds-h{display:flex;align-items:center;justify-content:space-between}
.ds-h h4{margin:0;font-family:var(--display);font-weight:400;font-size:21px;color:var(--ink-1)}
.ds-lede{margin:6px 0 12px;font-size:13.5px;line-height:1.55;color:var(--ink-2);max-width:62ch}
.ds-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;align-items:start}
.ds-f{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--ink-2)}
.ds-f small{font-size:11.5px;color:var(--ink-3)}
.ds-f input,.ds-f select{font:inherit;font-size:14px;color:var(--ink-1);background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid var(--hair-2);border-radius:10px;padding:9px 11px}
.ds-f input[type=file]{padding:7px}
.ds-status{grid-column:1 / -1;margin:0;font-size:12.5px;color:var(--ink-2)}
.ds-cats{display:flex;flex-wrap:wrap;gap:6px}
.ds-cats button{font-size:13px;padding:7px 12px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-2)}
.ds-cats button.on,.ds-cats button:hover{border-color:rgba(var(--c),.6);color:var(--ink-1);background:rgba(var(--c),.08)}
/* a transaction's row menu: what kind of money it is (public/js/txntype.js), four plain choices, the current one lit */
.tt-box{margin:4px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--hair)}
.tt-q{margin:4px 0 8px;font-size:13.5px;color:var(--ink-2)}
.tt-seg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:3px;border-radius:14px;border:1px solid var(--hair);background:rgba(var(--k-3-4-10,3,4,10),.35)}
.tt-o{min-height:44px;padding:0 6px;border-radius:11px;font-size:13.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tt-o:hover{color:var(--ink-1)}.tt-o:active{transform:scale(.97)}
.tt-o.on{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.1)}
.tt-o:disabled{cursor:default}.tt-o.busy{color:var(--ink-1);opacity:.75}
.tt-note{margin:8px 0 0;font-size:12px;line-height:1.45;color:var(--ink-3)}
.tt-err{margin:8px 0 0;font-size:12.5px;color:var(--rose,#ff8f8f)}
.tt-reset{min-height:44px;padding:0 2px;font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px}
@media (prefers-reduced-motion:reduce){.tt-o{transition:none}}
/* business pipeline: lanes by stage, a card per organisation or person */
.tl-boardw{display:flex;flex-direction:column;gap:8px}
.tl-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tl-lane{display:flex;flex-direction:column;gap:6px;min-width:0;padding:10px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.022);border:1px solid var(--hair)}
.tl-lane-h{display:flex;align-items:baseline;justify-content:space-between;padding:0 2px 4px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.tl-lane-h b{font-family:var(--display);font-weight:400;font-size:18px;letter-spacing:0;color:var(--ink-1)}
.tl-lane-empty{margin:2px 2px 4px;font-size:12px;line-height:1.45;color:var(--ink-3)}
.tl-lane-more{margin:2px;font-size:12px;color:var(--ink-3)}
.tl-card{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;padding:10px 11px;border-radius:11px;border:1px solid var(--hair);background:rgba(var(--k-10-12-24,10,12,24),.55);transition:border-color .15s ease,background .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tl-card:hover{border-color:rgba(var(--c),.45);background:rgba(var(--c),.05)}
.tl-card:active{transform:scale(.98)}
.tl-card:focus-visible{outline:2px solid rgba(var(--c),.7);outline-offset:2px}
.tl-card b{font-weight:500;font-size:13.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-card small{font-size:12px;line-height:1.4;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tl-card-m{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--ink-3)}
.tl-card-m .trk{font-style:normal;letter-spacing:.06em;padding:1px 7px;border-radius:999px;border:1px solid rgba(var(--c),.35);color:rgba(var(--c),1)}
.tl-card-m .trk.coaching{border-color:rgba(var(--k-245-198-107,245,198,107),.4);color:var(--gold)}
.tl-card-m .age{margin-left:auto}
.tl-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;margin:2px 2px 0;font-size:12px;color:var(--ink-3)}
.tl-foot .link{font-size:12px;color:var(--ink-2)}
.pl-open{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left}.pl-open:hover b{color:rgba(var(--c),1)}
.pl-aka{margin-top:-8px;font-size:12.5px;color:var(--ink-3)}
.pl-merge{margin-top:2px;grid-template-columns:minmax(0,1fr) auto}
.pl-k{margin:14px 0 7px;font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.pl-next{margin-top:14px;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto}.pl-next .btn{padding-inline:22px}
.pl-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pl-list li{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-top:1px solid var(--hair);font-size:13.5px}
.pl-list li:first-child{border-top:0;padding-top:0}
.pl-list li b{font-weight:500;color:var(--ink-1)}.pl-list li small{font-size:12px;color:var(--ink-3)}
.pl-list li.dim{color:var(--ink-3);font-size:12.5px}
.pl-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pl-hidden{color:var(--gold)}
@media (max-width:760px){
  .tl-board{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;margin:0 -13px;padding:0 13px 4px;scrollbar-width:none}
  .tl-board::-webkit-scrollbar{display:none}
  .tl-lane{flex:0 0 78%;scroll-snap-align:start}
  .pl-chips button{padding:9px 13px}
  .pl-next,.pl-merge{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.tl-card{transition:none}.tl-card:active{transform:none}}

/* ---------- Places & travel: the travel dashboard ---------- */
.atlas{margin:0 0 12px;--c:168,214,248}
.atlas.busy .at-over,.atlas.busy .tiles{opacity:.55;transition:opacity .2s}
.at-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;min-height:min(620px,72vh);margin:0 0 14px;border-radius:24px;overflow:hidden;
  background:var(--h-02030a,#02030a) url('/textures/space.jpg') center / cover no-repeat;border:1px solid rgba(var(--k-120-160-230,120,160,230),.14)}
.at-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 45%,rgba(var(--k-2-3-10,2,3,10),.55) 100%);pointer-events:none}
.at-globe{position:absolute;inset:0}
.at-over{grid-column:2;padding-left:44px!important}
.at-globe canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.at-gl{pointer-events:none}
.at-ov{touch-action:none;cursor:grab}.at-ov:active{cursor:grabbing}
.at-over{position:relative;z-index:2;padding:28px 34px 28px 8px;display:flex;flex-direction:column;gap:8px}
.at-kicker{margin:0;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--k-214-230-255,214,230,255),.7)}
.at-h{margin:0 0 6px;font-family:var(--display);font-weight:400;font-size:26px;line-height:1.2;color:var(--ink-1)}
.at-big{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0 6px}
.at-big>div{display:flex;flex-direction:column}
.at-big b{font-family:var(--display);font-weight:400;font-size:52px;line-height:1;color:var(--h-fff,#fff);font-variant-numeric:lining-nums tabular-nums;text-shadow:0 2px 24px rgba(var(--k-0-0-0,0,0,0),.5)}
.at-big span{margin-top:8px;font-size:12.5px;color:rgba(var(--k-230-238-255,230,238,255),.8)}
.at-big small{margin-top:3px;min-height:14px;font-size:12px;color:rgb(var(--c))}
.at-line{margin:6px 0 0;font-size:14px;color:rgba(var(--k-230-238-255,230,238,255),.85);line-height:1.55}
.at-google{margin:0;font-size:12px;color:rgba(var(--k-214-226-250,214,226,250),.6);line-height:1.45}
.at-here{margin:6px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;font-size:12.5px;line-height:1.5;color:rgba(var(--k-214-226-250,214,226,250),.66)}
.at-here span:nth-child(2){color:rgba(var(--k-214-230-255,214,230,255),.88)}
.at-here span:nth-child(3)::before{content:'·';margin-inline-end:6px;opacity:.7}
@media (max-width:560px){.at-here span:nth-child(3){flex-basis:100%;padding-inline-start:12px}.at-here span:nth-child(3)::before{content:none}}
.wh-offer{position:relative;display:flex;align-items:center;gap:12px;margin:12px 0 0;padding:12px 40px 12px 14px;border-radius:14px;background:rgba(var(--k-14-20-36,14,20,36),.86);border:1px solid rgba(126,206,255,.16);max-width:520px}
.wh-offer-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.wh-offer-t b{font-weight:550;font-size:13.5px;color:var(--ink-1,#eef3ff)}
.wh-offer-t small{font-size:12px;line-height:1.45;color:var(--ink-3,rgba(214,226,250,.62))}
.wh-offer-go{flex:none;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(126,206,255,.4);background:rgba(126,206,255,.12);color:#dff3ff;font:inherit;font-size:13px;cursor:pointer;transition:transform .16s cubic-bezier(.2,.8,.2,1),background-color .16s}
.wh-offer-go:hover{background:rgba(126,206,255,.2)}
.wh-offer-go:active{transform:scale(.97)}
.wh-offer-go:disabled{opacity:.55}
.wh-offer-x{position:absolute;top:6px;inset-inline-end:6px;width:28px;height:28px;border:0;border-radius:50%;background:none;color:var(--ink-3,rgba(214,226,250,.62));font-size:17px;line-height:1;cursor:pointer}
.wh-offer-x:hover{color:var(--ink-1,#eef3ff);background:rgba(255,255,255,.06)}
/* a quiet progress line in Places (past trips from email, iPhone photos): its own solid surface, never text on the stars */
.at-progress{display:flex;align-items:center;gap:10px;width:fit-content;max-width:100%;margin:10px 0 0;padding:8px 14px;border-radius:12px;background:rgba(var(--k-14-20-36,14,20,36),.94);border:1px solid rgba(139,164,255,.2)}
.at-progress-dot{flex:none;width:7px;height:7px;border-radius:50%;background:rgb(139,164,255);box-shadow:0 0 8px rgba(139,164,255,.55);animation:at-progress-breathe 1.8s cubic-bezier(.4,0,.2,1) infinite}
.at-progress-dot.is-still{animation:none;opacity:.6}
@keyframes at-progress-breathe{0%,100%{opacity:.5;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.at-progress-dot{animation:none}}
.at-progress-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.at-progress-t b{font-weight:550;font-size:13.5px;line-height:1.4;color:rgba(var(--k-230-238-255,230,238,255),.96)}
.at-progress-t small{font-size:13px;line-height:1.45;color:rgba(var(--k-214-226-250,214,226,250),.86);font-variant-numeric:tabular-nums}
.at-progress-act{flex:none;min-height:44px;min-width:44px;padding:0 10px;margin:-8px -8px -8px 2px;border:0;border-radius:10px;background:none;color:var(--ink-2,#cfd9f2);font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.at-progress-act:active{transform:scale(.97)}
@media (max-width:560px){.wh-offer-x{width:44px;height:44px;top:2px;inset-inline-end:2px}}
@media (max-width:560px){.wh-offer{flex-wrap:wrap}.wh-offer-go{width:100%}}
.at-pick{flex-direction:column;align-items:stretch;gap:6px;padding:14px 16px}
.at-pick-list{display:flex;flex-direction:column;margin:4px 0 0}
.at-pick-list label{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}
.at-pick-list label>span{display:flex;flex-direction:column;min-width:0;font-size:13.5px;color:var(--ink-1,#eef3ff)}
.at-pick-list small{font-size:12.5px;color:var(--ink-3,rgba(214,226,250,.62));overflow-wrap:anywhere}
.at-pick-list input{flex:none;width:20px;height:20px;margin:0;accent-color:rgb(126,206,255)}
.at-pick-note{margin:2px 0 0;font-size:12.5px;color:var(--ink-3,rgba(214,226,250,.62))}
.at-pick-acts{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:6px}
.at-pick-acts .wh-offer-go{min-height:44px}
.at-link{min-height:44px;padding:0 6px;border:0;border-radius:10px;background:none;color:var(--ink-2,#cfd9f2);font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.at-link:active{transform:scale(.97)}
.at-link:disabled{opacity:.55}
.at-past-done{align-items:flex-start}
.at-past-tick{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-size:13px;color:rgb(140,232,196);background:rgba(140,232,196,.12)}
.at-here-dot{width:6px;height:6px;border-radius:50%;background:rgb(126,206,255);box-shadow:0 0 8px rgba(126,206,255,.5)}
.at-time{margin:0 0 14px;display:flex;flex-direction:column;gap:6px}
.at-years,.at-months{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:2px 4px;margin:0 -4px}
.at-years::-webkit-scrollbar,.at-months::-webkit-scrollbar{display:none}
.at-years button,.at-months button{flex:none;font-size:12.5px;color:var(--ink-3);padding:6px 11px;border-radius:999px;border:1px solid transparent;transition:color .18s,border-color .18s,background .18s}
.at-years button{font-family:var(--display);font-size:16px;letter-spacing:.02em}
.at-months button{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;padding:5px 9px}
.at-years button:hover,.at-months button:hover{color:var(--ink-1)}
.at-years button[aria-pressed="true"],.at-months button[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(var(--c),.45);background:rgba(var(--c),.08)}
.at-months button:disabled{opacity:.28;pointer-events:none}
/* travel autopilot */
.at-next{margin:18px 0 6px}
.at-next-h{display:flex;align-items:baseline;gap:16px;margin-bottom:10px}.at-next-h h3{margin:0;font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--c),.95)}
.at-next-b{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.at-nt{position:relative;padding:14px 16px;border-radius:16px;border:1px solid rgba(var(--k-245-198-107,245,198,107),calc(.18 + .5*var(--d,0)));background:linear-gradient(180deg,rgba(var(--k-245-198-107,245,198,107),calc(.03 + .06*var(--d,0))),rgba(var(--k-246-239-230,246,239,230),.02))}
.at-nt.past{opacity:.62}.at-nt.past:hover{opacity:1}
.at-next-sub{grid-column:1/-1;margin:14px 0 8px;font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.at-nt-h{display:flex;align-items:baseline;gap:10px}.at-nt-h b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1)}.at-nt-h>span{font-size:12.5px;color:var(--ink-3)}
.at-nt-x{margin-left:auto;background:none;border:0;color:var(--ink-3);font-size:18px;line-height:1;cursor:pointer;padding:0 2px}
.at-nt-b{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}.at-nt-b li{display:grid;grid-template-columns:18px 1fr;column-gap:8px;font-size:13.5px;color:var(--ink-1)}.at-nt-b i{font-style:normal;color:var(--gold);text-align:center}.at-nt-b small{grid-column:2;color:var(--ink-3);font-size:12px}
.at-nt-w{margin:10px 0 0;font-size:12.5px;color:var(--ink-2)}
.at-pack{margin-top:10px}.at-pack summary{cursor:pointer;font-size:13px;color:var(--gold)}
.at-pack-l{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px}.at-pack-l label{display:grid;grid-template-columns:18px 1fr;column-gap:8px;align-items:baseline;font-size:13.5px;color:var(--ink-1);cursor:pointer}.at-pack-l small{grid-column:2;color:var(--ink-3);font-size:11.5px}.at-pack-l li.done span{color:var(--ink-3);text-decoration:line-through}
.at-loyal{grid-column:1/-1;margin-top:6px}.at-loyal h4{margin:10px 0 6px;font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}.at-loyal-r{display:flex;gap:12px;align-items:baseline;padding:6px 0;border-top:1px solid var(--hair);font-size:13.5px}.at-loyal-r b{margin-left:auto;font-weight:500;color:var(--ink-1)}.at-loyal-r small{color:var(--ink-3)}
.at-addb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px;padding:12px;border-radius:14px;border:1px solid var(--hair)}.at-addb input,.at-addb select{padding:8px 10px;border-radius:9px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.4);color:var(--ink-1);font:inherit;font-size:13px}
.at-tabs{display:flex;gap:2px;margin:22px 0 10px;border-bottom:1px solid var(--hair)}
.at-tabs button{font-size:13.5px;color:var(--ink-3);padding:9px 14px;border-bottom:1.5px solid transparent;margin-bottom:-1px;transition:color .18s,border-color .18s}
.at-tabs button:hover{color:var(--ink-1)}
.at-tabs button[aria-pressed="true"]{color:var(--ink-1);border-bottom-color:rgba(var(--c),.9)}
.at-sub{margin:0 0 10px;font-size:12.5px;color:var(--ink-3)}
.at-list{display:flex;flex-direction:column}
.at-trips{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.at-trip{position:relative;display:grid;grid-template-columns:56px 1fr;grid-template-rows:auto auto;align-items:center;column-gap:14px;text-align:left;padding:14px 16px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.025);transition:border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.at-trip:hover{border-color:rgba(var(--c),.45)}.at-trip:active{transform:scale(.985)}
.at-trip.ok::after{content:"✓";position:absolute;top:10px;right:12px;font-size:11px;color:var(--mint)}
.at-tdays{grid-row:1;font-family:var(--display);font-size:34px;line-height:1;color:rgb(var(--c));text-align:center;font-variant-numeric:lining-nums tabular-nums}
.at-tdl{grid-row:2;grid-column:1;text-align:center;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.at-trip .at-ct{grid-row:1 / 3;grid-column:2}
.at-ct b{display:block;font-family:var(--display);font-weight:400;font-size:18px;color:var(--ink-1);line-height:1.2}
.at-ct span{display:block;margin-top:3px;font-size:12.5px;color:var(--ink-2)}
.at-ct em{display:block;margin-top:4px;font-style:normal;font-size:12px;color:var(--ink-3)}
.at-rows{display:flex;flex-direction:column}
.at-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 2px;border-bottom:1px solid var(--hair);transition:background .15s}
.at-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.025)}
.at-row .at-ct{flex:1;min-width:0}
.at-row .at-ct b{font-size:14.5px;font-family:inherit;font-weight:500}
.btn.sm{padding:6px 12px;font-size:12.5px;white-space:nowrap}
.at-n{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.at-sheet{margin:0 0 14px;padding:14px 16px 12px;border-radius:16px;border:1px solid rgba(var(--c),.35);background:rgba(var(--k-10-12-24,10,12,24),.96);animation:ldIn .4s cubic-bezier(.23,1,.32,1) both}
.at-sh{display:flex;align-items:center;justify-content:space-between;gap:10px}
.at-sh h4{margin:0;font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1)}
.at-facts,.at-src{margin:6px 0;font-size:13px;color:var(--ink-2);line-height:1.5}
.at-src{color:var(--ink-3);font-size:12px}
.at-mini{display:flex;flex-direction:column;gap:4px;margin:8px 0}
.at-mini .link{text-align:left;font-size:13px;color:var(--ink-1)}
.at-more{font-size:12px;color:var(--ink-2);padding:2px 0}
.at-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.at-add{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 6px}
.ph-heads{margin:10px 0 0;padding:12px 14px;border-radius:12px;background:rgba(var(--k-14-20-36,14,20,36),.94);border:1px solid rgba(126,206,255,.2)}
.ph-heads p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-1,#eef3ff)}
.ph-heads-acts{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px}
.ph-heads-acts .btn,.ph-heads-acts .wh-offer-go{min-height:44px}
.ph-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}
.ph-actions .btn{min-height:44px}
.at-photos-tip .ph-heads{margin-top:8px}
.at-note{margin:8px 2px;font-size:12.5px;color:var(--ink-2)}
.at-naming{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 0}
.at-pulse{width:6px;height:6px;border-radius:50%;background:rgb(var(--c,158,203,255));opacity:.35;flex:none}
.at-naming.on .at-pulse{opacity:1;animation:atPulse 1.6s ease-in-out infinite}
@keyframes atPulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
@media (prefers-reduced-motion:reduce){.at-naming.on .at-pulse{animation:none}}
.at-method{margin:10px 2px 0;font-size:11.5px;color:var(--ink-3);line-height:1.45}
/* ---------- gestures that follow her finger ---------- */
.peek{position:absolute;top:50%;right:0;z-index:9;display:flex;flex-direction:column;align-items:flex-end;gap:2px;max-width:46vw;padding:14px 18px 14px 20px;border-radius:18px 0 0 18px;background:linear-gradient(90deg,rgba(var(--c),.16),rgba(var(--c),.32));border:1px solid rgba(var(--c),.45);border-right:0;box-shadow:0 10px 30px rgba(var(--k-0-0-0,0,0,0),.4);transform:translate(40px,-50%);opacity:0;pointer-events:none;transition:border-color .2s}
.peek.left{right:auto;left:0;align-items:flex-start;border-radius:0 18px 18px 0;border-right:1px solid rgba(var(--c),.45);border-left:0;background:linear-gradient(270deg,rgba(var(--c),.16),rgba(var(--c),.32))}
.peek b{font-family:var(--display);font-weight:400;font-size:20px;line-height:1.1;color:var(--ink-1)}
.peek span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(var(--c),.95)}
.peek.go{border-color:rgb(var(--c))}
.peek.go b{color:var(--h-fff,#fff)}
.pull-hint{position:absolute;left:16px;top:16px;z-index:9;display:block;width:max-content;padding:6px 14px;border-radius:999px;background:rgba(var(--k-6-7-16,6,7,16),.8);border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-2);opacity:0;transition:opacity .2s,color .2s,border-color .2s}
.pull-hint.go{color:var(--ink-1);border-color:rgb(var(--c,245,198,107))}
.edge-hint.swipe{bottom:auto;top:43%}
.edge-hint.swipe.from-top{top:96px}
.edge-hint.go span{color:var(--gold)}
/* ---------- life sections: the living header (Relationships, Wellness, Dreams & goals, Right now) ---------- */
.lazy-wait{min-height:96px}
.lazy-places{min-height:min(520px,62vh)}
.sc-hero{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;min-height:min(560px,66vh);margin:0 0 14px;border-radius:24px;overflow:hidden;
  --space:url('/textures/space.jpg') center / cover no-repeat;--tint:radial-gradient(50% 65% at 29% 50%,rgba(var(--c),.16),rgba(var(--c),0) 72%);
  background:var(--tint),linear-gradient(rgba(var(--k-2-3-10,2,3,10),.12),rgba(var(--k-2-3-10,2,3,10),.12)),#02030a var(--space);border:1px solid rgba(var(--c),.16)}
/* each section's sky: the same deep space as Places & travel, lit in the section's own way */
.sc-orbits{--tint:radial-gradient(42% 58% at 29% 50%,rgba(var(--k-240-150-200,240,150,200),.22),rgba(var(--k-240-150-200,240,150,200),0) 70%),radial-gradient(40% 50% at 70% 15%,rgba(var(--k-169-139-255,169,139,255),.14),rgba(var(--k-169-139-255,169,139,255),0) 70%)}
.sc-rhythm{--tint:radial-gradient(38% 52% at 29% 50%,rgba(var(--k-111-242-196,111,242,196),.16),rgba(var(--k-111-242-196,111,242,196),0) 70%),linear-gradient(168deg,rgba(var(--k-80-220-190,80,220,190),0) 22%,rgba(var(--k-80-220-190,80,220,190),.13) 38%,rgba(var(--k-110-150-255,110,150,255),.10) 52%,rgba(var(--k-110-150-255,110,150,255),0) 68%)}
.sc-stars{--tint:radial-gradient(46% 38% at 29% 92%,rgba(var(--k-236-212-165,236,212,165),.2),rgba(var(--k-236-212-165,236,212,165),0) 72%),radial-gradient(38% 46% at 29% 26%,rgba(var(--k-169-139-255,169,139,255),.12),rgba(var(--k-169-139-255,169,139,255),0) 70%),radial-gradient(30% 30% at 62% 12%,rgba(var(--k-92-225-255,92,225,255),.06),rgba(var(--k-92-225-255,92,225,255),0) 70%)}
.sc-climb{--tint:linear-gradient(180deg,rgba(var(--k-60-50-110,60,50,110),0) 30%,rgba(var(--k-245-170-110,245,170,110),.17) 78%,rgba(var(--k-245-150-100,245,150,100),.06) 100%),radial-gradient(45% 40% at 29% 82%,rgba(var(--k-255-190-130,255,190,130),.18),rgba(var(--k-255-190-130,255,190,130),0) 75%)}
.sc-river{--tint:radial-gradient(60% 28% at 29% 52%,rgba(var(--k-196-182-255,196,182,255),.2),rgba(var(--k-196-182-255,196,182,255),0) 75%),radial-gradient(30% 40% at 55% 20%,rgba(var(--k-92-225-255,92,225,255),.08),rgba(var(--k-92-225-255,92,225,255),0) 70%)}
.sc-zodiac{--tint:radial-gradient(52% 58% at 50% 48%,rgba(var(--k-214-196-255,214,196,255),.13),rgba(var(--k-214-196-255,214,196,255),0) 72%),radial-gradient(30% 36% at 20% 20%,rgba(var(--k-120-214-222,120,214,222),.06),rgba(var(--k-120-214-222,120,214,222),0) 70%),radial-gradient(30% 36% at 82% 78%,rgba(var(--k-255-170-120,255,170,120),.05),rgba(var(--k-255-170-120,255,170,120),0) 70%)}
/* Finance's header sits on plain, slightly deepened space: no coloured wash behind it, so the money itself carries the colour */
.sc-money{--tint:linear-gradient(180deg,rgba(var(--k-2-3-10,2,3,10),.16),rgba(var(--k-2-3-10,2,3,10),.34))}
/* Finance: safe to spend, worked out in front of her */
.sc-how{align-self:flex-start;padding:0;border:0;background:none;color:rgba(var(--c),.95);font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--c),.45);cursor:pointer}
.sc-how:hover{text-decoration-color:rgba(var(--c),.9)}
.sc-how:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:3px;border-radius:4px}
.sc-sum{display:flex;flex-direction:column;gap:2px;margin:6px 0 2px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-255-255-255,255,255,255),.035)}
.sc-sum-r{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink-2);line-height:1.6}
.sc-sum-r b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums;white-space:nowrap}
.sc-sum-r.total{margin-top:4px;padding-top:6px;border-top:1px solid rgba(var(--c),.3);color:var(--ink-1)}
.sc-sum-r.total b{color:rgb(var(--c));font-size:15px}
.sc-safe .sc-sub{font-size:12.5px;color:var(--ink-3)}
.sc-cushion{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:10px;border-top:1px solid rgba(var(--k-255-255-255,255,255,255),.08)}
.sc-cushion>b{font-size:13px;color:var(--ink-1);font-weight:600}
.sc-cushion p{margin:0}
.sc-cu-form{display:flex;align-items:center;gap:8px}
.sc-cu-form span{color:var(--ink-3)}
.sc-cu-form input{width:96px;padding:8px 10px;border-radius:10px;border:1px solid rgba(var(--c),.35);background:rgba(var(--k-0-0-0,0,0,0),.3);color:var(--ink-1);font:inherit;font-size:14px}
.sc-cu-form input:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:1px}
.sc-cu-form .sc-act{align-self:auto;padding:7px 14px}
.sc-link{align-self:flex-start;padding:0;border:0;background:none;color:var(--ink-2);font:inherit;font-size:12.5px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.sc-link:hover{color:var(--ink-1)}
/* Finance: two views of the same money, one tap apart */
.sc-seg{align-self:flex-start;display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:rgba(var(--k-6-7-16,6,7,16),.55);border:1px solid rgba(var(--c),.22);margin-bottom:6px}
.sc-seg-b{padding:7px 14px;border-radius:999px;border:0;background:transparent;color:var(--ink-2);font:inherit;font-size:13px;cursor:pointer;transition:background-color .2s,color .2s,transform .16s var(--ease)}
.sc-seg-b:hover{color:var(--ink-1)}
.sc-seg-b.on{background:rgba(var(--c),.18);color:var(--ink-1);box-shadow:inset 0 0 0 1px rgba(var(--c),.4)}
.sc-seg-b:active{transform:scale(.97)}
.sc-seg-b:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px}
.sc-per{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 2px}
.sc-per-b{padding:5px 11px;border-radius:999px;border:1px solid rgba(var(--c),.18);background:transparent;color:var(--ink-3);font:inherit;font-size:12px;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s,transform .16s var(--ease)}
.sc-per-b:hover{color:var(--ink-1)}
.sc-per-b.on{color:var(--ink-1);border-color:rgba(var(--c),.55);background:rgba(var(--c),.1)}
.sc-per-b:active{transform:scale(.97)}
.sc-per-b:focus-visible,.sc-chip:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px}
.sc-whatif{display:flex;align-items:center;flex-wrap:wrap;gap:6px 6px;margin-top:4px}
.sc-wi-k{font-size:12.5px;color:var(--ink-2);margin-right:4px}
.sc-chip{padding:5px 11px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.3);background:transparent;color:var(--ink-2);font:inherit;font-size:12.5px;font-variant-numeric:tabular-nums;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s,transform .16s var(--ease)}
.sc-chip:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.sc-chip.on{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.8);background:rgba(var(--k-245-198-107,245,198,107),.14)}
.sc-chip:active{transform:scale(.97)}
.sc-wi-f input{width:78px;padding:5px 10px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.3);background:rgba(var(--k-6-7-16,6,7,16),.5);color:var(--ink-1);font:inherit;font-size:12.5px}
.sc-wi-f input:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.8)}
.sc-wi-f input::-webkit-inner-spin-button{display:none}
.sc-dial[data-sky=dawn]{--tint:linear-gradient(180deg,rgba(var(--k-40-40-90,40,40,90),0) 35%,rgba(var(--k-255-170-150,255,170,150),.18) 80%,rgba(var(--k-255-200-150,255,200,150),.22) 100%),radial-gradient(40% 50% at 29% 50%,rgba(var(--k-255-238-214,255,238,214),.12),rgba(var(--k-255-238-214,255,238,214),0) 72%)}
.sc-dial[data-sky=day]{--tint:linear-gradient(180deg,rgba(var(--k-120-170-255,120,170,255),.2),rgba(var(--k-120-170-255,120,170,255),.06) 60%,rgba(var(--k-120-170-255,120,170,255),0)),radial-gradient(40% 50% at 29% 50%,rgba(var(--k-255-238-214,255,238,214),.16),rgba(var(--k-255-238-214,255,238,214),0) 72%)}
.sc-dial[data-sky=dusk]{--tint:linear-gradient(180deg,rgba(var(--k-120-80-200,120,80,200),.12) 0%,rgba(var(--k-240-150-120,240,150,120),.16) 70%,rgba(var(--k-245-198-107,245,198,107),.18) 100%),radial-gradient(40% 50% at 29% 50%,rgba(var(--k-255-238-214,255,238,214),.12),rgba(var(--k-255-238-214,255,238,214),0) 72%)}
.sc-constellation{--tint:radial-gradient(42% 55% at 29% 52%,rgba(var(--k-245-198-107,245,198,107),.2),rgba(var(--k-245-198-107,245,198,107),0) 72%),radial-gradient(35% 45% at 60% 15%,rgba(var(--k-196-182-255,196,182,255),.14),rgba(var(--k-196-182-255,196,182,255),0) 70%)}
/* her own sections: the same deep space, lit in the colour she chose for it (a nebula round its core, a second glow high up) */
.sc-clusters{--tint:radial-gradient(44% 58% at 29% 50%,rgba(var(--c),.22),rgba(var(--c),0) 72%),radial-gradient(34% 42% at 58% 12%,rgba(var(--c),.12),rgba(var(--c),0) 70%);
  /* the nebula itself takes her colour: its light, depth and shape stay, its hue becomes hers (a hue blend over the space) */
  --wash:linear-gradient(rgb(var(--c)),rgb(var(--c)));
  background:var(--tint),var(--wash),linear-gradient(rgba(var(--k-2-3-10,2,3,10),.18),rgba(var(--k-2-3-10,2,3,10),.18)),#02030a var(--space);background-blend-mode:normal,normal,hue,normal,normal}
html.simple .sc-clusters{background-blend-mode:normal}
/* the agents' last 24 hours: a timeline she can scrub, play and tap */
.sc-rp{margin-top:10px}
.sc-rp-top{display:flex;align-items:center;gap:10px}
.sc-rp-cap{flex:1;min-width:0;font-size:12.5px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.sc-rp.live .sc-rp-live{visibility:hidden}
.sc-rp-live{flex:none;background:none;border:1px solid transparent;border-radius:999px;padding:5px 10px;color:var(--ink-3);font:inherit;font-size:12px;cursor:pointer}.sc-rp:not(.live) .sc-rp-live{color:var(--ink-1);border-color:var(--hair-2)}
.sc-rp-track{position:relative;height:40px;margin-top:6px;cursor:ew-resize;touch-action:none;outline:none;border-radius:8px}.sc-rp-track:focus-visible{box-shadow:0 0 0 2px rgba(var(--c),.5)}
.sc-rp-line{position:absolute;left:0;right:0;top:20px;height:1px;background:rgba(var(--k-246-239-230,246,239,230),.18)}
.sc-rp-tick{position:absolute;top:17px;width:1px;height:7px;background:rgba(var(--k-246-239-230,246,239,230),.14);transform:translateX(-.5px)}.sc-rp-tick.big{top:14px;height:13px;background:rgba(var(--k-246-239-230,246,239,230),.3)}
.sc-rp-lab{position:absolute;top:30px;transform:translateX(-50%);font-size:11px;letter-spacing:.06em;color:var(--ink-3);white-space:nowrap}.sc-rp-lab.now{transform:translateX(-100%);color:rgba(var(--c),.95)}
.sc-rp-run{position:absolute;top:20px;width:9px;height:9px;padding:0;border:0;border-radius:50%;background:rgba(var(--k-255-250-240,255,250,240),.75);transform:translate(-50%,-50%);cursor:pointer;transition:transform .16s var(--ease),box-shadow .2s}
.sc-rp-run:hover,.sc-rp-run.on{transform:translate(-50%,-50%) scale(1.5);box-shadow:0 0 10px rgba(var(--k-255-250-240,255,250,240),.7)}
.sc-rp-run.gold{background:var(--gold)}.sc-rp-run.bad{background:var(--h-ffb4a2,#ffb4a2)}
.sc-rp-head{position:absolute;top:6px;height:28px;width:2px;background:rgb(var(--c));transform:translateX(-1px);box-shadow:0 0 8px rgba(var(--c),.8);pointer-events:none;transition:left .08s linear}.sc-rp-head::after{content:'';position:absolute;left:-5px;top:-4px;width:12px;height:12px;border-radius:50%;background:rgb(var(--c))}
.sc-rp.live .sc-rp-head{opacity:.5}.sc-rp.playing .sc-rp-head{transition:none}
.sc-rp-what{margin:6px 0 0;min-height:18px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.sc-tl{display:flex;align-items:center;gap:10px;margin-top:8px}
.sc-tl input[type=range]{flex:1;min-width:0;height:22px;margin:0;background:none;accent-color:rgb(var(--c));cursor:pointer}
.sc-tl-when{flex:none;min-width:64px;font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;text-align:right}
.sc-tl-play{flex:none;padding:6px 12px;border-radius:999px;border:1px solid rgba(var(--c),.45);background:rgba(var(--c),.08);color:var(--ink-1);font:inherit;font-size:12px;cursor:pointer;transition:background-color .2s,transform .16s var(--ease)}
.sc-tl-play:hover{background:rgba(var(--c),.18)}.sc-tl-play:active{transform:scale(.97)}
.sc-dial[data-sky=night]{--tint:radial-gradient(40% 50% at 29% 50%,rgba(var(--k-255-238-214,255,238,214),.1),rgba(var(--k-255-238-214,255,238,214),0) 72%),linear-gradient(180deg,rgba(var(--k-20-24-70,20,24,70),.25),rgba(var(--k-20-24-70,20,24,70),0) 70%)}
.sc-hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,transparent 46%,rgba(var(--k-2-3-10,2,3,10),.5) 100%);pointer-events:none}
.sc-scene{position:absolute;inset:0}
.sc-cv{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:manipulation;outline:none}
.sc-cv:focus-visible{box-shadow:inset 0 0 0 2px rgba(var(--c),.55);border-radius:inherit}
.sc-over{grid-column:2;position:relative;z-index:2;padding:30px 34px 30px 40px;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.sc-over>*{pointer-events:auto}
/* the scene draws on the left in every language, so the words stay on the right and read right to left */
html[dir=rtl] .sc-hero{direction:ltr}html[dir=rtl] .sc-over{direction:rtl}
.sc-h{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(27px,2.5vw,34px);line-height:1.14;color:var(--ink-1);text-wrap:balance;text-shadow:0 2px 20px rgba(var(--k-0-0-0,0,0,0),.6)}
.sc-line{margin:0;max-width:46ch;font-size:14px;line-height:1.55;color:rgba(var(--k-232-238-252,232,238,252),.84);text-wrap:pretty}
.sc-figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(var(--n,2) * 11px + 24px),1fr));gap:8px;margin:10px 0 0}
.sc-fig{display:flex;flex-direction:column;align-items:flex-start;min-width:0;container-type:inline-size;padding:10px 12px;border-radius:14px;border:1px solid transparent;background:none;color:inherit;font:inherit;text-align:left}
button.sc-fig{cursor:pointer;border-color:rgba(var(--c),.16);transition:border-color .2s,background-color .2s,transform .16s var(--ease)}
button.sc-fig:hover{border-color:rgba(var(--c),.45)}
button.sc-fig:active{transform:scale(.97)}
button.sc-fig.on{border-color:rgba(var(--c),.7);background:rgba(var(--c),.09)}
button.sc-fig:focus-visible,.sc-act:focus-visible,.sc-x:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px}
.sc-fig b{font-family:var(--display);font-weight:400;font-size:clamp(20px,calc(100cqi / (var(--n,2) * .64)),40px);white-space:nowrap;line-height:1;color:var(--h-fff,#fff);font-variant-numeric:lining-nums tabular-nums}
.sc-fig span{margin-top:7px;font-size:12.5px;color:rgba(var(--k-232-238-252,232,238,252),.86)}
.sc-fig small{margin-top:2px;font-size:11.5px;color:rgba(var(--c),.92)}
.sc-hint{margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.sc-pick{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding:14px 16px 15px;border-radius:16px;background:rgba(var(--k-6-7-16,6,7,16),.84);border:1px solid rgba(var(--c),.34);box-shadow:0 12px 32px rgba(var(--k-0-0-0,0,0,0),.35);animation:sc-in .24s var(--ease)}
@keyframes sc-in{from{opacity:0;transform:translateY(5px)}}
.sc-pick-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.sc-pick-top b{font-size:15.5px;font-weight:600;line-height:1.35;color:var(--ink-1)}
.sc-pick p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.sc-x{flex:none;width:30px;height:30px;margin:-6px -8px 0 0;border:0;border-radius:50%;background:none;color:var(--ink-3);font-size:19px;line-height:1;cursor:pointer;transition:color .15s}
.sc-x:hover{color:var(--ink-1)}
.sc-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.sc-act{align-self:flex-start;padding:9px 16px;border-radius:999px;border:1px solid rgba(var(--c),.55);background:rgba(var(--c),.1);color:var(--ink-1);font:inherit;font-size:13px;cursor:pointer;transition:background-color .2s,transform .16s var(--ease)}
.sc-act:hover{background:rgba(var(--c),.2)}
.sc-act:active{transform:scale(.97)}
/* Relationships: one person, one star — a person's name and label, their other entries, edit / merge / hide, and "Same person?" */
.sc-pp-name{display:inline;font-size:15.5px;font-weight:600;line-height:1.35;color:var(--ink-1)}
.sc-pp-dot{margin:0 7px;color:var(--ink-3);font-weight:400}
.sc-pp-label{font-weight:400;color:rgba(var(--c),.95)}
.sc-pick p.sc-pp-also{font-size:12.5px;color:var(--ink-3)}
.sc-pp-tools{display:flex;flex-wrap:wrap;gap:0 18px;margin-top:10px;padding-top:6px;border-top:1px solid var(--hair)}
.sc-pp-tool{min-height:34px;padding:6px 0;border:0;background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:color .15s,transform .16s var(--ease)}
.sc-pp-tool:hover{color:var(--ink-1)}.sc-pp-tool:active{transform:scale(.97)}
.sc-pp-tool.sc-pp-hide{color:var(--ink-3)}.sc-pp-tool.sc-pp-hide:hover{color:var(--ink-1)}
.sc-pp-tool:focus-visible,.sc-pp-chip:focus-visible,.sc-pp-row:focus-visible,.sc-pp-opt:focus-visible,.sc-link:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px;border-radius:8px}
.sc-pp-form{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.sc-pp-f{display:flex;flex-direction:column;gap:5px}
.sc-pp-f>span{font-size:12px;color:var(--ink-3)}
.sc-pp-f small{font-size:11.5px;line-height:1.45;color:var(--ink-3)}
.sc-pp-f input,.sc-pp-search{width:100%;box-sizing:border-box;font:inherit;font-size:14.5px;color:var(--ink-1);background:rgba(var(--k-255-255-255,255,255,255),.045);border:1px solid var(--hair-2);border-radius:11px;padding:9px 12px;transition:border-color .15s}
.sc-pp-f input:focus,.sc-pp-search:focus{outline:none;border-color:rgba(var(--c),.7)}
.sc-pp-f input::placeholder,.sc-pp-search::placeholder{color:var(--ink-3)}
.sc-pp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:-2px}
.sc-pp-chip{padding:6px 11px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:12px;cursor:pointer;transition:border-color .15s,color .15s,transform .16s var(--ease)}
.sc-pp-chip:hover{border-color:rgba(var(--c),.6);color:var(--ink-1)}.sc-pp-chip:active{transform:scale(.97)}
.sc-pick p.sc-pp-h{margin:4px 0 0;font-size:12px;color:var(--ink-3)}
.sc-pp-also-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.sc-pp-also-list li{display:flex;align-items:center;gap:8px;min-height:38px;border-bottom:1px solid var(--hair)}
.sc-pp-also-list li:last-child{border-bottom:0}
.sc-pp-alias{display:flex;flex-direction:column;gap:1px;font-size:13.5px;color:var(--ink-1);overflow-wrap:anywhere}.sc-pp-alias small{font-size:12px;color:var(--ink-3)}
.sc-pp-hint{font-size:11.5px;line-height:1.45;color:var(--ink-3)}
.sc-pp-also-list small{font-size:12px;color:var(--ink-3)}
.sc-pp-also-list .sc-link{margin-inline-start:auto;align-self:center;flex:none}
.sc-pp-search{margin-top:2px}
.sc-pp-search::-webkit-search-cancel-button{filter:invert(1) opacity(.5)}
.sc-pp-results{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column}
.sc-pp-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:calc(100% + 20px);min-height:0;padding:8px 10px;margin:0 -10px;box-sizing:border-box;border:0;border-radius:10px;background:none;color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:background-color .15s}
.sc-pp-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.06)}
.sc-pp-row-n{font-size:13.5px}.sc-pp-row small{font-size:12px;line-height:1.4;color:var(--ink-3)}.sc-pp-row small span{font-size:inherit}.sc-pp-sep{color:var(--ink-3)}
.sc-pp-none{padding:8px 0;font-size:12.5px;color:var(--ink-3)}
.sc-pp-keep{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.sc-pp-opt{padding:8px 15px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;transition:border-color .15s,background-color .15s,color .15s,transform .16s var(--ease)}
.sc-pp-opt.on{border-color:rgba(var(--c),.7);background:rgba(var(--c),.14);color:var(--ink-1)}
.sc-pp-opt:active{transform:scale(.97)}
.sc-pick p.sc-pp-note{font-size:12.5px;color:var(--ink-3);margin-top:2px}
.sc-pick .sc-link{min-height:34px}
.sc-act.busy,.sc-pp-tool.busy,.sc-link.busy{opacity:.55;cursor:progress}
.sc-same{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding:12px 14px 12px 16px;border-radius:16px;background:rgba(var(--k-6-7-16,6,7,16),.86);border:1px dashed rgba(var(--c),.42);animation:sc-in .24s var(--ease)}
.sc-same-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sc-same-top b{font-size:13.5px;font-weight:600;color:var(--ink-1)}
.sc-same-top .sc-x{margin:-4px -8px -4px 0}
.sc-pp-reset{align-self:flex-start;margin-top:-4px}
/* a finger needs 44 px: every tap target in a person's panel and the merge card */
@media (pointer:coarse),(max-width:760px){
  .sc-pp-tool,.sc-link,.sc-pp-chip,.sc-pp-opt,.sc-done-undo,.sc-pick .sc-act,.sc-same-acts .sc-act,.sc-pp-row,.sc-pick .sc-link{min-height:44px}
  .sc-pp-chip,.sc-pp-opt{padding-block:0;display:inline-flex;align-items:center}
  .sc-x{width:44px;height:44px;margin:-14px -14px 0 0}
  .sc-same-top .sc-x{margin:-14px -14px -10px 0}
  .sc-pp-chips{gap:8px}
  .sc-pp-also-list li{min-height:44px}
}
.sc-same-why{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.sc-same-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:6px}
.sc-same-acts .sc-act{padding:7px 15px}
.sc-same-acts .sc-link{align-self:center;min-height:34px}
.sc-pp-same{display:flex;flex-wrap:wrap;align-items:center;gap:2px 14px;margin-top:10px;padding:9px 12px;border-radius:12px;border:1px dashed rgba(var(--c),.42)}
.sc-pp-same .sc-same-why{flex:1 1 100%}.sc-pp-same .sc-same-keeps{flex:1 1 100%}
/* a person's panel scrolls inside the header on a wide screen; its last row of buttons stays in reach on a solid surface */
.sc-pp{overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--c),.35) transparent}
.sc-pp:not([data-mode=view]) .sc-acts:last-child{position:sticky;bottom:-15px;z-index:1;margin:2px -16px -15px;padding:9px 16px 12px;background:#07080f;border-top:1px solid var(--hair);border-radius:0 0 16px 16px}
.sc-same-keeps{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
/* what just changed, on the scene where she is looking: a solid note with Undo */
.sc-done{position:absolute;z-index:3;left:18px;bottom:18px;max-width:min(440px,calc(100% - 36px));display:flex;align-items:center;gap:14px;padding:10px 10px 10px 16px;border-radius:14px;background:#0b0c18;border:1px solid var(--hair-2);box-shadow:0 10px 30px rgba(0,0,0,.45);animation:sc-in .22s var(--ease)}
.sc-done[hidden]{display:none}
.sc-done-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.sc-done p{margin:0;font-size:13px;line-height:1.4;color:var(--ink-1)}
.sc-done small{font-size:12px;line-height:1.4;color:var(--ink-3)}
.sc-done-undo{flex:none;margin-inline-start:auto;min-height:36px;padding:7px 14px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);background:none;color:var(--gold);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:background .15s,transform .15s var(--ease)}
.sc-done-undo:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}.sc-done-undo:active{transform:scale(.96)}
.sc-done-undo:focus-visible{outline:2px solid rgba(var(--c),.8);outline-offset:2px}
[dir=rtl] .sc-done{direction:rtl;padding:10px 16px 10px 10px} /* stays over the scene (left in every language), reads right to left */
@media (prefers-reduced-motion:reduce){.sc-done{animation:none}}
.did-undo{border:0;background:none;padding:0;font:inherit;font-size:12px;cursor:pointer}
@media (prefers-reduced-motion:reduce){.sc-same{animation:none}}
@media (max-width:760px){
  .sc-hero{grid-template-columns:1fr;min-height:0;border-radius:20px;margin:0 -4px 12px}
  .sc-wait{min-height:320px}
  .sc-hero::after{background:linear-gradient(180deg,transparent 55%,rgba(var(--k-2-3-10,2,3,10),.55))}
  .sc-scene{position:relative;inset:auto;height:min(390px,54vh);min-height:300px}
  .sc-over{grid-column:auto;padding:22px 18px 20px;margin-top:-20px;background:linear-gradient(180deg,rgba(var(--k-4-5-12,4,5,12),0),rgba(var(--k-4-5-12,4,5,12),.88) 20px,rgba(var(--k-4-5-12,4,5,12),.93));border-radius:0 0 20px 20px} /* words sit on a surface, never on the stars */
  .sc-h{font-size:25px}
  .sc-fig{padding:9px 10px}.sc-fig b{font-size:clamp(18px,calc(100cqi / (var(--n,2) * .64)),30px)}

}
@media (prefers-reduced-motion:reduce){.sc-pick{animation:none}button.sc-fig,.sc-act,.sc-seg-b{transition:none}}
@media (max-width:1100px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.tile.s3,.tile.s4,.tile.s1.lone{grid-column:1 / -1}.ld-rest{grid-template-columns:1fr}}
@media (max-width:760px){
  .life-detail.dash{padding:0 14px 36px}
  .life-detail.dash .ld-head{margin:0 -14px 14px;padding:12px 14px;top:0;gap:10px;flex-wrap:wrap}
  .ld-nav{order:5;width:100%;justify-content:space-between}.ld-dots{flex:1;justify-content:space-around}
  .ld-back{padding:6px 10px;font-size:12px}
  .ld-title h3{font-size:24px}.ld-line,.ld-chip span{display:none}
  .tiles{gap:8px}.tile{padding:13px 13px 12px;border-radius:16px}.tile.s2{grid-column:1 / -1}
  .tl-v{font-size:28px}.tl-v.txt{font-size:18px}
  .at-hero{grid-template-columns:1fr;min-height:0;border-radius:20px;margin:0 -4px 12px}
  .at-hero::after{background:linear-gradient(180deg,transparent 50%,rgba(var(--k-2-3-10,2,3,10),.6))}
  .at-globe{position:relative;inset:auto;height:min(420px,58vh);min-height:300px}
  .at-over{grid-column:auto;padding-left:18px!important}
  .at-over{padding:18px 18px 20px;background:linear-gradient(180deg,rgba(var(--k-2-3-10,2,3,10),0),rgba(var(--k-2-3-10,2,3,10),.72) 56px)} /* under the globe the numbers and lines sit on a dark wash, not on the bright nebula */
  .at-big b{font-size:38px}
}
@media (prefers-reduced-motion:reduce){#fig{transition:opacity .3s}#stage.in-life #fig{transform:none}}
@media (prefers-reduced-motion:reduce){#memcard{transition:opacity .2s}.status .pip,.mic::before,.mic::after,.talk-orb.on i,.dock .talk-orb{animation:none!important}.chrome{transition:none}}

/* ---------- app layer ---------- */
[hidden]{display:none!important}
.gated .chrome,.gated .approve,.gated .ap-scrim{opacity:0!important;pointer-events:none!important}
#reply,.approve h2,.greet h1,#statusText{font-variant-numeric:lining-nums}
.greet.talking{text-align:left}
.greet.talking .sources{justify-content:flex-start}
.greet.talking .hello{text-align:left}
#anchors{position:absolute;inset:0;pointer-events:none;z-index:4}
.review{display:none}
.review-on .review{display:flex}
.greet{pointer-events:auto}
/* reading over the stars: while a reply is up, the dark pool behind the greeting widens and deepens under the text
   (it fades out toward the corners, so there's no box and no blur), and the drifting memory labels step back */
.greet:has(#reply.on)::before{inset:-34px -60px -24px;background:radial-gradient(farthest-corner,rgba(var(--k-3-4-10,3,4,10),.74),rgba(var(--k-3-4-10,3,4,10),.6) 55%,rgba(var(--k-3-4-10,3,4,10),0))}
#anchors{transition:opacity .28s cubic-bezier(.23,1,.32,1)}
#stage:has(#reply.on) #anchors{opacity:.3}
.greet.talking h1{display:none}
#said{margin:0 0 10px;font-size:13.5px;color:var(--ink-3);line-height:1.5;display:none}
#said.on{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;overflow-wrap:anywhere}
/* what she said stays a few lines tall, however much she pasted, so the answer and the controls keep their room */
#said.on.open{display:block;-webkit-line-clamp:unset;line-clamp:none;max-height:26vh;overflow:auto;overscroll-behavior:contain}
#said.on.live{display:block;-webkit-line-clamp:unset;line-clamp:none;max-height:4.5em;overflow:hidden}
.said-more{display:block;margin:-6px 0 10px;padding:4px 0;font-size:12px;color:var(--ink-2);transition:color .2s}
.said-more:hover{color:var(--ink-1)}
.preview-tag{position:fixed;left:50%;top:max(6px,env(safe-area-inset-top));transform:translateX(-50%);z-index:90;max-width:calc(100vw - 32px);padding:6px 12px;border-radius:999px;background:rgba(var(--k-245-198-107,245,198,107),.14);border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);color:var(--h-f5d9a0,#f5d9a0);font-size:12px;line-height:1.35;text-align:center;pointer-events:none}
.said-more[hidden]{display:none}
#said .caret{display:inline-block;width:1.5px;height:14px;background:var(--ice);margin-left:2px;vertical-align:-2px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
#reply{display:none;margin:0 auto;max-width:620px;text-align:left;font-family:var(--sans);font-size:clamp(16px,1.2vw,17.5px);line-height:1.6;color:var(--ink-1);max-height:38vh;overflow:auto;padding-right:6px}
#reply.on{display:block}
:is(#reply,.turn-a) p{margin:0 0 .6em}
:is(#reply,.turn-a) strong{font-weight:600;color:var(--h-fff,#fff)}
:is(#reply,.turn-a) em{font-style:italic;color:var(--ink-1)}
:is(#reply,.turn-a) code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82em;background:rgba(var(--k-246-239-230,246,239,230),.08);border-radius:5px;padding:1px 5px}
:is(#reply,.turn-a) ul,:is(#reply,.turn-a) ol{margin:0 0 .7em;padding:0 0 0 1.15em}
:is(#reply,.turn-a) li{margin:0 0 .3em;padding-left:.15em}
:is(#reply,.turn-a) li::marker{color:var(--gold)}
:is(#reply,.turn-a) .item{display:block;padding-left:1.1em;text-indent:-1.1em;margin-top:.15em}
:is(#reply,.turn-a) .lead{display:block}
:is(#reply,.turn-a) pre.code{position:relative;margin:0 0 .8em;padding:12px 14px 12px;border-radius:12px;background:rgba(var(--k-0-0-0,0,0,0),.32);border:1px solid var(--hair);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.72em;line-height:1.5;color:var(--ink-1);white-space:pre-wrap;word-break:break-word;overflow:auto}
:is(#reply,.turn-a) pre.code code{background:none;padding:0;font-size:inherit}
/* something to paste or send (an email, a message, a form answer): its words on their own, with a Copy that takes only them */
.paste{position:relative;margin:0 0 .9em;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-0-0-0,0,0,0),.42);overflow:hidden}
.paste-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px 8px 14px;border-bottom:1px solid var(--hair)}
.paste-t{font-family:var(--ui,system-ui);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.paste .code-copy{position:static;flex:none}
.paste-subj{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px 9px 14px;border-bottom:1px solid var(--hair);font-size:.86em;color:var(--ink-1)}
.paste-subj b{font-family:var(--ui,system-ui);font-weight:500;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-right:6px}
.paste-b{padding:12px 14px 14px;white-space:pre-wrap;word-break:break-word;line-height:1.55;font-size:.92em;color:var(--ink-1);user-select:text;-webkit-user-select:text}
.wt-reply .paste{margin:6px 0}.reader-body .paste{margin:0 0 1em}
.code-copy{position:absolute;top:6px;right:6px;font:inherit;font-family:var(--ui,system-ui);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);background:rgba(var(--k-246-239-230,246,239,230),.06);border:1px solid var(--hair);border-radius:999px;padding:3px 9px;cursor:pointer;transition:color .2s,transform .16s cubic-bezier(.23,1,.32,1)}.code-copy:hover{color:var(--gold)}.code-copy:active{transform:scale(.96)}.code-copy.done{color:var(--gold)}
:is(#reply,.turn-a) table,.reader-body table{border-collapse:collapse;width:100%;margin:0 0 .8em;font-size:.78em;font-family:var(--ui,system-ui)}
:is(#reply,.turn-a) th,:is(#reply,.turn-a) td,.reader-body th,.reader-body td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--hair);vertical-align:top}
:is(#reply,.turn-a) th,.reader-body th{font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
:is(#reply,.turn-a) .lang{position:absolute;top:8px;left:12px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-family:var(--ui,system-ui)}:is(#reply,.turn-a) pre.code.has-lang{padding-top:26px}
.reply-tools{display:flex;gap:8px;justify-content:flex-start;flex-wrap:wrap;margin:8px 0 0}
.rt-listen{display:inline-flex;align-items:center;gap:7px}
.rt-listen i{width:12px;height:10px;background:linear-gradient(currentColor,currentColor) 0 50%/2px 40% no-repeat,linear-gradient(currentColor,currentColor) 5px 50%/2px 100% no-repeat,linear-gradient(currentColor,currentColor) 10px 50%/2px 60% no-repeat}
.rt-listen.on{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.rt-listen.on i{animation:eq .9s ease-in-out infinite alternate}
@keyframes eq{0%{background-size:2px 40%,2px 100%,2px 60%}50%{background-size:2px 90%,2px 35%,2px 80%}100%{background-size:2px 55%,2px 75%,2px 30%}}
@media (prefers-reduced-motion:reduce){.rt-listen.on i{animation:none}}
.turn{padding:0 0 14px;margin:0 0 14px;border-bottom:1px solid var(--hair)}.turn:last-child{border-bottom:0}
.turn-q{font-family:var(--ui,system-ui);font-size:13px;color:var(--ink-3);margin:0 0 8px}.turn-q::before{content:"You · ";color:var(--gold);letter-spacing:.06em}
.rt{font:inherit;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);background:none;border:1px solid var(--hair);border-radius:999px;padding:5px 12px;cursor:pointer;transition:color .2s,border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}.rt:hover{color:var(--ink-1);border-color:var(--hair-2)}.rt:active{transform:scale(.96)}.rt.done{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.files{display:grid;gap:8px;margin:4px 0 .8em}
.file-card{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--hair-2);border-radius:12px;background:rgba(var(--k-246-239-230,246,239,230),.04);font-family:var(--ui,system-ui);font-size:13px}
.file-card .ic{flex:none;width:34px;height:40px;border-radius:6px;border:1px solid var(--hair-2);display:grid;place-items:center;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.file-card .m{flex:1;min-width:0}.file-card b{display:block;font-weight:500;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-card small{color:var(--ink-3)}
.file-card .rt{text-decoration:none}
.file-card.doc button.ic,.file-card.doc button.m{padding:0;background:none;cursor:pointer;color:inherit;font:inherit;text-align:start}.file-card.doc button.ic{font-size:9px;letter-spacing:.08em;color:var(--gold);border:1px solid var(--hair-2)}.file-card.doc button.m{border:0}.file-card.doc button:focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
.file-card.doc .rt{min-height:44px;padding:0 16px;font-size:13.5px;letter-spacing:0;text-transform:none;display:inline-flex;align-items:center}.file-card.doc .rt-open{color:var(--h-141018,#141018);background:var(--ink-1);border-color:var(--ink-1);font-weight:600}
@media (hover:hover){.file-card.doc .rt-open:hover{background:#fff;color:#141018}}
/* NOVA Pages (public/js/pages.js): the page card under a reply, and the viewer ("Stage"): the page centred on a solid
   stage with one floating toolbar, NOVA docked beside it as Changes, versions as a line of stars. Always dark (it's a
   stage for someone else's colours), always on a solid surface (no stars behind the page). */
.pg-card .pg-ic{width:40px;height:40px;border-radius:12px;color:var(--ice);border-color:rgba(var(--k-92-225-255,92,225,255),.35)}
.pg-card .pg-ic .pg-i{width:20px;height:20px}
.pg-card .rt{min-height:44px;padding:0 16px;font-size:13.5px;letter-spacing:0;text-transform:none;display:inline-flex;align-items:center}
.pg-card .pg-open{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.pg-card[data-state=building] small,.pg-card[data-state=checking] small,.pg-card[data-state=editing] small{color:var(--ice)}
.pg-card[data-state=stopped] small,.pg-card[data-state=error] small{color:var(--rose)}
@media (max-width:760px){.files .pg-card .m{flex-basis:calc(100% - 56px)}}
.pg-i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
html[dir=rtl] .pg-i.flip{transform:scaleX(-1)}
html.pgv-open{overflow:hidden}
.pgv{--pv-night:#07080d;--pv-sf1:#181a22;--pv-sheet:#080a14;--pv-raised:#10121f;--pv-ink:#f6efe6;--pv-ink2:rgba(246,239,230,.74);--pv-ink3:rgba(246,239,230,.56);--pv-hair:rgba(246,239,230,.10);--pv-hair2:rgba(246,239,230,.20);
  --pv-pop:inset 0 1px 0 rgba(246,239,230,.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);--pv-out:cubic-bezier(.23,1,.32,1);
  position:fixed;inset:0;z-index:100;color:var(--pv-ink);font-family:var(--sans);background:radial-gradient(80% 70% at 42% 45%,#11131c,var(--pv-night) 75%);
  opacity:0;transform:translateY(8px);transition:opacity .22s var(--pv-out),transform .22s var(--pv-out)}
.pgv.on{opacity:1;transform:none}
.pgv :where(button){font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pgv :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.pgv[data-layout=desk]{display:grid;grid-template-columns:minmax(0,1fr) 380px}
.pgv-stage{position:relative;display:flex;flex-direction:column;align-items:center;min-width:0;min-height:0;padding:18px 32px 0}
/* the one floating toolbar */
.pgv-bar{position:relative;z-index:4;display:flex;align-items:center;gap:6px;padding:6px;border-radius:999px;background:var(--pv-sf1);box-shadow:var(--pv-pop),inset 0 0 0 1px var(--pv-hair);max-width:100%}
.pgv-tt{display:flex;flex-direction:column;min-width:0;padding:0 14px 0 4px;line-height:1.25}
.pgv-tt b{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.pgv-sub{font-size:13px;color:var(--pv-ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pgv-sep{width:1px;height:26px;background:var(--pv-hair2);margin:0 6px;flex:none}
.pgv-ib{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;color:var(--pv-ink2);text-decoration:none;transition:transform .16s var(--pv-out),background-color .15s ease}
.pgv-ib:active{transform:scale(.94)}.pgv-ib:disabled{opacity:.35;cursor:default}
@media (hover:hover) and (pointer:fine){.pgv-ib:not(:disabled):hover{background:rgba(246,239,230,.06);color:var(--pv-ink)}}
.pgv-seg{display:inline-flex;padding:4px;border-radius:999px;background:rgba(246,239,230,.05);box-shadow:inset 0 0 0 1px var(--pv-hair);flex:none}
.pgv-seg button{display:inline-flex;align-items:center;gap:8px;height:36px;min-width:44px;padding:0 15px;border-radius:999px;font-size:14.5px;color:var(--pv-ink2);transition:transform .16s var(--pv-out),color .15s ease}
.pgv-seg button:active{transform:scale(.96)}
.pgv-seg button span{display:inline-flex}.pgv-seg .pg-i{width:18px;height:18px}
.pgv-seg button.on{background:rgba(245,198,107,.1);color:var(--pv-ink);box-shadow:inset 0 0 0 1px rgba(245,198,107,.6)}
.pgv-seg button.on .pg-i{color:var(--gold)}
.pgv-b{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:0 18px;border-radius:999px;font-size:15px;font-weight:500;white-space:nowrap;text-decoration:none;transition:transform .16s var(--pv-out),box-shadow .15s ease,background-color .15s ease}
.pgv-b span{display:inline-flex}.pgv-b .pg-i{width:18px;height:18px}
.pgv-b:active{transform:scale(.97)}.pgv-b:disabled{opacity:.4;cursor:default}
.pgv-b-gold{background:var(--gold);color:#1d1408;font-weight:600}
.pgv-b-line{box-shadow:inset 0 0 0 1px var(--pv-hair2);color:var(--pv-ink)}
.pgv-b-gline{box-shadow:inset 0 0 0 1px rgba(245,198,107,.55);color:var(--gold)}
.pgv-b-text{color:var(--pv-ink2);padding:0 12px}
@media (hover:hover) and (pointer:fine){.pgv-b-gline:hover{box-shadow:inset 0 0 0 1px rgba(245,198,107,.85)}.pgv-b-text:hover{color:var(--pv-ink)}}
.pgv-pop{position:absolute;z-index:6;background:var(--pv-sf1);border-radius:18px;box-shadow:var(--pv-pop),inset 0 0 0 1px var(--pv-hair);animation:pgvPop .16s var(--pv-out) both}
@keyframes pgvPop{from{opacity:0;transform:translate(var(--pv-tx,0),4px) scale(.97)}to{opacity:1;transform:translate(var(--pv-tx,0),0)}}
.pgv-pop .pgv-row{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}
.pgv-sharepop{top:calc(100% + 10px);inset-inline-end:0;width:300px;padding:16px;transform-origin:top right}
.pgv-sharepop p{margin:0;font-size:14.5px;line-height:1.5;color:var(--pv-ink2)}
/* the stage: the page itself, solid, centred */
.pgv-canvas{position:relative;flex:1;min-height:0;width:100%;display:flex;justify-content:center;align-items:flex-start;padding-top:20px}
.pgv-box{position:relative;width:100%;height:100%;max-width:1180px;overflow:hidden;border-radius:14px;background:#f4f2ec;box-shadow:0 0 0 1px rgba(246,239,230,.08),0 30px 80px -30px rgba(0,0,0,.9)}
.pgv-frame,.pgv-checkframe{display:block;border:0;background:#f4f2ec;transform-origin:0 0;position:absolute;top:0;left:0}
html[dir=rtl] .pgv-frame,html[dir=rtl] .pgv-checkframe{left:auto;right:0;transform-origin:100% 0}
.pgv-checkframe.offscreen{position:fixed;top:0;left:-30000px;opacity:0;pointer-events:none}
.pgv-phoneframe{position:relative;height:100%;max-height:760px;aspect-ratio:390/800;padding:10px;border-radius:44px;background:#0b0c11;box-shadow:0 0 0 1px rgba(246,239,230,.12),0 40px 90px -30px rgba(0,0,0,.95)}
.pgv-phoneframe .pgv-box,.pgv-phoneframe .pgv-phn{width:100%;height:100%;border-radius:34px;box-shadow:none;overflow:hidden;position:relative;background:#f4f2ec}
.pgv-checkwrap{display:flex;gap:34px;align-items:center;justify-content:center;width:100%;height:100%;padding-bottom:10px}
.pgv-lapframe{flex:0 1 620px;padding:12px;border-radius:18px;background:#0b0c11;box-shadow:0 0 0 1px rgba(246,239,230,.1),0 30px 80px -30px rgba(0,0,0,.9)}
.pgv-lap{position:relative;width:100%;aspect-ratio:1440/900;overflow:hidden;border-radius:8px;background:#f4f2ec}
.pgv-checkwrap .pgv-phoneframe{height:min(100%,520px)}
/* NOVA at work on the page: an ice line passes over it while it's checked or changed (live state only) */
.pgv-scan{position:absolute;inset-inline:6%;top:22px;height:2px;border-radius:2px;pointer-events:none;opacity:0;background:linear-gradient(90deg,rgba(92,225,255,0),#5ce1ff 30%,#fff 50%,#5ce1ff 70%,rgba(92,225,255,0));box-shadow:0 0 18px 3px rgba(92,225,255,.5)}
.pgv[data-state=checking] .pgv-scan,.pgv-canvas.editing .pgv-scan{opacity:1;animation:pgvScan 2.4s cubic-bezier(.45,0,.55,1) infinite alternate}
@keyframes pgvScan{from{transform:translateY(0)}to{transform:translateY(min(60vh,560px))}}
.pgv-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--pv-ink2);font-size:16px}
/* the versions: a line of stars under the page */
.pgv-line{position:relative;flex:none;width:100%;height:104px;display:flex;align-items:flex-start;justify-content:center;gap:12px;padding-top:10px}
.pgv-rail{position:relative;display:flex;align-items:flex-start;max-width:min(880px,100% - 140px);overflow-x:auto;scrollbar-width:none}
.pgv-rail::-webkit-scrollbar{display:none}
.pgv-railline{position:absolute;inset-inline:75px;top:24px;height:1.5px;background:linear-gradient(90deg,rgba(92,225,255,.25),rgba(92,225,255,.7))}
html[dir=rtl] .pgv-railline{background:linear-gradient(270deg,rgba(92,225,255,.25),rgba(92,225,255,.7))}
.pgv-star{position:relative;flex:none;width:150px;min-height:48px;display:flex;flex-direction:column;align-items:center;padding:0 4px 4px;border-radius:14px;transition:transform .16s var(--pv-out)}
.pgv-star:active{transform:scale(.97)}.pgv-star:disabled{cursor:default}
.pgv-star i{display:block;width:9px;height:9px;margin-top:20px;border-radius:50%;background:var(--pearl);box-shadow:0 0 10px 2px rgba(92,225,255,.55)}
.pgv-star.cur i{width:14px;height:14px;margin-top:17.5px;background:var(--gold);box-shadow:0 0 0 6px rgba(245,198,107,.16),0 0 18px 4px rgba(245,198,107,.55)}
.pgv-star.live i{width:14px;height:14px;margin-top:17.5px;background:var(--ice);box-shadow:0 0 0 6px rgba(92,225,255,.14),0 0 18px 5px rgba(92,225,255,.6);animation:pgvLive 1.6s ease-in-out infinite}
@keyframes pgvLive{50%{box-shadow:0 0 0 9px rgba(92,225,255,.08),0 0 22px 7px rgba(92,225,255,.45)}}
.pgv-star.bad i{width:14px;height:14px;margin-top:17.5px;background:var(--rose);box-shadow:0 0 0 6px rgba(255,122,182,.14),0 0 16px 4px rgba(255,122,182,.5)}
.pgv-star b{margin-top:13px;font-size:13.5px;font-weight:500;color:var(--pv-ink2);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pgv-star span{font-size:12.5px;color:var(--pv-ink3);white-space:nowrap;margin-top:2px}
.pgv-star.cur b{color:var(--pv-ink)}
@media (hover:hover) and (pointer:fine){.pgv-star:not(:disabled):not(.cur):hover b{color:var(--pv-ink)}}
.pgv-undo{margin-top:6px}
.pgv-tip{bottom:84px;width:300px;padding:10px;--pv-tx:-50%;transform:translateX(-50%);transform-origin:50% 100%}
.pgv-tip::after{content:"";position:absolute;bottom:-6px;left:50%;width:12px;height:12px;background:var(--pv-sf1);transform:translateX(-50%) rotate(45deg);box-shadow:1px 1px 0 var(--pv-hair)}
.pgv-mini{position:relative;height:170px;overflow:hidden;border-radius:10px;background:#f4f2ec}
.pgv-mini iframe{pointer-events:none}
.pgv-tip .d{margin:10px 4px 0;font-size:13.5px;color:var(--pv-ink2);line-height:1.4}
.pgv-tip .d b{color:var(--pv-ink);font-weight:500}
.pgv-tip .pgv-row{margin:10px 2px 0}.pgv-tip .pgv-row .pgv-b-gline{flex:1}
.pgv-fine{margin:8px 4px 2px;font-size:12.5px;color:var(--pv-ink3);line-height:1.4}
/* NOVA docked beside the page: Changes */
.pgv-dock{position:relative;display:flex;flex-direction:column;min-height:0;background:var(--pv-sheet);border-inline-start:1px solid var(--pv-hair)}
.pgv-dh{display:flex;align-items:center;gap:12px;min-height:76px;padding:0 20px;border-bottom:1px solid var(--pv-hair)}
.pgv-dh b{display:block;font-size:15.5px;font-weight:600}
.pgv-dockx{margin-inline-start:auto}
.pgv.nodock[data-layout=desk]{grid-template-columns:minmax(0,1fr)}
.pgv.nodock .pgv-dock{display:none}
.pgv-dh span:not(.pgv-mark){display:block;font-size:13px;color:var(--pv-ink3);margin-top:2px}
.pgv-mark{width:28px;height:28px;flex:none;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff3e6 0 9%,rgba(245,198,107,.85) 10% 18%,rgba(92,225,255,.35) 30%,rgba(92,225,255,0) 70%);box-shadow:inset 0 0 0 1px rgba(92,225,255,.25)}
.pgv-mark.big{width:72px;height:72px}
.pgv-thread{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px;scrollbar-width:thin;scrollbar-color:rgba(246,239,230,.18) transparent}
.pgv-thread-in{display:flex;flex-direction:column;justify-content:flex-end;gap:12px;min-height:100%}
.pgv-say{display:flex;gap:10px;align-items:flex-start}
.pgv-say .pgv-mark{width:24px;height:24px;margin-top:8px}
.pgv-bub{background:var(--pv-raised);border-radius:6px 20px 20px 20px;padding:13px 15px;font-size:15px;line-height:1.5;color:var(--pv-ink);min-width:0}
html[dir=rtl] .pgv-bub{border-radius:20px 6px 20px 20px}
.pgv-bub .pgv-row{display:flex;gap:8px;margin-top:12px}
.pgv-me{align-self:flex-end;max-width:88%;background:rgba(246,239,230,.08);color:rgba(246,239,230,.9);border-radius:18px 18px 6px 18px;padding:10px 15px;font-size:15px;line-height:1.45;overflow-wrap:anywhere}
html[dir=rtl] .pgv-me{border-radius:18px 18px 18px 6px}
.pgv-read{margin:-4px 0 0;padding-inline-start:34px;font-size:13.5px;line-height:1.45;color:var(--pv-ink3)}
.pgv-meta{display:flex;gap:7px;align-items:center;font-size:13.5px;color:var(--pv-ink3);padding-inline-start:4px}
.pgv-meta .ok{color:var(--mint);display:inline-flex}.pgv-meta .pg-i{width:17px;height:17px}
.pgv-change{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:start;font-size:14px;color:var(--pv-ink2);line-height:1.45;padding:12px 14px;border-radius:16px;background:var(--pv-sf1);transition:transform .16s var(--pv-out),box-shadow .15s ease}
button.pgv-change:active{transform:scale(.98)}
@media (hover:hover) and (pointer:fine){button.pgv-change:hover{box-shadow:inset 0 0 0 1px rgba(245,198,107,.35)}}
.pgv-change b{color:var(--pv-ink);font-weight:500}
.pgv-change .n{width:22px;height:22px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--gold);color:#1d1408;margin-top:-1px}
.pgv-change.fixing{box-shadow:inset 0 0 0 1px rgba(245,198,107,.4)}
.pgv-change .okc{color:var(--mint);display:inline-flex}
.pgv-notes{padding:12px 14px;border-radius:16px;box-shadow:inset 0 0 0 1px var(--pv-hair);font-size:13.5px;color:var(--pv-ink2)}
.pgv-notes b{display:block;font-weight:500;color:var(--pv-ink);margin-bottom:4px}
.pgv-notes ul{margin:0;padding-inline-start:18px;line-height:1.5}
.pgv-status{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:var(--pv-sf1);font-size:14.5px}
.pgv-status .dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--ice);box-shadow:0 0 0 5px rgba(92,225,255,.14),0 0 12px rgba(92,225,255,.8);animation:pgvLive 1.6s ease-in-out infinite}
.pgv-status .pgv-meta{padding:0;margin-top:2px}
.pgv-fail{padding:16px;border-radius:18px;background:var(--pv-sf1);box-shadow:inset 0 0 0 1px rgba(255,122,182,.35)}
.pgv-fail .ti{display:flex;gap:9px;align-items:center;font-size:16px;font-weight:600}
.pgv-fail .ti span{display:inline-flex;color:var(--rose)}
.pgv-fail p{font-size:14.5px;color:var(--pv-ink2);line-height:1.5;margin:8px 0 0}
.pgv-fail .pgv-row{display:flex;gap:8px;margin-top:14px;align-items:center}
.pgv-comp{display:flex;align-items:center;gap:4px;height:60px;margin:10px 16px 18px;padding-block:0;padding-inline:20px 8px;border-radius:30px;background:var(--pv-sf1);box-shadow:inset 0 0 0 1px var(--pv-hair2);transition:box-shadow .15s ease}
.pgv-comp:focus-within{box-shadow:inset 0 0 0 1px rgba(245,198,107,.6)}
.pgv-field{flex:1;min-width:0;height:44px;border:0;outline:0;background:none;color:var(--pv-ink);font:inherit;font-size:16px;caret-color:var(--gold)}
.pgv-field::placeholder{color:var(--pv-ink3)}
.pgv .pgv-field:focus-visible{outline:0}
.pgv-mic,.pgv-send{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;color:var(--pv-ink2);transition:transform .16s var(--pv-out),color .15s ease,box-shadow .15s ease}
.pgv-mic:active,.pgv-send:active{transform:scale(.94)}
.pgv-send{box-shadow:inset 0 0 0 1px var(--pv-hair2)}
.pgv-mic.on{color:var(--gold);box-shadow:inset 0 0 0 1px rgba(245,198,107,.6)}
.pgv-toast{position:absolute;z-index:9;top:84px;left:50%;max-width:min(92vw,520px);padding:10px 16px;border-radius:999px;background:rgba(10,11,22,.94);box-shadow:inset 0 0 0 1px var(--pv-hair2);font-size:14px;color:var(--pv-ink);opacity:0;pointer-events:none;transform:translate(-50%,-6px);transition:opacity .2s var(--pv-out),transform .2s var(--pv-out)}
.pgv-toast.on{opacity:1;transform:translate(-50%,0)}
/* on a phone: a full-screen sheet; Back, the name, Share; the page full width; ask for a change at the bottom */
.pgv[data-layout=phone]{display:flex;flex-direction:column;background:var(--pv-sheet)}
.pgv-ph{flex:none;border-radius:0;box-shadow:none;background:var(--pv-sheet);padding:calc(env(safe-area-inset-top,0px) + 4px) 6px 4px;gap:2px;border-bottom:1px solid var(--pv-hair)}
.pgv-ph .pgv-tt{flex:1;padding:0 4px}
.pgv-ph .pgv-tt b{font-size:16px;max-width:none}
.pgv-ph .pgv-sharepop{inset-inline-end:8px;top:calc(100% + 6px);width:min(320px,calc(100vw - 32px))}
.pgv-pbody{padding:0;flex:1;min-height:0}
.pgv-pbody > .pgv-box,.pgv-pbody .pgv-phn{width:100%;height:100%;max-width:none;border-radius:0;box-shadow:none;position:relative;overflow:hidden;background:#f4f2ec}
.pgv-pbody .pgv-checkwrap{padding:0}
.pgv-pbody .pgv-scan{inset-inline:0}
.pgv-pfoot{position:relative;flex:none;padding:0 14px calc(env(safe-area-inset-bottom,0px) + 12px);background:var(--pv-sheet);box-shadow:0 -1px 0 var(--pv-hair)}
.pgv-pfoot .pgv-comp{height:54px;margin:4px 0 0}
.pgv-pextra{position:relative;display:flex;flex-direction:column;gap:8px}
.pgv-pextra:not(:empty){padding-top:12px}
.pgv-pextra .pgv-fail .pgv-row .pgv-b-gold{flex:1;min-height:50px}
.pgv-pextra .pgv-sheet{position:absolute;inset-inline:-14px;bottom:calc(100% + 0px);padding:10px 20px 14px;border-radius:24px 24px 0 0;background:var(--pv-sf1);box-shadow:0 -30px 80px -20px rgba(0,0,0,.8),inset 0 1px 0 var(--pv-hair);display:flex;flex-direction:column;gap:2px;animation:pgvUp .2s var(--pv-out) both}
@keyframes pgvUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.pgv-pextra .pgv-sheet > b{font-size:16px;font-weight:600;margin:4px 0 8px}
.pgv-pextra .pgv-sheet .pgv-change{background:transparent;padding:10px 0;border-radius:0;border-top:1px solid var(--pv-hair)}
.pgv-sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--pv-hair2);margin:0 auto 10px}
.pgv-ck{display:flex;align-items:center;gap:12px;min-height:46px;font-size:15px;border-top:1px solid var(--pv-hair);color:var(--pv-ink2)}
.pgv-ck span{display:inline-flex}.pgv-ck .pg-i{width:18px;height:18px}
.pgv-ck.ok{color:var(--pv-ink)}.pgv-ck.ok span{color:var(--mint)}.pgv-ck.fix span{color:var(--gold)}
.pgv-ck em{margin-inline-start:auto;font-style:normal;font-size:13px;color:var(--pv-ink3)}
.pgv-pill{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px 0 10px;border-radius:999px;background:var(--pv-sf1);box-shadow:inset 0 0 0 1px rgba(245,198,107,.35);font-size:14.5px}
.pgv-pill .n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--gold);color:#1d1408}
.pgv[data-layout=phone] .pgv-line{height:46px;padding:0;align-items:center;justify-content:flex-start;gap:6px}
.pgv[data-layout=phone] .pgv-rail{max-width:none;flex:0 1 auto;min-width:0}
.pgv[data-layout=phone] .pgv-star{width:36px;min-height:44px;padding:0}
.pgv[data-layout=phone] .pgv-star i{margin-top:17.5px}.pgv[data-layout=phone] .pgv-star:is(.cur,.live,.bad) i{margin-top:15px;width:13px;height:13px}
.pgv[data-layout=phone] .pgv-railline{inset-inline:18px;top:22px}
.pgv-lab{flex:1;min-width:0;text-align:end;font-size:13.5px;color:var(--pv-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* NOVA Decks: the slide viewer (public/js/decks.js). The same stage, toolbar and Changes dock as Pages; the slide is
   the person's own content on its own colours (never the galaxy), 16:9, with a strip of slides under it. */
.dkv-stage{padding-bottom:12px}
.dkv-canvas{position:relative;flex:1;min-height:0;width:100%;display:grid;place-items:center;padding:18px 60px 30px}
.dkv-slot{position:relative;overflow:hidden;border-radius:12px;background:#f4f2ec;box-shadow:0 0 0 1px rgba(246,239,230,.08),0 30px 80px -30px rgba(0,0,0,.9);transition:box-shadow .2s var(--pv-out)}
.dkv-slot.changed{box-shadow:0 0 0 2px rgba(245,198,107,.75),0 30px 80px -30px rgba(0,0,0,.9)}
.dkv-frame{position:absolute;inset:0}
.sld-slide{position:absolute;top:0;left:0;width:960px;height:540px;overflow:hidden;transform-origin:0 0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.sld-shapes{position:absolute;inset:0;display:block}
.sld-img{position:absolute;display:block}
.sld-t{position:absolute;display:flex;flex-direction:column;overflow:visible;font-kerning:normal}
.sld-t.v-middle{justify-content:center}.sld-t.v-bottom{justify-content:flex-end}
.sld-p{margin:0;position:relative;overflow-wrap:break-word}
.sld-bul{position:absolute;inset-inline-start:.15em;top:0}
.dkv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sld-frame{position:relative;overflow:hidden;pointer-events:none}
.sld-frame .sld-slide{transform-origin:0 0}
.dkv-nav{position:absolute;top:50%;width:48px;height:48px;margin-top:-34px;border-radius:50%;display:grid;place-items:center;color:var(--pv-ink);background:var(--pv-sf1);box-shadow:var(--pv-pop),inset 0 0 0 1px var(--pv-hair);transition:transform .16s var(--pv-out),opacity .15s ease}
.dkv-nav .pg-i{width:22px;height:22px}
.dkv-nav.prev{inset-inline-start:6px}.dkv-nav.next{inset-inline-end:6px}
.dkv-nav:active{transform:scale(.94)}.dkv-nav:disabled{opacity:.25;cursor:default}
.dkv-count{position:absolute;bottom:2px;left:50%;transform:translateX(-50%);font-size:14px;color:var(--pv-ink2);font-variant-numeric:tabular-nums;direction:ltr}
.dkv-count .of{color:var(--pv-ink3)}
.dkv-canvas[data-mode=editing] .dkv-slot::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%);background-size:220% 100%;animation:dkvSheen 1.6s cubic-bezier(.45,0,.55,1) infinite}
@keyframes dkvSheen{from{background-position:120% 0}to{background-position:-20% 0}}
.dkv-canvas.presenting{background:#000;padding:0}
.dkv-canvas.presenting .dkv-slot{border-radius:0;box-shadow:none}
.dkv-canvas.presenting .dkv-count{bottom:12px;color:rgba(255,255,255,.55)}
.dkv-canvas.presenting .dkv-nav{opacity:0}.dkv-canvas.presenting:hover .dkv-nav:not(:disabled){opacity:.85}
/* while NOVA writes: a sketch of a slide breathing in the person's neutral, not a spinner */
.dkv-canvas[data-mode=writing] .dkv-slot,.dkv-canvas[data-mode=empty] .dkv-slot{width:min(100%,960px);aspect-ratio:16/9;background:#efece6}
.dkv-sketch{position:absolute;inset:0}
.dkv-sketch i{position:absolute;display:block;border-radius:6px;background:rgba(29,30,34,.09)}
.dkv-sketch .a{left:7%;top:30%;width:6%;height:1.2%;background:rgba(29,30,34,.22)}
.dkv-sketch .b{left:7%;top:36%;width:48%;height:9%}
.dkv-sketch .c{left:7%;top:49%;width:36%;height:9%}
.dkv-sketch .d{right:0;top:0;width:31%;height:100%;border-radius:0}
.dkv-canvas[data-mode=writing] .dkv-sketch i{animation:dkvBreathe 1.8s ease-in-out infinite alternate}
.dkv-canvas[data-mode=writing] .dkv-sketch .c{animation-delay:.3s}.dkv-canvas[data-mode=writing] .dkv-sketch .d{animation-delay:.6s}
@keyframes dkvBreathe{from{opacity:.55}to{opacity:1}}
.dkv-msg{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:#3a3b40;font-size:16px}
.dkv-strip{flex:none;display:flex;gap:10px;width:100%;max-width:1180px;padding:4px 4px 8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:rgba(246,239,230,.18) transparent;scroll-padding-inline:12px}
.dkv-thumb{position:relative;flex:none;padding:0;border-radius:8px;box-shadow:0 0 0 1px var(--pv-hair2);transition:transform .16s var(--pv-out),box-shadow .15s ease}
.dkv-thumb .sld-frame{border-radius:8px}
.dkv-thumb .n{position:absolute;bottom:4px;inset-inline-start:4px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;font-size:11.5px;font-weight:600;line-height:20px;text-align:center;background:rgba(8,10,20,.72);color:var(--pv-ink)}
.dkv-thumb.on{box-shadow:0 0 0 2px var(--gold)}
.dkv-thumb.changed:not(.on){box-shadow:0 0 0 1.5px rgba(245,198,107,.55)}
.dkv-thumb:active{transform:scale(.97)}
.dkv-thumb.ghost{width:128px;height:72px;background:rgba(246,239,230,.06);animation:dkvBreathe 1.8s ease-in-out infinite alternate}
@media (hover:hover) and (pointer:fine){.dkv-thumb:not(.on):hover{box-shadow:0 0 0 1px rgba(245,198,107,.6)}.dkv-nav:not(:disabled):hover{color:var(--gold)}}
.dkv-notes{flex:none;width:100%;max-width:1180px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 4px 8px}
.dkv-notesbtn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:999px;font-size:14px;color:var(--pv-ink2);transition:transform .16s var(--pv-out),color .15s ease}
.dkv-notesbtn span{display:inline-flex}.dkv-notesbtn .pg-i{width:18px;height:18px}
.dkv-notesbtn:active{transform:scale(.97)}
.dkv-notesbtn[aria-expanded=true]{color:var(--pv-ink)}
.dkv-notetext{margin:0;max-width:72ch;padding:12px 14px;border-radius:14px;background:var(--pv-sf1);font-size:15px;line-height:1.55;color:var(--pv-ink2);white-space:pre-line}
.dkv-dlpop{top:calc(100% + 10px);inset-inline-end:0;width:340px;padding:8px;transform-origin:top right;display:flex;flex-direction:column;gap:2px}
.dkv-dlrow{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:12px;color:var(--pv-ink);text-decoration:none;transition:background-color .15s ease,transform .16s var(--pv-out)}
.dkv-dlrow:active{transform:scale(.98)}
.dkv-dlrow .ic{display:inline-flex;color:var(--gold);margin-top:1px}.dkv-dlrow .ic .pg-i{width:22px;height:22px}
.dkv-dlrow b{display:block;font-size:15px;font-weight:600}
.dkv-dlrow small{display:block;font-size:13px;line-height:1.4;color:var(--pv-ink3);margin-top:2px}
@media (hover:hover) and (pointer:fine){.dkv-dlrow:hover{background:rgba(246,239,230,.06)}}
.dkv-dlpop .pgv-fine{margin:4px 12px 6px}
.dkv-vrow{display:flex;margin-top:-6px;padding-inline-start:28px}
.dkv-vrow .pgv-b{min-height:36px;font-size:13.5px;color:var(--pv-ink3)}
.dkv-ideas{display:flex;flex-wrap:wrap;gap:8px;padding-inline-start:34px}
.dkv-idea{min-height:40px;padding:0 14px;border-radius:999px;font-size:14px;color:var(--pv-ink);box-shadow:inset 0 0 0 1px var(--pv-hair2);transition:transform .16s var(--pv-out),box-shadow .15s ease}
.dkv-idea:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.dkv-idea:hover{box-shadow:inset 0 0 0 1px rgba(245,198,107,.6)}}
.dkv-peek{box-shadow:inset 0 0 0 1px rgba(245,198,107,.45)}
.dkv-prow{display:flex;justify-content:flex-end}
/* on a phone: the slide full width, the strip and notes under it, ask for a change at the bottom */
.dkv-pbody{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;padding:12px 0 8px}
.dkv[data-layout=phone] .dkv-canvas{flex:none;padding:0 12px 30px;min-height:0}
.dkv[data-layout=phone] .dkv-slot{border-radius:10px}
.dkv[data-layout=phone] .dkv-nav{display:none}
.dkv[data-layout=phone] .dkv-count{bottom:4px}
.dkv[data-layout=phone] .dkv-strip{padding:4px 12px 10px;gap:8px}
.dkv[data-layout=phone] .dkv-notes{padding:0 8px}
.dkv-plog{min-height:0;justify-content:flex-start;padding:8px 14px 16px}
.dkv[data-layout=phone] .dkv-thumb.ghost{width:104px;height:59px}
.dkv-ph .dkv-dlpop{inset-inline-end:8px;top:calc(100% + 6px);width:min(340px,calc(100vw - 32px))}
@media (prefers-reduced-motion:reduce){.dkv-sketch i,.dkv-thumb.ghost,.dkv-canvas[data-mode=editing] .dkv-slot::after{animation:none}}
.pgv[data-layout=phone] .pgv-undo{margin:0;min-height:44px;padding:0 8px;font-size:14px}
.pgv[data-layout=phone] .pgv-tip{bottom:52px;width:min(300px,calc(100vw - 32px))}
.pgv[data-layout=phone] .pgv-status{margin-top:0}
@media (prefers-reduced-motion:reduce){
  .pgv,.pgv-pop,.pgv-pextra .pgv-sheet{transition:none;animation:none}
  .pgv-star.live i,.pgv-status .dot{animation:none}
  .pgv[data-state=checking] .pgv-scan,.pgv-canvas.editing .pgv-scan{animation:none;top:50%}
}
.rt.rt-main{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.45)}.rt.rt-main:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.75)}
.pics{display:grid;gap:10px;margin:4px 0 .8em}
.pic{margin:0;position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--hair-2);background:rgba(var(--k-0-0-0,0,0,0),.3)}
.pic img{display:block;width:100%;max-height:52vh;object-fit:contain;animation:picIn .5s cubic-bezier(.23,1,.32,1) both}
@keyframes picIn{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.pic figcaption{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;font-family:var(--ui,system-ui);font-size:12px;color:var(--ink-3)}.pic figcaption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* "Make it better" under a picture: her words (or a quick choice) edit the picture itself; ‹ › steps between versions */
.pic figcaption>span:first-child{flex:1;min-width:0}
.pb2-tools{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;flex:none}
.pic figcaption .pb2-tools,.pic figcaption .pb2-nav,.pic figcaption .pb2-v{overflow:visible;text-overflow:clip}
.pb2-step:dir(rtl) svg{transform:scaleX(-1)}
.pb2-nav{display:inline-flex;align-items:center;gap:2px}.pb2-nav[hidden]{display:none}
.pb2-step{display:inline-grid;place-items:center;min-width:32px;min-height:32px;padding:0 8px;line-height:1}.pb2-step svg{display:block}.pb2-step:disabled{opacity:.35;cursor:default}
.pb2-v{padding:0 4px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pb2-panel{display:flex;flex-direction:column;gap:10px;padding:2px 12px 12px;font-family:var(--ui,system-ui);font-size:13px}.pb2-panel[hidden]{display:none}
.pb2-chips{display:flex;flex-wrap:wrap;gap:6px}
.pb2-row{display:flex;gap:6px;align-items:center}
.pb2-row input{flex:1;min-width:0;min-height:40px;padding:8px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-0-0-0,0,0,0),.25);color:var(--ink-1);font:inherit;font-size:14px}
.pb2-row input:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.pb2-panel .rt{min-height:40px}
.pb2-note{margin:0;color:var(--ink-3);font-size:12.5px}.pb2-note:empty{display:none}
.pic.pb2-busy img{opacity:.55;transition:opacity .25s ease-out}
@media (max-width:760px){.pb2-step{min-width:44px;min-height:44px}.pb2-row input{min-height:44px}.pic figcaption{flex-wrap:wrap}.pic figcaption>span:first-child{flex-basis:100%}.pb2-tools{flex:1;justify-content:flex-start}.pb2-nav{flex-basis:100%}.pb2-row{flex-wrap:wrap}.pb2-row input{flex-basis:100%}}
.panel.reader{width:min(820px,100%);max-height:min(92vh,980px);display:flex;flex-direction:column}
.reader-tools{display:flex;gap:8px;align-items:center}
@media (max-width:760px){.panel.reader{padding:18px 16px 18px}.reader .panel-head{flex-wrap:wrap;gap:10px}.reader .panel-head h2{font-size:22px}.reader-tools{width:100%;gap:6px}.reader-tools .rt{padding:5px 10px;font-size:11px}.reader-tools .sheet-close{margin-left:auto}}
.reader-body{overflow:auto;font-family:var(--display);font-size:clamp(16px,1.3vw,18px);line-height:1.55;color:var(--ink-1);padding-right:4px}
.reader-body p{margin:0 0 .7em}.reader-body ul,.reader-body ol{margin:0 0 .8em;padding-left:1.2em}.reader-body li{margin:0 0 .3em}.reader-body li::marker{color:var(--gold)}.reader-body strong{font-weight:600;color:var(--h-fff,#fff)}.reader-body .lead{display:block;font-size:1.15em;margin:.6em 0 .2em}
.reader-body pre.code{position:relative;margin:0 0 .8em;padding:12px 14px;border-radius:12px;background:rgba(var(--k-0-0-0,0,0,0),.32);border:1px solid var(--hair);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.78em;line-height:1.5;white-space:pre-wrap;word-break:break-word}.reader-body pre.code.has-lang{padding-top:26px}.reader-body .lang{position:absolute;top:8px;left:12px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-family:var(--ui,system-ui)}
.reader-body code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85em;background:rgba(var(--k-246-239-230,246,239,230),.08);border-radius:5px;padding:1px 5px}.reader-body pre.code code{background:none;padding:0;font-size:inherit}
.wt-reply{position:relative}.wt-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}
.wt-reply pre.code{position:relative;margin:6px 0;padding:10px 12px;border-radius:10px;background:rgba(var(--k-0-0-0,0,0,0),.3);border:1px solid var(--hair);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
@media (max-width:760px){.reply-tools{margin-top:6px;flex-wrap:nowrap;gap:6px;overflow-x:auto;scrollbar-width:none}.reply-tools::-webkit-scrollbar{display:none}.reply-tools .rt{flex:none;padding:5px 10px;font-size:11px}.pic img{max-height:46vh}}
#reply.more{--fade-b:transparent}#reply.above{--fade-t:transparent}
#reply.more,#reply.above{-webkit-mask-image:linear-gradient(to bottom,var(--fade-t,#000),#000 36px,#000 calc(100% - 44px),var(--fade-b,#000));mask-image:linear-gradient(to bottom,var(--fade-t,#000),#000 36px,#000 calc(100% - 44px),var(--fade-b,#000))}
.sources{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:12px}
.sources span{font-size:11.5px;color:var(--ink-3);border:1px solid var(--hair);border-radius:999px;padding:4px 10px;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.sources b{color:var(--ink-2);font-weight:500}
.use-weeks{display:grid;gap:8px;margin:4px 0 14px}
.use-week{display:grid;grid-template-columns:minmax(0,11.5em) minmax(0,1fr) 3.2em;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.use-week.now{color:var(--ink-2)}
.use-wb{height:6px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.06);overflow:hidden}
.use-wb i{display:block;height:100%;border-radius:3px;background:rgba(var(--k-245-198-107,245,198,107),.55)}
.use-week.now .use-wb i{background:var(--gold)}
.use-wp{text-align:right}
.use-warn{margin:6px 0 14px}
.chart{font-family:var(--sans);--c1:#3a9ad6;--c2:#b8893a;--c3:#8c72dc;--c4:#37a07b;margin:14px 0 6px;padding:14px 14px 10px;border:1px solid var(--hair);border-radius:16px;background:rgba(var(--k-0-0-0,0,0,0),.28);min-width:0}
.chart-t{font-size:14px;font-weight:500;color:var(--ink-1);margin:0 0 8px;text-wrap:balance}
.chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 8px;font-size:12px;color:var(--ink-2)}
.chart-key{display:inline-flex;align-items:center;gap:6px}.chart-sw{width:10px;height:10px;border-radius:3px;background:var(--c)}.chart-sw.ln{height:2px;border-radius:1px}
.chart .c1{--c:var(--c1)}.chart .c2{--c:var(--c2)}.chart .c3{--c:var(--c3)}.chart .c4{--c:var(--c4)}
.chart-plot{position:relative}
.chart-svg{display:block;width:100%;height:auto;overflow:visible;font-variant-numeric:tabular-nums}
.chart-grid{stroke:var(--hair);stroke-width:1}.chart-base{stroke:var(--hair-2);stroke-width:1}
.chart-ax{fill:var(--ink-3);font-size:11px}.chart-lab{font-size:11.5px;fill:var(--ink-2)}
.chart-bar{fill:var(--c);transition:opacity .15s ease}.chart-bar.dim{opacity:.35}
.chart-line{fill:none;stroke:var(--c);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart-dot{fill:var(--c);stroke:rgba(var(--k-6-8-14,6,8,14),1);stroke-width:2}
.chart-cross{stroke:var(--hair-2);stroke-width:1;stroke-dasharray:3 3}
.chart-hit{fill:transparent;cursor:crosshair}
.chart-tip{position:absolute;z-index:2;pointer-events:none;padding:7px 10px;border-radius:10px;background:rgba(var(--k-12-14-22,12,14,22),.96);border:1px solid var(--hair-2);font-size:12px;line-height:1.45;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.chart-tip b{display:block;color:var(--ink-1);font-weight:500}
.chart-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}
.chart-note{font-size:12px;color:var(--ink-3);flex:1 1 200px;min-width:0}
.chart-tog{margin-left:auto;font:inherit;font-size:12px;color:var(--ink-3);background:none;border:0;padding:4px 0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}.chart-tog:hover{color:var(--ink-1)}
.chart-table{overflow-x:auto;margin-top:8px}.chart-table table{border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;min-width:100%}
.chart-table th,.chart-table td{padding:5px 10px;border-bottom:1px solid var(--hair);text-align:right;color:var(--ink-2)}.chart-table th:first-child{text-align:left}.chart-table thead th{color:var(--ink-3);font-weight:500}
.sources a.src-web{font-size:11.5px;color:var(--ink-3);border:1px solid var(--hair);border-radius:999px;padding:4px 10px;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis;text-decoration:none;transition:color .15s ease,border-color .15s ease}.sources a.src-web:hover{color:var(--ink-1);border-color:var(--hair-2)}
.sources .src-tog{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3);padding:4px 2px;transition:color .2s}
.sources .src-tog:hover{color:var(--ink-1)}
.sources .src-tog i{width:6px;height:6px;border-right:1.3px solid currentColor;border-bottom:1.3px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.sources .src-tog[aria-expanded="true"] i{transform:translateY(1px) rotate(-135deg)}
.sources .src-list{display:flex;flex-wrap:wrap;gap:6px;width:100%;justify-content:inherit;margin-top:6px}
.sources .src-list[hidden]{display:none}
@media (max-width:760px){.sources:has(.src-tog){flex-wrap:wrap}.sources .src-list{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}}
.sources .suggest{font-size:13px;color:var(--ink-1);border:1px solid var(--hair-2);border-radius:999px;padding:8px 14px;background:rgba(var(--k-246-239-230,246,239,230),.04);transition:border-color .2s,background .2s}
.sources .suggest:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.speak{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;color:var(--ink-3);border:1px solid var(--hair);transition:color .2s,border-color .2s}
.speak[aria-pressed="true"]{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.approve .conseq{font-size:14.5px;color:var(--ink-2);margin:0 0 16px;line-height:1.45}
.approve .receipt{font-size:14px;color:var(--ink-2);margin-top:10px;display:none}

/* sign-in */
.google-btn{display:inline-flex;align-items:center;gap:12px;padding:13px 22px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-weight:600;font-size:15px;text-decoration:none;transition:transform .15s}
.google-btn:hover{transform:translateY(-1px)}.google-btn:active{transform:scale(.98)}
/* Sign in with Apple (NOVA for iPhone): Apple's white style, the same size as Google's, stacked above it */
.apple-btn{border:0;cursor:pointer;font:inherit;font-weight:600;font-size:15px;background:#fff;color:#000;margin:0 0 10px;min-width:236px;justify-content:center}
#signinApple:not([hidden])+.google-btn{min-width:236px;justify-content:center}
/* overlays: library, import, welcome */
.overlay{position:absolute;inset:0;z-index:18;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:rgba(var(--k-3-4-10,3,4,10),.72)}
.panel{width:min(760px,100%);max-height:min(86vh,860px);overflow:auto;background:rgb(var(--k-8-9-19,8,9,19));border:1px solid var(--hair-2);border-radius:22px;padding:24px 26px 26px}
.panel.narrow{width:min(520px,100%)}
.panel h2{font-family:var(--display);font-weight:400;font-size:28px;margin:0}
.panel .lead{color:var(--ink-3);font-size:14px;line-height:1.55;margin:8px 0 18px}
.panel h4{font-size:11.5px;letter-spacing:.08em;color:var(--ink-3);font-weight:500;margin:22px 0 8px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.panel-head>div:first-child{flex:1;min-width:0}.panel-head>.sheet-close{flex:none}
/* a phone: the × keeps its full round 44px target at the top of the header, beside the title, never squeezed by the lead */
@media (max-width:760px){.panel-head{align-items:flex-start}.panel-head>.sheet-close{width:44px;height:44px;margin-block-start:-4px;margin-inline-end:-6px}}
/* what can NOVA do */
.feat-lead{margin:4px 0 0;font-size:13.5px}
/* What can NOVA do (Oct 27 2026; public/js/features.js, words in whatcan.js): a quiet grouped list, not a card farm.
   Each group is a heading and its one line over one solid list; a row opens in place to a tip, "Try saying", the finer
   things it covers and one outlined button. The colour of a group is a 6px dot, never a fill. */
#features .panel{width:min(820px,100%)}
.feat{--fk:245,198,107}
.feat-top{position:sticky;top:-24px;z-index:2;margin:-14px 0 0;padding:14px 0 12px;background:rgb(var(--k-8-9-19,8,9,19))}
html.simple .feat-top{background:var(--sv-side)}
.feat-search{display:flex;align-items:center;gap:10px;height:48px;padding:0 6px 0 15px;border-radius:14px;background:rgb(var(--k-14-15-25,14,15,25));border:1px solid var(--hair);color:var(--ink-3);cursor:text;transition:border-color .18s ease}
.feat-search:focus-within{border-color:rgba(var(--fk),.55)}
.feat-si{flex:none;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.feat-q{flex:1;min-width:0;height:100%;border:0;background:none;outline:none;color:var(--ink-1);font:inherit;font-size:15.5px;caret-color:var(--gold);-webkit-appearance:none;appearance:none}
.feat-q::placeholder{color:var(--ink-3)}.feat-q::-webkit-search-cancel-button{display:none}
.feat-clear{flex:none;width:36px;height:36px;border:0;border-radius:10px;background:none;color:var(--ink-2);display:grid;place-items:center;cursor:pointer}
.feat-clear svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.feat-clear:active{transform:scale(.94)}
.feat-nav{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.feat-chip{--c:245,198,107;display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);background:none;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;transition:border-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.feat-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:rgb(var(--c))}
.feat-chip:hover{border-color:var(--hair-2);color:var(--ink-1)}.feat-chip:active{transform:scale(.97)}
.feat-sec{--c:245,198,107;scroll-margin-top:64px;margin-top:26px}
.feat-gh{margin:0 2px 10px}
.panel .feat-g,.feat-g{display:flex;align-items:center;gap:9px;margin:0;font-family:var(--sans);font-size:17px;font-weight:600;letter-spacing:normal;text-transform:none;color:var(--ink-1)}
.feat-g::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.45)}
.feat-sum{margin:4px 0 0 16px;font-size:14px;line-height:1.5;color:var(--ink-3)}
.feat-list{display:flex;flex-direction:column;border-radius:18px;background:var(--sf-0);border:1px solid var(--hair);overflow:hidden}
.feat-i{--c:245,198,107;position:relative}
.feat-i+.feat-i,.feat-hit+.feat-hit{border-top:1px solid var(--hair)}
.feat-row,.feat-hit{display:flex;align-items:center;gap:13px;width:100%;min-height:60px;padding:12px 16px;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer;transition:background-color .18s ease}
.feat-row:hover,.feat-hit:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.feat-row:focus-visible,.feat-hit:focus-visible{outline:2px solid rgba(var(--fk),.7);outline-offset:-2px}
.feat-dot{flex:none;align-self:flex-start;margin-top:8px;width:6px;height:6px;border-radius:50%;background:rgba(var(--c),.9)}
.feat-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.feat-main>b{font-weight:500;font-size:15.5px;line-height:1.3;color:var(--ink-1)}
.feat-l{font-size:13.5px;line-height:1.45;color:var(--ink-3);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}
.feat-i.open .feat-l{-webkit-line-clamp:unset;display:block;color:var(--ink-2)}
.feat-soon{display:inline-block;margin-inline-start:4px;padding:1px 8px;border-radius:999px;border:1px solid rgba(var(--k-169-139-255,169,139,255),.45);color:var(--violet);font-size:12px;font-weight:500;vertical-align:1px}
.feat-chev{flex:none;width:16px;height:16px;fill:none;stroke:var(--ink-3);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.feat-i.open .feat-chev{transform:rotate(90deg)}
[dir=rtl] .feat-chev{transform:scaleX(-1)}[dir=rtl] .feat-i.open .feat-chev{transform:rotate(90deg)}
.feat-x{padding:0 16px 16px 35px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;animation:featIn .2s cubic-bezier(.23,1,.32,1)}
.feat-x[hidden]{display:none}
@keyframes featIn{from{opacity:0;transform:translateY(-3px)}}
.feat-t{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.feat-say{margin:0;display:flex;flex-wrap:wrap;gap:4px 8px;font-size:14px;line-height:1.5;color:var(--ink-1)}
.feat-sk,.feat-ak{color:var(--ice);font-size:13.5px}
.feat-also{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.feat-ak{margin-inline-end:2px}
.feat-cap{min-height:32px;padding:4px 12px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-2);font:inherit;font-size:13px;text-align:start;cursor:pointer;transition:border-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.feat-cap:hover{border-color:rgba(92,225,255,.45);color:var(--ink-1)}.feat-cap:active{transform:scale(.97)}
.feat-try{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border-radius:999px;border:1px solid rgba(var(--fk),.6);background:none;color:var(--gold);font:inherit;font-size:14px;cursor:pointer;transition:background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.feat-try:hover{background:rgba(var(--fk),.07)}.feat-try:active{transform:scale(.97)}
.panel h4.feat-mh,.feat-mh{margin:22px 2px 10px;font-size:13.5px;font-weight:500;letter-spacing:normal;color:var(--ink-3)}
.feat-none{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:18px 16px;border-radius:18px;background:var(--sf-0);border:1px solid var(--hair)}
.feat-none p{margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.5}
@media (max-width:760px){
  .feat-top{top:-20px}
  .feat-nav{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding:0 16px 4px;scrollbar-width:none}.feat-nav::-webkit-scrollbar{display:none}
  .feat-chip{flex:none;min-height:36px}
  .feat-row,.feat-hit{padding:12px 14px}.feat-x{padding:0 14px 16px 33px}
}
@media (prefers-reduced-motion:reduce){.feat-x{animation:none}.feat-chev{transition:none}}
/* ==== What's new (top of What can NOVA do) + its small dot + the gentle rating ask (Nov 1 2026, whatsnew-rating) ====
   Quiet on purpose (Katie: "I just don't want it to be too much"): one surface, a heading and plain lines; "Show me" is
   a text button; older lines fold behind "Earlier". The dot is a 6px ice point beside the words on the way there, only
   while something is unseen (html.wn-new). The rating line is a small solid bar where NOVA's "Done" note was. */
.wn{margin:6px 0 20px;padding:14px 8px 6px 16px;border-radius:18px;background:var(--sf-0);border:1px solid var(--hair)}
.wn[hidden]{display:none}
.wn-h{display:flex;align-items:baseline;gap:10px;margin:0 8px 6px 0}
.panel h3.wn-t,.wn-t{margin:0;font-size:15.5px;font-weight:500;letter-spacing:normal;color:var(--ink-1)}
.wn-d{font-size:13px;color:var(--ink-3)}
.wn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.wn-i{padding:7px 0}
.wn-l{display:block;padding-inline-start:14px;text-indent:-14px;font-size:14px;line-height:1.45;color:var(--ink-2)}
.wn-l::before{content:"";display:inline-block;width:5px;height:5px;margin-inline-end:9px;vertical-align:.18em;border-radius:50%;background:rgba(92,225,255,.85)}
.wn-go{display:inline-block;margin:-12px -4px;padding:12px 4px;line-height:1.45;text-indent:0;border:0;border-radius:10px;background:none;color:var(--ice);font:inherit;font-size:13.5px;cursor:pointer;transition:background-color .15s ease,transform .15s cubic-bezier(.23,1,.32,1)}
.wn-go:hover{text-decoration:underline;text-underline-offset:3px}.wn-go:active{transform:scale(.97)}
.wn-go:focus-visible,.wn-ms:focus-visible{outline:2px solid rgba(92,225,255,.6);outline-offset:-2px}
.wn-day{margin:10px 0 2px;font-size:12.5px;color:var(--ink-3)}
.wn-more{margin:2px 0 0}
.wn-ms{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 8px 0 0;list-style:none;color:var(--ink-3);font-size:13.5px;cursor:pointer;border-radius:10px}
.wn-ms::-webkit-details-marker{display:none}
.wn-ms:hover{color:var(--ink-2)}
.wn-chev{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s cubic-bezier(.23,1,.32,1)}
[dir=rtl] .wn-chev{transform:scaleX(-1)}
.wn-more[open] .wn-chev{transform:rotate(90deg)}
.wn-more[open]>.wn-list{animation:featIn .2s cubic-bezier(.23,1,.32,1)}
html.wn-new .bk-me .bk-l b::after,html.wn-new .sv-row[data-k="customize"]>span::after,html.wn-new #rail .rw-h .rc-k::after,
html.wn-new .cz-row[data-cat="help"] .cz-main>b::after,html.wn-new .cz-more[data-set="helpMore"]>summary .cz-main>b::after,
html.wn-new .cz-part[data-set="features"] .main .t::after{content:"";display:inline-block;width:6px;height:6px;margin-inline-start:7px;vertical-align:.15em;border-radius:50%;background:var(--ice);box-shadow:0 0 6px rgba(92,225,255,.5)}
.rate{position:fixed;left:50%;bottom:calc(var(--rate-bottom,96px) + 12px + env(safe-area-inset-bottom,0px));z-index:70;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px 12px;width:max-content;max-width:min(520px,calc(100vw - 32px));padding:8px 8px 8px 16px;border-radius:16px;background:rgb(10,11,22);border:1px solid var(--hair-2);box-shadow:0 12px 32px -12px rgba(0,0,0,.6);opacity:0;transform:translate(-50%,8px);pointer-events:none;transition:opacity .22s cubic-bezier(.23,1,.32,1),transform .22s cubic-bezier(.23,1,.32,1)}
.rate.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
[dir="rtl"] .rate{padding:8px 16px 8px 8px}
.rate-t{flex:1 1 220px;margin:0;font-size:13.5px;line-height:1.4;color:var(--ink-1)}
.rate-a{display:flex;align-items:center;gap:4px}
.rate-yes,.rate-no{min-height:40px;padding:0 14px;border-radius:999px;font:inherit;font-size:13px;cursor:pointer;transition:background-color .15s ease,transform .15s cubic-bezier(.23,1,.32,1)}
.rate-yes{border:1px solid rgba(245,198,107,.5);background:none;color:var(--gold);font-weight:600}
.rate-yes:hover{background:rgba(245,198,107,.1)}
.rate-no{border:0;background:none;color:var(--ink-3)}
.rate-no:hover{color:var(--ink-1)}
.rate-yes:active,.rate-no:active{transform:scale(.97)}
.rate-yes:focus-visible,.rate-no:focus-visible{outline:2px solid rgba(245,198,107,.6);outline-offset:2px}
@media (max-width:760px){
  .wn{padding:12px 6px 4px 14px;margin-bottom:16px}
  .rate{width:calc(100vw - 32px);padding:10px 8px 8px 14px}
  .rate-yes,.rate-no{min-height:44px}
}
@media (prefers-reduced-motion:reduce){.rate{transition:opacity .15s linear;transform:translate(-50%,0)}.wn-more[open]>.wn-list{animation:none}.wn-chev{transition:none}}
/* ==== end What's new + rating ask ==== */
/* Customize's search: what NOVA can do, under the settings that match */
.cz-fsec{margin-top:18px}
.cz-allf{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;margin-top:8px;padding:0 14px;border:0;border-radius:12px;background:none;color:var(--ice);font:inherit;font-size:14px;cursor:pointer}
.cz-allf:hover{background:rgba(92,225,255,.06)}.cz-allf:active{transform:scale(.98)}
[dir=rtl] .cz-allf .cz-go svg{transform:scaleX(-1)}
.steps{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column}
.steps li{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--hair)}
.steps li div{flex:1;min-width:0}.steps b{display:block;font-weight:600;font-size:14.5px}.steps small{display:block;color:var(--ink-3);font-size:12.5px;margin-top:3px;line-height:1.45}
.steps .n{width:28px;height:28px;border-radius:50%;border:1px solid var(--hair-2);display:grid;place-items:center;font-size:12px;color:var(--ink-2);flex:none}
.steps .done .n{background:var(--mint);border-color:var(--mint);color:var(--h-082018,#082018)}
.ph-on{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}.ph-on .link{font-size:12.5px;padding:4px 0;min-height:24px}
.w-you{display:flex;gap:8px;margin-top:10px}
.w-life{margin-top:14px}.w-life>span{display:block;font-size:13px;color:var(--ink-2);margin-bottom:8px}
.w-life .tchips button{min-height:34px;padding:6px 13px;font-size:13px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.w-life .tchips button:active{transform:scale(.97)}
.w-biz{display:flex;flex-direction:column;gap:4px;margin-top:10px}.w-biz[hidden]{display:none}
.w-biz input{background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:14px;padding:9px 12px;min-height:40px}
.w-biz input:focus-visible{outline:1.5px solid var(--gold);outline-offset:1px}
.w-biz small{font-size:12px;color:var(--ink-3)}
.w-you input,.w-you select{background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:14px;padding:9px 12px;min-height:40px}
.w-you input{flex:1;min-width:0}.w-you select{flex:none}.w-you select option{background:var(--h-0b0d16,#0b0d16);color:var(--ink-1)}
.w-you input:focus-visible,.w-you select:focus-visible{outline:1.5px solid var(--gold);outline-offset:1px;border-radius:10px}
.w-go{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:4px}.w-go small{color:var(--ink-3);font-size:12.5px;line-height:1.45}
.help-qs{display:flex;flex-direction:column}
.help-q{border-bottom:1px solid var(--hair)}
.help-q summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 2px;font-size:14.5px;color:var(--ink-1);min-height:44px}
.help-q summary::-webkit-details-marker{display:none}
.help-q summary::after{content:'';width:8px;height:8px;flex:none;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg) translateY(-2px);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.help-q[open] summary::after{transform:rotate(225deg) translate(-2px,-1px)}
.help-q summary:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:2px;border-radius:6px}
.help-a{padding:0 2px 16px}
.help-a p{margin:0 0 12px;font-size:13.5px;line-height:1.6;color:var(--ink-2);max-width:62ch}
@media (prefers-reduced-motion:reduce){.help-q summary::after{transition:none}}
.w-go .btn{padding:12px 22px;border-radius:999px;transition:transform .16s cubic-bezier(.23,1,.32,1)}.w-go .btn:active{transform:scale(.97)}
.w-note{display:block;margin-top:14px;color:var(--ink-3);font-size:12px;line-height:1.45}
.wel-kicker{margin:0 0 10px;font-size:12.5px;color:var(--gold);letter-spacing:.02em}
/* the card step: keep NOVA going after the trial, or skip for now */
.w-card{display:grid;gap:14px;margin:0 0 20px;padding:16px 18px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.32);border-radius:16px;background:rgba(var(--k-245-198-107,245,198,107),.05)}
.w-card-t b{display:block;font-size:15.5px;font-weight:600;color:var(--ink-1);margin-bottom:4px}
.w-card-t small{display:block;font-size:13px;line-height:1.5;color:var(--ink-2)}
.w-card-b{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px}
.w-card-b .btn{min-height:40px}
.wel-progress{display:flex;align-items:center;gap:12px;margin:2px 0 6px;font-size:12px;color:var(--ink-3)}
.wel-progress i{flex:1;height:3px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.08);overflow:hidden}
.wel-progress b{display:block;height:100%;width:100%;border-radius:3px;background:var(--mint);transform:scaleX(var(--p,0));transform-origin:var(--fill-from,left);transition:transform .5s cubic-bezier(.23,1,.32,1)}
.w-two{display:flex;gap:8px;flex:none}.w-two .btn{white-space:nowrap}
html:not([lang=en]) .w-two{flex-direction:column;align-items:stretch;gap:6px} /* longer words in Spanish and Arabic: the two choices stack */
.steps .done b::after{content:"  ✓";color:var(--mint);font-weight:500}
/* the welcome's "Your agents": NOVA's picks, one switch each, what each still needs, and the plan's limit said plainly */
.wa{margin-top:12px;display:flex;flex-direction:column}.wa[hidden]{display:none}
.wa-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-top:1px solid var(--hair)}
.wa-row:first-child{border-top:0;padding-top:4px}
.wa-row>.ag-sw{margin-top:2px}
.wa-t{flex:1;min-width:0}.wa-t b{font-size:13.5px}.wa-t small{margin-top:2px;display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wa-group{margin:14px 0 2px;font-size:12px;color:var(--ink-2);font-weight:600}
.wa-tags{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:4px;font-size:11.5px;line-height:1.4}
.wa-why{color:var(--ink-3)}.wa-need{color:var(--gold)}.wa-need.plan{color:var(--ink-3)}
.wa-row.blocked .wa-t b{color:var(--ink-3)}
.wa-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--hair)}
.wa-foot p{margin:0;flex:1 1 220px;font-size:12px;color:var(--ink-3);line-height:1.45}
.wa-foot .btn{white-space:nowrap}
.wa-empty{font-size:12.5px;color:var(--ink-3);margin:4px 0 0}
.w-agents-step{align-items:flex-start!important}.w-agents-step>.btn{margin-top:2px}
.first-steps{display:inline-flex;align-items:center;gap:8px;margin:14px auto 0;padding:7px 14px 7px 9px;border-radius:999px;border:1px solid rgba(var(--k-111-242-196,111,242,196),.35);color:var(--ink-1);font-size:13px;background:rgba(var(--k-10-11-22,10,11,22),.5);transition:border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.first-steps:hover{border-color:rgba(var(--k-111-242-196,111,242,196),.7)}.first-steps:active{transform:scale(.97)}
.first-steps[hidden]{display:none}
.fs-ring svg{width:18px;height:18px;display:block;transform:rotate(-90deg)}.fs-ring circle{fill:none;stroke:rgba(var(--k-246-239-230,246,239,230),.15);stroke-width:2.4}.fs-ring .fs-on{stroke:var(--mint);stroke-dasharray:0 100;stroke-linecap:round;transition:stroke-dasharray .5s cubic-bezier(.23,1,.32,1)}
.greet.talking .first-steps,#stage.reading .first-steps{display:none}
/* ---------- today's win and the streak (public/js/streak.js; the engagement plan, Katie Oct 18) ----------
   Quiet by default: nothing on screen until a missed day matters, then one calm line under the question (Full and
   Simple view) with × to put it away. For people who turn on "Always show my streak": a small flame and the
   number in the top bar on a computer, beside First steps on a phone, one line under the hello in Simple view. Gold
   flame = today's win is done; outline = still open today; a brighter flame only for a perfect run (7+ days, no
   freeze). The panel: this week, today's win, freezes, "Going away?". */
.stk-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:14px}
.stk-row>.first-steps{margin:0}
.stk-row:not(:has(>:not([hidden]))){display:none}
.greet.talking .stk-row,#stage.reading .stk-row{display:none}
.stk-chip{position:relative;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 13px 0 10px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-10-11-22,10,11,22),.55);color:var(--ink-2);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,color .2s ease}
.stk-chip[hidden]{display:none}
.stk-chip::before{content:"";position:absolute;inset:-5px -2px}
.stk-chip::after{content:"";position:absolute;inset:-1px;border-radius:inherit;box-shadow:0 0 0 1px rgba(var(--k-245-198-107,245,198,107),.7),0 0 22px rgba(var(--k-245-198-107,245,198,107),.45);opacity:0;transition:opacity .7s ease-out;pointer-events:none}
.stk-chip:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.45);color:var(--ink-1)}
.stk-chip:active{transform:scale(.96)}
.stk-chip:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.stk-ic{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.stk-chip.kept{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.42)}
.stk-chip.kept .stk-ic{stroke:var(--gold);fill:rgba(var(--k-245-198-107,245,198,107),.2)}
.stk-chip.perfect .stk-ic{fill:rgba(var(--k-245-198-107,245,198,107),.5);filter:drop-shadow(0 0 4px rgba(var(--k-245-198-107,245,198,107),.6))}
.stk-chip.zero b{font-weight:500;font-size:13.5px}
.stk-chip.away{color:var(--ice);border-color:rgba(var(--k-92-225-255,92,225,255),.35)}
.stk-chip.away b{font-weight:500;font-size:13.5px}
.stk-chip.won{animation:stkWon .42s cubic-bezier(.23,1,.32,1)}
.stk-chip.won::after{opacity:1;transition:none}
@keyframes stkWon{from{transform:scale(.9)}to{transform:none}}
.stk-row .stk-chip{height:auto;min-height:36px;align-self:stretch;font-size:13.5px}
.stk-row .stk-chip .stk-ic{width:18px;height:18px}
/* the one line when a missed day matters: a solid pill, its words open the streak, × puts it away for good */
.stk-row:has(>.stk-note:not([hidden])){flex-direction:column}
.stk-row>.stk-note{order:-1}
.stk-note{display:flex;align-items:center;gap:2px;max-width:min(560px,100%);padding:0 2px 0 14px;border-radius:20px;background:rgb(var(--k-10-11-22,10,11,22));border:1px solid var(--hair-2);animation:stkNote .24s cubic-bezier(.23,1,.32,1)}
.stk-note[hidden]{display:none}
.stk-note.gone{opacity:0;transform:translateY(-2px);transition:opacity .18s ease-out,transform .18s ease-out}
@keyframes stkNote{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.stk-note-t{flex:1 1 auto;min-width:0;display:flex;align-items:flex-start;gap:9px;min-height:44px;padding:11px 4px 11px 0;text-align:start;color:var(--ink-1);font-size:14.5px;line-height:1.45;text-wrap:pretty;border-radius:14px;transition:color .2s ease}
.stk-note-t .stk-ic{width:18px;height:18px;margin-top:1px;color:var(--ice)}
.stk-note[data-kind=risk] .stk-note-t .stk-ic,.stk-note[data-kind=back] .stk-note-t .stk-ic{color:var(--gold)}
.stk-note-t:hover .stk-note-w{text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px}
.stk-note-t:focus-visible,.stk-note-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.stk-note-x{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);font-size:20px;line-height:1;transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.stk-note-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.stk-note-x:active{transform:scale(.94)}
.sv-hello .stk-note{margin-top:6px;max-width:min(520px,100%)}
@media (max-width:760px){.stk-note-t{font-size:14px;padding-block:9px}}
@media (prefers-reduced-motion:reduce){.stk-note{animation:none}.stk-note.gone{transition:none}}
.stk-sv{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border-radius:999px;color:var(--ink-2);font-size:14px;transition:color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.stk-sv[hidden]{display:none}
.stk-sv:hover{color:var(--ink-1)}.stk-sv:active{transform:scale(.97)}
.stk-sv .stk-ic{width:17px;height:17px}
.stk-sv.kept{color:var(--ink-1)}.stk-sv.kept .stk-ic{stroke:var(--gold);fill:rgba(var(--k-245-198-107,245,198,107),.2)}
.stk-sv-n{color:var(--ink-2);font-variant-numeric:tabular-nums}
.stk-sv-n::before{content:"·";margin-inline-end:7px;color:var(--ink-3)}
.stk-sv.won .stk-ic{animation:stkWon .42s cubic-bezier(.23,1,.32,1)}
.sv-hello .stk-sv{margin-top:-4px}
.stk-panel .nd-title{font-size:30px}
.stk-lead{margin:2px 0 16px;font-size:16px;line-height:1.5;color:var(--ink-1)}
.stk-week{list-style:none;margin:0 0 14px;padding:12px 6px 10px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;border-radius:16px;background:var(--sf-0);border:1px solid var(--hair)}
.stk-d{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:0}
.stk-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--hair-2);color:var(--ice)}
.stk-dot svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.stk-d small{font-size:12px;color:var(--ink-3);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stk-d.kept .stk-dot{background:var(--gold);border-color:var(--gold);box-shadow:0 0 10px rgba(var(--k-245-198-107,245,198,107),.35)}
.stk-d.frozen .stk-dot{border-color:rgba(var(--k-92-225-255,92,225,255),.6);background:rgba(var(--k-92-225-255,92,225,255),.08)}
.stk-d.protected .stk-dot{border-style:dashed;border-color:rgba(var(--k-92-225-255,92,225,255),.5)}
.stk-d.today .stk-dot{border:1.5px solid var(--gold)}
.stk-d.missed .stk-dot{border-color:var(--hair)}
.stk-d:last-child small{color:var(--ink-1);font-weight:600}
.stk-win{padding:14px 16px;border-radius:16px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.32);background:rgba(var(--k-245-198-107,245,198,107),.05);margin-bottom:6px}
.stk-win.done{border-color:rgba(var(--k-111-242-196,111,242,196),.32);background:rgba(var(--k-111-242-196,111,242,196),.05)}
.stk-win-t{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.stk-win-t b{font-size:15px;font-weight:600}.stk-win.done .stk-win-t b{color:var(--mint)}
.stk-win-t small{color:var(--ink-3);font-size:13px}
.stk-win p{margin:6px 0 0;font-size:15px;line-height:1.45;color:var(--ink-1)}
.stk-go{margin-top:12px;height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.55);color:var(--gold);font-weight:600;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.stk-go:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}.stk-go:active{transform:scale(.97)}
.stk-frz,.stk-away{display:flex;align-items:center;gap:14px;padding:12px 2px;border-top:1px solid var(--hair)}
.stk-win+.stk-frz{border-top:0}
.stk-frz b,.stk-away b{display:block;font-size:15px;font-weight:600;color:var(--ink-1)}
.stk-frz small,.stk-away small{display:block;font-size:13.5px;color:var(--ink-3);line-height:1.45;margin-top:2px}
.stk-frz>div,.stk-away>div:first-child{flex:1 1 200px;min-width:0}
.stk-frz{align-items:flex-start}.stk-frz-ic{display:flex;gap:4px;flex:none;margin-top:1px}
.stk-frz-ic svg{width:20px;height:20px;fill:none;stroke:rgba(var(--k-92-225-255,92,225,255),.28);stroke-width:1.6;stroke-linecap:round}
.stk-frz-ic svg.on{stroke:var(--ice);filter:drop-shadow(0 0 4px rgba(var(--k-92-225-255,92,225,255),.45))}
.stk-away{flex-wrap:wrap;justify-content:space-between}
.stk-away-b{display:flex;gap:6px;flex-wrap:wrap}
.stk-away-b button{min-height:44px;padding:0 14px;white-space:nowrap;border-radius:999px;border:1px solid var(--hair-2);font-size:13.5px;color:var(--ink-1);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.stk-away-b button:hover{border-color:rgba(var(--k-92-225-255,92,225,255),.5)}.stk-away-b button:active{transform:scale(.96)}
.stk-away-b button:disabled,.stk-link:disabled{opacity:.5}
.stk-link{min-height:44px;padding:0 4px;color:var(--ice);font-size:14px;text-decoration:underline;text-underline-offset:3px}
.stk-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;margin:2px 0 -6px;padding-top:4px;border-top:1px solid var(--hair);font-size:13.5px;color:var(--ink-3)}
.qst.stk-flash{animation:stkFlash 1.4s ease-out}
@keyframes stkFlash{from{box-shadow:0 0 0 2px rgba(var(--k-245-198-107,245,198,107),.85)}to{box-shadow:0 0 0 2px rgba(var(--k-245-198-107,245,198,107),0)}}
@media (max-width:760px){.stk-panel .nd-title{font-size:27px}.stk-away-b{width:100%}.stk-away-b button{flex:1 1 0;padding:0 8px}}
@media (prefers-reduced-motion:reduce){.stk-chip,.stk-sv,.stk-go,.stk-away-b button{transition:none}.stk-chip.won,.stk-sv.won .stk-ic,.qst.stk-flash{animation:none}.stk-chip::after{transition:none}}

/* First-time setup, "NOVA asks you" (public/js/firstrun.js): ten questions in a focused sheet. Phone: the whole screen,
   a solid surface. Wider: one ~560px column over the galaxy. One question at a time, big answers, the brain-star strip
   on top. The only motion: a star blooming as an answer lands, and the next question settling in (both off for reduced motion). */
.fr{--fr-bg:#080a14;--fr-raise:#10121f;--fr-line:rgba(246,239,230,.10);--fr-line2:rgba(246,239,230,.2);position:absolute;inset:0;z-index:17;display:flex;align-items:stretch;justify-content:center;background:var(--fr-bg);color:#f6efe6;color-scheme:dark}
.fr-col{position:relative;display:flex;flex-direction:column;width:100%;min-height:0;background:var(--fr-bg);padding-top:env(safe-area-inset-top,0px)}
@media (min-width:700px){
  .fr{align-items:center;background:radial-gradient(ellipse 44% 56% at 50% 46%,rgba(92,225,255,.05),transparent 72%),#03040a} /* the galaxy steps fully back while the sheet is up: never half-seen at its edge */
  .fr-col{width:min(560px,calc(100vw - 48px));height:min(860px,calc(100% - 48px));border:1px solid var(--fr-line);border-radius:28px;overflow:hidden;box-shadow:0 40px 120px -40px rgba(0,0,0,.85),0 0 0 1px rgba(0,0,0,.4)}
}
.fr-top{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:6px;padding:12px 14px 0}
.fr-back{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.8);transition:background-color .15s ease,transform .12s ease-out}
.fr-back:hover{background:rgba(246,239,230,.06)}.fr-back:active{transform:scale(.94)}.fr-back.off{visibility:hidden}
.fr-count{font-size:14.5px;color:rgba(246,239,230,.74);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.fr-later{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--fr-line2);font-size:15px;color:#f6efe6;transition:border-color .15s ease,transform .12s ease-out}
.fr-later:hover{border-color:rgba(246,239,230,.4)}.fr-later:active{transform:scale(.97)}
.fr-ic{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
html[dir=rtl] .fr-flip,html[dir=rtl] .fr-stars{transform:scaleX(-1)} /* the stars fill in reading order */
.fr-stars{display:block;width:252px;max-width:calc(100% - 32px);height:auto;margin:0 auto;overflow:visible}
/* the strip of sky on top (Oct 18 2026, "Blue cliffs"): the first screens' nebula, dimmed and still, under the stars;
   the sheet rises over its lower edge. Never animated, so the minutes spent answering cost nothing. */
.fr-col{--band:calc(env(safe-area-inset-top,0px) + clamp(124px,20vh,196px));padding-top:0}
.fr-band{position:absolute;inset:0 0 auto;height:var(--band);overflow:hidden;background:#071330;pointer-events:none}
.fr-sky,.fr-sky img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;object-position:50% 2%}
.fr-band .fr-star:not(.on):not(.now) .fr-dot{fill:rgba(246,239,230,.42)} /* the stars still to light, readable on the sky */
.fr-sky picture{display:contents}
.fr-band::after{content:"";position:absolute;inset:0;mix-blend-mode:multiply;background:linear-gradient(to bottom,rgb(104,154,246),rgb(30,54,128))}
.fr-band .fr-stars{position:absolute;z-index:1;left:50%;top:calc(env(safe-area-inset-top,0px) + (var(--band) - env(safe-area-inset-top,0px) - 30px) / 2);width:252px;transform:translate(-50%,-50%);margin:0}
html[dir=rtl] .fr-band .fr-stars{transform:translate(-50%,-50%) scaleX(-1)}
.fr-sheet{position:relative;z-index:1;flex:1;min-height:0;display:flex;flex-direction:column;margin-top:calc(var(--band) - 30px);background:var(--fr-bg);border-top:1px solid var(--fr-line);border-radius:28px 28px 0 0;box-shadow:0 -24px 50px -18px rgba(3,4,10,.9)}
@media (min-width:900px){
  .fr-sky img{object-position:32% 28%}
  /* around the setup column: the same sky, held still and deeply dimmed, instead of a flat black box */
  .fr{background:linear-gradient(rgba(3,7,22,.82),rgba(3,7,22,.82)),url(/media/sky-desk.webp) 50% 50%/cover #03040a;background:linear-gradient(rgba(3,7,22,.82),rgba(3,7,22,.82)),image-set(url(/media/sky-desk.webp) 1x,url(/media/sky-desk@2x.webp) 2x) 50% 50%/cover #03040a}
}
@media (max-width:420px){.fr-band .fr-stars{width:224px}}
.fr-g0{stop-color:#5ce1ff;stop-opacity:.26}.fr-g1{stop-color:#a98bff;stop-opacity:.07}.fr-g2{stop-color:#5ce1ff;stop-opacity:0}
.fr-hc0{stop-color:#5ce1ff;stop-opacity:.75}.fr-hg0{stop-color:#f5c66b;stop-opacity:.8}.fr-h1{stop-color:#5ce1ff;stop-opacity:0}.fr-hg1{stop-color:#f5c66b;stop-opacity:0}
.fr-glow{transition:opacity .4s ease-out}
.fr-link{stroke:rgba(92,225,255,.4);stroke-width:.9;stroke-linecap:round;opacity:0;transition:opacity .32s ease-out} /* only between lit stars: no placeholder lines */
.fr-link.on{opacity:1}
.fr-dot{fill:rgba(246,239,230,.22);transform:scale(.7);transform-box:fill-box;transform-origin:center;transition:fill .2s ease-out,transform .24s cubic-bezier(.23,1,.32,1)}
.fr-halo{fill:url(#frHaloC);opacity:0;transform-box:fill-box;transform-origin:center}
.fr-star.on .fr-dot{fill:#eafaff;fill-opacity:var(--b);transform:none}.fr-star.on .fr-halo{opacity:calc(var(--b) * .7)}
.fr-star.now .fr-dot{fill:#f5c66b;transform:none}.fr-star.now .fr-halo{fill:url(#frHaloG);opacity:.45}
.fr-star.lit .fr-halo{animation:frBloom .36s cubic-bezier(.23,1,.32,1)}
@keyframes frBloom{from{opacity:1;transform:scale(.4)}to{opacity:.45;transform:scale(1)}}
.fr-end .fr-star .fr-dot{fill:#fff3e6}.fr-end .fr-star .fr-halo{fill:url(#frHaloG);opacity:calc(var(--b) * .55)}.fr-end .fr-link{stroke:rgba(245,198,107,.45)}
.fr-end .fr-g0{stop-color:#f5c66b;stop-opacity:.16}
.fr-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scroll-padding-block:16px 32px;display:flex;flex-direction:column;gap:14px;padding:18px 20px 32px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 16px,#000 calc(100% - 24px),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 16px,#000 calc(100% - 24px),transparent 100%)}
.fr-body.fr-in>*{animation:frIn .24s cubic-bezier(.23,1,.32,1) both}
@keyframes frIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fr-me i{font-style:normal;color:rgba(246,239,230,.45)}
.fr-me{align-self:flex-end;max-width:82%;padding:9px 15px;border-radius:18px 18px 6px 18px;background:rgba(246,239,230,.08);font-size:15px;line-height:1.4;color:rgba(246,239,230,.86)}
html[dir=rtl] .fr-me{border-radius:18px 18px 18px 6px}
.fr-nova{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;align-items:start}
.fr-mark{width:30px;height:30px;margin-top:4px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff3e6 0 9%,rgba(245,198,107,.85) 10% 18%,rgba(92,225,255,.35) 30%,rgba(92,225,255,0) 70%);box-shadow:inset 0 0 0 1px rgba(92,225,255,.25)}
.fr-say{padding:16px 18px;border-radius:6px 22px 22px 22px;background:var(--fr-raise);border:1px solid var(--fr-line)}
html[dir=rtl] .fr-say{border-radius:22px 6px 22px 22px}
.fr-say h2{margin:0;font:500 22px/1.32 var(--sans);letter-spacing:-.005em;color:#f6efe6;text-wrap:balance}
.fr-say h2:focus,.fr-say h2:focus-visible{outline:0}
.fr-intro .fr-say h2,.fr-end .fr-say h2{font:400 34px/1.1 var(--display);letter-spacing:-.01em}
.fr-sub{margin:8px 0 0;font-size:16px;line-height:1.5;color:rgba(246,239,230,.76)}
.fr-trial{margin:12px 0 0;font-size:14px;color:var(--gold)}
.fr-ans{display:flex;flex-direction:column;gap:12px;padding-inline-start:40px}
@media (max-width:420px){.fr-ans{padding-inline-start:0}.fr-body{padding-top:10px;gap:10px}.fr-say{padding:13px 16px}.fr-stars{width:224px}.fr-list{gap:7px}.fr-opt.has-n{gap:12px;min-height:0;padding:9px 14px}.fr-opt.has-n .fr-ot{gap:2px}.fr-n{width:30px;height:30px;font-size:14px}} /* all four humor levels fit a 390×844 phone */
.fr-list{display:flex;flex-direction:column;gap:10px}
@media (min-width:520px){.fr-grid{display:grid;grid-template-columns:1fr 1fr}} /* (talk or type stays stacked: each answer has a line under it) */
.fr-opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;width:100%;min-height:60px;padding:13px 16px;border-radius:18px;border:1px solid var(--fr-line2);background:rgba(246,239,230,.03);text-align:start;color:#f6efe6;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.fr-opt:not(.has-ic):not(.has-n){grid-template-columns:minmax(0,1fr) auto}
.fr-opt:hover{border-color:rgba(246,239,230,.36)}.fr-opt:active{transform:scale(.985)}
.fr-opt[aria-checked=true]{border-color:var(--gold);background:rgba(245,198,107,.09)}
.fr-opt>.fr-ic{width:24px;height:24px;color:var(--ice)}.fr-opt[aria-checked=true]>.fr-ic{color:var(--gold)}
.fr-ot{display:flex;flex-direction:column;gap:3px;min-width:0}
.fr-ot b{font-size:17px;font-weight:600}.fr-ot small{font-size:14.5px;line-height:1.4;color:rgba(246,239,230,.72)}
.fr-sample{quotes:"“" "”";font-size:14.5px;line-height:1.4;color:rgba(246,239,230,.7);font-style:normal;text-wrap:pretty} /* no italics (wrong for Arabic); the quieter colour marks it as NOVA's sample line */
.fr-sample::before{content:open-quote}.fr-sample::after{content:close-quote}
:lang(es) .fr-sample{quotes:"«" "»"}:lang(ar) .fr-sample{quotes:"«" "»"} /* guillemets mirror on their own in right-to-left text */
.fr-quests b,.fr-q b{direction:ltr;unicode-bidi:isolate} /* "+30" stays "+30" in Arabic */
.fr-n{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--fr-line2);font-size:15px;font-weight:600;color:rgba(246,239,230,.8);font-variant-numeric:tabular-nums}
.fr-opt[aria-checked=true] .fr-n{background:var(--gold);border-color:var(--gold);color:#1d1408}
.fr-tick{width:26px;height:26px;border-radius:8px;border:1px solid var(--fr-line2);display:grid;place-items:center}
.fr-tick .fr-ic{width:16px;height:16px;stroke-width:2.2;opacity:0}
.fr-opt[aria-checked=true] .fr-tick{background:var(--gold);border-color:var(--gold);color:#1d1408}.fr-opt[aria-checked=true] .fr-tick .fr-ic{opacity:1}
.fr-input{width:100%;min-height:56px;padding:0 16px;border-radius:16px;border:1px solid var(--fr-line2);background:rgba(246,239,230,.05);color:#f6efe6;font:inherit;font-size:18px;outline:0;transition:border-color .15s ease}
.fr-input:focus{border-color:var(--gold)}.fr-input::placeholder{color:rgba(246,239,230,.45)}
.fr-area{min-height:116px;padding:14px 60px 14px 16px;line-height:1.45;resize:none;display:block}
html[dir=rtl] .fr-area{padding:14px 16px 14px 60px}
.fr-field{position:relative}
.fr-mic{position:absolute;inset-inline-end:8px;bottom:8px;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--ice);border:1px solid var(--fr-line2);background:var(--fr-bg);transition:transform .12s ease-out,border-color .15s ease}
.fr-mic:active{transform:scale(.94)}.fr-mic[aria-pressed=true]{color:#1d1408;background:var(--gold);border-color:var(--gold)}
.fr-seg{display:flex;flex-wrap:wrap;gap:8px}
.fr-seg button{flex:1 1 0;min-width:96px;min-height:52px;padding:0 12px;border-radius:14px;border:1px solid var(--fr-line2);font-size:16px;color:#f6efe6;font-variant-numeric:tabular-nums;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.fr-seg button:active{transform:scale(.97)}.fr-seg button[aria-checked=true]{border-color:var(--gold);background:rgba(245,198,107,.09)}
.fr-wake button{min-width:72px}
.fr-other{display:flex;align-items:center;gap:12px;font-size:15px;color:rgba(246,239,230,.76)}
.fr-time{min-height:48px;padding:0 12px;border-radius:12px;border:1px solid var(--fr-line2);background:rgba(246,239,230,.05);color:#f6efe6;font:inherit;font-size:16px;color-scheme:dark}
.fr-h3{margin:14px 0 0;font-size:19px;font-weight:500;line-height:1.3}
.fr-chips{display:flex;flex-wrap:wrap;gap:10px}
.fr-chip{min-height:52px;padding:0 18px;border-radius:999px;border:1px solid var(--fr-line2);font-size:16px;color:#f6efe6;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.fr-chip:active{transform:scale(.97)}.fr-chip[aria-pressed=true]{border-color:var(--gold);background:rgba(245,198,107,.1)}
.fr-biz{display:flex;flex-direction:column;gap:8px;margin-top:6px}.fr-biz[hidden]{display:none}.fr-biz span{font-size:16px}.fr-biz small{font-size:14px;color:rgba(246,239,230,.62)}
/* "What fills your days?" (question 5, first part): one line says what the taps switch on; names follow her own business */
.fr-days .fr-opt{min-height:56px;padding:12px 16px}.fr-days .fr-ot b{font-weight:500}
.fr-days.private .fr-opt[aria-checked=false]{opacity:.5}.fr-days .fr-opt{transition:opacity .15s ease-out,border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.fr-days-note{margin:-4px 0 14px;min-height:1.5em;font-size:15px;line-height:1.5;color:rgba(246,239,230,.72)}.fr-days-note b{font-weight:600;color:#f6efe6}
.fr-days-biz{gap:10px;margin-top:0}.fr-days-biz .fr-add-biz{align-self:flex-start;min-height:44px}
.fr-chip.fit{display:inline-flex;align-items:center;gap:8px}.fr-chip.fit[aria-pressed=true]{background:rgba(245,198,107,.2);box-shadow:inset 0 0 0 1px var(--gold);font-weight:600}.fr-chip .fr-fit{width:16px;height:16px;color:var(--gold);flex:none}.fr-days-q{font-size:16px}.fr-days-q[hidden],.fr-days-biz .fr-seg[hidden]{display:none}
.fr-names{display:flex;flex-direction:column;gap:8px}.fr-names .fr-input[hidden]{display:none}
.fr-count-seg button{min-height:48px}.fr-add-biz{margin-top:-2px}.fr-add-biz[hidden]{display:none}
@media (max-width:420px){.fr-days .fr-opt{min-height:50px;padding:10px 14px}.fr-days .fr-ot b{font-size:16px}}
/* the quiet card in Your life for people who set up before the question existed: closable, gone for good once answered */
.dy-card{margin:10px 0 4px;padding:12px 8px 12px 16px;border-radius:18px;border:1px solid var(--hair-2,rgba(246,239,230,.2));background:rgba(246,239,230,.035);transition:opacity .18s ease-out,transform .18s ease-out}
.dy-card.out{opacity:0;transform:translateY(-4px)}
.dy-head{display:flex;align-items:center;gap:4px}.dy-t{flex:1;min-width:0}
html[dir=rtl] .dy-card{padding:12px 16px 12px 8px}
.dy-open{flex:none;min-height:44px;padding:0 12px;border-radius:999px;color:var(--gold);font-size:15px;font-weight:600;transition:background-color .15s ease,transform .12s ease-out}.dy-open:hover{background:rgba(245,198,107,.08)}.dy-open:active{transform:scale(.97)}.dy-open[hidden]{display:none}
.dy-pick{margin:12px 8px 0 0}html[dir=rtl] .dy-pick{margin:12px 0 0 8px}.dy-pick[hidden]{display:none}
.sheet-body .dy-head h4,.hub-body .dy-head h4,.dy-head h4{margin:0;font-size:16.5px;font-weight:600;line-height:1.3;color:#f6efe6;text-transform:none;letter-spacing:0}
.dy-x{flex:none;width:44px;height:44px;margin:0;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.6);transition:color .15s ease,transform .12s ease-out}
.dy-x:hover{color:#f6efe6}.dy-x:active{transform:scale(.92)}.dy-x .fr-ic{width:18px;height:18px}
.dy-line{margin:2px 0 0;font-size:14.5px;line-height:1.45;color:rgba(246,239,230,.7)}
.pk{display:flex;flex-direction:column;gap:12px;padding:6px 0 14px}
.pk .srow-h{margin:8px 0 0}
.pk-line{margin:-4px 0 2px;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.pk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:8px}
.pk-grid[hidden],.pk-also-w[hidden]{display:none}
.pk-kind{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:64px;padding:11px 14px;border-radius:14px;border:1px solid var(--hair-2);background:var(--sf-1);color:var(--ink-1);text-align:start;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.pk-kind b{font-weight:600;font-size:15px;line-height:1.3}
.pk-kind small{font-size:13.5px;line-height:1.35;color:var(--ink-3)}
.pk-kind:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.34)}
.pk-kind:active{transform:scale(.98)}
.pk-kind[aria-checked=true]{border-color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.pk-kind:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:2px}
.pk-also-w,.pk-name{display:flex;flex-direction:column;gap:8px}
.pk-also{display:flex;flex-wrap:wrap;gap:8px}
.pk-name-t{font-size:15px;color:var(--ink-1)}
.pk-name small{margin-top:-4px;font-size:13.5px;color:var(--ink-3)}
.pk-name-in{min-height:44px;max-width:360px;padding:0 14px;border-radius:12px;border:1px solid var(--hair-2);background:var(--sf-1);color:var(--ink-1);font-size:16px}
.pk-name-in:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:1px}
.fr-days-biz .pk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:480px){.pk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pk-kind{min-height:60px;padding:10px 12px}}
.dy-chips{display:flex;flex-wrap:wrap;gap:8px}
.dy-chip{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(246,239,230,.2);font-size:15px;color:#f6efe6;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.dy-chip:hover{border-color:rgba(246,239,230,.36)}.dy-chip:active{transform:scale(.97)}.dy-chip[aria-pressed=true]{border-color:var(--gold);background:rgba(245,198,107,.1)}
.dy-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.dy-note{margin:0;min-width:0;font-size:14px;line-height:1.4;color:rgba(246,239,230,.7)}.dy-note b{font-weight:600;color:#f6efe6}
.dy-save{flex:none;min-height:44px;padding:0 20px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:15.5px;font-weight:600;transition:opacity .15s ease,transform .12s ease-out}
.dy-save:active{transform:scale(.97)}.dy-save:disabled{background:transparent;color:rgba(246,239,230,.42);box-shadow:inset 0 0 0 1px rgba(246,239,230,.16);cursor:default;transform:none}
@media (prefers-reduced-motion:reduce){.dy-card{transition:none}}
.fr-views{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fr-view{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 10px 14px;border-radius:20px;border:1px solid var(--fr-line2);text-align:start;color:#f6efe6;transition:border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.fr-view:active{transform:scale(.98)}.fr-view[aria-checked=true]{border-color:var(--gold);background:rgba(245,198,107,.08)}
.fr-view b{font-size:17px;font-weight:600;padding:6px 4px 0}.fr-view small{font-size:14px;line-height:1.4;color:rgba(246,239,230,.72);padding:0 4px}
.fr-art{position:relative;display:block;width:100%;aspect-ratio:4/3;border-radius:14px;overflow:hidden}
.fr-art-full{background:radial-gradient(42% 38% at 50% 50%,rgba(92,225,255,.32),rgba(169,139,255,.12) 55%,transparent 75%),#03040a}
.fr-art-full i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff3e6;box-shadow:0 0 6px rgba(92,225,255,.8)}
.fr-art-full i:nth-child(1){left:48%;top:46%;width:6px;height:6px;background:var(--gold);box-shadow:0 0 10px var(--gold)}
.fr-art-full i:nth-child(2){left:30%;top:34%}.fr-art-full i:nth-child(3){left:66%;top:30%}.fr-art-full i:nth-child(4){left:38%;top:66%}.fr-art-full i:nth-child(5){left:62%;top:62%}.fr-art-full i:nth-child(6){left:14%;top:18%;opacity:.5}.fr-art-full i:nth-child(7){left:84%;top:78%;opacity:.5}
.fr-art-simple{background:#0d0f1a;padding:14% 12%;display:flex;flex-direction:column;gap:9%}
.fr-art-simple i{display:block;height:12%;border-radius:6px;background:rgba(246,239,230,.14)}
.fr-art-simple i:nth-child(1){width:70%}.fr-art-simple i:nth-child(2){width:52%;align-self:flex-end;background:rgba(245,198,107,.3)}.fr-art-simple i:nth-child(3){width:84%}
.fr-recs{display:flex;flex-direction:column;gap:10px}
.fr-rec{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 12px;padding:14px;border-radius:18px;border:1px solid var(--fr-line);background:rgba(246,239,230,.03);transition:opacity .2s ease}
.fr-rec.skipped{opacity:.6}.fr-rec.fr-quiet{background:transparent}
.fr-ric{width:44px;height:44px;padding:10px;border-radius:12px;background:rgba(92,225,255,.08);color:var(--ice)}
.fr-rt{display:flex;flex-direction:column;gap:3px;min-width:0}.fr-rt b{font-size:17px;font-weight:600}.fr-rt small{font-size:14.5px;line-height:1.4;color:rgba(246,239,230,.72)}
.fr-why{margin-top:3px;font-size:14px;color:var(--ice)}
.fr-racts{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.fr-small{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--fr-line2);font-size:15px;color:#f6efe6;transition:transform .12s ease-out,border-color .15s ease}
.fr-small:active{transform:scale(.97)}.fr-small:disabled{opacity:.5}
.fr-small.fr-yes{border-color:rgba(245,198,107,.62);color:var(--gold);font-weight:600}.fr-small.fr-yes:hover{border-color:var(--gold);background:rgba(245,198,107,.07)} /* outlined: the footer's Continue is the one filled gold button */
.fr-done{display:inline-flex;align-items:center;gap:6px;font-size:15px;color:var(--mint)}.fr-done .fr-ic{width:18px;height:18px;stroke-width:2.2}
.fr-skipped{font-size:14.5px;color:rgba(246,239,230,.6)}
.fr-racts .fr-link-b{align-self:center}
.fr-link-b{align-self:flex-start;min-height:44px;padding:0 4px;font-size:15px;color:var(--ice);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(92,225,255,.4)}
.fr-rec>.fr-done{grid-column:2;margin-top:6px}
.fr-acct{margin-top:4px;font-size:14px;line-height:1.4;color:rgba(246,239,230,.6)}
/* step 9 (UI laws ★4): one recommendation; the rest behind "Connect something else" */
.fr-else{margin-top:2px}
.fr-more-recs{display:flex;flex-direction:column;gap:10px;animation:frMore .2s cubic-bezier(.23,1,.32,1)}.fr-more-recs[hidden]{display:none}
.fr-ew{display:flex;flex-direction:column;gap:6px}.fr-ew[hidden],.fr-ew-work[hidden]{display:none}
.fr-ew-l{margin:6px 0 2px;font-size:14px;color:var(--ink-3)}
.fr-ew .ew-way{background:rgba(246,239,230,.03);border-color:var(--fr-line)}
.fr-ew-add{margin-top:2px}
@keyframes frMore{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.fr-go.fr-go-acct{padding:0 20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fr-card.fr-card-win{margin-top:14px;animation:frMore .22s cubic-bezier(.23,1,.32,1)}
@media (prefers-reduced-motion:reduce){.fr-more-recs,.fr-card.fr-card-win{animation:none}}
.fr-card{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:18px;border:1px solid rgba(245,198,107,.35);background:rgba(245,198,107,.05)}
.fr-card b{font-size:16.5px}.fr-card small{font-size:14px;line-height:1.45;color:rgba(246,239,230,.74)}.fr-card .fr-racts{grid-column:auto}
.fr-agents{padding:4px 14px 10px;border-radius:18px;border:1px solid var(--fr-line)}.fr-agents[hidden]{display:none}
.fr-agents .wa-t b{font-size:15px}.fr-agents .wa-t small{font-size:13.5px;color:rgba(246,239,230,.7)}.fr-agents .wa-tags{font-size:12.5px}
.fr-voice{display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:center}
.fr-play{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--fr-line2);color:var(--ice);transition:transform .12s ease-out,border-color .15s ease}
.fr-play:active{transform:scale(.94)}.fr-play.on{color:#1d1408;background:var(--gold);border-color:var(--gold)}.fr-play:disabled{opacity:.35}
.fr-play .fr-ic{width:18px;height:18px}
.fr-vpick{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:60px;padding:10px 16px;border-radius:16px;border:1px solid var(--fr-line2);text-align:start;color:#f6efe6;transition:border-color .15s ease,background-color .15s ease}
.fr-vpick[aria-checked=true]{border-color:var(--gold);background:rgba(245,198,107,.09)}.fr-vpick b{font-size:16.5px;font-weight:600}.fr-vpick small{font-size:14px;color:rgba(246,239,230,.68)}
.fr-more{align-self:flex-start;min-height:44px;padding:0 4px;color:var(--ice);font-size:15px}
.fr-note:empty{display:none}.fr-note,.fr-wait{margin:0;font-size:15.5px;line-height:1.5;color:rgba(246,239,230,.76)}
.fr-ok,.fr-plan{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border-radius:18px;border:1px solid rgba(245,198,107,.4);background:rgba(245,198,107,.05)}.fr-plan[hidden]{display:none}
.fr-ok-t{margin:0;font-size:18px;font-weight:600}.fr-ok-via{margin:0;font-size:14px;color:rgba(246,239,230,.6)}.fr-ok-c{margin:0;font-size:14.5px;line-height:1.45;color:rgba(246,239,230,.76)}
.fr-plan-t{font-size:19px}.fr-plan ol{margin:4px 0;padding-inline-start:22px;display:flex;flex-direction:column;gap:6px;font-size:16px;line-height:1.4}
.fr-result{margin:0;padding:14px 16px;border-radius:16px;background:rgba(246,239,230,.05);font-size:16px}.fr-result.ok{color:var(--mint);background:rgba(111,242,196,.07)}
.fr-win{display:flex;flex-direction:column;gap:10px}
.fr-pts{margin:0;font-size:24px;font-weight:600;color:var(--gold);font-variant-numeric:tabular-nums}
.fr-win .fr-sub{margin:0}
.fr-quests{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.fr-quests li{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;border:1px solid var(--fr-line);font-size:15.5px}
.fr-quests li.rec{border-color:rgba(92,225,255,.4)}.fr-more-q{margin:2px 0 0;font-size:14.5px;color:rgba(246,239,230,.66)}.fr-quests b{color:var(--gold);font-variant-numeric:tabular-nums}
.fr-foot{display:flex;flex-direction:column;gap:8px;padding:12px 20px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--fr-line);background:var(--fr-bg)}
.fr-foot:empty{display:none}
.fr-go{min-height:56px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:17px;font-weight:600;transition:transform .12s ease-out,opacity .15s ease}
.fr-go:active{transform:scale(.98)}.fr-go:disabled{background:rgba(246,239,230,.07);color:rgba(246,239,230,.62);cursor:default;transform:none} /* not yet: a quiet surface, never a muddy gold */
.fr-go.fr-go-quiet{min-height:50px;background:transparent;border:1px solid var(--fr-line2);color:#f6efe6;font-size:16px;font-weight:500}
.fr-alt{min-height:50px;border-radius:999px;border:1px solid var(--fr-line2);color:#f6efe6;font-size:16px;transition:transform .12s ease-out,border-color .15s ease}
.fr-alt:hover{border-color:rgba(246,239,230,.4)}.fr-alt:active{transform:scale(.98)}
#stage.first-run .chrome,#stage.first-run .remind{visibility:hidden}
html #stage.first-run #toast{top:calc(env(safe-area-inset-top,0px) + 70px);bottom:auto} /* notes sit under the header, never over the answer buttons */
/* on the home screen: "Pick up where we left off" and, after setup, "Keep filling your brain" */
.fr-chipbox{position:relative;display:flex;flex-direction:column;align-items:center;margin-top:14px;z-index:6}
.greet.talking .fr-chipbox,#stage.reading .fr-chipbox{display:none}
.fr-resume{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1px solid rgba(245,198,107,.42);background:rgba(10,11,22,.55);color:#f6efe6;font-size:14.5px;transition:border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.fr-resume:hover{border-color:rgba(245,198,107,.8)}.fr-resume:active{transform:scale(.97)}.fr-resume>i{font-style:normal;color:rgba(246,239,230,.6)}
.fr-resume.saved{border-color:rgba(111,242,196,.5)}.fr-resume .fr-ok-ic{width:18px;height:18px;stroke-width:2.2;color:var(--mint)}
.fr-resume>svg,.fr-rl{transition:opacity .16s ease-out}.fr-resume.fade>svg,.fr-resume.fade .fr-rl{opacity:0}
.fr-starmark{width:18px;height:18px;flex:none;display:block}.fr-sm-glow{fill:rgba(245,198,107,.16)}.fr-sm-star{fill:#f5c66b}
/* the quests: over a dimmed home screen, with real depth, never over half-hidden cards */
.fr-qscrim{position:absolute;inset:0;z-index:40;background:rgba(3,4,10,.66);opacity:0;transition:opacity .2s ease-out}.fr-qscrim.on{opacity:1}
.fr-qpop{position:absolute;z-index:41;width:min(380px,calc(100vw - 32px));padding:10px;border-radius:20px;border:1px solid rgba(246,239,230,.14);background:#0d0f1a;text-align:start;opacity:0;transform:translate(-50%,-6px) scale(.98);transform-origin:50% 0;transition:opacity .18s ease-out,transform .2s cubic-bezier(.23,1,.32,1);box-shadow:inset 0 1px 0 rgba(246,239,230,.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95)}
.fr-qpop.on{opacity:1;transform:translate(-50%,0)}
.fr-qhead{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 8px 10px}.fr-qprog{display:flex;align-items:center;gap:8px}.fr-qprog b{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.fr-x{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.7)}.fr-x:hover{background:rgba(246,239,230,.06)}.fr-x .fr-ic{width:16px;height:16px}
.fr-qpop ul{list-style:none;margin:-3px;padding:3px;max-height:min(60vh,420px);overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.fr-q{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:52px;padding:8px 12px;border-radius:14px;border:1px solid rgba(246,239,230,.1);text-align:start;color:#f6efe6;font-size:15px;transition:border-color .15s ease,transform .12s ease-out}
.fr-q:hover{border-color:rgba(246,239,230,.3)}.fr-q:active{transform:scale(.985)}.fr-q.rec{border-color:rgba(92,225,255,.4)}
.fr-q span{display:flex;flex-direction:column;gap:2px}.fr-q small{font-size:12.5px;color:var(--ice)}.fr-q b{color:var(--gold);font-variant-numeric:tabular-nums}
#stage.fr-quiet :is(.remind,#toast.act){visibility:hidden} /* back from "Finish later": reminders and nudges wait for her first tap; the chip says "Saved" */
/* Sharing with AI services (public/js/aiconsent.js): first-time setup's sheet, one screen. Above everything on the page
   (nothing may open over it), the words in the reading third of the screen on a phone, a content-high card wider up. */
.aic{position:fixed;z-index:130}
.aic-orb{display:none}
.aic-body{justify-content:center;padding-top:28px}
.aic-nova .fr-say h2{font:400 30px/1.14 var(--display);letter-spacing:-.01em}
.aic-nova .fr-sub{margin-top:12px;font-size:17px;line-height:1.55;color:rgba(246,239,230,.84)}
.aic-policy{margin:0;padding-inline-start:40px}
.aic-policy a{display:inline-flex;align-items:center;min-height:44px;font-size:15px;color:rgba(246,239,230,.74);text-decoration:underline;text-decoration-color:rgba(246,239,230,.25);text-underline-offset:4px;transition:color .15s ease}
.aic-policy a:hover{color:#f6efe6}.aic-policy a:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
.aic-foot{border-top:0}
@media (min-width:700px){.aic .aic-col{height:auto;max-height:calc(100% - 48px)}.aic-body{padding:36px 32px 12px}.aic-foot{padding:16px 32px 28px}}
@media (max-width:699px){ /* phone: the words sit just above the buttons, where the thumb is; a faint glow of NOVA's light above */
  .aic .aic-col{background:radial-gradient(ellipse 90% 42% at 50% 24%,rgba(92,225,255,.07),transparent 72%),var(--fr-bg)}
  .aic-body{justify-content:flex-end}
  .aic-orb{display:block;position:absolute;inset-inline:0;top:calc(env(safe-area-inset-top,0px) + 13vh);width:112px;height:112px;margin:auto;border-radius:50%;pointer-events:none;
    background:radial-gradient(circle at 50% 50%,#fff3e6 0 6%,rgba(245,198,107,.8) 8% 15%,rgba(92,225,255,.28) 30%,rgba(92,225,255,0) 70%);box-shadow:inset 0 0 0 1px rgba(92,225,255,.14)}
  @media (max-height:700px){.aic-orb{display:none!important}}}
@media (max-width:420px){.aic-body{padding:24px 18px 8px}.aic-nova .fr-say h2{font-size:27px}.aic-nova .fr-sub{font-size:16px}}
@media (prefers-reduced-motion:reduce){.fr-star.lit .fr-halo,.fr-body.fr-in>*{animation:none}.fr *,.fr-qpop,.fr-qscrim{transition:none!important}}
.btn.ghost{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.lib-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.lib-bar input{flex:1;min-width:200px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:999px;padding:11px 16px;color:var(--ink-1);font-size:14.5px;outline:0}
.lib-bar input:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.ctx{flex-basis:100%;font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px}
.ctx-chips{display:flex;gap:8px;flex-wrap:wrap}
.ctx-chips button{font:inherit;font-size:13.5px;line-height:1;padding:10px 16px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.03);transition:background .2s,border-color .2s,color .2s}
.ctx-chips button:hover{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.35)}
.ctx-chips button[aria-checked="true"]{background:var(--ink-1);border-color:var(--ink-1);color:var(--h-141018,#141018);font-weight:600}
@media (max-width:760px){.ctx-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -2px;padding:2px}.ctx-chips button{flex:none}}
.ctx select,.pref select,.pref input{background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);padding:8px 12px;font:inherit;font-size:13px}
.mine{display:block;margin-top:14px}
.mine[hidden],.mine:empty{display:none}
/* what she already has: one line, opened on demand */
.mine-head{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 14px 8px 10px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03);text-align:left;transition:border-color .2s,transform .16s ease-out}
.mine-head:hover{border-color:var(--hair-2)}
.mine-head:active{transform:scale(.99)}
.mine-faces{display:flex;flex:none}
.mine-faces>*{width:24px;height:24px;border-radius:7px;margin-left:-6px;border:2px solid var(--h-0b0c16,#0b0c16);background:var(--h-fff,#fff);object-fit:contain;padding:2px}
.mine-faces>:first-child{margin-left:0}
.mine-faces .mono{display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.14);color:var(--ink-1);font-size:11px;padding:0}
.mine-t{flex:1;min-width:0;display:grid;gap:2px}
.mine-t b{font-weight:500;font-size:14px;color:var(--ink-1)}
.mine-t small{font-size:12px;color:var(--ink-3)}
.mine-go{flex:none;font-size:12.5px;color:var(--ink-2)}
.mine-list{margin-top:4px}
.mine-list .cat-name{margin:14px 0 8px}
.mine-chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-2)}
.chip img,.chip .mono{width:20px;height:20px;border-radius:6px;background:var(--h-fff,#fff);object-fit:contain;padding:2px}
.chip .mono{display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1);font-size:11px;padding:0}
.chip small{color:var(--ink-3)}
.lib-body{margin-top:12px}
.cat-name{font-size:12px;color:var(--ink-3);margin:18px 0 8px}
.apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.app{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid var(--hair);text-align:left;font-size:13.5px;color:var(--ink-1);transition:border-color .15s,background .15s;min-width:0}
.app:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-246-239-230,246,239,230),.04)}
.app img,.app .mono{width:28px;height:28px;border-radius:8px;background:var(--h-fff,#fff);object-fit:contain;padding:3px;flex:none}
.app .mono{display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.1);font-size:12px;padding:0}
.app span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-sub{grid-column:1/-1}.app .app-t{display:flex;flex-direction:column;gap:2px;min-width:0;white-space:normal;text-align:start}.app-t small{font-size:12px;line-height:1.35;color:var(--ink-3);text-align:start}html[dir=rtl] .app-t small{text-align:right}.app-t small .nw{white-space:nowrap}.app-have .app-t{padding-inline-end:26px}
.offline{margin-top:6px}
/* the library, calmer: NOVA's own ways in look like any other tile, with a mark; what she has is counted; categories open one at a time */
.app{position:relative}
.app-nova::after{content:"NOVA";position:absolute;right:8px;top:6px;font-size:8.5px;letter-spacing:.14em;color:var(--gold);opacity:.75}
.app-have{border-color:rgba(var(--k-111-242-196,111,242,196),.35)}
.app .app-n{position:absolute;right:8px;bottom:6px;font-style:normal;font-size:11px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;display:grid;place-items:center;background:rgba(var(--k-111-242-196,111,242,196),.18);color:var(--mint,#6ff2c4)}
html[dir=rtl] .app .app-n{right:auto;left:8px}
.app-nova.app-have::after{top:5px}.app-have .app-n{bottom:auto;top:50%;transform:translateY(-50%)}.app-nova.app-have .app-n{top:auto;bottom:4px;transform:none}
.cat-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.cat-chips button{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.cat-chips button small{font-size:11px;color:var(--ink-3)}
.cat-chips button[aria-selected=true]{background:rgba(var(--k-245-198-107,245,198,107),.12);border-color:rgba(var(--k-245-198-107,245,198,107),.5);color:var(--ink-1)}
.cat-chips button:active{transform:scale(.97)}
.lib-ask{margin-top:18px;padding-top:12px;border-top:1px solid var(--hair)}
.lib-ask-open{font-size:13px}
.lib-ask-form{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.lib-ask-form input{flex:1;min-width:160px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:10px;padding:9px 12px;color:var(--ink-1);font-size:13.5px;outline:0}
.lib-ask-form input:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.lib-reqs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.lib-reqs .cat-name{margin:0 4px 0 0}
.conn-group{display:flex;align-items:baseline;gap:10px}.conn-group small{font-size:11px;letter-spacing:0;text-transform:none;color:var(--ink-3);font-weight:400}
.conn-perms{font-size:12px;color:var(--ink-3);margin:2px 0}.conn-perms summary{cursor:pointer}.conn-perms .s{margin-top:4px}
.lib-foot{font-size:12.5px;color:var(--ink-3);margin:18px 0 0}
.drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 16px;border:1px dashed rgba(var(--k-246-239-230,246,239,230),.28);border-radius:16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}
.drop:hover,.drop.over{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.04)}
.drop b{font-weight:600}.drop small{color:var(--ink-3);font-size:12.5px;line-height:1.5}
.paste{margin-top:14px}
.paste textarea{width:100%;resize:vertical;background:rgba(var(--k-246-239-230,246,239,230),.04);border:1px solid var(--hair-2);border-radius:14px;padding:12px 14px;color:var(--ink-1);font:inherit;font-size:14px;outline:0}
.paste-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.progress{margin-top:16px;display:flex;flex-direction:column;gap:8px}
.progress .bar{height:3px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.1);overflow:hidden}
.progress i{display:block;height:100%;width:100%;background:var(--gold);transform:scaleX(var(--p,0));transform-origin:var(--fill-from,left);transition:transform .4s var(--ease)}
.progress span{font-size:13px;color:var(--ink-2)}
.idea{padding:10px 0;border-bottom:1px solid var(--hair)}
.idea-go{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--hair);color:inherit;cursor:pointer;font:inherit}
.idea-go b{color:var(--gold)}
.idea-go:hover b,.idea-go:focus-visible b{text-decoration:underline;text-underline-offset:3px}
.idea b{font-size:13.5px;font-weight:600}.idea p{margin:3px 0 0;font-size:12.5px;color:var(--ink-3);line-height:1.5}
.pref{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:13.5px}
.pref input[type=text]{width:180px}
/* a long choice ("Google Tasks: katie@…") is cut short with … instead of pushing the row past a phone's edge */
.pref select{flex:0 1 auto;width:auto;min-width:0;max-width:62%;text-overflow:ellipsis}
/* her life sections: one switch per world, its colour as the mark */
.wsec{margin-top:6px}
.wsec-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 2px;border:0;border-bottom:1px solid var(--hair);background:none;color:var(--ink-2);text-align:left;font:inherit;cursor:pointer;transition:opacity .2s}
.wsec-row i{flex:none;width:12px;height:12px;border-radius:50%;border:1.5px solid rgba(var(--c),.9);background:rgba(var(--c),.15);box-shadow:0 0 0 0 rgba(var(--c),.35);transition:background .2s,box-shadow .25s,transform .2s}
.wsec-row.on i{background:rgba(var(--c),.95);box-shadow:0 0 12px 1px rgba(var(--c),.45)}
.wsec-row .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.wsec-row b{font-weight:500;color:var(--ink-1);font-size:13.5px}
.wsec-row small{font-size:12px;color:var(--ink-3)}
.wsec-row:not(.on){opacity:.55}
.wsec-row:not(.on) b{color:var(--ink-2)}
.wsec-state{flex:none;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.wsec-row.on .wsec-state{color:rgba(var(--c),.95)}
.wsec-row:active{transform:scale(.995)}
@media (max-width:760px){.panel{padding:20px 16px;border-radius:18px}.apps{grid-template-columns:repeat(2,minmax(0,1fr))}.steps li{flex-wrap:wrap}.steps li>div{flex:1 1 calc(100% - 50px)}.steps li>.btn,.steps li>.w-two{margin-left:42px}}
#gate{position:absolute;inset:0;z-index:20;display:none;align-items:center;justify-content:center;overflow-y:auto;overscroll-behavior:contain;background:radial-gradient(60% 60% at 50% 45%,rgba(var(--k-3-4-10,3,4,10),.55),rgba(var(--k-3-4-10,3,4,10),.92));padding:24px}
#gate.on{display:flex}
.gate-in{width:min(420px,100%);text-align:center;margin:auto 0} /* centred when it fits; scrolls from the top (never cut off) in a short window */
.gate-in h2{font-family:var(--display);font-weight:400;font-size:34px;margin:0 0 8px}
.gate-title img{display:block;width:min(360px,86%);height:auto;margin:0 auto 6px}
.gate-in p{color:var(--ink-3);font-size:14px;margin:0 0 22px;line-height:1.5}
.gate-row{display:flex;gap:8px;padding:6px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.8)}
.gate-row input{flex:1;background:transparent;border:0;outline:0;padding:0 14px;font-size:15px;color:var(--ink-1)}
.gate-row button{padding:11px 20px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-weight:600;font-size:14px}
.gate-err{color:var(--h-ffb4a8,#ffb4a8);font-size:13px;min-height:18px;margin-top:10px}
/* NOVA for Windows waiting on the browser: the number to pick there (number matching, server/devices.js) */
.gate-pick{margin:18px 0 22px;padding:18px 20px 20px;border-radius:22px;background:rgba(var(--k-8-10-22,8,10,22),.94);border:1px solid var(--hair-2);animation:gpRise .24s cubic-bezier(.23,1,.32,1)}
.gate-in .gate-pick p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.5}
.gate-in .gate-pick .gp-k{margin:12px 0 2px;color:var(--ink-3);font-size:13px}
.gate-pick b{display:block;font-family:var(--display);font-weight:400;font-size:68px;line-height:1.05;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums;letter-spacing:.02em}
@keyframes gpRise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gate-pick{animation:none}}
/* "Continue with email" (public/js/emailsignin.js): the third way in, then a focused panel on a solid surface */
.gate-ways{display:flex;flex-direction:column;align-items:center;gap:10px}
.gate-ways .google-btn{min-width:252px;min-height:48px;justify-content:center;margin:0}
.gate-mail{border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.72);color:var(--ink-1);cursor:pointer;font:inherit;font-weight:600;font-size:15px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s,background .15s}
.gate-mail svg{color:var(--ice);flex:none}
.gate-mail:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.36);background:rgba(var(--k-16-18-31,16,18,31),.9)}
.gate-mail:focus-visible,.ge-go:focus-visible,.ge-link:focus-visible,.ge-back:focus-visible,.ge-copy:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
#gate.gate-mailing .gate-about{display:none}
/* a tall sign-in (a phone, a big text size, the code step) scrolls instead of losing its top */
#gate{overflow-y:auto;overscroll-behavior:contain}#gate>.gate-in{margin:auto}
.gate-in .gate-legal{margin-top:18px}
.gate-email{margin:6px auto 0;text-align:center;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge-2,rgba(246,239,230,.13));border-radius:22px;padding:26px 24px 18px;box-shadow:inset 0 1px 0 rgba(246,239,230,.04),0 30px 80px -40px rgba(0,0,0,.9)}
.gate-email.ge-in{animation:geIn .22s cubic-bezier(.23,1,.32,1)}
@keyframes geIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.gate-email .ge-title{font-family:var(--display);font-weight:400;font-size:28px;line-height:1.15;letter-spacing:-.01em;color:var(--ink-1);margin:0 0 8px}
.gate-email p{margin:0}
.gate-email .ge-sub{font-size:15px;line-height:1.5;color:var(--ink-2);margin:0 0 18px}
.gate-email .ge-sent{margin-bottom:6px}
.gate-email .ge-sent b{display:block;margin-top:2px;font-size:17px;font-weight:600;color:var(--ink-1);overflow-wrap:anywhere}
.gate-email .ge-note{font-size:14px;line-height:1.5;color:var(--ink-3);margin:0 0 18px}
.ge-form{display:flex;flex-direction:column;gap:0;text-align:start}
.ge-label{font-size:14.5px;color:var(--ink-2);margin:0 0 8px}
.ge-input{width:100%;min-width:0;height:56px;border-radius:16px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:17px;padding:0 16px;outline:0;transition:border-color .15s,background .15s}
html[lang=ar] .ge-input{text-align:right}
.ge-input::placeholder{color:var(--ink-3)}
.ge-input:focus{border-color:var(--gold);background:rgba(245,198,107,.05)}
.gate-email .ge-msg{min-height:22px;margin:8px 0 6px;font-size:14px;line-height:1.45;color:var(--rose);text-align:center}
.gate-email .ge-msg.ge-ok{color:var(--mint)}
.ge-go{height:56px;border:0;border-radius:999px;background:var(--gold);color:#1d1408;font:inherit;font-size:17px;font-weight:600;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .15s}
.ge-go:active:not(:disabled){transform:scale(.97)}
.ge-go:disabled{background:rgba(var(--k-246-239-230,246,239,230),.07);color:var(--ink-3);cursor:default}
.ge-go.is-busy{opacity:.7;cursor:progress}
.ge-cells{display:flex;justify-content:center;gap:8px}
.ge-gap{width:6px;flex:none}
.ge-cell{width:50px;height:62px;min-width:0;padding:0;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;text-align:center;caret-color:var(--gold);outline:0;transition:border-color .15s,background .15s}
.ge-cell:focus{border-color:var(--gold);background:rgba(245,198,107,.06)}
.ge-cells.is-wrong .ge-cell{border-color:rgba(255,122,182,.7)}
.ge-cells.is-wrong{animation:geShake .26s cubic-bezier(.23,1,.32,1)}
@keyframes geShake{0%,100%{transform:none}25%{transform:translateX(-6px)}55%{transform:translateX(5px)}80%{transform:translateX(-2px)}}
.ge-cells.is-ok .ge-cell{border-color:var(--mint);background:rgba(111,242,196,.07);color:var(--mint)}
.ge-cells.is-dead .ge-cell{opacity:.45}
.ge-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0 18px;margin-top:10px}
.ge-link,.ge-back{min-height:44px;display:inline-flex;align-items:center;gap:6px;padding:0 6px;border-radius:10px;border:0;background:none;color:var(--ink-2);font:inherit;font-size:14.5px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:4px;transition:color .15s}
.ge-link:hover:not(:disabled),.ge-back:hover{color:var(--ink-1)}
.ge-link:disabled{color:var(--ink-3);cursor:default;text-decoration:none}
.ge-link.ge-link-on{color:var(--gold);text-decoration-color:rgba(245,198,107,.4)}
.ge-count{font-variant-numeric:tabular-nums}
.ge-back{margin-top:10px;text-decoration:none}
[dir=rtl] .ge-back svg{transform:scaleX(-1)}
.gate-email .ge-help{margin-top:12px;padding-top:14px;border-top:1px solid var(--hair);font-size:13.5px;line-height:1.5;color:var(--ink-3)}
.ge-help a{color:var(--ice);text-underline-offset:3px}
.ge-code{display:flex;align-items:center;justify-content:center;gap:14px;margin:6px 0 18px}
.ge-code span{font-size:36px;font-weight:600;letter-spacing:.14em;font-variant-numeric:tabular-nums;color:var(--ink-1);padding:10px 18px;border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair)}
.ge-copy{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(245,198,107,.55);background:none;color:var(--gold);font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .15s,border-color .15s}
.ge-copy:active{transform:scale(.96)}.ge-copy.is-done{color:var(--mint);border-color:rgba(111,242,196,.55)}
@media (max-width:420px){.gate-email{padding:22px 16px 14px;border-radius:20px}.ge-cell{width:44px;height:56px;font-size:24px}.ge-cells{gap:6px}.ge-gap{width:4px}.ge-code span{font-size:30px;padding:8px 14px}.gate-email .ge-title{font-size:26px}}
@media (prefers-reduced-motion:reduce){.gate-email.ge-in,.ge-cells.is-wrong{animation:none}}

/* ---------- First screens: the nebula "Blue cliffs" (Katie's pick, Oct 18 2026; DESIGN.md "First screens") ----------
   Sign-in and the loading moment before it stand in a deep-blue nebula: a still we render ahead of time (dev/sky,
   public/media/sky-*.webp), so the device computes nothing. The bright cavity holds the wordmark; the dark cliffs hold
   the solid sign-in sheet, so no word ever sits on bright gas. Phones and reduced motion: the still only. Desktop: a
   very slow drift of the still (14px over 90s, transform only, on the compositor), which stops by itself whenever the
   sky isn't shown. While the sign-in is up the mind behind it isn't drawn at all (presence.js COVER_SEL). */
#gate{display:none;padding:0;overflow:hidden;background:#03040a;color:var(--ink-1);align-items:stretch;justify-content:stretch}
#gate.on{display:block}
.fsky{position:absolute;inset:0;overflow:hidden;background:radial-gradient(70% 45% at 56% 18%,#123a78,rgba(8,22,58,.6) 55%,transparent 80%),#03040a;pointer-events:none}
.fsky picture{display:contents}
.fsky img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0;display:block;transition:opacity .5s ease-out}
#gate img.fsky-wait{opacity:0}
#gate .gate-title img{transition:opacity .4s ease-out}
.gate-scroll{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;align-items:center}
#gate .gate-title{flex:1 1 auto;width:100%;min-height:calc(env(safe-area-inset-top,0px) + 168px);max-height:calc(env(safe-area-inset-top,0px) + 43vh);margin:0;padding:env(safe-area-inset-top,0px) 0 0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:0}
#gate .gate-title img{width:min(264px,68vw);margin:0;filter:drop-shadow(0 0 18px rgba(2,6,20,.75)) drop-shadow(0 0 2px rgba(2,6,20,.6))}
/* the sheet: solid, on the dark rock */
#gate .gate-in{flex:none;margin:auto 0 0;width:100%;max-width:none;position:relative;background:#080a14;border-top:1px solid var(--hair,rgba(246,239,230,.10));border-radius:28px 28px 0 0;padding:26px 20px calc(18px + env(safe-area-inset-bottom,0px));box-shadow:0 -30px 60px -20px rgba(3,4,10,.9);text-align:center}
#gate .gate-in>*{max-width:400px;margin-inline:auto}
#gate.on:not(.gate-wait) .gate-in{animation:gateIn .32s cubic-bezier(.23,1,.32,1) both}
@keyframes gateIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
#gate .gate-in #gateLead{margin:0 auto 20px;max-width:330px;font-size:16px;line-height:1.5;color:var(--ink-2);text-wrap:balance}
#gate .gate-ways{align-items:stretch;gap:10px}
#gate .gate-ways .google-btn{width:100%;min-width:0;min-height:52px;font-size:16px;gap:12px;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s,border-color .15s}
#gate .gate-ways .google-btn:hover{transform:none}
#gate .gate-ways .google-btn:active{transform:scale(.98)}
#gate .gate-ways .apple-btn{margin:0}
#gate .gate-mail{background:rgba(246,239,230,.03)}
#gate .gate-in .gate-legal{margin:16px auto 0;max-width:340px;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
#gate .gate-legal a,#gate .gate-about a{color:var(--ink-2);text-underline-offset:3px}
#gate .gate-in .gate-about{margin:10px auto 0;padding:0;border:0;font-size:14px;line-height:1.5;color:var(--ink-3)}
#gate .gate-about a{color:var(--ink-1)}
#gate .gate-err:empty{min-height:0;margin:0}
#gate .gate-lang{margin-top:14px;padding-top:14px;border-top:1px solid var(--hair,rgba(246,239,230,.10));max-width:none;gap:6px}
#gate .gate-lang button{min-height:36px;padding:0 12px;font-size:13.5px}
html[lang=ar] #gate #gateLead{font-size:17px;line-height:1.7}
html[lang=ar] #gate .gate-in .gate-legal{font-size:14px;line-height:1.7;color:rgba(246,239,230,.6)}
/* "Continue with email" opens inside the sheet: no second card */
#gate .gate-email{margin:0 auto;background:none;border:0;box-shadow:none;padding:4px 0 0}
#gate .gate-pick{background:#10121f}
/* the loading moment: the sky, the wordmark where sign-in has it, one calm line on a solid pill */
.gate-wait-pill{display:none}
#gate.gate-wait{animation:gateWait .4s ease-out .5s both}
@keyframes gateWait{from{opacity:0}to{opacity:1}}
#gate.gate-wait .gate-in{display:none}
#gate.gate-wait .gate-wait-pill{display:flex;align-items:center;gap:10px;position:absolute;left:50%;bottom:calc(64px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);margin:0;padding:12px 18px 12px 16px;border-radius:999px;background:#0f1016;border:1px solid var(--hair,rgba(246,239,230,.10));font-size:15px;line-height:1.3;color:var(--ink-2);white-space:nowrap;box-shadow:0 20px 50px -20px rgba(0,0,0,.9)}
.gate-wait-pill i{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.7);flex:none}
@media (max-height:560px){#gate .gate-title{max-height:none;min-height:150px}}
/* desktop: the cloud on the left holds the wordmark, a solid panel floats right on the dark cliff */
@media (min-width:900px){
  #gate{--g-pw:440px;--g-pr:clamp(32px,6.7vw,96px)}
  .fsky img{inset:-10px;width:calc(100% + 20px);height:calc(100% + 20px);object-position:50% 50%}
  .gate-scroll{flex-direction:row;align-items:center;justify-content:flex-end;padding:24px var(--g-pr)}
  html[dir=rtl] .gate-scroll{justify-content:flex-start} /* (the sky isn't mirrored, so the panel stays on its dark cliff) */
  #gate .gate-title{position:absolute;left:calc((100% - var(--g-pw) - var(--g-pr)) * .6);top:50%;transform:translate(-50%,-50%);width:clamp(260px,30vw,440px);min-height:0;max-height:none;padding:0;display:block}
  html[dir=rtl] #gate .gate-title{left:calc((100% - var(--g-pw) - var(--g-pr)) * .6);right:auto}
  #gate .gate-title img{width:100%}
  #gate .gate-in{width:var(--g-pw);margin:auto 0;border:1px solid var(--hair,rgba(246,239,230,.10));border-radius:28px;padding:34px 32px 24px;box-shadow:inset 0 1px 0 rgba(246,239,230,.05),0 40px 100px -30px rgba(0,0,0,.95)}
  #gate .gate-in #gateLead{font-size:17px;max-width:360px}
  #gate.gate-wait .gate-wait-pill{left:calc((100% - var(--g-pw) - var(--g-pr)) * .6);bottom:auto;top:calc(50% + clamp(170px,15vw,220px))} /* below the lit rim, on the dark */
}
/* the drift: desktop only, never for reduced motion, Simple view or low power. A compositor animation, so the main
   thread does no work for it; it isn't running while the sign-in is hidden, and the browser stops it in a hidden tab. */
@media (min-width:900px) and (prefers-reduced-motion:no-preference){
  html:not(.simple):not(.low-power) #gate.on .fsky picture{display:block;position:absolute;inset:0;animation:fskyX 90s ease-in-out infinite alternate}
  html:not(.simple):not(.low-power) #gate.on .fsky img{animation:fskyY 118s ease-in-out infinite alternate}
}
@keyframes fskyX{from{transform:translate3d(-7px,0,0)}to{transform:translate3d(7px,0,0)}}
@keyframes fskyY{from{transform:translate3d(0,-4px,0)}to{transform:translate3d(0,4px,0)}}
@media (prefers-reduced-motion:reduce){#gate.on:not(.gate-wait) .gate-in{animation:none}#gate.gate-wait{animation-duration:.01s}}
/* never stuck (Nov 3 2026, Katie's Android app sat on the loading pill for good): past 8 s with no answer the pill
   gives way to one calm note on a solid surface (what happened, what to do), Try again in gold, Open what's saved when
   this device kept her last session. Part of the first screen (dev/css-critical.json), so it shows even if app.css
   never arrives. A wordmark picture that can't load is drawn from NOVA's own symbol instead (public/js/bootwait.js). */
#gate.gate-stuck .gate-wait-pill{display:none}
.gate-stuck-note{position:absolute;left:50%;bottom:calc(40px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:min(380px,calc(100% - 32px));box-sizing:border-box;margin:0;padding:20px 20px 18px;border-radius:24px;background:#0f1016;border:1px solid var(--hair,rgba(246,239,230,.10));box-shadow:0 30px 70px -24px rgba(0,0,0,.95);text-align:center;animation:gsIn .24s cubic-bezier(.23,1,.32,1) both}
@keyframes gsIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.gate-stuck-note .gs-t{margin:0 0 6px;font-size:17px;font-weight:600;line-height:1.35;color:var(--ink-1)}
.gate-stuck-note .gs-t::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--rose,#ff7ab6);box-shadow:0 0 10px rgba(255,122,182,.6);margin-inline-end:10px;vertical-align:middle;position:relative;top:-1px}
.gate-stuck-note .gs-p{margin:0 auto 16px;max-width:320px;font-size:14.5px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.gate-stuck-note .gs-acts{display:flex;flex-direction:column;gap:8px}
.gate-stuck-note button{min-height:48px;border-radius:999px;font:inherit;font-size:15.5px;font-weight:600;cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s,border-color .15s}
.gate-stuck-note button:active{transform:scale(.97)}
.gate-stuck-note .gs-try{border:0;background:var(--gold,#f5c66b);color:#1a1206}
.gate-stuck-note .gs-saved{border:1px solid var(--hair-2,rgba(246,239,230,.18));background:transparent;color:var(--ink-1)}
@media (hover:hover){.gate-stuck-note .gs-try:hover{background:#f8d38a}.gate-stuck-note .gs-saved:hover{border-color:rgba(246,239,230,.32)}}
html[lang=ar] .gate-stuck-note .gs-p{font-size:15.5px;line-height:1.7}
#gate .gate-title svg.gate-wm{display:block;width:min(264px,68vw);height:auto;aspect-ratio:250/60;margin:0 auto}
@media (min-width:900px){
  .gate-stuck-note{left:calc((100% - var(--g-pw) - var(--g-pr)) * .6);bottom:auto;top:calc(50% + clamp(150px,13vw,190px))}
  #gate .gate-title svg.gate-wm{width:100%}
}
@media (prefers-reduced-motion:reduce){.gate-stuck-note{animation:none}}

/* side sheet */
#sheet{position:absolute;top:0;left:0;bottom:0;width:min(460px,100vw);z-index:15;background:var(--h-06070f,#06070f);border-right:1px solid var(--hair);transform:translateX(-102%);transition:transform .45s var(--ease);display:flex;flex-direction:column}
#sheet.on{transform:none}
/* the home screen steps back behind the panel (UI laws ★5): the same 70% night as a dialog; a tap on it closes the panel */
.sheet-scrim{position:absolute;inset:0;z-index:14;background:rgba(3,4,10,.7);opacity:0;pointer-events:none;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
#stage:has(#sheet.on) .sheet-scrim{opacity:1;pointer-events:auto}
@media (prefers-reduced-motion:reduce){.sheet-scrim{transition:none}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:calc(22px + env(safe-area-inset-top,0px)) 22px 10px}
.sheet-head .wordmark{padding-left:0}
.sheet-go{display:flex;align-items:center;gap:6px;margin-left:auto;margin-right:10px}
.sheet-go-b{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--hair);font-size:12.5px;color:var(--ink-2);transition:border-color .2s,color .2s,transform .16s ease-out}
.sheet-go-b:hover{border-color:var(--hair-2);color:var(--ink-1)}
.sheet-go-b:active{transform:scale(.97)}
.sheet-go-b:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.sg-brain{width:9px;height:9px;border-radius:50%;background:radial-gradient(circle,var(--gold) 30%,rgba(var(--k-245-198-107,245,198,107),.25) 70%);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.5)}
.sheet-close{width:34px;height:34px;border-radius:50%;border:1px solid var(--hair);color:var(--ink-2);display:grid;place-items:center}
/* the panel's title (Chats, Your life, Customize…), with the menu beside it: every other place is one tap away there
   (public/js/buckets.js). It replaced the row of tabs (Katie, Oct 18: one set of places in both views). */
.sheet-title{display:flex;align-items:center;gap:12px;flex:none;padding:2px 22px 14px;border-bottom:1px solid var(--hair)}
.sheet-title h2{margin:0;font:400 26px/1.15 var(--display);letter-spacing:-.01em;color:var(--ink-1);outline:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-menu{flex:none;width:44px;height:44px;transition:border-color .2s,color .2s,transform .16s ease-out}
.sheet-menu:hover{color:var(--ink-1);border-color:var(--hair-2)}
.sheet-menu:active{transform:scale(.96)}
.sheet-menu:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* Full view's menu (public/js/buckets.js): the same places as Simple view's sidebar, in a panel over the mind; a drawer
   on a phone. Solid enough to read, the mind still faintly there beside it. */
.bk-scrim{position:fixed;inset:0;z-index:16;opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1);
  background:linear-gradient(90deg,rgba(var(--k-3-4-10,3,4,10),.62) 0,rgba(var(--k-3-4-10,3,4,10),.36) 380px,rgba(var(--k-3-4-10,3,4,10),.14) 70%,rgba(var(--k-3-4-10,3,4,10),.1) 100%);
  -webkit-mask-image:linear-gradient(transparent 0,transparent 64px,#000 120px);mask-image:linear-gradient(transparent 0,transparent 64px,#000 120px)}
.bk-scrim.on{opacity:1}.bk-scrim[hidden],.bk-menu[hidden]{display:none}
.bk-menu{position:fixed;z-index:17;left:14px;top:calc(76px + env(safe-area-inset-top,0px));bottom:14px;width:316px;display:flex;flex-direction:column;
  padding:12px 10px 10px;border-radius:26px;color:var(--ink-1);font-family:var(--sans);
  background:radial-gradient(120% 40% at 0% 0%,rgba(92,225,255,.07),rgba(92,225,255,0) 60%),radial-gradient(90% 30% at 100% 100%,rgba(169,139,255,.06),rgba(169,139,255,0) 70%),rgba(9,10,19,.95);
  -webkit-backdrop-filter:blur(22px) saturate(1.15);backdrop-filter:blur(22px) saturate(1.15);border:1px solid rgba(246,239,230,.09);
  box-shadow:0 0 0 1px rgba(0,0,0,.4),0 30px 80px -20px rgba(0,0,0,.85),inset 0 1px 0 rgba(246,239,230,.05);
  opacity:0;transform:translateX(-10px);transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.bk-menu.on{opacity:1;transform:none}
.bk-menu:focus{outline:none}
.bk-head{display:none;align-items:center;justify-content:space-between;padding:2px 6px 14px 12px}
.bk-head .wordmark{width:92px;height:22px;color:var(--ink-1)}
.bk-x{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid rgba(246,239,230,.12);color:var(--ink-2);transition:color .2s,border-color .2s,transform .16s ease-out}
.bk-x:hover{color:var(--ink-1);border-color:rgba(246,239,230,.24)}.bk-x:active{transform:scale(.96)}
.bk-list{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.bk-list::-webkit-scrollbar{display:none}
.bk-g{display:flex;flex-direction:column;gap:1px}
.bk-g+.bk-g{margin-top:10px;padding-top:10px;border-top:1px solid rgba(246,239,230,.06)}
.bk-row{position:relative;display:flex;align-items:center;gap:13px;width:100%;min-height:44px;padding:0 12px;border-radius:12px;text-align:start;
  font-size:15px;line-height:1.2;color:rgba(246,239,230,.82);letter-spacing:-.005em;transition:background-color .16s ease,color .16s ease,transform .16s ease-out}
.bk-row>svg{flex:none;color:rgba(246,239,230,.46);transition:color .16s ease}
.bk-row .bk-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (hover:hover){.bk-row:hover{background:rgba(246,239,230,.055);color:var(--ink-1)}.bk-row:hover>svg{color:var(--ice)}}
.bk-row:active{transform:scale(.98)}
.bk-row:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.75);outline-offset:-2px;color:var(--ink-1)}
.bk-meta.bk-m{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.bk-meta.bk-n{min-width:22px;height:22px;padding:0 7px;display:inline-grid;place-items:center;border-radius:999px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:#1d1408;background:var(--gold);box-shadow:0 0 14px -2px rgba(245,198,107,.55)}
.bk-meta.bk-n.v{color:#130d26;background:var(--violet);box-shadow:0 0 14px -2px rgba(169,139,255,.55)}
.bk-new{min-height:46px;color:var(--ink-1);font-weight:500}
.bk-new>svg{width:26px;height:26px;padding:5px;margin-inline-start:-4px;border-radius:50%;color:#1d1408;background:var(--gold);box-shadow:0 0 18px -4px rgba(245,198,107,.7)}
@media (hover:hover){.bk-new:hover>svg{color:#1d1408}}
.bk-foot{flex:none;margin-top:10px;padding-top:10px;border-top:1px solid rgba(246,239,230,.06)}
.bk-me{min-height:52px}
.bk-me .bk-pic{flex:none;width:28px;height:28px;margin-inline-start:-4px;display:grid;place-items:center;border-radius:50%;font:500 13px/1 var(--display);color:var(--gold);border:1px solid rgba(245,198,107,.55);background:rgba(245,198,107,.06)}
.bk-me .bk-l{display:flex;flex-direction:column;gap:2px}
.bk-me .bk-l b{font-weight:400;color:var(--ink-1)}
.bk-me .bk-l small{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis}
/* the menu button reads as open while the menu is up */
html.bk-on #menu{color:var(--gold);border-color:rgba(245,198,107,.6);background:rgba(245,198,107,.08);box-shadow:0 0 20px -6px rgba(245,198,107,.6)}
@media (max-width:760px){
  .bk-scrim{background:rgba(var(--k-3-4-10,3,4,10),.62);-webkit-mask-image:none;mask-image:none;z-index:19}
  .bk-menu{z-index:20;left:0;top:0;bottom:0;width:min(330px,86vw);border-radius:0 26px 26px 0;border-left:0;
    padding:calc(16px + env(safe-area-inset-top,0px)) 10px calc(12px + env(safe-area-inset-bottom,0px));
    opacity:1;transform:translateX(-102%);transition:transform .3s cubic-bezier(.32,.72,0,1)}
  .bk-head{display:flex}
  .bk-row{min-height:48px;font-size:16px}
  .bk-new{min-height:50px}
  .bk-g+.bk-g{margin-top:8px;padding-top:8px}
}
html[dir=rtl] .bk-menu{left:auto;right:14px;transform:translateX(10px)}
html[dir=rtl] .bk-menu.on{transform:none}
html[dir=rtl] .bk-scrim{background:linear-gradient(270deg,rgba(var(--k-3-4-10,3,4,10),.62) 0,rgba(var(--k-3-4-10,3,4,10),.36) 380px,rgba(var(--k-3-4-10,3,4,10),.14) 70%,rgba(var(--k-3-4-10,3,4,10),.1) 100%)}
@media (max-width:760px){
  html[dir=rtl] .bk-menu{right:0;border-radius:26px 0 0 26px;border-left:1px solid rgba(246,239,230,.09);border-right:0;transform:translateX(102%)}
  html[dir=rtl] .bk-scrim{background:rgba(var(--k-3-4-10,3,4,10),.62)}
  .bk-menu.on,html[dir=rtl] .bk-menu.on{transform:none}
}
@media (prefers-reduced-motion:reduce){.bk-scrim,.bk-menu,.bk-row{transition:none}}
.sheet-body{flex:1;overflow:auto;padding:10px 22px 40px}
.sheet-body h4,.hub-body h4:not(.ld-sec){font-size:11.5px;letter-spacing:.08em;color:var(--ink-3);font-weight:500;margin:22px 0 8px}
.ld-nextstep{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;margin:10px 0 0;font-size:14px;color:var(--ink-1)}
.ld-nextstep small{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.ld-nextstep em{font-style:normal;font-weight:600;color:rgb(var(--c, 245,198,107))}
.ld-nextstep-do{margin-left:6px;padding:4px 12px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);color:var(--gold);font-size:12.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s}
.ld-nextstep-do:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}
.ld-nextstep-do:active{transform:scale(.97)}
.ld-nextstep-do:disabled{opacity:.6}
/* a score going up: what moved, counted up where she can see it, then gone */
.rise{position:fixed;left:50%;top:calc(70px + env(safe-area-inset-top,0px));z-index:60;display:grid;gap:6px;min-width:260px;max-width:min(420px,calc(100vw - 32px));padding:12px 16px 12px 14px;border-radius:16px;background:rgba(var(--k-10-11-22,10,11,22),.94);border:1px solid rgba(var(--k-246-239-230,246,239,230),.14);box-shadow:0 18px 50px -18px rgba(var(--k-0-0-0,0,0,0),.8);transform:translate(-50%,-10px) scale(.97);opacity:0;pointer-events:none;transition:opacity .22s cubic-bezier(.23,1,.32,1),transform .26s cubic-bezier(.23,1,.32,1)}
.rise.on{opacity:1;transform:translate(-50%,0) scale(1)}
.rise:empty{display:none}
.rise-row{display:flex;align-items:baseline;gap:8px;font-size:14px;color:var(--ink-2)}
.rise-dot{flex:none;width:8px;height:8px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.7);transform:translateY(-1px)}
.rise-name{flex:1;min-width:0;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rise-from{color:var(--ink-3);font-variant-numeric:tabular-nums}
.rise-n{font-family:var(--display);font-weight:400;font-size:22px;line-height:1;color:rgb(var(--c));font-variant-numeric:tabular-nums;min-width:2ch;text-align:right}
.rise-plus{font-size:12px;font-weight:600;color:rgb(var(--c));font-variant-numeric:tabular-nums}
.rise-pts{font-size:12.5px;color:var(--gold);padding-top:2px}
.rise-quip{margin-top:4px;font-family:var(--display);font-size:15px;color:var(--ink-2)}
.rise-row+.rise-pts{border-top:1px solid rgba(var(--k-246-239-230,246,239,230),.08);padding-top:7px}
.rise.lvl{border-color:rgba(var(--k-245-198-107,245,198,107),.5);box-shadow:0 0 0 1px rgba(var(--k-245-198-107,245,198,107),.15),0 18px 60px -16px rgba(var(--k-245-198-107,245,198,107),.35)}
#rail .rail-list ol button.risen .d{animation:risen 1.5s cubic-bezier(.23,1,.32,1)}
#rail .rail-list ol button.risen .sc{color:var(--ink-1)}
@keyframes risen{0%{transform:scale(1)}25%{transform:scale(1.9);box-shadow:0 0 16px 4px rgba(var(--c),.8)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.rise{transition:opacity .2s}.rise,.rise.on{transform:translate(-50%,0)}#rail .rail-list ol button.risen .d{animation:none}}
/* a section of her own: describe it, see it, add it */
.lm-make{margin:10px 0 4px}
/* "+ Add a section" and its menu: NOVA's own, never the browser's white list */
.lm-am{outline:none;position:fixed;z-index:400;box-sizing:border-box;min-width:260px;overflow-y:auto;overscroll-behavior:contain;padding:6px;border-radius:16px;background:#14151c;color:var(--ink-1);
  box-shadow:0 0 0 1px rgba(246,239,230,.12),0 1px 0 rgba(255,255,255,.03) inset,0 28px 56px -22px rgba(0,0,0,.9);animation:lmAmIn .16s cubic-bezier(.23,1,.32,1)}
@keyframes lmAmIn{from{opacity:0;transform:translateY(-4px) scale(.98)}}
.lm-am-g+.lm-am-g{margin-top:4px;padding-top:4px;border-top:1px solid rgba(246,239,230,.08)}
.lm-am-h{margin:8px 10px 4px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.lm-am-i{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:8px 10px;border-radius:10px;text-align:start;color:var(--ink-1);transition:background-color .12s ease}
.lm-am-i:focus-visible{outline:none;background:rgba(246,239,230,.07);box-shadow:inset 0 0 0 1.5px rgba(var(--k-245-198-107,245,198,107),.55)}
.lm-am-i:active{background:rgba(246,239,230,.1)}
@media (hover:hover){.lm-am-i:hover{background:rgba(246,239,230,.06)}}
.lm-am-i[aria-disabled=true]{opacity:.5;cursor:default}
.lm-am-dot{flex:none;width:10px;height:10px;margin:0 6px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.5)}
.lm-am-pl{flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:50%;border:1px dashed rgba(var(--k-245-198-107,245,198,107),.6);color:var(--gold);font-size:15px;line-height:1}
.lm-am-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lm-am-t b{font-size:14.5px;font-weight:500}
.lm-am-t small{font-size:12.5px;line-height:1.35;color:var(--ink-2)}
.lm-am-scrim{position:fixed;inset:0;z-index:399;background:rgba(2,3,8,.55);animation:lmAmFade .2s ease-out}
@keyframes lmAmFade{from{opacity:0}}
.lm-am.sheet{left:0;right:0;bottom:0;top:auto;width:auto;max-height:78vh;padding:6px 10px calc(14px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:lmAmUp .24s cubic-bezier(.32,.72,0,1)}
@keyframes lmAmUp{from{transform:translateY(100%)}}
.lm-am-top{display:flex;flex-direction:column;align-items:center;gap:10px;padding:4px 0 6px}
.lm-am-grab{width:36px;height:4px;border-radius:2px;background:rgba(246,239,230,.22)}
.lm-am-top b{align-self:stretch;padding:0 10px;font-family:var(--display);font-size:20px;font-weight:500}
@media (prefers-reduced-motion:reduce){.lm-am,.lm-am.sheet,.lm-am-scrim{animation:none}}
.lm-make-f,.lm-make-p{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03)}
.lm-make-f textarea{width:100%;resize:vertical;padding:10px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);color:var(--ink-1);font:inherit;font-size:14px}
.lm-make-a{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.lm-make-h{display:flex;align-items:center;gap:10px}.lm-make-p{border-color:rgba(var(--c),.45)}
.lm-make-n{flex:1;min-width:0;padding:6px 10px;border-radius:8px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font-family:var(--display);font-size:20px}
.lm-make-l{margin:0;color:var(--ink-2);font-size:14px}
svg.band-sign{display:block;flex:none;position:static!important;inset:auto!important;transform:none!important;overflow:visible}
svg.band-sign [fill="currentColor"]{fill:currentColor!important}svg.band-sign [fill="none"]{fill:none!important}svg.band-sign [stroke="currentColor"]{stroke:currentColor!important;stroke-width:1.6!important}
.lm-dot{flex:none;width:9px;height:9px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.5)}
.rd-ring b .band-sign{color:var(--gold)}.rd-ring b,.gl-ring b,.rp-ring b{display:grid;place-items:center}.gl-ring b .band-sign,.ov-orb-face b .band-sign,.rp-ring b .band-sign,.w-ring .band-sign,.ld-ring .band-sign{color:rgb(var(--c,246,239,230));filter:drop-shadow(0 0 4px rgba(var(--c,246,239,230),.45))}
#hub .ag-top{scroll-margin-top:96px}
.row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--hair)}
.phone{margin-bottom:22px}
.phone > .s{font-size:12.5px;color:var(--ink-3);margin:-4px 0 6px}
.btn-sm{padding:7px 14px;font-size:13px;flex:none;background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
/* company marks (public/js/brands.js): the company's own site icon on a small light tile, so a dark logo still reads
   on a dark page; the first letter on a quiet tile when there's no icon. Same size whether it loads or not. */
.bmark{--bm:20px;flex:none;position:relative;display:inline-grid;place-items:center;width:var(--bm);height:var(--bm);border-radius:calc(var(--bm)*.28);background:#fff;box-shadow:inset 0 0 0 1px rgba(20,16,24,.06),0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.1);overflow:hidden;vertical-align:middle;line-height:1}
.bmark img{display:block;width:74%;height:74%;object-fit:contain}
.bmark-letter{background:rgba(var(--k-246-239-230,246,239,230),.1);box-shadow:inset 0 0 0 1px var(--hair);color:var(--ink-1);font:600 calc(var(--bm)*.48)/1 var(--sans)}
.bmark-nova{background:#03040a}
.bmark-nova img{width:100%;height:100%;object-fit:cover}
.row-logo{width:32px;height:32px;border-radius:9px;background:var(--h-fff,#fff);object-fit:contain;padding:3px;flex:none;margin-top:2px}
.row-logo.mono{display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1);font-size:12px;padding:0}
.row .tag{flex:none}
.row.clickable{cursor:zoom-in;border-radius:10px;transition:background .2s}.row.clickable:hover{background:rgba(var(--k-255-255-255,255,255,255),.03)}
.row .main{flex:1;min-width:0}
.row .t{font-size:14px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis}
.row .s{font-size:12px;color:var(--ink-3);margin-top:3px;line-height:1.45}
/* Settings: a short list of categories, each opening on its own */
.settings h4{margin-top:22px}
.set-me{border-bottom:0;padding-bottom:4px}
.set-list{display:flex;flex-direction:column;border:1px solid var(--hair);border-radius:14px;overflow:hidden;background:rgba(var(--k-255-255-255,255,255,255),.02)}
.set-cat{display:flex;align-items:center;gap:14px;width:100%;padding:13px 14px;border:0;border-bottom:1px solid var(--hair);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color .18s ease}
.set-cat:last-child{border-bottom:0}
.set-cat:hover{background:rgba(var(--k-255-255-255,255,255,255),.035)}
.set-cat:active{background:rgba(var(--k-255-255-255,255,255,255),.06)}
.set-cat:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:-2px}
.set-ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:14px;color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08);border:1px solid rgba(var(--k-245-198-107,245,198,107),.18)}
.set-ic svg{width:17px;height:17px;display:block}
.set-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.set-main b{font-weight:500;font-size:14.5px;color:var(--ink-1)}
.set-sub{font-size:12.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set-go{flex:none;font-size:20px;line-height:1;color:var(--ink-3)}
.set-back{display:inline-flex;align-items:center;gap:4px;margin:2px 0 14px;padding:6px 10px 6px 4px;border:0;background:none;color:var(--gold);font:inherit;font-size:13.5px;cursor:pointer;border-radius:8px}
.set-back:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7)}.set-title:focus{outline:none}
.set-title{margin:0 0 10px;font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.set-h{margin:20px 0 6px;font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
/* Customize (Oct 18, "The quiet list"): you at the top, search, seven groups, More settings; pages one tap in */
.cz{display:flex;flex-direction:column;gap:14px;padding-top:6px}
.cz>*{margin:0}
.cz-home-b{display:flex;flex-direction:column;gap:14px}
.cz-me{display:flex;align-items:center;gap:13px;width:100%;padding:6px 4px;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer;border-radius:16px;transition:background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cz-me:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.cz-me:active{transform:scale(.99)}
.cz-me:focus-visible,.cz-row:focus-visible,.cz-back:focus-visible,.cz-reset-b:focus-visible,.cz-more>summary:focus-visible,.sec-foot>summary:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:-2px}
.cz-av{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;object-fit:cover;font:400 21px/1 var(--display);color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.12);border:1px solid rgba(var(--k-245-198-107,245,198,107),.3)}
.cz-me .cz-main b{font-size:16px}
.cz-edit{flex:none;font-size:14px;color:var(--ice);padding:6px 4px}
.cz-search{display:flex;align-items:center;gap:10px;height:48px;padding:0 6px 0 15px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair);color:var(--ink-3);transition:border-color .18s ease,background-color .18s ease;cursor:text}
.cz-search:focus-within{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.cz-search-i svg{display:block;width:20px;height:20px}
.cz-q{flex:1;min-width:0;height:100%;border:0;background:none;outline:none;color:var(--ink-1);font:inherit;font-size:15.5px;caret-color:var(--gold);-webkit-appearance:none;appearance:none}
.cz-q::placeholder{color:var(--ink-3)}
.cz-q::-webkit-search-cancel-button{display:none}
.cz-clear{flex:none;width:36px;height:36px;border:0;border-radius:10px;background:none;color:var(--ink-2);display:grid;place-items:center;cursor:pointer}
.cz-clear svg,.cz-clear span svg{display:block;width:18px;height:18px}
.cz-clear:active{transform:scale(.94)}
/* say it instead (Customize's search): NOVA's own dictation; gold while it listens, the mic breathing with the live state */
.cz-mic{flex:none;width:36px;height:36px;border:0;border-radius:10px;background:none;color:var(--ink-3);display:grid;place-items:center;cursor:pointer;transition:color .16s ease-out,background-color .16s ease-out,transform .12s ease-out}
.cz-mic svg,.cz-mic span svg{display:block;width:19px;height:19px}
@media (hover:hover){.cz-mic:hover{color:var(--ink-1)}}
.cz-mic:active{transform:scale(.94)}
.cz-mic:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:1px}
.cz-search.listening{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.cz-search.listening .cz-mic{color:var(--gold,#f5c66b);background:rgba(var(--k-245-198-107,245,198,107),.12)}
.cz-search.listening .cz-mic svg{animation:czListen 1.6s ease-in-out infinite}
@keyframes czListen{50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.cz-search.listening .cz-mic svg{animation:none}}
.cz-list{display:flex;flex-direction:column;border-radius:18px;background:var(--sf-0);border:1px solid var(--hair);overflow:hidden}
.cz-row{display:flex;align-items:center;gap:14px;width:100%;min-height:64px;padding:11px 14px;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer;position:relative;transition:background-color .18s ease}
.cz-row+.cz-row{border-top:1px solid var(--hair)}
.cz-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.cz-row:active{background:rgba(var(--k-246-239-230,246,239,230),.06)}
.cz-ic{flex:none;width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:var(--ice);background:rgba(92,225,255,.07)}
.cz-ic.v{color:var(--violet);background:rgba(169,139,255,.09)}
.cz-ic.g{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.cz-ic.cz-ic-q{color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.05)}
.cz-ic svg{display:block;width:20px;height:20px}
.cz-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.cz-main>b{font-weight:500;font-size:15.5px;line-height:1.3;color:var(--ink-1)}
.cz-main>small{font-size:13.5px;line-height:1.35;color:var(--ink-3);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2} /* a longer summary (Spanish, Arabic, bigger text) wraps once instead of cutting off */
.cz-sub span{white-space:nowrap}
.cz-go{flex:none;width:16px;height:16px;color:var(--ink-3)}
.cz-go svg{display:block;width:16px;height:16px}
html[dir=rtl] .cz-go:not(.cz-down) svg,html[dir=rtl] .cz-back-i svg{transform:scaleX(-1)}
.cz-play{flex:none;position:relative;width:36px;height:36px;padding:0;border-radius:50%;border:1px solid rgba(92,225,255,.35);background:none;color:var(--ice);display:grid;place-items:center;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .18s ease,opacity .18s ease}
.cz-play::before{content:"";position:absolute;inset:-4px}
.cz-play i{display:block;width:0;height:0;margin-left:3px;border-style:solid;border-width:6.5px 0 6.5px 11px;border-color:transparent transparent transparent currentColor}
.cz-play.on i{width:11px;height:11px;margin:0;border:0;border-radius:2px;background:currentColor}
.cz-play:active{transform:scale(.94)}
.cz-play:disabled{opacity:.35;cursor:default}
.cz-foot{font-size:13.5px;line-height:1.5;color:var(--ink-3);padding:2px 4px}
/* Recently deleted (public/js/bin.js): one quiet list; Restore is the clear way back, Delete for good stays a link */
.bin{display:flex;flex-direction:column;gap:14px;container-type:inline-size}
.bin-intro{margin:0;font-size:13.5px;color:var(--ink-2)}
.bin-row{display:grid;grid-template-columns:36px minmax(0,1fr);column-gap:14px;row-gap:10px;align-items:center;padding:14px 14px 12px;transition:opacity .18s ease-out,transform .18s ease-out}
.bin-row+.bin-row{border-top:1px solid var(--hair)}
.bin-row.gone{opacity:0;transform:translateY(-4px)}
.bin-row .cz-main>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bin-row .cz-main>small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[dir=rtl] .bin-row .cz-main>b{text-align:right} /* her own words keep their direction, lined up with the page */
.bin-acts{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:12px}
.bin-restore{min-height:34px;padding:0 16px;border-radius:999px;border:1px solid rgba(92,225,255,.32);background:rgba(92,225,255,.06);color:var(--ice);font:inherit;font-size:13.5px;font-weight:500;cursor:pointer;transition:background-color .16s ease-out,border-color .16s ease-out,transform .12s ease-out}
@media (hover:hover){.bin-restore:hover{background:rgba(92,225,255,.12);border-color:rgba(92,225,255,.5)}}
.bin-restore:active{transform:scale(.97)}
.bin-restore:disabled{opacity:.45;cursor:default}
.bin-restore:focus-visible,.bin-del:focus-visible,.bin-all:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:2px}
.bin-del,.bin-all{background:none;border:0;padding:8px 2px;font:inherit;font-size:13px;color:var(--ink-3);cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25)}
.bin-del[data-armed="1"],.bin-all[data-armed="1"]{color:var(--rose,#f29aa8);text-decoration-color:currentColor}
@media (hover:hover){.bin-del:hover,.bin-all:hover{color:var(--ink-1)}}
.bin-foot{display:flex;justify-content:flex-end;padding:0 4px}
/* room to spare (Simple view, a wide page): the two actions sit at the end of the row */
@container (min-width:560px){.bin-row{grid-template-columns:36px minmax(0,1fr) auto;padding:12px 14px}.bin-acts{grid-column:3;gap:18px}}
.bin-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:34px 20px;text-align:center}
.bin-empty b{font-weight:500;font-size:15px;color:var(--ink-1)}
.bin-empty small{font-size:13.5px;color:var(--ink-3)}
.bin-empty-i{width:40px;height:40px;display:grid;place-items:center;color:var(--ink-3);margin-bottom:4px}
.bin-empty-i svg{width:26px;height:26px}
@media (prefers-reduced-motion:reduce){.bin-row{transition:none}}
.cz-owner{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);background:rgba(var(--k-245-198-107,245,198,107),.04);color:var(--ink-2);font-size:13.5px;line-height:1.45;text-decoration:none}
.cz-owner b{color:var(--gold);font-weight:500}
.cz-owner span:first-child{flex:1}
/* a page */
.cz-back{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hair);background:none;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;transition:background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .cz-back{padding:0 10px 0 14px}
.cz-back:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.cz-back:active{transform:scale(.97)}
.cz-back-i,.cz-back-i svg{display:block;width:18px;height:18px}
.cz-title{display:flex;align-items:center;gap:12px;margin:2px 0 0;font:500 22px/1.25 var(--sans);color:var(--ink-1);outline:none}
.sheet-body .cz-h,.cz-h{margin:12px 0 10px;font-size:17px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-1)}
.cz-part{scroll-margin:80px;border-radius:14px}
.cz-part>.cz-h:first-child{margin-top:12px}
.cz-part .pref{margin-top:0}
.cz-layouts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.cz-lo{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03);color:inherit;font:inherit;text-align:start;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cz-lo:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}
.cz-lo:active{transform:scale(.98)}
.cz-lo[aria-checked="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.7);background:rgba(var(--k-245-198-107,245,198,107),.07)}
.cz-lo:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cz-pv{display:block;height:92px;border-radius:10px;overflow:hidden;background:#05060c}
.cz-pv-full{background:#05060c url(/media/full-view.webp) center/cover}
.cz-pv-simple{display:grid;grid-template-columns:32% 1fr;background:#0d0e15}
.cz-pv-simple .sb{display:flex;flex-direction:column;gap:6px;padding:9px 7px;background:#14161f;border-inline-end:1px solid var(--hair)}
.cz-pv-simple .sb i{display:block;height:5px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.16)}
.cz-pv-simple .sb i:nth-child(2){width:70%}.cz-pv-simple .sb i:nth-child(3){width:80%}.cz-pv-simple .sb i:nth-child(4){width:60%}
.cz-pv-simple .ch{display:flex;flex-direction:column;justify-content:flex-end;gap:7px;padding:12px 10px}
.cz-pv-simple .ch i{display:block;height:9px;border-radius:5px;background:rgba(var(--k-246-239-230,246,239,230),.12);width:70%}
.cz-pv-simple .ch i:nth-child(2){width:45%;margin-inline-start:auto;background:rgba(var(--k-245-198-107,245,198,107),.25)}
.cz-pv-simple .ch i:nth-child(3){width:85%}
.cz-lo b{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:500;color:var(--ink-1)}
.cz-lo small{font-size:13px;line-height:1.35;color:var(--ink-3)}
.cz-tick{flex:none;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--gold-ink,#1d1408)}
.cz-tick svg{display:block;width:12px;height:12px;stroke-width:2.4}
.srow-wrap.cz-seg-row{padding:0;border:0}
.cz-seg-row>.srow-main{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.cz-sample{display:flex;align-items:flex-start;gap:10px;margin-top:12px}
.cz-mark{flex:none;width:26px;height:26px;margin-top:6px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff3e6 0 22%,rgba(245,198,107,.85) 34%,rgba(245,198,107,.15) 62%,transparent 70%)}
.cz-sample p{flex:1;margin:0;padding:13px 16px;border-radius:6px 22px 22px 22px;background:#10121f;border:1px solid var(--hair);font-size:17px;line-height:1.45;color:var(--ink-1)}
html[dir=rtl] .cz-sample p{border-radius:22px 6px 22px 22px}
.cz-lang{margin-bottom:10px}
.cz-lang button[lang=ar]{font-family:"Noto Naskh Arabic",var(--sans);font-size:16px}
.cz-chips{gap:8px}
.cz-chips button{min-height:40px;padding:0 15px;font-size:14px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.cz-chips button:active{transform:scale(.97)}
/* Customize › How you write (public/js/writing.js): each learned style as one quiet, readable block on a solid surface */
.wr-intro{margin:2px 0 12px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.wr-list{display:flex;flex-direction:column;gap:10px}
.wr-style{padding:14px 16px 12px;border-radius:16px;background:#0e1019;border:1px solid var(--hair);border-inline-start:2px solid rgba(var(--k-169-139-255,169,139,255),.55)}
.wr-where{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-bottom:8px}
.wr-where b{font-size:14px;font-weight:600;color:var(--ink-1);min-width:0;overflow-wrap:anywhere}
.wr-lang{font-size:12.5px;color:var(--ink-3)}
.wr-sure{margin-inline-start:auto;font-size:12px;line-height:1;padding:5px 9px;border-radius:999px;color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.wr-sure.hi{color:var(--violet);background:rgba(var(--k-169-139-255,169,139,255),.12)}
.wr-sure.mine{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.wr-sum{margin:0;font-size:15.5px;line-height:1.55;color:var(--ink-1);text-wrap:pretty}
.wr-facts{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0}
.wr-facts li{font-size:12.5px;line-height:1.3;padding:5px 10px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2)}
.wr-facts q{color:var(--ink-1);quotes:"“" "”";unicode-bidi:isolate}
.wr-never{margin:8px 0 0;font-size:13px;line-height:1.45;color:var(--ink-2)}
.wr-never>span:first-child{color:var(--rose)}
.wr-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--hair)}
.wr-from{flex:1 1 220px;font-size:12px;line-height:1.45;color:var(--ink-3)}
.wr-from .wr-up{white-space:nowrap}
.wr-style.editing .wr-acts{visibility:hidden}
.wr-from span+span::before{content:", "}
.wr-from span:first-child+span::before{content:" "}
html[dir=rtl] .wr-from span+span::before{content:"، "}
html[dir=rtl] .wr-from span:first-child+span::before{content:" "}
.wr-from span.wr-up{display:block}
html .wr-from span.wr-up.wr-up::before{content:none}
.wr-acts{display:flex;gap:4px;flex:none}
.wr-link{min-height:36px;padding:0 10px;border:0;border-radius:999px;background:none;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .16s var(--e-out,cubic-bezier(.23,1,.32,1))}
.wr-link:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.wr-link:active{transform:scale(.97)}
.wr-link:focus-visible,.wr-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.wr-edit{display:flex;flex-direction:column;gap:8px}
.wr-area,.wr-in{width:100%;box-sizing:border-box;padding:11px 13px;border-radius:12px;border:1px solid var(--hair-2);background:#090a12;color:var(--ink-1);font:inherit;font-size:15px;line-height:1.5}
.wr-area{resize:vertical;min-height:96px}
.wr-area:focus,.wr-in:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.wr-edit-b{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.wr-empty{padding:16px;border-radius:16px;border:1px dashed var(--hair-2);background:#0b0c14}
.wr-empty p{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.wr-row{display:flex;align-items:center;gap:8px;margin:12px 0 8px}
.wr-rules{list-style:none;margin:0 0 10px;padding:0;border-radius:14px;border:1px solid var(--hair);background:#0e1019}
.wr-rules li{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 6px 6px 14px;border-top:1px solid var(--hair)}
html[dir=rtl] .wr-rules li{padding:6px 14px 6px 6px}
.wr-rules li:first-child{border-top:0}
.wr-rules b{flex:none;font-size:12.5px;font-weight:600;color:var(--mint)}
.wr-rules b.no{color:var(--rose)}
.wr-rules span{flex:1;min-width:0;font-size:14.5px;line-height:1.4;color:var(--ink-1);overflow-wrap:anywhere}
.wr-x{flex:none;width:36px;height:36px;border:0;border-radius:50%;background:none;color:var(--ink-3);font-size:20px;line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.wr-x:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.wr-x:active{transform:scale(.94)}
.wr-add{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;margin-top:10px}
.wr-kinds{flex-wrap:nowrap;gap:4px}
.wr-kinds button{min-height:40px;padding:0 13px;font-size:13.5px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.wr-kinds button[aria-checked="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.wr-kinds button:active{transform:scale(.97)}
.wr-in{min-height:42px;padding:8px 13px}
.wr-priv{margin-top:16px}
@media (max-width:560px){.wr-add{grid-template-columns:1fr auto}.wr-kinds{grid-column:1/-1}.wr-style{padding:13px 14px 10px}.wr-foot{flex-wrap:wrap}}
@media (prefers-reduced-motion:reduce){.wr-link,.wr-x,.wr-kinds button{transition:none}}
.cz-chipset{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.cz-chip{display:inline-flex;align-items:center;gap:4px;min-height:40px;padding:0 6px 0 15px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);font-size:14.5px;color:var(--ink-1)}
html[dir=rtl] .cz-chip{padding:0 15px 0 6px}
.cz-chip:not(:has(.cz-chip-x)){padding:0 15px}
.cz-chip-x{position:relative;width:28px;height:28px;border:0;border-radius:50%;background:none;color:var(--ink-3);display:grid;place-items:center;cursor:pointer}
.cz-chip-x::before{content:"";position:absolute;inset:-6px}
.cz-chip-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.cz-chip-x span,.cz-chip-x svg{display:block;width:14px;height:14px}
.cz-chip-add{padding:0 15px;border-style:dashed;color:var(--gold);background:none;cursor:pointer;font:inherit;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.cz-chip-add:active{transform:scale(.97)}
.cz-chip-in{min-height:40px;width:180px;padding:0 15px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-246-239-230,246,239,230),.05);color:var(--ink-1);font:inherit;font-size:14.5px;outline:none}
.cz-wake{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--hair)}
/* More, at the foot of a page: one quiet row that opens in place */
.cz-more{margin-top:14px;border-top:1px solid var(--hair)}
.cz-more>summary{display:flex;align-items:center;gap:12px;padding:14px 4px;list-style:none;cursor:pointer;border-radius:12px}
.cz-more>summary::-webkit-details-marker{display:none}
.cz-more>summary .cz-main>b{font-size:15px}
.cz-down svg{transition:transform .2s cubic-bezier(.23,1,.32,1)}
.cz-more[open]>summary .cz-down svg,.sec-foot[open]>summary .sec-foot-go svg{transform:rotate(180deg)}
.cz-more-b{padding:0 0 8px;animation:cz-in .2s cubic-bezier(.23,1,.32,1)}
@keyframes cz-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.cz-reset{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:22px;padding-top:16px;border-top:1px solid var(--hair)}
.cz-reset-b{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 15px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-1);font:inherit;font-size:14px;cursor:pointer;transition:background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cz-reset-b:hover:not(:disabled){background:rgba(var(--k-246-239-230,246,239,230),.05)}
.cz-reset-b:active:not(:disabled){transform:scale(.97)}
.cz-reset-b:disabled{opacity:.45;cursor:default}
.cz-reset-i svg{display:block;width:16px;height:16px}
.cz-reset small{font-size:13px;color:var(--ink-3)}
/* going back to the defaults is reversible, not a removal: the question asks in gold, and the "you can undo" line steps aside while it asks */
.cz-reset .calm-confirm{font-size:14px;gap:10px 8px}
.cz-reset .calm-confirm .cc-q{flex:1 1 100%;color:var(--ink-2)}
.cz-reset .calm-confirm .cc-yes{background:rgba(var(--k-245-198-107,245,198,107),.14);color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.4)}
.cz-reset:has(.calm-confirm) small{display:none}
/* search results */
.cz-count{margin:4px 2px 10px;font-size:13.5px;color:var(--ink-3)}
.cz-results mark{background:none;color:var(--gold);font-weight:inherit}
.cz-hit .srow-sw{width:48px;height:28px}
.cz-hit .srow-sw i{width:22px;height:22px}
.cz-hit .srow-sw[aria-checked="true"] i{transform:translateX(20px)}
html[dir=rtl] .cz-hit .srow-sw[aria-checked="true"] i{transform:translateX(-20px)}
.cz-hit .srow-sw[aria-checked="true"]{background:rgba(var(--k-245-198-107,245,198,107),.72)}
.cz-val{flex:none;font-size:14px;color:var(--ink-2)}
.cz-askline{display:flex;align-items:center;gap:12px;margin-top:16px;padding:0 4px}
.cz-askline p{flex:1;margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-3)}
.cz-ask{flex:none;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.6);background:none;color:var(--gold);font:inherit;font-size:14px;cursor:pointer;transition:background-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cz-ask:hover{background:rgba(var(--k-245-198-107,245,198,107),.07)}
.cz-ask:active{transform:scale(.97)}
.cz-ask-i svg{display:block;width:16px;height:16px}
.cz-none{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:18px 4px}
.cz-none p{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.cz-none b{color:var(--ink-1);font-weight:500}
/* the row she came for, lit once */
.cz-flash{position:relative}
.cz-flash::after{content:"";position:absolute;inset:-6px;border-radius:16px;box-shadow:inset 0 0 0 1.5px rgba(var(--k-245-198-107,245,198,107),.85),0 0 18px rgba(var(--k-245-198-107,245,198,107),.12);pointer-events:none;opacity:0;animation:cz-flash 1.3s cubic-bezier(.23,1,.32,1) forwards}
.cz-row.cz-flash::after,summary.cz-flash::after{inset:0}
@keyframes cz-flash{0%{opacity:0}12%{opacity:1}54%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.cz-flash::after{animation:none;opacity:1}.cz-more-b{animation:none}.cz-down svg{transition:none}}
/* a section's own settings, at its foot (Business settings, Hidden people, Keep it current) */
.sec-foot{scroll-margin-top:96px;margin:26px 0 10px;border-radius:18px;background:var(--sf-0);border:1px solid var(--hair);overflow:hidden}
.sec-foot>summary{display:flex;align-items:center;gap:14px;min-height:64px;padding:11px 16px;list-style:none;cursor:pointer;position:relative;transition:background-color .18s ease}
.sec-foot>summary::-webkit-details-marker{display:none}
.sec-foot>summary:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.sec-foot-ic{flex:none;width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.05)}
.sec-foot-ic svg{display:block;width:20px;height:20px}
.sec-foot-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.sec-foot-t b{font-weight:500;font-size:15.5px;color:var(--ink-1)}
.sec-foot-t small{font-size:13.5px;color:var(--ink-3)}
.sec-foot-go,.sec-foot-go svg{display:block;width:16px;height:16px;color:var(--ink-3)}
.sec-foot-go svg{transition:transform .2s cubic-bezier(.23,1,.32,1)}
.sec-foot-b{padding:4px 16px 18px;border-top:1px solid var(--hair);animation:cz-in .2s cubic-bezier(.23,1,.32,1)}
.tag{font-size:11px;letter-spacing:.06em;padding:3px 8px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-3);white-space:nowrap;flex:none}
.tag.live{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.35)}
.tag.import{color:var(--ice);border-color:rgba(var(--k-92-225-255,92,225,255),.3)}
.tag.warn{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
.link{font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}
.link:hover{color:var(--ink-1)}
.add{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
select option{background:var(--h-12131f,#12131f);color:var(--h-f6efe6,#f6efe6)}
.add select{background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);padding:9px 12px;font:inherit;font-size:13px}
.btn{padding:10px 16px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-weight:600;font-size:13px}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.empty{font-size:13.5px;color:var(--ink-3);padding:14px 0;line-height:1.5}
/* agents: her team. One section per agent, a small constellation in the colour of the world it serves */
.ag-intro{font-size:13px;color:var(--ink-3);line-height:1.55;margin:10px 0 4px}
.ag-agent{position:relative;padding:20px 0 18px;border-bottom:1px solid var(--hair)}
.ag-head{display:flex;align-items:center;gap:12px}
.ag-sigil{width:38px;height:36px;flex:none;overflow:visible;filter:drop-shadow(0 0 6px rgba(var(--c),.35))}
.ag-sigil circle{fill:rgba(var(--c),.92);transform-box:fill-box;transform-origin:center}
.ag-sigil.busy circle{animation:agThink 1.3s var(--ease) infinite}
@keyframes agThink{0%,100%{opacity:.35;transform:scale(.8)}40%{opacity:1;transform:scale(1.25)}}
.ag-agent.paused .ag-sigil{opacity:.35;filter:none}
.ag-id{flex:1;min-width:0}
.ag-name{font-family:var(--display);font-size:20px;line-height:1.15;color:var(--ink-1)}
.ag-meta{font-size:12px;color:var(--ink-3);margin-top:3px}
.ag-body{padding-left:50px}
/* Katie, Oct 16: a whole paragraph in the display serif read heavy (on Windows the serif falls back to a bold-looking
   Palatino). Agents' summaries are reading text, so they're set in the sans, a touch larger than the details under them. */
.ag-mission,.ag-headline{font-family:var(--sans);font-size:15.5px;font-weight:500;line-height:1.55;letter-spacing:-.003em;color:var(--ink-1);margin:12px 0 8px;text-wrap:pretty}
.ag-headline.muted{color:var(--ink-2)}
.ag-does{margin:0 0 6px;padding-left:18px;font-size:13px;color:var(--ink-2);line-height:1.6}
.ag-pri{list-style:none;counter-reset:pri;margin:6px 0 10px;padding:0}
.ag-pri li{counter-increment:pri;position:relative;padding:5px 0 5px 24px;font-size:13.5px;line-height:1.4}
.ag-pri li::before{content:counter(pri);position:absolute;left:0;top:6px;font-size:11px;color:rgba(var(--c),.95);font-variant-numeric:tabular-nums}
.ag-pri b{font-weight:500;color:var(--ink-1);display:block}
.ag-pri span{color:var(--ink-3);font-size:12.5px}
.ag-kind{font-size:11px;letter-spacing:.12em;color:rgba(var(--c),.95);flex:none}
.ag-loops{margin:4px 0 10px}.ag-loops p{margin:4px 0 0;font-size:13px;color:var(--ink-2);line-height:1.45}
.ag-items{margin-top:4px}
.ag-item{padding:12px 0;border-top:1px solid var(--hair)}
.ag-item.settled{opacity:.62}
.ag-it-head{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.ag-it-title{font-size:14px;color:var(--ink-1);flex:1;min-width:0}
.ag-item .s{font-size:12.5px;color:var(--ink-3);margin-top:3px;line-height:1.45}
.ag-var{font-size:11px;width:17px;height:17px;border-radius:50%;display:inline-grid;place-items:center;border:1px solid var(--hair-2);color:var(--ink-2);flex:none}
.ag-done{font-size:12.5px;color:var(--mint);margin-top:6px}
.ag-draft{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.ag-to{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--ink-3)}
.ag-draft input,.ag-draft textarea,.ag-set input[type=url],.ag-set input[type=text],.ag-set textarea{width:100%;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:14px;line-height:1.5;padding:10px 12px;outline:0;box-sizing:border-box}
.ag-draft textarea,.ag-set textarea{resize:vertical}
.ag-draft input:focus,.ag-draft textarea:focus,.ag-set input:focus,.ag-set textarea:focus{border-color:rgba(var(--c),.55)}
.ag-draft blockquote{margin:0;padding:2px 0 2px 12px;border-left:1px solid rgba(var(--c),.5);font-size:13px;color:var(--ink-2)}
.ag-fine{font-size:11.5px;color:var(--ink-3);line-height:1.5;margin:6px 0 0}
.ag-week{font-size:13.5px;line-height:1.5;color:var(--ink-2);margin:0 0 10px}
.ag-checkin{margin:8px 0 2px}
.ag-q{margin:4px 0 10px;padding:0 0 0 18px;font-size:13.5px;line-height:1.45;color:var(--ink-1)}
.ag-q li{padding:3px 0}.ag-q li::marker{color:rgba(var(--c),.9);font-size:11px}
.ag-ci-form textarea{width:100%;min-height:96px;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:14px;line-height:1.5;padding:10px 12px;outline:0;box-sizing:border-box;resize:vertical}
.ag-ci-form textarea:focus{border-color:rgba(var(--c),.55)}
.ag-ci-form .add{align-items:center;flex-wrap:wrap}
.ag-points{margin:6px 0 8px;padding:0 0 0 16px;font-size:13px;line-height:1.45;color:var(--ink-1)}
.ag-points li{padding:2px 0}
.ag-winlist{list-style:none;margin:6px 0 4px;padding:0}
.ag-winlist li{padding:7px 0;border-top:1px solid var(--hair)}
.ag-winlist li:first-child{border-top:0}
.ag-winlist b{display:block;font-weight:500;font-size:13.5px;color:var(--ink-1);line-height:1.4}
.ag-winlist span{font-size:12px;color:var(--ink-3)}
.ag-note{font-size:12px;color:var(--gold);opacity:.85;line-height:1.5;margin:8px 0 0}
.ag-handled{margin-top:6px}.ag-handled summary{cursor:pointer;font-size:12px;color:var(--ink-3);padding:6px 0}
.ag-ab{display:flex;flex-direction:column;gap:5px;margin-top:14px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ag-ab b{color:var(--ink-1);font-weight:600}
.ag-foot{padding-left:50px;margin-top:14px}
.ag-set{margin:14px 0 0 50px;display:flex;flex-direction:column;gap:14px;padding:14px 0 4px;border-top:1px solid var(--hair)}
.ag-set label{display:flex;flex-direction:column;gap:6px}
.ag-set label>span{font-size:12px;color:var(--ink-2);letter-spacing:.02em}
.ag-set small{font-size:11.5px;color:var(--ink-3);line-height:1.45}
.ag-wait{display:flex;flex-direction:column;gap:4px;margin:2px 0 12px}.ag-wait small{color:var(--ink-3);font-size:12px;line-height:1.45}
.ag-accts{display:flex;flex-direction:column;gap:6px}
.ag-set .ag-chk{flex-direction:row;align-items:center;gap:8px;font-size:13px;color:var(--ink-1)}
.ag-chk input{accent-color:var(--gold)}
.ag-next .t{color:var(--ink-2)}
.ag-tags{margin:0;font-size:12.5px;color:rgba(var(--c),.9)}
/* a visual from the Graphic Designer: the picture first, the prompt tucked away */
.ag-pic{margin:8px 0 6px;max-width:420px}.ag-pic img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--hair-2);background:var(--h-0a0b14,#0a0b14)}.ag-pic figcaption{margin:6px 0 0;font-size:12px;color:var(--ink-3)}.ag-pic .link{font-size:12px}
/* Marketing's studio under a draft: into Canva, into a HeyGen video */
.ag-studio{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding-top:10px;border-top:1px solid rgba(var(--k-246-239-230,246,239,230),.07)}
.ag-st{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.ag-st small{font-size:12px;color:var(--ink-3)}
.ag-vid{width:100%}.ag-vid-p{display:block;width:min(240px,100%);aspect-ratio:9/16;border-radius:12px;border:1px solid var(--hair-2);background:var(--h-0a0b14,#0a0b14)}
.ag-vid-wait{color:var(--gold)}
.ag-avatars{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;width:100%;max-height:300px;overflow:auto}
.ag-av{display:grid;gap:4px;padding:6px;border-radius:12px;border:1px solid var(--hair);text-align:center;font-size:11.5px;color:var(--ink-2);transition:border-color .2s,transform .16s var(--ease)}
.ag-av:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}.ag-av:active{transform:scale(.97)}
.ag-av img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;background:var(--h-0a0b14,#0a0b14)}
.ag-fine.bad{color:var(--h-ffb4a8,#ffb4a8)}
.ag-design{display:flex;flex-direction:column;gap:8px}.ag-design input[type=text]{width:100%;max-width:420px}
.ag-prompt{font-size:12.5px;color:var(--ink-3)}.ag-prompt summary{cursor:pointer;color:var(--ink-2)}.ag-prompt p{margin:6px 0 0;line-height:1.5;color:var(--ink-3);max-width:60ch}
.ag-visual{padding:10px 12px;border-left:1px solid rgba(var(--c),.45)}.ag-visual p{margin:4px 0 0;font-size:13px;color:var(--ink-2);line-height:1.5;white-space:pre-line}
.ag-prospect{margin-top:6px}.ag-prospect p{margin:4px 0 0;font-size:13px;color:var(--ink-2);line-height:1.45}.ag-prospect b{color:var(--ink-1);font-weight:500}
.ag-links{display:flex;gap:14px}.ag-links a{font-size:12.5px;color:rgba(var(--c),.95);text-decoration:none;border-bottom:1px solid rgba(var(--c),.3)}
.ag-biz{margin:14px 0 4px;padding:14px 0 6px;border-bottom:1px solid var(--hair);--c:245,198,107}.ag-biz .ag-kind{color:var(--gold)}
.ag-biz-lede{margin:6px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-1)}
.ag-set.ag-biz-form{margin-left:0;border-top:0;padding-top:10px;--c:245,198,107}
/* Fill it in with AI: a prompt to copy out, the answer pasted back */
.ag-ai{border:1px solid rgba(var(--c),.28);border-radius:16px;padding:0;background:rgba(var(--c),.04)}
.ag-ai>summary{list-style:none;cursor:pointer;display:grid;gap:3px;padding:12px 14px;border-radius:16px}
.ag-ai>summary::-webkit-details-marker{display:none}
.ag-ai>summary b{font-weight:500;font-size:14px;color:var(--ink-1)}
.ag-ai>summary b::after{content:' ›';color:rgba(var(--c),.9)}
.ag-ai[open]>summary b::after{content:' ⌄'}
.ag-ai>summary small{font-size:12px}
.ag-ai[open]{padding-bottom:14px}
.ag-ai>:not(summary){margin:0 14px}
.ag-ai-steps{margin:2px 14px 10px;padding-left:18px;display:grid;gap:4px;font-size:12.5px;color:var(--ink-2);line-height:1.5}
.ag-ai-row{display:flex;gap:8px;margin:8px 14px}
.ag-ai textarea{width:calc(100% - 28px);margin-top:8px}
.ag-ai-prompt{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.5;color:var(--ink-2);opacity:.9}
/* Brand & offers, and the podcast: one page the business team reads */
.ag-brand{margin:10px 0 0;padding:16px 0 0;border:0;border-top:1px solid var(--hair);display:grid;gap:14px;min-width:0}
.ag-brand legend,.ag-pod h4{float:left;width:100%;margin:0;padding:0;font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1)}
.ag-brand-lede{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2);max-width:62ch}
.ag-pod{margin:22px 0 0;padding:16px 0 0;border-top:1px solid var(--hair);display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0;--c:245,198,107}
.ag-pod-show>*,.ag-pod-list li>*{min-width:0}.ag-pod-show input{width:100%}
.ag-pod input[type=text],.ag-pod input[type=url],.ag-pod input[type=date],.ag-pod input[type=time],.ag-pod textarea{background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:14px;line-height:1.45;padding:9px 12px;outline:0;box-sizing:border-box;color-scheme:dark}
.ag-pod input:focus,.ag-pod textarea:focus{border-color:rgba(var(--c),.55)}
.ag-pod textarea{width:100%;resize:vertical}
.ag-pod-show{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;align-items:center}
.ag-pod-time{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);white-space:nowrap}
.ag-pod-list{list-style:none;margin:0;padding:0;display:grid}
.ag-pod-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--hair)}
.ag-pod-list li:first-child{border-top:0}
.ag-pod-list input[type=date]{padding:6px 8px;font-size:13px;font-variant-numeric:tabular-nums;justify-self:start;width:auto}
.ag-pod-t{min-width:0;display:grid;gap:2px}.ag-pod-t b{font-weight:500;font-size:14px;color:var(--ink-1);line-height:1.35}
.ag-pod-t small{font-size:12px;color:var(--ink-3);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ag-pod-x{font-size:12px;color:var(--ink-3)}.ag-pod-x:hover{color:var(--rose)}
.ag-pod-add{display:grid;gap:8px}
@media (max-width:620px){.ag-pod-show{grid-template-columns:minmax(0,1fr)}.ag-pod-list li{grid-template-columns:1fr auto;row-gap:6px}.ag-pod-list li .ag-pod-t{grid-column:1/-1;grid-row:2}}
.ag-tie{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0 2px;font-size:12.5px;color:var(--ink-2);line-height:1.4}
.ag-tie span{display:inline-flex;gap:6px;align-items:baseline;min-width:0}
.ag-tie b{font-weight:500;font-size:11px;letter-spacing:.06em;color:rgba(var(--k-245-198-107,245,198,107),.92)}
.ag-ctx{display:block}
.fb-form{display:flex;flex-direction:column;gap:10px;margin:6px 0 4px}.fb-form textarea{background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:14px;padding:10px 12px;resize:vertical;min-height:84px}.fb-form textarea:focus-visible{outline:1.5px solid var(--gold);outline-offset:1px}.fb-form .add{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fb-form .add small{flex:1 1 200px}.fb-form .add a{color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}.fb-kinds button{min-height:32px}
.ld-fine{max-width:62ch;margin:22px auto 8px;padding:0 16px;font-size:12px;line-height:1.55;color:var(--ink-3);text-align:center}
.ag-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ag-serve>summary{list-style:none;cursor:pointer;font-size:13px;color:var(--ink-2);padding:6px 0;border-radius:8px}
.ag-serve>summary::-webkit-details-marker{display:none}
.ag-serve>summary::after{content:' ›';color:rgba(var(--c),.9)}
.ag-serve[open]>summary::after{content:' ⌄'}
.ag-serve>summary:focus-visible{outline:2px solid rgba(var(--c),.7);outline-offset:2px}
.ag-serve>label{margin-top:6px}
@media (max-width:520px){.ag-two{grid-template-columns:1fr}}
.ag-fix{margin-top:8px;padding:10px 12px;border-left:1px solid rgba(var(--c),.45)}.ag-fix p{margin:4px 0 0;font-size:13px;color:var(--ink-1);line-height:1.55;white-space:pre-line}
.ag-health{display:flex;flex-direction:column;gap:6px;margin:4px 0 12px}
.ag-hl{display:grid;grid-template-columns:6px 1fr;align-items:baseline;column-gap:10px;font-size:12.5px;color:var(--ink-3);line-height:1.5}
.ag-hl i{flex:none;width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 6px rgba(var(--k-111-242-196,111,242,196),.55);transform:translateY(-1px)}
.ag-hl b{font-weight:500;color:var(--ink-1)}
.ag-hl.warn i{background:var(--gold);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.6)}
.ag-hl.bad i{background:var(--h-ff7a6b,#ff7a6b);box-shadow:0 0 6px rgba(var(--k-255-122-107,255,122,107),.6)}.ag-hl.bad span{color:var(--h-ffb3a8,#ffb3a8)}
.tag.dim{opacity:.6}
.ag-accts .s{font-size:12.5px;color:var(--ink-3);line-height:1.45}
.ag-money-total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:4px}
.ag-money-total span{font-size:12px;color:var(--ink-3);letter-spacing:.02em}.ag-money-total b{font-family:var(--display);font-weight:400;font-size:22px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.ag-money .ag-hl span{font-variant-numeric:tabular-nums}
.ag-hl.dim i{background:var(--ink-3);box-shadow:none}
a.btn-sm{text-decoration:none;display:inline-flex;align-items:center}
.pref.pref-check{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:10px;cursor:pointer}.pref-check input{accent-color:var(--gold);width:16px;height:16px}
.ag-mode{margin:14px 0 4px;padding:14px 0 16px;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);--c:245,198,107}
.ag-mode .ag-kind{color:var(--ink-3)}
.ag-mode-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ag-mode-opt{display:flex;gap:10px;align-items:flex-start;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid var(--hair-2);color:var(--ink-2);transition:border-color .2s,background .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.ag-mode-opt:active{transform:scale(.98)}
.ag-mode-opt span{display:flex;flex-direction:column;gap:2px}
.ag-mode-opt b{font-size:14px;font-weight:600;color:var(--ink-1)}
.ag-mode-opt small{font-size:12px;color:var(--ink-3)}
.ag-mode-dot{flex:none;width:14px;height:14px;margin-top:2px;border-radius:50%;border:1.5px solid var(--hair-2);position:relative}
.ag-mode-opt.on{border-color:rgba(var(--k-111-242-196,111,242,196),.55);background:rgba(var(--k-111-242-196,111,242,196),.06)}
.ag-mode-opt.on .ag-mode-dot{border-color:var(--mint)}.ag-mode-opt.on .ag-mode-dot::after{content:"";position:absolute;inset:2.5px;border-radius:50%;background:var(--mint)}
.ag-mode-opt.auto.on{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.07)}
.ag-mode-opt.auto.on .ag-mode-dot{border-color:var(--gold)}.ag-mode-opt.auto.on .ag-mode-dot::after{background:var(--gold)}
.ag-mode-sum{margin:10px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-2)}
/* All agents (public/js/agentcalm.js): every agent at once, and the noisiest first */
.ac{margin:14px 0 4px;padding:16px 0 6px;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);--c:169,139,255}
.ac-h h4{margin:0;font-size:16px;font-weight:600;color:var(--ink-1)}
.ac-sub{margin:4px 0 4px;font-size:13.5px;line-height:1.5;color:var(--ink-3)}
.ac-row{display:grid;grid-template-columns:minmax(150px,200px) minmax(0,1fr);gap:8px 20px;align-items:start;padding:14px 0;border-top:1px solid var(--hair)}
.ac-row:first-of-type{border-top:0}
.ac-row-h{display:flex;flex-direction:column;gap:3px;min-width:0}
.ac-row-h b{font-size:14px;font-weight:600;color:var(--ink-1)}
.ac-row-h small{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ac-pills{display:flex;flex-wrap:wrap;gap:6px}
.ac-pill{min-height:40px;padding:0 15px;border-radius:999px;border:1px solid var(--hair-2);font-size:14px;color:var(--ink-2);font-variant-numeric:tabular-nums;transition:border-color .16s ease-out,background-color .16s ease-out,color .16s ease-out,transform .14s cubic-bezier(.23,1,.32,1)}
.ac-pill:hover{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.ac-pill:active{transform:scale(.97)}
.ac-pill.on{color:var(--ink-1);border-color:rgba(var(--c),.6);background:rgba(var(--c),.12)}
.ac-pill:disabled{opacity:.5}
.ac-ways{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ac-ways .ag-mode-opt.on{border-color:rgba(var(--c),.6);background:rgba(var(--c),.08)}
.ac-ways .ag-mode-opt.on .ag-mode-dot{border-color:var(--violet)}.ac-ways .ag-mode-opt.on .ag-mode-dot::after{background:var(--violet)}
.ac-pause{display:flex;align-items:center;min-height:40px}
.ac-pause .ag-alloff{min-height:40px;padding:0 16px}
.ac-noise{padding:14px 0 8px;border-top:1px solid var(--hair)}
.ac-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column}
.ac-item{display:flex;align-items:center;gap:14px;padding:10px 0;border-top:1px solid var(--hair)}
.ac-item:first-child{border-top:0}
.ac-item.off{opacity:.62}
.ac-who{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;row-gap:6px;align-items:baseline}
.ac-who b{font-size:14.5px;font-weight:500;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-who small{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.ac-bar{grid-column:1/-1;display:block;height:4px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.06);overflow:hidden}
.ac-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,rgba(var(--c),.55),rgba(var(--c),.95));transform-origin:left center}
[dir="rtl"] .ac-bar i{transform-origin:right center}
.ac-acts{flex:none;display:flex;align-items:center;gap:10px}
.ac-go{min-height:40px;padding:0 15px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);color:var(--gold);font-size:14px;transition:background-color .15s ease-out,transform .12s ease-out}
.ac-go:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}.ac-go:active{transform:scale(.97)}.ac-go:disabled{opacity:.5}
.ac-calm{font-size:13px;color:var(--mint);padding:0 6px}
.ac-own{min-height:40px;font-size:13px;color:var(--ink-3)}.ac-own:hover{color:var(--ink-1)}
.ac-empty{margin:8px 0 0;font-size:14px;color:var(--ink-3)}
.ac-more{min-height:44px;padding:0;font-size:14px;color:var(--ink-2)}.ac-more:hover{color:var(--ink-1)}
.ac-pill:focus-visible,.ac-go:focus-visible,.ac-own:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
@media (max-width:760px){.ac-row{grid-template-columns:minmax(0,1fr)}.ac-ways{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.ac-item{flex-wrap:wrap;gap:8px}.ac-acts{width:100%;justify-content:flex-end}}
@media (prefers-reduced-motion:reduce){.ac-pill,.ac-go{transition:none}}
.ag-actline{display:flex;align-items:center;gap:8px;margin:10px 0 0 50px;font-size:12px;color:var(--ink-3)}
.ag-actline i{flex:none;width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 6px rgba(var(--k-111-242-196,111,242,196),.6)}
.ag-actline.auto{color:var(--gold)}.ag-actline.auto i{background:var(--gold);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.7)}
@media (max-width:760px){.ag-actline{margin-left:0}}
.ag-seg{display:flex;gap:4px;margin:10px 0 6px;padding:3px;border:1px solid var(--hair);border-radius:999px;width:max-content}
.ag-seg button{padding:7px 14px;border-radius:999px;font-size:12.5px;color:var(--ink-3)}
.ag-seg button[aria-selected="true"]{background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-1)}
.ag-loop{display:flex;gap:16px;align-items:center;justify-content:space-between;margin:14px 0 4px;padding:14px 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.ag-loop b{font-size:13.5px;font-weight:500;color:var(--ink-1)}
.ag-loop p{margin:4px 0 0;font-size:12px;color:var(--ink-3);line-height:1.5}
.ag-loop.on b{color:var(--gold)}
.ag-switch{flex:none;width:44px;height:26px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-255-255-255,255,255,255),.04);position:relative;transition:background .3s var(--ease),border-color .3s}
.ag-switch i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--ink-2);transition:transform .35s var(--ease),background .3s}
.ag-switch.on{background:rgba(var(--k-245-198-107,245,198,107),.22);border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.ag-switch.on i{transform:translateX(18px);background:var(--gold)}
.ag-agent.lead .ag-name{font-size:23px}
.ag-agent.lead .ag-sigil{width:44px;height:42px}
.ag-headline.small{font-size:14.5px;font-weight:400;color:var(--ink-2)}
.ag-sub{display:block;margin:16px 0 4px}
.ag-esc{border-top:1px solid var(--hair);padding-top:10px;margin-top:4px}
.ag-esc .ag-item{border-top:0;padding-top:6px}
.ag-esc-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12.5px;color:var(--ink-2);line-height:1.45}
.ag-from{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--hair-2);border-radius:999px;padding:2px 8px}
.ag-held{margin-top:8px;font-size:12.5px;color:var(--gold);line-height:1.45}.ag-held b{font-weight:600}
.ag-done.auto{color:var(--gold)}
.ag-auto{display:flex;flex-direction:column;gap:10px}
.ag-auto .ag-chk{align-items:flex-start}
.ag-auto .ag-chk span{display:flex;flex-direction:column;gap:2px}
.ag-auto .ag-chk b{font-weight:500;font-size:13px;color:var(--ink-1)}
.ag-auto .ag-chk input{margin-top:3px}
.ag-risk-high b::after{content:"  · higher risk";color:var(--gold);font-weight:400;font-size:11px}
.ag-set select{background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:8px 10px;width:max-content;max-width:100%}
.ag-act .tchips{margin:12px 0 4px;flex-wrap:wrap}
.ag-ev{display:grid;grid-template-columns:62px 10px 1fr;gap:10px;align-items:start;padding:9px 0;border-bottom:1px solid var(--hair)}
.ag-ev time{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;padding-top:1px}
.ag-dot{width:7px;height:7px;border-radius:50%;margin-top:5px;background:rgba(var(--c),.9);box-shadow:0 0 8px rgba(var(--c),.5)}
.ag-ev-main{font-size:13px;color:var(--ink-1);line-height:1.45;min-width:0}
.ag-ev-who{display:flex;gap:8px;align-items:center;font-size:11.5px;color:var(--ink-3);margin-bottom:2px}
.ag-who{font-size:11px;letter-spacing:.08em;padding:1px 6px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2)}
.ag-who.warn{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
.ag-who.coo{color:rgb(245,200,150);border-color:rgba(var(--k-245-200-150,245,200,150),.4)}
.ag-ev.failed .ag-ev-main{color:var(--rose)}
/* what went out: the report, then every action with its exact content */
.ag-out .tchips{margin:12px 0 14px;flex-wrap:wrap}
.ag-out-rep{padding:14px 16px 12px;border:1px solid var(--hair-2);border-radius:14px;background:rgba(var(--k-255-255-255,255,255,255),.025);margin-bottom:16px}
.ag-out-n{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:10px}
.ag-out-stat b{display:block;font-size:22px;font-weight:500;color:var(--ink-1);letter-spacing:-.01em;line-height:1.1}
.ag-out-stat small{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.ag-out-stat.warn b{color:var(--gold)}.ag-out-stat.bad b{color:var(--rose)}.ag-out-stat.pub b{color:rgb(170,210,255)}
.ag-out-lede{font-size:13.5px;line-height:1.5;color:var(--ink-2);margin:0 0 10px}
.ag-out-perm{font-size:12.5px;color:var(--ink-2);border-top:1px solid var(--hair);padding-top:10px}
.ag-out-perm b{display:block;font-weight:500;color:var(--ink-1);margin-bottom:4px}
.ag-out-perm ul{margin:0;padding:0;list-style:none}.ag-out-perm li{padding:3px 0}.ag-out-perm li span{color:var(--ink-1)}.ag-out-perm li .ag-link{margin-left:10px}
.ag-out-perm small{color:var(--ink-3)}
.ag-out-it{position:relative;padding:12px 14px 12px 18px;border:1px solid var(--hair);border-radius:12px;margin:0 0 10px;background:rgba(var(--k-255-255-255,255,255,255),.015)}
.ag-out-it::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.35)}
.ag-out-it.you::before{background:rgba(var(--k-245-198-107,245,198,107),.75)}.ag-out-it.autonomous::before{background:var(--gold);box-shadow:0 0 10px rgba(var(--k-245-198-107,245,198,107),.5)}.ag-out-it.failed::before{background:var(--rose)}
.ag-out-h{display:flex;flex-direction:column;gap:3px}
.ag-out-what{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px;color:var(--ink-1)}.ag-out-what b{font-weight:500}
.ag-out-meta{font-size:11.5px;color:var(--ink-3)}
.ag-who.you{color:rgb(190,230,200);border-color:rgba(var(--k-190-230-200,190,230,200),.4)}.ag-who.bad{color:var(--rose);border-color:rgba(var(--k-255-120-140,255,120,140),.45)}.ag-who.pub{color:rgb(170,210,255);border-color:rgba(var(--k-170-210-255,170,210,255),.45)}
.ag-out-why{font-size:12.5px;color:var(--gold);margin:8px 0 0}.ag-out-why.bad{color:var(--rose)}
.ag-out-to{font-size:12.5px;color:var(--ink-2);margin:8px 0 0}.ag-out-to span{color:var(--ink-3)}
.ag-out-subj{font-size:13.5px;font-weight:500;color:var(--ink-1);margin:8px 0 0}
.ag-out-body{font:inherit;font-size:13px;line-height:1.5;color:var(--ink-1);white-space:pre-wrap;word-break:break-word;margin:8px 0 0;padding:10px 12px;border-radius:10px;background:rgba(var(--k-0-0-0,0,0,0),.22);border:1px solid var(--hair);max-height:280px;overflow:auto}
.ag-out-sum{font-size:13px;color:var(--ink-1);margin:8px 0 0}
.ag-out-cons{font-size:12px;color:var(--ink-3);margin:6px 0 0}
.ag-out-f{display:flex;gap:14px;align-items:center;margin-top:8px;font-size:12.5px}.ag-out-f small{color:var(--ink-3)}
.ag-link{background:none;border:0;padding:0;font:inherit;font-size:12.5px;color:var(--gold);cursor:pointer;text-decoration:none}.ag-link:hover{text-decoration:underline}
/* spending limits (settings) */
.spend-row{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--hair)}
.spend-all{padding:4px 0 16px;margin-bottom:6px;border-bottom:1px solid var(--hair-2)}.spend-all b{font-size:15px}
.spend-row .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.spend-row b{font-weight:500;font-size:13.5px;color:var(--ink-1)}.spend-row small{font-size:12px;color:var(--ink-3);line-height:1.45}
.spend-bar{display:block;height:3px;border-radius:3px;background:rgba(var(--k-255-255-255,255,255,255),.08);margin:4px 0 2px;overflow:hidden}.spend-bar i{display:block;height:100%;background:var(--gold);border-radius:3px}
.spend-row.warn .spend-bar i{background:var(--gold)}.spend-row.bad .spend-bar i{background:var(--rose)}.spend-row.off .spend-bar i{width:0!important}
.spend-row.off b::after{content:"  · off";font-weight:400;color:var(--rose);font-size:11px}
.spend-sub{color:var(--ink-2)!important}
.spend-cap{display:flex;flex-direction:column;gap:3px;align-items:flex-end;font-size:11px;letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase}
.spend-cap input{width:92px;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:14px;padding:7px 10px;text-align:right}
.spend-never{margin-top:12px;font-size:12.5px;color:var(--ink-2)}.spend-never b{display:block;font-weight:500;color:var(--ink-1);margin-bottom:4px}.spend-never p{margin:0 0 6px;line-height:1.45}
.ag .btn-sm{border-radius:999px;transition:border-color .2s,color .2s}.ag .btn-sm:hover{border-color:rgba(var(--c,245,198,107),.6)}.ag .btn-sm:disabled{opacity:.5}
@media (max-width:760px){.ag-body,.ag-foot{padding-left:0}.ag-set{margin-left:0}.ag-name{font-size:19px}}
/* search by meaning (Memory tab) */
.msearch{margin:2px 0 18px}
.msearch-bar{position:relative;border-radius:14px;overflow:hidden}
.msearch-in{width:100%;height:46px;padding:0 16px 0 40px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-255-255-255,255,255,255),.035) no-repeat 14px 50%/16px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgba(var(--k-246-239-230,246,239,230),.55)' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5'/%3E%3C/svg%3E");color:var(--ink-1);font:inherit;font-size:15px;transition:border-color .2s,background-color .2s}
.msearch-in::placeholder{color:var(--ink-3)}
.msearch-in:focus{outline:none;border-color:rgba(var(--k-169-139-255,169,139,255),.55);background-color:rgba(var(--k-169-139-255,169,139,255),.06)}
.msearch-in::-webkit-search-cancel-button{filter:invert(.8)}
.msearch-bar::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:30%;background:linear-gradient(90deg,transparent,var(--violet),transparent);opacity:0;transform:translateX(-100%)}
.msearch.busy .msearch-bar::after{opacity:1;animation:msweep 1s cubic-bezier(.4,0,.2,1) 8}
@keyframes msweep{to{transform:translateX(340%)}}
.msearch-note{font-size:12px;color:var(--ink-3);margin:8px 2px 0}
.msearch.has .msearch-note{display:none}
.msearch-out:not(:empty){margin-top:10px;padding-bottom:6px;border-bottom:1px solid var(--hair)}
.msearch-out .msr{animation:mrise .32s cubic-bezier(.2,.8,.2,1) both}
.msearch-out .msr:nth-child(2){animation-delay:.03s}.msearch-out .msr:nth-child(3){animation-delay:.06s}.msearch-out .msr:nth-child(n+4){animation-delay:.09s}
@keyframes mrise{from{opacity:0;transform:translateY(6px)}}
.mmatch{flex:none;align-self:flex-start;font-size:11px;letter-spacing:.08em;padding:3px 7px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-3)}
.mmatch.m-meaning,.mmatch.m-both{border-color:rgba(var(--k-169-139-255,169,139,255),.45);color:var(--h-c9b8ff,#c9b8ff)}
@media (prefers-reduced-motion:reduce){.msearch.busy .msearch-bar::after,.msearch-out .msr{animation:none}}
.cat{margin-top:6px}

#toast{position:absolute;left:50%;top:22px;transform:translate(-50%,-12px);z-index:30;padding:10px 16px;border-radius:999px;background:rgb(var(--k-10-11-22,10,11,22));border:1px solid var(--hair-2);font-size:13px;color:var(--ink-1);opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease);max-width:90vw}
#toast.on{opacity:1;transform:translate(-50%,0)}
#toast.act{display:flex;align-items:center;gap:14px;padding:6px 6px 6px 16px;border-radius:16px;white-space:nowrap}#toast.act.on{pointer-events:auto}
#toast button{padding:5px 12px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);color:var(--gold);font-size:12.5px;font-weight:600;transition:background .15s,transform .15s var(--ease)}#toast button:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}#toast button:active{transform:scale(.96)}
.ag-undo{margin-left:10px;font-size:12px}
.ag-inbox-sum{margin:6px 0 4px;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.ag-grp{margin-top:14px}
.ag-grp-h{position:sticky;top:-10px;z-index:2;display:flex;align-items:center;gap:10px;padding:10px 0 8px;background:linear-gradient(to bottom,#06070f 80%,rgba(var(--k-6-7-15,6,7,15),0));font-size:13.5px;color:var(--ink-1)}
.ag-grp-h .ag-sigil{width:26px;height:24px;flex:none}
.ag-grp-h b{font-weight:500}
.ag-grp-n{margin-left:auto;min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:inline-grid;place-items:center;font-size:11.5px;color:var(--h-1d1408,#1d1408);background:rgb(var(--c));font-variant-numeric:tabular-nums}
.ag-grp .ag-esc-note{margin-top:12px;padding-top:12px;border-top:1px solid var(--hair)}
/* what she's asked to do, said the same way everywhere */
.ag-askline{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:6px 0 4px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.ag-askline b{font-weight:600;font-size:11px;letter-spacing:.12em;padding:2px 7px;border-radius:999px;border:1px solid currentColor;flex:none}
.ag-askline.k-approve b{color:var(--h-f2c46b,#f2c46b)}
.ag-askline.k-decide b{color:var(--h-e7a2c8,#e7a2c8)}
.ag-askline.k-idea b{color:var(--h-9fc6ff,#9fc6ff)}
.ag-askline.k-fyi b{color:var(--ink-3)}
.ag-kindsec{--c:245,198,107}.ag-kindsec.k-decide{--c:231,162,200}.ag-kindsec.k-idea{--c:159,198,255}.ag-kindsec.k-fyi{--c:180,180,190}
/* For you (agx): the most important thing open at the top, everything else one line each by when it matters */
/* ---------- Agents (Oct 17, Katie's Direction A): one proposal at a time (public/js/agentsdeck.js) ----------
   In Full view Agents sits in the still sky (#hub.hub-space, public/js/hub.js); Your team shows the real galaxy (#hub.ag-sky-team) */
html:root #hub.on.ag-sky{background:linear-gradient(180deg,rgba(4,5,12,.9),rgba(4,5,12,.8) 55%,rgba(4,5,12,.66))}
#hub.on.ag-sky-team{background:radial-gradient(120% 90% at 30% 45%,rgba(3,4,10,.05),rgba(3,4,10,.55) 100%)!important}
html:root #stage:has(#hub.on.ag-sky)>:is(.chrome,#memcard,#approve,#tip,#nowCore,#overview,#life),#stage:has(#hub.on.ag-sky-team)>:is(.chrome,#memcard,#approve,#tip,#nowCore,#overview,#life){visibility:hidden} /* (Life at a glance or a section left open underneath never shows through the galaxy: Katie, Oct 19) */
#hub.ag-sky .hub-head{border-bottom-color:transparent}
html:root #hub.ag-sky .hub-head{background:rgba(4,5,12,.72)}
.ax-nav{display:flex;align-items:center;gap:10px;flex:none;margin-inline-start:auto}
.hub-head:has(.ax-nav) .ld-title{flex:0 1 auto}
.ax-navb{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-2);font-size:14.5px;white-space:nowrap;transition:color .15s ease-out,border-color .15s ease-out,transform .12s ease-out}
.ax-navb:hover{color:var(--ink-1);border-color:var(--hair-2)}.ax-navb:active{transform:scale(.97)}
.ax-navb.on{color:var(--ink-1);border-color:rgba(245,198,107,.45)}
.ax-navb svg{flex:none;opacity:.85}
.ax{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:clamp(28px,3.4vw,48px);align-items:start;padding:4px 0 32px}
.ax-hero{min-width:0}
.ax-hello{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(34px,3vw,42px);line-height:1.06;letter-spacing:-.015em;color:var(--ink-1);text-wrap:balance}
.ax-hello em{font-style:normal;color:var(--gold)}
.ax-sub{margin:10px 0 0;max-width:60ch;font-size:16px;line-height:1.5;color:var(--ink-2)}
.ax-stack{position:relative;margin-top:20px}
.ax-ghost{position:absolute;display:none;inset-inline:22px;top:16px;bottom:-16px;border-radius:24px;background:#0d0f1b;border:1px solid rgba(246,239,230,.11);box-shadow:0 20px 40px -20px rgba(0,0,0,.9)}
.ax-ghost.g2{inset-inline:44px;top:30px;bottom:-31px;background:#0a0b15;border-color:rgba(246,239,230,.08)}
.ax-stack.s2 .g1,.ax-stack.s3 .ax-ghost{display:block}
.ax-swipe{position:relative;border-radius:24px}
.ax-swipe .sw-under{border-radius:24px}
.ax-card{--c:245,198,107;position:relative;padding:22px 26px 20px;border-radius:24px;background:#10121f;border:1px solid rgba(246,239,230,.10);box-shadow:inset 0 1px 0 rgba(246,239,230,.06),0 12px 28px -12px rgba(0,0,0,.75),0 50px 100px -30px rgba(0,0,0,.95);transition:opacity .2s ease-out,transform .2s cubic-bezier(.23,1,.32,1)}
.ax-card::before{content:"";position:absolute;inset:-1px;border-radius:24px;padding:1px;background:linear-gradient(160deg,rgba(245,198,107,.45),rgba(245,198,107,.06) 38%,transparent 60%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.ax-card.in-next{animation:axIn .24s cubic-bezier(.23,1,.32,1) both}
.ax-card.in-prev{animation:axInBack .24s cubic-bezier(.23,1,.32,1) both}
@keyframes axIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
@keyframes axInBack{from{opacity:0;transform:translateY(-10px) scale(.985)}to{opacity:1;transform:none}}
.ax-card.ax-leave{opacity:0;transform:translateX(36px) scale(.98)}
html[dir=rtl] .ax-card.ax-leave{transform:translateX(-36px) scale(.98)}
.ax-card.busy .ax-edit,.ax-card.busy .ax-draft{opacity:.55;transition:opacity .2s ease-out}
.ax-head{display:flex;align-items:center;gap:12px;min-width:0}
.ax-mark{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:radial-gradient(circle,rgba(var(--c),.2),rgba(var(--c),.04) 70%);box-shadow:inset 0 0 0 1px rgba(var(--c),.3)}
.ax-mark .ag-sigil{width:26px;height:24px;filter:none}
.ax-mark.sm{width:34px;height:34px}.ax-mark.sm .ag-sigil{width:22px;height:20px}
.ax-who{flex:1;min-width:0;display:flex;align-items:center;gap:0;font-size:14.5px;color:var(--ink-2);white-space:nowrap}
.ax-who b{flex:none;color:var(--ink-1);font-weight:600}
.ax-from{display:flex;align-items:center;min-width:0;overflow:hidden}
.ax-where,.ax-ago{overflow:hidden;text-overflow:ellipsis}
.ax-where::before,.ax-ago::before{content:"\00a0·\00a0"}

.ax-meta{flex:none;display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.ax-short{display:none}
.hub.h-agents.has-talk .hub-body{min-height:calc(100vh - 180px);min-height:calc(100dvh - 180px)}
.ax-today{flex:none;font-size:12.5px;color:var(--gold);padding:3px 10px;border-radius:999px;border:1px solid rgba(245,198,107,.4)}
.ax-title{margin:12px 0 0;max-width:34ch;font-size:clamp(20px,1.7vw,24px);font-weight:500;line-height:1.28;letter-spacing:-.005em;color:var(--ink-1);text-wrap:pretty}
.ax-why{display:flex;align-items:flex-start;gap:7px;margin:8px 0 0;font-size:14px;line-height:1.4;color:var(--ice)}.ax-why svg{flex:none;margin-top:2px}
.ax-pic{margin:14px 0 0}.ax-pic img{display:block;max-width:100%;max-height:260px;border-radius:14px;border:1px solid var(--hair)}
.ax-draft{margin-top:12px;padding:12px 16px;border-radius:14px;background:rgba(246,239,230,.035);border:1px solid var(--hair);color:var(--ink-2);font-size:15.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.ax-draft.clamp:not(.open) .ax-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.ax-subj{display:block;margin-bottom:4px;color:var(--ink-1);font-weight:600;font-size:14.5px}
.ax-more{display:inline-flex;align-items:center;min-height:44px;margin:-8px 0 -12px;padding:0 2px;font-size:14px;color:var(--ice);white-space:normal}
.ax-fine{margin:8px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.ax-link{display:inline-flex;min-height:44px;align-items:center;font-size:14px;color:var(--ice)}
.ax-happen{display:flex;gap:12px;align-items:flex-start;margin-top:12px;padding:12px 16px;border-radius:14px;background:rgba(245,198,107,.06);border:1px solid rgba(245,198,107,.22)}
.ax-arrow{flex:none;display:grid;place-items:center;width:26px;height:26px;margin-top:1px;border-radius:50%;background:rgba(245,198,107,.14);color:var(--gold)}
html[dir=rtl] .ax-arrow svg,html[dir=rtl] .ax-ask-go svg{transform:scaleX(-1)}
.ax-happen p{margin:0;font-size:15.5px;line-height:1.45;color:var(--ink-1)}
.ax-happen small{display:block;margin-top:3px;font-size:13.5px;color:var(--ink-3)}
.ax-facts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ax-fact{display:inline-flex;align-items:center;gap:7px;min-height:34px;max-width:100%;padding:0 13px 0 10px;border-radius:999px;background:rgba(246,239,230,.05);border:1px solid var(--hair);font-size:13.5px;color:var(--ink-2)}
.ax-fact b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1);font-weight:500}
.ax-fic{flex:none;display:grid;place-items:center;width:20px;height:20px;border-radius:6px;color:var(--ink-2)}.ax-fic.ice{background:rgba(92,225,255,.12);color:var(--ice)}
.ax-plan b{color:var(--ink-1);font-weight:500}
.ax-acts{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:18px}
.ax-sp{flex:1}
.ax-yes{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:56px;padding:0 28px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:17px;font-weight:600;white-space:nowrap;box-shadow:0 10px 30px -12px rgba(245,198,107,.55);transition:transform .12s ease-out,opacity .15s ease-out}
.ax-yes:active{transform:scale(.97)}.ax-yes:disabled{opacity:.6}.ax-yes.busy svg{opacity:.4}
.ax-yes[data-armed="1"]{box-shadow:0 0 0 4px rgba(245,198,107,.25),0 10px 30px -12px rgba(245,198,107,.55)}
.ax-yes.ax-nudge{animation:axNudge .28s cubic-bezier(.23,1,.32,1)}
@keyframes axNudge{30%{transform:scale(1.04)}60%{transform:scale(.98)}}
.ax-tweak{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:50px;padding:0 22px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:16px;white-space:nowrap;transition:transform .12s ease-out,border-color .15s ease-out,background-color .15s ease-out}
.ax-tweak:hover{border-color:rgba(246,239,230,.36)}.ax-tweak:active{transform:scale(.97)}
.ax-tweak.on{border-color:rgba(245,198,107,.6);color:var(--gold);background:rgba(245,198,107,.08)}
.ax-skip{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px;border-radius:999px;color:var(--ink-2);font-size:15px;white-space:nowrap;transition:color .15s ease-out,transform .12s ease-out}
.ax-skip:hover{color:var(--ink-1)}.ax-skip:active{transform:scale(.97)}
html[dir=rtl] .ax-skip svg{transform:scaleX(-1)}
.ax-opts{display:grid;place-items:center;flex:none;width:44px;height:44px;min-width:44px;border-radius:50%;border:1px solid var(--hair-2);color:var(--ink-1);transition:color .15s ease-out,background-color .15s ease-out}.ax-opts:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}
.ax-keys{display:flex;flex-wrap:wrap;gap:16px;margin:38px 0 0;padding-inline-start:6px;color:var(--ink-3);font-size:13px}
.ax-keys span{display:inline-flex;align-items:center;gap:6px}
.ax-keys kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;border:1px solid var(--hair-2);font:12px var(--sans);color:var(--ink-3)}
.ax-answer{margin-top:14px}.ax-answer textarea{width:100%;min-height:88px;padding:12px 14px;border-radius:14px;border:1px solid rgba(245,198,107,.45);background:rgba(246,239,230,.035);color:var(--ink-1);font:15.5px/1.5 var(--sans);resize:vertical}
/* Tweak: say what to change; the words that changed light up */
.ax-tw{margin-top:14px}
.ax-tw-line{display:flex;align-items:flex-start;gap:8px;margin:0;font-size:15px;line-height:1.4;color:var(--ice)}.ax-tw-line svg{flex:none;margin-top:2px}
.ax-edit{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(246,239,230,.035);border:1px solid rgba(245,198,107,.45);box-shadow:0 0 0 4px rgba(245,198,107,.07);font-size:15.5px;line-height:1.6;color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere;outline:none;max-height:clamp(150px,30vh,420px);overflow:auto;overscroll-behavior:contain}
.ax-edit:focus-visible{border-color:rgba(245,198,107,.8)}
.ax-edit mark{padding:1px 4px;margin:0 -1px;border-radius:5px;background:rgba(92,225,255,.16);color:var(--ink-1);box-shadow:inset 0 -1px 0 rgba(92,225,255,.55);font-weight:600}
.ax-tw-ans{margin:10px 0 0;padding:12px 14px;border-radius:14px;background:rgba(92,225,255,.06);border:1px solid rgba(92,225,255,.2);font-size:15px;line-height:1.5;color:var(--ink-1);white-space:pre-wrap}
.ax-ask{display:flex;align-items:center;gap:6px;margin-top:10px;min-height:52px;padding:4px 5px 4px 16px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(10,11,22,.6);transition:border-color .15s ease-out}
html[dir=rtl] .ax-ask{padding:4px 16px 4px 5px}
.ax-ask:focus-within{border-color:rgba(245,198,107,.55)}
.ax-ask input{flex:1;min-width:0;height:42px;border:0;background:none;color:var(--ink-1);font:15.5px var(--sans);outline:none}
.ax-ask input::placeholder{color:var(--ink-3)}
.ax-mic,.ax-ask-go{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ice);transition:background-color .15s ease-out,transform .12s ease-out}
.ax-mic{background:rgba(92,225,255,.12)}.ax-mic.on{background:rgba(92,225,255,.28)}.ax-ask-go{color:var(--ink-1);border:1px solid var(--hair-2)}
.ax-mic:active,.ax-ask-go:active{transform:scale(.94)}
.ax-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ax-chip{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair-2);font-size:14.5px;color:var(--ink-2);transition:color .15s ease-out,border-color .15s ease-out,transform .12s ease-out}
.ax-chip:hover{color:var(--ink-1);border-color:rgba(246,239,230,.36)}.ax-chip:active{transform:scale(.97)}
/* a new person: agents taking their first look */
.ax-firsts{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.ax-firsts li{display:flex;align-items:center;gap:12px}
.ax-firsts p{margin:0;font-size:15px;color:var(--ink-1)}.ax-firsts small{display:block;font-size:13.5px;color:var(--ink-3)}.ax-firsts small.live{color:var(--ice)}
/* beside it: Up next, Your team, the plan */
.ax-rail{display:flex;flex-direction:column;border-radius:22px;background:var(--sf-1,#181a22);border:1px solid var(--hair);overflow:hidden}
html:root .ax-rail{background:rgba(15,16,22,.96)}
.ax-sec{padding:18px 20px 16px}.ax-sec+.ax-sec{border-top:1px solid var(--hair)}
.ax-rh{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.ax-rh h3{margin:0;font-size:17px;font-weight:600;color:var(--ink-1);letter-spacing:normal}
.ax-rh-link{min-height:44px;padding:0 4px;font-size:14px;color:var(--ink-3);transition:color .15s ease-out}.ax-rh-link:hover{color:var(--ink-1)}
.ax-qs{display:flex;flex-direction:column}
.ax-q{display:flex;align-items:center;gap:12px;width:calc(100% + 12px);margin-inline:-6px;min-height:60px;padding:9px 6px;border-radius:12px;text-align:start;transition:background-color .15s ease-out}
.ax-q+.ax-q{border-top:1px solid rgba(246,239,230,.06)}
.ax-q:hover{background:rgba(246,239,230,.04)}.ax-q:active{transform:scale(.99)}
.ax-qt{flex:1;min-width:0}
.ax-qt b{display:block;font-size:14.5px;font-weight:400;line-height:1.35;color:var(--ink-1)}
.ax-qt small{display:block;margin-top:1px;font-size:13.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ax-orb{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(246,239,230,.06);color:var(--ink-2)}
.ax-orb.ice{background:rgba(92,225,255,.10);color:var(--ice)}.ax-orb.violet{background:rgba(169,139,255,.12);color:var(--violet)}
.ax-kind{flex:none;font-size:13px;padding:3px 9px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);white-space:nowrap}
.ax-kind.ok{border-color:rgba(245,198,107,.4);color:var(--gold)}.ax-kind.conn{border-color:rgba(92,225,255,.4);color:var(--ice)}.ax-kind.idea{border-color:rgba(169,139,255,.45);color:var(--violet)}
.ax-team-btn{display:block;min-height:44px;margin-top:4px;border-radius:12px}
.ax-team{display:flex;align-items:center}
.ax-team .ax-mark{margin-inline-start:-8px;background:#10121c;box-shadow:inset 0 0 0 1px rgba(var(--c),.3),0 0 0 3px rgba(15,16,22,1)}
.ax-team .ax-mark:first-child{margin-inline-start:0}
.ax-plus{margin-inline-start:10px;font-size:13.5px;color:var(--ink-3)}
.ax-live{display:flex;align-items:center;gap:8px;margin:10px 0 0;font-size:14px;line-height:1.4;color:var(--ink-2)}
.ax-live i{flex:none;width:7px;height:7px;border-radius:50%;background:var(--ink-3)}
.ax-live.on{color:var(--ice)}.ax-live.on b{color:var(--ice);font-weight:600}.ax-live.on i{background:var(--ice);box-shadow:0 0 0 3px rgba(92,225,255,.18)}
.ax-live.idle i{background:transparent;border:1px solid var(--ink-3)}
.ax-use .ax-rh{margin-bottom:10px}
.ax-lbl{font-size:14.5px;color:var(--ink-2)}.ax-lbl.strong{color:var(--ink-1);font-variant-numeric:tabular-nums}
.ax-bar{height:4px;border-radius:4px;background:rgba(246,239,230,.08);overflow:hidden}
.ax-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,rgba(92,225,255,.55),rgba(92,225,255,.9));transform-origin:0 50%;transform:scaleX(var(--p,0))}
html[dir=rtl] .ax-bar i{transform-origin:100% 50%}
.ax-bar.warn i{background:linear-gradient(90deg,rgba(245,198,107,.6),var(--gold))}
.ax-use .ax-fine{margin-top:10px}
.ax-desk{display:flex;align-items:flex-start;gap:12px}
.ax-desk-t{flex:1;min-width:0;min-height:44px;text-align:start}.ax-desk-t b{display:block;font-size:14.5px;font-weight:400;line-height:1.4;color:var(--ink-1)}.ax-desk-t small{display:block;margin-top:2px;font-size:13px;color:var(--ink-3)}
.ax-x{flex:none;display:grid;place-items:center;width:44px;height:44px;margin:-8px -10px -8px 0;border-radius:50%;color:var(--ink-3)}.ax-x:hover{color:var(--ink-1)}
.ax-back{min-height:44px}
:is(.ax-title,.ax-qt b,.atm-rt small)[dir=auto]{text-align:match-parent} /* her content keeps its own direction, the line keeps the page's alignment */
/* (match-parent resolves against the element's own dir=auto, so an English title in Arabic sat left inside a right-hand box: say it outright) */
html[dir=rtl] :is(.ax-title,.ax-qt b,.atm-rt small)[dir=auto]{text-align:right}
:is(.ax-navb,.ax-yes,.ax-tweak,.ax-skip,.ax-opts,.ax-more,.ax-chip,.ax-mic,.ax-ask-go,.ax-q,.ax-rh-link,.ax-team-btn,.ax-desk-t,.ax-x,.atm-review,.atm-rt,.atm-row,.atm-show):focus-visible{outline:2px solid var(--ice);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.ax-card,.ax-card.in-next,.ax-card.in-prev,.ax-yes.ax-nudge{animation:none;transition:none}}
.ax-acttabs{margin:4px 0 16px}.ax-acttabs button{min-height:44px;padding:0 16px;font-size:14.5px}
.ax-pagehead{margin:6px 0 14px;font-family:var(--display);font-weight:400;font-size:clamp(28px,2.6vw,36px);line-height:1.1;color:var(--ink-1)}
.ax-owner{display:block;margin:18px 0 0;padding:12px 14px;border-radius:14px;border:1px dashed rgba(169,139,255,.5);font-size:14px;color:var(--violet);text-align:start}
.ax-owner-go{width:100%;min-height:48px}
/* the proposal says what it is and asks plainly first (Katie, Oct 19); its sources are chips, never raw Markdown */
.ax-what{display:flex;align-items:center;gap:8px;min-height:44px;margin:10px 0 0;font-size:14px;font-weight:500;color:var(--gold)}
.ax-what>span:nth-child(2){flex:1;min-width:0}
.ax-swipe.sw{overflow:clip} /* (clip, not hidden: the choices below can stay in sight while the card scrolls) */
.ax-kic{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:rgba(245,198,107,.12)}
.ax-what+.ax-title{margin-top:4px}
.ax-set{flex:none;display:grid;place-items:center;width:44px;height:44px;margin-inline-end:-10px;border-radius:50%;color:var(--ink-3);transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.ax-set:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}.ax-set:active{transform:scale(.95)}
.ax-srcs{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:10px}
.ax-srcs-l{font-size:13px;color:var(--ink-3)}
.ax-src{display:inline-flex;align-items:center;gap:6px;min-height:32px;max-width:100%;padding:0 12px 0 10px;border-radius:999px;border:1px solid rgba(92,225,255,.28);background:rgba(92,225,255,.06);color:var(--ice);font-size:13px;transition:border-color .15s ease-out,background-color .15s ease-out}
.ax-src span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ax-src:hover{border-color:rgba(92,225,255,.5);background:rgba(92,225,255,.1)}
.ax-src:focus-visible,.ax-set:focus-visible,.atm-set:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.ax-fic.gold{background:rgba(245,198,107,.14);color:var(--gold)}
.ax-gets b{color:var(--ink-1)}
.ag-limit{margin:2px 0 0;padding:10px 14px;border-radius:12px;background:rgba(92,225,255,.05);border:1px solid rgba(92,225,255,.18);font-size:13.5px;line-height:1.45;color:var(--ink-2)}
/* one agent's settings, on their own page */
.ap-setwrap{max-width:720px;margin-inline:auto;min-width:0}
.ap-sethead{display:flex;align-items:center;gap:16px;padding:4px 0 6px}
.ap-sethead .ap-sigil{width:52px;height:48px}
.ap-sethead .ax-pagehead{margin:0;min-width:0;overflow-wrap:anywhere}
.ap-setpage{min-width:0}
.ap-setwrap .ag-set label>span{font-size:14px}
.ap-setwrap .ag-set input[type=number],.ap-setwrap .ag-set input[type=time]{min-height:44px;font-size:14.5px;padding:0 12px}
.ap-setwrap .ag-set small,.ap-setwrap .ag-fine{font-size:13.5px;line-height:1.5}
/* selects in NOVA's own style (no native-looking control): a soft field, a thin chevron, 44px tall */
.ag-set select{-webkit-appearance:none;appearance:none;min-height:44px;text-overflow:ellipsis;padding:0 40px 0 14px;border-radius:12px;font-size:14.5px;background:rgba(246,239,230,.04) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23b9b2a8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;transition:border-color .15s ease-out}
.ag-set select:hover{border-color:rgba(246,239,230,.3)}.ag-set select:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
html[dir=rtl] .ag-set select{padding:0 14px 0 40px;background-position:left 14px center}
.ag-set select option{background:#10121f;color:var(--ink-1)}
.ap-setpage .ag-set{margin:8px 0 0}
.ap-setgo{display:inline-flex;align-items:center;gap:8px}
#hub.h-agents{overflow-x:hidden}
@media (max-width:1020px){
  .ax{grid-template-columns:minmax(0,1fr);gap:22px}
  .ax-rail{max-width:640px}
}
@media (max-width:760px){
  .ax-nav{gap:6px}
  .ax-navb{width:44px;height:44px;padding:0;justify-content:center;border-color:var(--hair-2)}
  .ax-navb span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .ax-hello{font-size:30px}.ax-long{display:none}.ax-short{display:block}
  .ax-meta{flex-direction:column-reverse;align-items:flex-end;gap:4px}
  .ax-sub{font-size:15px;margin-top:6px}
  .ax-stack{margin-top:16px}
  .ax-ghost{inset-inline:14px;top:12px;bottom:-11px;border-radius:22px}.ax-ghost.g2{inset-inline:28px;top:22px;bottom:-21px}
  .ax-card{padding:18px 18px 18px;border-radius:22px}.ax-card::before,.ax-swipe,.ax-swipe .sw-under{border-radius:22px}
  .ax-title{font-size:19px;margin-top:12px}
  .ax-who{flex-direction:column;align-items:flex-start;font-size:14px;line-height:1.35}
  .ax-from{max-width:100%;font-size:13.5px;color:var(--ink-3)}.ax-where::before{content:none}
  .ax-sub-a{display:none}
  .ax-draft.clamp:not(.open) .ax-text{-webkit-line-clamp:2}
  .ax-to{display:none}
  .ax-draft{font-size:15px;padding:11px 14px}
  .ax-happen{padding:12px 13px}.ax-happen p{font-size:15px}
  .ax-fact{min-height:32px;font-size:13px}
  .ax-acts{gap:8px;margin-top:16px}
  .ax-yes{flex:1 1 100%}
  .ax-tweak,.ax-skip{flex:1;justify-content:center}
  .ax-sp{display:none}.ax-opts{flex:none}
  .ax-sec{padding:16px}
  .ax-what{margin-top:8px;font-size:13.5px}
  /* the choices stay in sight above the Talk bar while the card runs past it (Katie, Oct 19: "hidden under" it) */
  .hub.has-talk .ax-card .ax-acts{position:sticky;bottom:calc(80px + max(14px,env(safe-area-inset-bottom)));z-index:3;margin:16px -18px -18px;padding:12px 18px 18px;background:#10121f;border-radius:0 0 22px 22px}
  .hub.has-talk .ax-card .ax-acts.sum-on .ax-acts-sum{display:flex;align-items:flex-start;gap:8px;flex:1 1 100%;margin:0 0 2px;font-size:13.5px;line-height:1.4;color:var(--ink-2)}
  .ax-acts-sum>span:last-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .ax-acts-sum .ax-arrow{width:20px;height:20px;margin-top:0}
  .atm-review{padding:0 14px}.atm-row{gap:8px}
  .hub.has-talk .ax-card .ax-acts::before{content:"";position:absolute;inset-inline:0;top:-20px;height:20px;background:linear-gradient(to top,#10121f,rgba(16,18,31,0));pointer-events:none}
}
/* ---------- Agents › Your team (Oct 17, Direction B): the team panel beside the map (public/js/agentsteam.js; the old star-galaxy stage styles were removed Nov 4) */
.atm{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,440px);gap:28px;align-items:start;padding:0 0 24px}
.atm-count{min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--gold);color:#1d1408;font-weight:700;font-size:12.5px;display:grid;place-items:center}
.atm-panel{border-radius:24px;background:#0d0e16;border:1px solid var(--hair);box-shadow:0 40px 90px -30px rgba(0,0,0,.95);overflow:hidden}
.atm-ph{padding:22px 24px 12px}
.atm-grab{display:none}
.atm-big{margin:0;font-family:var(--display);font-weight:400;font-size:30px;line-height:1.1;letter-spacing:-.01em;color:var(--ink-1)}
.atm-big i{font-style:normal;color:var(--ice)}.atm-big em{font-style:normal;color:var(--gold)}
.atm-ph p{margin:6px 0 0;font-size:15px;color:var(--ink-2)}
.atm-grp{padding:6px 24px 12px}.atm-grp+.atm-grp,.atm-ph+.atm-grp{border-top:1px solid var(--hair)}
.atm-grp h3{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0 4px;font-size:14.5px;font-weight:600;color:var(--ink-2);letter-spacing:normal}
.atm-grp h3 small{font-weight:400;font-size:13.5px;color:var(--ink-3)}
.atm-row{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:8px 0;text-align:start}
.atm-row+.atm-row{border-top:1px solid rgba(246,239,230,.06)}
.atm-rt{flex:1;min-width:0;min-height:44px;text-align:start;display:block}
.atm-rt b{font-size:15px;font-weight:600;color:var(--ink-1)}
.atm-n{font-size:15px;color:var(--ink-2)}
.atm-rt small{display:block;margin-top:2px;font-size:13.5px;line-height:1.35;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atm-rt small.live{color:var(--ice)}
.atm-review{flex:none;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(245,198,107,.55);color:var(--gold);font-size:15px;font-weight:500;transition:background-color .15s ease-out,transform .12s ease-out}
.atm-review:hover{background:rgba(245,198,107,.08)}.atm-review:active{transform:scale(.97)}
.atm-set{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-3);transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.atm-set:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}.atm-set:active{transform:scale(.95)}
.atm-waits{padding-top:8px}
.atm-nm{display:flex;align-items:baseline;gap:5px;min-width:0}
.atm-nm b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atm-nm .atm-n{flex:none;white-space:nowrap}
.atm-waits .atm-rt small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* the agent's name wraps rather than cutting to "BD Strate…" beside its buttons (Nov 7 review) */
.atm-waits .atm-nm{display:block}.atm-waits .atm-nm b{white-space:normal;overflow-wrap:break-word}.atm-waits .atm-nm .atm-n{margin-inline-start:5px}
.atm-waits .atm-row{gap:8px}.atm-waits .atm-review{padding:0 14px}
.atm-row .atm-set{min-width:44px;min-height:44px}
.ax-acts-sum{display:none}
.atm-more{display:block;margin:2px 0 4px}
.ax-mark.st-work{box-shadow:inset 0 0 0 1px rgba(92,225,255,.6),0 0 0 4px rgba(92,225,255,.12),0 0 18px rgba(92,225,255,.3)}
.ax-mark.st-wait{box-shadow:inset 0 0 0 1px rgba(245,198,107,.65),0 0 0 4px rgba(245,198,107,.12)}
.ax-mark.st-rest{opacity:.75}
.atm-steps{display:flex;gap:4px;margin-top:7px}
.atm-steps i{height:3px;width:28px;border-radius:3px;background:rgba(246,239,230,.12)}.atm-steps i.on{background:var(--ice)}.atm-steps i.now{background:linear-gradient(90deg,var(--ice) 50%,rgba(92,225,255,.2) 50%)}
.atm-dash{flex:none;width:34px;height:34px;border-radius:50%;border:1.5px dashed}
.atm-dash.idea{border-color:rgba(169,139,255,.7)}.atm-dash.conn{border-color:rgba(92,225,255,.7)}
.atm-idea .atm-rt b{font-weight:500}
.atm-quiet{display:flex;align-items:center;gap:10px;min-height:52px}
.atm-marks{display:flex}.atm-marks .ax-mark{margin-inline-start:-8px;box-shadow:inset 0 0 0 1px rgba(var(--c),.25),0 0 0 3px #0d0e16}.atm-marks .ax-mark:first-child{margin-inline-start:0}
.atm-qt{flex:1;min-width:0;font-size:14.5px;color:var(--ink-2)}
.atm-show{min-height:44px;padding:0 6px;font-size:14px;color:var(--ink-3)}.atm-show:hover{color:var(--ink-1)}
.atm-foot{padding:16px 24px 14px;border-top:1px solid var(--hair)}
.atm-foot .ax-rh{margin-bottom:10px}
.atm-links{display:flex;justify-content:space-between;gap:12px;margin-top:6px}
@media (max-width:1020px){.atm{grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:18px}}
@media (max-width:760px){
  .atm{display:block;margin:0 -14px;padding:0}
  .atm-panel{position:relative;border-radius:26px 26px 0 0;border-bottom:0;min-height:60vh}
  .atm-grab{display:block;width:38px;height:5px;margin:0 auto 14px;border-radius:5px;background:var(--hair-2)}
  .atm-ph{padding:10px 18px 8px}.atm-big{font-size:26px}
  .atm-grp{padding:4px 18px 8px}.atm-foot{padding:14px 18px 18px}
}
/* ---- Your team › Map (Katie, Nov 2 2026): the old Radial she liked, made to show who reports to whom
   (public/js/agentmap.js). Symmetric rings round "Your brain", the parts of life on the rim, names along each radius.
   Violet reporting lines (agents), gold for what waits on her, ice for work in progress, mint for checked work. ---- */
.atm.atm-map{grid-template-columns:minmax(0,1fr) minmax(320px,360px)}
.amp-wrap{min-width:0;display:flex;flex-direction:column;gap:14px}
.amp{position:relative;display:flex;justify-content:center;border-radius:24px;background:radial-gradient(circle at 50% 50%,#10111c 0,#0b0c14 70%);border:1px solid var(--hair);padding:8px}
.amp-svg{display:block;width:100%;max-width:min(100%,max(640px,calc(100vh - 200px)));min-width:0;height:auto;aspect-ratio:1;overflow:visible;font-family:var(--sans)}
.amp-svg text{direction:ltr}
.amp-ring{fill:none;stroke:rgba(246,239,230,.08);stroke-width:1}
.amp-sec{fill:none;stroke-width:2;stroke-linecap:round;stroke:rgba(255,238,214,.22)}
.amp-sec.s-business{stroke:rgba(169,139,255,.45)}.amp-sec.s-career{stroke:rgba(245,200,150,.45)}.amp-sec.s-money{stroke:rgba(196,228,178,.4)}
.amp-rim{font-size:17px;font-weight:600;letter-spacing:.06em;fill:rgba(255,238,214,.7)}
.amp-rim.s-business{fill:#c4b6ff}.amp-rim.s-career{fill:#f5c896}.amp-rim.s-money{fill:#c4e4b2}
.amp-div{stroke:rgba(246,239,230,.08);stroke-width:1}
.amp-div.wall{stroke:rgba(245,200,150,.45);stroke-width:1.4;stroke-dasharray:5 7}
.amp-ln{fill:none;stroke:rgba(255,238,214,.28);stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round;transition:opacity .2s ease-out}
.amp-ln.s-business{stroke:rgba(169,139,255,.55)}
.amp-ln.s-money{stroke:rgba(196,228,178,.35)}
.amp-ln.apart{stroke:rgba(245,200,150,.55);stroke-dasharray:4 5}
.amp-ln.st-work{stroke:rgba(92,225,255,.65)}
.amp-ln.st-off{opacity:.4}
.amp-ln.st-idea,.amp-ln.st-conn{stroke:rgba(169,139,255,.5);stroke-dasharray:3 5}
.amp-ln.st-conn{stroke:rgba(92,225,255,.45)}
.amp-peer{fill:none;stroke:rgba(255,214,150,.5);stroke-width:1.5;stroke-dasharray:1.5 6;stroke-linecap:round;transition:opacity .2s ease-out}
.amp-svg.lit .amp-ln,.amp-svg.lit .amp-peer{opacity:.22}.amp-svg.lit .amp-ln.on,.amp-svg.lit .amp-peer.on{opacity:1;stroke-width:2.4}
.amp-run{fill:#dff8ff}.amp-up{fill:#cdbdff}.amp-hand{fill:#ffe2a8}
.amp-core-dot{fill:#fff6e8;opacity:.85}
.amp-core-t{font-family:var(--display);font-size:20px;fill:var(--ink-1)}
.amp-n{cursor:pointer;outline:none}
.amp-hit{fill:transparent}
.amp-body{fill:rgba(var(--c),.18);stroke:rgba(var(--c),.6);stroke-width:1.2;transition:transform .14s ease-out}
.amp-ring2{fill:none;stroke:rgba(246,239,230,.14);stroke-width:1.2}
.amp-dot{fill:#fffaf2}
.amp-n.lead .amp-body{fill:rgba(var(--c),.32);stroke:rgba(var(--c),.95);stroke-width:1.8;filter:drop-shadow(0 0 10px rgba(var(--c),.55))}
.amp-n.lead .amp-ring2{stroke:rgba(var(--c),.4)}
.amp-n.st-work .amp-ring2{stroke:var(--ice);stroke-width:1.8}
.amp-n.st-wait .amp-ring2{stroke:var(--gold);stroke-width:1.8}
.amp-n.st-off .amp-body{fill:transparent;stroke:rgba(246,239,230,.35)}.amp-n.st-off .amp-dot{fill:rgba(246,239,230,.4)}
.amp-n.sug .amp-body{fill:transparent;stroke:rgba(169,139,255,.8);stroke-dasharray:3 3}.amp-n.sug .amp-ring2{stroke:none}
.amp-n.st-conn .amp-body{stroke:rgba(92,225,255,.75)}
.amp-n.folded .amp-body{stroke-dasharray:2 3}
.amp-count{font-size:14px;font-weight:700;fill:var(--gold)}
.amp-rev{fill:none;stroke:var(--violet);stroke-width:1.8;stroke-dasharray:9 7}
.amp-ok circle{fill:var(--mint);stroke:#0b0c14;stroke-width:2}.amp-ok path{fill:none;stroke:#07261b;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.amp-tools circle{fill:#1b1d29;stroke:rgba(246,239,230,.3);stroke-width:1}.amp-tools text{font-size:10px;font-weight:600;fill:var(--ink-2)}
.amp-n:active .amp-body{transform:scale(.94)}
.amp-n:focus-visible .amp-ring2{stroke:var(--ice);stroke-width:2.4}
.amp-name{font-size:16px;fill:var(--ink-1);paint-order:stroke;stroke:#0b0c14;stroke-width:5px;stroke-linejoin:round;pointer-events:none;transition:opacity .2s ease-out}
.amp-name.lead{font-size:17px;font-weight:650}
.amp-name.st-off,.amp-name.folded{fill:var(--ink-3)}
.amp-name.sug{fill:#c9b8ff}
.amp-svg.lit .amp-name{opacity:.45}.amp-svg.lit .amp-name.on{opacity:1}
.amp-pop[hidden]{display:none}
.amp-pop{position:absolute;left:0;top:0;z-index:3;display:grid;gap:5px;min-width:190px;max-width:290px;padding:10px 12px;border-radius:14px;background:#11121c;border:1px solid var(--hair-2);box-shadow:0 18px 40px -16px rgba(0,0,0,.95);text-align:start}
.amp-pop b{font-size:14.5px;font-weight:600;color:var(--ink-1)}
.amp-pop small{font-size:12.5px;line-height:1.35;color:var(--ink-3)}
.amp-pop .amp-pop-h{margin-top:4px}
.amp-pop-r{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amp-pop-r img,.amp-pop-r i{flex:none;width:14px;height:14px;border-radius:4px;background:rgba(246,239,230,.12)}
.amp-empty{margin:80px 0;text-align:center;font-size:15px;color:var(--ink-2)}
.amp-about{order:-1;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 28px;padding:14px 18px;border-radius:18px;background:#0d0e16;border:1px solid var(--hair)}
.amp-how{flex:1 1 360px;min-width:0;max-width:640px}
.amp-how h3{margin:0 0 3px;font-size:14.5px;font-weight:600;color:var(--ink-1);letter-spacing:normal}
.amp-how p{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.amp-key{display:flex;flex-wrap:wrap;gap:6px 16px;flex:0 1 380px;font-size:13px;color:var(--ink-2)}
.amp-key span{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.amp-key i{flex:none;width:12px;height:12px;border-radius:50%}
.amp-key .k-work i{box-shadow:inset 0 0 0 2px var(--ice)}
.amp-key .k-wait i{box-shadow:inset 0 0 0 2px var(--gold)}
.amp-key .k-review i{border:2px dashed var(--violet)}
.amp-key .k-rest i{box-shadow:inset 0 0 0 1.5px rgba(246,239,230,.4)}
.amp-key .k-off i{border:1px dashed rgba(246,239,230,.4)}
.amp-key .k-ok i{background:var(--mint);width:10px;height:10px}
.amp-key .k-peer i{width:18px;height:0;border-radius:0;border-top:2px dotted rgba(255,214,150,.8)}
.amp-key .k-wall i{width:18px;height:0;border-radius:0;border-top:2px dashed rgba(245,200,150,.7)}
.amp-list{display:none}
@media (max-width:1020px){.atm.atm-map{grid-template-columns:minmax(0,1fr) minmax(290px,330px)}}
@media (max-width:760px){
  .amp-wrap{padding:0 14px;gap:12px}
  .amp{padding:2px;border-radius:22px}
  .amp-svg{max-width:100%}
  /* the circle is the overview here: names are listed under it, where they can be read and tapped */
  .amp-name,.amp-core-t{display:none}
  .amp-rim{font-size:26px}
  .amp-count{font-size:20px}
  .amp-ok,.amp-tools{transform-box:fill-box}
  .amp-pop{display:none}
  .amp-about{order:3;padding:12px 14px}
  .amp-key{flex-basis:100%;gap:6px 14px;font-size:12.5px}
  .amp-list{order:2;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
  .amp-grp{min-width:0;border-radius:18px;background:#0d0e16;border:1px solid var(--hair);padding:6px 12px}
  .amp-grp h3{margin:8px 4px 2px;font-size:13.5px;font-weight:600;color:var(--ink-3);letter-spacing:normal}
  .amp-grp.s-business h3{color:#c4b6ff}.amp-grp.s-career h3{color:#f5c896}.amp-grp.s-money h3{color:#c4e4b2}
  .amp-row{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:6px 4px;padding-inline-start:calc(4px + var(--d,0) * 22px);text-align:start;border-radius:12px;transition:background-color .15s ease-out,transform .12s ease-out}
  .amp-row:active{transform:scale(.98)}
  .amp-row+.amp-row{border-top:1px solid rgba(246,239,230,.05)}
  .amp-row .amp-dotm{position:relative;flex:none;width:22px;height:22px;border-radius:50%;background:rgba(var(--c),.2);box-shadow:inset 0 0 0 1.5px rgba(var(--c),.7)}
  .amp-row.lead .amp-dotm{width:28px;height:28px;box-shadow:inset 0 0 0 2px rgba(var(--c),.95),0 0 12px rgba(var(--c),.45)}
  .amp-row.st-work .amp-dotm{box-shadow:inset 0 0 0 2px var(--ice)}
  .amp-row.st-wait .amp-dotm{box-shadow:inset 0 0 0 2px var(--gold)}
  .amp-row.st-off .amp-dotm{background:transparent;box-shadow:inset 0 0 0 1px rgba(246,239,230,.35)}
  .amp-row.sug .amp-dotm{background:transparent;box-shadow:none;border:1.5px dashed rgba(169,139,255,.8)}
  .amp-okm{position:absolute;right:-4px;bottom:-4px;width:12px;height:12px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 2px #0d0e16}
  .amp-row .amp-rt{flex:1;min-width:0}
  .amp-row b{display:block;font-size:15px;font-weight:600;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .amp-row.lead b{font-size:16px}
  .amp-row.sug b{color:#c9b8ff;font-weight:500}
  .amp-row small{display:block;margin-top:1px;font-size:13px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .amp-row:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
}
@media (prefers-reduced-motion:reduce){.amp-ln,.amp-peer,.amp-name,.amp-body,.amp-row{transition:none}}
.agx{display:grid;gap:22px;padding-bottom:12px}
.agx-head{display:grid;gap:6px}
.agx-head h3{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(26px,2.6vw,34px);line-height:1.1;color:var(--ink-1)}
.agx-head>p{margin:0;font-size:13.5px;color:var(--ink-2)}
.agx-who{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.agx-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-2);transition:border-color .16s ease,color .16s ease,transform .12s ease-out}
.agx-chip:active{transform:scale(.97)}
.agx-chip i{width:7px;height:7px;border-radius:50%;background:rgb(var(--c))}
.agx-chip b{font-weight:500;color:var(--ink-3);font-variant-numeric:tabular-nums}
.agx-chip:hover{color:var(--ink-1)}
.agx-chip.on{border-color:rgba(var(--k-245-198-107,245,198,107),.7);color:var(--ink-1)}
.agx-next{position:relative;padding:20px 22px 14px;border-radius:20px;border:1px solid rgba(var(--c),.34);background:radial-gradient(120% 140% at 0% 0%,rgba(var(--c),.13),rgba(var(--c),0) 60%),rgba(var(--k-12-13-22,12,13,22),.6)}
.agx-eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;font-size:12.5px;color:var(--gold)}
.agx-from{display:inline-flex;align-items:center;gap:7px;color:var(--ink-2);font-size:12.5px}
.agx-from:hover{color:var(--ink-1)}
.agx-from i{width:7px;height:7px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.7)}
.agx .agx-next>h4{letter-spacing:normal;margin:10px 0 6px;font-family:var(--display);font-weight:400;font-size:clamp(22px,2vw,27px);line-height:1.2;color:var(--ink-1)}
.agx-out{margin:0 0 4px;font-size:14px;color:var(--ink-1)}
.agx-out span{color:var(--gold)}
.agx-note{margin:4px 0 0;font-size:13px;color:var(--ink-2);font-style:italic}
.agx-next .ag-item,.agx-open .ag-item{border:0;padding:6px 0 0;margin:0;background:none}
.agx-next .ag-it-head,.agx-open .ag-it-head,.agx-next .ag-askline,.agx-open .ag-askline{display:none}
.agx-ask{padding:2px 8px;border-radius:999px;border:1px solid currentColor;font-size:11.5px}
.agx-next.k-approve .agx-ask{color:var(--h-f2c46b,#f2c46b)}.agx-next.k-decide .agx-ask{color:var(--h-e7a2c8,#e7a2c8)}.agx-next.k-idea .agx-ask{color:var(--h-9fc6ff,#9fc6ff)}.agx-next.k-fyi .agx-ask{color:var(--ink-3)}
.agx-band{display:grid;gap:6px}
.agx h4.agx-band-h{letter-spacing:normal;display:flex;align-items:baseline;gap:10px;margin:0 0 2px;font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink-1)}
.agx-band-h span{font-family:var(--ui,system-ui);font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.agx-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.agx-row{border-bottom:1px solid var(--hair)}
.agx-face{display:grid;grid-template-columns:minmax(0,1fr) 132px;align-items:center;column-gap:8px}
.agx-quick{justify-self:end;padding:7px 13px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);color:var(--ink-1);font-size:12.5px;white-space:nowrap;transition:border-color .16s ease,background-color .16s ease,transform .12s ease-out}
.agx-quick:hover{border-color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.agx-quick:active{transform:scale(.97)}
.agx-quick:disabled{opacity:.5}
.agx-open{grid-column:1/-1}
.agx-line{display:grid;grid-template-columns:8px 92px minmax(0,1fr) auto 14px;align-items:center;gap:12px;width:100%;padding:12px 6px;text-align:left;border-radius:10px;transition:background-color .16s ease}
@media (hover:hover){.agx-line:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}}
.agx-line:active{transform:scale(.995)}
.agx-dot{width:8px;height:8px;border-radius:50%;background:rgb(var(--c))}
.agx-verb{font-size:12.5px;color:var(--h-f2c46b,#f2c46b)}
.agx-row.k-decide .agx-verb{color:var(--h-e7a2c8,#e7a2c8)}.agx-row.k-idea .agx-verb{color:var(--h-9fc6ff,#9fc6ff)}.agx-row.k-fyi .agx-verb{color:var(--ink-3)}
.agx-t{display:grid;gap:2px;min-width:0}
.agx-t b{font-weight:500;font-size:14.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agx-t small{font-size:12.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agx-chev{color:var(--ink-3);font-size:18px;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.agx-row.open .agx-chev{transform:rotate(90deg)}
.agx-open{padding:0 6px 14px 26px}
.agx-foot{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px}
/* Actions: suggestions one line each, with Add and Remove right there */
.tsl-list{display:block;border-top:1px solid var(--hair)}
.tsl{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:12px;border-bottom:1px solid var(--hair);transition:opacity .2s ease,transform .2s cubic-bezier(.23,1,.32,1)}
.tsl.gone{opacity:0;transform:translateX(8px)}
/* the same tick as a to-do row, lined up with the to-do ticks; a 44px tap area around it */
.tsl .tsl-tick{margin:0;align-self:center}
.tsl .tsl-tick::before{content:"";position:absolute;inset:-12px}
.tsl-line{position:relative;display:grid;grid-template-columns:8px minmax(0,1fr);align-items:start;gap:12px;padding:11px 4px;text-align:start;border-radius:10px;transition:background-color .16s ease}
/* two lines, like a to-do (Oct 27): the title opens the card, and its tap area covers the whole line; the source on the
   second line sits above that and opens where the suggestion came from */
.tsl-go{display:block;width:100%;min-width:0;padding:0;margin:0;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer}
.tsl-go::after{content:"";position:absolute;inset:0;border-radius:10px}
.tsl-go:focus-visible{outline:none}.tsl-go:focus-visible::after{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:-2px}
.tsl-line .tr-src{pointer-events:none}.tsl-line .tr-from{pointer-events:auto}
.tsl-line .tr-src{margin-top:2px}
.tsl-line:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.tsl-dot{width:8px;height:8px;margin-top:7px;border-radius:50%;background:rgb(var(--c,245,198,107))}
.tsl-t{display:grid;min-width:0}
.tsl-t b{font-weight:500;font-size:14.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsl-acts{display:flex;align-items:center;gap:4px}
.tsl-add{padding:7px 14px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);color:var(--ink-1);font-size:12.5px;white-space:nowrap;transition:transform .12s ease-out,opacity .16s ease,border-color .16s ease,background-color .16s ease}
.tsl-add:hover{border-color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.tsl-add:active{transform:scale(.97)}.tsl-add:disabled{opacity:.5}
.tsl-x{width:32px;height:32px;border-radius:50%;color:var(--ink-3);font-size:18px;line-height:1;transition:color .16s ease,background-color .16s ease}
.tsl-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.tsl-open{padding:8px 0 12px;border-bottom:1px solid var(--hair)}
.tsl-open .tsl-card{margin:0}
.tsl-less{margin-top:6px;font-size:12.5px}
.ok-past{margin-top:14px}
.ok-past>summary{cursor:pointer;font-size:12.5px;color:var(--ink-3);padding:6px 0}
.ok-past[open]>summary{color:var(--ink-2)}
@media (max-width:760px){
  .tsl-line{gap:10px;padding:12px 2px}
  .tsl-t b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
}
@media (max-width:760px){
  .agx{gap:18px}
  .agx-who{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:8px -16px 0;padding:0 16px}.agx-who::-webkit-scrollbar{display:none}.agx-chip{flex:none}
  .agx-next{padding:16px 16px 10px;border-radius:18px}
  .agx-face{grid-template-columns:minmax(0,1fr) auto}
  .agx-chev{display:none}
  .agx-line{grid-template-columns:8px minmax(0,1fr) auto;gap:10px;padding:12px 2px}
  .agx-verb{grid-column:2;grid-row:1;font-size:12px}
  .agx-line .agx-t{grid-column:2;grid-row:2}
  .agx-line .tag{grid-column:3;grid-row:1/3}
  .agx-chev{grid-column:4;grid-row:1/3}
  .agx-dot{grid-row:1/3}
  .agx-t b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
  .agx-open{padding:0 0 12px 18px}
}
.ag-kindsec .ag-grp-h>div{display:flex;flex-direction:column;gap:2px}
.ag-kindsec .ag-grp-h small{font-size:12px;color:var(--ink-3)}
.ag-from-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--hair);font-size:12px;color:var(--ink-3)}
/* the source line sits above its item: one divider, not two */
.ag-from-line+.ag-item{border-top:0;padding-top:4px}
.ag-from-line .ag-open{color:rgba(var(--c),.95);font-size:12px;letter-spacing:.02em}
.ag-from-note{color:var(--ink-2)}
.ag-idea{display:grid;gap:8px;margin:8px 0 2px}
.ag-idea-who{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2)}
.ag-idea select,.ag-idea input{background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:8px 10px;outline:0;min-width:0}
.ag-idea input{width:100%;box-sizing:border-box}
.ag-idea select:focus,.ag-idea input:focus{border-color:rgba(var(--k-159-198-255,159,198,255),.6)}
.ag-answer{display:grid;gap:8px;margin:8px 0 2px}
.ag-answer textarea{width:100%;box-sizing:border-box;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:14px;line-height:1.5;padding:10px 12px;outline:0;resize:vertical}
.ag-answer textarea:focus{border-color:rgba(var(--k-231-162-200,231,162,200),.6)}
.ag-grp .ag-esc-note + .ag-item{border-top:0;padding-top:6px}
.ag-clear{display:flex;flex-direction:column;align-items:center;gap:6px;padding:48px 0 30px;text-align:center}
.ag-clear i{width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 14px rgba(var(--k-245-198-107,245,198,107),.8),0 0 40px rgba(var(--k-245-198-107,245,198,107),.35);margin-bottom:10px}
.ag-clear p{margin:0;font-family:var(--display);font-size:20px;color:var(--ink-1)}.ag-clear small{font-size:12.5px;color:var(--ink-3);margin-bottom:8px}
.ag-ask{margin-top:10px}
.ag-ask-open{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-3);padding:4px 0;transition:color .15s}.ag-ask-open:hover{color:var(--ink-1)}
.ag-ask-open i{width:12px;height:10px;border:1.3px solid currentColor;border-radius:5px 5px 5px 1px}
.ag-thread{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.ag-msg{max-width:88%;padding:8px 12px;border-radius:14px;font-size:13px;line-height:1.45}
.ag-msg p{margin:0;white-space:pre-line}
.ag-msg.you{align-self:flex-end;background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-1);border-bottom-right-radius:4px}
.ag-msg.them{align-self:flex-start;background:rgba(var(--c,245,198,107),.08);border:1px solid rgba(var(--c,245,198,107),.18);color:var(--ink-1);border-bottom-left-radius:4px}
.ag-msg small{display:block;margin-top:5px;font-size:11px;color:var(--gold)}
.ag-msg.typing p{letter-spacing:.2em;color:var(--ink-3)}
.ag-ask-form{display:flex;align-items:flex-end;gap:8px;padding:4px 4px 4px 12px;border:1px solid var(--hair-2);border-radius:16px;background:rgba(var(--k-255-255-255,255,255,255),.02)}
.ag-ask-form:focus-within{border-color:rgba(var(--c,245,198,107),.5)}
.ag-ask-form textarea{flex:1;min-height:22px;max-height:140px;resize:none;border:0;background:transparent;color:var(--ink-1);font:inherit;font-size:13.5px;line-height:1.45;padding:6px 0;outline:0}
.ag-ask-send{flex:none;width:30px;height:30px;border-radius:50%;background:var(--gold);color:var(--h-1d1408,#1d1408);font-weight:700;transition:transform .15s var(--ease),opacity .15s}.ag-ask-send:active{transform:scale(.94)}.ag-ask-send:disabled{opacity:.4}
@media (max-width:760px){#reply{max-height:30vh;font-size:16px;line-height:1.55}#reply p{margin:0 0 .5em}.sources{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-16px;margin-right:-16px;padding:0 16px}.sources::-webkit-scrollbar{display:none}.sources>*{flex:none}[data-state="approval"] .greet{opacity:0;pointer-events:none}}

/* ---------- tasks, routines, reminders ---------- */
.menu{position:relative}
.menu-dot{position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(var(--k-245-198-107,245,198,107),.8)}
.up-entry svg{flex:none}
.muted{color:var(--ink-3)}
.note-sm{font-size:12px;line-height:1.5;color:var(--ink-3);margin:10px 0 0}
.pref-col{flex-direction:column;align-items:flex-start}
.btn.gold{background:var(--gold);color:var(--h-1d1408,#1d1408);border:0}
.tform{margin:6px 0 4px;padding:12px;border:1px solid var(--hair);border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.02)}
.trow-in{display:flex;gap:8px;align-items:center}
.tin{flex:1;min-width:0;width:0;background:transparent;border:0;outline:0;color:var(--ink-1);font:inherit;font-size:14.5px;padding:6px 4px}
.tin::placeholder{color:var(--ink-3)}
.tdetail{display:flex;flex-direction:column;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--hair)}
.tf{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink-2)}
.tf[hidden]{display:none}
.tf input,.tf select{background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);padding:7px 10px;font:inherit;font-size:13px;color-scheme:dark;max-width:62%}
.tdays,.tchips{display:flex;flex-wrap:wrap;gap:6px}
.tdays button,.tchips button{padding:6px 10px;border-radius:999px;border:1px solid var(--hair-2);font-size:12px;color:var(--ink-3);transition:color .15s,border-color .15s,background .15s}
.tdays button{width:34px;padding:6px 0;text-align:center}
.tdays button[aria-pressed="true"],.tchips button[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.tchips button[aria-checked="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.1)}
/* the add/edit form never grows wider than its card: every field may shrink, chips wrap */
.tform,.tdetail,.tf>*{min-width:0}
.tform{max-width:100%}
.look-opts{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.look-opt{display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);text-align:start;transition:border-color .15s ease,background .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.look-opt:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.look-opt:active{transform:scale(.99)}
.look-opt[aria-checked="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.07)}
/* Text size (public/js/textsize.js): three choices, each "Aa" drawn at its own size */
.ts-pick{gap:8px;margin-top:6px}
.ts-pick button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;font-size:13px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.ts-pick button:active{transform:scale(.97)}
.ts-aa{font-family:var(--display);line-height:1;color:var(--ink-1)}
.ts-aa.ts-default{font-size:15px}.ts-aa.ts-larger{font-size:18px}.ts-aa.ts-largest{font-size:21px}.ts-aa.ts-xlarge{font-size:24px}
/* Plan & billing: where she stands, this month's AI use, the three plans, the add-ons */
.plan{display:flex;flex-direction:column;gap:2px}
.plan-now{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:14px;border:1px solid var(--hair);margin:4px 0 6px}
.plan-now b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1);letter-spacing:-.01em}
.plan-now span{font-size:13px;color:var(--ink-2);line-height:1.5}
.plan-now .plan-bonus-offer{color:var(--ink-1);padding-inline-start:16px;position:relative}.plan-now .plan-bonus-offer::before{content:"";position:absolute;inset-inline-start:2px;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--gold)}
.plan-now .btn-sm{align-self:flex-start;margin-top:8px;border-radius:999px}
.plan-now.s-trial,.plan-now.s-active{border-color:rgba(var(--k-245-198-107,245,198,107),.35)}
.plan-now.s-free{border-color:rgba(var(--k-111-242-196,111,242,196),.35)}
.plan-now.s-readonly,.plan-now.s-past_due{border-color:rgba(var(--k-255-122-182,255,122,182),.45)}
.plan-now.s-paused{border-color:rgba(var(--k-169-139-255,169,139,255),.45)}
/* Change or cancel (Oct 16): the head's buttons, and the sheet with the four choices */
.plan-now .pc-note{color:var(--ink-1)}
.pc-head-b{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pc-head-b .btn-sm{margin:0;border-radius:999px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.pc-head-b .btn-sm:active{transform:scale(.97)}
.pc-head-b .btn-sm:not(.gold){background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.pc-sheet{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:rgba(var(--k-2-3-8,2,3,8),.66);opacity:0;transition:opacity .2s ease}
.pc-sheet.on{opacity:1}
.pc-card{position:relative;width:min(540px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:26px 24px 22px;border-radius:22px;background:var(--h-0d0f16,#0d0f16);border:1px solid var(--hair-2);box-shadow:0 30px 80px rgba(var(--k-0-0-0,0,0,0),.55);display:flex;flex-direction:column;gap:14px;transform:translateY(8px) scale(.98);transition:transform .24s cubic-bezier(.23,1,.32,1)}
.pc-sheet.on .pc-card{transform:none}
.pc-card>*{flex-shrink:0}
.pc-card h3:focus{outline:none}
.pc-card h3{margin:0;padding-inline-end:36px;font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2;color:var(--ink-1)}
.pc-x{position:absolute;top:14px;inset-inline-end:14px}
.pc-lede{margin:-4px 0 0;font-size:13.5px;color:var(--ink-2);line-height:1.55}
.pc-body{margin:0;font-size:14px;color:var(--ink-1);line-height:1.6}
.pc-opts{display:flex;flex-direction:column;gap:8px}
.pc-opt{appearance:none;display:flex;flex-direction:column;gap:3px;text-align:start;padding:13px 15px;border-radius:14px;border:1px solid var(--hair);background:none;color:var(--ink-1);font:inherit;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.pc-opt b{font-weight:500;font-size:15px}
.pc-opt small{font-size:12.5px;color:var(--ink-2);line-height:1.5}
.pc-opt:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-245-198-107,245,198,107),.04)}
.pc-opt:active{transform:scale(.985)}
.pc-opt.quiet b{color:var(--ink-1)}
.pc-card-link{align-self:flex-start}
/* a real dialog (public/js/dialog.js, UI laws ★5): 70% night behind, a solid surface, centred; a bottom sheet on a phone */
.nd-scrim{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:rgba(3,4,10,.7);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.nd-scrim.on{opacity:1}.nd-scrim.off{opacity:0;pointer-events:none;transition-duration:.16s}
.nd-panel{position:relative;width:min(460px,100%);max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;padding:22px 24px 22px;border-radius:22px;background:var(--h-10121f,#10121f);border:1px solid var(--hair-2);color:var(--ink-1);box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);transform:translateY(8px) scale(.98);transition:transform .22s cubic-bezier(.23,1,.32,1)}
.nd-scrim.on .nd-panel{transform:none}.nd-scrim.off .nd-panel{transform:translateY(6px) scale(.99);transition-duration:.16s}
.nd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 -10px 6px 0}
html[dir=rtl] .nd-head{margin:0 0 6px -10px}
.nd-title{margin:4px 0 0;font-family:var(--display);font-weight:400;font-size:32px;line-height:1.1;letter-spacing:-.01em;color:var(--ink-1)}
.nd-title:focus{outline:none}
.nd-x{flex:none;display:grid;place-items:center;width:44px;height:44px;margin-top:-4px;border-radius:50%;color:var(--ink-3);transition:color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.nd-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.nd-x:active{transform:scale(.94)}
.nd-x:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
@media (max-width:760px){
  .nd-scrim{align-items:flex-end;padding:0}
  .nd-panel{width:100%;max-height:calc(100dvh - 40px);border-radius:28px 28px 0 0;border-bottom:0;padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px));transform:translateY(28px)}
  .nd-scrim.off .nd-panel{transform:translateY(28px)}
  .nd-title{font-size:29px}
}
@media (prefers-reduced-motion:reduce){.nd-scrim,.nd-panel{transition:none!important}.nd-panel{transform:none!important}}
/* Keep Plus (public/js/keepplus.js, UI laws ★1): one decision at the end of the trial */
.kp-status{margin:0 0 16px;font-size:16px;line-height:1.5;color:var(--ink-2)}
.kp-proof{display:flex;gap:12px;align-items:flex-start;margin:0 0 18px;padding:14px 16px;border-radius:16px;background:rgba(var(--k-169-139-255,169,139,255),.07);border:1px solid rgba(var(--k-169-139-255,169,139,255),.22);animation:kpIn .22s cubic-bezier(.23,1,.32,1)}
.kp-proof[hidden]{display:none}
.kp-proof p{margin:0;font-size:15px;line-height:1.45;color:var(--ink-1)}
.kp-proof b{display:block;margin-bottom:2px;font-size:13.5px;font-weight:600;color:var(--violet)}
.kp-mark{flex:none;width:8px;height:8px;margin-top:7px;border-radius:50%;background:var(--violet);box-shadow:0 0 10px rgba(var(--k-169-139-255,169,139,255),.7)}
.kp-proof:not(:has(b)) .kp-mark{margin-top:7px}
@keyframes kpIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.kp-offer{padding:16px 18px;border-radius:18px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-245-198-107,245,198,107),.05)}
.kp-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px 14px;flex-wrap:wrap}
.kp-price{display:flex;align-items:baseline;gap:4px}
.kp-price b{font-family:var(--display);font-weight:400;font-size:44px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.kp-price span{font-size:15px;color:var(--ink-3)}
.kp-bill{margin:0;display:flex;align-items:baseline;gap:4px 10px;flex-wrap:wrap;font-size:14.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.kp-save{font-size:13.5px;font-weight:600;color:var(--gold);white-space:nowrap}
.kp-off{margin:8px 0 0;font-size:14px;color:var(--mint)}
.kp-line{margin:10px 0 0;font-size:14.5px;line-height:1.45;color:var(--ink-2)}
.kp-when{margin:14px 0 18px;font-size:14.5px;line-height:1.45;color:var(--ink-2)}
.kp-acts{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.kp-go{min-height:56px;padding:0 24px;border-radius:999px;background:var(--gold);color:var(--h-1d1408,#1d1408);font:inherit;font-size:17px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .15s}
.kp-go:active{transform:scale(.98)}.kp-go:disabled{opacity:.55;cursor:default}
.kp-go:focus-visible,.kp-others:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}
.kp-others{align-self:center;min-height:44px;padding:0 16px;border-radius:999px;font:inherit;font-size:15px;color:var(--ink-2);text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px;transition:color .15s}
.kp-others:hover{color:var(--ink-1)}
.kp-fine{margin:8px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-3);text-align:center}
/* what NOVA did in her free days: her own numbers, read as one line of figures (violet: memory and agents) */
.kp-recap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;margin:0 0 18px;padding:14px 0 16px;border-block:1px solid var(--hair-2);animation:kpIn .22s cubic-bezier(.23,1,.32,1)}
.kp-recap.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.plan-price b .cents,.kp-price b .cents{font-size:.5em;font-weight:inherit;vertical-align:.7em;line-height:0;margin-inline-start:1px;letter-spacing:0;opacity:.85}
.kp-stat{display:grid;gap:2px;min-width:0}
.kp-stat b{font-family:var(--display);font-weight:400;font-size:32px;line-height:1.05;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.kp-stat span{font-size:13.5px;line-height:1.35;color:var(--ink-2)}
.kp-bonus{margin:14px 0 0;font-size:14.5px;line-height:1.45;color:var(--ink-1)}
.kp-bonus b{font-weight:500;color:var(--gold)}
.kp-bonus+.kp-when{margin-top:4px}
.kp-stat span{font-size:13px;text-wrap:balance}
@media (max-width:359px){.kp-recap.n3{grid-template-columns:repeat(2,minmax(0,1fr))}}
.plan-bonus .t,.plan-finish .t{font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){.kp-proof,.kp-recap{animation:none}}
.pc-seg{margin:0}
.pc-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.pc-go,.pc-alt{border-radius:999px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.pc-go:active:not(:disabled),.pc-alt:active{transform:scale(.97)}
.pc-go:disabled{opacity:.55;cursor:default}
.pc-go.pc-end{background:var(--ink-1);color:var(--h-141018,#141018)}
.pc-alt{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.pc-cmp-w{overflow-x:auto;border:1px solid var(--hair);border-radius:14px}
.pc-cmp{width:100%;border-collapse:collapse;font-size:13px;line-height:1.4}
.pc-cmp th,.pc-cmp td{padding:9px 12px;text-align:start;border-bottom:1px solid var(--hair);vertical-align:top}
.pc-cmp tr:last-child th,.pc-cmp tr:last-child td{border-bottom:0}
.pc-cmp thead th{font-size:12px;font-weight:600;color:var(--ink-2)}
.pc-cmp thead th:last-child{color:var(--gold)}
.pc-cmp tbody th{font-weight:400;color:var(--ink-1)}
.pc-cmp td{color:var(--ink-1);white-space:nowrap}
.pc-cmp td.no{color:var(--ink-3)}
.pc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.pc-why{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.pc-why legend{font-size:13px;color:var(--ink-2);margin-bottom:8px;padding:0}
.pc-chip{appearance:none;padding:7px 12px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-1);font:inherit;font-size:12.5px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.pc-chip[aria-pressed="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.pc-chip:active{transform:scale(.97)}
@media (max-width:560px){.pc-sheet{place-items:end center;padding:0}.pc-card{width:100%;border-radius:22px 22px 0 0;padding:24px 18px calc(18px + env(safe-area-inset-bottom,0px));max-height:92dvh;transform:translateY(24px)}.pc-cmp td{white-space:normal}}
@media (prefers-reduced-motion:reduce){.pc-sheet,.pc-card,.pc-opt,.pc-chip,.pc-go{transition:none}}
/* "Before you decide" (public/js/planchange.js decide(); the engagement plan, Katie Oct 18): what stays, what stops,
   loyalty time stated exactly, then Pause / NOVA Free / Cancel as three equal buttons: no gold push, cancel one tap. */
.pc-card.pc-decide{width:min(640px,100%);gap:12px}
.pc-keep{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;min-height:44px;margin:-12px 0 -8px -6px;padding:0 8px;border-radius:12px;color:var(--ink-2);font-size:14.5px;transition:color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.pc-keep span{font-size:22px;line-height:1;margin-top:-2px}
html[dir=rtl] .pc-keep{margin:-12px -6px -8px 0}
html[dir=rtl] .pc-keep span{transform:scaleX(-1)}
.pc-keep:hover{color:var(--ink-1)}.pc-keep:active{transform:scale(.97)}
.pc-facts{list-style:none;margin:2px 0 0;padding:0;border:1px solid var(--hair);border-radius:16px;background:var(--sf-0)}
.pc-fact{display:flex;gap:12px;padding:14px 16px;border-top:1px solid var(--hair)}
.pc-fact:first-child{border-top:0}
.pc-fi{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:14px;line-height:1;background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-2)}
.pc-fact.ok .pc-fi{color:var(--mint);background:rgba(var(--k-111-242-196,111,242,196),.1)}
.pc-fact.loyal .pc-fi{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.pc-fact>div{flex:1;min-width:0}
.pc-fact b{display:block;font-size:15px;font-weight:600;color:var(--ink-1);line-height:1.4}
.pc-fact p{margin:4px 0 0;font-size:14px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.pc-stops{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.pc-stops li{font-size:13px;line-height:1.3;padding:5px 10px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2)}
.pc-track{position:relative;height:50px;margin:16px 22px 0}
.pc-tr-line{position:absolute;top:6px;left:0;right:0;height:3px;border-radius:3px;background:var(--hair-2);overflow:hidden}
.pc-tr-line i{display:block;height:100%;background:var(--gold)}
.pc-tr-m{position:absolute;top:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:7px}
.pc-tr-me{position:absolute;top:1px;width:13px;height:13px;border-radius:50%;background:var(--pearl);box-shadow:0 0 0 3px rgba(var(--k-245-198-107,245,198,107),.35);transform:translateX(-50%);z-index:1}
html[dir=rtl] .pc-tr-m,html[dir=rtl] .pc-tr-me{transform:translateX(50%)}
.pc-tr-m i{width:11px;height:11px;margin-top:2px;border-radius:50%;background:var(--h-0d0f16,#0d0f16);border:1.5px solid var(--hair-2)}
.pc-tr-m.on i{background:var(--gold);border-color:var(--gold)}
.pc-tr-m small{font-size:12px;line-height:1.3;color:var(--ink-3);text-align:center;white-space:nowrap}
.pc-tr-m.on small{color:var(--gold)}
.pc-three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:4px}
.pc-three>.pc-pick{display:grid;grid-row:span 2;grid-template-rows:subgrid;align-content:start;row-gap:4px} /* the three titles and their lines line up, however a language wraps them */
.pc-pick{appearance:none;display:flex;flex-direction:column;gap:4px;text-align:start;padding:14px 15px;min-height:80px;border-radius:16px;border:1px solid var(--hair-2);background:var(--sf-1);color:var(--ink-1);font:inherit;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease,opacity .2s ease}
.pc-pick b{font-size:15px;font-weight:600;line-height:1.3}
.pc-pick small{font-size:13px;color:var(--ink-2);line-height:1.45}
.pc-pick:hover:not(:disabled){border-color:rgba(var(--k-246-239-230,246,239,230),.38);background:var(--sf-2)}
.pc-pick:active:not(:disabled){transform:scale(.98)}
.pc-pick:disabled{opacity:.5;cursor:default}.pc-pick.busy{opacity:1}
.pc-pick:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.pc-note{display:flex;gap:10px;margin:2px 0 0;font-size:13px;line-height:1.5;color:var(--ink-3)}
.pc-ni{flex:none;width:18px;height:18px;margin-top:1px;border-radius:50%;border:1px solid rgba(var(--k-92-225-255,92,225,255),.55);color:var(--ice);display:grid;place-items:center;font-size:11px;font-weight:700;font-style:normal}
.pc-links{display:flex;flex-wrap:wrap;gap:0 18px;margin:-6px 0 -8px}
.pc-links .link,.pc-undo{min-height:44px;font-size:13.5px}
.pc-quiet{color:var(--ink-2)!important;font-size:13.5px!important}
.pc-thanks{margin:4px 0 0;width:100%;font-size:13px;color:var(--mint)}
.pc-thanks:empty{display:none}
@media (max-width:560px){.pc-three{grid-template-columns:minmax(0,1fr)}.pc-pick{min-height:0}.pc-card.pc-decide{gap:10px}.pc-fact{padding:12px 14px}.pc-track{margin:16px 20px 0}}
@media (prefers-reduced-motion:reduce){.pc-pick,.pc-keep{transition:none}}

.cap-confirm bdi{color:var(--ink-1);overflow-wrap:anywhere}
/* "Gmail wants to confirm forwarding" (public/js/forwardsheet.js): the plan sheet's frame, one decision */
.fw-sheet{z-index:70}
.fw-card{width:min(460px,100%);gap:12px;padding:24px 24px 20px}
.fw-x{position:absolute;top:10px;inset-inline-end:10px;width:44px;height:44px;display:grid;place-items:center;border-radius:999px;background:none;border:0;color:var(--ink-3);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .15s ease}
.fw-x:hover{color:var(--ink-1)}.fw-x:active{transform:scale(.94)}
.fw-xi{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
.fw-mark{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:var(--ice);background:rgba(92,225,255,.08);border:1px solid rgba(92,225,255,.22)}
.fw-mark.work{color:var(--gold);background:rgba(245,198,107,.07);border-color:rgba(245,198,107,.3)}
.fw-mark.warn{color:var(--rose);background:rgba(255,122,182,.07);border-color:rgba(255,122,182,.3)}
.fw-ic{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
[dir="rtl"] .fw-mark:not(.warn):not(.work) .fw-ic{transform:scaleX(-1)}
.fw-card h3{font-size:24px}
.fw-lede{margin:0;font-size:15px;line-height:1.55;color:var(--ink-2)}
.fw-addr{color:var(--ink-1);font-weight:500;overflow-wrap:anywhere}
.fw-go{min-height:52px;font-size:16px;width:100%;margin-top:4px}
.fw-alt{min-height:48px;font-size:15px;width:100%}
.fw-after{margin:-2px 0 0;font-size:13.5px;line-height:1.5;color:var(--mint)}
.fw-code{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:14px;background:rgba(246,239,230,.035);border:1px solid var(--hair)}
.fw-code-l{font-size:13.5px;color:var(--ink-2)}
.fw-code-r{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fw-code-v{font:500 22px/1.2 var(--mono,ui-monospace,Menlo,monospace);letter-spacing:.1em;color:var(--ink-1);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.fw-copy{appearance:none;min-width:84px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.55);background:none;color:var(--gold);font:inherit;font-size:14px;font-weight:500;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease,color .15s ease}
.fw-copy:active{transform:scale(.96)}
.fw-copy.done{color:var(--mint);border-color:rgba(111,242,196,.55)}
.fw-note{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-3)}
.fw-warn{margin:0;padding:12px 14px;border-radius:14px;border:1px solid rgba(245,198,107,.32);background:rgba(245,198,107,.06);font-size:14px;line-height:1.55;color:var(--ink-1)}
.fw-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px}
.fw-done{min-height:48px;padding:0 26px;font-size:15px}
.fw-quiet{appearance:none;min-height:44px;padding:0 6px;background:none;border:0;color:var(--ink-2);font:inherit;font-size:14px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2);cursor:pointer;transition:color .15s ease}
.fw-quiet:hover{color:var(--ink-1)}
.fw-allow{display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid var(--hair)}
.fw-allow[hidden]{display:none}
@media (max-width:560px){.fw-card{width:100%;padding:22px 18px calc(18px + env(safe-area-inset-bottom,0px))}.fw-card h3{font-size:22px}}
@media (prefers-reduced-motion:reduce){.fw-x,.fw-copy{transition:none}}
.plan-use{display:flex;flex-direction:column;gap:6px;padding:10px 2px 6px}
.plan-use-h{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink-2)}.plan-use-h b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.plan-meter{height:4px;border-radius:4px;background:rgba(var(--k-246-239-230,246,239,230),.09);overflow:hidden}
.plan-meter i{display:block;height:100%;border-radius:4px;background:var(--gold)}
.plan-meter.hot i{background:var(--rose)}
.plan-use small{font-size:12px;color:var(--ink-3);line-height:1.45}
.plan-soon{margin:8px 0 0}
.plan-loyal{display:flex;flex-direction:column;gap:3px;padding:4px 2px 12px;margin:0 0 6px}
.plan-loyal b{font-size:14px;font-weight:600;color:var(--gold,#f5c66b)}
.plan-loyal span{font-size:13px;color:var(--ink-2);line-height:1.5}
.plan-price s{font-size:13px;color:var(--ink-3);margin-right:5px;font-variant-numeric:tabular-nums}
.plan-off{margin:2px 0 0;font-size:12px;color:var(--gold,#f5c66b)}
.plan-seg{display:inline-flex;gap:2px;padding:3px;border-radius:999px;border:1px solid var(--hair);align-self:flex-start;margin:2px 0 10px}
.plan-seg button{padding:7px 14px;border-radius:999px;font-size:12.5px;color:var(--ink-2);transition:background .15s ease,color .15s ease}
.plan-seg button[aria-checked="true"]{background:rgba(var(--k-245-198-107,245,198,107),.14);color:var(--ink-1)}
.plan-grid{display:flex;flex-direction:column;gap:8px}
.plan-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:16px;border:1px solid var(--hair)}
.plan-card.pick{border-color:rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-245-198-107,245,198,107),.045)}
.plan-card.mine{border-color:rgba(var(--k-111-242-196,111,242,196),.5);background:none}
.plan-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.plan-name{display:flex;align-items:baseline;gap:10px;min-width:0}.plan-name b{font-weight:500;font-size:15px;color:var(--ink-1)}
.plan-tag{font-size:11.5px;color:var(--gold);white-space:nowrap}.plan-tag.mine{color:var(--mint)}
.plan-price{display:flex;align-items:baseline;gap:3px;flex:none}.plan-price b{font-family:var(--display);font-weight:400;font-size:26px;line-height:1;color:var(--ink-1);font-variant-numeric:tabular-nums}.plan-price span{font-size:12px;color:var(--ink-3)}
.plan-sub{margin:0;font-size:13px;color:var(--ink-1);line-height:1.45}
.plan-line{margin:0;font-size:12.5px;color:var(--ink-3);line-height:1.5}
.plan-seg button{display:inline-flex;align-items:center;gap:7px}
.plan-seg-tag{font-size:11px;color:var(--gold);letter-spacing:.01em}
.plan-price s{text-decoration-thickness:1px;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.45)}
.plan-bill{margin:0;display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.plan-save{font-size:12px;font-weight:500;color:var(--gold);white-space:nowrap}
.plan-to-year{font-size:12.5px;color:var(--gold);padding:0;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-245-198-107,245,198,107),.4)}
.plan-card.asking{border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.plan-ask{margin-top:10px;padding-top:12px;border-top:1px solid var(--hair);display:flex;flex-direction:column;gap:10px;animation:planAsk .22s cubic-bezier(.23,1,.32,1)}
.plan-ask p{margin:0;font-size:13px;color:var(--ink-1);line-height:1.55}
.plan-ask-b{display:flex;align-items:center;gap:16px}
.plan-ask-b .plan-go{margin-top:0}
@keyframes planAsk{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.plan-ask{animation:none}}
.plan-card .plan-go{align-self:flex-start;margin-top:8px;border-radius:999px;background:transparent;color:var(--ink-1);border:1px solid var(--hair-2);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.plan-card .plan-go.gold{background:var(--gold);color:var(--h-1d1408,#1d1408);border-color:transparent}
.plan-card .plan-go:hover:not(:disabled){border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.plan-card .plan-go:active:not(:disabled){transform:scale(.97)}
.plan-card .plan-go:disabled{opacity:.5;cursor:default}
.plan-later{flex:none;font-size:12px;color:var(--ink-3);white-space:nowrap}
.plan-addon .btn-sm{border-radius:999px;background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}.plan-addon .btn-sm:disabled{opacity:.5}
.plan-key{padding:12px 0 4px;display:flex;flex-direction:column;gap:6px}.plan-key .t{font-size:13.5px;color:var(--ink-1);font-weight:500}
.plan-key-f{display:flex;gap:8px}.plan-key-f input{flex:1;min-width:0;padding:9px 12px;border-radius:10px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font:inherit;font-size:13px}
.plan-key .link{align-self:flex-start}
.ag-plan-held{margin:6px 0 0;font-size:12.5px;color:var(--ink-2);line-height:1.5}
.ag-needs.better{color:var(--ink-3)}
/* the quiet bar: trial ending, payment failed, read-only */
.plan-bar{position:fixed;left:50%;top:calc(78px + env(safe-area-inset-top));transform:translateX(-50%);z-index:26;display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100vw - 32px));padding:8px 8px 8px 16px;border-radius:999px;background:rgba(var(--k-10-11-22,10,11,22),.94);border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);font-size:13px;color:var(--ink-1);transition:opacity .25s ease,transform .25s cubic-bezier(.23,1,.32,1)}
.net-pill{position:fixed;left:50%;top:calc(78px + env(safe-area-inset-top));transform:translateX(-50%);z-index:27;display:flex;flex-wrap:wrap;justify-content:center;column-gap:7px;width:max-content;max-width:min(520px,calc(100vw - 32px));padding:7px 16px;padding-inline-start:31px;border-radius:16px;background:rgb(var(--k-10-11-22,10,11,22));border:1px solid var(--hair-2);box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:12.5px;line-height:1.45;color:var(--ink-2);text-align:center;transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.net-pill span+span::before{content:"·";margin-inline-end:7px;color:var(--ink-3)}
.net-pill::before{content:"";position:absolute;inset-inline-start:14px;top:12.5px;width:7px;height:7px;border-radius:50%;box-sizing:border-box;border:1.5px solid var(--ink-3)} /* offline: a hollow ring, nothing alarming */
.net-pill[data-phase=sending]::before{border:0;background:var(--ice);box-shadow:0 0 8px rgba(var(--k-92-225-255,92,225,255),.55);animation:pip 1.4s ease-in-out infinite} /* live: what waited is going out */
.net-pill[data-phase=back]::before{border:0;background:var(--mint)}
.net-pill.out{opacity:0;transform:translate(-50%,-6px);pointer-events:none}
@starting-style{.net-pill{opacity:0;transform:translate(-50%,-6px)}}
@media (prefers-reduced-motion:reduce){.net-pill,.net-pill.out{transition:opacity .15s linear;transform:translateX(-50%)}.net-pill[data-phase=sending]::before{animation:none}}
/* a message that waits for the connection: her words as sent, and one calm line (never rose: nothing went wrong) */
.turn-wait{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:6px;font-size:14px;color:var(--ink-2)}
.turn-wait .tw-ring{flex:none;width:8px;height:8px;border-radius:50%;box-sizing:border-box;border:1.5px solid var(--ink-3)}
.turn-wait .tw-acts{display:inline-flex;gap:2px;margin-inline-start:2px}
.cv-failed .turn-wait .tw-ring{border-color:var(--gold)} /* didn't send: her Try again, never a red error */
.tw-act.tw-go{color:var(--gold)}
body.offline #talk,body.offline #mic,body.offline #videoCall{opacity:.55} /* need a connection: still tappable, to say so plainly */
.turn-wait .tw-acts .tw-act:first-child{margin-inline-start:-10px}
.tw-act{appearance:none;border:0;background:none;color:var(--ink-1);font:inherit;font-size:13px;padding:6px 10px;min-height:32px;border-radius:999px;cursor:pointer;transition:background-color .15s cubic-bezier(.23,1,.32,1),transform .12s cubic-bezier(.23,1,.32,1)}
.tw-act:hover{background:rgba(var(--k-246-239-230,246,239,230),.08)}
.tw-act:active{transform:scale(.97)}
.tw-act:focus-visible{outline:2px solid var(--ice);outline-offset:1px}
body.offline .plan-bar{display:none}
body:has(#toast.on) .net-pill{opacity:0}
@media (max-width:640px){.net-pill{top:calc(68px + env(safe-area-inset-top))}body.net-on #convoScroll{padding-top:52px}.net-pill span+span{display:none}.turn-wait .tw-acts{flex-basis:100%;margin-inline-start:8px}} /* (on a phone the waiting count is in the conversation itself) */
body:has(#sheet.on) .plan-bar,body:has(#hub.on) .plan-bar,body:has(.life-detail.on) .plan-bar{display:none}
body:has(#approve.ap-open) .plan-bar,body:has(.nd-scrim) .plan-bar{display:none} /* one thing asks at a time */
@starting-style{.plan-bar{opacity:0;transform:translate(-50%,-8px)}}
.plan-bar.s-readonly,.plan-bar.s-past_due{border-color:rgba(var(--k-255-122-182,255,122,182),.5)}
.plan-bar span{line-height:1.35}
.plan-bar .btn{flex:none;border-radius:999px;padding:7px 14px;font-size:12.5px}
.plan-bar-x{flex:none;width:28px;height:28px;border-radius:50%;color:var(--ink-3);font-size:17px;line-height:1}
.plan-bar-x:hover{color:var(--ink-1)}
@media (max-width:640px){
  .plan-bar{border-radius:16px;top:calc(68px + env(safe-area-inset-top));font-size:12.5px;width:calc(100vw - 32px)}
}
.look-mark{border-radius:10px}
.look-opt:disabled .look-mark{opacity:.45}
.look-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.look-t b{font-weight:500;font-size:14px;color:var(--ink-1)}
.look-t small{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.look-sw{flex:none;position:relative;width:46px;height:34px;border-radius:9px;overflow:hidden;border:1px solid var(--hair-2);background:#03040a}
.look-sw i{position:absolute;display:block}
.look-sw i:first-child{left:6px;top:8px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fff3e6,rgba(245,198,107,.5) 55%,transparent 72%)}
.look-sw i:last-child{right:4px;top:4px;bottom:4px;width:22px;border-radius:5px;background:#10121e;border:1px solid rgba(246,239,230,.14)}
.humor-pref{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:18px}
.humor-l{font-size:13px;color:var(--ink-2)}
.humor-chips button{padding:7px 14px;font-size:13px}
.humor-what{margin:0}
.humor-sample{margin:0;font-family:var(--display);font-size:17px;line-height:1.35;color:var(--ink-1)}
.tform-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;font-size:11.5px;color:var(--ink-3)}
.tform-foot span{text-align:right}
.tlist{display:flex;flex-direction:column}
.trow.due .tt{color:var(--pearl)}
.trow.done .tt{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25)}
/* One to-do row (public/js/tasks.js row(), words from taskrow.js; Oct 26): title, then where it came from, then when,
   as one unit. No dividers: rows are set apart by space on the group's one solid surface. Tap opens it in place. */
.trow{--tr-bg:var(--sf-1,#181a22);position:relative;margin-inline:-4px;border-radius:12px}
.tr-face{display:flex;align-items:flex-start;gap:12px;padding:12px 4px}
.trow .tcheck{margin-top:1px}
.tr-open{display:block;width:100%;padding:0;margin:0;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer;border-radius:6px}
.tr-face .tt{font-size:14.5px;line-height:1.4;color:var(--ink-1);overflow-wrap:anywhere;transition:color .15s ease-out}
.trow.open .tt{color:var(--pearl)}
/* the one meta line (Oct 27: "source · due"). Each part stays whole; when a narrow screen can't fit them on one line
   the next part moves down whole, and the "·" before a part that starts a line is clipped away (the parts sit 15px
   apart and the line is clipped 15px in from its start), so no line ever starts with a dot. A very long source
   gives way (…) rather than overflowing. */
.tr-src{display:flex;flex-wrap:wrap;align-items:baseline;margin-top:3px;margin-inline-start:-15px;font-size:12.5px;line-height:1.45;color:var(--ink-2);min-width:0;clip-path:inset(-12px 0 -12px 15px)}
html[dir=rtl] .tr-src{clip-path:inset(-12px 15px -12px 0)}
.tr-p{position:relative;display:flex;min-width:0;margin-inline-start:15px;white-space:nowrap;max-width:calc(100% - 15px)}
.tr-p::before{content:"\00b7";position:absolute;inset-inline-start:-10px;color:var(--ink-3);text-decoration:none;pointer-events:none}
.tr-src .tw{font-weight:500}
.tr-o{min-width:0;overflow:hidden;text-overflow:ellipsis}
.tr-w{white-space:normal;color:var(--ink-3);font-variant-numeric:tabular-nums}
.trow.due .tr-w{color:rgba(var(--k-245-198-107,245,198,107),.85)}
.tr-from{position:relative;padding:0;border:0;background:none;font:inherit;color:var(--ink-2);text-align:start;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.2);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .15s ease-out,text-decoration-color .15s ease-out}
.tr-from{padding-block:8px;margin-block:-8px}
.tr-from:hover{color:var(--ink-1);text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.55)}
.tr-from:active{opacity:.7}
.tr-face .tm{gap:0;margin-top:2px;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tr-face .tm>span+span::before{content:"\00b7";margin-inline:7px}
.tr-note{margin-top:5px;font-size:12.5px;line-height:1.45;color:var(--ink-3);white-space:pre-line;overflow-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;overflow:hidden}
html[dir=rtl] .tr-note{text-align:right}
.trow.open .tr-note{display:block;-webkit-line-clamp:unset;line-clamp:none;color:var(--ink-2)}
.tr-note a{color:var(--ice);text-decoration:underline;text-decoration-color:rgba(var(--k-92-225-255,92,225,255),.35);text-underline-offset:2px}
.tr-more{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .24s cubic-bezier(.23,1,.32,1),opacity .16s ease-out}
.trow.open .tr-more{grid-template-rows:1fr;opacity:1}
.tr-more-in{min-height:0;overflow:hidden}
/* what NOVA decided for a monthly one or a bill, in plain words, with Change (the same editor as Edit) */
.tr-rule{display:flex;align-items:flex-start;gap:12px;margin-top:8px;padding:9px 12px;border-radius:12px;background:rgba(var(--k-92-225-255,92,225,255),.05);border:1px solid rgba(var(--k-92-225-255,92,225,255),.14)}
.tr-rule ul{flex:1;min-width:0;margin:0;padding:0;list-style:none;display:grid;gap:3px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.tr-rule-x{flex:none;min-height:32px;font-size:12.5px;color:var(--ice);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-92-225-255,92,225,255),.35)}
.tr-rule-x:active{transform:scale(.97)}
@media (hover:none){.tr-rule-x{min-height:44px}}
.tr-acts,.tr-later{display:flex;flex-wrap:wrap;gap:6px;padding-top:10px}
.tr-later{padding-top:8px}.tr-later[hidden]{display:none}
.tr-a,.tr-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 13px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font-size:12.5px;white-space:nowrap;transition:color .15s ease-out,border-color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.tr-a svg{width:14px;height:14px;flex:none}
.tr-a:hover,.tr-a[aria-expanded=true]{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.34);background:rgba(var(--k-246-239-230,246,239,230),.04)}
.tr-a.rm:hover{color:var(--rose);border-color:rgba(var(--k-255-122-182,255,122,182),.5);background:rgba(var(--k-255-122-182,255,122,182),.06)}
.tr-chip{border-color:rgba(var(--k-245-198-107,245,198,107),.3)}
.tr-chip:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.tr-a:active,.tr-chip:active{transform:scale(.97)}
@media (hover:none){.tr-a,.tr-chip{min-height:44px}}
.tr-quick{display:none}
@media (hover:hover) and (pointer:fine){
  .tr-quick{display:flex;position:absolute;inset-inline-end:0;top:7px;align-items:center;gap:2px;padding-inline-start:36px;background:linear-gradient(270deg,var(--tr-bg) 72%,transparent);opacity:0;pointer-events:none;transition:opacity .15s ease-out}
  html[dir=rtl] .tr-quick{background:linear-gradient(90deg,var(--tr-bg) 72%,transparent)}
  .trow:hover .tr-quick,.trow:focus-within .tr-quick{opacity:1;pointer-events:auto}
  .trow.open .tr-quick{display:none}
  .tr-quick button{display:grid;place-items:center;min-width:32px;height:32px;padding:0 9px;border-radius:999px;font-size:12.5px;color:var(--ink-3);transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
  .tr-quick button svg{width:15px;height:15px}
  .tr-quick button:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.07)}
  .tr-quick button.rm:hover{color:var(--rose)}
  .tr-quick button:active{transform:scale(.95)}
}
.trow.sw.sw-live>.tr-face{background:var(--tr-bg)}
@media (prefers-reduced-motion:reduce){.tr-more,.tr-quick,.tr-face .tt{transition:none}}
.tcheck{flex:none;width:20px;height:20px;margin-top:1px;border-radius:50%;border:1.5px solid var(--hair-2);position:relative;transition:border-color .2s,background .2s,transform .15s var(--ease)}
.tcheck:hover{border-color:var(--gold)}
.tcheck:active{transform:scale(.9)}
.tcheck.on{border-color:var(--gold);background:var(--gold)}
.tcheck.on::after{content:"";position:absolute;left:6px;top:2.5px;width:5px;height:9px;border:solid #1d1408;border-width:0 2px 2px 0;transform:rotate(45deg)}
.tmain{flex:1;min-width:0}
.tt{font-size:14px;line-height:1.4;color:var(--ink-1)}
.tf textarea{width:100%;min-height:44px;resize:vertical;background:transparent;border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:8px 10px}
.tlists{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 0 10px;padding-bottom:2px}
.tlists::-webkit-scrollbar{display:none}
.tlists button{flex:none;display:inline-flex;align-items:center;gap:6px}
.tlists small{font-size:11px;color:var(--ink-3)}
.tquick{margin:0 0 8px}.tquick .tin{width:100%;padding:11px 14px;border:1px solid var(--hair-2);border-radius:12px;background:rgba(var(--k-255-255-255,255,255,255),.03)}.tquick .tin:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
/* to-dos on her list twice: one quiet line, opened to tidy one by one (public/js/once.js) */
.tdbl{margin:10px 0 14px;border:1px solid var(--hair-2);border-radius:14px;background:rgba(var(--k-245-198-107,245,198,107),.035)}
.tdbl-bar{display:flex;align-items:center;justify-content:space-between;gap:0 12px;flex-wrap:wrap;padding:2px 6px 2px 14px;font-size:13.5px;color:var(--ink-2)}
.tdbl-bar>span:first-child{display:inline-flex;align-items:center;gap:9px;padding-block:8px}
.tdbl-bar>span:first-child::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.6)}
.tdbl-acts{display:flex;align-items:center;gap:2px;margin-inline:-10px 0}
.tdbl-acts .link{display:inline-flex;align-items:center;min-height:44px;padding-inline:10px;font-size:13px}
.tdbl-list{border-top:1px solid var(--hair-2);padding:2px 14px 4px}
.tdbl-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
.tdbl-row+.tdbl-row{border-top:1px solid var(--hair-1,var(--hair-2))}
.tdbl-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.tdbl-t b{font-weight:500;color:var(--ink-1);overflow-wrap:anywhere}
.tdbl-t small{font-size:12px;color:var(--ink-3)}
.tdbl-keep{flex:none;min-height:44px;padding-inline:16px}
.tfoot-acts{display:flex;gap:14px;white-space:nowrap}
.tm{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:3px;font-size:12px;color:var(--ink-3)}
.tw{display:inline-flex;align-items:center;gap:5px;color:rgba(var(--c),.95)}
.tw::before{content:"";width:6px;height:6px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 6px rgba(var(--c),.7)}
.tsug{padding:12px 14px;margin:0 0 8px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.25);background:rgba(var(--k-245-198-107,245,198,107),.04)}
.twhy{margin:4px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.tsug-acts{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-top:10px}
.tsug-more{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;margin-top:10px;padding-top:9px;border-top:1px solid rgba(var(--k-246-239-230,246,239,230),.07)}
.tdone-btn{display:inline-flex;align-items:center;gap:7px;padding:4px 2px;font-size:12.5px;color:var(--ink-2);transition:color .15s}
.tdone-btn .tcheck{width:17px;height:17px;margin:0}
.tdone-btn:hover{color:var(--ink-1)}.tdone-btn:hover .tcheck{border-color:var(--gold)}
.tdone-btn:disabled .tcheck{border-color:var(--gold);background:var(--gold)}
.tsnooze{display:inline-flex;gap:10px;padding-left:10px;border-left:1px solid var(--hair-2)}
.tsnooze[hidden]{display:none}
.tsug{transition:opacity .25s var(--ease),transform .25s var(--ease)}
.tsug.gone{opacity:0;transform:translateX(12px)}
.thidden{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:-2px 0 12px;font-size:12px;color:var(--ink-3)}
.thidden .link{font-size:12px}
.tlist-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px;font-size:12px}
.tlist-bar .link{font-size:12px}
.tdone{margin-top:18px}
.tdone summary{cursor:pointer;font-size:11.5px;letter-spacing:.08em;color:var(--ink-3)}
.tfoot{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:22px;padding-top:12px;border-top:1px solid var(--hair);font-size:12px;color:var(--ink-3)}
.sync-line{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.sync-line .link{font-size:12px;margin-left:4px}
.sdot{width:6px;height:6px;border-radius:50%;background:rgb(111,242,196);box-shadow:0 0 6px rgba(var(--k-111-242-196,111,242,196),.6);flex:none}
.sdot.quiet{background:var(--gold);box-shadow:0 0 6px rgba(var(--k-245-198-107,245,198,107),.6)}
.sdot.reconnect{background:rgb(255,122,122);box-shadow:0 0 6px rgba(var(--k-255-122-122,255,122,122),.6)}
.sgw{display:flex;gap:6px;align-items:stretch}
.sgw .sg{flex:1;min-width:0}
.sg-x{flex:none;width:34px;border-radius:14px;border:1px solid transparent;font-size:16px;color:var(--ink-3);transition:color .2s,border-color .2s}.sg-x:hover{color:var(--ink-1);border-color:var(--hair-2)}
.ld-ctx{margin:14px 0 4px}.ld-ctx-n{margin:0 0 6px;padding-left:10px;border-left:2px solid rgba(var(--c),.45);font-size:13px;line-height:1.45;color:var(--ink-2)}
.ld-ctx-open{font-size:12.5px;color:var(--ink-2);padding:7px 12px;border-radius:999px;border:1px dashed rgba(var(--c),.4)}.ld-ctx-open:hover{color:var(--ink-1)}
.ld-ctx-f{display:flex;flex-direction:column;gap:8px}.ld-ctx-f textarea{width:100%;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:12px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:10px 12px;resize:vertical}.ld-ctx-f .btn{align-self:flex-start}
.sg-add{flex:none;padding:0 12px;border-radius:14px;border:1px dashed rgba(var(--c),.35);font-size:12px;color:var(--ink-2);transition:border-color .2s,color .2s}
.sg-add:hover{border-style:solid;border-color:rgba(var(--c),.65);color:var(--ink-1)}
.sg-add:disabled{opacity:.6}
/* a reminder, materialising on the main screen */
.btn.danger{border-color:rgba(var(--k-255-122-122,255,122,122),.55);color:var(--h-ffb4ac,#ffb4ac);background:rgba(var(--k-255-122-122,255,122,122),.08)}
.btn.danger:hover:not(:disabled){background:rgba(var(--k-255-122-122,255,122,122),.16)}
.btn.danger:disabled{opacity:.45;cursor:not-allowed}
.del-form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.del-form input{padding:10px 12px;border-radius:10px;border:1px solid rgba(var(--k-255-122-122,255,122,122),.35);background:rgba(var(--k-0-0-0,0,0,0),.3);color:var(--ink-1);font:inherit;font-size:14px}
.del-form input:focus-visible{outline:2px solid rgba(var(--k-255-122-122,255,122,122),.7);outline-offset:1px}
.del-form.exp input{border-color:var(--hair-2)}.del-form.exp input:focus-visible{outline:1.5px solid var(--gold)}
/* Download my data: how far the ZIP has got (a thin gold line that fills), then the download */
.exp-row{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:10px 0 4px}
.exp-row .t{flex:1 1 200px;font-size:14px;line-height:1.4;color:var(--ink-1);font-variant-numeric:tabular-nums}
.exp-row.ready .btn{min-height:44px}
.exp-bar{flex:1 1 100%;height:4px;border-radius:999px;background:rgba(var(--k-255-255-255,255,255,255),.08);overflow:hidden}
.exp-bar i{display:block;height:100%;border-radius:inherit;background:var(--gold);transform-origin:left center;transition:transform .28s var(--ease)}
[dir=rtl] .exp-bar i{transform-origin:right center}
@media (prefers-reduced-motion:reduce){.exp-bar i{transition:none}}
/* Privacy & security buttons (Nov 1): Download my data, Ask by email and Delete my account are one quiet pill each,
   44px tall, left-aligned (right in Arabic) 14px under the words they act on, on phone and desktop alike.
   Download and Ask are the quiet outline; Delete is the same pill in rose outline and text, never a filled block.
   The confirm steps (Prepare my download, Delete everything) use the same pill; what each button does is unchanged. */
.exp-area>.btn,.exp-row.ready .btn,.del-acct>.btn,.del-form .add .btn,.policies>.row:not(.pol) .btn-sm{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:999px;font-size:13.5px;font-weight:500;line-height:1.2;text-decoration:none;background:transparent;color:var(--ink-1);border:1px solid var(--hair-2);transition:border-color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.exp-area>.btn:hover:not(:disabled),.exp-row.ready .btn:hover:not(:disabled),.del-form.exp .add .btn:hover:not(:disabled),.policies>.row:not(.pol) .btn-sm:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.42)}
.exp-area>.btn:active:not(:disabled),.exp-row.ready .btn:active:not(:disabled),.del-acct>.btn:active,.del-form .add .btn:active:not(:disabled),.policies>.row:not(.pol) .btn-sm:active{transform:scale(.97)}
.exp-area>.btn,.del-acct>.btn{margin-top:14px}
/* even rhythm: Download your data gets the same breathing room below it as the sign-in block above it */
.del-acct.exp-box{margin-bottom:18px}
.cz-part[data-set=deleteAccount]{margin-top:14px}
.del-acct>.btn.danger,.del-form .add .btn.danger{background:transparent;color:var(--h-ffb4ac,#ffb4ac);border-color:rgba(var(--k-255-122-122,255,122,122),.42)}
.del-acct>.btn.danger:hover,.del-form .add .btn.danger:hover:not(:disabled){background:rgba(var(--k-255-122-122,255,122,122),.08);border-color:rgba(var(--k-255-122-122,255,122,122),.6)}
.del-form .add{gap:10px;margin-top:6px}.del-form .add .link{min-height:44px;padding:0 6px}
/* Ask us by email: the words, then the pill under them (like Download and Delete), not a box squeezed beside them */
.policies>.row:not(.pol){flex-direction:column;align-items:stretch;gap:0;border-bottom:0;padding-bottom:4px}
.policies>.row:not(.pol) .btn-sm{align-self:flex-start;margin-top:14px}
/* the policy links: a straight hairline between rows (the shared clickable row's 10px corners bent its divider) */
.policies>.row.pol{border-radius:0;cursor:pointer}
@media (prefers-reduced-motion:reduce){.exp-area>.btn,.exp-row.ready .btn,.del-acct>.btn,.del-form .add .btn,.policies>.row:not(.pol) .btn-sm{transition:none}}
.remind{position:absolute;z-index:7;right:14px;bottom:120px;width:300px;padding:16px 18px;border-radius:18px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:rgba(var(--k-10-10-20,10,10,20),.97);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 18px 44px rgba(var(--k-0-0-0,0,0,0),.5);opacity:0;transform:translateY(10px) scale(.98);transition:opacity .45s var(--ease),transform .55s var(--ease)}
.remind.on{opacity:1;transform:none}
/* alarms (public/js/alarms.js): one quiet line in To-dos, and the ringing card */
.alm{margin-top:26px}
/* Alarms in Scheduled (Oct 27): a small, quiet section, never the headline. One line per alarm, a small Add,
   one quiet Default sound row; each alarm's sound is in its own sheet */
.alm-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.alm-h .feat-g{margin-bottom:6px}
.alm-add{font-size:13px;color:var(--ink-2);min-height:44px;padding:0 4px;text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px;transition:color .15s ease-out,transform .16s cubic-bezier(.23,1,.32,1)}
.alm-add:hover{color:var(--ink-1)}
.alm-add:active{transform:scale(.97)}
.alm-row{display:flex;align-items:center;gap:12px;min-height:48px;border-bottom:1px solid var(--hair);transition:opacity .2s ease-out}
.alm-row:last-child{border-bottom:0}
.alm-row.off .alm-main{opacity:.5}
.alm-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:10px;padding:10px 0;margin:0;border:0;background:none;color:inherit;font:inherit;text-align:start;cursor:pointer;border-radius:8px;transition:opacity .2s ease-out}
.alm-main:active{opacity:.7}
.alm-t{flex:none;font-size:15px;font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.alm-s{display:flex;min-width:0;gap:0 8px;font-size:13px;color:var(--ink-3);line-height:1.4;white-space:nowrap;overflow:hidden}
.alm-s>span+span::before{content:"·";margin-inline-end:8px;color:var(--ink-3)}
.alm-s>span:empty{display:none}
.alm-l{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.alm-row .ag-sw[aria-checked="true"]{background:rgba(var(--k-245-198-107,245,198,107),.62)}
.alm-hint{margin:0 0 4px;font-size:13px;color:var(--ink-3);line-height:1.45}
.alm-dflt{display:flex;gap:8px;align-items:baseline;min-height:40px;padding:0;font-size:13px;color:var(--ink-3);transition:color .15s ease-out}
.alm-dflt:hover{color:var(--ink-2)}
.alm-dflt-v{color:var(--ink-2)}
.alm-dflt-v::after{content:" \203A";color:var(--ink-3)}
.alm-snd-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;font-size:13px;color:var(--ink-2)}
.alm-snd-in{display:flex;align-items:center;gap:8px;min-width:0}
.alm-snd{min-height:40px;max-width:100%;padding:0 12px;border:1px solid var(--hair-2);border-radius:12px;background:rgba(var(--k-255-255-255,255,255,255),.03);color:var(--ink-1);font:inherit;font-size:14px}
.alm-hear{flex:none;width:40px;height:40px;border-radius:999px;border:1px solid var(--hair-2);display:grid;place-items:center;font-size:11px;color:var(--ink-2);transition:color .15s,border-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.alm-hear:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.alm-hear:active{transform:scale(.95)}
html[dir=rtl] .alm-hear span{display:inline-block;transform:scaleX(-1)}
.alm-del{font-size:13px;color:var(--rose)}
.alm-acts-r{display:flex;gap:8px}
.alm-ed{display:flex;flex-direction:column;gap:12px;padding:14px 0 16px;border-bottom:1px solid var(--hair)}
.alm-ed-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.alm-time{font:inherit;font-size:28px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-1);background:var(--sf-2);border:1px solid var(--hair-2);border-radius:14px;padding:6px 12px;min-height:52px;color-scheme:dark}
.alm-time:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.alm-rep{display:flex;flex-wrap:wrap;gap:6px}
.alm-rep button{min-height:36px;padding:6px 13px;font-size:13px;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.alm-rep button[aria-checked="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.alm-rep button:active,.alm-days button:active{transform:scale(.97)}
.alm-days{display:flex;gap:6px}
.alm-days[hidden]{display:none}
.alm-days button{width:40px;height:40px;border-radius:999px;border:1px solid var(--hair-2);font-size:13px;font-weight:600;color:var(--ink-3);transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.alm-days button[aria-pressed="true"]{color:var(--h-1d1408,#1d1408);background:var(--gold);border-color:var(--gold)}
.alm-ed .tin{width:100%;flex:none;padding:11px 14px;border:1px solid var(--hair-2);border-radius:12px;background:rgba(var(--k-255-255-255,255,255,255),.03)}
.alm-ed .tin:focus{border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.alm-acts{display:flex;align-items:center;justify-content:space-between;gap:8px}
.remind.alarm-ring{background:#10121f;-webkit-backdrop-filter:none;backdrop-filter:none} /* solid: the greeting never shows through */
.alarm-ring p.alm-ring-t{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:40px;font-weight:500;line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.alarm-ring .rbtns button{min-height:44px;font-size:14px}
.alarm-ring .rbtns .yes:active,.alarm-ring .rbtns .no:active{transform:scale(.97)}
.remind .who{display:flex;gap:10px;align-items:center;font-size:11px;letter-spacing:.14em;color:var(--gold);margin-bottom:8px}
.remind .who .tw{letter-spacing:.02em;font-size:11.5px}
.remind .r-listen{margin-left:auto;padding:5px 11px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.4);background:transparent;color:var(--ink-2);font:inherit;font-size:12px;letter-spacing:.02em;cursor:pointer;transition:background-color .2s,color .2s,transform .16s var(--ease)}
.remind .r-listen:hover{color:var(--ink-1);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.remind .r-listen.on{color:var(--h-1d1408,#1d1408);background:var(--gold);border-color:var(--gold)}
.remind .r-listen:active{transform:scale(.97)}
.remind .r-listen:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* a card that just popped up: Hear it glows for a moment so she knows it can be read to her (it never starts on its own) */
.btn.invite{box-shadow:0 0 0 0 rgba(var(--k-245-198-107,245,198,107),.55);animation:invite 1.6s var(--ease) 3}
@keyframes invite{0%{box-shadow:0 0 0 0 rgba(var(--k-245-198-107,245,198,107),.55)}70%{box-shadow:0 0 0 10px rgba(var(--k-245-198-107,245,198,107),0)}100%{box-shadow:0 0 0 0 rgba(var(--k-245-198-107,245,198,107),0)}}
.remind p{margin:0;font-family:var(--display);font-size:20px;line-height:1.25;color:var(--ink-1)}
.remind .via{margin-top:6px;font-size:12.5px;color:var(--ink-3);line-height:1.45}
.rbtns{display:flex;gap:6px;margin-top:14px}
.rbtns button{flex:1;padding:9px 6px;border-radius:999px;font-size:12.5px;font-weight:600}
.rbtns .yes{background:var(--gold);color:var(--h-1d1408,#1d1408)}
.rbtns .no{border:1px solid var(--hair-2);color:var(--ink-2)}
#stage.in-life .remind,#stage.in-life .upcoming{opacity:0!important;pointer-events:none!important}
/* the week ahead */
.upcoming{position:absolute;z-index:14;top:74px;left:max(24px,calc(50% - 560px));width:min(440px,calc(100vw - 48px));max-height:calc(100vh - 110px);display:flex;flex-direction:column;border-radius:22px;border:1px solid var(--hair-2);background:var(--h-070811,#070811);box-shadow:0 30px 80px rgba(var(--k-0-0-0,0,0,0),.55);opacity:0;transform:translateY(-8px);transform-origin:top left;transition:opacity .3s var(--ease),transform .4s var(--ease)}
.upcoming.on{opacity:1;transform:none}
.up-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 6px}
.up-head h3{margin:0;font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.up-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:8px 14px 12px;border-bottom:1px solid var(--hair)}
.up-strip button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 7px;border-radius:12px;color:var(--ink-3);transition:background .2s,color .2s}
.up-strip button:hover{color:var(--ink-1)}
.up-strip button[aria-selected="true"]{background:rgba(var(--k-245-198-107,245,198,107),.1);color:var(--ink-1)}
.up-strip .dw{font-size:11px;letter-spacing:.06em}
.up-strip b{font-family:var(--display);font-weight:400;font-size:19px;font-variant-numeric:lining-nums}
.up-strip .dots{display:flex;gap:2px;height:4px}
.up-strip .dots i{width:4px;height:4px;border-radius:50%;background:rgba(var(--k-92-225-255,92,225,255),.8)}
.up-strip .dots i.t{background:var(--gold)}
.up-list{flex:1;overflow:auto;padding:8px 20px 6px}
.up-allday{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}
.up-allday span{padding:5px 10px;border-radius:8px;background:rgba(var(--k-92-225-255,92,225,255),.08);border:1px solid rgba(var(--k-92-225-255,92,225,255),.25);font-size:12.5px;color:var(--ink-1)}
.up-ev,.up-task{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-bottom:1px solid var(--hair);color:inherit;text-decoration:none}
.up-ev:hover .tt{color:var(--pearl)}
.up-t{flex:none;width:70px;white-space:nowrap;display:flex;flex-direction:column;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.up-t small{font-size:11px;color:var(--ink-3)}
.up-ev .up-m{border-left:2px solid rgba(var(--k-92-225-255,92,225,255),.6);padding-left:10px}
.up-task .tcheck{margin-top:0}
.up-task .up-t{width:62px}
.up-task.over .up-t{color:rgb(255,160,140)}
.up-m{flex:1;min-width:0}
.up-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px 16px;border-top:1px solid var(--hair);font-size:12px}
.up-sync{display:flex;flex-direction:column;gap:3px;min-width:0}
.sy{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sy::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink-3);flex:none}
.sy.ok::before{background:rgb(111,242,196)}.sy.bad::before{background:rgb(255,122,122)}
.up-acts{display:flex;gap:14px;flex:none}
/* the week while it loads: the same frame and padding as the real one, quiet rows that breathe, then the week fades in */
.up-strip.up-wait button{cursor:default;color:var(--ink-3)}
.up-strip.up-wait button[aria-selected="true"]{color:var(--ink-2)}
.up-wait-l{display:flex;align-items:center;gap:8px;margin:0;padding:11px 0;font-size:12.5px;color:var(--ink-3);border-bottom:1px solid var(--hair)}
.up-wait-dot{width:6px;height:6px;border-radius:50%;background:rgba(var(--k-92-225-255,92,225,255),.85);box-shadow:0 0 8px rgba(var(--k-92-225-255,92,225,255),.6);animation:upBreathe 1.6s ease-in-out infinite}
.up-sk{display:flex;align-items:flex-start;gap:12px;padding:11px 0 10px;border-bottom:1px solid var(--hair)}
.up-sk i{display:block;height:10px;border-radius:5px;background:rgba(var(--k-246-239-230,246,239,230),.07);animation:upBreathe 1.6s ease-in-out infinite}
.up-sk-t{flex:none;width:52px;margin-top:2px}
.up-sk-m{flex:1;display:flex;flex-direction:column;gap:8px;border-left:2px solid rgba(var(--k-92-225-255,92,225,255),.18);padding-left:10px}
.up-sk-m i:first-child{width:62%;height:12px}.up-sk-m i:last-child{width:38%;animation-delay:.15s}
.up-sk + .up-sk i{animation-delay:.25s}
.up-foot.up-wait .up-sync{gap:8px;width:100%}
.up-sk-l{display:block;height:9px;width:58%;border-radius:5px;background:rgba(var(--k-246-239-230,246,239,230),.06)}.up-sk-l.short{width:30%}
.up-in{animation:upIn .22s cubic-bezier(.23,1,.32,1) both}
@keyframes upBreathe{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes upIn{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.up-wait-dot,.up-sk i{animation:none}.up-in{animation:none}}
@media (max-width:760px){
  .up-entry span{display:none}.up-entry{padding:8px;margin-left:0}
  .upcoming{left:10px;right:10px;width:auto;top:auto;bottom:10px;max-height:82vh;transform:translateY(16px)}
  .remind{left:16px;right:16px;width:auto;bottom:108px}
  /* phones (Oct 17): each field stacks, its name above and the control the full width, so nothing runs off the
     right edge (a wide date picker, the "Remind me by" chips) at any text size, in any language */
  .tf{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px}
  .tf>span{font-size:12.5px;color:var(--ink-3)}
  .tf input,.tf select,.tf textarea{display:block;width:100%;max-width:100%;min-width:0;min-height:44px}
  .tf input[type="datetime-local"],.tf input[type="time"]{-webkit-appearance:none;appearance:none;text-align:start}
  .tf input::-webkit-date-and-time-value{text-align:start}
  .tf .tchips,.tf .tdays,.tf .tkinds{width:100%;flex-wrap:wrap}
  .tf .tchips button,.tf .tkinds button{min-height:44px;padding:0 16px;font-size:13px}
  .tf .tdays button{width:44px;height:44px;padding:0}
  .trow-in .btn{flex:none;min-height:44px}
  .tform-foot .link{min-height:44px}
  .tform-foot span{display:none}
}
@media (prefers-reduced-motion:reduce){.remind,.upcoming{transition:opacity .2s}.btn.invite{animation:none;box-shadow:0 0 0 2px rgba(var(--k-245-198-107,245,198,107),.5)}}

/* the home screen's personal start: one short note, up to three next steps */
.brief{margin:14px auto 0;max-width:560px;opacity:0;transform:translateY(6px);transition:opacity .6s var(--ease),transform .7s var(--ease)}
.brief.on{opacity:1;transform:none}
.brief .mbrief.mb-later,.brief .brief-sugg.mb-later{display:none}
/* a lot open: the cards scroll in the room left under the header (app.js fitGreet), the greeting stays put */
.brief.fit{overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 calc(100% - 28px),transparent);mask-image:linear-gradient(#000 calc(100% - 28px),transparent);padding-bottom:18px}
.brief.mb-open{max-height:min(60vh,640px);overflow-y:auto;overscroll-behavior:contain;padding-right:4px}
.mb-more{display:block;margin:-4px auto 0;padding:6px 14px;border:1px solid var(--hair-2);border-radius:999px;background:rgba(var(--k-10-11-22,10,11,22),.55);color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:border-color .2s,color .2s,transform .16s var(--ease)}
.mb-more:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}.mb-more:active{transform:scale(.97)}
.brief:not(.mb-open) .ntc.ntc-later,.brief:not(.mb-open) .sgs.ntc-later{display:none} /* the rest of what NOVA noticed opens with home's one "n more for you" */
/* short phones: the greeting, the idea and one card share what's left above the dock, and the card area scrolls */
@media (max-width:760px) and (max-height:760px){.greet h1{font-size:20px}.greet .hello{margin-bottom:2px}.brief{max-height:calc(100svh - 440px);overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 82%,transparent);mask-image:linear-gradient(#000 82%,transparent);padding-bottom:18px}}
/* phones at a bigger Text size: the same, so the taller words never push the greeting up under the top bar */
@media (max-width:760px){html[data-text-size] .brief{max-height:calc(100svh - 480px);overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 82%,transparent);mask-image:linear-gradient(#000 82%,transparent);padding-bottom:18px}}
@media (max-width:760px) and (max-height:760px){html[data-text-size] .brief{max-height:calc(100svh - 460px)}}
.brief-note{margin:0 auto 12px;max-width:600px;font-size:14px;line-height:1.5;color:var(--ink-2);text-shadow:0 0 14px rgba(var(--k-3-4-10,3,4,10),.9)}
.brief-acts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.brief .suggest{font-size:13px;color:var(--ink-1);border:1px solid var(--hair-2);border-radius:999px;padding:8px 14px;background:rgba(var(--k-10-11-22,10,11,22),.55);transition:border-color .2s,background .2s,transform .15s var(--ease)}
.brief .suggest:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-245-198-107,245,198,107),.07)}
.brief .suggest:active{transform:scale(.97)}
/* morning in her ear: one calm card, tinted by how she is this morning */
.mbrief{--e:246,239,230;position:relative;text-align:left;margin:0 0 12px;padding:14px 16px 12px;border-radius:16px;border:1px solid rgba(var(--e),.22);background:linear-gradient(180deg,rgba(var(--e),.07),rgba(var(--k-10-11-22,10,11,22),.4))}
.mbrief.e-low{--e:255,122,182}.mbrief.e-mid{--e:245,198,107}.mbrief.e-high{--e:111,242,196}
.mbrief-h{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.mbrief-k{flex:none;font-size:11px;letter-spacing:.16em;color:var(--ink-3)}
.mbrief-e{font-size:11px;color:rgba(var(--e),.95);text-transform:capitalize}
.mbrief-h{cursor:pointer;margin-right:-8px;margin-top:-6px}
.mbrief-x,.mbrief-fold{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:none;border:0;color:var(--ink-2);font-size:22px;line-height:1;cursor:pointer;padding:0;transition:background .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.mbrief-fold{margin-left:auto}
.mbrief-x:hover,.mbrief-fold:hover{background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-1)}
.mbrief-x:active,.mbrief-fold:active{transform:scale(.94)}
.mbrief-fold i{width:9px;height:9px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.mbrief.folded .mbrief-fold i{transform:translateY(2px) rotate(225deg)}
.mbrief.folded>:not(.mbrief-h){display:none}
.mbrief.folded{padding-bottom:8px}.mbrief.folded .mbrief-h{margin-bottom:0}
.mbrief-h .mbrief-e{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbrief-not{margin-left:auto;background:none;border:0;padding:8px 4px;font:inherit;font-size:13px;color:var(--ink-3);cursor:pointer}
.mbrief-not:hover{color:var(--ink-1)}
.mbrief-t{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink-1);white-space:pre-line}
.mbrief-a{display:flex;gap:12px;align-items:center;margin-top:10px}
.mbrief.e-prep{--e:168,214,248}
.mbrief.e-noticed{--e:196,181,253}.mbrief.e-noticed .mbrief-e{text-transform:none}
.mbrief.e-story{--e:236,212,165}
/* your story: the cinematic player */
.story{--c:236,212,165;position:fixed;inset:0;height:100vh;height:100dvh;z-index:100;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);overflow:hidden;background:radial-gradient(ellipse 70% 60% at 50% 45%,rgba(var(--k-3-4-10,3,4,10),.9),rgba(var(--k-3-4-10,3,4,10),.97) 45%,#03040a);backdrop-filter:blur(22px) saturate(.7);-webkit-backdrop-filter:blur(22px) saturate(.7);opacity:0;transition:opacity .45s var(--ease);outline:none}
.story.on{opacity:1}
.st-veil{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 46% 34% at 50% 48%,rgba(var(--c),.22),transparent 70%);transition:background .9s}
.st-wait{align-self:center;justify-self:center;grid-row:3;color:var(--ink-3);font-size:14px}
.st-top{display:flex;align-items:center;gap:12px;min-width:0;padding:max(18px,env(safe-area-inset-top)) 22px 0}
.st-k{font-size:11px;letter-spacing:.2em;color:var(--ink-3);white-space:nowrap}
.st-title{font-family:var(--display);font-size:16px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-x{margin-left:auto;background:none;border:0;color:var(--ink-2);font-size:28px;line-height:1;cursor:pointer;padding:0 4px}
.st-dots{display:flex;gap:6px;padding:12px 22px 0}
.st-dot{flex:1;height:3px;border:0;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.14);cursor:pointer;padding:0;transition:background .3s}
.st-dot.past{background:rgba(var(--c),.55)}.st-dot.on{background:rgb(var(--c))}
.st-stage{position:relative;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:24px 72px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;cursor:pointer}
.st-stage::-webkit-scrollbar{display:none}
.st-slide{width:100%;max-width:720px;min-width:0;margin:auto;text-align:center;overflow-wrap:anywhere;opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .6s var(--ease)}
.st-slide.in{opacity:1;transform:none}
.st-label{margin:0 0 8px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:rgba(var(--c),.9)}
.st-big{font-family:var(--display);font-size:clamp(56px,min(16vw,19vh),160px);line-height:.95;color:var(--ink-1);letter-spacing:-.02em;text-shadow:0 0 40px rgba(var(--c),.35)}
.st-unit{margin:6px 0 18px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:rgba(var(--c),.95)}
.st-head{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(24px,min(4.6vw,6.5vh),46px);line-height:1.12;color:var(--ink-1);text-wrap:balance}
.k-open .st-head,.k-close .st-head{font-size:clamp(30px,min(6vw,8vh),64px)}
.st-line{margin:14px auto 0;max-width:560px;font-size:16px;line-height:1.55;color:var(--ink-2);text-wrap:pretty}
.st-extra{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:22px}
.st-chip{padding:7px 14px;border-radius:999px;border:1px solid rgba(var(--c),.4);color:var(--ink-1);font-size:13px;background:rgba(var(--c),.08);opacity:0;transform:translateY(8px);animation:st-in .6s var(--ease) forwards;animation-delay:var(--d,0s)}
@keyframes st-in{to{opacity:1;transform:none}}
.st-slide>.btn{margin-top:24px}
.st-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.45);color:var(--ink-1);font-size:24px;line-height:1;cursor:pointer;transition:border-color .2s,transform .16s var(--ease)}
.st-nav:active{transform:translateY(-50%) scale(.95)}.st-nav:disabled{opacity:.25;cursor:default}
.st-prev{left:14px}.st-next{right:14px}
.st-foot{display:flex;gap:16px;align-items:center;justify-content:center;padding:0 22px 26px}
.st-lib{position:absolute;left:50%;bottom:0;z-index:3;width:min(560px,100%);max-height:72%;overflow:auto;overscroll-behavior:contain;transform:translateX(-50%);padding:14px 18px max(18px,env(safe-area-inset-bottom));border-radius:20px 20px 0 0;border:1px solid var(--hair-2);border-bottom:0;background:rgba(var(--k-14-16-26,14,16,26),.98);box-shadow:0 -20px 60px rgba(var(--k-0-0-0,0,0,0),.6);display:flex;flex-direction:column;gap:2px;animation:st-lib .3s cubic-bezier(.32,.72,0,1)}
@keyframes st-lib{from{transform:translate(-50%,24px);opacity:0}}
.st-lib-top{display:flex;align-items:center;justify-content:space-between;position:sticky;top:-14px;margin:-14px -18px 4px;padding:12px 18px 8px;background:rgba(var(--k-14-16-26,14,16,26),.98)}
.st-lib-top b{font-family:var(--display);font-weight:400;font-size:18px;color:var(--ink-1)}
.st-lib h4{margin:8px 0 4px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}
.st-ch{display:flex;gap:12px;align-items:baseline;width:100%;text-align:left;padding:8px 6px;border:0;border-radius:8px;background:none;color:inherit;font:inherit;cursor:pointer}
.st-ch:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}.st-ch b{font-weight:500;color:var(--ink-1);flex:none}.st-ch span{color:var(--ink-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.st-ch.told span{color:var(--ink-2)}
@media (max-width:640px){.st-nav{display:none}.st-top{padding:max(14px,env(safe-area-inset-top)) 16px 0}.st-dots{padding:10px 16px 0}.st-stage{padding:16px}.st-title{font-size:14px}.st-chip{padding:6px 12px;font-size:12.5px}.st-line{font-size:15px}.st-foot{padding-bottom:max(20px,env(safe-area-inset-bottom))}}
@media (prefers-reduced-motion:reduce){.st-slide{transition:none}.st-chip{animation:none;opacity:1;transform:none}}
.ntc-list{display:grid;gap:10px}
.ntc{padding:10px 0 0;border-top:1px solid rgba(var(--e),.14)}.ntc:first-child{padding-top:2px;border-top:0}
.ntc-t{margin:0;font-size:14px;line-height:1.5;color:var(--ink-1)}
.ntc-w,.ov-ntc-w{display:flex;align-items:center;gap:6px;margin:0 0 3px;font-size:11.5px;letter-spacing:.03em;color:rgba(var(--c,196,181,253),.95)}
.ntc-w::before,.ov-ntc-w::before{content:"";width:5px;height:5px;border-radius:50%;background:rgb(var(--c,196,181,253))}
.ntc-e{margin:4px 0 0;font-size:12px;line-height:1.45;color:var(--ink-3)}
.ntc-a{display:flex;flex-wrap:wrap;gap:0 6px;align-items:center;margin-top:8px}
.prep-l{margin:4px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}.prep-l b{font-weight:500;color:var(--ink-3);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-right:4px}
.brief .suggest.lead{border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
.greet.talking .brief{display:none}
@media (max-width:760px){.brief{margin-top:10px}.brief-note{font-size:13px;margin-bottom:10px}.brief-acts{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}.brief-acts::-webkit-scrollbar{display:none}.brief .suggest{flex:none;padding:8px 13px}}
@media (prefers-reduced-motion:reduce){.brief{transition:opacity .2s}}

.brief-sugg{display:flex;flex-direction:column;gap:6px;margin:0 auto;max-width:520px;text-align:left}
.brief-more{display:block;margin:6px auto 0;min-height:44px;padding:6px 16px;border-radius:999px;font-size:12.5px;color:var(--ink-3);transition:color .2s}
.brief-more:hover{color:var(--ink-1)}
.brief.mb-open>.brief-more{position:sticky;bottom:0;z-index:2;width:100%;margin:10px 0 0;padding:11px 16px;border-radius:14px;border:1px solid var(--hair-2);background:#0b0c18;color:var(--ink-2);box-shadow:0 -14px 22px 2px rgba(var(--k-4-5-12,4,5,12),.92)} /* open: "Show less" stays in reach as the foot of the list, the cards passing under it */
.brief.mb-open>.brief-more:active{transform:scale(.97)}
.brief-more-box{margin-top:10px}
.brief-more-box .brief-sugg{margin-bottom:10px}
.brief-more-box:not([hidden]){animation:ldIn .35s cubic-bezier(.23,1,.32,1) both}
.bs-t b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.brief-sugg[hidden]{display:none}
.bs{display:flex;align-items:center;gap:12px;padding:8px 10px 8px 14px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);background:rgba(var(--k-10-11-22,10,11,22),.62);transition:opacity .3s,transform .3s var(--ease),border-color .2s,background .2s}
.bs.gone{opacity:0;transform:translateY(-4px)}
.bs-ask{cursor:pointer}
.bs-ask:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.bs-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.bs-t b{font-weight:500;font-size:14px;line-height:1.35;color:var(--ink-1)}
.bs-t span{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bs-a{display:flex;align-items:center;gap:4px;flex:none}
.bs-add{padding:6px 14px;border-radius:999px;background:var(--gold);color:var(--h-1d1408,#1d1408);font-size:12.5px;font-weight:600;transition:transform .15s var(--ease)}
.bs-add:active{transform:scale(.95)}
.bs-no{flex:none;width:32px;height:32px;margin-right:-4px;border-radius:50%;font-size:18px;line-height:1;color:var(--ink-3)}
.bs-no:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.bs-go{flex:none;font-size:12px;color:var(--gold)}
@media (max-width:760px){.mbrief-h{display:grid;grid-template-columns:minmax(0,1fr) auto auto;column-gap:2px;row-gap:3px;align-items:center}.mbrief-h .mbrief-k{grid-column:1;grid-row:1}.mbrief-h .mbrief-e{grid-column:1;grid-row:2;white-space:normal;font-size:12.5px}.mbrief-h .mbrief-fold{grid-column:2;grid-row:1/3;margin-left:0}.mbrief-h .mbrief-x{grid-column:3;grid-row:1/3}}
@media (max-width:760px){.brief,.brief.mb-open{max-height:calc(100svh - 440px);overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 88%,transparent);mask-image:linear-gradient(#000 88%,transparent);padding-bottom:18px}}
#brief.mb-open{-webkit-mask-image:none;mask-image:none;padding-bottom:0} /* open: no fade at the foot, where "Show less" is pinned on its own surface */
@media (max-width:760px){.brief-sugg{margin-bottom:10px}.bs{padding:9px 10px 9px 12px}.bs-t b{font-size:13.5px}}
/* Swiping NOVA's suggestions (public/js/suggestswipe.js): the home screen's ideas, a section's "How to lift it" and
   NOVA noticed. Right (left in Arabic) onto her list in gold; a little the other way Not now; all the way Remove in rose.
   On a computer the same choices show when she points at a row or tabs to it; on a phone the × opens them. */
.sgs{--sgs-bg:var(--sf-1,#181a22);border-radius:14px}
.sgs>.sw-under{border-radius:inherit}
.sgs.sw-live>.sw-under{background:rgba(var(--k-8-9-18,8,9,18),.9)}
.sgs.sw-live>.sgs-face{border-radius:inherit}
.bs.sgs-face{--sgs-bg:rgb(var(--k-12-13-24,12,13,24))}
.bs-go{display:block;margin-top:1px;font-size:12px;color:var(--gold)}
.sgs-slot{position:relative}
.sgs-more{flex:none;width:44px;height:44px;margin-inline-end:-8px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);transition:color .15s ease,background-color .15s ease,transform .12s ease-out}
@media (hover:hover){.sgs-more:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}}
.sgs-open .sgs-more{color:var(--ink-1)}
.sgs-more:active{transform:scale(.94)}
.sgs-more svg{width:16px;height:16px}
.sgs-acts{display:none;align-items:center;gap:6px}
.sgs-mini{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font-size:12.5px;white-space:nowrap;transition:color .15s ease,border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.sgs-mini svg{width:14px;height:14px;flex:none}
.sgs-mini:hover{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.34);background:rgba(var(--k-246-239-230,246,239,230),.04)}
.sgs-mini.rm:hover{color:var(--rose);border-color:rgba(var(--k-255-122-182,255,122,182),.5);background:rgba(var(--k-255-122-182,255,122,182),.06)}
.sgs-mini.sgs-add{border-color:rgba(var(--k-245-198-107,245,198,107),.45);color:var(--ink-1)}
.sgs-mini.sgs-add:hover{border-color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.sgs-mini:active{transform:scale(.97)}
.sgs-open .sgs-acts{display:flex}
@media (max-width:760px){.sgs-open .sgs-mini{padding:6px 10px}.sgs-open .sgs-mini svg{display:none}}
.sgs-open .sgs-slot>:not(.sgs-acts):not(.sgs-more){display:none}
.sgs-inline{display:flex;flex-wrap:wrap}
.ntc-a .sgs-mini{min-height:44px;border-color:transparent;padding-inline:10px}
.ntc-a .sgs-mini.sgs-add{border-color:rgba(var(--k-245-198-107,245,198,107),.45);min-height:36px;margin-inline-end:4px}
@media (hover:hover) and (pointer:fine){
  .sgs-more{display:none}
  .sgs-slot>.sgs-acts{display:flex;position:absolute;inset-inline-end:calc(100% + 4px);top:50%;transform:translateY(-50%);padding-inline-start:28px;background:linear-gradient(270deg,var(--sgs-bg) 72%,transparent);opacity:0;pointer-events:none;transition:opacity .14s ease-out}
  html[dir=rtl] .sgs-slot>.sgs-acts{background:linear-gradient(90deg,var(--sgs-bg) 72%,transparent)}
  .sgs:hover .sgs-slot>.sgs-acts,.sgs:focus-within .sgs-slot>.sgs-acts{opacity:1;pointer-events:auto}
}
@media (hover:none){.sgs-mini,.ntc-a .sgs-mini.sgs-add{min-height:44px}}
.sgs-tip{display:flex;align-items:center;gap:8px;margin:6px 0 0;padding:6px 4px 6px 12px;border-radius:12px;background:rgba(var(--k-92-225-255,92,225,255),.06);border:1px solid rgba(var(--k-92-225-255,92,225,255),.2);font-size:12.5px;line-height:1.4;color:var(--ink-2)}
.sgs-tip span{flex:1;min-width:0}
.sgs-tip-x{flex:none;width:44px;height:44px;margin-block:-4px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3)}
/* a swipe on an event only points at its own button (her tap is the OK) */
.sgs-here{box-shadow:0 0 0 2px var(--gold),0 0 0 6px rgba(var(--k-245-198-107,245,198,107),.18)}
.sgs-tip-x svg{width:14px;height:14px}
.sg-slot{flex:none;display:flex;align-items:center;gap:4px}
.ld-panel .ld-sugg>.sgs{border-radius:0}
.ld-panel .ld-sugg>.sgs.sw-live>.sgs-face{border-radius:10px}
.ld-panel .ld-sugg>.sgs+.sgs{border-top:1px solid var(--hair)}
.ld-panel .ld-sugg>.sgs>.sgw,.ld-panel .ld-sugg>.sgs>.ld-act{border-top:0}
.ld-act .bs-a{display:flex;align-items:center;gap:4px;flex:none}

/* choosing NOVA's voice: hear each one right in the list */
.pref-sub{display:block;margin-top:2px;font-size:11.5px;color:var(--ink-3)}
.vfilters{display:flex;flex-direction:column;gap:8px;margin:10px 0 8px}
.vsearch{width:100%;box-sizing:border-box;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);padding:9px 14px;font:inherit;font-size:13px}
.vfrow{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vfrow select{background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);padding:6px 10px;font:inherit;font-size:12.5px;color-scheme:dark;max-width:170px}
.vlist{display:flex;flex-direction:column;max-height:340px;overflow:auto;border:1px solid var(--hair);border-radius:16px;padding:4px}
.vrow{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;cursor:pointer;transition:background .15s}
.vrow:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.vrow.on{background:rgba(var(--k-245-198-107,245,198,107),.08)}
.vrow:focus-visible{outline:1.5px solid var(--gold);outline-offset:-2px}
.vplay{position:relative;flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--hair-2);display:grid;place-items:center;transition:border-color .2s,background .2s,transform .15s var(--ease)}
.vplay:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.vplay:active{transform:scale(.92)}
.vplay:disabled{opacity:.3;cursor:default}
.vplay i{width:0;height:0;border-style:solid;border-width:5.5px 0 5.5px 9px;border-color:transparent transparent transparent var(--ink-1);margin-left:2px}
.vplay.on{background:var(--gold);border-color:var(--gold)}
.vplay.on i{width:9px;height:9px;border:0;margin:0;background:var(--h-1d1408,#1d1408);border-radius:1.5px}
.vplay.on::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);animation:vpulse 1.4s ease-out infinite}
@keyframes vpulse{from{transform:scale(1);opacity:1}to{transform:scale(1.35);opacity:0}}
.vmain{flex:1;min-width:0}
.vname{font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vmeta{font-size:12px;color:var(--ink-3)}
.vbest{margin-left:8px;padding:1px 7px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);font-size:11px;color:var(--gold);vertical-align:1px}
.vuse{flex:none;font-size:12px;color:var(--ink-3);padding:4px 10px;border-radius:999px;border:1px solid transparent}
.vrow:hover .vuse:not(.on){border-color:var(--hair-2);color:var(--ink-1)}
.vuse.on{color:var(--gold)}
.vmore{align-self:center;margin:8px 0}
.vchosen{font-size:13px;color:var(--ink-1)}
@media (prefers-reduced-motion:reduce){.vplay.on::after{animation:none}}
/* Settings rows (public/js/setrow.js): a switch beside its label, one short line, details behind an info tap */
.sheet-body h4.srow-h,.hub-body h4.srow-h,h4.srow-h{margin:30px 0 2px;font-size:17px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-1)}
.sheet-body .vs-sec:first-child h4.srow-h,h4.srow-h:first-child{margin-top:16px}
.vs-sec .humor-what{margin:0;font-size:13.5px;color:var(--ink-2)}
.srow-wrap{border-bottom:1px solid var(--hair)}
.srow{display:flex;align-items:center;gap:16px;min-height:60px;padding:10px 0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.srow-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.srow-t{display:flex;align-items:center;gap:2px;font-size:15px;line-height:1.35;color:var(--ink-1)}
.srow-s{font-size:13.5px;line-height:1.4;color:var(--ink-3)}
.srow-sw{flex:none;width:48px;height:28px}
.srow-sw i{width:22px;height:22px}
.srow-sw[aria-checked="true"] i{transform:translateX(20px)}
html[dir=rtl] .srow-sw[aria-checked="true"] i{transform:translateX(-20px)}
.srow-sw[aria-checked="true"]{background:rgba(var(--k-245-198-107,245,198,107),.72)}
/* held: the switch shows how it really behaves (a voice Live Talk can't speak in), greyed, and can't be flipped */
.srow-held{cursor:default}.srow-held .srow-sw{opacity:.42;cursor:not-allowed}
.srow-sw::before{content:"";position:absolute;inset:-8px -4px}
.srow-info{position:relative;flex:none;display:inline-grid;place-items:center;width:30px;height:30px;margin:-7px 0;padding:0;border:0;background:none;color:var(--ink-3);cursor:pointer;border-radius:50%;transition:color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.srow-i,.srow-i svg{display:block;width:18px;height:18px}
.srow-info::before{content:"";position:absolute;inset:-7px}
.srow-info:hover,.srow-info[aria-expanded="true"]{color:var(--ice)}
.srow-info:active{transform:scale(.92)}
.srow-info:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.srow-more{margin:-2px 0 14px;padding:12px 14px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.04);font-size:13.5px;line-height:1.5;color:var(--ink-2);animation:srow-in .18s cubic-bezier(.23,1,.32,1)}
.srow-more p{margin:0}.srow-more p+p{margin-top:8px}
@keyframes srow-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.srow-seg{display:flex;flex-direction:column;gap:10px;padding:14px 0 16px}
.srow-seg>.srow-more{margin:0}
.sseg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair)}
.sseg button{min-height:44px;padding:6px 4px;border:1px solid transparent;border-radius:10px;background:none;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;transition:color .15s,background-color .15s,border-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.sseg button:hover{color:var(--ink-1)}
.sseg button:active{transform:scale(.97)}
.sseg button[aria-checked="true"]{color:var(--ink-1);background:rgba(var(--k-245-198-107,245,198,107),.14);border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.sseg button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.sseg-s{font-size:11.5px;color:var(--ink-3)}
.talkkey-pref .sseg{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
.talkkey-pref .srow-wrap{border-bottom:0}
.talkkey-k{unicode-bidi:isolate;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.talkkey-note{margin:2px 0 0;padding-bottom:14px;border-bottom:1px solid var(--hair)}
.sseg button[aria-checked="true"] .sseg-s{color:var(--gold)}
@media (prefers-reduced-motion:reduce){.srow-more{animation:none}.sseg button,.srow-info{transition:none}}
/* Customize › Voice & Talk (public/js/voice-settings.js) */
.vs-sec .humor-sample{margin:2px 0 0;font-size:16px}
.vs-foot{margin:14px 0 0;font-size:13px;line-height:1.5;color:var(--ink-3)}
.vs-own{color:var(--ink-2)}
.vs-owner{margin:10px 0 0;padding:10px 12px;border-radius:12px;border:1px dashed rgba(var(--k-169-139-255,169,139,255),.45);font-size:12.5px;line-height:1.5;color:var(--ink-2)}
.srow-more .vs-owner{margin-top:10px}
.vs-card{display:flex;align-items:center;gap:14px;margin-top:10px;padding:14px 16px;border-radius:18px;background:rgba(var(--k-245-198-107,245,198,107),.06);border:1px solid rgba(var(--k-245-198-107,245,198,107),.28)}
.vs-card.vs-none{background:rgba(var(--k-246-239-230,246,239,230),.04);border-color:var(--hair)}
.vs-cmain{flex:1 1 150px;min-width:0;display:flex;flex-direction:column;gap:2px}
.vs-cmain b{font-size:16px;font-weight:600;color:var(--ink-1)}
.vs-cmain span{font-size:13px;line-height:1.4;color:var(--ink-3)}
.vs-card .btn{flex:none;min-height:44px}
.vs-card .vplay,.vs-pick .vplay{width:44px;height:44px}
.vs-greet-row{display:flex;margin-top:6px}
.vs-greet{min-height:44px;padding:8px 2px;border:0;background:none;color:var(--gold);font:inherit;font-size:14.5px;cursor:pointer;border-radius:8px}
.vs-greet:disabled{color:var(--ink-3);cursor:default}
.vs-greet:focus-visible{outline:2px solid var(--gold)}
.vs-lead{margin:0 0 6px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.vs-pick .vsearch{min-height:44px;font-size:15px}
.vs-pick .vs-chips button{min-height:40px;padding:6px 14px;font-size:13.5px}
.vs-pick .vs-lang{min-height:40px;font-size:13.5px}
.vs-list{max-height:none;overflow:visible}
.vs-pick .vrow{min-height:64px}
.vs-pick .vname{font-size:15px}.vs-pick .vmeta{font-size:13px}
.vs-pick .vuse{font-size:13.5px;padding:8px 14px;border-color:var(--hair-2);color:var(--ink-1)}
.vs-pick .vuse.on{border-color:transparent;color:var(--gold)}
.vs-pick .vbest{margin:0;margin-inline-start:8px}
/* sticks to the sheet's very bottom (past its 40px padding) on a solid strip, so no list text shows under Done; a short fade above */
.vs-done{position:sticky;bottom:-40px;padding:14px 0 46px;background:linear-gradient(to top,var(--h-06070f,#06070f) calc(100% - 14px),transparent)}
.vs-done-b{width:100%;min-height:50px}
@media (max-width:520px){.vs-card{flex-wrap:wrap}.vs-card .btn{margin-inline-start:58px}}

/* ---------- your life at a glance: zooming out, the mind recedes and her whole life surrounds it ---------- */
#fig{transform-origin:50% 40%}
#stage.in-overview #fig{opacity:.92;transform:translate(var(--ovdx,0px),var(--ovdy,0px)) scale(.46)}
#stage.in-overview .convo,#stage.in-overview .cv-resume,#stage.in-overview .brief,#stage.in-life .convo,#stage.in-life .cv-resume,#stage.in-life .brief,#stage.in-overview .greet,#stage.in-overview #dock,#stage.in-overview .key,#stage.in-overview .hint,#stage.in-overview #anchors,#stage.in-overview header.chrome,#stage.in-overview .approve,#stage.in-overview .ap-scrim,#stage.in-overview .remind,#stage.in-overview .upcoming{opacity:0!important;pointer-events:none!important;transition:opacity .35s}
.overview{position:absolute;inset:0;z-index:12;display:flex;flex-direction:column;background:radial-gradient(ellipse 60% 55% at 50% 42%,rgba(var(--k-3-4-10,3,4,10),.2),rgba(var(--k-3-4-10,3,4,10),.88) 75%);opacity:0;transition:opacity .55s var(--ease);outline:none}
.overview[hidden]{display:none}
.overview.on{opacity:1}
.ov-top{position:relative;inset:auto;z-index:1;flex:none;pointer-events:auto;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:calc(22px + env(safe-area-inset-top,0px)) 26px 0;background:none;height:auto}
.ov-kicker{margin:0 0 6px;font-size:11px;letter-spacing:.22em;color:var(--gold)}
.ov-kicker{display:flex;align-items:center;gap:12px;white-space:nowrap}.ov-fold{white-space:nowrap}
@media (max-width:760px){.ov-kicker{flex-wrap:wrap;row-gap:6px;white-space:normal}} /* a bigger Text size: the fold button drops under the kicker instead of over it */
.ov-fold{border:1px solid var(--hair-2);border-radius:999px;background:none;padding:3px 10px;font-size:11.5px;letter-spacing:0;color:var(--ink-2);transition:color .15s,border-color .15s}.ov-fold:hover{color:var(--ink-1);border-color:var(--hair-3,rgba(246,239,230,.3))}.ov-fold:active{transform:scale(.96)}
.ov-titles.folded h2,.ov-titles.folded .ov-upd{display:none}
.ov-titles h2{margin:0;max-width:760px;font-family:var(--display);font-weight:400;font-size:clamp(24px,2.5vw,34px);line-height:1.18;color:var(--ink-1);text-wrap:balance}
.ov-upd{margin:6px 0 0;font-size:12px;color:var(--ink-3)}
.ov-back{flex:none;padding:9px 16px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);font-size:13px;color:var(--ink-1);transition:border-color .2s}
.ov-back:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
/* one reading order: today's focus and how you feel on the left, your life in the middle, where you're headed on
   the right; then the work of your life (actions, agents, projects), what NOVA noticed, and what's coming */
.ov-scroll{flex:1;min-height:0;display:grid;grid-template-columns:minmax(240px,290px) minmax(0,1fr) minmax(310px,360px);grid-template-rows:repeat(3,auto);align-content:start;grid-template-areas:"quest orbit soon" "health orbit soon" "noticed noticed noticed";gap:18px 36px;padding:14px 26px 64px;overflow:auto;align-items:start;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 46px),transparent);mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 46px),transparent)}
.overview.scrolled .ov-hint{opacity:0}
.ov-hint{transition:opacity .3s}
/* talking to NOVA from Life at a glance: a bar at the foot, the page scrolls above it, a reply grows upward */
.ov-talk{flex:none;position:relative;z-index:3;padding:4px 26px max(14px,env(safe-area-inset-bottom))}
.ov-talk .wt{position:static;margin:0;padding:0}
.ov-talk .wt::before{display:none}
.ov-talk .wt-thread{max-height:min(38vh,340px)}
.overview.has-talk .ov-scroll{padding-bottom:26px}
/* the same while travelling between worlds: the world you're facing is the one you talk to */
.life-talk{position:absolute;left:50%;bottom:max(18px,env(safe-area-inset-bottom));z-index:6;width:min(680px,calc(100% - 32px));transform:translateX(-50%);opacity:0;pointer-events:none;transition:opacity .3s ease}
#life.on .life-talk:not(:empty){opacity:1;pointer-events:auto}
.life-talk .wt{position:static;margin:0;padding:0}
.life-talk .wt::before{display:none}
.life-talk .wt-thread,.life-talk .wt-clear{display:none}
#life.has-talk .life-hint{bottom:124px}
#stage.in-world .life-talk{opacity:0;pointer-events:none}
@media (max-width:760px){.life-talk{bottom:max(14px,calc(env(safe-area-inset-bottom) + 8px));width:calc(100% - 28px)}#life.has-talk .life-hint{display:none}.ov-talk{padding:4px 14px max(12px,env(safe-area-inset-bottom))}}
.ov-band{display:contents}
.ov-health{grid-area:health}
.ov-soon{grid-area:soon;min-width:0}

/* ---------- Now and next (Oct 29 2026, public/js/glancepanel.js): one solid panel beside the orbit ---------- */
.gp{grid-area:soon;align-self:start;min-width:0;max-width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:2px;padding:16px 14px 10px;border-radius:20px;
  background:linear-gradient(180deg,rgba(var(--k-24-26-34,24,26,34),.95),rgba(var(--k-15-16-22,15,16,22),.96));border:1px solid rgba(var(--k-246-239-230,246,239,230),.09);
  box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 24px 60px -30px rgba(0,0,0,.9)}
.gp>*{min-width:0;max-width:100%}
/* on a computer the panel keeps to the first screen (it scrolls inside), so opening Needs you or Show more never moves
   the orbit or stretches Today's focus; the day in hours takes the orbit's room too, so its hours have space */
@media (min-width:1121px){
  .gp{max-height:calc(100dvh - 260px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.16) transparent}
  /* the connections line stays at the panel's foot on solid ground, with a short fade above it, so a line is never
     cut in half by the panel's edge */
  .gp-conn{position:sticky;bottom:0;z-index:4;margin:6px -14px -10px!important;padding:6px 20px 10px!important;background:#0f1016!important}
  .gp-conn::before{content:"";position:absolute;inset-inline:0;bottom:100%;height:22px;background:linear-gradient(to bottom,rgba(15,16,22,0),#0f1016);pointer-events:none}
}
.gp button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gp-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 4px 8px}
.gp-h{margin:0;font-size:15px;font-weight:600;color:var(--ink-1)}
.gp-hl{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 6px;border-radius:10px;font-size:13px!important;color:var(--ink-2)!important;transition:color .15s,background-color .15s}
.gp-hl:hover{color:var(--ink-1)!important;background:rgba(var(--k-246-239-230,246,239,230),.05)}
.gp-day .odv-scroll{-webkit-mask-image:linear-gradient(to left,transparent,#000 22px);mask-image:linear-gradient(to left,transparent,#000 22px)}
[dir="rtl"] .gp-day .odv-scroll{-webkit-mask-image:linear-gradient(to right,transparent,#000 22px);mask-image:linear-gradient(to right,transparent,#000 22px)}
.gp-day :is(.odv-ev,.odv-sg).spill .odv-t{max-width:min(calc(var(--spill) - 24px),110px)}
.gp-arr{font-size:17px;line-height:1;color:var(--ink-3);transition:transform .18s cubic-bezier(.23,1,.32,1)}
[dir="rtl"] .gp-arr{transform:scaleX(-1)}
/* what needs her: one gold line that opens into its first few */
.gp-needs-w{margin:0 0 10px;border-radius:16px;background:linear-gradient(120deg,rgba(var(--k-245-198-107,245,198,107),.13),rgba(var(--k-245-198-107,245,198,107),.035));border:1px solid rgba(var(--k-245-198-107,245,198,107),.3)}
.gp-needs{display:flex;align-items:center;gap:6px;padding:6px 10px 6px 4px}
.gp-npeek{flex:1;min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:48px;padding:4px 6px 4px 8px;border-radius:12px;text-align:start;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.gp-npeek:active{transform:scale(.985)}
.gp-nn{font-family:var(--display);font-weight:400;font-size:30px;line-height:1;color:var(--gold);font-variant-numeric:lining-nums}
.gp-nw{display:grid;gap:2px;min-width:0}
.gp-nt{font-size:15px;font-weight:500;color:var(--ink-1)}
.gp-nm{font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gp-chev{width:9px;height:9px;margin-inline:2px 4px;border-right:1.6px solid var(--ink-3);border-bottom:1.6px solid var(--ink-3);transform:rotate(45deg) translate(-2px,-2px);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.gp-needs-w.open .gp-chev{transform:rotate(225deg) translate(-2px,-2px)}
.gp-nr{flex:none;min-height:36px;padding:0 15px;border-radius:999px;background:var(--gold)!important;color:var(--gold-ink,#1d1408)!important;font-size:13.5px!important;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.gp-nr:active{transform:scale(.96)}
.gp-nlist{display:none}
.gp-needs-w.open .gp-nlist{display:block;animation:gpIn .2s cubic-bezier(.23,1,.32,1)}
@keyframes gpIn{from{opacity:0;transform:translateY(-4px)}}
.gp-nlist-in{padding:0 6px}
.gp-needs-w.open .gp-nlist-in{padding-bottom:6px;border-top:1px solid rgba(var(--k-245-198-107,245,198,107),.16)}
/* one kind at a time: a compact switch that fits the panel (it wraps on a computer, slides on a phone) */
.gp-seg{display:flex;flex-wrap:wrap;gap:2px;padding:3px;margin:0 0 6px;border-radius:14px;background:rgba(var(--k-3-4-10,3,4,10),.5);border:1px solid var(--hair)}
.gp-sb{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:32px;padding:0 7px;border-radius:11px;font-size:12.5px!important;color:var(--ink-3)!important;white-space:nowrap;transition:color .15s,background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.gp-sb:active{transform:scale(.96)}
.gp-sb:hover{color:var(--ink-1)!important}
.gp-sb small{font-size:11.5px;color:rgba(var(--c),.9);font-variant-numeric:tabular-nums}
.gp-sb.on{color:var(--ink-1)!important;background:rgba(var(--c),.11);box-shadow:inset 0 0 0 1px rgba(var(--c),.32)}
/* the stream */
.gp-stream{display:flex;flex-direction:column;overflow-x:clip;overflow-clip-margin:4px}
.gp-nlist-in{overflow-x:clip;overflow-clip-margin:4px}
.gp-stream.swap{animation:gpSwap .2s cubic-bezier(.23,1,.32,1)}
@keyframes gpSwap{from{opacity:0;transform:translateY(4px)}}
.gp-grp{display:flex;flex-direction:column}
.gp-sg{margin:10px 6px 2px;font-size:12px;font-weight:500;color:var(--ink-3)}
.gp-grp:first-child .gp-sg{margin-top:4px}
.gp-grp.g-now .gp-sg{color:var(--ink-2)}
.gp-row{--c:246,239,230;display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:48px;padding:7px 6px;border-radius:12px;text-align:start;transition:background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.gp-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.045)}
.gp-row:active{transform:scale(.985)}
.gp button:focus-visible{outline:2px solid rgba(var(--c,92,225,255),.7);outline-offset:2px}
.gp-dot{width:8px;height:8px;border-radius:50%;background:rgb(var(--c));justify-self:center}
.gp-dot.hollow{background:transparent;border:1.5px solid rgba(var(--c),.9);width:10px;height:10px}
.gp-row.live .gp-dot{box-shadow:0 0 0 3px rgba(var(--c),.18),0 0 10px rgba(var(--c),.7);animation:gpLive 2.4s ease-in-out infinite}
@keyframes gpLive{50%{box-shadow:0 0 0 5px rgba(var(--c),.06),0 0 14px rgba(var(--c),.5)}}
.gp-rb{display:grid;gap:2px;min-width:0}
.gp-rt{text-align:left;font-size:14.5px;line-height:1.3;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[dir=rtl] .gp-rt{text-align:right}
.gp-rm{font-size:12.5px;line-height:1.35;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gp-rs{font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;transition:opacity .12s ease-out}
.gp-rs.late{color:var(--rose)}
.gp-rs.ready{display:inline-flex;align-items:center;gap:4px;color:var(--ink-3)}
.gp-row.k-step .gp-arr{justify-self:end}
.gp-bar{display:block;height:3px;margin-top:5px;border-radius:3px;background:rgba(var(--k-246-239-230,246,239,230),.09);position:relative;overflow:hidden}
.gp-bar::after{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:var(--p);border-radius:3px;background:rgb(var(--c))}
.gp-empty{margin:6px 6px 10px;font-size:13px;line-height:1.5;color:var(--ink-3)}
.gp-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 10px;margin-top:2px}
.gp-more{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:4px 6px;font-size:13px!important;color:var(--ink-2)!important;border-radius:10px}
.gp-more:hover{color:var(--ink-1)!important}.gp-more:hover .gp-arr{transform:translateX(2px)}
[dir="rtl"] .gp-more:hover .gp-arr{transform:scaleX(-1) translateX(2px)}
.gp-conn{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:40px;margin-top:6px;padding:6px 6px 0;border-top:1px solid var(--hair)!important;font-size:12.5px!important;color:var(--ink-3)!important;text-align:start}
.gp-conn.warn span:first-child{color:rgba(var(--k-255-122-182,255,122,182),.9)}
.gp-day .odv{margin-top:0}
/* a line's actions (public/js/rowactions.js): swipe on a phone, point or "…" on a computer, keys */
.ra{position:relative;border-radius:12px;isolation:isolate}
.ra>.gp-row{position:relative;z-index:1;touch-action:pan-y}
.ra.ra-live>.gp-row{background:#171922;box-shadow:0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.1),0 10px 24px -14px rgba(0,0,0,.85)}
.ra-under{position:absolute;inset:0;z-index:0;border-radius:12px;overflow:hidden;pointer-events:none}
.ra.ra-open .ra-under{pointer-events:auto}
.ra-yes,.ra-end{position:absolute;inset:0;display:flex;align-items:center;opacity:0}
.ra-yes{--c:111,242,196;justify-content:flex-start;gap:8px;padding-inline:16px;font-size:13.5px;font-weight:600;color:rgb(var(--c));background:linear-gradient(90deg,rgba(var(--c),.2),rgba(var(--c),.05) 60%,transparent 90%)}
.ra-yes.t-gold{--c:245,198,107}
.ra-yes svg{transition:transform .18s cubic-bezier(.23,1,.32,1)}
.ra-armed-yes .ra-yes{background:linear-gradient(90deg,rgba(var(--c),.32),rgba(var(--c),.1) 70%,transparent)}
.ra-armed-yes .ra-yes svg{transform:scale(1.2)}
[dir="rtl"] .ra-yes{background:linear-gradient(270deg,rgba(var(--c),.2),rgba(var(--c),.05) 60%,transparent 90%)}
[dir="rtl"] .ra-armed-yes .ra-yes{background:linear-gradient(270deg,rgba(var(--c),.32),rgba(var(--c),.1) 70%,transparent)}
.ra-end{justify-content:flex-end;gap:4px;padding-inline:4px}
.ra-eb{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:76px;height:calc(100% - 8px);min-height:44px;border-radius:12px;font-size:12px!important;font-weight:600;
  transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .15s,opacity .15s ease-out}
.ra-eb:active{transform:scale(.95)}
.ra-eb.t-ink{color:var(--ink-1)!important;background:rgba(var(--k-246-239-230,246,239,230),.08)!important}
.ra-eb.t-rose{color:rgb(var(--k-255-122-182,255,122,182))!important;background:rgba(var(--k-255-122-182,255,122,182),.14)!important}
/* past the last step, letting go is Not now: it takes the whole space and the others step aside */
.ra-armed-later .ra-eb:first-child{flex:1 1 auto;width:auto;background:rgba(var(--k-246-239-230,246,239,230),.16)!important}
.ra-armed-later .ra-eb:not(:first-child){width:0;opacity:0;padding:0;overflow:hidden}
.ra-quick{position:absolute;z-index:2;inset-inline-end:4px;top:50%;display:flex;gap:2px;padding:3px;border-radius:999px;background:#1d2029;box-shadow:0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.1),0 8px 20px -10px rgba(0,0,0,.9);
  opacity:0;pointer-events:none;transform:translate(4px,-50%);transition:opacity .15s ease-out,transform .18s cubic-bezier(.23,1,.32,1)}
[dir="rtl"] .ra-quick{transform:translate(-4px,-50%)}
@media (hover:hover){.ra:hover>.ra-quick,.ra:focus-within>.ra-quick,.ra.ra-menu-on>.ra-quick{opacity:1;pointer-events:auto;transform:translate(0,-50%)}
  .ra:is(:hover,:focus-within,.ra-menu-on)>.gp-row .gp-rs{display:none}
  .ra:is(:hover,:focus-within,.ra-menu-on)>.gp-row{padding-inline-end:var(--qw,140px)}
  .ra:is(:hover,:focus-within,.ra-menu-on)>.gp-row{background:rgba(var(--k-246-239-230,246,239,230),.045)}}
@media (hover:none){.ra-quick{display:none}}
.ra-q{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;color:var(--ink-2)!important;transition:background-color .15s,color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.ra-q:hover{background:rgba(var(--k-246-239-230,246,239,230),.08)!important;color:var(--ink-1)!important}
.ra-q:active{transform:scale(.92)}
.ra-q.t-mint:hover{color:var(--mint)!important;background:rgba(var(--k-111-242-196,111,242,196),.12)!important}
.ra-q.t-gold:hover{color:var(--gold)!important;background:rgba(var(--k-245-198-107,245,198,107),.12)!important}
.ra-q.t-rose:hover{color:var(--rose)!important;background:rgba(var(--k-255-122-182,255,122,182),.12)!important}
.ra-menu{position:fixed;z-index:80;min-width:184px;padding:5px;border-radius:16px;background:#14161e;border:1px solid rgba(var(--k-246-239-230,246,239,230),.1);
  box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);
  opacity:0;transform:scale(.96) translateY(-4px);transform-origin:top right;transition:opacity .14s ease-out,transform .16s cubic-bezier(.23,1,.32,1)}
.ra-menu.up{transform-origin:bottom right;transform:scale(.96) translateY(4px)}
[dir="rtl"] .ra-menu{transform-origin:top left}[dir="rtl"] .ra-menu.up{transform-origin:bottom left}
.ra-menu.on{opacity:1;transform:none}
.ra-mi{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:0 12px;border-radius:11px;font:inherit;font-size:14px;color:var(--ink-1);background:none;border:0;cursor:pointer;text-align:start}
.ra-mi:hover,.ra-mi:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.07);outline:none}
.ra-mi svg{color:var(--ink-3)}
.ra-mi.t-mint svg{color:var(--mint)}.ra-mi.t-gold svg{color:var(--gold)}
.ra-mi.t-rose,.ra-mi.t-rose svg{color:var(--rose)}
@media (hover:none){.ra-mi{min-height:46px}}
@media (max-width:760px){
  .gp{padding:14px 10px 8px;border-radius:22px}
  .gp-row{min-height:52px}
  .gp-seg{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 20px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 20px),transparent)}
  [dir="rtl"] .gp-seg{-webkit-mask-image:linear-gradient(270deg,#000 calc(100% - 20px),transparent);mask-image:linear-gradient(270deg,#000 calc(100% - 20px),transparent)}
  .gp-seg::-webkit-scrollbar{display:none}
  .gp-sb{flex:none;min-height:44px;padding:0 12px}
  .gp-nr,.gp-hl,.gp-more,.gp-conn{min-height:44px}
}
@media (prefers-reduced-motion:reduce){.gp *,.gp-stream.swap,.ra-quick,.ra-menu,.ra-eb{animation:none!important;transition:none!important}}
/* ---- a line opens in place (public/js/rowactions.js, Katie Nov 2 2026: "expand the text… rather than redirecting me
   entirely"): a tap shows the whole title and meta line, any detail, and its actions with Open; tap again folds it ---- */
.ra.ra-x-on>.gp-row .gp-rt,.ra.ra-x-on>.gp-row .gp-rm{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.ra.ra-x-on>.gp-row,.ra.ra-x-on:is(:hover,:focus-within,.ra-menu-on)>.gp-row{align-items:start;padding-inline-end:6px;background:rgba(var(--k-246-239-230,246,239,230),.045);border-end-start-radius:0;border-end-end-radius:0}
.ra.ra-x-on>.gp-row .gp-dot{margin-top:6px}
.ra.ra-x-on:is(:hover,:focus-within,.ra-menu-on)>.gp-row .gp-rs{display:inline}
.ra.ra-x-on>.ra-quick{display:none}
.ra.ra-x-on:has(>.gp-row:focus-visible){outline:2px solid rgba(var(--k-245-198-107,245,198,107),.6);outline-offset:1px}
.gp .ra.ra-x-on>.gp-row:focus-visible{outline:none}
.ra-x{display:grid;grid-template-rows:0fr;border-radius:0 0 12px 12px;transition:grid-template-rows .22s cubic-bezier(.23,1,.32,1)}
.ra.ra-x-on>.ra-x{grid-template-rows:1fr;background:rgba(var(--k-246-239-230,246,239,230),.045)}
.ra-x-in{min-height:0;overflow:hidden;padding-inline:28px 8px;opacity:0;transition:opacity .16s ease-out}
.ra.ra-x-on .ra-x-in{opacity:1}
.ra-x-d{margin:0 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-2);white-space:pre-line;overflow-wrap:anywhere}
.ra-x-acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:2px 0 12px}
.ra-xb{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;font-size:13px!important;font-weight:500;color:var(--ink-1)!important;background:rgba(var(--k-246-239-230,246,239,230),.07)!important;
  transition:background-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.ra-xb:hover{background:rgba(var(--k-246-239-230,246,239,230),.11)!important}
.ra-xb:active{transform:scale(.96)}
.ra-xb.t-mint{color:var(--mint)!important;background:rgba(var(--k-111-242-196,111,242,196),.12)!important}
.ra-xb.t-gold{color:var(--gold)!important;background:rgba(var(--k-245-198-107,245,198,107),.12)!important}
.ra-xb.t-rose{color:var(--rose)!important;background:rgba(var(--k-255-122-182,255,122,182),.1)!important}
.ra-xb.ra-xo{margin-inline-start:auto;padding-inline:8px;background:none!important;color:var(--ink-2)!important}
.ra-xb.ra-xo:hover{color:var(--ink-1)!important}
[dir="rtl"] .ra-xo svg{transform:scaleX(-1)}
@media (hover:none){.ra-xb{min-height:44px}}
@media (prefers-reduced-motion:reduce){.ra-x,.ra-x-in,.ra-xb{transition:none!important}}
/* ---- At a Glance shows every life section (Katie, Nov 2 2026): Faith, Markets and Home aren't scored, so their ring is
   whole and quiet in the section's own colour, a small light at its centre, and their word says what is inside ---- */
.mdr.own .val{opacity:.4}
.md-ring-own .mdr-n::before{content:"";width:7px;height:7px;border-radius:50%;background:rgb(var(--c,245,198,107));box-shadow:0 0 10px rgba(var(--c,245,198,107),.55)}
.md-rword.own{max-width:16ch;text-align:center;line-height:1.3;color:var(--ink-3)}
/* Do next on At a Glance: a to-do's words open in place too (the whole title, then its notes) */
.md-task .md-tw{text-align:start;font:inherit;color:inherit;border-radius:10px;cursor:pointer}
.md-task .md-tw:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.6);outline-offset:2px}
.md-tn{display:none;margin-top:4px;font-size:13px;line-height:1.5;color:var(--ink-2);white-space:pre-line;overflow-wrap:anywhere}
.md-task.open .md-tt{white-space:normal;overflow:visible;overflow-wrap:anywhere}
.md-task.open .md-tn{display:block}
/* two rows of rings until "Show all" (Katie, Nov 2 2026); the ones it brings back fade up in place */
.md-rings>.md-ring.md-ring-x{display:none}
.md-rings>.md-ring.md-ring-in{animation:mdRingIn .24s cubic-bezier(.23,1,.32,1) both}
@keyframes mdRingIn{from{opacity:0;transform:translateY(6px) scale(.97)}}
.md-lineActs{flex:none;display:flex;align-items:baseline;gap:14px}
.md-ringsmore[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.md-rings>.md-ring.md-ring-in{animation:none}}
@media (max-width:760px){.md-lineRow{flex-wrap:wrap;row-gap:6px}.md-lineRow>.md-line{flex:1 1 100%}.md-lineActs{margin-inline-start:auto;gap:18px}.md-lineActs .md-change{min-height:44px;display:inline-flex;align-items:center}}
/* every row and section keeps to its own cell: nothing in the grid is ever drawn over a neighbour (Katie, Oct 17) */
.ov-scroll>*,.ov-band>*{min-width:0}
/* "Coming up for you": the next three real things, one line each, every line a way in */
.ov-soon-list{list-style:none;margin:0;padding:0;display:grid}
.ov-soon-list>li{min-width:0}
.ov-soon-h{padding:12px 0 4px;font-size:12px;color:var(--ink-3)}
.ov-soon-row{--c:245,198,107;display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:56px;padding:9px 4px 9px 2px;text-align:start;border-bottom:1px solid var(--hair);border-radius:10px;transition:background-color .2s var(--ease),transform .16s var(--ease)}
.ov-soon-list>li:last-child .ov-soon-row{border-bottom:0}
.ov-soon-row:hover{background:rgba(var(--c),.06)}
.ov-soon-row:active{transform:scale(.985)}
.ov-soon-row:focus-visible{outline:2px solid rgba(var(--c),.7);outline-offset:2px}
.ov-soon-dot{width:8px;height:8px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.55);justify-self:center}
.ov-soon-row.k-step .ov-soon-dot{background:transparent;border:1.5px solid rgba(var(--c),.8);box-shadow:none}
.ov-soon-b{display:grid;gap:3px;min-width:0}
.ov-soon-t{font-size:14.5px;line-height:1.35;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-soon-m{font-size:12px;line-height:1.4;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-soon-row.k-step .ov-soon-m{white-space:normal}
.ov-soon-sep{color:var(--ink-3)}
.ov-soon-go{font-size:18px;line-height:1;color:var(--ink-3);transition:color .2s,transform .2s var(--ease)}
.ov-soon-row:hover .ov-soon-go{color:var(--ink-1);transform:translateX(2px)}
[dir="rtl"] .ov-soon-go{transform:scaleX(-1)}
[dir="rtl"] .ov-soon-row:hover .ov-soon-go{transform:scaleX(-1) translateX(2px)}
@media (prefers-reduced-motion:reduce){.ov-soon-row,.ov-soon-go{transition:none}}
.ov-orbit{grid-area:orbit;align-self:center;position:relative;--rx:min(300px,24vw,calc(50% - 62px));--ry:min(178px,20vh);min-height:calc(var(--ry) * 2 + 130px)}
@media (min-width:761px) and (max-width:1120px){
  .ov-scroll{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:repeat(4,auto);grid-template-areas:"orbit orbit" "quest soon" "health soon" "noticed noticed"}
  .ov-orbit{--rx:min(300px,34vw,calc(50% - 62px))}
}
.ov-time{grid-area:time}
.ov-noticed{grid-area:noticed}.ov-none{display:none}
.ov-ntc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px 28px}
.ov-ntc-t{margin:0;font-size:14px;line-height:1.5;color:var(--ink-1)}
.ov-ntc-e{margin:4px 0 0;font-size:12px;line-height:1.45;color:var(--ink-3)}
.ov-ntc-a{display:flex;flex-wrap:wrap;gap:0 6px;align-items:center;margin-top:8px}
.ov-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);margin:0;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.ov-panel{padding-top:12px;border-top:1px solid rgba(var(--c,246,239,230),.3)}
.ov-panel h3{margin:0 0 10px;font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--c,246,239,230),.95)}
.ov-panel h4{margin:16px 0 6px;font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3)}
.ov-empty{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--ink-3)}
.ov-src{margin:6px 0 0;font-size:11.5px;color:var(--ink-3)}
.ov-chips{display:flex;flex-wrap:wrap;gap:4px}
.ov-chips button{padding:5px 10px;border-radius:999px;font-size:11.5px;color:var(--ink-3);border:1px solid transparent;transition:color .15s,border-color .15s}
.ov-chips button:hover{color:var(--ink-1)}
.ov-chips button[aria-pressed="true"]{color:var(--ink-1);border-color:var(--hair-2)}
/* the orbit */
/* each world is anchored at its ring's centre; its name sits outside the ring (data-side), so neighbours never collide */
.ov-orb{position:absolute;left:50%;top:50%;display:block;width:64px;height:64px;transform:translate(-50%,-50%) scale(var(--s,1));opacity:0;
  transition:left .95s var(--ease) var(--d,0ms),top .95s var(--ease) var(--d,0ms),opacity .6s var(--ease) var(--d,0ms)}
.overview.on .ov-orb{left:calc(50% + var(--x) * var(--rx));top:calc(50% + var(--y) * var(--ry));opacity:1}
.ov-orb-face{position:relative;display:block;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle,rgba(var(--c),.16),rgba(var(--c),0) 70%);transition:transform .25s var(--ease),box-shadow .25s}
.ov-orb-face svg{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.ov-orb-face circle{fill:none;stroke-width:2.4}
.ov-orb-face .trk{stroke:rgba(var(--c),.18)}
.ov-orb-face .val{stroke:rgb(var(--c));stroke-linecap:round;filter:drop-shadow(0 0 5px rgba(var(--c),.6));transition:stroke-dashoffset 1.2s var(--ease)}
.ov-orb-face b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--display);font-weight:400;font-size:21px;color:var(--ink-1);font-variant-numeric:lining-nums}
.ov-orb-arc{position:absolute;left:0;top:0;width:64px;height:64px;overflow:visible;pointer-events:none}
.ov-orb-arc text{font-family:var(--sans);font-size:calc(13.5px / var(--s,1));fill:var(--ink-2);transition:fill .2s ease}
.ov-orb:hover .ov-orb-arc text,.ov-orb:focus-visible .ov-orb-arc text{fill:rgb(var(--c))}
@media (min-width:761px){.ov-orb .ov-orb-name{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}
@media (max-width:760px){.ov-orb-arc{display:none}}
.ov-orb-name{position:absolute;font-size:calc(12.5px / var(--s,1));line-height:1.2;color:var(--ink-2);white-space:nowrap;text-shadow:0 0 10px rgba(var(--k-3-4-10,3,4,10),1);pointer-events:none}
.ov-orb[data-side="t"] .ov-orb-name{bottom:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.ov-orb[data-side="b"] .ov-orb-name{top:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.ov-orb[data-side="l"] .ov-orb-name{right:calc(100% + 10px);top:50%;transform:translateY(-50%);text-align:right}
.ov-orb[data-side="r"] .ov-orb-name{left:calc(100% + 10px);top:50%;transform:translateY(-50%)}
.ov-orb[data-side="b"] .ov-orb-tip{top:calc(100% + 26px)}
.ov-orb-tip{position:absolute;top:100%;left:50%;transform:translate(-50%,4px);width:200px;padding:8px 10px;border-radius:10px;background:rgba(var(--k-7-8-17,7,8,17),.96);border:1px solid rgba(var(--c),.35);font-size:12px;line-height:1.4;color:var(--ink-2);opacity:0;pointer-events:none;transition:opacity .2s;z-index:2}
.ov-orb:hover .ov-orb-face,.ov-orb:focus-visible .ov-orb-face{transform:scale(1.08);box-shadow:0 0 30px rgba(var(--c),.35)}
.ov-orb:hover .ov-orb-name,.ov-orb:focus-visible .ov-orb-name{color:var(--ink-1)}
.ov-orb:hover .ov-orb-tip,.ov-orb:focus-visible .ov-orb-tip{opacity:1}
.ov-orb-trend{position:absolute;top:0;right:-6px;font-size:9px}
.ov-orb-trend.up{color:rgb(176,228,190)}.ov-orb-trend.down{color:rgb(244,196,168)}
.ov-core{position:absolute;left:50%;top:50%;width:calc(var(--rx) * 2);height:calc(var(--ry) * 2);transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(var(--k-246-239-230,246,239,230),.07);pointer-events:none}
/* the talk control where the brain sat: tap to talk or type below; NOVA's answer appears here */
@media (min-width:761px){#stage.in-overview #fig{opacity:0}}
.ov-voice{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(250px,calc(var(--rx) * 1.15));display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;z-index:2}
.ov-vo{--c:var(--k-245-198-107,245,198,107);position:relative;width:68px;height:68px;border-radius:50%;border:1px solid rgba(var(--c),.42);background:radial-gradient(circle at 50% 42%,rgba(var(--c),.22),rgba(var(--c),.05) 62%,transparent 72%);display:grid;place-items:center;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,box-shadow .2s ease}
.ov-vo:hover{border-color:rgba(var(--c),.7);box-shadow:0 0 28px -6px rgba(var(--c),.55)}
.ov-vo:active{transform:scale(.96)}
.ov-vo:focus-visible{outline:2px solid rgba(var(--c),.9);outline-offset:4px}
.ov-vo-ring{position:absolute;inset:-7px;border-radius:50%;border:1px solid rgba(var(--c),.0);pointer-events:none}
.ov-vo-bars{display:flex;align-items:center;gap:3px;height:22px}
.ov-vo-bars i{display:block;width:3px;height:8px;border-radius:2px;background:rgba(var(--c),.95);transform-origin:center}
.ov-vo-bars i:nth-child(2),.ov-vo-bars i:nth-child(3){height:15px}
.ov-voice[data-phase="listening"] .ov-vo,.ov-voice[data-phase="speaking"] .ov-vo{border-color:rgba(var(--c),.85);box-shadow:0 0 34px -4px rgba(var(--c),.6)}
.ov-voice[data-phase="listening"] .ov-vo-ring{border-color:rgba(var(--c),.4);animation:ovRing 1.6s cubic-bezier(.23,1,.32,1) infinite}
.ov-voice[data-phase="speaking"] .ov-vo-bars i{animation:ovBar .9s ease-in-out infinite}
.ov-voice[data-phase="speaking"] .ov-vo-bars i:nth-child(2){animation-delay:-.3s}.ov-voice[data-phase="speaking"] .ov-vo-bars i:nth-child(3){animation-delay:-.6s}.ov-voice[data-phase="speaking"] .ov-vo-bars i:nth-child(4){animation-delay:-.15s}
.ov-voice[data-phase="thinking"] .ov-vo-bars i{opacity:.45;animation:ovThink 1.2s ease-in-out infinite}
.ov-voice[data-phase="thinking"] .ov-vo-bars i:nth-child(2){animation-delay:.15s}.ov-voice[data-phase="thinking"] .ov-vo-bars i:nth-child(3){animation-delay:.3s}.ov-voice[data-phase="thinking"] .ov-vo-bars i:nth-child(4){animation-delay:.45s}
.ov-voice[data-phase="approval"] .ov-vo{--c:var(--k-255-180-162,255,180,162)}
@keyframes ovRing{from{transform:scale(.92);opacity:1}to{transform:scale(1.22);opacity:0}}
@keyframes ovBar{0%,100%{transform:scaleY(.55)}50%{transform:scaleY(1.25)}}
@keyframes ovThink{0%,100%{opacity:.35}50%{opacity:1}}
.ov-vs{margin:4px 0 0;font-size:14px;font-weight:550;letter-spacing:.005em;color:rgba(var(--k-246-239-230,246,239,230),.94)}
/* the answer at the centre of the Dashboard sits on a soft patch of night, so it reads over the rings and stars */
.ov-voice::before{content:"";position:absolute;inset:-18px -30px;z-index:-1;pointer-events:none;border-radius:28px;background:radial-gradient(closest-side,rgba(var(--k-6-7-13,6,7,13),.86),rgba(var(--k-6-7-13,6,7,13),.6) 72%,rgba(var(--k-6-7-13,6,7,13),0))}
.ov-vy{margin:0;font-size:12.5px;line-height:1.4;color:rgba(var(--k-246-239-230,246,239,230),.56);font-style:italic;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-vr{margin:2px 0 0;font-size:13px;line-height:1.5;color:rgba(var(--k-246-239-230,246,239,230),.82);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.ov-va{display:flex;gap:14px;justify-content:center;min-height:20px}
.ov-va .link{font-size:12.5px;color:rgba(var(--k-245-198-107,245,198,107),.9)}
.ov-va .ov-vt{color:rgba(var(--k-246-239-230,246,239,230),.5)}
.ov-orbit:has(.ov-voice:not([data-phase="idle"])) .ov-orb:not(:hover):not(:focus-visible) .ov-orb-tip{opacity:0!important}
@media (prefers-reduced-motion:reduce){.ov-vo-ring,.ov-vo-bars i{animation:none!important}}
@media (max-width:760px){
  .ov-voice{display:none}
  .ov-voice:not([data-phase="idle"]){display:flex;position:fixed;left:14px;right:14px;top:auto;bottom:calc(84px + env(safe-area-inset-bottom));transform:none;width:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;text-align:left;gap:4px 12px;padding:12px 14px;border-radius:18px;background:rgba(12,10,18,.94);border:1px solid rgba(var(--k-246-239-230,246,239,230),.1);box-shadow:0 18px 44px -20px rgba(0,0,0,.8);z-index:6}
  .ov-voice .ov-vo{width:40px;height:40px;flex:none}.ov-voice .ov-vo-bars{height:16px}
  .ov-voice .ov-vs{margin:0;flex:1;min-width:0}
  .ov-voice :is(.ov-vy,.ov-vr){flex-basis:100%}
  .ov-voice .ov-vr{-webkit-line-clamp:3}
  .ov-voice .ov-va{flex-basis:100%;justify-content:flex-start}
}
/* wellness */
.ov-big{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.ov-big b{font-family:var(--display);font-weight:400;font-size:44px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums}
.ov-big span{font-size:12.5px;color:var(--ink-2)}
.ov-spark{margin-top:10px}
.ov-spark svg{width:100%;height:78px;overflow:visible}
.ov-spark .line{fill:none;stroke:rgb(var(--c));stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.ov-spark .area{fill:rgba(var(--c),.1)}
.ov-spark .dot{fill:rgba(var(--c),.7);cursor:pointer;outline:none}
.ov-spark .dot:hover,.ov-spark .dot:focus{fill:var(--h-fff,#fff)}
.ov-spark .dot.last{fill:var(--h-fff,#fff);filter:drop-shadow(0 0 4px rgb(var(--c)))}
.ov-spark-read{margin-top:4px;font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ov-wl-head{display:flex;align-items:baseline;gap:10px}
.ov-wl-head b{font-family:var(--display);font-weight:400;font-size:44px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums}
.ov-wl-l{font-size:13px;color:rgb(var(--c))}
.ov-wl-why{margin:6px 0 14px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.ov-wl-k{margin:0 0 6px;font-size:11.5px;color:var(--ink-3)}
.ov-wl-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ov-wl-m{display:grid;gap:1px;padding:8px 10px;border-radius:12px;text-align:left;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.02);transition:border-color .2s,background-color .2s,transform .16s var(--ease)}
.ov-wl-m:hover{border-color:rgba(var(--c),.4)}.ov-wl-m:active{transform:scale(.98)}
.ov-wl-m.on{border-color:rgba(var(--c),.6);background:rgba(var(--c),.07)}
.ov-wl-m small{font-size:11px;color:var(--ink-3)}
.ov-wl-m b{font-family:var(--display);font-weight:400;font-size:22px;line-height:1.15;color:var(--ink-1);font-variant-numeric:lining-nums}
.ov-wl-d{font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-wl-d.up{color:rgb(176,228,190)}.ov-wl-d.down{color:rgb(244,196,168)}
.ov-spark-k{margin:0 0 4px;font-size:11.5px;color:var(--ink-3)}
.ov-spark .avg{stroke:rgba(var(--k-246-239-230,246,239,230),.35);stroke-width:1;stroke-dasharray:3 4}
.ov-spark-x{display:flex;justify-content:space-between;gap:8px;margin-top:2px;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.ov-spark-avg{color:rgba(var(--k-246-239-230,246,239,230),.5)}
/* goals and routines */
.ov-goal{display:grid;grid-template-columns:1fr;gap:5px;width:100%;padding:9px 0;text-align:left;border-bottom:1px solid var(--hair);transition:background .2s}
.ov-goal:hover .ov-goal-t{color:var(--pearl)}
.ov-goal-t{font-size:14px;line-height:1.35;color:var(--ink-1)}
.ov-goal-m{font-size:12px;color:var(--ink-3)}
.ov-goal-wrap{position:relative}
.ov-goal-wrap.later{display:none}
.ov-plan-d{margin:2px 0 6px}
.ov-plan-d>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3);padding:3px 0;transition:color .15s}
.ov-plan-d>summary::-webkit-details-marker{display:none}
.ov-plan-d>summary::before{content:"›";display:inline-block;transition:transform .2s var(--ease)}
.ov-plan-d[open]>summary::before{transform:rotate(90deg)}
.ov-plan-d>summary:hover{color:var(--ink-1)}
.ov-goal-more{margin:10px 14px 0 0;font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}
.ov-goal-wrap .ov-goal{padding-right:52px}
.ov-goal-c{font-size:12px;line-height:1.4;color:var(--ink-2);font-style:italic}
.ov-goal-edit{position:absolute;right:0;top:8px;font-size:11.5px;color:var(--ink-3);padding:4px 9px;border-radius:999px;border:1px solid var(--hair);transition:color .15s,border-color .15s}
.ov-goal-edit:hover,.ov-goal-edit:focus-visible{color:var(--ink-1);border-color:rgba(var(--c,236,212,165),.5)}
.ov-goal-add{margin-top:10px;font-size:12.5px;color:var(--ink-2);padding:7px 12px;border-radius:999px;border:1px dashed rgba(var(--k-236-212-165,236,212,165),.4)}
.ov-goal-add:hover{color:var(--ink-1)}
.ov-goal-form{display:flex;flex-direction:column;gap:9px;padding:12px;margin:8px 0;border-radius:14px;border:1px solid rgba(var(--c),.35);background:rgba(var(--c),.04)}
.ov-gf-row{display:grid;grid-template-columns:70px 1fr auto;align-items:center;gap:10px;font-size:12px;color:var(--ink-3)}
.ov-gf-row input[type=text],.ov-gf-row textarea,.ov-gf-row select{grid-column:2 / -1;width:100%;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:8px 10px}
.ov-gf-row textarea{resize:vertical}
.ov-gf-row input[type=range]{width:100%;accent-color:rgb(var(--c))}
.ov-gf-p{font-size:12px;color:var(--ink-2);min-width:52px;text-align:right}
.ov-gf-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ov-gf-save{padding:8px 16px;border-radius:999px;background:var(--gold);color:var(--h-1d1408,#1d1408);font-size:13px;font-weight:600}
.ov-gf-cancel{font-size:12.5px;color:var(--ink-2);padding:8px 10px}
.ov-gf-done{font-size:12.5px;padding:7px 12px;border-radius:999px;border:1px solid rgba(var(--k-111-242-196,111,242,196),.45);color:var(--mint)}
.ov-gf-done:active{transform:scale(.97)}
.ov-gf-remove{margin-left:auto;font-size:12.5px;color:rgb(244,168,150);padding:8px 10px}
.ov-bar{position:relative;display:block;height:4px;border-radius:4px;background:rgba(var(--c),.15);overflow:hidden}
.ov-bar i{position:absolute;inset-block:0;inset-inline-start:0;border-radius:4px;background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.6)}
.ov-bar.unknown{background:repeating-linear-gradient(90deg,rgba(var(--c),.25) 0 4px,transparent 4px 8px)}
.ov-routine{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 10px;padding:7px 0}
.ov-routine .ov-goal-m{grid-column:2 / -1}
/* a goal's plan: the routines and tasks behind it, ticked right here */
.ov-plan{display:flex;flex-direction:column;gap:2px;padding:4px 0 10px 14px;margin-left:2px;border-left:1px solid rgba(var(--c),.3)}
.ov-plan-m{margin:2px 0 4px;font-size:12px;color:var(--ink-3)}
.ov-plan-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:5px 0}
.ov-plan-t{font-size:13.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-plan-k{font-size:12px;color:var(--ink-3);white-space:nowrap}
.ov-plan-add{align-self:flex-start;margin-top:4px;font-size:12.5px;color:var(--ink-2);padding:6px 11px;border-radius:999px;border:1px dashed rgba(var(--c),.45);transition:color .2s,border-color .2s}
.ov-plan-add:hover{color:var(--ink-1);border-color:rgba(var(--c),.8)}
.ov-plan-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}
.ov-plan-form input{flex:1 1 180px;min-width:0;padding:8px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:13.5px}
.ov-plan-form select{padding:8px 10px;border-radius:10px;border:1px solid var(--hair-2);background:var(--h-0b0d18,#0b0d18);color:var(--ink-1);font:inherit;font-size:13px}
.ov-plan .tcheck,.ov-routine .tcheck,.gl-routine .tcheck{width:18px;height:18px;margin:0}
.ov-plan .tcheck.on::after,.ov-routine .tcheck.on::after,.gl-routine .tcheck.on::after{left:5px;top:2px}
.ov-dots{display:flex;gap:3px}
.ov-dots i{width:6px;height:6px;border-radius:50%;background:rgba(var(--c),.18)}
.ov-dots i.on{background:rgb(var(--c));box-shadow:0 0 5px rgba(var(--c),.7)}
/* the river of time */
.ov-time{--c:92,225,255}
.ov-time-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ov-time-head h3{margin:0}
.ov-days{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));align-items:stretch;height:118px;margin:14px 0 0;gap:2px}
.ov-day{position:relative;height:100%;display:grid;grid-template-rows:minmax(0,1fr) 40px;justify-items:center;align-items:end;padding:0;border-radius:8px;cursor:pointer;transition:background .2s,box-shadow .2s}
.ov-day .ov-stack{padding-bottom:8px;border-bottom:1px solid var(--hair-2);width:100%;height:100%;justify-content:flex-start}
.ov-day.wkend{background:rgba(var(--k-255-255-255,255,255,255),.018)}
.ov-day:focus-visible{outline:2px solid rgba(var(--k-92-225-255,92,225,255),.6);outline-offset:1px}
.ov-day:hover{background:rgba(var(--k-92-225-255,92,225,255),.05)}
.ov-day.sel{background:rgba(var(--k-92-225-255,92,225,255),.11);box-shadow:inset 0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.35)}
.ov-day.today::before{content:"";position:absolute;left:50%;top:6px;bottom:40px;width:1px;background:linear-gradient(rgba(var(--k-245-198-107,245,198,107),0),rgba(var(--k-245-198-107,245,198,107),.5))}
.ov-stack{display:flex;flex-direction:column-reverse;align-items:center;gap:4px}
.ov-stack i{display:block;width:8px;height:8px;border-radius:50%;background:rgb(92,225,255);box-shadow:0 0 7px rgba(var(--k-92-225-255,92,225,255),.65)}
.ov-stack i.task{border-radius:1.5px;transform:rotate(45deg);width:7px;height:7px;background:rgb(var(--c,245,198,107));box-shadow:0 0 7px rgba(var(--c,245,198,107),.6)}
.ov-stack i.plan{background:transparent;border:1.5px solid rgb(var(--c,188,174,248));box-shadow:0 0 8px rgba(var(--c,188,174,248),.45)}
.ov-stack i.over{background:rgb(255,140,120);box-shadow:0 0 7px rgba(var(--k-255-140-120,255,140,120),.7)}
.ov-stack i.cont{width:16px;height:2px;border-radius:2px;background:rgba(var(--k-92-225-255,92,225,255),.45);box-shadow:none}
.ov-stack b{font-size:11px;font-weight:500;color:var(--ink-3);line-height:1}
.ov-date{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;height:40px;padding-top:5px;line-height:1.1;pointer-events:none;white-space:nowrap}
.ov-date .wd{font-size:11px;letter-spacing:.04em;color:var(--ink-3)}
.ov-date b{font-size:12px;font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ov-date .mo{font-size:11px;color:var(--ink-3)}
.ov-day.wkend .ov-date b{color:var(--ink-3)}
.ov-day.has .ov-date b{color:var(--ink-1)}
.ov-day.sel .ov-date b{color:rgb(92,225,255)}
.ov-days.n7 .ov-date .wd{font-size:11px}.ov-days.n7 .ov-date b{font-size:15px}
.ov-day.today .ov-date b,.ov-day.today .ov-date .wd,.ov-day.today .ov-date .mo{color:var(--gold)}
.ov-agenda-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 0;font-size:12.5px;color:var(--ink-3)}
.ov-all{font-size:12.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}.ov-all:hover{color:var(--ink-1)}
.ov-agenda{margin-top:12px;display:flex;flex-direction:column;gap:14px}
.ov-group h4 .ov-n{letter-spacing:.04em;font-variant-numeric:tabular-nums}
.ov-group{border-radius:12px;transition:background .25s}
.ov-group.lit{background:rgba(var(--k-92-225-255,92,225,255),.05)}
.ov-group.more{display:none}.ov-agenda.all .ov-group.more{display:block}
.ov-group h4{display:flex;align-items:baseline;gap:8px;margin:0 0 4px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.ov-group h4 b{color:var(--ink-2);font-weight:600}
.ov-item{display:grid;grid-template-columns:10px 76px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:9px 10px;margin:0 -10px;text-align:left;border-radius:10px;font-size:14px;color:var(--ink-1);transition:background .15s}
.ov-item:hover,.ov-item:focus-visible{background:rgba(var(--k-255-255-255,255,255,255),.04)}
.ov-item i{width:8px;height:8px;border-radius:50%;background:rgb(92,225,255);box-shadow:0 0 6px rgba(var(--k-92-225-255,92,225,255),.6)}
.ov-item.task i{border-radius:1.5px;transform:rotate(45deg);width:7px;height:7px;background:rgb(var(--c,245,198,107))}
.ov-item.plan i{background:transparent;border:1.5px solid rgb(var(--c,188,174,248));box-shadow:none}
.ov-item.over i{background:rgb(255,140,120)}
.ov-item-w{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-item-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.ov-item-l{display:flex;align-items:baseline;gap:8px;min-width:0}
.ov-item-l span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ov-where{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Time to leave on an event (public/js/leavetext.js): gold = something to do; a little brighter in the last ten minutes */
.leave-l{display:inline-flex;align-items:flex-start;gap:6px;margin-top:5px;font-size:12px;line-height:1.35;color:rgba(var(--k-245-198-107,245,198,107),.86);font-variant-numeric:tabular-nums;max-width:100%}
.leave-l span{min-width:0;text-wrap:pretty} /* wraps rather than cutting off the minutes on a narrow phone */
.leave-l svg{flex:none;width:12px;height:12px;margin-top:2.5px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
[dir=rtl] .leave-l svg{transform:scaleX(-1)}
.leave-l.soon{color:var(--gold);font-weight:500}
.ov-item-t .leave-l{display:flex}
.ov-item-t em{flex:none;font-style:normal;font-size:11px;color:var(--ink-3);padding:1px 6px;border-radius:999px;border:1px solid var(--hair-2)}
.ov-item-m{font-size:12px;color:var(--ink-3);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-controls{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;justify-content:flex-end}
.ov-mode{padding:2px;border-radius:999px;border:1px solid var(--hair)}
.ov-stack i.quiet{width:5px;height:5px;background:rgba(var(--k-92-225-255,92,225,255),.45);box-shadow:none}
.ov-item.quiet{color:var(--ink-2)}
.ov-item.quiet i{width:6px;height:6px;background:rgba(var(--k-92-225-255,92,225,255),.45);box-shadow:none;justify-self:center}
.ov-item.notable .ov-item-t span{font-weight:500}
.ov-item-t em.hl{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.4)}
.ov-more{margin-top:12px;font-size:12.5px;color:var(--ink-2);padding:7px 14px;border-radius:999px;border:1px solid var(--hair-2)}
.ov-more:hover{color:var(--ink-1);border-color:rgba(var(--k-92-225-255,92,225,255),.5)}
/* Today on Coming up: her day in hours, with NOVA's suggested time blocks (public/js/daytimeline.js, Oct 20) */
.odv{margin-top:14px;padding:14px 0 12px;border-radius:16px;background:var(--sf-0);border:1px solid var(--hair)}
.odv-allday{display:flex;align-items:center;gap:6px 8px;flex-wrap:wrap;padding:0 16px 12px}
.odv-allday-k{font-size:12.5px;color:var(--ink-3);margin-inline-end:2px}
.odv-chip{position:relative;min-height:32px;max-width:260px;padding:0 12px;border-radius:999px;background:var(--sf-2);border:1px solid var(--hair);font-size:13px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.odv-chip::after{content:"";position:absolute;inset:-6px 0}
.odv-chip:hover{border-color:var(--hair-2)}.odv-chip:active{transform:scale(.97)}
.odv-more{font-size:12.5px;color:var(--ink-3)}
.odv-scroll{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--hair-2) transparent;padding:0 16px 4px}
/* the hours run on past the edge: a soft fade says there's more to scroll */
.odv-scroll{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%)}
.odv-track{position:relative;min-width:100%;width:calc(var(--hours) * 84px);height:calc(30px + var(--lanes) * 58px)}
.odv-axis{position:relative;height:24px}
.odv-axis span{position:absolute;top:0;transform:translateX(-50%);font-size:12px;line-height:18px;color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.odv-axis span.first{transform:none}
html[dir=rtl] .odv-axis span{transform:translateX(50%)}html[dir=rtl] .odv-axis span.first{transform:none}
.odv-grid i{position:absolute;top:22px;bottom:0;width:1px;background:var(--hair)}
.odv-lanes{position:absolute;inset-inline:0;top:30px;bottom:0}
.odv-ev,.odv-sg{position:absolute;top:calc(var(--lane) * 58px);height:52px;min-width:44px;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:1px;padding:0 10px 0 12px;border-radius:12px;text-align:start;overflow:hidden;transition:border-color .15s,background-color .15s,opacity .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.odv-ev{background:var(--sf-2);border:1px solid var(--hair-2);color:var(--ink-1)}
.odv-ev::before{content:"";position:absolute;inset-block:12px;inset-inline-start:0;width:3px;border-start-end-radius:3px;border-end-end-radius:3px;background:rgb(92,225,255)}
.odv-ev.busy{color:var(--ink-2)}.odv-ev.busy::before{background:var(--ink-3)}
.odv-ev:hover{border-color:rgba(var(--k-92-225-255,92,225,255),.45)}
.odv-ev.past,.odv-sg.past{opacity:.42}
.odv-t{font-size:13.5px;font-weight:500;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.odv-w{font-size:12px;line-height:1.25;color:var(--ink-3);white-space:nowrap;overflow:hidden;font-variant-numeric:tabular-nums}
.odv-sg{background:linear-gradient(rgba(var(--k-245-198-107,245,198,107),.06),rgba(var(--k-245-198-107,245,198,107),.06)),var(--sf-0);border:1.5px dashed rgba(var(--k-245-198-107,245,198,107),.7);color:var(--gold)}
.odv-sg .odv-w{color:rgba(var(--k-245-198-107,245,198,107),.72)}
.odv-ev.narrow .odv-t,.odv-sg.narrow .odv-t{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:12.5px;line-height:1.2;overflow-wrap:break-word}
.odv-ev.narrow .odv-w,.odv-sg.narrow .odv-w{display:none}
.odv-ev.narrow,.odv-sg.narrow{padding:0 6px 0 9px}
.odv-axis span.hide{opacity:0}
/* a short block's words run on into the free time after it (to the next thing in its lane), on the panel's solid surface */
.odv-ev.spill,.odv-sg.spill{overflow:visible}
.odv-ev.spill .odv-t,.odv-ev.spill .odv-w,.odv-sg.spill .odv-t,.odv-sg.spill .odv-w{width:max-content;max-width:calc(var(--spill) - 24px);overflow:hidden;text-overflow:ellipsis}
.odv-sg:hover{border-color:var(--gold);background:linear-gradient(rgba(var(--k-245-198-107,245,198,107),.11),rgba(var(--k-245-198-107,245,198,107),.11)),var(--sf-0)}
.odv-sg.asked{border-style:solid;opacity:.55}
.odv-ev:active,.odv-sg:active{transform:scale(.97)}
.odv-ev:focus-visible,.odv-sg:focus-visible,.odv-chip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.odv-now{position:absolute;top:20px;bottom:0;inset-inline-start:0;width:0;z-index:2;pointer-events:none;border-inline-start:1.5px solid var(--gold)}
.odv-now b{position:absolute;top:-20px;left:0;transform:translateX(-50%);padding:0 5px;border-radius:5px;background:var(--sf-0);font-size:12px;line-height:18px;font-weight:600;color:var(--gold);white-space:nowrap}
html[dir=rtl] .odv-now b{left:auto;right:0;transform:translateX(50%)}
.odv-foot{display:flex;align-items:center;gap:8px;margin:10px 16px 0;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.odv-key{flex:none;width:18px;height:10px;border:1.5px dashed rgba(var(--k-245-198-107,245,198,107),.7);border-radius:4px}
.ov-time.day .ov-time-head{min-height:34px}
/* one suggestion, up close (a dialog: public/js/dialog.js) */
.odv-d .nd-title{font-size:28px}
.odv-d-when{margin:2px 0 0;font-size:14.5px;color:var(--gold);font-variant-numeric:tabular-nums}
.odv-d-why{margin:12px 0 0;font-size:16px;line-height:1.5;color:var(--ink-2)}
.odv-d-acct{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 0;font-size:14px;color:var(--ink-2)}
.odv-d-k{color:var(--ink-3);margin-inline-end:2px}
.odv-d-acct button{min-height:44px;max-width:100%;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color .15s,color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.odv-d-acct button[aria-checked="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.75);color:var(--ink-1);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.odv-d-acts{display:flex;gap:10px;margin-top:22px}
.odv-d-acts button{flex:1 1 0;min-height:48px;padding:0 14px;border-radius:999px;font-size:15px;font-weight:500;transition:background-color .15s,border-color .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.odv-d-no{border:1px solid var(--hair-2);color:var(--ink-1)}.odv-d-no:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.4)}
.odv-d-yes{background:var(--gold);color:#1d1408}.odv-d-yes:disabled{opacity:.4;cursor:default}
.odv-d-acts button:active,.odv-d-acct button:active{transform:scale(.97)}
.odv-d-acts button:focus-visible,.odv-d-acct button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.odv-d-msg{margin:10px 0 0;font-size:13.5px;color:var(--rose,#ff7ab6)}.odv-d-msg:empty{display:none}
.odv-d-note{margin:12px 0 0;font-size:13px;color:var(--ink-3);text-align:center}
.odv-d-ok{margin-top:18px}
.odv-d-wait{margin:18px 0 0;font-size:14.5px;color:var(--ink-2)}
@media (max-width:760px){
  .odv{margin-inline:-4px;border-radius:14px}
  .odv-scroll{padding:0 12px 4px}.odv-allday{padding:0 12px 10px}.odv-foot{margin:10px 12px 0}
  .odv-track{width:calc(var(--hours) * 128px)}
  .odv-d .nd-title{font-size:25px}
}
@media (prefers-reduced-motion:reduce){.odv-ev,.odv-sg,.odv-chip,.odv-d-acts button,.odv-d-acct button{transition:none}.odv-ev:active,.odv-sg:active,.odv-chip:active,.odv-d-acts button:active{transform:none}}
/* the hint that shows zooming past the edge is going somewhere */
.edge-hint{position:absolute;left:50%;bottom:150px;z-index:8;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translate(-50%,8px);opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease)}
.edge-hint.on{opacity:1;transform:translate(-50%,0)}
.edge-hint span{font-size:13px;color:var(--ink-1);text-shadow:0 0 12px rgba(var(--k-3-4-10,3,4,10),1)}
.edge-hint i{position:relative;display:block;width:160px;height:2px;border-radius:2px;background:rgba(var(--k-245-198-107,245,198,107),.2);overflow:hidden}
.edge-hint em{position:absolute;inset:0;background:var(--gold);box-shadow:0 0 8px rgba(var(--k-245-198-107,245,198,107),.8);transform:scaleX(var(--p,0));transform-origin:var(--fill-from,left);transition:transform .15s ease-out}
@media (max-width:760px){
  .ov-top{padding:calc(16px + env(safe-area-inset-top,0px)) 16px 0}
  /* the menu and Back share the top line; the titles get the full width under them (beside Back they were ~150px) */
  .ov-top{flex-wrap:wrap;row-gap:10px}.ov-top>.ov-titles{order:3;flex:1 1 100%}
  /* the day's read-out reads as a line or three, not a wall: tap it for the rest (Katie, Oct 15) */
  .ov-titles h2{font-size:19px;line-height:1.28;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;cursor:pointer}
  .ov-titles h2.full{-webkit-line-clamp:unset;display:block}
  .ov-upd{margin-top:4px}
  .ov-back{padding:8px 13px;font-size:12.5px}
  .ov-scroll{display:flex;flex-direction:column;padding:8px 16px 60px;overflow:auto}
  .ov-scroll>*,.ov-band>*{flex-shrink:0;align-self:stretch} /* a tall section must never squash the others; every section full width */
  .ov-orbit{order:0}.ov-noticed{order:2}.ov-health{order:4}
  /* Now and next comes first on a phone, ahead of Today's focus: what needs her and what's next, on the first screen */
  .ov-scroll .gp{order:-2;margin:0 0 14px}
  .ov-orbit{display:flex;gap:6px;min-height:0;overflow-x:auto;scrollbar-width:none;margin:0 -16px 8px;padding:8px 16px}
  .ov-orbit::-webkit-scrollbar{display:none}
  .ov-orb,.overview.on .ov-orb{position:relative;left:auto;top:auto;transform:none;opacity:1;flex:none;width:84px}
  .ov-orb-tip,.ov-core,.ov-orb-trend{display:none}
  .ov-orb,.overview.on .ov-orb{height:auto;display:flex;flex-direction:column;align-items:center;gap:6px}
  .ov-orb .ov-orb-name,.ov-orb[data-side] .ov-orb-name{position:static;transform:none;font-size:11.5px;white-space:normal;text-align:center}
  .ov-panel{margin-top:18px}
  .ov-days{height:104px;gap:1px}
  .ov-days.n30 .ov-date .wd,.ov-days.n30 .ov-day:not(.today) .ov-date .mo{display:none}
  .ov-days.n30 .ov-day:nth-child(even):not(.today):not(.month):not(.sel) .ov-date b{visibility:hidden}
  /* today's date and its "Today" are wider: the next shown date (two along) steps aside so "20" and "22" never read as "2022" */
  .ov-days.n30 .ov-day.today+.ov-day+.ov-day:not(.month):not(.sel) .ov-date b{visibility:hidden}
  .ov-days.n30 .ov-date b,.ov-days.n14 .ov-date b{font-size:11px}
  .ov-stack i{width:6px;height:6px}.ov-stack i.task{width:5.5px;height:5.5px}
  .ov-item{grid-template-columns:10px 62px minmax(0,1fr);gap:10px;font-size:13.5px}
  .ov-item-m{display:none}
  .ov-time-head{flex-direction:column;align-items:flex-start;gap:10px}
  .ov-controls{justify-content:flex-start}
  .ov-hint{display:none}
  #stage.in-overview #fig{opacity:.25}
}
@media (prefers-reduced-motion:reduce){.ov-orb{transition:opacity .2s}#stage.in-overview #fig{transform:none}}

/* the Actions hub: suggested events, routines and tasks from every area of life */
.thead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:22px 0 8px}
.thead h4{margin:0}
.tkinds{display:flex;gap:4px}
.tkinds button{padding:6px 12px;border-radius:999px;border:1px solid var(--hair-2);font-size:12px;color:var(--ink-3)}
.tkinds button[aria-checked="true"]{color:var(--h-1d1408,#1d1408);background:var(--gold);border-color:var(--gold)}
.tsug-top{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.tkind{font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid currentColor}
.tkind.k-event{color:rgb(92,225,255)}
.tkind.k-routine{color:rgb(111,242,196)}
.tkind.k-task{color:var(--gold)}
.tsug.k-event{border-color:rgba(var(--k-92-225-255,92,225,255),.28);background:rgba(var(--k-92-225-255,92,225,255),.04)}
.tsug.k-routine{border-color:rgba(var(--k-111-242-196,111,242,196),.25);background:rgba(var(--k-111-242-196,111,242,196),.035)}
.tsug .tm{margin-top:6px}
.ld-actions{display:flex;flex-direction:column;gap:6px}
.ld-act{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid rgba(var(--c),.22)}
.ld-act .la-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ld-act .la-t b{font-weight:500;font-size:13.5px;color:var(--ink-1)}
.ld-act .la-t span{font-size:12px;color:var(--ink-3)}
.ld-act .bs-add{flex:none}

/* ---------- Agents › Monitor ---------- */
#sheet.wide{width:min(1120px,100vw)}
/* Customize › Plan & usage: room to compare plans side by side (the panel widens while it's open) */
#sheet.cz-wide{width:min(900px,100vw)}
#stage.simple #sheet.cz-wide{width:auto}
/* plans side by side where there's room (the wide panel, or Simple view's page) */
@media (min-width:760px){
  #sheet.cz-wide .plan-grid,#stage.simple #sheet .cz .plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:12px;align-items:stretch}
  #sheet.cz-wide .plan-card .plan-go,#stage.simple #sheet .cz .plan-card .plan-go{margin-top:auto}
  #sheet.cz-wide .cz{max-width:820px}
  #sheet.cz-wide .plan-top,#stage.simple #sheet .cz .plan-top{flex-wrap:wrap;gap:2px 10px}
  #sheet.cz-wide .plan-tag,#stage.simple #sheet .cz .plan-tag{margin-inline-end:6px}
}
#stage.simple #sheet .sheet-go{display:none}
@media (prefers-reduced-motion:reduce){#stage.simple #sheet,#stage.simple #sheet.on{transition:none}}
#sheet.wide .tiles{grid-template-columns:repeat(4,minmax(0,1fr))}#sheet.wide .tiles .tile.s1.lone{grid-column:auto}
.mon{--c:245,198,107;padding-bottom:24px}
.mon-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:6px 0 12px}
.mon-bar .link{font-size:12px;color:var(--ink-3)}
.mon-att{display:flex;flex-direction:column;gap:6px;margin:0 0 14px}
.mon-a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid var(--hair);font-size:13.5px;color:var(--ink-1);line-height:1.45}
.mon-a span{flex:1}
.mon-a i{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
.mon-a.high{border-color:rgba(var(--k-255-180-162,255,180,162),.4);background:rgba(var(--k-255-180-162,255,180,162),.05)}.mon-a.high i{background:var(--h-ffb4a2,#ffb4a2)}
.mon-a.medium{border-color:rgba(var(--k-245-198-107,245,198,107),.35);background:rgba(var(--k-245-198-107,245,198,107),.04)}.mon-a.medium i{background:var(--gold)}
.mon-ok{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:13.5px;color:var(--ink-2)}
.mon-ok i{width:8px;height:8px;border-radius:50%;background:var(--mint)}
.mon-h{margin:26px 0 10px;font-size:11px;letter-spacing:.22em;color:var(--ink-3);font-weight:500}
.mon-agents{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.mon-agent{display:flex;flex-direction:column;gap:10px;padding:14px 14px 12px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.02);border-top:2px solid rgba(var(--c),.55)}
.mon-agent header{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mon-agent header b{font-weight:500;font-size:14.5px;color:var(--ink-1)}
.mon-state{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-2);white-space:nowrap}
.mon-state i{width:7px;height:7px;border-radius:50%;background:var(--ink-3)}
.mon-state.s-run i{background:var(--ice);box-shadow:0 0 0 3px rgba(var(--k-92-225-255,92,225,255),.18);animation:monPulse 1.4s ease-in-out infinite}
.mon-state.s-wait i{background:var(--gold)}.mon-state.s-bad{color:var(--h-ffb4a2,#ffb4a2)}.mon-state.s-bad i{background:var(--h-ffb4a2,#ffb4a2)}
.mon-state.s-pause i{background:transparent;border:1.5px solid var(--ink-3)}
@keyframes monPulse{50%{box-shadow:0 0 0 6px rgba(var(--k-92-225-255,92,225,255),0)}}
@media (prefers-reduced-motion:reduce){.mon-state.s-run i{animation:none}}
.mon-dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px;margin:0}
.mon-dl div{min-width:0}
.mon-dl dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.mon-dl dd{margin:2px 0 0;font-size:12.5px;color:var(--ink-1);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mon-out{margin:0;font-size:12px;color:var(--ink-2)}
.mon-sum{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.mon-sum.open{display:block;-webkit-line-clamp:unset}
/* BD Strategy: a track's plan, read like a brief */
.ag-track{margin-top:12px;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03)}
.ag-track .ag-sub{margin-top:0}
.ag-track-f{margin:6px 0 8px;font-size:14px;line-height:1.5;color:var(--ink-1)}
.ag-track-dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0 0 8px;font-size:13px;line-height:1.45}
.ag-track-dl dt{color:var(--ink-3);font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding-top:2px}
.ag-track-dl dd{margin:0;color:var(--ink-2)}
.mon-more{margin-top:2px;padding:4px 0;font-size:12px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px}
.mon-more[hidden]{display:none}
.mon-more:hover{color:var(--ink-1)}
.mon-err{margin:0;font-size:12.5px;color:var(--h-ffb4a2,#ffb4a2);line-height:1.45}
.mon-acts{display:flex;align-items:center;gap:8px;margin-top:auto}
.mon-acts .link{margin-left:auto;font-size:12px}
.mon-ff{margin-left:6px}
.mon-runs{display:flex;flex-direction:column;margin-top:8px;border-top:1px solid var(--hair)}
.mon-tr{display:grid;grid-template-columns:120px 150px minmax(0,1fr) 70px 64px;gap:10px;align-items:baseline;width:100%;text-align:left;padding:9px 4px;border-bottom:1px solid var(--hair);font-size:12.5px;color:var(--ink-2)}
.mon-tr.head{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding-top:10px}
button.mon-tr{transition:background .15s}button.mon-tr:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.mon-tr span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mon-tr .res{color:var(--ink-1)}.mon-tr.s-failed .res{color:var(--h-ffb4a2,#ffb4a2)}
.mon-tr small{color:var(--ink-3)}
.mon-tr .num{text-align:right;font-variant-numeric:tabular-nums}
.mon-detail{padding:10px 12px;margin:0 0 6px;border-radius:0 0 12px 12px;background:rgba(var(--k-246-239-230,246,239,230),.03);font-size:13px;color:var(--ink-1);line-height:1.5}
.mon-detail p{margin:0}.mon-meta{margin-top:6px!important;font-size:11.5px;color:var(--ink-3)}
.mon-apc{margin:0 0 8px;font-size:12.5px;color:var(--ink-3)}
.mon-budget{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin:26px 0 0;padding:14px;border-radius:14px;border:1px dashed var(--hair-2)}
.mon-budget label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--ink-2)}
.mon-in{display:inline-flex;align-items:center;gap:4px;padding:0 10px;border:1px solid var(--hair-2);border-radius:10px;background:rgba(var(--k-255-255-255,255,255,255),.03)}
.mon-in input{width:90px;border:0;background:none;color:var(--ink-1);font-size:14px;padding:8px 0;outline:none}
.mon-budget small{flex:1 1 100%;font-size:11.5px;color:var(--ink-3);line-height:1.45}
@media (max-width:760px){#sheet.wide .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}#sheet.wide .tiles .tile.s1.lone{grid-column:1 / -1}.mon-tr{grid-template-columns:78px minmax(0,1fr) 56px}.mon-tr>:nth-child(2),.mon-tr>:nth-child(5){display:none}.mon-dl{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- photos pasted for NOVA to look at ---------- */
.att-tray{position:absolute;z-index:4;left:12px;right:12px;bottom:calc(100% + 10px);display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px;border-radius:16px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.98)}
.att-tray[hidden]{display:none}
.att{position:relative;margin:0;width:58px;height:58px;border-radius:10px;overflow:hidden;background:rgba(var(--k-246-239-230,246,239,230),.05);animation:ldIn .3s cubic-bezier(.23,1,.32,1) both}
.att img{width:100%;height:100%;object-fit:cover;display:block}
.att-x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(var(--k-3-4-10,3,4,10),.78);color:var(--ink-1);font-size:13px;line-height:20px;text-align:center}
.att-n{font-size:12px;color:var(--ink-2);padding:0 4px}
.att-doc{width:auto;min-width:150px;max-width:230px;height:58px;padding:8px 30px 8px 10px;display:flex;flex-direction:column;justify-content:center;gap:1px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04)}
.att-k{font-size:10.5px;letter-spacing:.06em;color:var(--gold)}
.att-doc.k-sheet .att-k{color:var(--mint)}.att-doc.k-doc .att-k,.att-doc.k-text .att-k{color:var(--ice)}.att-doc.k-pdf .att-k{color:var(--rose)}
.att-name{font-weight:500;font-size:12.5px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-meta{font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.turn-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.turn-file{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--hair-2);font-size:12px;color:var(--ink-2);max-width:100%}
.turn-file b{font-weight:500;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.keep-docs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;font-family:var(--sans)}
.keep-docs>span{font-size:12.5px;color:var(--ink-3)}
.keep-docs .btn-sm{border-radius:999px;font-family:var(--sans);font-size:12.5px;padding:6px 12px;background:transparent;color:var(--ink-1);border:1px solid var(--hair-2);transition:border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.keep-docs .btn-sm:hover:not(:disabled){border-color:rgba(var(--k-245-198-107,245,198,107),.6)}.keep-docs .btn-sm:active:not(:disabled){transform:scale(.97)}.keep-docs .btn-sm:disabled{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.4)}
.dock.drop{border-color:rgba(var(--k-245-198-107,245,198,107),.7);box-shadow:0 0 0 3px rgba(var(--k-245-198-107,245,198,107),.12)}
.said-att{display:inline-block;margin-left:8px;font-size:12px;color:var(--ink-3)}
@media (max-width:760px){.att-btn{width:34px;height:34px}}
/* the + menu beside the message box (public/js/plusmenu.js): files, a tool for this answer, an account, who thinks */
.plus-btn svg{transition:transform .18s cubic-bezier(.23,1,.32,1)}
.plus-btn[aria-expanded="true"] svg{transform:rotate(45deg)}
.plus-btn.on{display:flex;align-items:center;width:auto;max-width:44%;gap:4px;padding:0 10px 0 7px;border-radius:999px;color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1);box-shadow:inset 0 0 0 1px rgba(var(--k-245-198-107,245,198,107),.38)}
.plus-btn.on::before,.plus-btn.on::after{display:none}
.pb-ic{flex:none;display:grid;place-items:center}
.pb-ic .bmark{border-radius:5px}
.pb-ic.pc-account{color:var(--ice)}.pb-ic.pc-think{color:var(--violet)}
.pb-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 12.5px/1 var(--sans)}
@media (max-width:760px){.plus-btn.on .pb-t{display:none}.plus-btn.on{padding:0 8px}}
.plus-scrim{position:fixed;inset:0;z-index:69;background:rgba(0,0,0,0);transition:background .22s ease}
.plus-menu{position:fixed;z-index:70;width:330px;max-height:min(72vh,580px);overflow:auto;overscroll-behavior:contain;padding:6px;border-radius:18px;background:rgba(var(--k-8-10-22,8,10,22),.97);border:1px solid var(--hair-2);box-shadow:0 26px 70px -22px rgba(0,0,0,.85);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform-origin:bottom left;opacity:0;transform:scale(.96) translateY(6px);transition:opacity .16s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.plus-menu.in{opacity:1;transform:none}
.pm-row{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:12px;background:none;color:var(--ink-1);text-align:start;font:inherit;cursor:pointer;transition:background .14s ease,transform .12s ease-out}
.pm-row:hover,.pm-row:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.07);outline:none}
.pm-row:active{transform:scale(.985)}
.pm-row.on{background:rgba(var(--k-245-198-107,245,198,107),.09)}
.pm-row.on .pm-ic{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.pm-row.locked{opacity:.62}
.pm-ic{flex:none;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-2)}
.pm-ic.pm-brand{border:0;background:none}
.pm-row.on .pm-brand .bmark{box-shadow:0 0 0 2px rgba(var(--k-245-198-107,245,198,107),.7)}
.pm-ic i{font:600 14px/1 var(--sans);font-style:normal;color:var(--ice)}
.pm-w{display:flex;flex-direction:column;gap:2px;min-width:0}
.pm-w b{font:500 14px/1.25 var(--sans)}
.pm-w small{font-size:12.5px;line-height:1.3;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-h{margin:12px 10px 4px;font:500 12.5px/1 var(--sans);color:var(--ink-3)}
.pm-accts{display:flex;flex-direction:column}
.pm-seg{display:flex;gap:3px;margin:4px 8px 6px;padding:3px;border-radius:12px;background:rgba(var(--k-246-239-230,246,239,230),.05)}
.pm-seg button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;height:32px;border:0;border-radius:9px;background:none;color:var(--ink-2);font:500 13px/1 var(--sans);cursor:pointer;transition:background .14s ease,color .14s ease}
.pm-seg button[aria-checked="true"]{background:rgba(var(--k-246-239-230,246,239,230),.13);color:var(--ink-1)}
.pm-seg button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
/* on a phone: a sheet from the bottom edge, thumb-height rows, the screen dimmed behind it */
.plus-menu.sheet{left:0;right:0;bottom:0;width:auto;max-height:80svh;padding:8px 8px calc(12px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;border-bottom:0;opacity:1;transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,0,1)}
.plus-menu.sheet::before{content:"";display:block;width:38px;height:4px;margin:2px auto 6px;border-radius:2px;background:var(--hair-2)}
.plus-menu.sheet.in{transform:none}
.plus-menu.sheet .pm-row{padding:10px 10px;min-height:52px}
@media (max-width:760px){.plus-scrim.in{background:rgba(0,0,0,.45)}}
@media (prefers-reduced-motion:reduce){.plus-menu,.plus-menu.sheet{transition:opacity .12s linear;transform:none}.plus-btn svg{transition:none}}
/* Business › Business settings: her other businesses, each folded under its name */
.biz-more{margin-top:26px;padding-top:18px;border-top:1px solid var(--hair);display:flex;flex-direction:column;gap:10px}
.biz-more h4{margin:0}
.biz-other{border:1px solid var(--hair);border-radius:14px;padding:4px 14px}
.biz-other>summary{display:flex;align-items:baseline;gap:10px;padding:10px 0;cursor:pointer;list-style:none}
.biz-other>summary::-webkit-details-marker{display:none}
.biz-other>summary small{color:var(--ink-3)}
.biz-other[open]>summary{border-bottom:1px solid var(--hair);margin-bottom:10px}
.biz-more .link.danger{color:var(--rose)}


/* ---------- the work of her life: Actions and Agents, from Life at a glance ---------- */
.ov-cmd{grid-area:cmd;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:4px 0 18px}
.ov-door{--c:255,238,214;position:relative;display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:18px 20px 16px;border-radius:18px;text-align:left;border:1px solid rgba(var(--c),.22);background:linear-gradient(160deg,rgba(var(--c),.07),rgba(var(--k-4-5-12,4,5,12),.55) 60%);transition:border-color .2s,background .2s,transform .16s var(--ease)}
.ov-door.d-agents{--c:245,198,107}
.ov-door:hover{border-color:rgba(var(--c),.5);background:linear-gradient(160deg,rgba(var(--c),.11),rgba(var(--k-4-5-12,4,5,12),.55) 60%)}
.ov-door:active{transform:scale(.985)}
.ov-door-h{display:flex;justify-content:space-between;align-items:baseline}
.ov-door-t{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(var(--c),.95)}
.ov-door-go{font-size:12px;color:var(--ink-3);transition:color .2s}.ov-door:hover .ov-door-go{color:var(--ink-1)}
.ov-door-n{display:flex;align-items:baseline;gap:10px}
.ov-door-n b{font-family:var(--display);font-weight:400;font-size:44px;line-height:1;color:var(--ink-1);font-variant-numeric:tabular-nums}
.ov-door-n small{font-size:13px;color:var(--ink-2)}
.ov-door-l{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ov-lights{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.ov-lights i{width:8px;height:8px;border-radius:50%;background:rgba(var(--c),.28)}
.ov-lights i.s-running{background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.8);animation:ovPulse 1.6s ease-in-out infinite}
.ov-lights i.s-waiting{background:rgb(245,198,107);box-shadow:0 0 7px rgba(var(--k-245-198-107,245,198,107),.7)}
.ov-lights i.s-failing,.ov-lights i.s-failed,.ov-lights i.s-stuck{background:var(--h-ff9a8b,#ff9a8b);box-shadow:0 0 7px rgba(var(--k-255-154-139,255,154,139),.7)}
.ov-lights i.s-paused{background:transparent;border:1px solid rgba(var(--k-246-239-230,246,239,230),.25)}
.ov-lights i.s-idle{background:rgba(var(--c),.6)}
@keyframes ovPulse{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.ov-lights i.s-running{animation:none}}

.gl-work{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.gl-work .gl-wide{grid-column:1/-1} /* the third way in takes the whole row instead of leaving half of it empty */
.gl-go{display:none!important}
.gl-door{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:baseline;gap:2px 8px;padding:9px 10px 8px;border-radius:12px;border:1px solid rgba(var(--k-246-239-230,246,239,230),.16);background:rgba(var(--k-246-239-230,246,239,230),.04);text-align:left;transition:border-color .2s,background .2s,transform .16s var(--ease)}
.gl-door:hover{border-color:var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03)}.gl-door:active{transform:scale(.97)}
.gl-door-t{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(var(--k-246-239-230,246,239,230),.88)}
.gl-door b{grid-row:1/3;grid-column:2;font-family:var(--display);font-weight:400;font-size:22px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.gl-door.has b{color:var(--gold)}
.gl-door small{font-size:12px;color:rgba(var(--k-246-239-230,246,239,230),.8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.hub{position:absolute;inset:0;z-index:13;overflow:auto;overscroll-behavior:contain;outline:none;padding:0 max(28px,calc((100vw - 1240px) / 2)) 64px;background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(var(--c),.06),transparent 70%),#04050c;opacity:0;transform:translateY(10px);transition:opacity .26s var(--ease),transform .26s var(--ease)}
.hub.on{opacity:1;transform:none}
.hub:focus,.hub:focus-visible{outline:none;border-radius:0}
.hub[hidden]{display:none}
.hub-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:16px;margin:0 calc(-1 * max(28px,calc((100vw - 1240px) / 2))) 18px;padding:16px max(28px,calc((100vw - 1240px) / 2)) 14px;background:rgba(var(--k-4-5-12,4,5,12),.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hair)}
.hub-head .ld-title h3{color:var(--ink-1)}
.hub-setup{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);padding:7px 12px;border-radius:999px;border:1px solid var(--hair);transition:color .2s,border-color .2s}.hub-setup svg{flex:none}.hub-setup:active{transform:scale(.96)}
.hub-setup:hover{color:var(--ink-1);border-color:var(--hair-2)}
/* Agents: her team's live score in the header; tap it for why */
.hub-score{flex:none;display:flex;align-items:center;gap:8px;padding:3px 12px 3px 3px;border-radius:999px;border:1px solid transparent;color:var(--ink-2);font-size:12.5px;transition:border-color .2s,transform .16s var(--ease)}
.hub-score:hover,.hub-score[aria-expanded="true"]{border-color:var(--hair-2);color:var(--ink-1)}
.hub-score:active{transform:scale(.97)}
.hub-ring{width:38px;height:38px}
.hub-ring b{font-size:14.5px}
.hub-why{max-width:620px;margin:-6px 0 18px;padding:16px 18px;border-radius:18px;border:1px solid rgba(var(--c),.28);background:rgba(var(--c),.05)}
.hub-why p{margin:0}
.hub-why-r{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.hub-why-r b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1)}
.hub-why-t{font-size:12px;color:var(--ink-3)}.hub-why-t.up{color:var(--mint,#9fe3c2)}.hub-why-t.down{color:var(--rose,#ffb4a8)}
.hub-why-x{margin-top:6px!important;font-size:14px;line-height:1.5;color:var(--ink-2)}
.hub-why-e{margin:10px 0 0;padding:0 0 0 18px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.hub-why-go{margin-top:12px;padding:8px 14px;border-radius:999px;border:1px solid rgba(var(--c),.5);background:rgba(var(--c),.1);color:var(--ink-1);font-size:13px;text-align:left;transition:background-color .2s,transform .16s var(--ease)}
.hub-why-go:hover{background:rgba(var(--c),.18)}.hub-why-go:active{transform:scale(.97)}
.hub-why-b{margin-top:10px!important;font-size:12px;color:var(--ink-3)}
.hub-body{scroll-margin-top:90px}
/* the conversation about her team, at the foot of the Agents screen; the page scrolls above it */
.hub.has-talk{padding-bottom:0}
.hub>.wt{--padX:max(28px,calc((100vw - 1240px) / 2));--padL:var(--padX);bottom:0;margin-bottom:0}
@media (max-width:760px){.hub>.wt{--padX:14px}.hub-score{padding-right:3px}.hub-score-l{display:none}}
.hub .ld-x{flex:none}
.hub>.dash{margin-top:0}
.hub-body{margin-top:22px}
.hub-body.b-actions{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;align-items:start}
.hub-col .ld-sec{margin-top:0}
.hub-side{position:sticky;top:86px}
.hub-side>.link{margin-top:14px}
.hub .today .tlist{max-width:none}
.ag-work .ag-seg{margin:0}
/* ---------- the agents dashboard: a way to make one, and each agent's own page ---------- */
.ag-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px}
.ag-new{display:inline-flex;align-items:center;gap:8px;padding:8px 16px 8px 12px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);color:var(--gold);font-size:13px;flex:none;transition:background-color .2s ease,transform .16s ease-out}
.ag-new span{font-size:17px;line-height:1}
.ag-new:hover,.ag-new.on{background:rgba(var(--k-245-198-107,245,198,107),.1)}.ag-new:active{transform:scale(.97)}
.ag-open{background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.ag-open:hover{color:rgb(var(--c,245,198,107))}
.ag-name.ag-open{display:block;color:var(--ink-1)}.ag-name.ag-open:hover{color:rgb(var(--c,245,198,107))}
.ag-make{width:100%;margin:0 0 6px}
/* making an agent: in her words first */
.ab{--c:245,198,107}
.ab-describe{max-width:760px;margin:10px auto 0;padding:10px 0 20px}
.ab-kicker{margin:0 0 8px;font-size:11px;letter-spacing:.16em;color:rgba(var(--c),.95)}
.ab-h{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(28px,3.2vw,40px);line-height:1.08;color:var(--ink-1)}
.ab-lede{margin:10px 0 18px;font-size:14.5px;line-height:1.55;color:var(--ink-2);max-width:60ch}
.ab-ask{border:1px solid var(--hair-2);border-radius:20px;background:rgba(var(--k-10-12-24,10,12,24),.8);padding:14px 14px 10px;transition:border-color .2s ease,box-shadow .2s ease}
.ab-ask:focus-within{border-color:rgba(var(--c),.55);box-shadow:0 0 0 3px rgba(var(--c),.08)}
.ab-ask textarea{width:100%;min-height:72px;border:0;outline:0;background:transparent;resize:none;color:var(--ink-1);font:inherit;font-size:16px;line-height:1.5}
.ab-ask-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px}
.ab-fine{font-size:12px;color:var(--ink-3);line-height:1.45}
.ab-examples{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 0}
.ab-examples .ab-fine{width:100%;margin-bottom:2px}
.ab-ex{padding:8px 13px;border-radius:14px;border:1px dashed var(--hair-2);color:var(--ink-2);font-size:13px;text-align:left;line-height:1.4;transition:color .2s ease,border-color .2s ease}
.ab-ex:hover{color:var(--ink-1);border-color:rgba(var(--c),.5)}
.ab-foot{display:flex;gap:18px;margin-top:18px}
.ab-note{margin:12px 0 0;font-size:13px;color:var(--gold)}
.ab-describe.thinking .ab-ask{border-color:rgba(var(--c),.55);animation:abThink 1.6s ease-in-out infinite}
@keyframes abThink{0%,100%{box-shadow:0 0 0 0 rgba(var(--c),.0)}50%{box-shadow:0 0 0 4px rgba(var(--c),.12)}}
/* fine-tuning, with the agent taking shape beside it */
.ab-tune{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px;align-items:start;max-width:1080px;margin:6px auto 0}
.ab-tune.thinking{opacity:.6;pointer-events:none;transition:opacity .2s ease}
.ab-edit-h{margin:4px 0 14px}
.ab-refine{display:flex;gap:8px;margin:0 0 6px}
/* the mic beside a box (Katie, Oct 16: say what an agent should do, or what to change) */
.ab-mic{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--hair-2);color:var(--ink-2);transition:color .15s ease,border-color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.ab-mic:hover{color:var(--ink-1);border-color:rgba(var(--c,245,198,107),.5)}
.ab-mic:active{transform:scale(.95)}
.ab-mic:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
.ab-mic.on{color:#1a0d0d;background:var(--rose);border-color:var(--rose);animation:abMic 1.6s ease-in-out infinite}
@keyframes abMic{0%,100%{box-shadow:0 0 0 0 rgba(255,122,182,.45)}50%{box-shadow:0 0 0 6px rgba(255,122,182,0)}}
@media (prefers-reduced-motion:reduce){.ab-mic.on{animation:none}}
.ab-ask-row .ab-mic{margin-left:auto}
.ab-say{display:flex;align-items:flex-start;gap:8px}.ab-say textarea{flex:1;min-width:0}
.ab-refine input{flex:1;min-width:0;background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:999px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:9px 14px}
.ab-refine input:focus{outline:0;border-color:rgba(var(--c),.55)}
.ab-form.ag-set{margin:0;border-top:0;gap:6px;padding-top:4px}
.ab-said{padding:10px 0 4px}.ab-said p{margin:4px 0 0;font-size:14px;color:var(--ink-2);font-style:italic}
.ab-q{padding:12px 14px;border-radius:14px;border:1px solid rgba(var(--c),.3);background:rgba(var(--c),.05)}
.ab-q b{display:block;font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:rgba(var(--c),.95);margin-bottom:4px}
.ab-q p{margin:4px 0 0;font-size:13.5px;color:var(--ink-1);line-height:1.45}
.ab-group{border:0;border-top:1px solid var(--hair);margin:10px 0 0;padding:16px 0 4px;display:flex;flex-direction:column;gap:14px;min-width:0}
.ab-group[hidden]{display:none}
.ab-group legend{padding:0 10px 0 0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.ab-group label[hidden]{display:none}
/* actions that may cost money with a service she connected (server/charges.js): one quiet line, and a one-time OK */
.chg-note{display:block;padding:12px 14px;border-radius:12px;background:rgba(var(--k-245-198-107,245,198,107),.06);border:1px solid rgba(var(--k-245-198-107,245,198,107),.22)}
.chg-note[hidden],.chg-ack[hidden],.chg-done[hidden]{display:none}
.chg-body{display:flex;flex-direction:column;gap:8px;min-width:0}
.chg-note{min-width:0;max-width:100%;box-sizing:border-box;scroll-margin-top:84px}
.chg-lines{min-width:0}
.chg-lines p{overflow-wrap:anywhere;max-width:100%;margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-1);text-wrap:pretty}
.chg-lines p+p{margin-top:6px}
.chg-ack,.ag-set label.chg-ack{display:inline-flex;flex-direction:row;align-items:center;gap:10px;min-height:36px;width:max-content;max-width:100%;cursor:pointer}
.chg-ack>span,.ag-set label.chg-ack>span{font-size:13.5px;color:var(--ink-1);letter-spacing:0}
.chg-ack input{width:18px;height:18px;margin:0;flex:none;accent-color:var(--gold)}
.chg-fine{display:block;flex-basis:100%;font-size:12px;line-height:1.4;color:var(--ink-2);letter-spacing:0;text-transform:none;overflow-wrap:anywhere}
.chg-done{font-size:12px;color:var(--ink-3)}
.chg-note.nudge{animation:chg-nudge .26s var(--e-out)}
@keyframes chg-nudge{0%,100%{transform:translateX(0)}35%{transform:translateX(-3px)}70%{transform:translateX(2px)}}
@media (prefers-reduced-motion:reduce){.chg-note.nudge{animation:none}}
.chg-tag{display:inline-flex;align-items:center;gap:6px;padding:2px 9px 2px 8px;border-radius:999px;font-size:12px;line-height:18px;letter-spacing:0;text-transform:none;white-space:nowrap;color:var(--h-f5d9a0,#f5d9a0);border:1px solid rgba(var(--k-245-198-107,245,198,107),.4);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.chg-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
:is(.cv-ok-via,.approve .via):has(.chg-tag){display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.ag-out-chg{font-size:12px;color:var(--ink-2);margin:6px 0 0}
.ab-toggles{display:flex;flex-wrap:wrap;gap:6px}
.ab-toggles[hidden]{display:none}
.ab-tog{padding:8px 14px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-3);font-size:13px;transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .16s ease-out}
.ab-tog.has-mark{display:inline-flex;align-items:center;gap:7px;padding-inline-start:10px}
.ab-tog:hover{color:var(--ink-1)}
.ab-tog[aria-pressed="true"]{background:rgba(var(--c),.2);border-color:rgba(var(--c),.75);color:var(--ink-1)}
.ab-tog[aria-pressed="true"]::before{content:"✓ ";color:rgb(var(--c))}
.ab-tog:active{transform:scale(.97)}
.ab-days .ab-tog{padding:6px 11px;font-size:12.5px}
.ab-when{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ab-inline{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.ab-inline[hidden]{display:none}
.ab-when input[type=time],.ab-when input[type=number],.ag-set input[type=number]{background:rgba(var(--k-255-255-255,255,255,255),.03);border:1px solid var(--hair-2);border-radius:10px;color:var(--ink-1);font:inherit;font-size:13.5px;padding:7px 9px;color-scheme:dark}
.ab-when input[type=number],.ag-set input[type=number]{width:74px}
.ab-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:18px 0 8px;border-top:1px solid var(--hair);margin-top:12px}
.ab-card{position:sticky;top:96px;padding:22px 20px 18px;border-radius:22px;border:1px solid rgba(var(--c),.28);background:radial-gradient(420px 220px at 30% -40px,rgba(var(--c),.12),transparent 70%),rgba(var(--k-9-10-20,9,10,20),.9)}
.ab-card-top{display:flex;align-items:center;gap:12px}
.ab-card-top .ag-sigil{width:48px;height:46px}
.ab-card-name{font-family:var(--display);font-size:24px;line-height:1.1;color:var(--ink-1)}
.ab-card-world{font-size:11.5px;letter-spacing:.06em;color:rgba(var(--c),.95);margin-top:3px}
.ab-card-mission{margin:14px 0 10px;font-size:14px;line-height:1.5;color:var(--ink-1)}
.ab-card-does{margin:0 0 12px;padding-left:18px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.ab-card-facts{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;padding-top:12px;border-top:1px solid var(--hair);font-size:12.5px}
.ab-card-facts dt{color:var(--ink-3)}.ab-card-facts dd{margin:0;color:var(--ink-1);line-height:1.45;overflow-wrap:anywhere}
/* one agent's own page */
.ap{--c:245,198,107}
.ap-head{display:flex;align-items:flex-start;gap:18px;padding:6px 0 22px;border-bottom:1px solid var(--hair)}
.ap-head .ap-sigil{width:64px;height:60px;margin-top:2px}
.ap.paused .ap-sigil{opacity:.35;filter:none}
.ap-id{flex:1;min-width:0}
.ap-title{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ap-title h3{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(28px,3vw,38px);line-height:1.05;color:var(--ink-1)}
.ap-mission{margin:8px 0 6px;font-size:14.5px;line-height:1.5;color:var(--ink-1);max-width:62ch}
.ap-facts{margin:0;font-size:12.5px;color:var(--ink-3)}
.ap-acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;flex:none;max-width:360px}
.ap-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--hair)}
.ap-stat{display:flex;flex-direction:column;gap:4px;padding:18px 16px 16px 0}
.ap-stat+.ap-stat{padding-left:16px;border-left:1px solid var(--hair)}
.ap-stat span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.ap-stat b{font-family:var(--display);font-weight:400;font-size:32px;line-height:1;color:var(--ink-1);font-variant-numeric:lining-nums tabular-nums}
.ap-stat small{font-size:12px;color:var(--ink-3)}
.ap-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:44px;align-items:start;padding-top:8px}
.ap-col h4{margin-top:18px}
.hub-body .ap-col h4,.hub-body .ap-side h4{letter-spacing:normal;font-size:13.5px;font-weight:600;color:var(--ink-2)} /* (letter-spacing breaks Arabic joining) */
.ap-col .ag-body{padding-left:0}
.ap-dl{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:10px 0 0;font-size:13px}
.ap-reads{display:flex;flex-wrap:wrap;gap:6px 14px}.ap-reads>span{display:inline-flex;align-items:center;gap:7px}.ap-reads .bmark{border-radius:5px}
.link.has-mark{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.link.has-mark .bmark{border-radius:4px}
.ap-dl dt{color:var(--ink-3)}.ap-dl dd{margin:0;color:var(--ink-1);line-height:1.5;overflow-wrap:anywhere}
.ap-pre{white-space:pre-line;color:var(--ink-2)!important}
.ap-setup-form .ag-set{margin-left:0}
.ap-setup-form .ab-tune{grid-template-columns:minmax(0,1fr)}
.ap-hist{list-style:none;margin:0;padding:0}
.ap-hist li{display:grid;grid-template-columns:118px 1fr;gap:4px 12px;padding:9px 0;border-bottom:1px solid var(--hair);font-size:13px;line-height:1.45;color:var(--ink-1)}
.ap-hist time{color:var(--ink-3);font-size:12px;font-variant-numeric:tabular-nums}
.ap-hist small{grid-column:2;color:var(--ink-3);font-size:11.5px}
.ap-hist li.failed span{color:var(--h-ffb4a8,#ffb4a8)}
.ap-ev li{color:var(--ink-2)}
@media (max-width:1100px){.ab-tune{grid-template-columns:minmax(0,1fr)}.ab-main,.ab-card{min-width:0}.ab-card{position:static;order:-1}.ap-grid{grid-template-columns:minmax(0,1fr);gap:10px}}
@media (max-width:760px){
  .ag-top{flex-direction:column;align-items:stretch}.ag-new{align-self:flex-start}
  .ap-head{flex-wrap:wrap}.ap-head .ap-sigil{width:48px;height:46px}.ap-acts{justify-content:flex-start;max-width:none;width:100%}
  .ap-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.ap-stat:nth-child(3){padding-left:0;border-left:0}.ap-stat:nth-child(n+3){border-top:1px solid var(--hair)}
  .ap-stat b{font-size:26px}.ap-hist li{grid-template-columns:1fr}.ap-hist small{grid-column:1}
  .ab-ask textarea{font-size:16px}.ab-refine{flex-direction:column}.ab-refine .btn-sm{align-self:flex-start}
}
@media (prefers-reduced-motion:reduce){.ab-describe.thinking .ab-ask{animation:none}}
.ag-reports{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:0 40px;align-items:start}
.ag-rcol h4{margin-top:6px}
.ag-agent.flash{animation:agFlash 1.6s var(--ease)}
@keyframes agFlash{0%,40%{background:rgba(var(--c),.08)}100%{background:transparent}}
.hub-open{width:100%;margin:4px 0 14px}
.hub-body .thead h4{margin:0}
.hub-body .tl-h h4{margin:0;font-size:12.5px;letter-spacing:.01em;color:var(--ink-2)}
.ag-cfg{padding:14px 0 12px;border-bottom:1px solid var(--hair)}
.ag-cfg.paused .ag-name{color:var(--ink-3)}
.ag-cfg .ag-head{display:flex;align-items:center;gap:10px}
.ag-cfg .ag-id{flex:1;min-width:0}
.ag-cfg-acts{display:flex;align-items:center;gap:14px;flex:none}
/* an agent's on/off: a real switch with its state in words beside it */
.ag-swl{display:inline-flex;align-items:center;gap:8px;cursor:pointer;min-height:44px;-webkit-tap-highlight-color:transparent}
.ag-sw{flex:none;position:relative;width:40px;height:24px;padding:0;border:0;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.14);cursor:pointer;transition:background-color .2s ease,transform .16s ease-out}
.ag-sw i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.ag-sw[aria-checked="true"]{background:rgba(var(--c,245,198,107),.6)}
.ag-sw[aria-checked="true"] i{transform:translateX(16px);background:var(--h-fff,#fff)}
.ag-sw:active{transform:scale(.97)}
.ag-sw:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.ag-sw:disabled{cursor:default}
.ag-sw-t{min-width:2em;font-size:13px;color:var(--ink-2)}
.ag-sw[aria-checked="false"]+.ag-sw-t{color:var(--ink-3)}
.ag-team-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px}
.ag-team-head h4{margin:0}
.ag-alloff-note{font-size:13px;color:var(--ink-3)}
@media (prefers-reduced-motion:reduce){.ag-sw,.ag-sw i{transition:none}}
.ag-cfg .ag-fine{margin:6px 0 0 44px}
@media (max-width:760px){
  .hub{padding:0 14px 48px}
  .hub-head{margin:0 -14px 14px;padding:12px 14px;gap:10px}
  .hub-setup{width:38px;height:38px;padding:0;justify-content:center}.hub-setup .hs-t{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .hub-setup.adds{color:var(--gold);border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
  .hub-head .ld-title{flex:1;min-width:0}.hub-head .ld-title h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .hub-body.b-actions{grid-template-columns:minmax(0,1fr);gap:26px} /* minmax: a wide row inside (the lists' chips, a form) can never widen the column past the screen */
  .hub-side{position:static}
  .ag-reports{grid-template-columns:1fr}
  .ag-work .ag-seg{width:auto;overflow-x:auto;scrollbar-width:none}
  .ag-work .ag-seg button{white-space:nowrap}
  .hub-back span{display:none}
  .ov-cmd{gap:8px;margin:4px 0 14px}.ov-door{padding:14px 14px 13px;gap:8px}.ov-door-n b{font-size:34px}.ov-door-go{display:none}.ov-door-l{font-size:12px}
}
/* on a wide screen the rail already lists every section with its score: the glance keeps to the work and today's focus */
@media (min-width:1280px){.gl-worlds{display:none}.glance{gap:10px;padding:16px 18px 18px;background:rgba(var(--k-22-24-38,22,24,38),.8);box-shadow:0 14px 40px rgba(var(--k-0-0-0,0,0,0),.3)}}
@media (max-width:1279px){
  /* when the glance folds into one line (tablet and phone) the two ways into the work lead the line of worlds, as two lit counts */
  .glance{flex-direction:row;align-items:flex-start;gap:6px}
  .gl-worlds{flex:1;min-width:0}
  .gl-work{order:-1;display:flex;gap:4px;flex:none;padding-right:6px;border-right:1px solid var(--hair)}
  .gl-door{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 0;border:0;min-width:44px;border-radius:12px}
  .gl-door b{order:-1;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--hair-2);font-size:13px;line-height:1}
  .gl-door.has b{border-color:rgba(var(--k-245-198-107,245,198,107),.6);box-shadow:0 0 10px rgba(var(--k-245-198-107,245,198,107),.25)}
  .gl-door-t{font-size:11px;letter-spacing:0;text-transform:none}
  .gl-door small{display:none}
  /* folded into one line: the ways in, not a ring per world */
  .gl-worlds{display:none}
  .glance{justify-content:center;border:0;-webkit-backdrop-filter:none;backdrop-filter:none}
  .gl-work{border-right:0;padding:0;margin:0 auto;gap:10px}
  .gl-door,.gl-door:hover{background:none}
  .gl-door-t{text-shadow:0 1px 6px rgba(var(--k-0-0-0,0,0,0),.9)}
  /* a bigger Text size: these five short labels under their icons stay as they are, so the row still fits */
  html[data-text-size] .gl-door-t{font-size:12px}
  /* Arabic: “لوحة المعلومات” on two lines would run into the message box under it; one line fits the row */
  html[lang=ar] .gl-door-t{white-space:nowrap;letter-spacing:0}
}
@media (min-width:761px) and (max-width:1279px){
  /* tablets and small laptops: the two ways in stay on the left, trimmed so they clear the greeting */
  .rail{width:200px;gap:8px}
  .rail-card{padding:12px 14px 12px 16px;gap:3px}
  .rc-t{font-size:17px}
  .rail-dash .rc-s,.rd-bars{display:none}
  .rd-top{gap:10px}.rd-ring{width:40px;height:40px}.rd-ring b{font-size:15px}.rd-head .rc-t{font-size:16px;white-space:nowrap}.rd-head .rc-t i{display:none}
  .rail-head{margin-bottom:5px}
  .rail-list ol button{padding:5px 8px;font-size:13px;gap:8px}
}
/* ---------- tablets (iPad, Android tablets; Oct 18, Kareem's iPad): 761–1179px is the tablet layout ----------
   The rail stays on the left, so the greeting, the message box and its hint move into the room beside it instead of
   sitting centred under it (on an iPad they ran under the rail's cards). It's the same idea as a side panel's
   --pane-shift; the rail is on the left in Arabic too. Folded, the rail is 58px and they move back toward the middle.
   Reading a conversation hides the rail, so the box goes back to the centre there. */
@media (min-width:761px) and (max-width:1179px){
  #stage{--rail-w:200px;--rail-room:calc(max(26px,3vw) + var(--rail-w) + 20px)}
  #stage.rail-min{--rail-w:58px}
  #stage:not(.simple):not(.reading):not(.in-life) :is(#greet,#dock,#dockHint,#convoResume){translate:calc((var(--rail-room) - 20px) / 2) 0}
  #stage:not(.simple):not(.reading):not(.in-life) #dock{width:min(620px,calc(100vw - var(--rail-room) - 20px))}
  #stage:not(.simple):not(.reading):not(.in-life) #dockHint{max-width:min(620px,calc(100vw - var(--rail-room) - 20px))}
  /* a reminder sits right above the box, the box's own width, in the room beside the rail (on the right it covered
     the box). One card on home at a time: while it's up, the card above (NOVA noticed, a brief) and the two quiet
     lines under the greeting step aside, and come back when the reminder is done */
  .remind{bottom:calc(var(--dock-space,108px) + 12px);right:auto;left:50%;width:min(620px,calc(100vw - var(--rail-room) - 20px));translate:calc(-50% + (var(--rail-room) - 20px) / 2) 0}
  #stage.simple .remind,#stage.reading .remind{translate:-50% 0;width:min(620px,calc(100vw - 40px))}
  #stage:not(.simple):has(.remind.on) .greet :is(.status,.brief-more,#brief){opacity:0;pointer-events:none;transition:opacity .2s ease-out}
  #stage:not(.simple):not(.reading):not(.in-life) #greet{width:min(640px,calc(100vw - var(--rail-room) - 20px))}
  #stage:not(.simple) :is(#dock,#dockHint){transition:translate .25s var(--ease)} /* (the greeting already eases its translate) */
  /* a conversation's card (it reaches 22px past the column each side) keeps the page's 24px gutters */
  #stage:not(.simple) .convo{width:min(780px,calc(100vw - 92px))}
}
/* Projects on a tablet (to 1279px): one column, the suggestions and plans under the list (two columns squeezed the
   names to a letter at 820px and crowded each row's tools at 1180px) */
@media (min-width:761px) and (max-width:1279px){
  .h-projects .pd-hwrap{grid-template-columns:minmax(0,1fr)}
  .h-projects .pd-hside{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
  .h-projects .pd-hside>.pd-notice{grid-column:1/-1}
  .h-projects .pd-hside>.pd-plans{grid-column:1}
  .h-projects .pd-row{grid-template-columns:minmax(0,1.3fr) 110px minmax(0,1.4fr) 60px}
  .h-projects .pd-row-th{display:none}
}
/* a section opened straight from a link (a notification) before the home screen has faded in: its rail still shows,
   so the room the page keeps for it on the left is never an empty strip */
#stage.in-world .rail{opacity:1}
/* Simple view on an upright tablet has no rail (its menu is a drawer), so a section keeps even gutters */
@media (min-width:761px) and (max-width:900px){#stage.simple.in-world #life .life-detail.dash{--padL:var(--padX)}}
@media (prefers-reduced-motion:reduce){#stage :is(#dock,#dockHint){transition:none}}
/* a section's header on a tablet: the NOVA mark and the chip's word step aside (as on a phone) so the section's name
   keeps its one line and never runs under the worlds' ‹ › */
@media (min-width:761px) and (max-width:1099px){.life-detail.dash .ld-head>.ld-mark{display:none}.life-detail.dash .ld-chip span{display:none}.life-detail.dash .ld-head>.ld-title{flex-shrink:0}}
/* a finger on a tablet (an iPad says it's a Mac, so public/js/device.js marks <html data-device="tablet">): the controls
   a desktop keeps small reach 44px, the size iOS and Android ask for. Phones have their own rules (max-width:760px). */
@media (min-width:761px){
  html[data-device=tablet] :is(.menu,.avatar,.mbrief-fold,.mbrief-x,.dock .mic,.ld-prev,.ld-next,.rail-fold){min-width:44px;min-height:44px}
  html[data-device=tablet] :is(.life-entry,.ld-back,.md-tab,.sc-seg-b,.first-steps,.brief-more,.ld-x,.hub-back,.cv-new,.cv-back){min-height:44px}
  html[data-device=tablet] .ld-x{min-width:44px}
  html[data-device=tablet] .ld-dot{height:44px}
  html[data-device=tablet] .rail-list ol button{min-height:44px}
  html[data-device=tablet] .rail-fold{margin-bottom:0}
  html[data-device=tablet] :is(.turn-foot .rt,.sources .src-tog,.gate-lang button,.gate-links a,#gate .gate-about a,#gate .gate-legal a){position:relative}
  html[data-device=tablet] :is(.turn-foot .rt,.sources .src-tog,.gate-lang button,.gate-links a)::after{content:"";position:absolute;inset:-9px -3px}
  html[data-device=tablet] :is(#gate .gate-about a,#gate .gate-legal a)::after{content:"";position:absolute;inset:-13px -6px}
}
/* a tablet sideways (or a short window): the "Talk · mic · type" hint would sit on the bottom edge, so it steps aside */
@media (min-width:761px) and (max-height:900px){html[data-device=tablet] #dockHint{display:none}}
/* the top bar on an upright tablet: the three ways in keep one line each; the clock steps aside below 900px (the
   tablet's own status bar has the time) */
@media (min-width:761px) and (max-width:900px){.life-entry{white-space:nowrap}#clock{display:none}}
/* a narrow tablet in the phone layout (iPad mini upright, an iPad app in Split View): the reminder keeps a readable
   width instead of running edge to edge */
@media (min-width:600px) and (max-width:760px){.remind{left:max(16px,calc(50% - 300px));right:max(16px,calc(50% - 300px));background:#0a0a14}}
@media (max-width:760px){
  /* phone: on the mind's page the ways in sit in the glance line; in the worlds the rail becomes a row along the bottom */
  #stage:not(.in-life) .rail,#stage.in-world .rail,.rail-fold{display:none}
  .rail{left:0;right:0;top:auto;bottom:max(16px,calc(env(safe-area-inset-bottom) + 8px));transform:none;width:auto;gap:8px}
  /* the worlds on a phone, bottom up: the conversation bar, then the row of sections just above it (its own room,
     never under the bar, while travelling too). My day is a tap away on the NOVA mark, so its card stays off here. */
  #stage.in-life:has(#life.has-talk) .rail{bottom:calc(max(14px,calc(env(safe-area-inset-bottom) + 8px)) + var(--life-talk-h,66px) + 10px)}
  .rail-dash{display:none!important}
  .rail-card{padding:0;background:none;border:0;-webkit-backdrop-filter:none;backdrop-filter:none}
  #stage.in-life .rail-life{background:none}
  .rail-head,.rail .life-ask,.rail-ind,.rail-dash .rc-k,.rail-dash .rc-s,.rd-ring,.rd-sum,.rd-bars,.rd-focus,.rail-peek{display:none!important}
  .rail-list{margin:0}
  .rail-list ol{flex-direction:row;overflow-x:auto;gap:6px;padding:0 16px;scrollbar-width:none}
  .rail-list ol::-webkit-scrollbar{display:none}
  .rail-list ol button{flex:none;width:auto;padding:8px 13px;border-radius:999px;border:1px solid var(--hair);font-size:13px;gap:7px}
  .rail-list ol button.on{border-color:rgba(var(--c),.55);background:rgba(var(--c),.08)}
  .rail-list .n{display:none}
  .gl-go{display:flex!important}
  .gl-work{width:100%;justify-content:space-around;gap:0}
  .gl-door{min-width:64px}
  .gl-door-t{font-size:11px;color:rgba(var(--k-246-239-230,246,239,230),.9)}
  .gl-go b{color:var(--ink-1)}
}

/* ---------- phone home: the life sections' colours as one ring, and a tray to look before going in ---------- */
.gl-spectrum svg{width:34px;height:34px;display:block}
.gl-sections b.gl-spectrum{border:0!important;box-shadow:none!important;background:none}
.gl-tray{position:absolute;left:0;right:0;bottom:calc(100% + 12px);z-index:6;padding:12px;border-radius:20px;background:rgba(var(--k-10-12-24,10,12,24),.94);border:1px solid rgba(var(--k-246-239-230,246,239,230),.12);box-shadow:0 18px 50px rgba(0,0,0,.5);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  opacity:0;transform:translateY(8px) scale(.98);transform-origin:50% 100%;transition:opacity .18s cubic-bezier(.23,1,.32,1),transform .22s cubic-bezier(.23,1,.32,1)}
.gl-tray.on{opacity:1;transform:none}
/* a tray open above the dock (focus, life sections) takes the greeting's place, so nothing reads through it */
#stage .greet,#stage .key{transition:opacity .2s ease-out}
#stage.tray-open .greet,#stage.tray-open .key{opacity:0;pointer-events:none}
.gl-tray.t-focus{padding:0;background:rgba(var(--k-10-12-24,10,12,24),.97)}
.gl-tray.t-focus .qst{display:flex!important;margin:0;border-color:rgba(var(--k-245-198-107,245,198,107),.35);background:linear-gradient(180deg,rgba(var(--k-245-198-107,245,198,107),.07),transparent 70%)}
/* her sections as a row of cards to swipe through (Oct 29): name, how it's going, a tap goes in */
.gl-tray.t-sections{padding:10px 0}
.gl-strip{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:12px;padding:2px 12px;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x}
.gl-strip::-webkit-scrollbar{display:none}
.gl-card{--c:246,239,230;flex:none;width:128px;min-height:116px;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 12px 11px;border-radius:16px;text-align:start;
  background:linear-gradient(180deg,rgba(var(--c),.12),rgba(var(--c),.03));border:1px solid rgba(var(--c),.28);color:var(--ink-1);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .16s}
.gl-card:active{transform:scale(.97)}
.gl-card:focus-visible{outline:2px solid rgb(var(--c));outline-offset:2px}
.gl-card-top{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:4px}
.gl-card .gl-ring{width:34px;height:34px}.gl-card .gl-ring b{font-size:12px}
.gl-card-dot{width:12px;height:12px;margin:11px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.55)}
.gl-card-wait{min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:grid;place-items:center;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--h-1a1206,#1a1206);background:var(--gold)}
.gl-card-n{font-weight:500;font-size:14.5px;line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-card-l{font-size:12px;line-height:1.35;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (prefers-reduced-motion:reduce){.gl-tray,.gl-card{transition:none}}
/* ---------- the projects card in the side panel: how many, and what needs her there ---------- */
.rail-proj{display:flex;align-items:center;gap:12px;padding:12px 16px 12px 18px}
.rail-work{padding:4px 0;gap:0}
.rail-work[hidden]{display:none}
.rail-work .rail-proj{width:100%;text-align:left;color:var(--ink-1);border-radius:14px;transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.rail-work .rail-proj+.rail-proj{box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.07)}
.rail-work .rail-proj:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}
.rail-work .rail-proj:active{transform:scale(.985)}
.rail-work .rail-proj.wait .rj-n{color:var(--gold)}
.rw-n .rj-ic{border-color:transparent;color:#1d1408;background:var(--gold);box-shadow:0 0 16px -4px rgba(var(--k-245-198-107,245,198,107),.7)}
.rw-a .rj-ic{border-color:rgba(var(--k-196-182-255,196,182,255),.4);color:rgb(196,182,255)}
.rw-t .rj-ic{border-color:rgba(var(--k-111-242-196,111,242,196),.35);color:rgb(111,242,196)}
.rail-proj[hidden]{display:none}
.rj-ic{flex:none;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(var(--k-236-212-165,236,212,165),.35);color:rgb(236,212,165)}
.rj-t{display:grid;gap:2px;min-width:0;flex:1}
.rj-s{font-size:12px;line-height:1.35;color:rgba(var(--k-246-239-230,246,239,230),.74);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.rail-proj.warn .rj-s{color:var(--h-ffb4a8,#ffb4a8)}
.rj-n{font-family:var(--display);font-weight:400;font-size:22px;color:var(--ink-1);font-variant-numeric:tabular-nums}
.rj-go{font-style:normal;font-size:14px;color:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),color .2s}
button.rail-proj:hover .rj-go{transform:translateX(3px);color:var(--gold)}
#stage.rail-min .rail-proj{padding:9px 0;justify-content:center}
#stage.rail-min .rail-work{padding:2px 0}
#stage.rail-min .rail-proj .rj-t,#stage.rail-min .rail-proj .rj-n,#stage.rail-min .rail-proj .rj-go{display:none}
#stage.rail-min .rail-proj.warn .rj-ic{border-color:rgba(var(--k-255-140-120,255,140,120),.7);color:var(--h-ffb4a8,#ffb4a8)}
@media (min-width:761px) and (max-width:1279px){.rail-proj{padding:9px 12px 9px 14px;gap:9px}.rj-ic{width:26px;height:26px}.rj-n{font-size:18px}.rj-go{display:none}}
@media (max-width:760px){.rail-proj,.rail-work{display:none!important}.gl-door.gl-proj{display:none}}

/* the dashboard's third door: projects, with a line each for the most pressing */
.ov-cmd:has(.d-projects){grid-template-columns:repeat(3,minmax(0,1fr))}
.ov-door.d-projects{--c:236,212,165}
.ov-pj{display:grid;gap:7px;margin-top:2px}
.ov-pj-r{display:grid;grid-template-columns:minmax(0,1fr) 64px;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-2)}
.ov-pj-r>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-pj-r>i{position:relative;height:3px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.12);overflow:hidden}
.ov-pj-r>i>i{position:absolute;inset:0 auto 0 0;border-radius:2px;background:rgba(var(--c),.85)}
.ov-pj-r.r-risk>span{color:var(--h-ffb4a8,#ffb4a8)}.ov-pj-r.r-risk>i>i{background:var(--h-ff8c78,#ff8c78)}
.ov-pj-r.r-watch>i>i{background:var(--gold)}
@media (max-width:1100px){.ov-cmd:has(.d-projects){grid-template-columns:1fr 1fr}.ov-door.d-projects{grid-column:1/-1}}

/* ---------- Projects, full screen ---------- */
.pj-strip{--risk:255,140,120;--watch:245,198,107;--ok:111,242,196;margin:30px 0 10px}
.pj-strip-h{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.pj-strip-h .ld-sec{margin:0 0 6px}
.pj{--risk:255,140,120;--watch:245,198,107;--ok:111,242,196}
.pj-sum{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:4px 0 10px;font-size:13px;color:var(--ink-2)}
.pj-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.pj-chip{--c:246,239,230;padding:6px 12px;border-radius:999px;border:1px solid var(--hair);font-size:12.5px;color:var(--ink-2);transition:color .2s,border-color .2s,background-color .2s,transform .16s var(--ease)}
.pj-chip:hover{color:var(--ink-1);border-color:rgba(var(--c),.45)}
.pj-chip:active{transform:scale(.97)}
.pj-chip[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(var(--c),.6);background:rgba(var(--c),.1)}
.pj-list{list-style:none;margin:0;padding:0;display:grid}
.pj-row{--c:255,238,214;--tone:var(--ok);position:relative;border-top:1px solid var(--hair)}
.pj-row:last-child{border-bottom:1px solid var(--hair)}
.pj-row.r-watch{--tone:var(--watch)}.pj-row.r-risk{--tone:var(--risk)}
.pj-row.s-paused,.pj-row.s-done{--tone:246,239,230}
.pj-head{width:100%;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr) 92px;grid-template-areas:"name track meta" "line line meta";align-items:center;gap:6px 28px;padding:18px 6px 16px;text-align:left;border-radius:12px;transition:background-color .2s ease}
@media (hover:hover){.pj-head:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}}
.pj-name{grid-area:name;display:grid;gap:4px;min-width:0}
.pj-title{display:flex;align-items:center;gap:10px;min-width:0}
.pj-title b{font-family:var(--display);font-weight:400;font-size:21px;line-height:1.2;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-dot{flex:none;width:8px;height:8px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 10px rgba(var(--c),.6)}
.pj-new{flex:none;font-style:normal;font-size:11px;letter-spacing:.04em;color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.4);border-radius:999px;padding:2px 8px}
.pj-goal{font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:18px}
.pj-track{grid-area:track;position:relative;height:30px;display:block}
.pj-rail{position:absolute;left:0;right:0;top:14px;height:2px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.12)}
.pj-rail.open-end{background:linear-gradient(90deg,rgba(var(--k-246-239-230,246,239,230),.12) 70%,rgba(var(--k-246-239-230,246,239,230),0))}
.pj-fill{position:absolute;inset:0 auto 0 0;border-radius:2px;background:linear-gradient(90deg,rgba(var(--tone),.15),rgba(var(--tone),.85))}
.pj-ms{position:absolute;top:10px;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--h-04050c,#04050c);border:1.5px solid rgba(var(--k-246-239-230,246,239,230),.5)}
.pj-ms.done{background:rgb(var(--c));border-color:rgb(var(--c))}
.pj-ms.late{border-color:rgb(var(--risk));box-shadow:0 0 8px rgba(var(--risk),.6)}
.pj-today{position:absolute;top:6px;width:2px;height:18px;margin-left:-1px;border-radius:1px;background:var(--ink-1);box-shadow:0 0 8px rgba(var(--k-255-255-255,255,255,255),.5)}
.pj-end{position:absolute;right:0;top:-2px;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.pj-meta{grid-area:meta;justify-self:end;text-align:right}
.pj-pct{display:grid;gap:2px}
.pj-pct b{font-family:var(--display);font-weight:400;font-size:28px;line-height:1;color:var(--ink-1);font-variant-numeric:tabular-nums}
.pj-pct small{font-size:11.5px;color:rgb(var(--tone))}
.s-paused .pj-pct small,.s-done .pj-pct small{color:var(--ink-3)}
.pj-line{grid-area:line;font-size:13px;color:rgba(var(--tone),.95);padding-left:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.r-ok .pj-line,.s-paused .pj-line,.s-done .pj-line{color:var(--ink-2)}
.pj-next{color:var(--ink-3)}
.pj-row.open{background:linear-gradient(180deg,rgba(var(--c),.05),rgba(var(--c),0) 140px)}
.pj-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:36px;padding:4px 6px 26px 24px;opacity:1;transform:none;transition:opacity .22s ease-out,transform .22s cubic-bezier(.23,1,.32,1)}
@starting-style{.pj-body{opacity:0;transform:translateY(-4px)}}
.pj-body h5{margin:18px 0 6px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--ink-3)}
.pj-main>section:first-child h5,.pj-side h5:first-child{margin-top:4px}
.pj-loading,.pj-hint{font-size:13px;color:var(--ink-3);margin:8px 0}
.pj-item{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid rgba(var(--k-246-239-230,246,239,230),.06)}
.pj-item .tcheck{margin-top:0}
.pj-item .tcheck.on{background:rgb(var(--c));border-color:rgb(var(--c))}
.pj-it{display:grid;gap:1px;min-width:0;flex:1}
.pj-it b,.pj-it a{font-weight:400;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-it a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.pj-it small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-it small.late{color:var(--h-ffb4a8,#ffb4a8)}
.pj-item.done .pj-it b{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.pj-k{flex:none;width:20px;text-align:center;font-style:normal;font-size:13px;color:rgba(var(--c),.9)}
.pj-x{flex:none;width:28px;height:28px;border-radius:50%;color:var(--ink-3);font-size:16px;opacity:.5;transition:opacity .2s,color .2s,background-color .2s}
.pj-item:hover .pj-x,.pj-x:focus-visible{opacity:1}.pj-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.pj-rel{padding:4px 14px 8px;margin:0 0 6px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);background:rgba(var(--k-245-198-107,245,198,107),.05)}
.pj-rel h5{color:var(--gold)}
.pj-rel .pj-item:last-child{border-bottom:0}
.pj-yes,.pj-no{flex:none;padding:6px 12px;border-radius:999px;font-size:12.5px;transition:background-color .2s,color .2s,transform .16s var(--ease)}
.pj-yes{background:var(--ink-1);color:var(--h-141018,#141018);font-weight:600}.pj-no{color:var(--ink-2)}.pj-no:hover{color:var(--ink-1)}
.pj-yes:active,.pj-no:active{transform:scale(.97)}
.pj-add{display:flex;gap:8px;margin-top:10px}
.pj input,.pj select{min-width:0;padding:9px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font-size:13.5px;color-scheme:dark}
.pj input:focus-visible,.pj select:focus-visible{outline:1.5px solid var(--gold);outline-offset:1px}
.pj-add input[type=text],.pj-add input[type=url],.pj-add input[type=search]{flex:1}
.pj-add input[type=date]{flex:none;width:150px}
.pj-attach{margin-top:18px}
.pj-attach-b{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pj-attach-b small{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-right:4px}
.pj-pick{display:grid;gap:6px;margin-top:10px}
.pj-pick-l{display:grid;gap:2px;max-height:240px;overflow:auto}
.pj-pick-i{text-align:left;padding:8px 10px;border-radius:8px;font-size:13.5px;color:var(--ink-2);transition:background-color .15s,color .15s}
.pj-pick-i:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.pj-about{display:grid;gap:14px;align-content:start}
.pj-risk{display:grid;gap:4px;padding:12px 14px;border-radius:12px;border:1px solid rgba(var(--risk),.35);background:rgba(var(--risk),.06)}
.pj-risk.t-watch{border-color:rgba(var(--watch),.35);background:rgba(var(--watch),.06)}
.pj-risk small{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--h-ffb4a8,#ffb4a8)}.pj-risk.t-watch small{color:var(--gold)}
.pj-risk span{font-size:13.5px;color:var(--ink-1)}
.pj-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 16px;margin:0;font-size:13.5px}
.pj-facts dt{color:var(--ink-3)}.pj-facts dd{margin:0;color:var(--ink-1)}
/* a project through time: date, a dot on a rail, what happened or is due; the rail is lit up to today */
.pj-tl-list{list-style:none;margin:2px 0 0;padding:0;display:grid}
.pj-tl-i{position:relative;display:grid;grid-template-columns:62px 22px minmax(0,1fr) auto;align-items:center;column-gap:10px;min-height:40px;padding:4px 0}
.pj-tl-i::before{content:"";position:absolute;left:83px;top:0;bottom:0;width:1.5px;margin-left:-.75px;background:rgba(var(--k-246-239-230,246,239,230),.12)}
.pj-tl-i:first-child::before{top:50%}.pj-tl-i:last-child::before{bottom:50%}
.pj-tl-i.past::before{background:rgba(var(--c),.55)}
.pj-tl-i.now::before{background:linear-gradient(180deg,rgba(var(--c),.55) 50%,rgba(var(--k-246-239-230,246,239,230),.12) 50%)}
.pj-tl-d{font-size:12px;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pj-tl-dot{position:relative;z-index:1;justify-self:center;width:9px;height:9px;border-radius:50%;background:var(--h-05060d,#05060d);border:1.5px solid rgba(var(--k-246-239-230,246,239,230),.45);padding:0}
.pj-tl-i.past .pj-tl-dot{border-color:rgba(var(--c),.8)}
.pj-tl-i.k-start .pj-tl-dot{background:rgb(var(--c));border-color:rgb(var(--c))}
.pj-tl-i.k-end .pj-tl-dot{width:12px;height:12px;border-radius:3px;transform:rotate(45deg);border-color:rgb(var(--tone,111,242,196));box-shadow:0 0 10px rgba(var(--tone,111,242,196),.45)}
.pj-tl-i.k-task .pj-tl-dot,.pj-tl-i.k-email .pj-tl-dot,.pj-tl-i.k-event .pj-tl-dot{width:7px;height:7px;border-width:1px;border-color:rgba(var(--k-246-239-230,246,239,230),.35)}
.pj-tl-i.now .pj-tl-d{color:var(--ink-1);font-weight:500}
.pj-tl-i.now .pj-tl-dot{width:10px;height:10px;background:var(--ink-1);border-color:var(--ink-1);box-shadow:0 0 10px rgba(var(--k-255-255-255,255,255,255),.55)}
.pj-tl-i.now .pj-tl-t{font-size:13px;color:var(--ink-2)}
/* a milestone's dot is its tick box */
button.pj-tl-dot{width:18px;height:18px;margin:0;border-radius:50%;cursor:pointer;transition:background-color .2s,border-color .2s,transform .16s var(--ease)}
button.pj-tl-dot:active{transform:scale(.92)}
button.pj-tl-dot.on{background:rgb(var(--c));border-color:rgb(var(--c))}
button.pj-tl-dot.on::after{content:"";position:absolute;left:5.5px;top:2.5px;width:4px;height:8px;border:solid #0a0b12;border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}
.pj-tl-i.late button.pj-tl-dot{border-color:rgb(var(--risk,255,140,120));box-shadow:0 0 8px rgba(var(--risk,255,140,120),.5)}
.pj-tl-t{display:grid;gap:1px;min-width:0}
.pj-tl-t b,.pj-tl-t>span{font-weight:400;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-tl-i.k-task .pj-tl-t>span,.pj-tl-i.k-email .pj-tl-t>span,.pj-tl-i.k-event .pj-tl-t>span{font-size:13px;color:var(--ink-2)}
.pj-tl-t small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj-tl-i.late .pj-tl-t small{color:var(--h-ffb4a8,#ffb4a8)}
.pj-tl-i.done .pj-tl-t b{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.pj-tl-i .pj-x{opacity:0}.pj-tl-i:hover .pj-x,.pj-tl-i .pj-x:focus-visible{opacity:1}
@media (hover:none){.pj-tl-i .pj-x{opacity:.5}}
.pj-tl-loose{margin-top:8px}
.pj-tl-lh{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:6px 0 2px}
/* a link back to a project, from whatever belongs to it (a task, a goal) */
.pj-backlink{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:3px 10px 3px 8px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);font-size:12px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s,border-color .2s,transform .16s var(--ease)}
.pj-backlink::before{content:"";flex:none;width:6px;height:6px;border-radius:1.5px;transform:rotate(45deg);background:var(--gold)}
.pj-backlink:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.pj-backlink:active{transform:scale(.97)}
.tproj{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ov-goal-pj{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 6px}
.ov-stack i.project{border-radius:1.5px;width:7px;height:7px;background:rgb(var(--c,245,198,107));box-shadow:0 0 7px rgba(var(--c,245,198,107),.55)}
.ov-stack i.project.end{transform:rotate(45deg);background:transparent;border:1.5px solid rgb(var(--c,245,198,107))}
.ov-item.project i{border-radius:1.5px;width:7px;height:7px;background:rgb(var(--c,245,198,107));box-shadow:none}
.ov-item.project.end i{transform:rotate(45deg);background:transparent;border:1.5px solid rgb(var(--c,245,198,107))}
.pj-acts{display:flex;flex-wrap:wrap;gap:8px}
.pj-acts.col .btn{flex:1 1 auto}
.pj-l{display:grid;gap:4px}.pj-l small{font-size:11.5px;color:var(--ink-3)}
.pj-form{display:grid;gap:12px;padding:6px 0 22px}
.pj-form .ld-sec{margin-top:0}
.pj-form-g{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.6fr) minmax(0,.9fr) 160px;gap:8px}
.pj-ask{margin:0 0 26px}
.pj-ask .ld-sec{margin-top:4px}
.pj-sug{--c:255,238,214;display:grid;gap:6px;padding:16px 18px;margin-top:10px;border-radius:16px;border:1px dashed rgba(var(--c),.4);background:linear-gradient(160deg,rgba(var(--c),.06),rgba(var(--k-4-5-12,4,5,12),0) 70%)}
.pj-sug-t{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.pj-sug-t b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1)}
.pj-sug-t span{font-size:12.5px;color:rgb(var(--c))}
.pj-why{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.pj-found{margin:0;font-size:12.5px;color:var(--ink-3)}
.pj-sug .pj-acts{margin-top:6px}
.pj-empty{max-width:560px;padding:30px 0}
.hub-body .pj-empty h4{letter-spacing:0;margin:0 0 8px;font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.pj-empty p{margin:0 0 18px;font-size:14px;line-height:1.55;color:var(--ink-2)}
.pj-go{display:flex;gap:10px;flex-wrap:wrap}
.pj-done{margin-top:26px}
.pj-done summary{cursor:pointer;font-size:12.5px;color:var(--ink-3);padding:8px 0;list-style:none}
.pj-done summary::-webkit-details-marker{display:none}
.pj-done summary::before{content:'▸ ';display:inline-block;transition:transform .2s}
.pj-done[open] summary::before{transform:rotate(90deg)}
@media (prefers-reduced-motion:reduce){.pj-fill,.pj-body{transition:none}}
@media (max-width:860px){
  .pj-head{grid-template-columns:minmax(0,1fr) 92px;grid-template-areas:"name meta" "track track" "line line";gap:8px 14px;padding:16px 2px 14px}
  .pj-title b{font-size:19px}
  .pj-pct b{font-size:22px}
  .pj-goal,.pj-line{padding-left:18px}
  .pj-body{grid-template-columns:1fr;gap:10px;padding:0 2px 22px}
  .pj-form-g{grid-template-columns:1fr 1fr}
  .pj-form-g input[type=text]{grid-column:1/-1}
  .pj-add{flex-wrap:wrap}.pj-add input[type=date]{width:auto;flex:1}.pj-add input[type=text],.pj-add input[type=url]{flex-basis:100%}
  .pj-rel .pj-item{flex-wrap:wrap;row-gap:8px}.pj-rel .pj-it{flex-basis:calc(100% - 32px)}.pj-rel .pj-yes{margin-left:32px}
  .pj input,.pj select{font-size:16px}
  .pj-tl-i{grid-template-columns:50px 22px minmax(0,1fr) auto}.pj-tl-i::before{left:71px}
}

/* ---------- Places: the story of a period, last month's recap, and the travel helper ---------- */
.at-over{grid-row:1}
.at-play{align-self:flex-start;margin-top:10px;padding:8px 14px;border-radius:999px;border:1px solid rgba(var(--k-214-230-255,214,230,255),.32);background:rgba(var(--k-4-8-20,4,8,20),.45);color:var(--ink-1);font-size:13px;letter-spacing:.01em;transition:border-color .2s,background-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.at-astro{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;margin-top:8px;padding:7px 13px;border-radius:999px;border:1px solid rgba(var(--k-214-230-255,214,230,255),.22);background:rgba(var(--k-4-8-20,4,8,20),.4);color:var(--ink-2);font:inherit;font-size:12.5px;cursor:pointer;transition:border-color .2s,color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.at-astro i{font-style:normal;color:#b092ff}
.at-astro:active{transform:scale(.97)}.at-astro:hover{border-color:rgba(var(--k-214-230-255,214,230,255),.45);color:var(--ink-1)}
.at-astro[aria-pressed="true"]{border-color:rgba(176,146,255,.6);color:var(--ink-1);background:rgba(176,146,255,.12)}
.at-astro-cap{margin:6px 0 0;max-width:34ch;font-size:12px;line-height:1.45;color:var(--ink-3)}
.at-play:hover{border-color:rgba(var(--k-214-230-255,214,230,255),.6);background:rgba(var(--k-10-18-40,10,18,40),.6)}.at-play:active{transform:scale(.97)}
.at-hero.telling .at-over{visibility:hidden}
/* right to left: the globe is drawn on the left (atlas.js cxOf), so the numbers and lines sit on the darkened right, never over the Earth */
@media (min-width:761px){[dir="rtl"] .at-hero{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}[dir="rtl"] .at-over,[dir="rtl"] .at-story{grid-column:1}}
.at-story{grid-column:2;grid-row:1;position:relative;z-index:3;align-self:center;display:grid;gap:18px;padding:28px 34px 28px 44px;outline:none}
.at-st-bar{display:flex;gap:4px}
.at-st-bar i{flex:1;height:2px;border-radius:2px;background:rgba(var(--k-214-230-255,214,230,255),.2);transition:background-color .3s ease}
.at-st-bar i.on{background:rgba(var(--k-214-230-255,214,230,255),.9)}
.at-st-t{display:grid;gap:8px;min-height:150px;cursor:pointer}
.at-st-t.in{animation:at-st-in .5s cubic-bezier(.23,1,.32,1)}
@keyframes at-st-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.at-st-h{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(30px,3.4vw,46px);line-height:1.08;color:var(--h-fff,#fff);text-shadow:0 2px 24px rgba(var(--k-0-0-0,0,0,0),.6)}
.at-st-l{margin:0;font-size:15px;line-height:1.5;color:rgba(var(--k-230-238-255,230,238,255),.88);max-width:34ch}
.at-st-c{display:flex;align-items:center;gap:8px}
.at-st-b{width:38px;height:38px;border-radius:50%;border:1px solid rgba(var(--k-214-230-255,214,230,255),.3);color:var(--ink-1);font-size:18px;background:rgba(var(--k-4-8-20,4,8,20),.45);transition:border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.at-st-b:hover{border-color:rgba(var(--k-214-230-255,214,230,255),.7)}.at-st-b:active{transform:scale(.95)}.at-st-b[disabled]{opacity:.3}
.at-st-x{margin-left:6px;padding:8px 14px;border-radius:999px;font-size:13px;color:rgba(var(--k-230-238-255,230,238,255),.85)}.at-st-x:hover{color:var(--h-fff,#fff)}
@media (prefers-reduced-motion:reduce){.at-st-t.in{animation:none}}
.at-recap{position:relative;display:grid;gap:12px;margin:0 0 18px;padding:20px 22px;border-radius:20px;border:1px solid rgba(var(--c),.3);background:radial-gradient(120% 140% at 0% 0%,rgba(var(--c),.12),rgba(var(--c),0) 55%),rgba(var(--k-8-12-24,8,12,24),.6);transition:opacity .2s ease,transform .2s cubic-bezier(.23,1,.32,1)}
.at-recap.out{opacity:0;transform:translateY(-4px)}
.at-rc-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.at-rc-x{font-size:12.5px;color:var(--ink-2);padding:4px 10px;border-radius:999px;border:1px solid var(--hair)}.at-rc-x:hover{color:var(--ink-1);border-color:var(--hair-2)}
.at-rc-line{margin:0;font-family:var(--display);font-size:22px;line-height:1.3;color:var(--ink-1);max-width:46ch}
.at-rc-n{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.at-rc-n div{display:grid;gap:2px}
.at-rc-n b{font-family:var(--display);font-weight:400;font-size:30px;line-height:1;color:var(--ink-1);font-variant-numeric:tabular-nums}
.at-rc-n span{font-size:12px;color:var(--ink-2)}.at-rc-n small{font-size:11.5px;color:rgb(var(--c));min-height:14px}
.at-rc-more{margin:0;font-size:13px;color:var(--ink-2)}
.at-rc-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.at-rc-chips small{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-right:2px}
.at-rc-chips span{font-size:12.5px;padding:4px 10px;border-radius:999px;border:1px solid rgba(var(--c),.35);color:var(--ink-1)}
.at-recap .btn{justify-self:start}
.at-helper{margin-left:auto;font-size:12px;padding:5px 11px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);transition:color .2s,border-color .2s,background-color .2s}
.at-helper[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.at-helper[aria-pressed="true"]::before{content:'';display:inline-block;width:6px;height:6px;margin-right:7px;border-radius:50%;background:var(--gold);vertical-align:1px}
.at-fl{grid-column:2;display:grid;justify-items:start;gap:6px;margin-top:6px;padding:9px 11px;border-radius:10px;background:rgba(var(--k-245-198-107,245,198,107),.06);border:1px solid rgba(var(--k-245-198-107,245,198,107),.18)}
.at-fl-ci{font-size:12.5px;color:var(--ink-2);text-decoration:none}
.at-fl-ci.open{color:var(--h-1d1408,#1d1408);background:var(--gold);padding:5px 11px;border-radius:999px;font-weight:600}
.at-fl-lv{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.at-fl-lv b{font-size:13px;font-weight:600;color:var(--ink-1)}.at-fl-lv small{font-size:11.5px;color:var(--ink-3)}
.at-nt-b small.at-fl-news{color:var(--gold)}.at-nt-b small.at-fl-news.bad{color:var(--h-ffb4a8,#ffb4a8)}
/* her flights on her calendar: one action, then where they stand */
.at-cal{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:10px 0 2px}
.at-cal-go,.at-cal-pick{font-size:12.5px;padding:6px 13px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.03);transition:border-color .2s,background-color .2s,transform .16s var(--ease)}
.at-cal-go:hover,.at-cal-pick:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.4);background:rgba(var(--k-246-239-230,246,239,230),.07)}
.at-cal-go:active,.at-cal-pick:active{transform:scale(.97)}
.at-cal-go:disabled,.at-cal-pick:disabled{opacity:.5}
.at-cal-q{font-size:12.5px;color:var(--ink-2)}
.at-cal-ok{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:rgb(111,242,196)}
.at-cal-ok::before{content:"";width:8px;height:4px;border:solid currentColor;border-width:0 0 1.6px 1.6px;transform:rotate(-45deg) translateY(-1px)}
.at-cal-wait{font-size:12.5px;color:var(--gold)}
.at-cal-note{font-size:12px;color:var(--ink-3)}.at-cal-note.bad{color:var(--h-ffb4a8,#ffb4a8)}
.at-cal-oks{display:grid;gap:8px;margin-top:8px}.at-cal-oks:empty{display:none}
.at-cal-oks .cv-ok{font-size:13px;padding:12px 14px}
.wt-nova .cv-ok{margin-top:10px}
@media (max-width:760px){
  .at-over,.at-story{grid-row:2;grid-column:1}
  .at-next-h{flex-wrap:wrap;row-gap:10px}.at-helper{margin-left:0;order:9}
  .at-story{padding:4px 18px 22px;gap:14px}
  .at-st-t{min-height:120px}
  .at-rc-n{grid-template-columns:repeat(2,minmax(0,1fr))}
  .at-rc-line{font-size:19px}
}

/* ---------- Connections, as a living map ---------- */
.ov-conn{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:12px 18px;border-radius:14px;border:1px solid rgba(var(--k-168-214-248,168,214,248),.2);background:rgba(var(--k-168-214-248,168,214,248),.04);text-align:left;transition:border-color .2s,background-color .2s,transform .16s var(--ease)}
.ov-conn:hover{border-color:rgba(var(--k-168-214-248,168,214,248),.45);background:rgba(var(--k-168-214-248,168,214,248),.07)}.ov-conn:active{transform:scale(.99)}
.ov-conn.warn{border-color:rgba(var(--k-255-140-120,255,140,120),.4)}
.ov-conn-k{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgb(168,214,248)}
.ov-conn-l{flex:1;font-size:13px;color:var(--ink-2)}.ov-conn.warn .ov-conn-l{color:var(--h-ffb4a8,#ffb4a8)}
.cm{--bad:255,120,105}
.cm-bar{display:flex;gap:16px;justify-content:flex-end;margin:-6px 0 8px}
.cm-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start}
.cm-stage{position:relative;border-radius:24px;overflow:hidden;border:1px solid rgba(var(--k-120-160-230,120,160,230),.14);background:radial-gradient(60% 60% at 50% 50%,rgba(var(--k-70-110-190,70,110,190),.14),rgba(var(--k-2-3-10,2,3,10),0) 70%),#03040b url('/textures/space.jpg') center / cover no-repeat}
.cm-svg{display:block;width:100%;height:auto;overflow:visible;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.cm-zoomed .cm-svg{touch-action:none;cursor:grab}
.cm-zoomed .cm-svg:active{cursor:grabbing}
/* zoomed in far enough: every account says its name (the full name and account when it's the one in focus) */
.cm-ashort{fill:rgba(var(--k-246-239-230,246,239,230),.86);font-size:11px;font-family:var(--sans);paint-order:stroke;stroke:rgba(var(--k-3-4-11,3,4,11),.9);stroke-width:3px;opacity:0;transition:opacity .15s ease;pointer-events:none}
.cm-svg.zoomed .cm-ashort{opacity:1}
.cm-svg .cm-n.cm-a:hover .cm-ashort,.cm-svg .cm-n.cm-a.chosen .cm-ashort,.cm-svg.focusing .cm-n.cm-a.near .cm-ashort{opacity:0}
.cm-svg.focusing.zoomed .cm-n.cm-a:not(.near):not(.chosen) .cm-ashort{opacity:.45}
.cm-e{vector-effect:non-scaling-stroke}
/* + − Fit, at the map's corner */
.cm-zoom{position:absolute;top:12px;right:12px;z-index:2;display:flex;flex-direction:column;gap:6px}
.cm-zb{width:38px;height:38px;border-radius:50%;border:1px solid rgba(var(--k-246-239-230,246,239,230),.16);background:rgba(var(--k-4-5-12,4,5,12),.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--ink-1);font-size:18px;line-height:1;display:grid;place-items:center;transition:border-color .2s,opacity .2s,transform .16s ease-out}
.cm-zb:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.32)}
.cm-zb:active{transform:scale(.95)}
.cm-zb:disabled{opacity:.35;cursor:default}
.cm-zb:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cm-zfit{font-size:11px;letter-spacing:.02em}
/* what she tapped, on the map itself (phones) */
.cm-card{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;display:flex;align-items:center;gap:12px;padding:10px 8px 10px 12px;border-radius:16px;border:1px solid rgba(var(--k-246-239-230,246,239,230),.14);background:rgba(var(--k-4-5-12,4,5,12),.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:cm-card-in .22s cubic-bezier(.23,1,.32,1)}
.cm-card .cm-pt{flex:1;min-width:0}
.cm-card .cm-pt b{display:block;overflow-wrap:anywhere}
.cm-card .cm-pt span{display:block;font-size:12px;line-height:1.35;color:var(--ink-3);overflow-wrap:anywhere}
.cm-card .cm-pt span.cm-acc{font-size:13px;color:var(--ink-2)}
.cm-card .cm-pt span.h-reconnect{color:var(--rose,#f08a8a)}
.cm-card-more{flex:none;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-1)}
.cm-card .cm-x{flex:none}
@keyframes cm-card-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.cm-card{animation:none}}
.cm-ctx{font-size:10.5px;letter-spacing:.2em;font-family:var(--sans)}
.cm-key{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:8px 18px;padding:16px 18px 0;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase}
.cm-key span{display:inline-flex;align-items:center;gap:7px;color:rgba(var(--c),.9)}.cm-key span::before{content:"";width:14px;border-top:1.2px dashed rgba(var(--c),.6)}
.cm-e{fill:none;stroke-width:1.1;transition:stroke .2s ease,stroke-width .2s ease,opacity .2s ease}
.cm-e.core{stroke:rgba(var(--k-214-230-255,214,230,255),.22);stroke-width:1}
.cm-e.agent{stroke-dasharray:3 4}
.cm-e.bad{stroke:rgba(var(--bad),.55);stroke-dasharray:4 4}
.cm-svg.focusing .cm-e:not(.on){opacity:.12}
.cm-e.on{stroke-width:1.8}.cm-e.core.on{stroke:rgba(var(--k-214-230-255,214,230,255),.8)}
.cm-dot{fill:var(--h-fff,#fff);pointer-events:none;filter:drop-shadow(0 0 3px rgba(var(--k-255-255-255,255,255,255),.8))}
.cm-core-halo{fill:rgba(var(--k-245-198-107,245,198,107),.1);stroke:rgba(var(--k-245-198-107,245,198,107),.2)}
.cm-core-disc{fill:var(--h-06070f,#06070f)}
.cm-core-ring{fill:none;stroke:var(--gold);stroke-width:1.6;filter:drop-shadow(0 0 6px rgba(var(--k-245-198-107,245,198,107),.7))}
.cm-core-t{fill:var(--ink-1);font-family:var(--display);font-size:11px;letter-spacing:.18em}
.cm-core{cursor:pointer}
.cm-n{cursor:pointer;outline:none;transition:opacity .2s ease}
.cm-svg.focusing .cm-n:not(.near):not(.chosen){opacity:.32}
.cm-n:focus-visible .cm-disc,.cm-n:focus-visible .cm-orbit,.cm-n:focus-visible .cm-agent{stroke:var(--gold);stroke-width:2}
.cm-disc{fill:var(--h-0b0e1c,#0b0e1c);stroke:rgba(var(--k-214-230-255,214,230,255),.4);stroke-width:1.2;transition:stroke .2s}
.cm-n.cm-a:hover .cm-disc,.cm-n.chosen .cm-disc{stroke:var(--h-fff,#fff)}
.cm-pulse{fill:none;stroke:rgba(var(--k-168-214-248,168,214,248),0);stroke-width:1.5}
.cm-n.live .cm-pulse{animation:cm-pulse 2.6s ease-out infinite}
@keyframes cm-pulse{0%{stroke:rgba(var(--k-168-214-248,168,214,248),.55);r:17}100%{stroke:rgba(var(--k-168-214-248,168,214,248),0);r:28}}
.cm-n.h-reconnect .cm-disc{stroke:rgb(var(--bad))}
.cm-n.h-reconnect .cm-pulse{animation:cm-pulse-bad 1.8s ease-out infinite}
@keyframes cm-pulse-bad{0%{stroke:rgba(var(--k-255-120-105,255,120,105),.7);r:17}100%{stroke:rgba(var(--k-255-120-105,255,120,105),0);r:27}}
.cm-n.h-quiet .cm-disc{stroke:rgba(var(--k-245-198-107,245,198,107),.6)}
.cm-alert{fill:rgb(var(--bad));stroke:var(--h-06070f,#06070f);stroke-width:2}
.cm-logo{display:block;width:22px;height:22px;border-radius:6px;object-fit:contain;background:var(--h-fff,#fff)}
span.cm-logo{display:grid;place-items:center;background:rgba(var(--k-214-230-255,214,230,255),.12);color:var(--ink-1);font-size:12px;font-weight:600}
.cm-planet{fill:rgb(var(--c));filter:drop-shadow(0 0 8px rgba(var(--c),.7))}
.cm-orbit{fill:none;stroke:rgba(var(--c),.35);stroke-width:1}
.cm-n.dim .cm-planet{fill:rgba(var(--c),.3);filter:none}
.cm-agent{fill:var(--h-0b0e1c,#0b0e1c);stroke:rgba(var(--k-196-182-255,196,182,255),.8);stroke-width:1.4}
.cm-label{fill:rgba(var(--k-246-239-230,246,239,230),.86);font-size:12px;font-family:var(--sans);paint-order:stroke;stroke:rgba(var(--k-3-4-11,3,4,11),.85);stroke-width:3px}
.cm-alabel{fill:rgba(var(--k-246-239-230,246,239,230),.92);font-size:11.5px;font-family:var(--sans);paint-order:stroke;stroke:rgba(var(--k-3-4-11,3,4,11),.9);stroke-width:3px;opacity:0;transition:opacity .15s ease;pointer-events:none}
.cm-n.cm-a:hover .cm-alabel,.cm-n.cm-a:focus-visible .cm-alabel,.cm-n.cm-a.chosen .cm-alabel,.cm-svg.focusing .cm-n.cm-a.near .cm-alabel{opacity:1}
.cm-n.agent .cm-label{font-size:11px;fill:rgba(var(--k-220-210-255,220,210,255),.8)}
.cm-n.dim .cm-label{fill:rgba(var(--k-246-239-230,246,239,230),.45)}
@media (prefers-reduced-motion:reduce){.cm-n .cm-pulse{animation:none!important}}
.cm-panel{position:sticky;top:86px;display:grid;gap:10px;align-content:start;padding:18px 18px 20px;border-radius:20px;border:1px solid var(--hair);background:rgba(var(--k-10-12-22,10,12,22),.7)}
.cm-panel h5{margin:10px 0 0;font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--ink-3)}
.cm-panel h5.warn{color:var(--h-ffb4a8,#ffb4a8)}
.hub-body .cm-panel h4.cm-ov-h{margin:0;letter-spacing:0;font-family:var(--display);font-weight:400;font-size:24px;color:var(--ink-1)}
.cm-p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.cm-note{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
.cm-ph{display:flex;align-items:center;gap:12px}
.cm-plogo{width:36px;height:36px;border-radius:10px;object-fit:contain;background:var(--h-fff,#fff);flex:none}
span.cm-plogo{display:grid;place-items:center;background:rgba(var(--k-214-230-255,214,230,255),.12);color:var(--ink-1);font-weight:600}
.cm-pt{display:grid;gap:1px;min-width:0;flex:1}
.cm-pt b{font-family:var(--display);font-weight:400;font-size:20px;color:var(--ink-1)}
.cm-pt span{font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
.cm-x{width:30px;height:30px;border-radius:50%;color:var(--ink-3);font-size:18px;flex:none}.cm-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.cm-wdot{flex:none;width:16px;height:16px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 12px rgba(var(--c),.7)}
.cm-adot{flex:none;width:12px;height:12px;margin:0 2px;transform:rotate(45deg);border:1.5px solid rgba(var(--k-196-182-255,196,182,255),.9);border-radius:2px}
.cm-health{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--ink-2)}
.cm-health i{width:8px;height:8px;border-radius:50%;background:var(--mint)}
.cm-health.h-reconnect{color:var(--h-ffb4a8,#ffb4a8)}.cm-health.h-reconnect i{background:rgb(var(--bad))}
.cm-health.h-quiet i{background:var(--gold)}
.cm-acts{display:flex;flex-wrap:wrap;gap:8px}
.cm-chips{display:flex;flex-wrap:wrap;gap:6px}
.cm-chip{--c:255,238,214;padding:5px 11px;border-radius:999px;border:1px solid rgba(var(--c),.4);font-size:12.5px;color:var(--ink-1);transition:background-color .2s,transform .16s var(--ease)}
.cm-chip:hover{background:rgba(var(--c),.1)}.cm-chip:active{transform:scale(.97)}
.cm-chip.agent{--c:196,182,255;border-style:dashed}
.cm-select{padding:8px 10px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font-size:13.5px;color-scheme:dark}
.cm-perms summary{cursor:pointer;font-size:12.5px;color:var(--ink-2)}
.cm-perms ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px;font-size:12.5px;color:var(--ink-3)}
.cm-off{justify-self:start;margin-top:6px;font-size:12.5px;color:var(--ink-3);text-decoration:underline;text-underline-offset:3px}.cm-off:hover{color:var(--h-ffb4a8,#ffb4a8)}
.cm-row{display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:10px;text-align:left;transition:background-color .15s}
.cm-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}
.cm-rlogo{width:24px;height:24px;border-radius:6px;object-fit:contain;background:var(--h-fff,#fff);flex:none}
span.cm-rlogo{display:grid;place-items:center;background:rgba(var(--k-214-230-255,214,230,255),.12);color:var(--ink-1);font-size:12px;font-weight:600}
.cm-rt{display:grid;gap:1px;min-width:0;flex:1}
.cm-rt b{font-weight:400;font-size:13.5px;color:var(--ink-1);overflow-wrap:anywhere}
.cm-rt .cm-acc{font-size:12.5px;color:var(--ink-2);overflow-wrap:anywhere}
.cm-rt small{font-size:12px;line-height:1.4;color:var(--ink-3);overflow-wrap:anywhere}
.cm-panel h5.cm-grp{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.cm-panel h5.cm-grp small{font-size:11px;letter-spacing:0;color:var(--ink-3);font-variant-numeric:tabular-nums}
.cm-rdot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--mint)}
.cm-row.h-reconnect .cm-rdot{background:rgb(var(--bad))}.cm-row.h-reconnect small{color:var(--h-ffb4a8,#ffb4a8)}.cm-row.h-quiet .cm-rdot{background:var(--gold)}
.cm-gap{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;border:1px dashed rgba(var(--c),.4)}
.cm-gap-b{flex:none;padding:5px 11px;border-radius:999px;background:var(--ink-1);color:var(--h-141018,#141018);font-size:12px;font-weight:600}
.cm-key{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:12.5px;color:var(--ink-2)}
.cm-key li{display:flex;align-items:center;gap:10px}
.cm-key i{flex:none;width:14px;height:14px;border-radius:50%}
.cm-key .k-acct{background:var(--h-0b0e1c,#0b0e1c);border:1.2px solid rgba(var(--k-214-230-255,214,230,255),.6)}
.cm-key .k-world{background:rgb(236,212,165);box-shadow:0 0 8px rgba(var(--k-236-212-165,236,212,165),.7)}
.cm-key .k-agent{width:10px;height:10px;margin:0 2px;border-radius:2px;transform:rotate(45deg);border:1.4px solid rgba(var(--k-196-182-255,196,182,255),.9)}
.cm-key .k-flow{width:14px;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,#fff,transparent)}
.cm-key .k-bad{background:rgb(255,120,105)}
.cm-open{justify-self:start;margin-top:6px}
.cm-empty{max-width:560px;padding:30px 0}
.hub-body .cm-empty h4{letter-spacing:0;margin:0 0 8px;font-family:var(--display);font-weight:400;font-size:26px;color:var(--ink-1)}
.cm-empty p{margin:0 0 18px;font-size:14px;line-height:1.55;color:var(--ink-2)}
/* Connections: your connections, ideas for you, all apps A to Z (public/js/connlib.js, Oct 26 2026) */
.clb{display:grid;gap:34px}
.clb-top{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start}
.clb-main{grid-column:1;grid-row:1;min-width:0}
.clb-side{grid-column:2;grid-row:1;position:sticky;top:86px;background:var(--sf-1);border:1px solid var(--sf-edge);border-radius:20px;padding:10px 8px 12px;min-width:0}
.clb-ic{display:inline-grid;place-items:center;flex:none}
html[dir=rtl] .clb-flip svg{transform:scaleX(-1)}
.clb-h3{font-size:17px;font-weight:600;line-height:1.3;color:var(--ink-1);margin:0}
.clb-display{font-family:var(--display);font-weight:400;font-size:30px;line-height:1.1;letter-spacing:-.01em;color:var(--ink-1);margin:0}
.clb-sub{margin:4px 0 14px;font-size:14px;line-height:1.5;color:var(--ink-3)}
.clb-link{background:none;border:0;padding:6px 2px;color:var(--ink-2);font:inherit;font-size:14px;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px;cursor:pointer;transition:color .15s}
.clb-link:hover{color:var(--ink-1)}
.clb-link:disabled{opacity:.6;cursor:default}
/* your connections */
.clb-fold{display:flex;width:100%;align-items:center;gap:10px;background:none;border:0;padding:8px 10px;border-radius:12px;color:var(--ink-2);cursor:pointer;text-align:start}
.clb-fold .clb-ic{transition:transform .2s cubic-bezier(.23,1,.32,1)}
.clb-fold[aria-expanded="false"] .clb-ic{transform:rotate(-90deg)}
html[dir=rtl] .clb-fold[aria-expanded="false"] .clb-ic{transform:rotate(90deg)}
.clb-fold-t{flex:1;display:flex;align-items:baseline;gap:10px;min-width:0;padding:0 2px}
.clb-n{font-size:13.5px;color:var(--ink-3)}
.clb-n .bad{color:var(--rose)}
.clb-whose2{display:none}
.clb-mine{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:2px}
.clb-acct{display:flex;align-items:center;gap:8px;padding-inline-end:10px;border-radius:14px}
.clb-acct-b{flex:1;min-width:0;display:flex;align-items:center;gap:12px;background:none;border:0;padding:9px 10px;border-radius:12px;color:inherit;text-align:start;cursor:pointer;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-acct-b:hover{background:rgba(246,239,230,.045)}
.clb-acct-b:active{transform:scale(.98)}
.clb-acct-t{display:grid;gap:2px;min-width:0}
.clb-acct-t b{font-size:15px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clb-whose{font-weight:400;color:var(--ink-2)}
.clb-dot-sep{color:var(--ink-3);font-weight:400}
.clb-st{font-size:13.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clb-st.bad{color:var(--rose)}
.clb-live{width:6px;height:6px;border-radius:50%;background:var(--mint);opacity:.75;flex:none}
.clb-mine-f{display:flex;flex-wrap:wrap;gap:4px 16px;padding:8px 12px 2px;border-top:1px solid var(--hair);margin-top:8px}
.clb-empty{padding:4px 12px 10px}
.clb-empty b{display:block;font-size:15.5px;font-weight:600;color:var(--ink-1);margin:4px 0 4px}
.clb-empty p{margin:0 0 14px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.clb-fold.static{cursor:default}
/* the marks */
.clb-logo{--s:32px;width:var(--s);height:var(--s);border-radius:calc(var(--s) * .28);background:#fff;display:inline-grid;place-items:center;flex:none;position:relative}
.clb-logo img{width:74%;height:74%;object-fit:contain;border-radius:3px}
.clb-logo.letter{background:rgba(var(--bc,58,62,78),1);box-shadow:inset 0 0 0 1px rgba(246,239,230,.08)}
.clb-letter{color:#fff;font-weight:600;font-size:calc(var(--s) * .44);line-height:1}
/* chips */
.clb-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 0 4px;margin:0 0 22px}
.clb-chips::-webkit-scrollbar{display:none}
.clb-chip{flex:none;height:38px;padding:0 15px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font:inherit;font-size:14.5px;white-space:nowrap;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-chip:hover{color:var(--ink-1)}
.clb-chip:active{transform:scale(.96)}
.clb-chip[aria-selected="true"]{color:var(--gold);border-color:rgba(245,198,107,.6);background:rgba(245,198,107,.08)}
/* ideas */
.clb-ideas-h{margin:0 0 16px}
.clb-ideas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.clb-idea{display:flex;flex-direction:column;gap:8px;padding:18px 18px 16px;border-radius:18px;background:var(--sf-1);border:1px solid var(--sf-edge)}
.clb-idea-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}
.clb-marks{display:flex;align-items:center}
.clb-marks .clb-logo{box-shadow:0 0 0 3px var(--sf-1)}
.clb-marks{gap:10px}
.clb-marks .clb-logo>.clb-ic{position:absolute;inset-inline-end:-5px;bottom:-5px;width:15px;height:15px;border-radius:50%;background:var(--mint);color:#06281c;box-shadow:0 0 0 2px var(--sf-1)}
.clb-world{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink-2);white-space:nowrap}
.clb-world i{width:7px;height:7px;border-radius:50%;background:rgb(var(--w))}
.clb-try-l{color:var(--gold);font-weight:600;margin-inline-end:4px}
.hub-body .clb h4.clb-idea-t,.clb h4.clb-idea-t{margin:0;font-family:inherit;font-size:18px;font-weight:600;letter-spacing:0;line-height:1.3;color:var(--ink-1);text-transform:none}
.clb-idea-p{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.clb-idea-f{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:10px;flex-wrap:wrap}
.clb-need{font-size:13.5px;color:var(--ink-3);display:inline-flex;flex-wrap:wrap;align-items:center;gap:0 2px;min-width:0}
.clb-need .ok{color:var(--ink-2);display:inline-flex;align-items:center;gap:3px}
.clb-need .ok .clb-ic{color:var(--mint)}
.clb-idea.is-on .clb-idea-f{justify-content:flex-start}
.clb-idea.is-on .clb-need{flex:1}
.clb-idea.compact{margin:0 0 14px;background:var(--sf-2)}
.clb-idea.compact .clb-marks .clb-logo{box-shadow:0 0 0 3px var(--sf-2)}
.clb-pill{flex:none;height:40px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.55);background:transparent;color:var(--gold);font:inherit;font-size:14.5px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .15s,border-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-pill:hover{background:rgba(245,198,107,.08);border-color:rgba(245,198,107,.8)}
.clb-pill:active{transform:scale(.97)}
.clb-pill.ghost{border-color:var(--hair-2);color:var(--ink-1);font-weight:500}
.clb-pill.ghost:hover{background:rgba(246,239,230,.05)}
.clb-pill.clb-fix{height:34px;padding:0 14px;border-color:rgba(255,122,182,.55);color:var(--rose)}
.clb-pill.clb-fix:hover{background:rgba(255,122,182,.08)}
.clb-on{display:inline-flex;align-items:center;gap:7px;font-size:14.5px;font-weight:500;color:var(--mint);white-space:nowrap}
.clb-on i{width:7px;height:7px;border-radius:50%;background:var(--mint)}
.clb-idea.is-on .clb-on{margin-inline-end:auto}
.clb-none{padding:18px 20px;border-radius:16px;background:var(--sf-1);border:1px solid var(--sf-edge);color:var(--ink-2);font-size:14.5px}
.clb-none p{margin:0}
.clb-all{display:flex;align-items:center;gap:10px;width:100%;margin-top:14px;min-height:58px;padding:0 18px;border-radius:16px;background:var(--sf-1);border:1px solid var(--sf-edge);color:var(--ink-1);font:inherit;cursor:pointer;text-align:start;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-all:hover{background:var(--sf-2)}
.clb-all:active{transform:scale(.99)}
.clb-all-t{flex:1;font-size:16px;font-weight:500}
.clb-all-n{font-size:14px;color:var(--ink-3)}
.clb-all .clb-ic{color:var(--ink-3)}
/* all apps, A to Z */
.clb-lib-h{display:grid;gap:12px;justify-items:start;margin:0 0 16px}
.clb-back{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;transition:color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-back:hover{color:var(--ink-1)}
.clb-back:active{transform:scale(.96)}
.clb-search{display:flex;align-items:center;gap:10px;height:50px;padding:0 16px;margin:0 0 14px;border-radius:14px;background:var(--sf-1);border:1px solid var(--hair-2);color:var(--ink-3);transition:border-color .15s}
.clb-search:focus-within{border-color:rgba(92,225,255,.45)}
.clb-search input{flex:1;min-width:0;height:100%;background:transparent;border:0;outline:0;color:var(--ink-1);font:inherit;font-size:16px}
.clb-search input::placeholder{color:var(--ink-3)}
.clb-search input::-webkit-search-cancel-button{filter:invert(.7)}
.clb-whosefor{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.clb-whosefor-l{font-size:13.5px;color:var(--ink-3);margin-inline-end:2px}
.clb-seg{height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--hair);background:transparent;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;transition:color .15s,background-color .15s,border-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-seg:active{transform:scale(.96)}
.clb-seg[aria-checked="true"]{background:rgba(246,239,230,.1);border-color:var(--hair-2);color:var(--ink-1)}
.clb-list{list-style:none;margin:0;padding:2px 18px;border-radius:18px;background:var(--sf-1);border:1px solid var(--sf-edge)}
.clb-app{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:14px;align-items:start;padding:14px 0;border-bottom:1px solid var(--hair)}
.clb-app:last-child{border-bottom:0}
.clb-app>.clb-logo{margin-top:2px}
.clb-app-t{display:grid;gap:3px;min-width:0}
.clb-app-t>b{font-size:15.5px;font-weight:600;color:var(--ink-1);line-height:1.3}
.clb-app-p{font-size:13.5px;line-height:1.45;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.clb-app-r{display:flex;align-items:center;min-height:40px}
.clb-app.s-soon>.clb-logo,.clb-app.s-email>.clb-logo{opacity:.6}
.clb-soon{font-size:13.5px;color:var(--ink-3);white-space:nowrap}
.clb-app-accts{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px}
.clb-app-acct{display:inline-flex;align-items:center;gap:8px;max-width:100%;background:none;border:0;padding:4px 0;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;text-align:start}
.clb-app-acct span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clb-app-acct:hover span{color:var(--ink-1);text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px}
.clb-app-acct i{width:6px;height:6px;border-radius:50%;background:var(--mint);flex:none}
.clb-app-acct.bad i{background:var(--rose)}
.clb-app-acct small{color:var(--ink-3);font-size:13px;white-space:nowrap}
.clb-add{display:inline-flex;align-items:center;gap:6px;justify-self:start;background:none;border:0;padding:6px 0 0;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;transition:color .15s}
.clb-add:hover{color:var(--ink-1)}
.clb-more{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:16px}
.clb-note{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ink-3)}
.clb-idea.is-on{background:transparent;border-color:var(--hair)}
.clb-idea.is-on .clb-marks .clb-logo{box-shadow:none}
.clb-onrow,.clb-mapbtn{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;margin-top:14px;padding:0 18px;border-radius:16px;border:1px solid var(--hair);background:transparent;color:var(--ink-2);font:inherit;font-size:15px;cursor:pointer;text-align:start;transition:color .15s,background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.clb-onrow:hover,.clb-mapbtn:hover{color:var(--ink-1);background:rgba(246,239,230,.03)}
.clb-onrow:active,.clb-mapbtn:active{transform:scale(.99)}
.clb-onrow .clb-ic,.clb-mapbtn .clb-ic{transition:transform .2s cubic-bezier(.23,1,.32,1)}
.clb-onrow[aria-expanded="true"] .clb-ic,.clb-mapbtn[aria-expanded="true"] .clb-ic{transform:rotate(180deg)}
.clb-onrow-dot{width:7px;height:7px;border-radius:50%;background:var(--mint);flex:none}
.clb-onrow-t{flex:1}
.clb-ideas-on{margin-top:12px}
.clb-mapbtn{margin-top:0}
/* Email & calendar (public/js/emailways.js): every way to connect an email, one tap each */
.ew{margin:0 0 22px;padding:18px;border-radius:20px;background:var(--sf-1);border:1px solid var(--sf-edge)}
.ew-h{margin:0 0 14px}
.ew-t{margin:0;font-size:17px;font-weight:600;line-height:1.3;color:var(--ink-1)}
.ew-p{margin:4px 0 0;font-size:14px;line-height:1.5;color:var(--ink-3);max-width:62ch}
.ew-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.ew-way{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:62px;padding:10px 14px;border-radius:14px;border:1px solid var(--hair);background:rgba(246,239,230,.02);color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:background-color .15s,border-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.ew-way:hover{background:rgba(246,239,230,.05);border-color:var(--hair-2)}
.ew-way:active{transform:scale(.98)}
.ew-way:focus-visible,.ew-alt-b:focus-visible,.ew-blocked>summary:focus-visible{outline:2px solid rgba(245,198,107,.7);outline-offset:2px}
.ew-way-t{display:grid;gap:2px;min-width:0}
.ew-way-t b{font-size:15px;font-weight:600;line-height:1.3;color:var(--ink-1)}
.ew-way-t small{font-size:13px;line-height:1.4;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ew-go{font-size:14px;font-weight:600;color:var(--ink-2);white-space:nowrap;transition:color .15s}
.ew-way:hover .ew-go{color:var(--gold)}
.ew-at{font-weight:600;color:var(--ink-1)}
.ew-plan{margin:12px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.ew-plan.full{color:var(--ink-1)}
.ew-link{appearance:none;border:0;background:none;padding:0;font:inherit;color:var(--gold);font-weight:600;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(245,198,107,.4);text-underline-offset:3px}
.ew-blocked{margin-top:12px}
.ew-blocked>summary{display:inline-flex;align-items:center;gap:8px;min-height:40px;font-size:14px;color:var(--ink-2);cursor:pointer;list-style:none;border-radius:8px}
.ew-blocked>summary::-webkit-details-marker{display:none}
.ew-blocked>summary::before{content:'+';display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--hair-2);font-size:13px;line-height:1;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.ew-blocked[open]>summary::before{transform:rotate(45deg)}
.ew-blocked>summary:hover{color:var(--ink-1)}
.ew-alt{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.ew-alt-b{display:block;width:100%;padding:10px 14px;border-radius:12px;border:1px solid var(--hair);background:transparent;color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
button.ew-alt-b:hover{background:rgba(246,239,230,.04)}
button.ew-alt-b:active{transform:scale(.99)}
.ew-alt-info{cursor:default;border-style:dashed}
.ew-alt-t{display:grid;gap:2px}
.ew-alt-t b{font-size:14.5px;font-weight:600}
.ew-alt-t small{font-size:13px;line-height:1.45;color:var(--ink-3)}
.ew.ew-compact{margin:0;padding:0;background:none;border:0;border-radius:0}
.ew-compact .ew-h{margin:16px 0 10px}
.ew-compact .ew-t{font-size:15.5px}
.ew-compact .ew-list{grid-template-columns:1fr}
.clb-simple .ew-list{grid-template-columns:1fr}
/* Your NOVA email address (public/js/novaaddress.js): the address, Copy, its status and How to add it */
.na{margin:14px 0 0;padding:16px 18px;border-radius:20px;background:var(--sf-1);border:1px solid var(--sf-edge)}
.na-t{margin:0 0 10px;font-size:16px;font-weight:600;line-height:1.3;color:var(--ink-1)}
.na-row{display:flex;align-items:center;gap:8px;min-width:0}
.na-row[hidden]{display:none}
.na-addr{flex:1;min-width:0;overflow-wrap:anywhere;padding:9px 12px;border-radius:12px;background:rgba(246,239,230,.05);border:1px solid var(--hair);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;color:var(--ink-1);unicode-bidi:isolate}
.na-copy{flex:none;height:40px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.55);background:transparent;color:var(--gold);font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.na-copy:hover{background:rgba(245,198,107,.08)}
.na-copy:active{transform:scale(.97)}
.na-copy:disabled{opacity:.5;cursor:default}
.na-p{margin:10px 0 0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.na-st{margin:6px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.na-st b{font-weight:600;color:var(--ink-2)}
.na-how,.na-link{appearance:none;border:0;background:none;padding:0;margin-top:10px;min-height:36px;font:inherit;font-size:14px;font-weight:600;color:var(--ink-1);cursor:pointer;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:3px}
.na-how[hidden]{display:none}
.na-panel{margin-top:8px;padding-top:12px;border-top:1px solid var(--hair)}
.na-panel[hidden]{display:none}
.na-tabs,.na-ways{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.na-tab,.na-way{height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--hair);background:transparent;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;transition:color .15s,background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.na-tab:active,.na-way:active{transform:scale(.96)}
.na-tab[aria-selected="true"],.na-way[aria-checked="true"]{background:rgba(246,239,230,.1);border-color:var(--hair-2);color:var(--ink-1)}
.na-way{height:30px;font-size:13px}
.na-tab:focus-visible,.na-way:focus-visible,.na-copy:focus-visible,.na-how:focus-visible,.na-link:focus-visible{outline:2px solid rgba(245,198,107,.7);outline-offset:2px}
.na-steps{margin:0;padding-inline-start:20px;display:grid;gap:6px;font-size:14px;line-height:1.5;color:var(--ink-1)}
.na-note,.na-test{margin:10px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-3)}
.na-test{color:var(--ink-2)}
.na-compact{margin:8px 0 0;padding:14px}
.cv-na .na{margin:0;padding:2px 0 0;background:none;border:0;border-radius:0} /* Talk: the reply's card is the frame, not a box in a box */
.clb-side:has(.na-panel:not([hidden])){position:static} /* the steps open: never a sticky column taller than the screen */
.na.clb-na{margin:6px 12px 4px;padding:16px 0 4px;background:none;border:0;border-top:1px solid var(--hair);border-radius:0}
.fr-na[hidden]{display:none}
.fr-na .na{background:rgba(246,239,230,.03);border-color:var(--fr-line)}
@media (max-width:760px){.ew{padding:16px 14px;border-radius:18px}.ew-list{grid-template-columns:1fr}.ew-way{min-height:58px;padding:10px 12px}}
.clb-mapbtn .clb-all-t{flex:1;font-weight:400}
.clb-map.open .clb-mapbtn{margin-bottom:4px;color:var(--ink-1)}
.clb-later{margin-top:14px}
.clb-later>summary{display:flex;align-items:center;gap:10px;min-height:52px;padding:0 18px;border-radius:16px;border:1px solid var(--hair);color:var(--ink-2);font-size:15px;cursor:pointer;list-style:none;transition:color .15s}
.clb-later>summary::-webkit-details-marker{display:none}
.clb-later>summary>span:first-child{flex:1}
.clb-later>summary:hover{color:var(--ink-1)}
.clb-later>summary .clb-ic{transition:transform .2s cubic-bezier(.23,1,.32,1)}
.clb-later[open]>summary{margin-bottom:12px}
.clb-later[open]>summary .clb-ic{transform:rotate(180deg)}
/* the map underneath */
.clb-map>.clb-sub{margin:10px 0 14px}
/* a long list reads down one column, then the next (A to Z stays in order) */
@media (min-width:1180px){
  .clb-list.two{column-count:2;column-gap:32px;column-rule:1px solid var(--hair)}
  .clb-list.two>.clb-app{break-inside:avoid}
}
@media (max-width:1100px){.clb-top{grid-template-columns:minmax(0,1fr) 300px;gap:24px}}
@media (max-width:900px){.clb-ideas{grid-template-columns:minmax(0,1fr)}}
@media (pointer:coarse){.clb-pill{height:44px}.clb-chip{height:40px}.clb-pill.clb-fix{height:38px}}
@media (max-width:760px){
  .clb{gap:28px}
  .clb-top{grid-template-columns:minmax(0,1fr);gap:22px}
  .clb-side{grid-column:1;grid-row:1;position:static;padding:8px 0 12px;border-radius:18px}
  .clb-main{grid-row:2}
  .clb-fold{padding:8px 16px}
  /* on a phone her accounts are one row that scrolls sideways */
  .clb-mine{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:4px 14px 2px;scroll-snap-type:x proximity;scroll-padding-inline:14px}
  .clb-mine::-webkit-scrollbar{display:none}
  .clb-acct{flex:0 0 auto;width:min(236px,68vw);scroll-snap-align:start;background:var(--sf-2);border:1px solid var(--sf-edge);padding-inline-end:8px}
  .clb-acct.bad{border-color:rgba(255,122,182,.32)}
  .clb-acct-b{padding:10px 10px}
  .clb-acct-t b{font-size:14.5px}
  .clb-live{display:none}
  .clb-acct-t b .clb-whose,.clb-acct-t b .clb-dot-sep{display:none}
  .clb-whose2{display:inline}
  .clb-mine-f{padding:8px 16px 0;border-top:0;margin-top:4px}
  .clb-empty{padding:4px 16px 8px}
  .clb-chips{margin:0 -16px 18px;padding:2px 16px 4px;scroll-padding-inline:16px}
  .clb-display{font-size:27px}
  .clb-idea{padding:16px 16px 14px}
  .clb-list{padding:2px 14px}
  .clb-app{gap:12px}
  .clb-app-r{min-height:36px}
  .clb-app .clb-pill{height:38px;padding:0 14px;font-size:14px}
  .clb-app .clb-soon{white-space:normal;text-align:end;max-width:76px;font-size:13px;line-height:1.3}
  .clb-acct.bad .clb-whose2{display:none}
  .clb-whosefor{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px 12px;padding:0 16px}
  .clb-whosefor::-webkit-scrollbar{display:none}
  .clb-seg,.clb-whosefor-l{flex:none}
}
@media (prefers-reduced-motion:reduce){.clb *{transition:none!important}}
.cm-go{display:flex;gap:10px;flex-wrap:wrap}
@media (max-width:860px){
  .cm-wrap{grid-template-columns:1fr;gap:14px}
  .cm-panel{position:static}
  .cm-stage{border-radius:18px;margin:0 -4px}
  .cm-bar{justify-content:flex-start;margin:0 0 10px}
  .cm-select{font-size:16px}
  .cm-n.agent .cm-label{opacity:0;transition:opacity .15s ease}
  .cm-n.agent.near .cm-label,.cm-n.agent.chosen .cm-label,.cm-n.agent:focus-visible .cm-label{opacity:1}
}
/* ---------- reading: the mind steps back, the conversation takes the screen ---------- */
#stage.reading #fig,#stage.reading #bg{pointer-events:none}
#stage.reading #fig{opacity:.55;transform:translateY(-8vh) scale(.96);transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
#stage.reading .greet,#stage.reading .rail,#stage.reading .glance,#stage.reading .key,#stage.reading #anchors,#stage.reading .hint,#stage.reading .now-core,#stage.reading .dock-hint,#stage.reading #tip{opacity:0!important;pointer-events:none!important;transition:opacity .35s ease}
#stage.reading #dock{border-color:rgba(var(--k-246-239-230,246,239,230),.26);background:rgba(var(--k-8-10-22,8,10,22),.9)}
.convo{position:absolute;left:50%;top:76px;bottom:116px;/* bottom follows the box (presence.js layout) */width:min(780px,94vw);z-index:5;display:flex;flex-direction:column;opacity:0;transform:translate(-50%,10px);pointer-events:none;transition:opacity .5s var(--ease),transform .7s var(--ease)}
.convo[hidden]{display:none}
#stage.reading .convo{opacity:1;transform:translate(-50%,0);pointer-events:auto}
/* Katie, Oct 15: the stars and the mind showed through the words. The conversation sits on its own quiet surface: deep
   night with a trace of the warm stone of the chat search, so the text reads cleanly while the sky stays around it. */
.convo::before{content:"";position:absolute;inset:46px -22px -8px;z-index:-1;pointer-events:none;border-radius:24px;border:1px solid var(--hair);background:linear-gradient(rgba(var(--k-246-239-230,246,239,230),.025),rgba(var(--k-246-239-230,246,239,230),.025)),rgba(var(--k-6-7-13,6,7,13),.8);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 24px 60px -30px rgba(var(--k-0-0-0,0,0,0),.8)}
.cv-top{display:flex;align-items:center;gap:12px;padding:0 8px 10px;min-height:38px}
.cv-back{display:inline-flex;align-items:center;gap:10px;height:34px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.6);font-size:12.5px;color:var(--ink-2);transition:color .2s,border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.cv-back:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.cv-back:active{transform:scale(.97)}
/* the mind in miniature: the same state the brain is in, so what NOVA is doing shows even while it has stepped back */
.cv-mind{position:relative;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff 0,rgba(var(--k-255-243-230,255,243,230),.9) 28%,rgba(var(--k-92-225-255,92,225,255),.35) 60%,rgba(var(--k-92-225-255,92,225,255),0) 72%);box-shadow:0 0 10px rgba(var(--k-92-225-255,92,225,255),.45);transition:box-shadow .5s ease,filter .5s ease}
.cv-mind::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1px solid rgba(var(--k-92-225-255,92,225,255),.4);opacity:0}
[data-state="listening"] .cv-mind::after{opacity:1;animation:cvIn 1.4s ease-in-out infinite}
[data-state="thinking"] .cv-mind{animation:cvThink 1.1s ease-in-out infinite}
[data-state="retrieving"] .cv-mind{background:radial-gradient(circle at 50% 50%,#fff 0,rgba(var(--k-255-243-230,255,243,230),.9) 24%,rgba(var(--k-169-139-255,169,139,255),.5) 58%,rgba(var(--k-169-139-255,169,139,255),0) 72%);box-shadow:0 0 12px rgba(var(--k-169-139-255,169,139,255),.6)}
[data-state="retrieving"] .cv-mind::after{opacity:1;border-color:rgba(var(--k-169-139-255,169,139,255),.5);animation:cvIn 1.1s ease-in-out infinite}
[data-state="acting"] .cv-mind{background:radial-gradient(circle at 50% 50%,#fff 0,rgba(var(--k-255-243-230,255,243,230),.95) 24%,rgba(var(--k-245-198-107,245,198,107),.55) 58%,rgba(var(--k-245-198-107,245,198,107),0) 72%);box-shadow:0 0 12px rgba(var(--k-245-198-107,245,198,107),.6)}
[data-state="acting"] .cv-mind::after{opacity:1;border-color:rgba(var(--k-245-198-107,245,198,107),.55);animation:cvOut 1s ease-out infinite}
[data-state="approval"] .cv-mind{background:radial-gradient(circle at 50% 50%,#fff 0,rgba(var(--k-245-198-107,245,198,107),1) 30%,rgba(var(--k-245-198-107,245,198,107),.4) 60%,rgba(var(--k-245-198-107,245,198,107),0) 72%);box-shadow:0 0 14px rgba(var(--k-245-198-107,245,198,107),.75)}
[data-state="complete"] .cv-mind{background:radial-gradient(circle at 50% 50%,#fff 0,rgba(var(--k-111-242-196,111,242,196),.95) 30%,rgba(var(--k-111-242-196,111,242,196),.35) 60%,rgba(var(--k-111-242-196,111,242,196),0) 72%);box-shadow:0 0 12px rgba(var(--k-111-242-196,111,242,196),.6)}
[data-state="speaking"] .cv-mind{animation:cvThink .7s ease-in-out infinite;box-shadow:0 0 14px rgba(var(--k-245-198-107,245,198,107),.6)}
@keyframes cvIn{0%{transform:scale(1.6);opacity:0}40%{opacity:.9}100%{transform:scale(.9);opacity:0}}
@keyframes cvOut{0%{transform:scale(.9);opacity:.9}100%{transform:scale(1.8);opacity:0}}
@keyframes cvThink{0%,100%{filter:brightness(1)}50%{filter:brightness(1.6)}}
.cv-state{flex:1;min-width:0;font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .3s}
[data-state="approval"] .cv-state{color:var(--gold)}
.cv-new{font-size:12px;color:var(--ink-3);padding:6px 10px;border-radius:999px;transition:color .2s,transform .16s cubic-bezier(.23,1,.32,1)}.cv-new:active{transform:scale(.96)}
.cv-acts{display:flex;align-items:center;gap:2px;height:34px;padding:0 3px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.8)} /* on stars: one solid pill that matches "Your mind" */
/* her previous chats (NOVA's panel › Chats) */
.ch-head{display:flex;gap:8px;align-items:center;margin:6px 0 10px}
.ch-search{flex:1;min-width:0;height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:14px}
.ch-search:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.ch-new{flex:none;height:38px;padding:0 14px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.4);color:var(--gold);font-size:13px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.ch-new:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}.ch-new:active{transform:scale(.97)}
.ch-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -22px 6px;padding:2px 22px 8px}
.ch-chips::-webkit-scrollbar{display:none}
.ch-chip{--c:246,239,230;flex:none;padding:6px 11px;border-radius:999px;border:1px solid var(--hair);font-size:12.5px;color:var(--ink-3);white-space:nowrap;transition:color .2s ease,border-color .2s ease,background-color .2s ease}
.ch-chip:hover{color:var(--ink-1)}
.ch-chip[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(var(--c),.55);background:rgba(var(--c),.1)}
.ch-group h4{margin:16px 0 4px;font-size:12px;font-weight:500;color:var(--ink-3);letter-spacing:.01em}
/* chats grouped by the section of her life (Oct 16): the section's own colour marks its heading */
.ch-group h4.ch-gsec{display:flex;align-items:center;gap:8px;color:var(--ink-2)}
.ch-gsec i{flex:none;width:7px;height:7px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.55)}
.ch-mode{flex:none;display:inline-flex;padding:2px;border-radius:999px;border:1px solid var(--hair)}
.ch-seg{border:0;background:none;padding:6px 11px;border-radius:999px;font-size:12.5px;color:var(--ink-3);white-space:nowrap;transition:color .15s,background-color .15s}
.ch-seg[aria-pressed="true"]{background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1)}.ch-seg:active{transform:scale(.97)}
.ch-move{max-width:180px;padding:5px 8px;border-radius:8px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.6);color:var(--ink-1);font:inherit;font-size:13px}
.ch-head{flex-wrap:wrap}.ch-head .ch-search{flex:1 1 100%}.ch-head .ch-new{margin-left:auto}
.ch-ul{list-style:none;margin:0;padding:0}
.ch-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;border-radius:12px;transition:background-color .2s ease}
.ch-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.ch-row.now{background:rgba(var(--k-245-198-107,245,198,107),.06)}
.ch-main{display:flex;flex-direction:column;gap:3px;min-width:0;padding:11px 6px 11px 12px;padding-inline:12px 6px;text-align:start;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.ch-main:active{transform:scale(.99)}
.ch-top{display:flex;align-items:center;gap:8px;min-width:0}
.ch-title{flex:1 1 auto;min-width:0;font-size:14.5px;line-height:1.35;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-row.now .ch-title{font-weight:500}
.ch-dot{flex:none;width:6px;height:6px;border-radius:50%;background:rgb(var(--c));opacity:.8}
.ch-line{display:flex;align-items:baseline;gap:0;min-width:0;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.ch-line .ch-when{font-size:12px}
.ch-said{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-sep{flex:none;margin-inline:6px;opacity:.7}
.ch-main:has(.ch-dot,.ch-pin) .ch-line,.ch-main:has(.ch-dot,.ch-pin) .ch-hit{margin-inline-start:14px}
.ch-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-3)}
.ch-w{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2)}
.ch-w::before{content:"";width:6px;height:6px;border-radius:50%;background:rgb(var(--c))}
.ch-now{color:var(--gold)}
.ch-when{flex:none;font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.ch-more{width:36px;height:36px;margin-inline-end:4px;border-radius:50%;color:var(--ink-3);font-size:16px;line-height:1;transition:color .2s ease,background-color .2s ease}
.ch-more:hover,.ch-more[aria-expanded="true"]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.ch-tools{grid-column:1 / -1;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:0 10px 10px;font-size:13px}
.ch-tools[hidden]{display:none}
.ch-del{color:var(--h-ffb4a2,#ffb4a2)}.ch-quiet{color:var(--ink-3)}
.ch-ask{color:var(--ink-2);flex-basis:100%}
.ch-name{flex:1;min-width:160px;height:34px;padding:0 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.05);color:var(--ink-1);font:inherit;font-size:14px}
.ch-empty{color:var(--ink-3);font-size:13.5px;line-height:1.5;margin:18px 4px}
.ch-more-b{display:block;margin:14px auto 0;font-size:13px}
@media (max-width:760px){.ch-title{font-size:15px}.ch-more{width:40px;height:40px}.ch-dup{height:36px}}
.ch-hit{font-size:12.5px;line-height:1.45;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ch-hit mark,.ch-rlist mark{background:none;color:var(--gold);font-weight:600}
.ch-pin{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:var(--gold);vertical-align:middle}
/* the same question asked again: one row with a count that opens to show each (public/js/chatgroups.js) */
.ch-dup{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;min-width:30px;padding:0 9px;border-radius:999px;color:var(--ink-2);font-size:12px;font-variant-numeric:tabular-nums;transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.ch-dup span{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.08)}
.ch-dup i{width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-1px) rotate(45deg);opacity:.7;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.ch-dup:hover,.ch-dup[aria-expanded="true"]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.ch-dup[aria-expanded="true"] i{transform:translateY(1px) rotate(225deg)}
.ch-dup:active,.ch-more:active{transform:scale(.94)}
.ch-sub{grid-column:1 / -1;list-style:none;margin:0 0 6px;margin-inline-start:15px;padding:0;padding-inline-start:6px;border-inline-start:1px solid var(--hair)}
.ch-sub:not([hidden]){animation:chSubIn .2s cubic-bezier(.23,1,.32,1)}
@keyframes chSubIn{from{opacity:0;transform:translateY(-4px)}}
.ch-subrow .ch-main{padding-block:8px}.ch-subrow .ch-title{font-size:13.5px;color:var(--ink-2)}
.ch-subrow.now .ch-title{color:var(--ink-1)}
/* Tidy my chats: offered while some are still called by the first thing she said */
.ch-tidy{display:inline-flex;align-items:center;gap:8px;height:34px;margin:0 0 4px;padding:0 13px;border-radius:999px;border:1px solid rgba(var(--k-92-225-255,92,225,255),.28);color:var(--ice);font-size:13px;transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1),opacity .2s ease}
.ch-tidy i{width:6px;height:6px;border-radius:50%;background:currentColor}
.ch-tidy:hover{background:rgba(var(--k-92-225-255,92,225,255),.07)}.ch-tidy:active{transform:scale(.97)}
.ch-tidy[hidden]{display:none}.ch-tidy.busy{opacity:.8}.ch-tidy.busy i{animation:chTidy 1s ease-in-out infinite alternate}
@keyframes chTidy{to{opacity:.25}}
@media (prefers-reduced-motion:reduce){.ch-sub:not([hidden]),.ch-tidy.busy i{animation:none}.ch-dup i{transition:none}}
/* the rail: her chats beside the conversation on a wide screen; quiet text in the dark, the open one marked in gold */
.ch-rail{position:absolute;left:24px;top:84px;bottom:28px;width:clamp(208px,calc(50vw - 438px),272px);z-index:5;display:none;flex-direction:column;gap:10px;opacity:0;transform:translateX(-8px);pointer-events:none;transition:opacity .35s var(--ease),transform .45s var(--ease)}
@media (min-width:1240px){.ch-rail:not([hidden]){display:flex}#stage.reading .ch-rail{opacity:1;transform:none;pointer-events:auto}}
/* Katie, Oct 15: the list of chats showed through the home screen and behind the Dashboard (".ready .chrome" made every
   chrome piece visible, the rail included). It belongs beside an open conversation only. */
#stage:not(.reading) .ch-rail,#stage.in-overview .ch-rail,#stage.in-life .ch-rail{opacity:0!important;transform:translateX(-8px);pointer-events:none!important;visibility:hidden;transition:opacity .2s var(--ease),transform .2s var(--ease),visibility 0s linear .2s}
.ch-rhead{display:flex;align-items:center;justify-content:space-between;padding:0 4px 0 10px}
.ch-rtitle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);letter-spacing:.01em;transition:color .2s ease}
button.ch-rtitle:hover{color:var(--ink-1)}
.ch-rtitle i{width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7}
@media (min-width:1240px){#stage.has-rail #convoChats{display:none}} /* the rail is the list; its title opens the full page */
.ch-rnew{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.4);color:var(--gold);font-size:12.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.ch-rnew i{position:relative;width:9px;height:9px}.ch-rnew i::before,.ch-rnew i::after{content:"";position:absolute;left:50%;top:50%;width:9px;height:1.5px;border-radius:1px;background:currentColor;transform:translate(-50%,-50%)}.ch-rnew i::after{transform:translate(-50%,-50%) rotate(90deg)}
.ch-rnew:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}.ch-rnew:active{transform:scale(.97)}
.ch-rsearch{height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-1);font:inherit;font-size:13px}
.ch-rsearch:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.ch-rlist{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 2px 12px;scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.12) transparent;
  -webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(180deg,#000 calc(100% - 28px),transparent)}
.ch-rlist .ch-group h4{margin:14px 0 2px 10px;font-size:11.5px}
.ch-rlist .ch-group:first-child h4{margin-top:4px}
.ch-rlist .ch-empty{font-size:12.5px;margin:10px}
.ch-rlist .ch-more-b{font-size:12px;margin-top:10px}
.ch-rrow{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;border-radius:10px;transition:background-color .2s ease}
.ch-rrow:hover,.ch-rrow.tools-on{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.ch-rrow.now{background:rgba(var(--k-245-198-107,245,198,107),.07)}
.ch-rrow.now::before{content:"";position:absolute;inset-inline-start:0;top:9px;bottom:9px;width:2px;border-radius:2px;background:var(--gold)}
.ch-rmain{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 2px 8px 10px;padding-inline:10px 2px;text-align:start;font-size:13.5px;line-height:1.3;color:var(--ink-2);transition:color .2s ease}
.ch-rline{grid-column:1 / -1;display:flex;min-width:0;margin:-5px 10px 8px;margin-inline-start:24px;font-size:12px;line-height:1.35;color:var(--ink-3)}
.ch-rline span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-rrow:not(:has(.ch-dot,.ch-pin)) .ch-rline{margin-inline-start:10px}
.ch-rrow .ch-dup{height:26px;padding:0 6px;font-size:11.5px}.ch-rrow .ch-dup span{min-width:18px;height:18px;padding:0 5px}
.ch-rrow .ch-sub{margin-inline-start:13px}.ch-rrow.ch-subrow .ch-rmain{font-size:12.5px;padding-block:6px}
.ch-rmain span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-rrow:hover .ch-rmain,.ch-rrow.now .ch-rmain{color:var(--ink-1)}
.ch-rrow .ch-more{width:30px;height:30px;margin-inline-end:2px;font-size:14px;opacity:0;transition:opacity .15s ease,color .2s ease,background-color .2s ease}
.ch-rrow:hover .ch-more,.ch-rrow.now .ch-more,.ch-rrow .ch-more[aria-expanded="true"],.ch-rrow .ch-more:focus-visible{opacity:1}
.ch-rrow .ch-hit{grid-column:1 / -1;margin:-4px 10px 8px;font-size:12px}
.ch-rrow .ch-tools{gap:10px;padding:2px 10px 10px;font-size:12.5px}
.ch-rrow .ch-name{min-width:0;flex-basis:100%}
@media (hover:none){.ch-rrow .ch-more{opacity:1}}
.cv-new:hover{color:var(--ink-1)}
.cv-scroll{flex:1;min-height:0;overflow:auto;padding:14px 8px 40px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.14) transparent;
  -webkit-mask-image:linear-gradient(to bottom,transparent,#000 22px,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to bottom,transparent,#000 22px,#000 calc(100% - 28px),transparent)}
.cv-thread{display:flex;flex-direction:column;gap:30px;max-width:720px;margin:0 auto}
.cv-turn{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0}
.tbl{overflow-x:auto;margin:0 0 .8em;-webkit-overflow-scrolling:touch}.tbl table{margin:0;min-width:100%}.tbl td:first-child,.tbl th:first-child{white-space:nowrap}
.cv-q{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2);padding-block:2px;padding-inline:14px 0;border-inline-start:2px solid rgba(var(--k-245-198-107,245,198,107),.55);overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.cv-q.open{display:block;-webkit-line-clamp:unset}
.cv-q .said-att{color:var(--ink-3);margin-left:6px}
.cv-qmore{justify-self:start;font-size:12px;color:var(--ink-3);margin:-6px 0 0 16px}
.turn-a{font-family:var(--sans);font-size:clamp(15.5px,1.1vw,16.5px);line-height:1.65;letter-spacing:.003em;color:var(--ink-1);font-variant-numeric:lining-nums;min-height:1em;min-width:0;overflow-wrap:anywhere}
.turn-a:empty{display:none}
.turn-err{font-family:var(--sans);font-size:14px;color:var(--rose)}
.turn-err.calm{color:rgba(246,239,230,.84)} /* sharing with AI services is off by her choice: said plainly, not as trouble */
.turn-err-go{margin-top:10px}
.turn-err-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.turn-err-acts .turn-err-go{margin-top:0}.turn-err-acts .btn-sm{border-radius:999px;min-height:40px}.turn-err-acts .quiet{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}.turn-err-acts .quiet:hover{border-color:var(--ink-3)}
/* the trial and payment bar steps aside while a conversation is open: a refusal there carries its own way to the plans */
body:has(#stage.reading) .plan-bar{display:none}
.turn-a>:last-child{margin-bottom:0}
/* while NOVA works on this turn: what it is doing, in words, with the same light the brain shows */
.turn-work{display:flex;align-items:center;gap:10px;min-height:24px;font-size:14px;color:var(--ink-2);width:fit-content;max-width:100%;padding:4px 14px 4px 11px;border-radius:999px} /* a pill, so the thinking glow can circle it */
.turn-work .pip{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ice);box-shadow:0 0 8px rgba(var(--k-92-225-255,92,225,255),.6);animation:pip 1.4s ease-in-out infinite}
.turn-work[data-s="retrieving"] .pip{background:var(--violet);box-shadow:0 0 8px rgba(var(--k-169-139-255,169,139,255),.7)}
.turn-work[data-s="acting"] .pip{background:var(--gold);box-shadow:0 0 8px rgba(var(--k-245-198-107,245,198,107),.7)}
.turn-work[data-s="approval"] .pip{background:var(--gold);animation:none}
.turn-work[data-s="complete"] .pip{background:var(--mint);box-shadow:0 0 8px rgba(var(--k-111-242-196,111,242,196),.6);animation:none}
.turn-work[data-s="idle"] .pip{background:var(--ink-3);box-shadow:none;animation:none}
.turn-work .tw-dots{display:inline-flex;gap:3px;margin-left:2px}.turn-work .tw-dots i{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.4;animation:twDot 1.2s ease-in-out infinite}.turn-work .tw-dots i:nth-child(2){animation-delay:.15s}.turn-work .tw-dots i:nth-child(3){animation-delay:.3s}
@keyframes twDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}
.turn-work.done .tw-dots{display:none}
.turn-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;opacity:.8;transition:opacity .2s ease}
.cv-turn:hover .turn-foot,.cv-turn:last-child .turn-foot,.turn-foot:focus-within{opacity:1}
.turn-foot .sources{margin:0 0 0 auto;justify-content:flex-end}
.turn-foot .sources .src-list{justify-content:flex-end}
.rt-model .bmark{margin-inline-end:6px;border-radius:4px}
.rt-model{display:inline-flex;align-items:center;margin-left:auto;font-size:11.5px;color:var(--ink-3);opacity:.8;font-variant-numeric:tabular-nums;white-space:nowrap}
.turn-foot .sources~.rt-model{margin-left:10px}
/* Report a problem / Send feedback (public/js/report.js): the answer's own quiet ⋯ menu, and one small sheet */
.rp-wrap{position:relative;display:inline-flex}
.rt-more{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;min-height:26px}.rt-more svg{display:block}
.rt-more::after{content:'';position:absolute;inset:-9px -5px}
.rt-more[aria-expanded="true"]{color:var(--ink-1);border-color:var(--hair-2)}
.rp-menu{position:absolute;top:calc(100% + 6px);inset-inline-start:0;z-index:25;min-width:214px;padding:6px;border-radius:14px;background:var(--sf-2);border:1px solid var(--hair);box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);transform-origin:top left;animation:rpPop .16s cubic-bezier(.23,1,.32,1)}
.rp-menu.up{top:auto;bottom:calc(100% + 6px);transform-origin:bottom left}
.rp-menu.flip{inset-inline-start:auto;inset-inline-end:0;transform-origin:top right}.rp-menu.flip.up{transform-origin:bottom right}html[dir=rtl] .rp-menu.flip{transform-origin:top left}
html[dir=rtl] .rp-menu{transform-origin:top right}html[dir=rtl] .rp-menu.up{transform-origin:bottom right}
.rp-menu button{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px;border-radius:10px;font:inherit;font-size:14.5px;color:var(--ink-1);background:none;border:0;text-align:start;cursor:pointer;transition:background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.rp-menu button svg{color:var(--ink-3);flex:none}
.rp-menu button:hover,.rp-menu button:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.06);outline:none}
.rp-menu button:active{transform:scale(.98)}
@keyframes rpPop{from{opacity:0;transform:scale(.96) translateY(-2px)}to{opacity:1;transform:none}}
.rp-scrim{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:rgba(var(--k-3-4-10,3,4,10),.66);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.rp-scrim.on{opacity:1}.rp-scrim.off{opacity:0;pointer-events:none}
.rp-panel{width:min(440px,100%);max-height:calc(100% - 16px);overflow-y:auto;overscroll-behavior:contain;padding:20px 20px 18px;border-radius:22px;background:var(--sf-1);border:1px solid var(--sf-edge-2,var(--hair));color:var(--ink-1);box-shadow:inset 0 1px 0 rgba(var(--k-246-239-230,246,239,230),.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);transform:translateY(8px) scale(.98);transition:transform .22s cubic-bezier(.23,1,.32,1)}
.rp-scrim.on .rp-panel{transform:none}.rp-scrim.off .rp-panel{transform:translateY(6px) scale(.99)}
.rp-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-6px -8px 2px 0}
html[dir=rtl] .rp-head{margin:-6px 0 2px -8px}
.rp-head h2{margin:0;font-size:19px;font-weight:600;line-height:1.3;letter-spacing:0}
.rp-x{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:0;background:none;color:var(--ink-3);cursor:pointer;transition:color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.rp-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.rp-x:active{transform:scale(.94)}
.rp-sub{margin:0 0 16px;font-size:14.5px;line-height:1.45;color:var(--ink-2)}
.rp-form{display:flex;flex-direction:column;gap:12px}
.rp-kinds{display:flex;flex-wrap:wrap;gap:8px}
.rp-kinds button{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);font:inherit;font-size:14.5px;color:var(--ink-2);cursor:pointer;transition:color .15s,border-color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.rp-kinds button:hover{color:var(--ink-1)}
.rp-kinds button:active{transform:scale(.97)}
.rp-kinds button[aria-checked="true"]{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.7);background:rgba(var(--k-245-198-107,245,198,107),.09)}
.rp-kinds button:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
.rp-form textarea{width:100%;box-sizing:border-box;min-height:96px;resize:vertical;padding:12px 14px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:16px;line-height:1.45}
.rp-form textarea::placeholder{color:var(--ink-3)}
.rp-form textarea:focus-visible{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.7)}
.rp-inc{display:flex;align-items:center;gap:10px;min-height:44px;font-size:15px;color:var(--ink-1);cursor:pointer;margin-bottom:-8px}
.rp-inc input{width:18px;height:18px;margin:0;accent-color:var(--gold);flex:none}
.rp-what{display:block;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.rp-err{margin:0;font-size:14px;color:var(--rose)}
.rp-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:4px}
.rp-foot small{flex:1 1 180px;font-size:13.5px;color:var(--ink-3)}.rp-foot a{color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}
.rp-send{min-height:48px;padding:0 26px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.6);background:none;color:var(--gold);font:inherit;font-size:15.5px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.rp-panel .rp-send{background:var(--gold);border-color:var(--gold);color:#1d1408}
.rp-send:active{transform:scale(.97)}.rp-send:disabled{opacity:.6;cursor:default}
.rp-send:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}
@media (max-width:760px){
  .rp-scrim{align-items:flex-end;padding:0}
  .rp-panel{width:100%;max-height:calc(100% - 40px);border-radius:22px 22px 0 0;border-bottom:0;padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));transform:translateY(24px)}
  .rp-scrim.off .rp-panel{transform:translateY(24px)}
  .rp-send{flex:1 1 100%}
}
@media (prefers-reduced-motion:reduce){.rp-scrim,.rp-panel,.rp-menu{transition:none;animation:none}}
.cv-turn .approve-inline{display:none}
/* what she might say next: one tap sends it (only under the latest answer) */
.cv-next{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.cv-next button{font-size:13px;line-height:1.3;color:var(--ink-2);padding:7px 13px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);text-align:left;transition:color .2s,border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.cv-next button:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.cv-next button:active{transform:scale(.97)}
@media (max-width:760px){.cv-next{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding-right:16px}.cv-next::-webkit-scrollbar{display:none}.cv-next button{flex:none}}
/* guided making (public/js/makebrief.js): NOVA's few quick questions, next steps under what it made, ideas to start from.
   On a solid surface (never over the stars); a picked choice lights in ice, the one action (Make it) is gold */
.gm{margin:12px 0 4px;max-width:560px;padding:16px 18px 14px;border-radius:16px;background:rgba(13,14,22,.96);border:1px solid var(--hair-2);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 18px 40px -28px rgba(0,0,0,.85);display:grid;gap:18px;animation:gm-in .22s cubic-bezier(.23,1,.32,1) both}
.gm-q{display:grid;gap:8px}
.gm-qt{margin:0;font-size:15px;line-height:1.4;font-weight:500;color:var(--ink-1);text-align:start}
.gm-chips{display:flex;flex-wrap:wrap;gap:8px}
.gm-chip{min-height:40px;padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(246,239,230,.03);color:var(--ink-2);font:inherit;font-size:14px;line-height:1.3;text-align:start;cursor:pointer;transition:color .18s,border-color .18s,background-color .18s,transform .16s cubic-bezier(.23,1,.32,1)}
.gm-chip:active:not(:disabled){transform:scale(.97)}
.gm-chip[aria-pressed="true"]{color:var(--ink-1);border-color:rgba(92,225,255,.6);background:rgba(92,225,255,.10)}
.gm-other{border-style:dashed}
.gm-chip:focus-visible,.gm-go:focus-visible,.gm-skip:focus-visible,.gm-step:focus-visible,.gm-starter:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.gm-own{width:100%;min-height:44px;padding:10px 14px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(246,239,230,.04);color:var(--ink-1);font:inherit;font-size:15px}
.gm-own:focus{outline:2px solid rgba(92,225,255,.55);outline-offset:1px;border-color:transparent}
.gm-own[hidden]{display:none}
.gm-foot{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-top:2px}
.gm-go{min-height:44px;padding:10px 20px;border-radius:999px;border:1px solid var(--gold);background:var(--gold);color:var(--night);font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .18s,transform .16s cubic-bezier(.23,1,.32,1)}
.gm-go:disabled{opacity:.38;cursor:default}
.gm-go:active:not(:disabled){transform:scale(.97)}
.gm-skip{min-height:44px;padding:10px 16px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font:inherit;font-size:15px;cursor:pointer;transition:color .18s,border-color .18s,transform .16s cubic-bezier(.23,1,.32,1)}
.gm-skip:active:not(:disabled){transform:scale(.97)}
.gm-hint{margin:-10px 0 0;font-size:13px;line-height:1.4;color:var(--ink-3)}
.gm-hint:empty{display:none}
.gm-sent{margin:0;font-size:14px;color:var(--mint)}
.gm.gm-done .gm-chip:not([aria-pressed="true"]){opacity:.5}
.gm.gm-done .gm-chip{cursor:default}
.gm-next{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 2px}
.gm-step{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 13px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(246,239,230,.03);color:var(--ink-2);font:inherit;font-size:13px;line-height:1.3;text-decoration:none;cursor:pointer;transition:color .18s,border-color .18s,transform .16s cubic-bezier(.23,1,.32,1)}
.gm-step span{display:inline-flex}.gm-step svg{width:15px;height:15px}
.gm-step:active{transform:scale(.97)}
.gm-start{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:8px;margin:10px 0 4px;max-width:600px}
.gm-starter{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 14px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(13,14,22,.92);color:var(--ink-1);font:inherit;font-size:14px;line-height:1.3;text-align:start;cursor:pointer;transition:border-color .18s,background-color .18s,transform .16s cubic-bezier(.23,1,.32,1)}
.gm-starter:active{transform:scale(.98)}
.gm-sic{flex:none;display:inline-flex;color:var(--ice);opacity:.9}
.gm-start.gm-picked .gm-starter{opacity:.55;pointer-events:none}
.gm-float{position:fixed;z-index:70;padding:12px;border-radius:18px;background:rgba(8,10,22,.97);border:1px solid var(--hair-2);box-shadow:0 26px 70px -22px rgba(0,0,0,.85);opacity:0;transform:translateY(6px);transition:opacity .16s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.gm-float.in{opacity:1;transform:none}
.gm-fh{margin:2px 4px 8px;font-size:13px;color:var(--ink-3)}
.gm-float .gm-start{margin:0;max-width:none}
@media (hover:hover){.gm-chip:not(:disabled):hover,.gm-skip:not(:disabled):hover,.gm-step:hover{color:var(--ink-1);border-color:rgba(92,225,255,.4)}.gm-starter:hover{border-color:rgba(92,225,255,.4);background:rgba(20,22,32,.95)}.gm-go:not(:disabled):hover{opacity:.92}}
@keyframes gm-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gm{animation:none}.gm *,.gm-float,.gm-next *,.gm-start *{transition:none!important}}
@media (max-width:760px){.gm{padding:14px 14px 12px}.gm-start{grid-template-columns:repeat(2,minmax(0,1fr))}.gm-next{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline-end:-16px;padding-inline-end:16px}.gm-next::-webkit-scrollbar{display:none}.gm-step{flex:none}.gm-float{padding:10px}}
/* an action waiting for her OK, right in the conversation */
.cv-ok{border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);border-radius:14px;padding:14px 16px;background:rgba(var(--k-245-198-107,245,198,107),.05);font-size:14px;display:grid;gap:4px}
.cv-ok p{margin:0}
.cv-ok-k{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.cv-ok-t{color:var(--ink-1);font-size:15px;line-height:1.4}
.cv-ok-via,.cv-ok-c{color:var(--ink-3);font-size:13px;line-height:1.45}
.ap-prev{margin:10px 0 12px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-255-255-255,255,255,255),.04);border:1px solid rgba(var(--k-255-255-255,255,255,255),.08);display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px;line-height:1.45}
.ap-prev dt{color:var(--ink-3)}
.ap-prev dd{margin:0;color:var(--ink-1,var(--ink));overflow-wrap:anywhere;white-space:pre-wrap}
.ap-prev dd.long{grid-column:1/-1;max-height:220px;overflow:auto;padding-top:2px}
.approve .ap-prev{max-height:260px;overflow:auto;margin:-4px 0 14px}
.cv-ok-acts{display:flex;gap:8px;margin-top:8px}
.cv-ok-acts button{height:36px;padding:0 16px;border-radius:999px;font-size:13.5px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .2s}
.cv-ok-acts button:active{transform:scale(.97)}.cv-ok-acts button:disabled{opacity:.5}
.cv-ok-yes{background:var(--gold);color:var(--h-1a1206,#1a1206)}
.cv-ok-no{border:1px solid var(--hair-2);color:var(--ink-2)}
.cv-ok-res{margin-top:6px!important;color:var(--ink-2);font-size:13.5px}
.cv-ok.decided{border-color:var(--hair)}.cv-ok.decided.ok .cv-ok-res{color:var(--mint)}.cv-ok.decided.bad .cv-ok-res{color:var(--rose)}
/* the one quiet ask at the foot of the first email card (public/js/writing.js styleAsk): a line, two text buttons */
.cv-ask{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;margin-top:10px!important;padding-top:10px;border-top:1px solid var(--hair);color:var(--ink-3);font-size:13px;line-height:1.45;animation:cvAskIn .24s cubic-bezier(.23,1,.32,1) both;transition:opacity .2s ease-out}
.cv-ask-t{flex:1 1 220px;min-width:0}
.cv-ask-acts{display:flex;gap:2px;margin-inline-start:-8px}
.cv-ask-b{min-height:32px;padding:0 8px;border:0;border-radius:999px;background:none;color:var(--ink-2);font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cv-ask-b:first-child{color:var(--gold)}
.cv-ask-b:hover{background:rgba(var(--k-246-239-230,246,239,230),.06)}
.cv-ask-b:active{transform:scale(.97)}
.cv-ask-b:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cv-ask.busy .cv-ask-t{color:var(--ink-2)}
.cv-ask.out{opacity:0}
@keyframes cvAskIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.cv-ask{animation:none;transition:none}.cv-ask-b{transition:none}}
/* the card that takes her where she asked by talking (public/js/actionoffer.js): a solid surface with a gold rim, the
   setting or section as its title, its place in NOVA under it, one gold Open and a quiet Not now */
.cv-act{background:var(--sf-1,#181a22);max-width:520px;margin-top:10px;gap:2px;text-align:start;animation:mc2In .22s cubic-bezier(.23,1,.32,1) both}
.cv-act .cv-ok-t{font-weight:600}
.cv-act .cv-act-why{color:var(--ink-2)}
.cv-act .cv-ok-acts{flex-wrap:wrap}
/* batch 2 (public/js/talkcards.js): an agent to add or make, a section to look at before it's added, and the confirm
   card for removing something of hers or letting an agent act on its own. The same solid card; a section's own colour
   lights its orb, its rim and its words; removing is the one rose button */
.cv-talk-said{margin:6px 0 4px;padding:8px 12px;border-inline-start:2px solid rgba(var(--k-245-198-107,245,198,107),.55);border-radius:0 10px 10px 0;background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font-size:14px;line-height:1.5;overflow-wrap:anywhere}
[dir=rtl] .cv-talk-said{border-radius:10px 0 0 10px}
.cv-talk-needs{margin-top:4px!important;padding-inline-start:10px;border-inline-start:2px solid var(--hair-2);color:var(--ink-2)}
.cv-talk-sec{--sc:214,190,255;border-color:rgba(var(--sc),.42)}
.cv-talk-head{display:flex;align-items:center;gap:12px;margin:6px 0 2px}
.cv-talk-orb{flex:none;width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 38% 36%,rgb(var(--sc)) 0 22%,rgba(var(--sc),.45) 48%,rgba(var(--sc),0) 72%);box-shadow:0 0 16px rgba(var(--sc),.4)}
.cv-talk-name{flex:1;min-width:0;width:100%;padding:2px 0;border:0;border-bottom:1px dashed transparent;border-radius:0;background:none;color:var(--ink-1);font-family:var(--display);font-size:21px;line-height:1.25;transition:border-color .15s ease}
.cv-talk-name:hover{border-bottom-color:var(--hair-2)}.cv-talk-name:focus{outline:none;border-bottom-color:rgba(var(--sc),.75)}
.cv-talk-line{color:var(--ink-2)}
.cv-talk-words{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.cv-talk-words span{padding:3px 10px;border-radius:999px;border:1px solid rgba(var(--sc),.3);background:rgba(var(--sc),.07);color:var(--ink-2);font-size:12.5px;line-height:1.5}
.cv-talk .cv-ok-acts .cv-talk-quiet{border-color:transparent;color:var(--ink-3)}
.cv-talk .cv-ok-acts .cv-talk-quiet:hover{color:var(--ink-1)}
.cv-talk-ta{width:100%;margin-top:6px;padding:10px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);color:var(--ink-1);font:inherit;font-size:14.5px;line-height:1.5;resize:vertical}
.cv-talk-ta:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.cv-talk-confirm .cv-talk-prev{margin:8px 0 4px}
.cv-ok-acts .cv-talk-danger{background:rgba(var(--k-255-122-182,255,122,182),.14);border:1px solid rgba(var(--k-255-122-182,255,122,182),.55);color:var(--h-ffb3d6,#ffb3d6)}
.cv-talk-confirm:has(.cv-talk-danger){border-color:rgba(var(--k-255-122-182,255,122,182),.32)}
.cv-talk .cv-ok-res .link{margin-inline-start:4px}
.cv-talk-list{margin:10px 0 8px;padding:0;list-style:none;display:grid;gap:4px}
.cv-talk-list li{padding:6px 10px;border-radius:10px;background:rgba(var(--k-3-4-10,3,4,10),.45);border:1px solid var(--hair-2);color:var(--ink-2);font-size:13.5px;line-height:1.45;overflow-wrap:anywhere}
/* batch 4 (public/js/talkconfirm.js): a plan's short form, an invite's link, a message as it will go */
.cv-talk-form{display:grid;gap:12px;margin:12px 0 4px}
.cv-talk-field{display:grid;gap:6px;min-width:0}
.cv-talk-field>span{color:var(--ink-3);font-size:12.5px;line-height:1.3}
.cv-talk-input,.cv-talk-form select{width:100%;min-width:0;min-height:40px;padding:8px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);color:var(--ink-1);font:inherit;font-size:14.5px;line-height:1.4;transition:border-color .15s ease}
.cv-talk-input:focus,.cv-talk-form select:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.cv-talk-chips{display:flex;flex-wrap:wrap;gap:6px}
.cv-talk-chips button{min-height:36px;padding:6px 13px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cv-talk-chips button[aria-pressed=true]{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.12);color:var(--ink-1)}
.cv-talk-chips button:active:not(:disabled){transform:scale(.97)}
.cv-talk-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:420px){.cv-talk-pair{grid-template-columns:1fr}}
.cv-talk-new{display:grid;gap:8px}.cv-talk-new[hidden]{display:none}
.cv-talk-err{margin:4px 0 0;color:var(--h-ffb3d6,#ffb3d6);font-size:13px}.cv-talk-err:empty{display:none}
.cv-talk-linkrow{display:flex;align-items:center;gap:10px;margin-top:8px;min-width:0}
.cv-talk-link{flex:1;min-width:0;padding:8px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);color:var(--ink-1);font:inherit;font-size:13px;text-overflow:ellipsis}
/* Save to Drive on a document: one Drive saves at once, several ask which */
.drive-wrap{position:relative;display:inline-flex}
.drive-menu{position:absolute;right:0;bottom:calc(100% + 6px);z-index:5;display:grid;min-width:200px;padding:6px;border-radius:12px;border:1px solid var(--hair-2);background:var(--h-0d0f1a,#0d0f1a);box-shadow:0 12px 30px rgba(var(--k-0-0-0,0,0,0),.45)}
.drive-menu button{text-align:left;font-size:13px;color:var(--ink-2);padding:8px 10px;border-radius:8px}
.drive-menu button:hover{background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.rt.rt-done{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.45);text-decoration:none}
@media (max-width:760px){.file-card{flex-wrap:wrap}.file-card .m{flex-basis:calc(100% - 50px)}}
.cv-empty{text-align:center;color:var(--ink-3);font-size:14px;padding:40px 0}
/* back to the conversation from the mind: one quiet door under the greeting */
.cv-resume{position:absolute;left:50%;transform:translateX(-50%);z-index:5;width:max-content;white-space:nowrap;display:inline-flex;align-items:center;gap:9px;margin:0;background:rgba(var(--k-8-10-22,8,10,22),.72);height:34px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hair-2);font-size:12.5px;color:var(--ink-2);pointer-events:auto;transition:color .2s,border-color .2s,transform .16s cubic-bezier(.23,1,.32,1)}
.cv-resume:hover{color:var(--ink-1);border-color:rgba(var(--k-245-198-107,245,198,107),.5)}
.cv-resume:active{transform:translateX(-50%) scale(.97)}
.cv-resume i{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(var(--k-245-198-107,245,198,107),.6)}
.cv-resume small{color:var(--ink-3);font-size:11.5px}
.cv-resume[hidden]{display:none}
#stage:has(#convoResume:not([hidden])) .greet .status,#stage:has(#convoResume:not([hidden])) #dockHint{display:none}
#stage:has(.greet.talking) #convoResume,#stage.reading #convoResume,#stage.simple #convoResume{display:none}
@media (prefers-reduced-motion:reduce){.cv-mind,.cv-mind::after,.turn-work .pip,.turn-work .tw-dots i{animation:none!important}}
@media (max-width:760px){
  .convo{top:62px;bottom:96px;width:100vw;left:0;transform:translate(0,10px);padding:0 4px}
  #stage.reading .convo{transform:none}
  .convo::before{inset:-6px 6px 50px;border-radius:20px}
  /* on a phone the controls sit above the box, under her thumb; the thread has the rest of the screen */
  .cv-top{order:2;padding:8px 12px 0;min-height:0}
  .cv-scroll{order:1}
  .cv-back{height:36px;background:rgba(var(--k-8-10-22,8,10,22),.8)}
  .cv-acts{height:36px}
  .cv-new{color:var(--ink-2);height:30px;padding:0 11px;font-size:12.5px}
  .cv-scroll{padding:10px 14px 30px}
  .cv-thread{gap:26px}
  .cv-q{font-size:13.5px}
  .turn-a{font-size:16px;line-height:1.6}
  .turn-foot{opacity:1;gap:6px}.turn-foot .rt{padding:5px 10px;font-size:11px}
  .turn-foot .sources{width:100%;margin:2px 0 0;justify-content:flex-start}.turn-foot .sources .src-list{justify-content:flex-start}
  #stage.reading #fig{transform:translateY(-24vh) scale(.82);opacity:.4}
  #stage.reading header.chrome .life-entry span{display:none}
}

/* ---------- surfaces: the full-screen pages sit on a soft dark gray, and each group
   (a list, a set of projects, a band of agent work, a tile, a read-out column) is a raised panel of its own,
   so what belongs together reads together; scenes stay windows into space. NOVA has one look, dark, deep space
   (Katie, Oct 18). The html:root prefix keeps these rules at the weight they were written for. ---------- */
:root{--sf-0:#0f1016;--sf-1:#181a22;--sf-2:#1f222c;--sf-edge:rgba(var(--k-246-239-230,246,239,230),.09);--sf-edge-2:rgba(var(--k-246-239-230,246,239,230),.13)}
html:root :is(.hub,.life-detail.dash){--ink-3:rgba(246,239,230,.6);--hair:rgba(246,239,230,.085)}
html:root .hub{background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(var(--c),.06),transparent 70%),var(--sf-0)}
html:root .life-detail.dash{background:radial-gradient(1200px 520px at 50% -120px,rgba(var(--c),.1),transparent 70%),var(--sf-0)}
html:root :is(.hub-head,.life-detail.dash .ld-head){background:rgba(15,16,22,.92);border-bottom-color:var(--sf-edge)}
html:root :is(.hub,.life-detail.dash) .wt::before{background:linear-gradient(to top,rgba(15,16,22,.985) calc(100% - 32px),rgba(15,16,22,0))}
/* group headings: a step brighter than the details under them */
html:root :is(.hub,.life-detail.dash) :is(.ld-sec,.ld-h){color:rgba(246,239,230,.72)}
html:root .hub-body :is(.today>h4,.thead h4,.agx-band-h){color:var(--ink-1)}
/* the panels */
html:root .hub-body :is(.tlist,.pj-list,.agx-list){background:var(--sf-1);border:1px solid var(--sf-edge);border-radius:16px;padding:0 16px;box-shadow:0 1px 0 rgba(255,255,255,.02) inset,0 12px 28px -20px rgba(0,0,0,.7)}
html:root .hub-body :is(.tlist>:last-child,.pj-list>:last-child,.agx-list>:last-child){border-bottom:0}
html:root .hub-body .pj-row:first-child{border-top:0}
html:root .hub-body .pj-row.open{margin:0 -16px;padding:0 16px}
html:root .hub-body .pj-list>.pj-row:first-child.open{border-radius:15px 15px 0 0}
html:root .hub-body .pj-list>.pj-row:last-child.open{border-radius:0 0 15px 15px}
html:root .hub-body .tlist:empty{display:none}
html:root .hub-side{padding:16px 18px;border-radius:18px;background:var(--sf-1);border:1px solid var(--sf-edge)}
html:root .hub-body .tform{background:var(--sf-1);border-color:var(--sf-edge-2)}
html:root .hub-body .agx-next{background:radial-gradient(120% 140% at 0% 0%,rgba(var(--c),.13),rgba(var(--c),0) 60%),var(--sf-2)}
html:root :is(.hub,.life-detail.dash) .tile{background:var(--sf-1);border-color:var(--sf-edge);box-shadow:0 1px 0 rgba(255,255,255,.02) inset,0 12px 28px -20px rgba(0,0,0,.7)}
html:root :is(.hub,.life-detail.dash) .tile.fold:not(.open){background:var(--sf-1)}
html:root :is(.hub,.life-detail.dash) .tile.k-note{background:rgba(var(--c),.04)}
html:root :is(.hub,.life-detail.dash) .tl-h h4{color:var(--ink-1)}
html:root .hub-body .ag-reports{gap:0 18px}
html:root .hub-body .ag-reports .ag-agent{padding:18px 20px;margin:0 0 14px;border:1px solid var(--sf-edge);border-radius:18px;background:var(--sf-1)}
html:root .hub-body :is(.ag-out-rep,.ag-out-it){background:var(--sf-1)}
@media (max-width:760px){html:root .hub-body :is(.tlist,.pj-list,.agx-list){padding:0 12px}html:root .hub-body .pj-row.open{margin:0 -12px;padding:0 12px}}
/* Swiping what's waiting in Agents (public/js/agentswipe.js): the row follows her finger and says what letting go does.
   Yes toward the end of the line (gold approve or review, mint done); the other way: quiet Not now, then rose Remove. */
.sw{position:relative;overflow:hidden;isolation:isolate}
.sw-face{position:relative;z-index:1;touch-action:pan-y}
.sw-live>.sw-face{background:var(--sf-1,#181a22);border-radius:12px;box-shadow:0 0 0 1px var(--sf-edge-2,rgba(246,239,230,.13)),0 12px 28px -16px rgba(0,0,0,.8)}
.sw-under{position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:12px;overflow:hidden}
.sw-side{position:absolute;inset:0;display:flex;align-items:center;padding-inline:18px;opacity:0;--c:var(--k-245-198-107,245,198,107)}
.sw-side::before{content:"";position:absolute;inset:0;background:rgba(var(--c),.15);opacity:0;transition:opacity .16s ease-out}
.sw-yes{justify-content:flex-start;background:linear-gradient(90deg,rgba(var(--c),.22),rgba(var(--c),.06) 55%,transparent 85%)}
.sw-yes[data-kind=done]{--c:var(--k-111-242-196,111,242,196)}
.sw-no{display:grid;justify-items:end;--c:var(--k-246-239-230,246,239,230);background:linear-gradient(270deg,rgba(var(--c),.11),rgba(var(--c),.03) 55%,transparent 85%)}
html[dir=rtl] .sw-yes{background:linear-gradient(270deg,rgba(var(--c),.22),rgba(var(--c),.06) 55%,transparent 85%)}
html[dir=rtl] .sw-no{background:linear-gradient(90deg,rgba(var(--c),.11),rgba(var(--c),.03) 55%,transparent 85%)}
.sw-rm .sw-no{--c:var(--k-255-122-182,255,122,182)}
.sw-armed .sw-side::before{opacity:1}
.sw-lab{position:relative;display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:rgb(var(--c));white-space:nowrap}
.sw-lab svg{flex:none;transition:transform .18s cubic-bezier(.23,1,.32,1)}
.sw-armed .sw-lab svg{transform:scale(1.18)}
.sw-no .sw-lab{grid-area:1/1;transition:opacity .14s ease-out}
.sw-no .sw-later{color:var(--ink-1)}
.sw-remove{opacity:0}.sw-rm .sw-remove{opacity:1}.sw-rm .sw-later{opacity:0}
.sw-fade{opacity:.35;pointer-events:none;transition:opacity .2s ease-out}
.agx-frame{border-radius:12px}
.agx-face{position:relative}
.agx-quick{display:inline-flex;align-items:center;gap:6px}
.agx-quick svg{width:14px;height:14px;flex:none}
.agx-quick.k-done{border-color:rgba(var(--k-111-242-196,111,242,196),.45)}.agx-quick.k-done:hover{border-color:var(--mint);background:rgba(var(--k-111-242-196,111,242,196),.08)}
.agx-acts{display:none}
.agx-mini{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:12.5px;white-space:nowrap;transition:color .15s ease,border-color .15s ease,background-color .15s ease,transform .12s ease-out}
.agx-mini svg{width:14px;height:14px;flex:none}
.agx-mini:hover{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.34);background:rgba(var(--k-246-239-230,246,239,230),.04)}
.agx-mini.rm:hover{color:var(--rose);border-color:rgba(var(--k-255-122-182,255,122,182),.5);background:rgba(var(--k-255-122-182,255,122,182),.06)}
.agx-mini:active{transform:scale(.97)}.agx-mini:disabled{opacity:.5}
@media (hover:hover) and (pointer:fine){
  .agx-acts{display:flex;align-items:center;gap:6px;position:absolute;inset-inline-end:140px;top:50%;transform:translateY(-50%);padding-inline-start:36px;background:linear-gradient(270deg,rgba(var(--k-246-239-230,246,239,230),.035) 72%,transparent),linear-gradient(270deg,var(--sf-1,#181a22) 72%,transparent);opacity:0;pointer-events:none;transition:opacity .14s ease-out}
  html[dir=rtl] .agx-acts{background:linear-gradient(90deg,rgba(var(--k-246-239-230,246,239,230),.035) 72%,transparent),linear-gradient(90deg,var(--sf-1,#181a22) 72%,transparent)}
  .agx-row:hover .agx-acts,.agx-row:focus-within>.agx-frame .agx-acts{opacity:1;pointer-events:auto}
  .agx-hov{opacity:0;transition:opacity .14s ease-out,border-color .16s ease,background-color .16s ease,transform .12s ease-out}
  .agx-row:hover .agx-hov,.agx-row:focus-within .agx-hov{opacity:1}
  .agx-row:hover .agx-chev,.agx-row:focus-within .agx-chev{opacity:0}
}
@media (hover:none){.agx-hov{display:none}}
.agx-later{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--hair)}
.agx-later small{font-size:12px;color:var(--ink-3)}
.agx-head-t{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px}
.agx-head-t h3{margin:0}
.agx-review{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:9px 18px 9px 14px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-245-198-107,245,198,107),.08);color:var(--ink-1);font-size:13.5px;font-weight:500;transition:background-color .16s ease,border-color .16s ease,transform .12s ease-out}
.agx-review:hover{background:rgba(var(--k-245-198-107,245,198,107),.14);border-color:var(--gold)}
.agx-review:active{transform:scale(.97)}
.agx-stack{position:relative;width:18px;height:16px;flex:none}
.agx-stack i{position:absolute;inset-inline:0;height:9px;border-radius:3px;border:1.5px solid var(--gold);background:var(--sf-1,#181a22)}
.agx-stack i:nth-child(1){top:0;transform:scale(.7);opacity:.45}.agx-stack i:nth-child(2){top:3px;transform:scale(.85);opacity:.7}.agx-stack i:nth-child(3){top:7px}
.agx-tip{display:flex;align-items:center;gap:10px;margin:0;padding:8px 6px 8px 14px;border-radius:14px;background:rgba(var(--k-92-225-255,92,225,255),.06);border:1px solid rgba(var(--k-92-225-255,92,225,255),.2);font-size:13px;line-height:1.45;color:var(--ink-2)}
.agx-tip span{flex:1;min-width:0}
.agx-tip-x{flex:none;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);transition:color .15s ease,background-color .15s ease}
.agx-tip-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
/* One at a time: a solid card per item, the same swipes, a button for every choice */
.agx-deck{position:absolute;inset:0;z-index:24;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(var(--k-3-4-10,3,4,10),.8);opacity:0;transition:opacity .2s ease-out}
.agx-deck.on{opacity:1}.agx-deck.dk-out{opacity:0;transition-duration:.16s}
.dk-panel{position:relative;display:flex;flex-direction:column;width:min(680px,100%);height:min(860px,100%);background:var(--sf-1,#181a22);border:1px solid var(--sf-edge-2,rgba(246,239,230,.13));border-radius:24px;box-shadow:0 40px 90px -30px rgba(0,0,0,.85);outline:none;transform:translateY(14px);transition:transform .28s cubic-bezier(.23,1,.32,1)}
.agx-deck.on .dk-panel{transform:none}
.dk-top{display:flex;align-items:center;gap:14px;padding:14px 16px 10px}
.dk-close{display:inline-flex;align-items:center;gap:6px;padding:8px 13px 8px 10px;border-radius:999px;border:1px solid var(--hair);color:var(--ink-2);font-size:13px;transition:color .15s ease,border-color .15s ease,transform .12s ease-out}
.dk-close:hover{color:var(--ink-1);border-color:var(--hair-2)}.dk-close:active{transform:scale(.97)}
.dk-close svg{width:15px;height:15px}
.dk-prog{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:12px}
.dk-n{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.dk-bar{position:relative;flex:0 1 160px;height:3px;border-radius:3px;background:var(--hair);overflow:hidden}
.dk-bar i{position:absolute;inset:0;background:var(--gold);transform-origin:left center;transition:transform .32s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .dk-bar i{transform-origin:right center}
.dk-stage{position:relative;flex:1;min-height:0;display:flex;padding:4px 16px}
.dk-card{flex:1;min-height:0;display:flex;border-radius:20px;transition:transform .28s cubic-bezier(.23,1,.32,1),opacity .22s ease-out}
.dk-card.dk-in{transform:translateY(28px);opacity:0;transition:none}.dk-card.dk-in-above{transform:translateY(-28px);opacity:0;transition:none}
.dk-card .sw-under{border-radius:20px}
.dk-face{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;border-radius:20px;background:var(--sf-2,#1f222c);border:1px solid var(--sf-edge,rgba(246,239,230,.09));padding:22px 22px 18px}
.dk-card.sw-live>.dk-face{background:var(--sf-2,#1f222c);border-radius:20px}
.dk-c .agx-from{cursor:default}
.agx .dk-t,.dk-t{margin:12px 0 6px;font-family:var(--display);font-weight:400;font-size:clamp(23px,2.4vw,28px);line-height:1.2;letter-spacing:normal;color:var(--ink-1)}
.dk-c.k-approve .agx-ask{color:var(--h-f2c46b,#f2c46b)}.dk-c.k-decide .agx-ask{color:var(--h-e7a2c8,#e7a2c8)}.dk-c.k-idea .agx-ask{color:var(--h-9fc6ff,#9fc6ff)}.dk-c.k-fyi .agx-ask{color:var(--ink-3)}
.dk-c .ag-item{border:0;padding:6px 0 0;margin:0;background:none}
.dk-c .ag-it-head,.dk-c .ag-askline{display:none}
.dk-ok{display:grid;gap:7px;margin:14px 0 6px;padding:13px 15px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);background:rgba(var(--k-245-198-107,245,198,107),.05)}
.dk-ok div{display:grid;grid-template-columns:76px minmax(0,1fr);gap:12px;font-size:13.5px;line-height:1.4}
html[dir=rtl] :is(.dk-review,.agx-quick.k-review,.sw-yes[data-kind=review]) svg{transform:scaleX(-1)}
html[dir=rtl] .sw-armed .sw-yes[data-kind=review] svg{transform:scale(-1.18,1.18)}
.dk-ok dt{color:var(--ink-3)}.dk-ok dd{margin:0;color:var(--ink-1);overflow-wrap:anywhere}
.dk-ok p{margin:2px 0 0;font-size:13px;color:var(--ink-2)}
/* phones: every control here is at least 44px to the touch (gaps stay 8px) */
@media (pointer:coarse){.agx-mini,.dk-close,.agx-review{min-height:44px}.agx-mini{padding-inline:14px}.agx-tip-x{width:44px;height:44px}}
/* on her waiting list the card has one way to take it off: Remove (or Don't send) below, not a second link inside */
.agx-open .ag-skip,.agx-next .ag-skip,.dk-c .ag-skip{display:none}
.dk-here{box-shadow:0 0 0 2px var(--gold),0 0 0 7px rgba(var(--k-245-198-107,245,198,107),.16)}
.dk-acts{display:grid;grid-template-columns:1fr 1fr 1.5fr;gap:8px;padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px))}
.dk-b{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 14px;border-radius:14px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:14px;font-weight:500;transition:background-color .15s ease,border-color .15s ease,transform .12s ease-out}
.dk-b:active{transform:scale(.97)}
.dk-later:hover{background:rgba(var(--k-246-239-230,246,239,230),.05);border-color:rgba(var(--k-246-239-230,246,239,230),.32)}
.dk-remove{color:var(--ink-2)}.dk-remove svg{color:var(--rose)}.dk-remove:hover{color:var(--rose);border-color:rgba(var(--k-255-122-182,255,122,182),.5);background:rgba(var(--k-255-122-182,255,122,182),.06)}
.dk-yes.dk-done{background:rgba(var(--k-111-242-196,111,242,196),.13);border-color:rgba(var(--k-111-242-196,111,242,196),.55);color:var(--ink-1)}.dk-yes.dk-done svg{color:var(--mint)}.dk-yes.dk-done:hover{background:rgba(var(--k-111-242-196,111,242,196),.2)}
.dk-yes.dk-approve,.dk-yes.dk-review{background:rgba(var(--k-245-198-107,245,198,107),.15);border-color:rgba(var(--k-245-198-107,245,198,107),.6);color:var(--ink-1)}.dk-yes.dk-approve svg,.dk-yes.dk-review svg{color:var(--gold)}.dk-yes.dk-approve:hover,.dk-yes.dk-review:hover{background:rgba(var(--k-245-198-107,245,198,107),.22)}
.dk-keys{margin:0;padding:0 16px 14px;font-size:12px;color:var(--ink-3);text-align:center}
.dk-end{margin:auto;display:grid;justify-items:center;text-align:center;gap:6px;padding:40px 20px}
.dk-ring{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:var(--mint);border:1px solid rgba(var(--k-111-242-196,111,242,196),.45);box-shadow:0 0 42px -8px rgba(var(--k-111-242-196,111,242,196),.5)}
.dk-ring svg{width:28px;height:28px}
.dk-end h3{margin:12px 0 2px;font-family:var(--display);font-weight:400;font-size:30px;letter-spacing:normal;color:var(--ink-1)}
.dk-end p{margin:0;color:var(--ink-2);font-size:14px;max-width:34ch}.dk-end .dk-sub{color:var(--ink-3);font-size:13px}
#stage:has(.agx-deck) #toast{bottom:calc(env(safe-area-inset-bottom,0px) + 150px)}
@media (hover:none){.dk-keys{display:none}}
@media (max-width:760px){
  .agx-review{width:100%}
  .agx-deck{padding:0;align-items:stretch}
  .dk-panel{width:100%;height:100%;border-radius:0;border:0;padding-top:env(safe-area-inset-top,0px)}
  .dk-stage{padding:4px 12px}
  .dk-face{padding:18px 16px 16px}
  .dk-acts{grid-template-columns:1fr 1fr;padding-inline:12px}
  .dk-yes{grid-column:1/-1}
  .dk-keys{display:none}
}

/* ---------- her own sections: what NOVA knows there, in the groups it drew from it ---------- */
.sb{display:flex;flex-direction:column;gap:12px;margin:0 0 12px}
.sb-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.sb-g{gap:8px;padding:16px 16px 12px;border-color:rgba(var(--c),.16);background:radial-gradient(120% 90% at 0% 0%,rgba(var(--c),.07),rgba(var(--c),0) 55%),linear-gradient(180deg,rgba(var(--k-246-239-230,246,239,230),.035),rgba(var(--k-246-239-230,246,239,230),.012));transition:border-color .3s ease,box-shadow .3s ease}
.sb-g.sb-new{border-style:dashed;border-color:rgba(var(--c),.3)}
.sb-g.sb-lit{border-color:rgba(var(--c),.6);box-shadow:0 0 0 1px rgba(var(--c),.25),0 12px 40px -18px rgba(var(--c),.5)}
.sb-h{display:flex;align-items:center;gap:8px;min-height:30px}
.sb-t{margin:0;flex:0 1 auto;min-width:0;font-size:15px;font-weight:500;color:var(--ink-1);letter-spacing:.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sb-n{flex:none;min-width:22px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;font-size:11.5px;font-variant-numeric:tabular-nums;color:rgba(var(--c),1);background:rgba(var(--c),.12)}
.sb-h .sb-more{margin-left:auto}
.sb-more{flex:none;width:30px;height:30px;border-radius:999px;display:grid;place-items:center;font-size:16px;line-height:1;color:var(--ink-3);transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sb-more:hover,.sb-more[aria-expanded=true]{background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-1)}.sb-more:active{transform:scale(.94)}
.sb-more.sm{width:28px;height:28px;font-size:15px;opacity:.55}
.sb-row:hover .sb-more.sm,.sb-more.sm:focus-visible,.sb-more.sm[aria-expanded=true]{opacity:1}
@media (hover:none){.sb-more.sm{opacity:.8}}
.sb-line{margin:-2px 0 2px;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.sb-list{display:flex;flex-direction:column}
.sb-row{display:flex;align-items:center;gap:4px;border-top:1px solid var(--hair)}
.sb-row:first-child{border-top:0}
.sb-open{flex:1;min-width:0;display:flex;align-items:flex-start;gap:10px;padding:10px 4px 10px 0;text-align:left;border-radius:10px;transition:background-color .15s ease}
.sb-open:hover{background:rgba(var(--k-246-239-230,246,239,230),.03)}
.sb-dot{flex:none;width:6px;height:6px;margin-top:7px;border-radius:50%;background:rgba(var(--c),.85);box-shadow:0 0 8px rgba(var(--c),.6)}
.sb-row.k-task .sb-dot{background:transparent;border:1.5px solid rgba(var(--c),.85);box-shadow:none;width:8px;height:8px;margin-top:6px}
.sb-row.k-goal .sb-dot{background:var(--gold);box-shadow:0 0 8px rgba(var(--k-245-198-107,245,198,107),.6)}
.sb-row.k-chat .sb-dot{background:var(--ink-3);box-shadow:none}
.sb-row.k-document .sb-dot{border-radius:2px}
.sb-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.sb-m b{font-weight:400;font-size:13.5px;line-height:1.45;color:var(--ink-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sb-m small{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-foot{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;padding:2px 4px}
.sb-note{flex:1 1 260px;margin:0;font-size:12px;line-height:1.45;color:var(--ink-3)}
.sb-link{font-size:13px;color:var(--ink-2);padding:8px 2px;text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px;transition:color .15s ease}
.sb-link:hover{color:var(--ink-1)}.sb-link:disabled{opacity:.6}
.sb-acts{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.sb-empty{gap:10px;padding:22px 22px 18px;border-color:rgba(var(--c),.2);background:radial-gradient(90% 120% at 0% 0%,rgba(var(--c),.1),rgba(var(--c),0) 60%),linear-gradient(180deg,rgba(var(--k-246-239-230,246,239,230),.04),rgba(var(--k-246-239-230,246,239,230),.012))}
.sb-et{margin:0;font-family:var(--display);font-weight:400;font-size:22px;line-height:1.25;color:var(--ink-1)}
.sb-el{margin:0;max-width:62ch;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.sb-add{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:4px}
.sb-add textarea{width:100%;resize:vertical;min-height:58px;padding:10px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-1);font:inherit;font-size:14px;line-height:1.45}
.sb-add textarea:focus{outline:none;border-color:rgba(var(--c),.55)}
.sb-rn{flex:1;min-width:0;display:flex;gap:8px}
.sb-rn input{flex:1;min-width:0;padding:6px 10px;border-radius:10px;border:1px solid rgba(var(--c),.5);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:14px}
.sb-menu{position:fixed;z-index:70;min-width:200px;max-width:280px;max-height:min(360px,70vh);overflow:auto;padding:6px;border-radius:14px;background:var(--h-10131f,#10131f);border:1px solid var(--hair-2);box-shadow:0 18px 50px rgba(var(--k-0-0-0,0,0,0),.5);animation:sbMenu .16s cubic-bezier(.23,1,.32,1) both;transform-origin:top right}
@keyframes sbMenu{from{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}
.sb-mh{margin:6px 10px 4px;font-size:11.5px;color:var(--ink-3)}
.sb-mi{display:block;width:100%;text-align:left;padding:9px 10px;border-radius:9px;font-size:13.5px;color:var(--ink-1);transition:background-color .12s ease}
.sb-mi:hover,.sb-mi:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.07);outline:none}
.sb-mi.danger{color:var(--h-ffb4a2,#ffb4a2)}
@media (max-width:760px){
  .sb-grid{grid-template-columns:1fr}
  .sb-g{padding:14px 14px 10px}
  .sb-et{font-size:20px}
}
@media (prefers-reduced-motion:reduce){.sb-menu{animation:none}.sb-g{transition:none}}

/* Simple view: the scene at the top of a section sits on a plain panel, not a window into space */
html.simple .sc-hero{--space:none;--tint:none;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,0) 60%),#1c1e24;border-color:rgba(255,255,255,.07)}
html.simple .sc-hero::after{display:none}
/* ---------- NOVA Together: the people she shares with, and what each one sees ---------- */
.tg{--tg:255,170,200;max-width:1080px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.tg-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tg-pause{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--ink-3)}
.tg-pause.on{padding:8px 8px 8px 14px;border-radius:999px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.35);background:rgba(var(--k-245-198-107,245,198,107),.06);color:var(--ink-1)}
.tg-pause-t{margin-right:4px}
.tg-chip{appearance:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--hair-2);background:none;color:var(--ink-1);border-radius:999px;font:500 12.5px/1 var(--sans);padding:8px 13px;cursor:pointer;text-decoration:none;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.tg-chip:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.36)}
.tg-chip:active,.tg-pick:active,.tg-lv-b:active,.tg-circle:active,.tg-tick:active{transform:scale(.97)}
.tg-chip.gold{border-color:rgba(var(--k-245-198-107,245,198,107),.6);color:var(--gold)}
.tg-chip.quiet{color:var(--ink-3)}.tg-chip.danger{border-color:rgba(var(--k-255-122-182,255,122,182),.55);color:var(--rose)}
.tg-invite{flex:none}
.tg-empty{padding:34px 28px;border-radius:22px;border:1px solid var(--hair);background:radial-gradient(ellipse 60% 80% at 20% 0%,rgba(var(--tg),.08),transparent 70%);display:flex;flex-direction:column;gap:12px;align-items:flex-start;max-width:640px}
.tg-empty b{font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2}
.tg-empty p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.6;max-width:56ch}
.tg-people{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.tg-p{border-radius:20px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.015);transition:border-color .25s ease}
.tg-p.open{border-color:rgba(var(--cc),.28);background:radial-gradient(ellipse 50% 60% at 0% 0%,rgba(var(--cc),.07),transparent 70%)}
.tg-p-h{appearance:none;width:100%;display:flex;align-items:center;gap:14px;padding:14px 18px;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:20px}
.tg-orb{position:relative;flex:none;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;overflow:hidden;font-family:var(--display);font-size:17px;color:rgb(var(--cc));background:radial-gradient(circle at 35% 30%,rgba(var(--cc),.35),rgba(var(--cc),.06) 70%);box-shadow:0 0 0 1px rgba(var(--cc),.45),0 0 22px rgba(var(--cc),.18)}
.tg-orb img{width:100%;height:100%;object-fit:cover}
.tg-p-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.tg-p-t b{font-weight:500;font-size:15.5px}.tg-p-t small{font-size:12.5px;color:var(--ink-3)}
.tg-chev{width:9px;height:9px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg) translateY(-3px);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.tg-p.open .tg-chev{transform:rotate(-135deg) translateY(-1px)}
.tg-p-b{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;padding:4px 18px 18px}
.tg-side{display:flex;flex-direction:column;gap:12px;min-width:0}
.tg-side h5,.tg-preview h5,.tg-card h5{margin:0;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.tg-side.theirs{padding:16px;border-radius:16px;background:rgba(var(--k-4-5-12,4,5,12),.45);border:1px solid var(--hair)}
.tg-it{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-top:1px solid var(--hair)}
.tg-side.mine h5+.tg-it{border-top:0;padding-top:4px}
.tg-it-h{display:flex;align-items:baseline;gap:10px;font-size:14px}.tg-it-h b{font-weight:500}
.tg-mean{margin:0;font-size:12.5px;color:var(--ink-3);line-height:1.45}
.tg-it.lv-off .tg-mean{color:var(--ink-3);opacity:.8}
/* the level: four stops; the glow fills up to how much flows */
.tg-lv{--lv:0;position:relative;display:grid;grid-template-columns:repeat(4,1fr);border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.025);padding:3px;max-width:420px}
.tg-lv-glow{position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px) / 4);border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.08);transform:translateX(calc(var(--lv) * 100%));transition:transform .22s cubic-bezier(.23,1,.32,1),background-color .22s ease,box-shadow .22s ease;pointer-events:none}
.tg-it.lv-signal .tg-lv-glow,.tg-lv[style*="--lv: 1"] .tg-lv-glow{background:rgba(var(--k-92-225-255,92,225,255),.14);box-shadow:0 0 14px rgba(92,225,255,.12)}
.tg-it.lv-summary .tg-lv-glow,.tg-lv[style*="--lv: 2"] .tg-lv-glow{background:rgba(var(--k-92-225-255,92,225,255),.22);box-shadow:0 0 18px rgba(92,225,255,.2)}
.tg-it.lv-detail .tg-lv-glow,.tg-lv[style*="--lv: 3"] .tg-lv-glow{background:rgba(var(--k-92-225-255,92,225,255),.32);box-shadow:0 0 24px rgba(92,225,255,.3)}
.tg-lv-b{position:relative;appearance:none;border:0;background:none;color:var(--ink-3);font:500 12.5px/1 var(--sans);padding:9px 4px;border-radius:999px;cursor:pointer;transition:color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tg-lv-b[aria-checked="true"]{color:var(--ink-1)}
.tg-lv-b:disabled{opacity:.35;cursor:not-allowed}
.tg-it-more{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tg-sel{appearance:none;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);border-radius:999px;font:500 12.5px/1 var(--sans);padding:8px 28px 8px 13px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 11px) 52%;background-size:4px 4px;background-repeat:no-repeat;cursor:pointer}
.tg-sel option{background:#0d0f16;color:#f6efe6}
.tg-lists{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tg-pick{appearance:none;border:1px dashed var(--hair-2);background:none;color:var(--ink-2);border-radius:999px;font:500 12px/1 var(--sans);padding:7px 12px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,color .2s ease,background-color .2s ease}
.tg-who{margin:14px 0 4px}.tg-who .tg-pick{font-size:13px;padding:9px 14px}.tg-who-note{margin:0 0 12px}
.tg-pick.on{border-style:solid;border-color:rgba(var(--k-92-225-255,92,225,255),.55);color:var(--ink-1);background:rgba(var(--k-92-225-255,92,225,255),.08)}
.tg-hint{font-size:12px;color:var(--gold)}
.tg-quiet{margin:0;font-size:13px;color:var(--ink-3)}
.tg-paused{margin:0;font-size:14px;color:var(--ink-2)}
.tg-acts{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:12px;border-top:1px solid var(--hair)}
.tg-card .tg-acts{border-top:0;padding-top:4px}
.tg-confirm{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}
/* a calm confirm in place of a Remove button (public/js/confirm.js): one quiet line, Keep focused, Escape keeps */
.calm-confirm{display:inline-flex;align-items:center;gap:6px 8px;flex-wrap:wrap;font-size:13px;line-height:1.35;color:var(--ink-2);animation:cc-in .18s cubic-bezier(.23,1,.32,1)}
.calm-confirm .cc-q{color:var(--ink-1)}
.calm-confirm button{min-height:32px;padding:6px 14px;border-radius:999px;font:inherit;font-weight:600;cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.calm-confirm button:active{transform:scale(.97)}.calm-confirm button:disabled{opacity:.5;cursor:default}
.calm-confirm .cc-yes{background:rgba(255,122,182,.14);color:var(--rose);border:1px solid rgba(255,122,182,.32)}
.calm-confirm .cc-keep{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.at-nt-h .calm-confirm{margin-left:auto;justify-content:flex-end}.ds-form .calm-confirm{grid-column:1 / -1}
@keyframes cc-in{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.calm-confirm{animation:none}}
/* a shared view: what someone sees */
.tg-view{display:flex;flex-direction:column;gap:14px}
.tg-vi{display:flex;flex-direction:column;gap:8px}
.tg-vi+.tg-vi{padding-top:14px;border-top:1px solid var(--hair)}
.tg-vi-h{display:flex;align-items:baseline;gap:8px;font-size:13px}.tg-vi-h b{font-weight:500}
.tg-vi-lv{font-size:11px;color:var(--ink-3)}.tg-vi-end{font-size:11.5px;color:var(--gold)}
.tg-signal{margin:0;font-family:var(--display);font-size:22px;line-height:1.15;color:var(--ink-1)}
.tg-signal.busy{color:var(--gold)}
.tg-days,.tg-trips,.tg-items,.tg-will,.tg-tag,.tg-invites{list-style:none;margin:0;padding:0}
.tg-day{display:grid;grid-template-columns:92px 1fr;gap:4px 10px;padding:6px 0;font-size:12.5px;align-items:baseline}
.tg-day-n{color:var(--ink-2)}
.tg-blocks{display:flex;flex-wrap:wrap;gap:5px}
.tg-block{padding:4px 9px;border-radius:999px;background:rgba(var(--k-245-198-107,245,198,107),.1);color:var(--ink-1);font-variant-numeric:tabular-nums}
.tg-block em{font-style:normal;color:var(--ink-2)}
.tg-block.all{background:rgba(var(--k-245-198-107,245,198,107),.16)}
.tg-free{grid-column:2;font-size:12px;color:var(--mint)}
.tg-trip{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:6px 0;font-size:13.5px}
.tg-trip b{font-weight:500}.tg-trip span{color:var(--ink-3);font-size:12.5px}
.tg-trip.now b{color:var(--ice)}
.tg-leg{flex-basis:100%;font-size:12px;color:var(--ink-3)}
.tg-list{display:flex;flex-direction:column;gap:6px}
.tg-list>b{font-weight:500;font-size:13.5px}.tg-list-n{font-size:12px;color:var(--ink-3)}
.tg-item{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:13.5px;transition:opacity .2s ease}
.tg-item.done{opacity:.4;text-decoration:line-through}
.tg-dot{flex:none;width:5px;height:5px;border-radius:50%;background:var(--ink-3)}
.tg-tick{appearance:none;flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--hair-2);background:none;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.tg-tick:hover{border-color:var(--mint)}.tg-item.done .tg-tick{background:var(--mint);border-color:var(--mint)}
.tg-add{display:flex;gap:6px}
.tg-add input,.tg-in{flex:1;min-width:0;padding:10px 14px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-1);font:inherit;font-size:13.5px}
.tg-add-b{appearance:none;border:1px solid var(--hair-2);background:none;color:var(--ink-1);border-radius:12px;font:500 12.5px/1 var(--sans);padding:0 14px;cursor:pointer}
.tg-inv{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--hair);font-size:13.5px}
.tg-inv small{color:var(--ink-3);font-size:12px;margin-right:auto}
.tg-inv-dot{flex:none;width:8px;height:8px;border-radius:50%;background:rgb(var(--cc));box-shadow:0 0 10px rgba(var(--cc),.6)}
.tg-log summary{cursor:pointer;font-size:13px;color:var(--ink-2);padding:6px 0}
.tg-log ul{list-style:none;margin:6px 0 0;padding:0}
.tg-log li{display:flex;justify-content:space-between;gap:14px;padding:7px 0;border-bottom:1px solid var(--hair);font-size:12.5px;color:var(--ink-2)}
.tg-log small{flex:none;color:var(--ink-3)}
.tg-foot{margin:0;font-size:12px;color:var(--ink-3);line-height:1.6;max-width:72ch}
/* sheets: View as, invite, accept, tag events */
.tg-sheet{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:rgba(var(--k-2-3-8,2,3,8),.66);opacity:0;transition:opacity .2s ease}
.tg-sheet.on{opacity:1}
.tg-card{position:relative;width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:26px 24px 22px;border-radius:22px;background:var(--h-0d0f16,#0d0f16);border:1px solid var(--hair-2);box-shadow:0 30px 80px rgba(var(--k-0-0-0,0,0,0),.55);display:flex;flex-direction:column;gap:14px;transform:translateY(8px) scale(.98);transition:transform .24s cubic-bezier(.23,1,.32,1)}
.tg-sheet.on .tg-card{transform:none}
.tg-card h3{margin:0;padding-right:36px;font-family:var(--display);font-weight:400;font-size:24px;line-height:1.2}
.tg-lede{margin:-4px 0 0;font-size:13.5px;color:var(--ink-2);line-height:1.55}
.tg-x{position:absolute;top:14px;right:14px}
.tg-circles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tg-circle{appearance:none;display:grid;grid-template-columns:auto 1fr;gap:3px 10px;align-items:center;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid var(--hair);background:none;color:var(--ink-1);font:inherit;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.tg-circle b{font-weight:500;font-size:14px}.tg-circle small{grid-column:2;font-size:12px;color:var(--ink-3)}
.tg-circle[aria-checked="true"]{border-color:rgba(var(--cc),.6);background:rgba(var(--cc),.08)}
.tg-circle:disabled{opacity:.45;cursor:not-allowed}
.tg-preview{display:flex;flex-direction:column;gap:2px}
.tg-preview:empty{display:none}
.tg-preview h5{margin-bottom:6px}
.tg-link{display:flex;gap:8px}
.tg-qr{width:168px;padding:10px;border-radius:14px;background:#fff}.tg-qr svg{display:block;width:100%;height:auto}
.tg-will li{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid var(--hair)}
.tg-will b{font-weight:500;font-size:14px}.tg-will small{font-size:12.5px;color:var(--ink-3)}
.tg-safe{margin:0;padding:12px 14px;border-radius:12px;background:rgba(var(--k-111-242-196,111,242,196),.07);border:1px solid rgba(var(--k-111-242-196,111,242,196),.25);font-size:13px;color:var(--ink-1);line-height:1.5}
.tg-as-circle{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2)}
.tg-tag li{padding:3px 0}
.tg-tag .tg-pick{width:100%;display:flex;justify-content:space-between;gap:10px;text-align:left;border-radius:12px;padding:10px 12px}
.tg-tag .tg-pick small{color:var(--ink-3);flex:none}
.tg-as{padding:16px;border-radius:16px;background:rgba(var(--k-4-5-12,4,5,12),.45);border:1px solid var(--hair)}
/* Together › Joint money: one row that opens a sheet of her accounts (Katie, Oct 28 2026: no wall of dashed chips) */
.tg-acct{display:flex;flex-direction:column;gap:8px;width:100%}
.tg-acct-row{appearance:none;display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:0 14px 0 16px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(var(--k-4-5-12,4,5,12),.4);color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.tg-acct-row:hover{border-color:rgba(var(--k-92-225-255,92,225,255),.4)}
.tg-acct-row:active{transform:scale(.98)}
.tg-acct-l{flex:1;font-size:14.5px;font-weight:500}
.tg-acct-v{font-size:14px;color:rgb(var(--k-92-225-255,92,225,255))}.tg-acct-v.none{color:var(--ink-3)}
.tg-acct-c{font-size:20px;line-height:1;color:var(--ink-3)}
html[dir=rtl] .tg-acct-c{transform:scaleX(-1)}
.tg-acct-names{margin:0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.tg-ap{gap:12px}
.tg-ap-q{width:100%;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-4-5-12,4,5,12),.5);color:var(--ink-1);font:inherit;font-size:15px}
.tg-ap-q:focus-visible{outline:none;border-color:rgba(var(--k-92-225-255,92,225,255),.55)}
.tg-ap-list{display:flex;flex-direction:column;gap:18px;min-height:0;overflow:auto;overscroll-behavior:contain;margin:0 -6px;padding:0 6px}
.tg-ap-g{display:flex;flex-direction:column;gap:2px}
.tg-ap-g h4{margin:0 0 4px;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--ink-3)}
.tg-ap-g>.tg-quiet{margin:-2px 0 6px}
.tg-ap-bank{margin:8px 0 2px;font-size:13px;color:var(--ink-2)}
.tg-ap-row{position:relative;display:flex;align-items:center;gap:12px;min-height:48px;padding:6px 10px;border-radius:12px;cursor:pointer;transition:background-color .15s ease}
@media (hover:hover){.tg-ap-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}}
.tg-ap-row input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.tg-ap-tick{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--hair-2);display:grid;place-items:center;transition:background-color .15s ease,border-color .15s ease}
.tg-ap-tick::after{content:"";width:10px;height:6px;border:2px solid var(--h-0d0f16,#0d0f16);border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg) scale(.6);opacity:0;transition:opacity .15s ease,transform .15s cubic-bezier(.23,1,.32,1)}
.tg-ap-row.on .tg-ap-tick{background:rgb(var(--k-92-225-255,92,225,255));border-color:rgb(var(--k-92-225-255,92,225,255))}
.tg-ap-row.on .tg-ap-tick::after{opacity:1;transform:translateY(-1px) rotate(-45deg) scale(1)}
.tg-ap-row input:focus-visible+.tg-ap-tick{outline:2px solid rgba(var(--k-92-225-255,92,225,255),.7);outline-offset:2px}
.tg-ap-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.tg-ap-t b{font-weight:500;font-size:14.5px;overflow-wrap:anywhere;text-align:start}.tg-ap-t small{font-size:12.5px;color:var(--ink-3)}
.tg-ap-foot{display:flex;align-items:center;gap:12px;padding-top:10px;border-top:1px solid var(--hair)}
.tg-ap-n{flex:1;font-size:13.5px;color:var(--ink-2)}
.tg-ap-done{min-width:120px}
@media (max-width:760px){.tg-ap-done{flex:1}.tg-ap-n{flex:none}}
@media (prefers-reduced-motion:reduce){.tg-acct-row,.tg-ap-tick,.tg-ap-tick::after{transition:none}}
@media (max-width:760px){
  .tg-p-b{grid-template-columns:1fr;padding:0 14px 14px}
  .tg-p-h{padding:12px 14px}
  .tg-top{align-items:stretch}.tg-invite{width:100%}
  .tg-lv{max-width:none}
  .tg-day{grid-template-columns:1fr}.tg-free{grid-column:1}
  .tg-circles{grid-template-columns:1fr}
  .tg-sheet{place-items:end center;padding:0}
  .tg-card{width:100%;border-radius:22px 22px 0 0;max-height:92dvh;padding:22px 18px calc(18px + env(safe-area-inset-bottom))}
  .tg-link{flex-direction:column}
}
@media (prefers-reduced-motion:reduce){.tg-lv-glow,.tg-card,.tg-sheet,.tg-chev{transition:none}}

/* Together · wellness: the health switch, the words, the week */
.tg-health{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.015)}
.tg-health.on{border-color:rgba(var(--k-111-242-196,111,242,196),.3);background:radial-gradient(ellipse 50% 90% at 0% 50%,rgba(var(--k-111-242-196,111,242,196),.06),transparent 70%)}
.tg-switches{display:flex;flex-direction:column}
.tg-switches>.tg-health:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.tg-switches>.tg-health+.tg-health{border-top-left-radius:0;border-top-right-radius:0;border-top-color:var(--hair)}
.tg-phone.on{border-color:var(--hair);background:none}
.tg-health-t{display:flex;flex-direction:column;gap:3px;min-width:0}.tg-health-t b{font-weight:500;font-size:14.5px}.tg-health-t small{font-size:12.5px;color:var(--ink-3);line-height:1.45}
.tg-sw{appearance:none;flex:none;position:relative;width:46px;height:26px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.06);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}
.tg-sw i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.tg-sw[aria-checked="true"]{background:rgba(var(--k-111-242-196,111,242,196),.28);border-color:rgba(var(--k-111-242-196,111,242,196),.6)}
.tg-sw[aria-checked="true"] i{transform:translateX(20px);background:var(--mint)}
.tg-sw:active i{transform:scale(.92)}.tg-sw[aria-checked="true"]:active i{transform:translateX(20px) scale(.92)}
.tg-it.locked .tg-lv{opacity:.45}
.tg-pick.raw.on{border-color:rgba(var(--k-245-198-107,245,198,107),.55);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.tg-well{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.tg-wr{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:2px 12px;padding:7px 0;border-bottom:1px solid var(--hair)}
.tg-wr:last-child{border-bottom:0}
.tg-wr-n{font-size:12px;color:var(--ink-3)}
.tg-wr-w{grid-column:1;font-weight:500;font-size:14px;color:var(--mint)}
.tg-wr.low .tg-wr-w{color:var(--gold)}
.tg-wr-v{grid-column:1;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.tg-cheer{grid-column:2;grid-row:1 / span 3;align-self:center;appearance:none;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);background:none;color:var(--gold);border-radius:999px;font:500 12px/1 var(--sans);padding:7px 12px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.tg-cheer:active{transform:scale(.96)}.tg-cheer.sent{border-color:var(--hair-2);color:var(--ink-3)}
.tg-spark{display:grid;grid-template-columns:110px 1fr auto;align-items:end;gap:10px;padding:6px 0;font-size:12px}
.tg-spark-n{color:var(--ink-3);align-self:center}
.tg-spark-b{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;height:28px;align-items:end}
.tg-spark-b i{display:block;border-radius:4px 4px 0 0;background:rgba(var(--k-92-225-255,92,225,255),.55);min-height:2px}
.tg-spark-b i:last-child{background:var(--ice)}
.tg-spark-b i.none{background:var(--hair)}
.tg-spark-v{color:var(--ink-1);font-variant-numeric:tabular-nums;align-self:center;min-width:3ch;text-align:right}
@media (max-width:760px){.tg-health{padding:12px 14px}.tg-spark{grid-template-columns:92px 1fr auto}}
@media (prefers-reduced-motion:reduce){.tg-sw,.tg-sw i{transition:none}}

/* Together · plan together: goals, joint projects, and what two people keep together */
.tg-goals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.tg-goal{display:flex;flex-direction:column;gap:6px}
.tg-goal-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.tg-goal-h b{font-weight:500;font-size:14px}
.tg-word{flex:none;font-size:12px;color:var(--mint)}.tg-word.warn{color:var(--gold)}
.tg-bar{height:4px;border-radius:4px;background:rgba(var(--k-246-239-230,246,239,230),.08);overflow:hidden}
.tg-bar i{display:block;height:100%;border-radius:4px;background:var(--ice)}
.tg-next{font-size:12.5px;color:var(--ink-2)}
.tg-ms{list-style:none;margin:2px 0 0;padding:0;font-size:12.5px;color:var(--ink-2)}
.tg-ms li{padding:3px 0 3px 16px;position:relative}.tg-ms li::before{content:"";position:absolute;left:2px;top:9px;width:6px;height:6px;border-radius:50%;border:1px solid var(--ink-3)}
.tg-ms li.done{color:var(--ink-3);text-decoration:line-through}.tg-ms li.done::before{background:var(--mint);border-color:var(--mint)}
.tg-goal .tg-sel{align-self:flex-start}
/* the bridge between two people: a thin line of light that brightens when a shared streak is alive */
/* the Together life section: each person and everything they share with her, live; the Sharing panel is settings only */
.tg-life{gap:26px;padding-bottom:12px}
.tg-life-top{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.tg-lp{position:relative;display:flex;flex-direction:column;gap:16px;scroll-margin-top:84px}
.tg-lp::before{content:"";position:absolute;inset:-18px -24px auto -24px;height:160px;pointer-events:none;background:radial-gradient(ellipse 40% 100% at 0% 0%,rgba(var(--cc),.09),transparent 72%)}
.tg-lp+.tg-lp{padding-top:26px;border-top:1px solid var(--hair)}
.tg-lp.paused .tg-lp-b{opacity:.6}
.tg-lp-h{position:relative;display:flex;align-items:center;gap:14px}
.tg-lp-h .tg-p-t b{font-family:var(--display);font-weight:400;font-size:24px;line-height:1.15}
.tg-lp-h .tg-orb{width:48px;height:48px;font-size:19px}
.tg-lp-b{position:relative;display:flex;flex-direction:column;gap:22px}
.tg-lp-b .tg-side.theirs{padding:0;border:0;background:none}
/* what they share: two columns on a wide screen, each thing they share one block; "on the way" across the top */
.tg-lp-b .tg-view{display:block;column-count:2;column-gap:40px}
.tg-lp-b .tg-view>.tg-journey,.tg-lp-b .tg-view>.tg-quiet,.tg-lp-b .tg-view>.tg-paused{column-span:all;margin-bottom:22px}
.tg-lp-b .tg-vi{break-inside:avoid;padding:14px 0 24px;border-top:1px solid var(--hair)}
.tg-p-b.solo{grid-template-columns:minmax(0,1fr);max-width:680px}
.tg-foot-go{align-self:flex-start}
@media (max-width:900px){.tg-lp-b .tg-view{column-count:1}.tg-lp-b .tg-vi{padding-bottom:18px}}
@media (max-width:760px){.tg-lp-b{gap:18px}.tg-life-top{justify-content:flex-start}.tg-lp-h .tg-p-t b{font-size:21px}.tg-lp::before{inset:-14px -16px auto -16px}}
.tg-kept{grid-column:1/-1;position:relative;padding-top:16px;display:flex;flex-direction:column;gap:12px}
.tg-kept::before{content:"";position:absolute;top:0;left:8%;right:8%;height:1px;background:linear-gradient(90deg,transparent,rgba(var(--k-245-198-107,245,198,107),.55),rgba(var(--cc),.55),transparent);opacity:.55}
.tg-kept:has(.tg-streak.lit)::before{opacity:1;box-shadow:0 0 14px rgba(var(--cc),.35)}
.tg-kept h5{margin:0;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
/* notes between the two of them: a few lines, one-tap notes, her own words */
.tg-notes{display:flex;flex-direction:column;gap:10px;max-width:620px}
.tg-nl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tg-n{display:block;max-width:86%;padding:9px 13px 10px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03)}
.tg-n.new{animation:tg-n-in .22s cubic-bezier(.23,1,.32,1)}
.tg-n.tg-mine{align-self:flex-end;border-color:rgba(var(--cc,245,198,107),.32);background:rgba(var(--cc,245,198,107),.07)}
.tg-n.cheer p{color:var(--gold)}
.tg-n-w{display:block;font-size:11.5px;color:var(--ink-3);margin-bottom:3px}
.tg-n p{margin:0;font-size:14px;line-height:1.45;color:var(--ink-1);overflow-wrap:anywhere}
.tg-n-more{align-self:flex-start;font-size:12.5px;color:var(--ink-3)}
.tg-quick{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:1px}
.tg-quick::-webkit-scrollbar{display:none}
.tg-quick .tg-chip{flex:none}
.tg-nf{display:flex;gap:8px;align-items:center}
.tg-nf input{flex:1;min-width:0;min-height:42px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:inherit;font-size:14px}
.tg-nf input:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.6)}
.tg-kept .tg-cheer{grid-column:auto;grid-row:auto;align-self:flex-start;margin-top:8px}
@keyframes tg-n-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.tg-n{animation:none}}
.tg-kept-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.tg-streak,.tg-joint{position:relative;display:flex;gap:12px;padding:14px 34px 14px 14px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-4-5-12,4,5,12),.4)}
.tg-joint{flex-direction:column;gap:10px}
.tg-streak.lit{border-color:rgba(var(--k-245-198-107,245,198,107),.35)}
.tg-flame{--heat:0;flex:none;width:20px;height:30px;margin-top:2px;border-radius:50% 50% 50% 50% / 70% 70% 30% 30%;background:radial-gradient(ellipse 60% 70% at 50% 70%,rgba(255,238,200,.95),rgba(245,198,107,.85) 40%,rgba(255,122,182,.55) 75%,transparent);transform-origin:50% 100%;transform:scale(calc(.62 + var(--heat) * .38));filter:drop-shadow(0 0 calc(4px + var(--heat) * 12px) rgba(245,198,107,.55));opacity:calc(.35 + var(--heat) * .65)}
.tg-streak:not(.lit) .tg-flame{filter:grayscale(.8);opacity:.35}
.tg-streak-t{display:flex;flex-direction:column;gap:4px;min-width:0}.tg-streak-t b{font-weight:500;font-size:14px}.tg-streak-t small{font-size:12px;color:var(--ink-3)}
.tg-streak-n{font-family:var(--display);font-size:20px;line-height:1.1;color:var(--gold)}
.tg-streak:not(.lit) .tg-streak-n{color:var(--ink-2)}
.tg-today{display:flex;align-items:center;gap:5px}.tg-today i{width:7px;height:7px;border-radius:50%;border:1px solid var(--ink-3)}.tg-today i.on{background:var(--mint);border-color:var(--mint)}.tg-today span{margin-right:6px}
.tg-streak .tg-sel{margin-top:4px}
.tg-x-sm{position:absolute;top:8px;right:8px;appearance:none;width:24px;height:24px;border-radius:50%;border:0;background:none;color:var(--ink-3);font-size:15px;line-height:1;cursor:pointer}.tg-x-sm:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.tg-joint>b{font-weight:500;font-size:14px}
.tg-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tg-half{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--ink-3)}
.tg-half.me .tg-bar i{background:var(--gold)}.tg-half.them .tg-bar i{background:rgb(var(--cc))}
.tg-starts{display:flex;flex-wrap:wrap;gap:8px}
.tg-pool{position:relative;display:flex;flex-direction:column;gap:8px;padding:14px 34px 14px 14px;border-radius:16px;border:1px solid rgba(var(--k-111-242-196,111,242,196),.25);background:rgba(var(--k-4-5-12,4,5,12),.4)}
.tg-pool-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.tg-pool-h b{font-weight:500;font-size:14px}
.tg-pool-v{font-family:var(--display);font-size:20px;line-height:1.1;color:var(--mint);white-space:nowrap;font-variant-numeric:lining-nums tabular-nums}
.tg-pool .tg-bar i{background:var(--mint)}
.tg-pool-add,.tg-pool-new{display:flex;gap:8px;align-items:center}
.tg-pool-add input,.tg-pool-new input{flex:1;min-width:0;padding:8px 12px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font:inherit;font-size:13px}
.tg-pool-new input:last-child{flex:0 1 150px}
.tg-start{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:14px 16px;border-radius:16px;border:1px dashed var(--hair-2)}
.tg-start-h{font-weight:500;font-size:14px}
.tg-start>.tg-chip,.tg-join>.tg-chip{align-self:flex-start}
.tg-join{display:flex;flex-direction:column;gap:8px;margin-top:6px}
/* which habit counts: type to pick a routine, or name a new one (how often and when then show) */
.tg-habit{display:flex;flex-direction:column;gap:8px;min-width:0}
.tg-habit .tg-in{width:100%}
.tg-habit-new{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.tg-habit-new>small{flex-basis:100%}
.tg-habit-new .tg-time{flex:0 0 auto;width:auto;padding:7px 10px}
@media (max-width:760px){.tg-kept-row{grid-template-columns:1fr}}
/* Together on a phone: pausing stays one quiet line that scrolls, instead of breaking over two */
@media (max-width:760px){.tg-pause{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%;padding-right:22px;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}.tg-pause::-webkit-scrollbar{display:none}.tg-pause>*{flex:none}}
/* Together, play: nudges and friendly challenges */
.tg-p{scroll-margin-top:96px}
.tg-nudges{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.tg-nudge{position:relative;display:flex;align-items:center;gap:12px;padding:10px 40px 10px 14px;border-radius:14px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);background:linear-gradient(90deg,rgba(var(--k-245-198-107,245,198,107),.06),transparent 70%);font-size:13.5px;color:var(--ink-1)}
.tg-nudge>span{flex:1;min-width:0}
.tg-nudge-dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(var(--k-245-198-107,245,198,107),.7)}
.tg-nudge .tg-x-sm{top:50%;transform:translateY(-50%)}
.tg-chal{display:flex;flex-direction:column;gap:10px}
.tg-chal-h{display:flex;align-items:center;justify-content:space-between;gap:12px}.tg-chal-h .ld-sec{margin:0}
.tg-chal>.tg-quiet{max-width:62ch;line-height:1.5}
.tg-chal-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:10px}
.tg-ch{position:relative;min-width:0;display:flex;flex-direction:column;gap:12px;padding:14px 16px 16px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-4-5-12,4,5,12),.4)}
.tg-ch.done{opacity:.72}
.tg-ch-h{display:flex;align-items:baseline;gap:10px;padding-right:26px}.tg-ch-h b{font-weight:500;font-size:14.5px}.tg-ch-when{margin-left:auto;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.tg-ch-join{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.tg-ch-join .tg-habit{flex:1 1 220px}.tg-ch-join small{flex-basis:100%;font-size:12.5px;color:var(--ink-2);line-height:1.45}
.tg-ch-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tg-ch-r{display:grid;grid-template-columns:minmax(56px,90px) 1fr auto 8px;align-items:center;gap:10px;font-size:13px}
.tg-ch-r.waiting{grid-template-columns:minmax(56px,90px) 1fr}
.tg-ch-n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}.tg-ch-r.me .tg-ch-n{color:var(--ink-1)}
.tg-ch-bar{height:4px;border-radius:4px;background:rgba(var(--k-246-239-230,246,239,230),.08);overflow:hidden}
.tg-ch-bar i{display:block;height:100%;border-radius:4px;background:var(--ice);transform-origin:left;transition:transform .5s cubic-bezier(.23,1,.32,1)}
.tg-ch-r.me .tg-ch-bar i{background:var(--gold)}
.tg-ch-d{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.tg-ch-today{width:7px;height:7px;border-radius:50%;border:1px solid var(--ink-3)}.tg-ch-today.on{background:var(--mint);border-color:var(--mint)}
.tg-form{display:flex;flex-direction:column;gap:14px}
.tg-field{display:flex;flex-direction:column;gap:6px}.tg-field>span{font-size:12px;color:var(--ink-3)}
.tg-seg,.tg-who{display:flex;flex-wrap:wrap;gap:6px}
.tg-who .tg-pick.on{border-color:rgba(var(--cc),.6);background:rgba(var(--cc),.1)}
.tg-form .btn{align-self:flex-start}
@media (max-width:760px){.tg-chal-list{grid-template-columns:minmax(0,1fr)}.tg-nudge{flex-wrap:wrap}.tg-nudge>span{flex-basis:calc(100% - 20px)}.tg-nudge .tg-x-sm{top:8px;transform:none}.tg-form .btn{align-self:stretch}}

/* Together · joint money and "on my way" */
.tg-top-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tg-none{display:none}
.tg-safe-line{margin:0;font-size:13.5px;color:var(--ink-1);line-height:1.45}.tg-safe-line.warn{color:var(--gold)}.tg-safe-line.bad{color:var(--rose)}
.tg-money{list-style:none;margin:0;padding:0}
.tg-money li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--hair);font-size:13px;color:var(--ink-2)}
.tg-money li:last-child{border-bottom:0}.tg-money b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.tg-sub{display:block;margin-top:6px;font-size:12px;color:var(--ink-3)}
.tg-journey{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;border:1px solid rgba(var(--k-92-225-255,92,225,255),.35);background:rgba(var(--k-92-225-255,92,225,255),.06)}
.tg-journey>span{display:flex;flex-direction:column;gap:2px;flex:1;min-width:160px}.tg-journey b{font-weight:500;font-size:14px}.tg-journey small{font-size:12.5px;color:var(--ink-2)}
.tg-journey.arrived{border-color:rgba(var(--k-111-242-196,111,242,196),.4);background:rgba(var(--k-111-242-196,111,242,196),.06)}
.tg-live{position:relative;flex:none;width:9px;height:9px;border-radius:50%;background:var(--ice)}
.tg-live::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--ice);animation:tgLive 1.8s cubic-bezier(.23,1,.32,1) infinite}
.tg-journey.arrived .tg-live{background:var(--mint)}.tg-journey.arrived .tg-live::after{display:none}
.tg-journey small.tg-where{color:var(--ink-1)}
.tg-map{text-decoration:none;display:inline-flex;align-items:center}
.tg-live-pick{margin-top:2px;width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;border-radius:12px;padding:12px 14px;font-size:13px}
.tg-live-state{font-size:12px;color:var(--ink-3)}
.tg-live-pick.on .tg-live-state{color:var(--ink-1)}
@keyframes tgLive{from{transform:scale(1);opacity:.55}to{transform:scale(2.8);opacity:0}}
@media (prefers-reduced-motion:reduce){.tg-live::after{animation:none;display:none}}
/* NOVA Together: a trip shared one by one (public/js/tripshare.js, server/tripshare.js). Their side: one solid card per
   trip (never text on stars), ice for the trip, gold for what the airline changed, mint for landed and home, rose for a
   cancellation; the dot only pulses while the trip is under way. */
.ts-theirs{display:flex;flex-direction:column;gap:12px;column-span:all;margin-bottom:22px}
.ts-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:16px 18px;border-radius:18px;background:var(--sf-1,#181a22);border:1px solid rgba(var(--k-92-225-255,92,225,255),.24)}
.ts-card.home{border-color:rgba(var(--k-111-242-196,111,242,196),.3)}
.ts-card.bad{border-color:rgba(var(--k-255-122-182,255,122,182),.45)}
.ts-card-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ts-pulse{flex:none;width:9px;height:9px;border-radius:50%;background:rgba(var(--k-92-225-255,92,225,255),.45)}
.ts-card.home .ts-pulse{background:var(--mint)}
.ts-card-t{display:flex;flex-direction:column;gap:2px;flex:1;min-width:140px}
.ts-card-t b{font-size:17px;font-weight:600;line-height:1.3}.ts-card-t small{font-size:13px;color:var(--ink-3)}
.ts-state{font-size:13.5px;line-height:1.3;color:var(--ice);padding:6px 12px;border-radius:999px;background:rgba(var(--k-92-225-255,92,225,255),.08);border:1px solid rgba(var(--k-92-225-255,92,225,255),.26)}
.ts-state.chg{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08);border-color:rgba(var(--k-245-198-107,245,198,107),.32)}
.ts-card.home .ts-state{color:var(--mint);background:rgba(var(--k-111-242-196,111,242,196),.08);border-color:rgba(var(--k-111-242-196,111,242,196),.3)}
.ts-card.bad .ts-state{color:var(--rose);background:rgba(var(--k-255-122-182,255,122,182),.08);border-color:rgba(var(--k-255-122-182,255,122,182),.35)}
.ts-legs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ts-leg{display:flex;gap:11px;align-items:flex-start}
.ts-leg-k{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:12.5px;color:var(--ice);background:rgba(var(--k-92-225-255,92,225,255),.09)}
html[dir=rtl] .ts-leg-k.back{transform:scaleX(-1)} /* (→ is turned by the page's own RTL pass; ↩ is not) */
.ts-leg-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.ts-leg-t b{font-size:14.5px;font-weight:500;line-height:1.35;overflow-wrap:anywhere}.ts-leg-t small{font-size:13px;line-height:1.4;color:var(--ink-2)}
.ts-leg.bad small{color:var(--rose)}
.ts-leg-w{display:flex;flex-wrap:wrap;gap:2px 8px}.ts-leg-w .ts-chg{color:var(--gold)}
.ts-leg-w .ts-was{color:var(--ink-3);text-decoration-thickness:1px}
.ts-leg-w .ts-gate{color:var(--ink-1);font-weight:500}.ts-leg-w .ts-gate.chg{color:var(--gold)}
.ts-ups{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--hair);display:flex;flex-direction:column;gap:9px}
.ts-up{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:11px;align-items:baseline;font-size:14px;line-height:1.4}
.ts-up i{width:7px;height:7px;border-radius:50%;background:var(--ice);transform:translateY(-1px)}
.ts-up.news i{background:var(--gold)}.ts-up.done i{background:var(--mint)}.ts-up.bad i{background:var(--rose)}
.ts-up+.ts-up{color:var(--ink-2)}.ts-up+.ts-up i{opacity:.55}
.ts-up time{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.ts-note{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
/* her side: the picker (a dialog), the row on a trip in Places, and her trips on the Together page */
.ts-dlg .ts-lede{margin:2px 0 14px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.ts-what{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:16px;background:rgba(var(--k-246-239-230,246,239,230),.03);border:1px solid var(--hair)}
.ts-what-h{display:flex;align-items:baseline;justify-content:space-between;gap:4px 12px;flex-wrap:wrap}
.ts-what-h b{font-size:16px;font-weight:600}.ts-what-h span{font-size:13px;color:var(--ink-3)}
.ts-never{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ts-sub{margin:20px 0 8px;font:600 15px/1.3 var(--sans);color:var(--ink-1)}
.ts-people{display:flex;flex-direction:column;gap:8px}
.ts-person{appearance:none;display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:9px 14px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease,background-color .15s ease}
.ts-person:hover{border-color:var(--hair-2)}
.ts-person:active{transform:scale(.98)}
.ts-person[aria-checked="true"]{border-color:rgba(var(--k-245-198-107,245,198,107),.6);background:rgba(var(--k-245-198-107,245,198,107),.09)}
.ts-orb{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:15px;font-weight:600;color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.08)}
.ts-pn{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.ts-pn b{font-size:15px;font-weight:500}.ts-pn small{font-size:12.5px;color:var(--ink-3)}
.ts-check{flex:none;position:relative;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--hair-2);transition:background-color .15s ease,border-color .15s ease}
.ts-check::after{content:"";position:absolute;left:7px;top:3.5px;width:5px;height:10px;border:solid var(--gold-ink,#1d1408);border-width:0 2px 2px 0;transform:rotate(45deg) scale(.6);opacity:0;transition:opacity .15s ease,transform .15s cubic-bezier(.23,1,.32,1)}
.ts-person[aria-checked="true"] .ts-check{background:var(--gold);border-color:var(--gold)}
.ts-person[aria-checked="true"] .ts-check::after{opacity:1;transform:rotate(45deg)}
.ts-always{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding:12px 14px;border-radius:16px;border:1px solid var(--hair)}
.ts-always-t{display:flex;flex-direction:column;gap:3px;min-width:0}.ts-always-t b{font-size:14.5px;font-weight:500}.ts-always-t small{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.ts-foot{display:flex;justify-content:flex-end;gap:12px;margin-top:18px}
/* the action stays with what it does: pinned to the bottom of the sheet while the rows scroll under it */
.ts-dlg .ts-foot{position:sticky;bottom:-22px;z-index:1;margin:18px -24px -22px;padding:14px 24px 22px;background:var(--h-10121f,#10121f);border-top:1px solid var(--hair)}
.ts-go{min-height:48px;padding:0 26px;border-radius:999px;font-size:15px;font-weight:600}
.ts-go:disabled{opacity:.45;cursor:default}
.ts-go.ts-stop{background:none;color:var(--rose);border:1px solid rgba(var(--k-255-122-182,255,122,182),.5)}
.ts-row{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;margin-top:10px;font-size:13.5px;color:var(--ink-2)}
.ts-row .ts-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--ice)}
.ts-mine{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}
.ts-mine .ld-sec{margin:0}
.ts-mine-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ts-mine-i{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:16px;border:1px solid var(--hair);background:var(--sf-1,#181a22)}
.ts-mine-i.on{border-color:rgba(var(--k-92-225-255,92,225,255),.3)}
.ts-mine-t{display:flex;flex-direction:column;gap:2px;flex:1;min-width:160px}.ts-mine-t b{font-size:15px;font-weight:500}.ts-mine-t small{font-size:13px;color:var(--ink-3)}
.ts-mine-a{display:flex;gap:8px;flex-wrap:wrap}
.ts-mine-i .tg-chip{min-height:36px}
.ts-always-line{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.mbrief.e-trip{--e:92,225,255;background:var(--sf-1,#181a22);border-color:rgba(var(--k-92-225-255,92,225,255),.26)} /* solid: text never over stars */
@media (max-width:760px){.ts-dlg .ts-foot{bottom:calc(-20px - env(safe-area-inset-bottom,0px));margin:16px -20px calc(-20px - env(safe-area-inset-bottom,0px));padding:12px 20px calc(16px + env(safe-area-inset-bottom,0px))}.ts-card{padding:14px 15px}.ts-foot .ts-go{flex:1}.ts-state{order:3;flex-basis:auto}.ts-mine-i .tg-chip{min-height:44px}.ts-mine-i{align-items:flex-start;flex-direction:column}.ts-mine-t{min-width:0}}
@media (prefers-reduced-motion:reduce){.ts-person,.ts-check,.ts-check::after{transition:none}}
@media (max-width:760px){.tg-top-acts{width:100%}.tg-top-acts .tg-invite{flex:1}}
/* Notices sit just above wherever she types (the dock, a section's talk bar, the dashboard's), never over a header,
   a tab or the words she is reading. --dock-space is measured by app.js. */
#toast,#stage #toast{top:auto;bottom:calc(var(--toast-bottom,var(--dock-space,96px)) + 12px);width:max-content;text-align:center;line-height:1.35;transform:translate(-50%,12px);max-width:min(560px,calc(100vw - 32px));box-shadow:0 12px 32px -12px rgba(0,0,0,.6)}
#toast.on,#stage #toast.on{transform:translate(-50%,0)}
#toast.act{white-space:normal}
/* the ✕ on a note with an action (a challenge, a cheer): closes it before it times out; 44px to tap, a quiet ring to see */
#toast .toast-x{position:relative;flex:none;width:30px;height:30px;padding:0;margin-inline-start:-6px;display:grid;place-items:center;border:0;border-radius:50%;color:var(--ink-3);background:none;font-weight:400}
#toast .toast-x::before{content:"";position:absolute;inset:-7px}
#toast .toast-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.08)}
/* while a note shows over the box, the greeting, Shortcuts and "Back to our conversation" step up by its height, so it
   never sits over them (Oct 17 release check: phone, Largest text) */
#stage .greet{transition:opacity .2s ease-out,translate .25s var(--ease)}
#stage:has(#toast.on) .greet{translate:0 calc(var(--toast-h,0px) * -1)}
@media (prefers-reduced-motion:reduce){#stage .greet{transition:opacity .2s ease-out}}
#toast.act span{min-width:0;text-align:start}
/* the action keeps its words on one line (a phone's narrow note squeezed "Restart now" onto two); the message wraps instead */
#toast.act button:not(.toast-x){flex:none;white-space:nowrap}
@media (max-width:760px){.remind{bottom:calc(var(--dock-space,108px) + 12px)}}
@media (max-width:760px){#stage.remind-tall:has(.remind.on) #hello{opacity:0;transition:opacity .2s ease-out}} /* a long reminder on a phone: the greeting line steps aside (tasks.js) */
/* while NOVA writes: the words arrive in place of the work line, with a quiet caret that ends when the answer does */
.turn-work.quiet{display:none}
:is(#reply,.turn-a).streaming>p:last-child::after{content:"";display:inline-block;width:.42em;height:.95em;margin-left:.12em;vertical-align:-.1em;border-radius:1px;background:var(--gold);opacity:.75;animation:caret 1s steps(2,jump-none) infinite}
@keyframes caret{50%{opacity:.15}}
@media (prefers-reduced-motion:reduce){:is(#reply,.turn-a).streaming>p:last-child::after{animation:none}}
/* wide screens: Actions, Agents and Projects live in the panel on the left of the mind; the glance on the right
   doesn't repeat them (the same three numbers twice read as clutter) */
@media (min-width:761px){body:has(#rail .rail-work:not([hidden])) #glance .gl-work{display:none}}
/* Readability (Oct 10 sweep, raised Oct 18): labels read in sentence case at a size a phone can read (13.5px), never
   tiny letter-spaced capitals. Settings and the owner's monitor keep their own 12px labels. */
.cap-where,.rc-k,.rd-focus small,.rp-q small,.qst-k,.gl-k,.gl-sec h3,#memcard .mc-top,#memcard h5,.w-label,.ld-label,.ld-h,.life-up,.al-you,h4.al-g,.om-kind,.om-dept-nums small,.om-row-name small,.wt-you::before,.wt-ch b,.did-h,.did li b,.ld-sec,.td-date,.td-p small,.td-q small,.wx-week,.wx-p small,.b3-role,.rd-when,.rd-group h5,.ht-k,.ht-part small,.tl-tag,.tl-lane-h,.pl-k,.at-kicker,.at-next-h h3,.at-next-sub,.at-loyal h4,.at-tdl,.peek span,.rt,.feat-g,.ld-nextstep small,.ag-kind,.ag-from,.ag-out-stat small,.ag-askline b,.remind .who,.remind .who .tw,.mbrief-k,.st-k,.st-label,.st-lib h4,.prep-l b,.ov-kicker,.ov-panel h3,.ov-panel h4,.ov-group h4,.tkind,.ag-track-dl dt,.ov-door-t,.gl-door-t,.ab-kicker,.ab-q b,.ab-group legend,.ap-stat span,.pj-body h5,.pj-attach-b small,.pj-risk small,.pj-tl-lh,.at-rc-chips small,.ov-conn-k,.cm-key,.cm-panel h5,.cv-ok-k,.tg-side h5,.tg-preview h5,.tg-card h5,.tg-kept h5,.acard-eyebrow,.acard-kind,.at-months button,.paste-t,.paste-subj b,.code-copy,:is(#reply,.turn-a) th,.reader-body th{text-transform:none;letter-spacing:normal;font-size:13.5px}
.mon-dl dt,.mon-h,.mon-tr.head,.set-h,.spend-cap,.wsec-state{text-transform:none;letter-spacing:.01em;font-size:12px}
.world .w-top{text-transform:none;letter-spacing:.01em}
.st-unit{text-transform:none;letter-spacing:.01em;font-size:13px}

/* ---------- Readable over space (Oct 18 design sweep) ----------
   Words never sit straight on the stars: the hint under the message box, the chats beside a conversation and the
   names on the Connections map each get a solid surface. Talk takes the whole screen: both side panels step away
   and what NOVA is doing ("Listening…") sits centred under the mind, large enough to read across a room. */
.dock-hint{width:max-content;max-width:min(620px,calc(100vw - 32px));padding:6px 14px;border-radius:999px;background:rgba(var(--k-8-10-20,8,10,20),.92);border:1px solid var(--hair);font-size:12.5px;line-height:1.4;color:var(--ink-2);box-sizing:border-box;text-wrap:balance}
@media (max-width:520px){.dock-hint{border-radius:16px;padding:6px 14px}} /* two lines on a phone: a soft box, the words balanced (no lone last word) */
.ch-rail{padding:14px 8px 10px;border-radius:22px;background:rgba(var(--k-11-12-20,11,12,20),.96);border:1px solid var(--hair);box-shadow:0 18px 50px -30px rgba(0,0,0,.8)}
#stage:has(#dock.in-talk) .rail,#stage:has(#dock.in-talk) .glance,#stage:has(#dock.in-talk) .ch-rail,#stage:has(#dock.in-talk) .rail-tab,#stage:has(#dock.in-talk) #convoChats{opacity:0!important;pointer-events:none!important;transition:opacity .3s var(--ease)}
#stage:has(#dock.in-talk) .greet,#stage:has(#dock.in-talk) .greet .hello{text-align:center}
#stage:has(#dock.in-talk) .greet .sources{justify-content:center}
#stage:has(#dock.in-talk) #reply{text-align:start}
#stage:has(#dock.in-talk) .greet .status{display:inline-flex;align-items:center;gap:10px;margin-top:18px;min-height:0;padding:10px 20px;border-radius:999px;background:rgba(var(--k-8-10-20,8,10,20),.92);border:1px solid rgba(var(--k-92-225-255,92,225,255),.28);font-size:17px;line-height:1.3;color:var(--ink-1)}
#stage:has(#dock.in-talk) .greet .status .pip{margin:0;width:8px;height:8px}
#stage:has(#dock.speaking) .greet .status{border-color:rgba(var(--k-245-198-107,245,198,107),.4)}
#stage:has(#dock.speaking) .greet .status .pip{background:var(--gold)}
/* Katie, Nov 1: the thinking orb shows only while NOVA thinks or loads, as part of the chat. While she talks, the bar's
   own listening state says "I'm listening" (no second pill in the middle of the screen); the pill comes back only
   while NOVA works on what she said. On home outside Talk, a listening or idle line carries no orb. */
#stage:has(#dock.in-talk:not([data-talk="thinking"]):not([data-talk="working"])) .greet .status{display:none}
#stage:is([data-state="idle"],[data-state="listening"],[data-state="complete"]) .greet .status .orb{display:none}
/* Katie, Nov 1: while she talks, home keeps its white headline (the one dynamic line) until her words and NOVA's
   answer arrive; the small gold letter-spaced greeting doesn't take its place */
#stage:has(#dock.in-talk) .greet.talking>.hello{display:none}
#stage:has(#dock.in-talk) .greet.talking:has(#said:empty):has(#reply:empty) h1{display:block}
#stage:has(.remind.on) .greet.talking h1{opacity:0;transition:opacity .2s ease-out} /* a reminder over it: the line steps aside, as the greeting does */
.cm-svg rect.cm-pill{fill:rgba(var(--k-9-11-20,9,11,20),.94)!important;stroke:rgba(var(--k-246-239-230,246,239,230),.14)!important;stroke-width:1px!important;paint-order:normal}
.cm-svg text.cm-onpill{stroke:none;paint-order:normal}
.cm-svg{direction:ltr} /* the map places each name by its left or right edge (text-anchor): in Arabic an inherited right-to-left flips that and the names land on their planets */
.cm-label,.cm-n.agent .cm-label{font-size:12.5px}
.cm-alabel,.cm-ashort{font-size:12.5px}
.cm-ctx{font-size:12.5px;letter-spacing:normal}
.cm-stage>.cm-key{padding:14px 64px 0 14px;gap:8px;font-size:12.5px;justify-items:start;align-items:start}
.cm-stage>.cm-key span{padding:4px 11px;border-radius:999px;background:rgba(var(--k-9-11-20,9,11,20),.94);border:1px solid var(--hair)}

/* ---------- Simple view (Customize › Look & language; public/js/simple.js) ----------
   Katie, Oct 16: a plain view without the fluff, like her Claude screen. No mind and no space (presence.js draws
   nothing): a quiet night surface, the conversation in the middle, and a sidebar of chats and NOVA's places. */
:root{--sv-w:264px;--sv-bg:#0b0c12;--sv-side:#0e0f17}
html.simple body{background:var(--sv-bg)}
#stage.simple{background:var(--sv-bg)}
#stage.simple #nebula,#stage.simple #bg,#stage.simple #fig,#stage.simple .key,#stage.simple #anchors,#stage.simple .now-core,#stage.simple #tip,#stage.simple #memcard,
#stage.simple .greet,#stage.simple .glance,#stage.simple .rail,#stage.simple .ch-rail,#stage.simple .dock-hint,#stage.simple .cv-back,#stage.simple .cv-acts,
#stage.simple header.chrome .brand>:not(.menu),#stage.simple #clock,#stage.simple #sheetBrain{display:none!important}
.sv-nav{position:fixed;left:0;top:0;bottom:0;width:var(--sv-w);z-index:20;display:flex;flex-direction:column;gap:2px;padding:calc(14px + env(safe-area-inset-top,0px)) 10px calc(12px + env(safe-area-inset-bottom,0px));background:var(--sv-side);border-right:1px solid var(--hair)}
.sv-nav[hidden]{display:none}
.sv-top{padding:4px 8px 14px}
.sv-brand{display:block;height:24px;border-radius:6px}.sv-brand .wordmark{display:block;height:100%;width:auto}
.sv-group{display:flex;flex-direction:column;gap:1px}
.sv-group+.sv-group{margin-top:12px}
.sv-row{display:flex;align-items:center;gap:11px;width:100%;min-height:36px;padding:0 10px;border-radius:9px;text-align:left;font-size:13.5px;color:var(--ink-2);transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.sv-row svg{flex:none;color:var(--ink-3);transition:color .15s ease}
.sv-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.05);color:var(--ink-1)}.sv-row:hover svg{color:var(--ink-2)}
.sv-row:active{transform:scale(.98)}
.sv-row>span:not(.bk-meta){flex:1;min-width:0;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* the same numbers as Full view's menu (public/js/buckets.js), quieter: a count in grey, To-dos waiting in gold */
.sv-row .bk-meta{margin-inline-start:auto;flex:none;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.sv-row .bk-meta.bk-n{min-width:20px;height:20px;padding:0 6px;display:inline-grid;place-items:center;border-radius:999px;font-weight:600}
.sv-row[data-k="todos"] .bk-meta.bk-n{color:#1d1408;background:var(--gold)}
.sv-row:focus-visible,.sv-me:focus-visible,.sv-full:focus-visible{outline:1.5px solid var(--gold);outline-offset:-1px}
.sv-new{color:var(--ink-1);font-weight:500}
.sv-new svg{width:22px;height:22px;padding:4px;margin-left:-3px;border-radius:50%;color:#1a1306;background:var(--gold)}
.sv-new:hover svg{color:#1a1306}
.sv-chats{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--hair)}
.sv-chats .ch-rnew{display:none}
.sv-chats .ch-rhead{padding:0 6px 0 10px}
.sv-chats .ch-rsearch{margin:0 2px}
.sv-foot{display:flex;align-items:center;gap:6px;padding-top:10px;border-top:1px solid var(--hair)}
.sv-me{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:10px;text-align:left;transition:background-color .15s ease}
.sv-me:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}
.sv-pic{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-size:15px;color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.45)}
.sv-who{min-width:0;display:flex;flex-direction:column;line-height:1.25}.sv-who b{font-size:13px;font-weight:500;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sv-who small{font-size:11.5px;color:var(--ink-3)}
.sv-full{flex:none;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:999px;border:1px solid var(--hair);font-size:11.5px;color:var(--ink-3);transition:color .15s ease,border-color .15s ease}
.sv-full:hover{color:var(--ink-1);border-color:var(--hair-2)}
.sv-scrim{position:fixed;inset:0;z-index:19;background:rgba(var(--k-0-0-0,0,0,0),.55)}.sv-scrim[hidden]{display:none}
/* the conversation and the box, centred in the space beside the sidebar */
#stage.simple .convo{left:calc(50% + var(--sv-w) / 2);top:calc(70px + env(safe-area-inset-top,0px));bottom:calc(112px + var(--dock-grow,0px) + env(safe-area-inset-bottom,0px))!important;width:min(760px,calc(100vw - var(--sv-w) - 56px));transition:none}
#stage.simple .convo::before{display:none}
/* talking: the words she says and NOVA's answer show in the greeting panel, as in the full view, over a quiet page */
#stage.simple:has(#dock.in-talk) .greet{display:block!important;left:calc(50% + var(--sv-w) / 2);opacity:1!important;pointer-events:auto!important}
#stage.simple:has(#dock.in-talk) .convo{visibility:hidden}
/* Arabic page, English words (her emails, NOVA answering in English, her own question): each paragraph takes the
   direction of its own first letter, so "Hi Bob," never reads ",Hi Bob" and English lines start on the left */
html[dir=rtl] .cv-thread :is(p,li,h1,h2,h3,h4,h5,blockquote,td,th,.cv-q,.paste-b,.paste-subj>span,.paste-t){unicode-bidi:plaintext;text-align:start}
@media (min-width:901px){html[dir=rtl] #stage.simple:has(#dock.in-talk) .greet{left:calc(50% - var(--sv-w) / 2)}} /* the sidebar is on the right in Arabic */
#stage.simple .cv-top{min-height:0;padding:0 8px}
#stage.simple #dock{top:auto!important;bottom:calc(28px + env(safe-area-inset-bottom,0px));left:calc(50% + var(--sv-w) / 2);width:min(720px,calc(100vw - var(--sv-w) - 56px));background:var(--sv-side);border-color:var(--hair-2)}
#stage.simple header.chrome{left:var(--sv-w)}
html.simple .wt-bar{background:var(--sv-side);border-color:var(--hair-2)}
.sv-hello{height:100%;min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:0 16px 8vh}
.sv-hello[hidden]{display:none}
.sv-hi{margin:0;font-size:14px;color:var(--ink-3)}
.sv-ask{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(28px,3.4vw,40px);line-height:1.1;color:var(--ink-1);text-wrap:balance}
@media (min-width:901px){
  #stage.simple #menu{display:none!important}
  /* NOVA's pages open beside the sidebar, so it stays in reach (Projects, Agents, the dashboard, the side menu) */
  #stage.simple .hub,#stage.simple .overview{left:var(--sv-w)}
  /* Simple view: Customize and Your life open as a full page in the main area (one exit: ×), not Full view's side panel */
  #stage.simple #sheet{left:var(--sv-w);right:0;width:auto;border-right:0;background:var(--sv-bg);transform:none;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility 0s linear .2s}
  #stage.simple #sheet.on{opacity:1;visibility:visible;transition:opacity .2s ease}
  html[dir=rtl] #stage.simple #sheet{left:0;right:var(--sv-w);border-left:0;transform:none}
  #stage.simple #sheet .sheet-head .wordmark,#stage.simple #sheetMenu{display:none}
  #stage.simple #sheet .sheet-head{position:absolute;top:22px;inset-inline-end:24px;padding:0;z-index:2}
  #stage.simple #sheet .sheet-title{padding:30px max(24px,calc((100% - 680px) / 2)) 16px}
  #stage.simple #sheet .sheet-body{padding:12px max(24px,calc((100% - 680px) / 2)) 56px}
  html.simple .overlay{left:var(--sv-w)}
  #stage.simple #toast{left:calc(50% + var(--sv-w) / 2)}
}
/* a drawer that's open sits above NOVA's notes, so nothing covers her chats */
#stage.sv-open #toast{opacity:0!important;pointer-events:none!important}
/* a phone: the sidebar is a drawer from the left, opened by the menu button */
@media (max-width:900px){
  .sv-nav{width:min(300px,86vw);transform:translateX(-102%);transition:transform .3s cubic-bezier(.32,.72,0,1);box-shadow:none}
  #stage.sv-open .sv-nav{transform:none;box-shadow:24px 0 60px -20px rgba(var(--k-0-0-0,0,0,0),.7)}
  #stage.simple header.chrome{left:0}
  #stage.simple .convo{left:0;width:100vw;top:calc(60px + env(safe-area-inset-top,0px));bottom:calc(92px + var(--dock-grow,0px) + env(safe-area-inset-bottom,0px))!important;transform:none}
  #stage.simple #dock{left:50%;width:calc(100vw - 24px);bottom:calc(14px + env(safe-area-inset-bottom,0px))}
  #stage.simple:has(#dock.in-talk) .greet{left:50%}
  .sv-ask{font-size:28px}
}
/* Simple view's sheets (Files, Scheduled…): a solid panel, nothing of the page shows through, and it ends above the
   message box so its last button never sits under Talk */
html.simple .overlay>.panel{background:var(--sv-side);max-height:100%}
html.simple .overlay{padding-bottom:calc(28px + 66px + 12px + var(--dock-grow,0px) + env(safe-area-inset-bottom,0px))}
@media (max-width:900px){
  html.simple .overlay{align-items:stretch;padding:calc(12px + env(safe-area-inset-top,0px)) 12px calc(14px + 66px + 10px + var(--dock-grow,0px) + env(safe-area-inset-bottom,0px))}
  html.simple .overlay>.panel{max-height:none;padding:20px 18px 22px;border-radius:20px}
}
html[dir=rtl] .sv-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--hair)}
html[dir=rtl] #stage.simple .convo,html[dir=rtl] #stage.simple #dock{left:calc(50% - var(--sv-w) / 2)}
html[dir=rtl] #stage.simple header.chrome{left:0;right:var(--sv-w)}
/* Arabic, Simple view: the side menu is on the right, so a section's page ends where the menu starts (the Full
   view's rail room on the left isn't needed). Opening a section by name lands here directly now, so it shows. */
@media (min-width:901px){html[dir=rtl] #stage.simple.in-world .life-detail.dash{right:var(--sv-w);--padX:max(28px,calc((100vw - var(--sv-w) - 1180px) / 2));--padL:var(--padX)}}
@media (max-width:900px){html[dir=rtl] .sv-nav{transform:translateX(102%)}html[dir=rtl] #stage.sv-open .sv-nav{transform:none}html[dir=rtl] #stage.simple .convo{left:0}html[dir=rtl] #stage.simple #dock{left:50%}html[dir=rtl] #stage.simple header.chrome{right:0}}
/* Simple view on a tablet upright (601–900px, the side menu a drawer): the conversation and the box keep a readable
   column in the middle instead of running edge to edge like a phone's */
@media (min-width:601px) and (max-width:900px){
  #stage.simple .convo,html[dir=rtl] #stage.simple .convo{left:max(0px,calc(50% - 350px));width:min(700px,100vw)}
  #stage.simple #dock{width:min(680px,calc(100vw - 24px))}
}
@media (min-width:901px){html[dir=rtl] #stage.simple .hub,html[dir=rtl] #stage.simple .overview{left:0;right:var(--sv-w)}html[dir=rtl] #stage.simple #sheet{left:0;right:var(--sv-w);width:auto;transform:none}html[dir=rtl].simple .overlay{left:0;right:var(--sv-w)}html[dir=rtl] #stage.simple #toast{left:calc(50% - var(--sv-w) / 2)}}
@media (prefers-reduced-motion:reduce){.sv-nav{transition:none}}
.look-sw.sw-full i:last-child{display:none}
.look-sw.sw-full i:first-child{left:16px;top:10px;width:14px;height:14px}
.look-sw.sw-simple{background:#0b0c12}
.look-sw.sw-simple i:first-child{left:0;top:0;bottom:0;width:13px;height:auto;border-radius:0;background:#14151e;border-right:1px solid rgba(246,239,230,.14)}
.look-sw.sw-simple i:last-child{left:18px;right:6px;top:auto;bottom:6px;width:auto;height:6px;border-radius:999px;background:#1a1b25}
/* Files: what NOVA made */
/* NOVA · Code (public/js/code.js): a coding agent in a folder on this computer, every step shown. One solid surface,
   the strip (folder, agent, mode) above, the steps in the middle, the box at the foot. Cyan is the agent thinking and
   looking, gold is a change to her files and her own Run, mint is finished, rose is what it couldn't do. */
.panel.cd-panel{background:var(--h-0b0c15,#0b0c15);width:min(940px,100%);height:min(88vh,860px);max-height:none;display:flex;flex-direction:column;overflow:hidden;padding:22px 24px 18px;--cd-sf:rgba(var(--k-246-239-230,246,239,230),.035);--cd-sf2:rgba(var(--k-246-239-230,246,239,230),.06)}
.cd-head{align-items:flex-start;margin-bottom:14px}
.cd-head .lead{margin:6px 0 0;max-width:52ch}
.cd-htools{display:flex;align-items:center;gap:6px;flex:none}
.cd-ib{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hair);transition:background-color .16s cubic-bezier(.23,1,.32,1),color .16s,transform .12s cubic-bezier(.23,1,.32,1)}
.cd-ib:hover{color:var(--ink-1);background:var(--cd-sf2)}
.cd-ib:active{transform:scale(.96)}
.cd-ib[aria-expanded="true"]{color:var(--ink-1);background:var(--cd-sf2)}
.cd-hist{margin:0 0 12px;padding:6px;border:1px solid var(--hair);border-radius:16px;background:var(--cd-sf);max-height:280px;overflow:auto}
.cd-hist ul{list-style:none;margin:0;padding:0}
.cd-hist li{display:flex;align-items:center;gap:4px}
.cd-hrow{flex:1;min-width:0;text-align:start;padding:9px 12px;border-radius:11px;display:flex;flex-direction:column;gap:2px}
.cd-hrow:hover,.cd-hrow.on{background:var(--cd-sf2)}
.cd-hrow b{font-weight:500;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-hrow small{font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-hrm{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;color:var(--ink-3);opacity:.7}
.cd-hrm:hover{opacity:1;color:var(--ink-1);background:var(--cd-sf2)}
.cd-hn{margin:8px 12px 6px;font-size:12.5px;color:var(--ink-3)}
.cd-setup{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.cd-folder{display:flex;align-items:center;gap:10px;min-width:0;max-width:260px;padding:8px 14px 8px 12px;border-radius:14px;border:1px solid var(--hair-2);background:var(--cd-sf);color:var(--ink-2);text-align:start;transition:background-color .16s,border-color .16s,transform .12s cubic-bezier(.23,1,.32,1)}
.cd-folder:hover{background:var(--cd-sf2)}
.cd-folder:active{transform:scale(.98)}
.cd-folder.empty{border-color:rgba(245,198,107,.42);color:var(--gold)}
.cd-folder svg{flex:none}
.cd-ft{display:flex;flex-direction:column;min-width:0}
.cd-ft b{font-weight:500;font-size:14px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-folder.empty .cd-ft b{color:var(--gold)}
.cd-ft small{font-size:12px;color:var(--ink-3)}
.cd-agents,.cd-modes{display:flex;gap:2px;padding:3px;border-radius:14px;border:1px solid var(--hair);background:var(--cd-sf)}
.cd-agents{flex:0 1 auto;min-width:0}
.cd-modes{margin-inline-start:auto}
.cd-ms{display:none}
.cd-dot2{opacity:.6}
.cd-agent{flex:0 1 auto;min-width:0;display:flex;align-items:center;gap:9px;padding:6px 14px;border-radius:11px;text-align:start;color:var(--ink-2);transition:background-color .16s cubic-bezier(.23,1,.32,1),color .16s}
.cd-agent:hover:not(:disabled){color:var(--ink-1)}
.cd-agent.on{background:var(--cd-sf2);color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2)}
.cd-agent:disabled{opacity:.45}
.cd-at{display:flex;flex-direction:column;min-width:0}
.cd-at b{font-weight:500;font-size:13.5px;white-space:nowrap}
.cd-at small{font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--ink-3);opacity:.5}
.cd-dot.ok{background:var(--mint);opacity:1;box-shadow:0 0 8px rgba(111,242,196,.45)}
.cd-dot.no{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ink-3);opacity:.8}
.cd-mode{padding:0 14px;min-height:40px;border-radius:11px;font-size:13.5px;color:var(--ink-2);white-space:nowrap;transition:background-color .16s,color .16s}
.cd-mode:hover:not(:disabled){color:var(--ink-1)}
.cd-mode.on{background:var(--cd-sf2);color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2)}
.cd-mode.edit.on{color:var(--gold);box-shadow:inset 0 0 0 1px rgba(245,198,107,.38);background:rgba(245,198,107,.08)}
.cd-mode:disabled{opacity:.5}
.cd-help{margin:10px 0 0;font-size:13.5px;color:var(--ink-2)}
.cd-help:empty{display:none}
.cd-help p{margin:0}
.cd-help.need{padding:14px 16px;border-radius:14px;border:1px solid var(--hair);background:var(--cd-sf)}
.cd-help.need p{color:var(--ink-1);margin-bottom:10px}
.cd-signed{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;color:var(--ink-3)}
.cd-how{margin-top:4px !important;color:var(--ink-3);font-size:13px}
.cd-help code,.cd-sp:is(code),.cd-cmd code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}
.cd-how code{padding:1px 6px;border-radius:6px;background:var(--cd-sf2);color:var(--ink-1)}
.cd-link{color:var(--ice);font-size:13px;text-decoration:underline;text-decoration-color:rgba(92,225,255,.35);text-underline-offset:3px}
.cd-link:hover{text-decoration-color:currentColor}
.cd-cmd{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;border-radius:11px;background:rgba(var(--k-3-4-10,3,4,10),.55);border:1px solid var(--hair)}
.cd-cmd code{flex:1;min-width:0;overflow:auto;white-space:nowrap;color:var(--ink-1)}
.cd-copy{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:9px;color:var(--ink-2);font-size:12.5px;flex:none}
.cd-copy:hover{color:var(--ink-1);background:var(--cd-sf2)}
.cd-copy:active{transform:scale(.97)}
.cd-hl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:10px}
.cd-hl a,.cd-key a{color:var(--ink-3);font-size:13px;text-underline-offset:3px}
.cd-hl a:hover,.cd-key a:hover{color:var(--ink-1)}
.cd-key{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.cd-key input{flex:1 1 240px;min-width:0;padding:9px 12px;border-radius:11px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);color:var(--ink-1);font:inherit;font-size:13.5px}
.cd-key input:focus{outline:none;border-color:rgba(92,225,255,.5)}
.cd-keynote{display:block;margin-top:6px;font-size:12.5px;color:var(--ink-3)}
.cd-log{flex:1;min-height:0;overflow:auto;margin:14px -8px 0;padding:6px 8px 12px;border-top:1px solid var(--hair);overscroll-behavior:contain;scroll-padding-bottom:16px}
.cd-empty{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 12px}
.cd-et{margin:0;font-family:var(--display);font-size:24px;color:var(--ink-1)}
.cd-es{margin:8px 0 0;max-width:46ch;color:var(--ink-3);font-size:14px;line-height:1.55}
.cd-ideas{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px}
.cd-idea{padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:13.5px;transition:background-color .16s,color .16s,transform .12s cubic-bezier(.23,1,.32,1)}
.cd-idea:hover{color:var(--ink-1);background:var(--cd-sf2)}
.cd-idea:active{transform:scale(.97)}
.cd-turn{padding:16px 0 4px}
.cd-turn+.cd-turn{border-top:1px solid var(--hair)}
.cd-ask{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin:0 0 12px}
.cd-ask p{margin:0;max-width:min(560px,86%);padding:10px 14px;border-radius:16px 16px 6px 16px;background:var(--cd-sf2);color:var(--ink-1);font-size:14.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
html[dir=rtl] .cd-ask p{border-radius:16px 16px 16px 6px}
.cd-askm{font-size:12px;color:var(--ink-3)}
.cd-askm.edit{color:var(--gold)}
.cd-steps{display:flex;flex-direction:column;gap:2px}
.cd-words{margin:4px 0;color:var(--ink-1);font-size:14.5px;line-height:1.62;white-space:pre-wrap;overflow-wrap:anywhere;max-width:72ch}
.cd-words code{white-space:nowrap;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em;padding:1px 6px;border-radius:6px;background:var(--cd-sf2)}
.cd-step{display:flex;align-items:center;gap:10px;min-height:30px;padding:4px}
.cd-sic{flex:none;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:var(--ice);background:rgba(92,225,255,.08)}
.cd-step:is(.edited,.created,.deleted) .cd-sic{color:var(--gold);background:rgba(245,198,107,.1)}
.cd-step.proposed .cd-sic{color:var(--ink-2);background:var(--cd-sf2)}
.cd-step.blocked .cd-sic{color:var(--rose);background:rgba(255,122,182,.09)}
.cd-sw{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;font-size:13.5px}
.cd-sl{flex:none;color:var(--ink-3)}
.cd-step.blocked .cd-sl{color:var(--ink-2)}
.cd-step.blocked .cd-sl:only-child{flex:1 1 auto}
.cd-sp{min-width:0;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-step.cmd .cd-sp{color:var(--ink-1)}
.cd-exit{flex:none;font-size:12px;color:var(--mint)}
.cd-exit.bad{color:var(--rose)}
.cd-look{border-radius:11px}
.cd-look summary{display:flex;align-items:center;gap:10px;min-height:30px;padding:4px;cursor:pointer;list-style:none;font-size:13.5px;color:var(--ink-3);border-radius:11px}
.cd-look summary::-webkit-details-marker{display:none}
.cd-look summary:hover{color:var(--ink-1)}
.cd-look summary>svg:first-child{flex:none;width:24px;height:24px;padding:4.5px;border-radius:7px;color:var(--ice);background:rgba(92,225,255,.08)}
.cd-look summary>svg:last-child{margin-inline-start:auto;transition:transform .2s cubic-bezier(.23,1,.32,1)}
.cd-look[open] summary>svg:last-child{transform:rotate(180deg)}
.cd-look ul{list-style:none;margin:0;padding:2px 12px 8px 38px;display:flex;flex-direction:column;gap:4px}
.cd-look li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);min-width:0}
.cd-look li svg{flex:none;color:var(--ink-3)}
.cd-look li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-look li small{color:var(--ink-3);font-size:12px;flex:none}
.cd-plan{padding:12px 14px;border-radius:12px;background:var(--cd-sf);border:1px solid var(--hair)}
.cd-plan b{display:block;font-weight:500;font-size:13px;color:var(--ink-3);margin-bottom:6px}
.cd-plan ol{margin:0;padding-inline-start:1.2em;display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--ink-1)}
.cd-plan li.open::after{content:" · not done";color:var(--ink-3)}
.cd-plan li.done{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(111,242,196,.6)}
.cd-plan li::marker{color:var(--ice)}
.cd-working{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:13.5px;color:var(--ink-3)}
.cd-pulse{width:8px;height:8px;border-radius:50%;background:var(--ice);box-shadow:0 0 10px rgba(92,225,255,.7);animation:cdPulse 1.4s cubic-bezier(.45,0,.55,1) infinite}
@keyframes cdPulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
.cd-end{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 14px;margin-top:6px;padding:12px 14px;border-radius:12px;border:1px solid rgba(111,242,196,.22);background:rgba(111,242,196,.045)}
.cd-end.bad{border-color:rgba(255,122,182,.24);background:rgba(255,122,182,.045)}
.cd-endt{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.cd-endt b{font-weight:500;font-size:14px;color:var(--mint)}
.cd-end.bad .cd-endt b{color:var(--ink-1)}
.cd-endt small{font-size:13px;color:var(--ink-3)}
.cd-endb{display:flex;flex-wrap:wrap;gap:8px}
.cd-comp{flex:none;margin-top:4px;padding-top:12px;border-top:1px solid var(--hair)}
.cd-crow{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 16px;border-radius:20px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.45);transition:border-color .16s}
.cd-crow:focus-within{border-color:rgba(92,225,255,.4)}
.cd-crow.multi{align-items:flex-end}
.cd-field{flex:1;min-width:0;min-height:0;height:34px;resize:none;border:0;background:transparent;color:var(--ink-1);font:inherit;font-size:15px;line-height:1.5;padding:5px 0;max-height:180px}
:is(.cd-step,.cd-look,.cd-words,.cd-plan).live{animation:cdIn .18s cubic-bezier(.23,1,.32,1)}
@keyframes cdIn{from{opacity:0;transform:translateY(4px)}}
.cd-field:focus{outline:none}
.cd-field::placeholder{color:var(--ink-3)}
.cd-field:placeholder-shown{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-crow .cd-mic{border:0;flex:none}
.cd-mic.on{color:var(--rose);background:rgba(255,122,182,.1)}
.cd-go{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--h-1d1408,#1d1408);transition:transform .12s cubic-bezier(.23,1,.32,1),opacity .16s,background-color .16s}
.cd-go:active:not(:disabled){transform:scale(.95)}
.cd-go:disabled{opacity:.35}
.cd-go.stop{background:var(--cd-sf2);color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2)}
.cd-modenote{display:block;margin:8px 4px 0;font-size:12.5px;color:var(--ink-3)}
.cd-modenote.edit{color:var(--gold)}
@media (max-width:760px){
  .panel.cd-panel{height:100%;padding:14px 12px 10px;border-radius:18px}
  .cd-head{margin-bottom:10px}
  .cd-head h2{font-size:24px}
  .cd-head .lead{display:none}
  .cd-setup{display:grid;grid-template-columns:minmax(140px,1fr) auto;gap:6px}
  .cd-ml{display:none}.cd-ms{display:inline}
  .cd-folder{max-width:none;padding:6px 12px;border-radius:12px}
  .cd-folder svg{display:none}
  .cd-folder small{display:none}
  .cd-agents{grid-column:1 / -1;order:3}
  .cd-agents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .cd-agent{padding:7px 10px;gap:6px;justify-content:center}
  .cd-at b{font-size:13px}
  .cd-at small{display:none}
  .cd-mode{min-height:36px;padding:0 8px;font-size:13px}
  .cd-how{display:none}
  .cd-help{font-size:13px;margin-top:8px}
  .cd-log{margin-top:10px}
  .cd-ask p{max-width:92%}
}
@media (prefers-reduced-motion:reduce){:is(.cd-step,.cd-look,.cd-words,.cd-plan).live{animation:none}.cd-pulse{animation:none;opacity:.8}.cd-look summary>svg:last-child{transition:none}}
/* the microphone: one-time step and how to switch it back on (public/js/michelp.js) */
.mh-panel .lead{margin-bottom:6px}
.mh-steps{margin:6px 0 18px;padding-inline-start:1.3em;display:flex;flex-direction:column;gap:8px;color:var(--ink-1);font-size:15px;line-height:1.5}
.mh-steps li::marker{color:var(--gold);font-variant-numeric:tabular-nums}
.mh-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.mh-fine{margin:12px 0 0;font-size:13px;color:var(--ink-3)}
/* connected services list + permissions (public/js/connlist.js, permissions.js) */
.cl-head-r{display:flex;align-items:center;gap:8px;flex:none}.cl-panel .panel-head,.perm-panel .panel-head{align-items:flex-start;flex-wrap:nowrap}.cl-panel .panel-head>div:first-child,.perm-panel .panel-head>div:first-child{flex:1;min-width:0}
.cl-plus{width:34px;height:34px;border-radius:50%;border:1px solid var(--hair-2);color:var(--ink-1);display:grid;place-items:center;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cl-plus:hover{background:rgba(var(--k-246-239-230,246,239,230),.08)}.cl-plus:active{transform:scale(.94)}
.cl-panel,.perm-panel{background:rgb(var(--k-8-9-19,8,9,19))}.cl-panel{min-height:min(60vh,520px)}
.cl-sum{margin:0 0 10px;font-size:13px;color:var(--ink-3)}
.cl-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--hair)}
.cl-row{width:100%;display:flex;align-items:center;gap:14px;padding:12px 4px;min-height:60px;text-align:start;border-bottom:1px solid var(--hair);color:var(--ink-1);border-radius:10px;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cl-row:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}.cl-row:active{transform:scale(.99)}
.cl-logo{width:38px;height:38px;border-radius:11px;background:var(--h-fff,#fff);object-fit:contain;padding:5px;flex:none}
.cl-logo.mono{display:grid;place-items:center;background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1);font-size:15px;padding:0}
.cl-logo-lg{width:48px;height:48px;border-radius:14px}
.cl-logo.cl-wait{background:rgba(var(--k-246-239-230,246,239,230),.1)}
.cl-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cl-t b{font-weight:500;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl-t small{font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl-t small.bad{color:var(--h-ffb4ac,#ffb4ac)}
.cl-n{flex:none;min-width:24px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-2);padding:2px 8px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.08)}
.cl-row.bad .cl-n{background:rgba(var(--k-255-122-122,255,122,122),.14);color:var(--h-ffb4ac,#ffb4ac)}
.cl-chev{flex:none;color:var(--ink-3);display:grid}[dir=rtl] .cl-chev svg,[dir=rtl] .cl-back-i svg{transform:scaleX(-1)}
.cl-foot{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px}
.cl-empty{padding:18px 0}.cl-empty p{color:var(--ink-2);font-size:14px;line-height:1.5}.cl-go{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.cl-back{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--ink-2);padding:6px 10px 6px 4px;margin-bottom:8px;border-radius:999px}.cl-back-i{display:grid}
.cl-back:hover{color:var(--ink-1)}
.cl-svc{display:flex;align-items:center;gap:14px;margin:4px 0 14px}.cl-svc-t h3{margin:0;font-size:20px;font-weight:500}.cl-svc-t p{margin:2px 0 0;font-size:13px;color:var(--ink-3)}
.cl-accts{list-style:none;margin:0 0 16px;padding:0;border-top:1px solid var(--hair)}
.cl-acct{padding:14px 2px;border-bottom:1px solid var(--hair);display:flex;flex-direction:column;gap:8px}
.cl-a-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.cl-a-id{font-weight:500;font-size:14.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-ctx{flex:none;max-width:48%;font-size:12px;color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.07);border:1px solid var(--hair);border-radius:999px;padding:4px 10px}
.cl-a-st{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}.cl-acct.bad .cl-a-st{color:var(--h-ffb4ac,#ffb4ac)}
.cl-a-note{margin:0;font-size:12.5px;color:var(--ink-3)}
.cl-a-act{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.cl-a-act.asking{gap:10px}.cl-confirm{margin:0;flex-basis:100%;font-size:13.5px;color:var(--ink-1)}
.cl-del{color:var(--ink-3)}
.cl-rename{flex:1;min-width:0;font-size:14.5px;padding:7px 12px;border-radius:10px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.06);color:var(--ink-1)}
.cl-add{align-self:flex-start}
.cl-menu{position:fixed;z-index:60;background:rgba(var(--k-8-9-19,8,9,19),.99);border:1px solid var(--hair-2);border-radius:16px;padding:6px;box-shadow:0 18px 50px rgba(var(--k-3-4-10,3,4,10),.7);opacity:0;transform:scale(.96);transition:opacity .14s cubic-bezier(.23,1,.32,1),transform .14s cubic-bezier(.23,1,.32,1)}
.cl-menu.on{opacity:1;transform:none}
.cl-mi{display:flex;align-items:center;gap:12px;width:100%;text-align:start;padding:10px 12px;border-radius:11px;color:var(--ink-1)}.cl-mi:hover,.cl-mi:focus-visible{background:rgba(var(--k-246-239-230,246,239,230),.08)}
.cl-mi-i{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.cl-mi-t{display:flex;flex-direction:column;gap:1px}.cl-mi-t b{font-weight:500;font-size:14px}.cl-mi-t small{font-size:12px;color:var(--ink-3)}
.perm-where{margin:0 0 2px;font-size:14px;color:var(--ink-1)}.perm-sum{margin:0 0 8px;font-size:13px;color:var(--ink-3)}
.perm-list{display:flex;flex-direction:column;border-top:1px solid var(--hair)}.perm-h{margin:18px 0 4px}
.perm-row{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;padding:14px 2px;border-bottom:1px solid var(--hair);align-items:start}
.perm-ic{grid-row:1/3;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.07)}
.perm-row.on .perm-ic{color:var(--mint);background:rgba(var(--k-111-242-196,111,242,196),.1)}
.perm-t{font-size:15px;font-weight:500;color:var(--ink-1)}.perm-s{font-size:13px;line-height:1.45;color:var(--ink-3);margin-top:2px}
.perm-end{grid-column:2;display:flex;align-items:center;gap:14px;margin-top:6px}
.perm-st{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2)}.perm-st i{width:7px;height:7px;border-radius:50%;background:var(--ink-3)}
.perm-st.on i{background:var(--mint);box-shadow:0 0 6px rgba(var(--k-111-242-196,111,242,196),.6)}.perm-st.off i{background:var(--gold)}.perm-st.na{color:var(--ink-3)}
.perm-steps{grid-column:1/-1;margin-top:10px;padding:12px 14px 14px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.05)}
.perm-steps .mh-steps{font-size:14px;margin-bottom:12px}
.perm-fine{margin:16px 0 0;font-size:12.5px;color:var(--ink-3)}
/* comfortable touch targets (44px) on the list and permissions */
.cl-acct .link,.cl-foot .link,.perm .link{min-height:44px;display:inline-flex;align-items:center;padding-inline:6px}
.cl-a-act .btn,.perm-end .btn{min-height:44px;display:inline-flex;align-items:center}
.cl-plus,.cl-panel .sheet-close,.perm-panel .sheet-close{width:44px;height:44px}
.cl-ctx{min-height:44px}.cl-back{min-height:44px}
.cl-a-act{gap:0 10px}.cl-foot{gap:0 12px}.cl-acct{gap:4px}.perm-end{gap:10px;margin-top:2px}
.cl-fail{padding:18px 0;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.cl-fail p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.5}
/* Connected services on the Connections screen, under the summary (Katie, Oct 18: not in Customize) */
.cm-services{display:flex;flex-direction:column;min-width:0}
.cm-panel .cl-inline .cl-rows{border-top:0}
.cm-panel .cl-inline .cl-row{padding:10px 2px;min-height:56px;gap:12px}
.cm-panel .cl-inline .cl-logo{width:34px;height:34px;border-radius:10px}
.cm-panel .cl-inline .cl-foot{margin-top:6px}
.cm-panel .cl-inline .cl-svc-t h3{font-size:18px}
.cm-services>.mailcard{margin:14px 0 4px;max-width:none}
/* an account's task lists (public/js/tasklists.js) */
.tl{display:flex;flex-direction:column;gap:8px;margin-top:6px;padding:12px 14px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.035);border:1px solid var(--hair)}
.tl[hidden]{display:none}
.tl-h{margin:0;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-1)}
.tl-sw{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;width:100%;text-align:start;font-size:14px;color:var(--ink-1)}
.tl-knob{flex:none;position:relative;width:40px;height:24px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.16);transition:background-color .18s ease}
.tl-knob::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--ink-1);transition:transform .18s cubic-bezier(.23,1,.32,1)}
.tl-sw[aria-checked="true"] .tl-knob{background:var(--mint)}
.tl-sw[aria-checked="true"] .tl-knob::after{transform:translateX(16px);background:#06231a}
html[dir=rtl] .tl-knob::after{left:auto;right:3px}html[dir=rtl] .tl-sw[aria-checked="true"] .tl-knob::after{transform:translateX(-16px)}
.tl-sw:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:10px}
.tl-l{margin:4px 0 0;font-size:13px;color:var(--ink-2)}
.tl-chips button{min-height:44px}
.tl-note{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.tl-pref{border-bottom:0;padding:4px 0 0}
.tl-select{min-height:44px;max-width:60%;font-size:13.5px;color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.07);border:1px solid var(--hair);border-radius:12px;padding:0 12px}
/* (the Task lists part sits in a narrow panel on every screen: the name above, the list picker full width, never cut off) */
.tl .tl-pref{display:flex;flex-direction:column;align-items:stretch;gap:6px}.tl .tl-select{max-width:none;width:100%}
@media (prefers-reduced-motion:reduce){.tl-knob,.tl-knob::after{transition:none}}
/* Send to Google Tasks (public/js/tasklists.js): three quiet choices, one line each saying what happens */
.tl-push{display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid var(--hair)}
.tl-opts{display:flex;flex-direction:column;gap:4px}
.tl-opt{display:grid;grid-template-columns:18px 1fr;column-gap:10px;align-items:center;width:100%;min-height:44px;padding:8px 10px;border-radius:12px;border:1px solid transparent;background:none;color:var(--ink-1);text-align:start;font:inherit;cursor:pointer;transition:background-color .15s ease-out,border-color .15s ease-out,transform .16s cubic-bezier(.23,1,.32,1)}
.tl-opt:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.tl-opt:active{transform:scale(.985)}
.tl-opt[aria-checked="true"]{border-color:rgba(245,198,107,.38);background:rgba(245,198,107,.06)}
.tl-opt:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.tl-dot{grid-row:1/span 2;width:14px;height:14px;border-radius:50%;border:1.5px solid var(--ink-3);box-sizing:border-box;transition:border-color .15s ease-out,box-shadow .15s ease-out}
.tl-opt[aria-checked="true"] .tl-dot{border-color:var(--gold);box-shadow:inset 0 0 0 3px #11121a,inset 0 0 0 7px var(--gold)}
.tl-opt-t{font-size:14px;line-height:1.35}
.tl-opt-s{grid-column:2;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.tl-opt:disabled{cursor:default}
/* Tidy Google Tasks: a review in place, every row ticked, one gold button that says how many */
.tl-tidy{padding-top:6px;border-top:1px solid var(--hair)}
.tl-tidy-b{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;border:0;background:none;color:var(--ink-1);font:inherit;font-size:14px;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:4px;cursor:pointer}
.tl-tidy-b:hover{text-decoration-color:var(--ink-2)}
.tl-tidy-b:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}
.gt-tidy{display:flex;flex-direction:column;gap:10px}
.gt-tidy[hidden]{display:none}
.gt-wait{margin:6px 0;font-size:13px;color:var(--ink-2)}
.gt-line{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-1);max-width:62ch}
.gt-safe{display:flex;gap:10px;align-items:baseline}
.gt-safe::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--mint);transform:translateY(-1px)}
.gt-receipt{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;font-size:14px;color:var(--ink-1)}
.gt-undo{min-height:44px;padding:0 4px;font-size:14px}
.tl .gt-t:focus{outline:none}
.tl .gt-t:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}
.tl .gt-t{margin:0;font-size:15px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-1)}
.gt-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--hair)}
.gt-row{border-bottom:1px solid var(--hair)}
.gt-lab{display:flex;align-items:flex-start;gap:12px;min-height:48px;padding:10px 2px;cursor:pointer}
.gt-check{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--gold)}
.gt-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.gt-title{font-size:14px;line-height:1.4;color:var(--ink-1);overflow-wrap:anywhere}
.gt-why{display:block;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.gt-where{white-space:nowrap;margin-inline-start:6px}
.gt-where .gt-sep{margin-inline-end:6px}
.gt-row:has(.gt-check:not(:checked)) .gt-title{color:var(--ink-3)}
.gt-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding-top:2px}
.gt-go{min-height:44px}
.gt-cancel{min-height:44px}
/* a to-do with a copy in Google Tasks: a small G after its title (quiet; hers from Google is quieter still) */
.tr-g{display:inline-flex;vertical-align:-1px;margin-inline-start:7px;color:rgba(92,225,255,.72)}
/* the editor's "Also put this in Google Tasks": a real checkbox row on every screen (the phone's stacked fields
   don't apply), and what unticking does, said in a plain line under it */
.tf.tg-wrap{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px}
.tf.tg-wrap[hidden]{display:none}
.tf .tg-google{display:flex;flex-direction:row;align-items:center;gap:12px;min-height:44px;cursor:pointer}
.tf .tg-google>span{font-size:14px;color:var(--ink-1)}
.tf .tg-google input.tg-check{display:block;flex:none;width:18px;height:18px;min-height:0;margin:0;padding:0;accent-color:var(--gold)}
.tg-off{margin:0 0 4px 30px;font-size:13px;line-height:1.45;color:var(--ink-2)}
html[dir=rtl] .tg-off{margin:0 30px 4px 0}
.tg-off[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.tl-opt,.tl-dot{transition:none}.tl-opt:active{transform:none}}

@media (max-width:640px){.cl-panel,.perm-panel{padding:18px 16px 20px}.cl-ctx{max-width:55%}}
@media (prefers-reduced-motion:reduce){.cl-menu,.cl-row,.cl-plus{transition:none}.cl-row:active,.cl-plus:active{transform:none}}
/* Files (public/js/files.js): a solid sheet (nothing from home shows through), a quiet filter, rows with a small square
   picture, a real title, where it came from (tap to open that chat) and Download. Tap a picture to see it large. */
.mf-panel{background:var(--sf-0,#0f1016);width:min(720px,100%);height:min(86vh,860px)}
.mf-panel .lead{margin-bottom:6px}
.mf-filter{position:sticky;top:-24px;z-index:1;display:flex;gap:4px;margin:0 -4px 6px;padding:10px 4px;background:var(--sf-0,#0f1016);overflow-x:auto;scrollbar-width:none}
.mf-filter::-webkit-scrollbar{display:none}
.mf-filter button{flex:none;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid transparent;background:none;color:var(--ink-3);font:inherit;font-size:14px;cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.mf-filter button:hover{color:var(--ink-1)}
.mf-filter button[aria-selected=true]{color:var(--ink-1);background:var(--sf-2,#1f222c);border-color:var(--sf-edge,var(--hair))}
.mf-filter button:active{transform:scale(.97)}
.mf-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.mf-row{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--hair)}
.mf-row:first-child{border-top:0}
.mf-open{flex:none;display:block;padding:0;border:0;background:none;border-radius:12px;cursor:zoom-in;transition:transform .14s ease-out}
.mf-open:active{transform:scale(.96)}
.mf-open:focus-visible{outline:2px solid var(--ink-2);outline-offset:2px}
.mf-thumb,.mf-ic{flex:none;display:block;width:52px;height:52px;border-radius:12px;object-fit:cover;border:1px solid var(--hair);background:var(--sf-2,#1f222c)}
.mf-ic{display:grid;place-items:center;font-size:10.5px;letter-spacing:.06em;color:var(--ink-2)}
.mf-t{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}
.mf-t b{max-width:100%;text-align:start;unicode-bidi:plaintext;font-weight:500;font-size:15px;line-height:1.3;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mf-t small{font-size:12.5px;color:var(--ink-3)}
.mf-from{max-width:100%;padding:0;border:0;background:none;font:inherit;font-size:13px;line-height:1.35;color:var(--ink-2);text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
button.mf-from{display:block;width:fit-content;height:44px;line-height:44px;margin-block:-10px;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px}
button.mf-from:hover{color:var(--ink-1);text-decoration-color:currentColor}
.mf-dl{flex:none;min-height:44px;display:inline-flex;align-items:center;gap:8px}
.mf-dl svg{flex:none}
.mf-ic.mf-pg{color:var(--ice);border-color:rgba(var(--k-92-225-255,92,225,255),.35)}
.mf-acts{display:flex;align-items:center;gap:8px;flex:none}
.mf-acts>.btn{min-height:44px;display:inline-flex;align-items:center}
@media (max-width:560px){.mf-page{flex-wrap:wrap;row-gap:10px}.mf-page .mf-t{flex:1 1 calc(100% - 66px)}.mf-page .mf-acts{flex-basis:100%;padding-inline-start:66px}}
.mf-foot{display:flex;justify-content:center;padding:10px 0 2px}.mf-foot:empty{padding:0}
.mf-foot .empty{margin:8px 0;text-align:center}
.mf-note{margin:6px 0;font-size:13px;color:var(--ink-3)}
.mf-more{min-height:44px}
.mf-fail{display:flex;flex-direction:column;align-items:center;gap:10px}.mf-fail p{margin:0;font-size:14px;color:var(--ink-2)}
@media (max-width:640px){.mf-filter{top:-20px;gap:2px}.mf-filter button{padding:0 9px;font-size:13.5px}.mf-t b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.mf-dl{width:44px;padding:0;justify-content:center}.mf-dl span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mf-row{gap:12px}}
/* the picture, large: a dark stage (the picture is the content), its title and Download on a solid bar */
.mf-view{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;background:rgb(var(--k-3-4-10,3,4,10));animation:mfIn .2s cubic-bezier(.23,1,.32,1) both}
.mf-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:24px 24px 12px;cursor:zoom-out}
.mf-big{max-width:100%;max-height:100%;object-fit:contain;border-radius:12px;background:center/cover no-repeat var(--sf-1,#181a22);cursor:default;opacity:.92;transition:opacity .2s ease-out}
.mf-big.on{opacity:1}
.mf-bar{flex:none;display:flex;align-items:center;gap:12px;width:min(760px,calc(100% - 32px));margin:0 auto calc(16px + env(safe-area-inset-bottom,0px));padding:10px 10px 10px 18px;border-radius:18px;background:var(--sf-1,#181a22);border:1px solid var(--sf-edge,var(--hair))}
html[dir=rtl] .mf-bar{padding:10px 18px 10px 10px}
.mf-bar .btn{min-height:44px;display:inline-flex;align-items:center}
.mf-x{flex:none;width:44px;height:44px}
@keyframes mfIn{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
/* NOVA · document viewer (public/js/docview.js, Oct 19): a document NOVA wrote, read inside NOVA on a solid surface,
   with Copy and Download as Word or PDF at its foot. Only opacity and transform move, under 200 ms. */
.dv{position:fixed;inset:0;z-index:92;display:flex;flex-direction:column;background:#07080f;color:var(--ink-1);opacity:0;transform:translateY(10px);transition:opacity .18s cubic-bezier(.23,1,.32,1),transform .18s cubic-bezier(.23,1,.32,1);padding-top:env(safe-area-inset-top,0px)}
.dv.on{opacity:1;transform:none}
.dv[hidden]{display:none}
.dv:focus{outline:none}
html.dv-open{overflow:hidden}
.dv-head{flex:none;display:flex;align-items:center;gap:12px;width:min(820px,100%);margin:0 auto;padding:12px 20px 10px}
.dv-x{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:999px;background:var(--sf-1);border:1px solid var(--sf-edge);color:var(--ink-1);cursor:pointer;transition:transform .12s ease-out,background-color .15s ease}
.dv-x:active{transform:scale(.94)}
.dv-t{min-width:0;display:grid;gap:1px}
.dv-title{margin:0;font:600 15.5px/1.3 var(--sans);color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-meta{font-size:13.5px;color:var(--ink-2)}
.dv-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 20px 28px}
.dv-page{width:min(780px,100%);margin:0 auto;padding:40px 52px 48px;border-radius:22px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge);font:400 16.5px/1.68 var(--sans);color:rgba(246,239,230,.9);overflow-wrap:anywhere;box-shadow:0 30px 80px -40px rgba(0,0,0,.9)}
.dv-page.rtl{font-family:"SF Arabic","Geeza Pro","Noto Sans Arabic","Noto Naskh Arabic",var(--sans);font-size:18px;line-height:1.85}
.dv-page.rtl table{font-size:16px}
.dv-page>:first-child{margin-top:0}
.dv-page h1,.dv-page h2,.dv-page h3,.dv-page h4{color:var(--ink-1);text-wrap:balance}
.dv-page h1{margin:0 0 22px;padding-bottom:18px;border-bottom:1px solid var(--hair);font:400 34px/1.15 var(--display);letter-spacing:-.01em}
.dv-page.rtl h1{font-family:"Noto Naskh Arabic",var(--display);line-height:1.45}
.dv-page h2{margin:34px 0 10px;font:600 20px/1.35 var(--sans);letter-spacing:-.005em}
.dv-page h3{margin:26px 0 8px;font:600 17px/1.4 var(--sans)}
.dv-page h4{margin:20px 0 6px;font:600 15.5px/1.4 var(--sans);color:var(--ink-2)}
.dv-page p{margin:0 0 14px}
.dv-page .dv-pre{white-space:pre-wrap}
.dv-page strong{font-weight:650;color:var(--ink-1)}
.dv-page a{color:var(--ice);text-decoration:underline;text-decoration-color:rgba(92,225,255,.4);text-underline-offset:3px}
.dv-page ul,.dv-page ol{margin:0 0 16px;padding-inline-start:24px}
.dv-page li{margin:0 0 6px;padding-inline-start:4px}
.dv-page li>ul,.dv-page li>ol{margin:6px 0 0}
.dv-page ul>li::marker{color:var(--ink-3)}
.dv-page ol>li::marker{color:var(--ink-3);font-variant-numeric:tabular-nums}
.dv-page code{font:500 .88em/1.5 ui-monospace,"SF Mono",Menlo,Consolas,monospace;padding:.1em .38em;border-radius:6px;background:rgba(246,239,230,.07)}
.dv-page pre{margin:0 0 16px;padding:14px 16px;border-radius:12px;background:rgba(246,239,230,.05);border:1px solid var(--hair);overflow:auto;text-align:left}
.dv-page pre code{padding:0;background:none;white-space:pre}
.dv-page blockquote{margin:0 0 16px;padding:2px 0;padding-inline-start:18px;border-inline-start:2px solid rgba(169,139,255,.55);color:var(--ink-2)}
.dv-page hr{margin:28px 0;border:0;border-top:1px solid var(--hair)}
.dv-tbl{margin:4px 0 20px;overflow-x:auto;border:1px solid var(--hair);border-radius:12px;
  /* a table wider than the page shows a soft shadow on the side that scrolls (it moves with the scroll, no script) */
  background:linear-gradient(90deg,var(--sf-0,#0f1016) 30%,rgba(15,16,22,0)) left/36px 100% no-repeat local,linear-gradient(270deg,var(--sf-0,#0f1016) 30%,rgba(15,16,22,0)) right/36px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.55),transparent) left/14px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.55),transparent) right/14px 100% no-repeat scroll}
.dv-tbl:focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
.dv-page table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5}
.dv-page th,.dv-page td{padding:10px 14px;text-align:start;vertical-align:top;border-bottom:1px solid var(--hair);min-width:110px;overflow-wrap:normal}
.dv-page th{font-weight:600;color:var(--ink-1);background:rgba(246,239,230,.045)}
.dv-page tr:last-child td{border-bottom:0}
.dv-wait{display:grid;gap:14px;padding-top:6px}
.dv-wait i{display:block;height:12px;border-radius:6px;background:rgba(246,239,230,.07)}
.dv-wait i.w1{width:62%;height:26px;margin-bottom:12px}.dv-wait i.w2{width:40%;height:16px;margin-top:10px}.dv-wait i.w3{width:78%}.dv-wait i.gap{height:0}
.dv-fail{display:grid;gap:6px;justify-items:start;padding:12px 0}
.dv-fail p{margin:0;color:var(--ink-1)}.dv-fail .s{color:var(--ink-2);font-size:15px;margin-bottom:10px}
.dv-foot::before{content:"";position:absolute;left:-12px;right:-12px;bottom:100%;height:28px;background:linear-gradient(rgba(7,8,15,0),#07080f);pointer-events:none}
.dv-foot{flex:none;position:relative;width:min(820px,calc(100% - 24px));margin:0 auto calc(12px + env(safe-area-inset-bottom,0px))}
.dv-bar{display:flex;align-items:center;gap:8px;padding:8px;border-radius:18px;background:var(--sf-1);border:1px solid var(--sf-edge-2,var(--hair-2))}
.dv-b{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 16px;border-radius:12px;font:600 14.5px/1 var(--sans);color:var(--ink-1);background:transparent;border:1px solid transparent;text-decoration:none;cursor:pointer;white-space:nowrap;transition:transform .12s ease-out,background-color .15s ease,border-color .15s ease}
.dv-b:active{transform:scale(.97)}
.dv-b[disabled]{opacity:.45;cursor:default}
.dv-b:focus-visible,.dv-x:focus-visible,.dv-mi:focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
.dv-copy{color:var(--ink-2)}.dv-more{color:var(--ink-1)}
.dv-more{gap:6px;padding:0 14px 0 12px}
.dv-dl{border-color:var(--hair-2)}
.dv-main{background:var(--ink-1);border-color:var(--ink-1);color:#141018}
.dv-gap{flex:1}
.dv-dlh{font-size:13.5px;color:var(--ink-2);padding-inline-end:2px}
.dv-morewrap{position:relative;display:inline-flex}
.dv-menu{position:absolute;bottom:calc(100% + 10px);inset-inline-start:0;width:min(300px,calc(100vw - 40px));padding:6px;border-radius:16px;background:#15171f;border:1px solid var(--hair-2);box-shadow:0 18px 40px -16px rgba(0,0,0,.9);transform-origin:bottom left;animation:dvMenu .16s cubic-bezier(.23,1,.32,1) both}
html[dir=rtl] .dv-menu{transform-origin:bottom right}
.dv-menu[hidden]{display:none}
.dv-mi{display:grid;gap:3px;padding:12px 14px;border-radius:11px;color:var(--ink-1);text-decoration:none}
.dv-mi b{font-weight:600;font-size:14.5px}.dv-mi span{font-size:13.5px;line-height:1.4;color:var(--ink-2)}
.dv-say{position:absolute;left:50%;bottom:calc(100% + 10px);margin:0;padding:9px 14px;border-radius:999px;background:#15171f;border:1px solid var(--hair-2);font-size:14px;color:var(--ink-1);white-space:nowrap;opacity:0;transform:translate(-50%,6px);transition:opacity .16s ease-out,transform .16s ease-out;pointer-events:none}
.dv-say.on{opacity:1;transform:translate(-50%,0)}
@keyframes dvMenu{from{opacity:0;transform:scale(.96) translateY(4px)}to{opacity:1;transform:none}}
@media (hover:hover){.dv-x:hover{background:var(--sf-2)}.dv-b:not(.dv-main):not([disabled]):hover{background:rgba(246,239,230,.06)}.dv-main:hover{background:#fff}.dv-mi:hover{background:rgba(246,239,230,.06)}}
@media (max-width:640px){
  .dv-head{padding:10px 14px 8px}
  .dv-scroll{padding:2px 0 18px}
  .dv-page{padding:26px 20px 34px;border-radius:0;border-width:1px 0;font-size:16.5px;box-shadow:none}
  .dv-page h1{font-size:28px;margin-bottom:18px;padding-bottom:14px}
  .dv-page h2{font-size:19px;margin-top:28px}
  .dv-page th,.dv-page td{padding:9px 12px;font-size:14.5px;min-width:88px;overflow-wrap:break-word}
  .dv-foot{width:calc(100% - 16px);margin-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
  .dv-bar{gap:6px;padding:6px}
  .dv-b{padding:0 13px}
  .dv-copy span{display:none}.dv-copy{width:44px;padding:0}.dv-more{padding:0 12px 0 10px}
  .dv-dlh{display:none}
}
.mf-ic.mf-doc{cursor:pointer;font:600 10.5px/1 var(--sans);letter-spacing:.06em;color:var(--ink-2);border:1px solid var(--hair);background:var(--sf-2,#1f222c)}
@media (prefers-reduced-motion:reduce){.dv,.dv-say{transition:none}.dv{transform:none}.dv-menu{animation:none}.dv-b:active,.dv-x:active{transform:none}}

@media (max-width:640px){.mf-stage{padding:14px 10px 10px}.mf-bar{padding:8px 8px 8px 14px;gap:8px}html[dir=rtl] .mf-bar{padding:8px 14px 8px 8px}}
@media (prefers-reduced-motion:reduce){.mf-view{animation:none}.mf-open,.mf-filter button,.mf-big{transition:none}.mf-open:active,.mf-filter button:active{transform:none}}
/* "Show me around": the first-time tour (public/js/guide.js). The lit place is the real page; the card is a solid surface
   so its words never sit on the stars. Only opacity and transform move, under 250 ms, and not at all with reduced motion. */
.gd{position:fixed;inset:0;z-index:110;pointer-events:none}
.gd-shield{position:absolute;inset:0;pointer-events:auto;background:transparent}
.gd.dim .gd-shield{background:rgba(3,4,10,.72);transition:background-color .2s ease}
.gd-spot{position:absolute;left:0;top:0;pointer-events:none;opacity:0;box-shadow:0 0 0 200vmax rgba(3,4,10,.72),0 0 0 1.5px rgba(245,198,107,.55),0 0 28px 2px rgba(245,198,107,.18);transition:opacity .16s cubic-bezier(.23,1,.32,1)}
.gd-spot.on{opacity:1}.gd-spot.moving{opacity:0}
.gd-card{position:absolute;left:0;top:0;pointer-events:auto;width:min(360px,calc(100vw - 32px));padding:20px 20px 16px;border-radius:18px;background:var(--sf-1,#181a22);border:1px solid var(--sf-edge-2,rgba(246,239,230,.13));box-shadow:0 24px 60px -24px rgba(0,0,0,.85),0 1px 0 rgba(255,255,255,.03) inset;color:var(--ink-1);opacity:0;outline:none}
.gd-card.in{opacity:1;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.gd-card.wide{width:min(440px,calc(100vw - 32px))}
.gd-dots{flex:1;display:flex;justify-content:center;gap:6px}.gd-dots i{width:6px;height:6px;border-radius:50%;background:var(--hair-2)}.gd-dots i.on{background:var(--gold)}
#stage.touring #toast{opacity:0!important;pointer-events:none!important}
#stage.gd-mind :is(#greet,#brief,#sources,#memcard){opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.gd-t{margin:0;font-family:var(--sans);font-weight:600;font-size:19px;line-height:1.25;letter-spacing:-.01em;color:var(--ink-1);text-wrap:balance}
.gd-b{margin:8px 0 0;font-size:14px;line-height:1.55;color:var(--ink-2);text-wrap:pretty}
.gd-views{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.gd-view{display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--hair-2);text-align:start;transition:border-color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.gd-view:hover{border-color:rgba(245,198,107,.4)}.gd-view:active{transform:scale(.98)}
.gd-view[aria-checked="true"]{border-color:var(--gold);background:rgba(245,198,107,.07)}
.gd-vt{display:flex;flex-direction:column;gap:2px;min-width:0}.gd-vt b{font-weight:500;font-size:14.5px}.gd-vt small{font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.gd-foot{display:flex;align-items:center;gap:8px;margin-top:16px;flex-wrap:wrap}
.gd-views+.gd-foot{justify-content:space-between}
.gd-sp{flex:1}
.gd-skip,.gd-back{padding:8px 10px;border-radius:999px;font-size:13px;color:var(--ink-3);transition:color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.gd-skip:hover,.gd-back:hover{color:var(--ink-1)}.gd-skip:active,.gd-back:active,.gd-next:active,.gd-feat:active{transform:scale(.97)}
.gd-skip{margin-inline-start:-10px}
.gd-next{padding:9px 18px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.gd-feat{border-radius:999px}
.gd-card :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.gd.out{opacity:0;transition:opacity .18s ease}
@media (max-width:600px){.gd-card{padding:18px 18px 14px}.gd-t{font-size:18px}.gd-end .gd-sp{display:none}.gd-end .gd-next{order:-2;flex:1 1 100%;padding:11px 18px}.gd-end .gd-feat{order:-1;flex:1 1 100%;padding:10px 14px}.gd-end .gd-back{margin-inline-start:-10px}}
@media (prefers-reduced-motion:reduce){.gd-spot,.gd-card.in,.gd.out,.gd.dim .gd-shield,#stage.gd-mind :is(#greet,#brief,#sources,#memcard){transition:none}}
/* ---------- Together: the chat between two people (tgchat.js). A panel of its own: the side on a computer, the whole
   screen on a phone. Theirs is warm grey, hers is gold, NOVA (only when asked) is violet with a spark. ---------- */
.tgc-scrim{position:fixed;inset:0;z-index:95;background:rgba(2,3,10,.55);opacity:0;transition:opacity .24s ease-out}
.tgc-scrim.on{opacity:1}
.tgc{--pc:245,198,107;--nv:169,139,255;--act:245,198,107;position:fixed;z-index:96;top:0;right:0;bottom:0;width:min(460px,100vw);display:flex;flex-direction:column;
  background:radial-gradient(420px 220px at 30% -60px,rgba(var(--pc),.10),transparent 75%),#0b0c16;border-left:1px solid var(--hair);box-shadow:-30px 0 80px rgba(0,0,0,.5);
  transform:translateX(28px);opacity:0;transition:transform .28s cubic-bezier(.32,.72,0,1),opacity .2s ease-out}
.tgc.on{transform:none;opacity:1}
html[dir=rtl] .tgc{right:auto;left:0;border-left:0;border-right:1px solid var(--hair);transform:translateX(-28px)}
html[dir=rtl] .tgc.on{transform:none}
.tgc :is(button,select,input):focus-visible{outline:2px solid rgba(var(--pc),.8);outline-offset:2px}
.tgc-head{display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px 8px;border-bottom:1px solid var(--hair)}
.tgc-back{width:42px;height:42px;flex:none;border-radius:50%;display:grid;place-items:center;border:0;background:none;color:var(--ink-2);cursor:pointer;transition:background-color .2s ease,color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-back:active{transform:scale(.94)}
html[dir=rtl] .tgc-back svg{transform:scaleX(-1)}
.tgc-who{display:flex;align-items:center;gap:11px;min-width:0}
.tgc-mark{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font:600 14px/1 var(--sans);color:#14100a;background:radial-gradient(circle at 34% 30%,#fffaf0 0,rgb(var(--pc)) 52%,rgba(var(--pc),.62) 100%);box-shadow:0 0 22px rgba(var(--pc),.4)}
.tgc-names{min-width:0}
.tgc-names b{display:block;font:600 16px/1.2 var(--sans);color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tgc-names small{display:block;margin-top:2px;font-size:12px;color:var(--ink-3)}
.tgc-todos{border-bottom:1px solid var(--hair);background:rgba(var(--k-6-7-16,6,7,16),.6)}
.tgc-todos-b{width:100%;display:flex;align-items:center;gap:9px;min-height:44px;padding:0 18px;border:0;background:none;color:var(--ink-2);font:inherit;font-size:13px;text-align:start;cursor:pointer}
.tgc-todos.has .tgc-todos-b{color:var(--ink-1)}
.tgc-todos.has .tgc-todos-b::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:rgb(var(--pc));box-shadow:0 0 10px rgba(var(--pc),.7)}
.tgc-todos-sum{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tgc-chev{flex:none;color:var(--ink-3);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.tgc-todos.on .tgc-chev{transform:rotate(180deg)}
.tgc-td{display:none;max-height:min(46vh,420px);overflow:auto;overscroll-behavior:contain;padding:0 12px 14px}
.tgc-todos.on .tgc-td{display:block}
.tgc-tl{list-style:none;margin:0;padding:0}
.tgc-todo{display:flex;align-items:center;gap:12px;padding:8px 6px;border-radius:12px}
.tgc-check{flex:none;width:26px;height:26px;border-radius:9px;border:1.5px solid rgba(var(--act),.55);background:none;color:transparent;display:grid;place-items:center;cursor:pointer;transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-check:active{transform:scale(.9)}
.tgc-todo.done .tgc-check{background:var(--mint);border-color:transparent;color:#0b0c16}
.tgc-todo-t{flex:1;min-width:0}
.tgc-todo-t b{display:block;font:500 14.5px/1.35 var(--sans);color:var(--ink-1);overflow-wrap:anywhere}
.tgc-todo-t small{display:block;margin-top:2px;font-size:12px;color:var(--ink-3)}
.tgc-todo.done .tgc-todo-t b{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.tgc-todo-x{display:flex;gap:4px;flex:none}
.tgc-mini{position:relative;display:grid;place-items:center;min-width:36px;height:36px;padding:0 11px;border-radius:999px;border:1px solid var(--hair);background:none;color:var(--ink-3);font:inherit;font-size:12px;cursor:pointer;transition:color .2s ease,border-color .2s ease}
.tgc-tnone{padding:4px 6px 10px;font-size:13px;line-height:1.5;color:var(--ink-3);list-style:none}
.tgc-tadd{display:flex;gap:6px;margin-top:8px}
.tgc-tadd input,.tgc-tadd select{min-width:0;height:40px;padding:0 12px;border-radius:12px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.05);color:var(--ink-1);font:inherit;font-size:14px}
.tgc-tadd input{flex:1}
.tgc-tadd select{flex:none;max-width:110px}
.tgc-scroll{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;padding:10px 14px 14px;-webkit-mask-image:linear-gradient(transparent,#000 12px);mask-image:linear-gradient(transparent,#000 12px)}
.tgc-list{flex:1;display:flex;flex-direction:column;list-style:none;margin:0;padding:0}
.tgc-more{align-self:center;margin:10px 0 2px;padding:6px 12px;border-radius:999px;border:1px solid var(--hair);background:none;color:var(--ink-3);font:inherit;font-size:12.5px;cursor:pointer}
.tgc-day{align-self:center;margin:16px 0 6px;font-size:11.5px;letter-spacing:.02em;color:var(--ink-3)}
.tgc-loading{margin:auto;width:22px;height:22px;border-radius:50%;border:2px solid var(--hair-2);border-top-color:rgb(var(--pc));animation:tgc-spin .8s linear infinite}
@keyframes tgc-spin{to{transform:rotate(360deg)}}
.tgc-msg{display:flex;flex-direction:column;max-width:82%;margin-top:10px}
.tgc-msg.run{margin-top:3px}
.tgc-msg.me{align-self:flex-end;align-items:flex-end}
.tgc-msg.them{align-self:flex-start;align-items:flex-start}
.tgc-b{display:block;max-width:100%;padding:9px 14px 10px;border:0;border-radius:20px;font:inherit;text-align:start;color:var(--ink-1);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-b:active{transform:scale(.985)}
.tgc-b p{margin:0;font-size:15px;line-height:1.42;white-space:pre-wrap;overflow-wrap:anywhere}
.tgc-msg.me .tgc-b{background:rgba(245,198,107,.18);box-shadow:inset 0 0 0 1px rgba(245,198,107,.22);border-end-end-radius:7px}
.tgc-msg.them .tgc-b{background:rgba(var(--k-246-239-230,246,239,230),.075);border-end-start-radius:7px}
.tgc-msg.me.run .tgc-b{border-start-end-radius:7px}
.tgc-msg.them.run .tgc-b{border-start-start-radius:7px}
.tgc-msg.asked .tgc-b{background:rgba(var(--nv),.16);box-shadow:inset 0 0 0 1px rgba(var(--nv),.3)}
.tgc-msg.pending{opacity:.55}
.tgc-msg.sel .tgc-b{box-shadow:inset 0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.3)}
.tgc-msg.me.sel .tgc-b{box-shadow:inset 0 0 0 1px rgba(245,198,107,.6)}
.tgc-mini::after{content:"";position:absolute;inset:-4px}
.tgc-mini.arm,.tgc-chip.arm{color:#ff8fa3;border-color:rgba(255,122,150,.45);font-size:12px;white-space:nowrap}
.tgc-acts{display:flex;align-items:center;justify-content:flex-end;gap:6px;width:max-content;max-width:calc(100vw - 32px);margin-top:7px;animation:tgc-in .18s cubic-bezier(.23,1,.32,1)}
.tgc-acts .tgc-chip{min-height:32px;padding:0 11px;font-size:12.5px}
.tgc-msg.them .tgc-acts{justify-content:flex-start}
.tgc-time{flex:none;white-space:nowrap;font-size:11.5px;color:var(--ink-3);margin-inline-end:2px;font-variant-numeric:tabular-nums}
@keyframes tgc-in{from{opacity:0;transform:translateY(-3px)}}
.tgc-msg.note .tgc-b{cursor:default}
.tgc-cheer{align-self:center;margin:12px 0 2px;padding:0 12px;font-size:12.5px;line-height:1.45;text-align:center;color:rgba(var(--pc),.95)}
.tgc-msg.nova{align-self:stretch;max-width:none;margin:16px 0 6px;padding:2px 0 2px 14px;border-inline-start:2px solid rgba(var(--nv),.55)}
.tgc-nhead{display:flex;align-items:center;gap:6px;font-size:12px;color:rgba(214,202,255,.86)}
.tgc-spark{color:rgb(var(--nv));filter:drop-shadow(0 0 6px rgba(var(--nv),.7))}
.tgc-msg.thinking .tgc-spark{animation:tgc-think 1.1s ease-in-out infinite}
@keyframes tgc-think{50%{opacity:.35;transform:scale(.78)}}
.tgc-ntext{margin:6px 0 0;font-size:15px;line-height:1.52;color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere}
.tgc-sug{display:flex;flex-direction:column;gap:6px;margin-top:11px}
.tgc-sugb{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:14px;border:1px solid rgba(var(--nv),.3);background:rgba(var(--nv),.07);color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-sugb:active:not(.added){transform:scale(.98)}
.tgc-sug-i{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:rgba(var(--nv),.25);font-size:16px;line-height:1}
.tgc-sug-t{min-width:0}
.tgc-sug-t b{display:block;font-weight:500;font-size:14px;line-height:1.35}
.tgc-sug-t small{display:block;margin-top:1px;font-size:12px;color:var(--ink-3)}
.tgc-sugb.added{padding-block:4px;border-color:transparent;background:none;cursor:default}
.tgc-sugb.added .tgc-sug-t b{color:var(--ink-2)}
.tgc-sugb.added .tgc-sug-i{background:var(--mint);color:#0b0c16}
.tgc-tev{display:flex;align-items:center;gap:10px;margin:12px 0 4px;padding:2px 2px;list-style:none}
.tgc-check.sm{width:22px;height:22px;border-radius:7px;position:relative}
.tgc-check.sm::after{content:"";position:absolute;inset:-11px}
.tgc-tev-t{min-width:0;font-size:13.5px;line-height:1.4;color:var(--ink-3)}
.tgc-tev-title{color:var(--ink-1);font-weight:500}
.tgc-tev.done .tgc-check{background:var(--mint);border-color:transparent;color:#0b0c16}
.tgc-tev.done .tgc-tev-title{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.tgc-empty{margin:auto;padding:40px 18px;text-align:center;list-style:none;color:var(--ink-2)}
.tgc-empty b{display:block;margin-bottom:6px;font:500 18px/1.3 var(--sans);color:var(--ink-1)}
.tgc-empty p{margin:0 auto;max-width:30ch;font-size:14px;line-height:1.5}
.tgc-foot{padding:8px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--hair);background:#0b0c16}
.tgc-ideas{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 9px;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
html[dir=rtl] .tgc-ideas{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 28px),transparent)}
.tgc-ideas::-webkit-scrollbar{display:none}
.tgc-chip{flex:none;min-height:34px;padding:0 13px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-2);font:inherit;font-size:13px;white-space:nowrap;cursor:pointer;transition:color .2s ease,border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-chip:active{transform:scale(.97)}
.tgc-chip.gold{border-color:rgba(245,198,107,.55);background:rgba(245,198,107,.12);color:var(--ink-1)}
.tgc-form{display:flex;align-items:flex-end;gap:6px;padding:5px;border-radius:24px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.045);transition:border-color .2s ease,box-shadow .2s ease}
.tgc-form:focus-within{border-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.tgc-form.asking{border-color:rgba(var(--nv),.6);box-shadow:0 0 0 3px rgba(var(--nv),.12)}
.tgc-ask{flex:none;display:flex;align-items:center;gap:6px;height:38px;padding:0 12px;border-radius:999px;border:1px solid rgba(var(--nv),.38);background:none;color:rgba(214,202,255,.95);font:inherit;font-size:13px;cursor:pointer;transition:background-color .2s ease,color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-ask:active{transform:scale(.96)}
.tgc-ask[aria-pressed=true]{background:rgba(var(--nv),.24);color:#fff;border-color:rgba(var(--nv),.7)}
.tgc-form textarea{flex:1;min-width:0;max-height:140px;padding:9px 4px;border:0;background:none;color:var(--ink-1);font:inherit;font-size:16px;line-height:1.38;resize:none;outline:none}
.tgc-form textarea::placeholder{color:var(--ink-3)}
.tgc-send{flex:none;width:38px;height:38px;border-radius:50%;border:0;display:grid;place-items:center;background:var(--gold);color:#16110a;cursor:pointer;transition:opacity .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tgc-send:active:not(:disabled){transform:scale(.93)}
.tgc-send:disabled{background:rgba(var(--k-246-239-230,246,239,230),.08);color:var(--ink-3);cursor:default}
.tgc-form.asking .tgc-send:disabled{background:rgba(var(--nv),.18);color:rgba(214,202,255,.6)}
html[dir=rtl] .tgc-send svg{transform:scaleX(-1)}
.tgc-form.asking .tgc-send:not(:disabled){background:rgb(var(--nv));color:#0b0c16}
.tgc-note{margin:8px 6px 0;font-size:11.5px;line-height:1.45;text-align:center;color:var(--ink-3)}
@media (hover:hover) and (pointer:fine){
  .tgc-back:hover{background:rgba(var(--k-246-239-230,246,239,230),.07);color:var(--ink-1)}
  .tgc-chip:hover,.tgc-mini:hover,.tgc-more:hover{color:var(--ink-1);border-color:rgba(var(--k-246-239-230,246,239,230),.32)}
  .tgc-sugb:hover:not(.added){background:rgba(var(--nv),.14)}
  .tgc-ask:hover{background:rgba(var(--nv),.14)}
}
@media (max-width:560px){
  .tgc{width:100vw;border-left:0;border-right:0;transform:translateY(18px)}
  html[dir=rtl] .tgc{transform:translateY(18px)}
  .tgc-msg{max-width:86%}
  .tgc-ask span{display:none}.tgc-ask{width:38px;padding:0;justify-content:center}
}
@media (prefers-reduced-motion:reduce){.tgc,.tgc-scrim{transition:opacity .15s ease}.tgc-loading{animation-duration:2s}.tgc,html[dir=rtl] .tgc{transform:none}.tgc-acts{animation:none}.tgc-msg.thinking .tgc-spark{animation:none;opacity:.6}}
/* the way into a chat from the Together section: the last line, and how many wait (her own count) */
.tg-chatrow{display:flex;align-items:center;gap:12px;width:100%;margin:2px 0 12px;padding:10px 14px 10px 10px;border-radius:16px;border:1px solid var(--hair);background:rgba(var(--k-246-239-230,246,239,230),.035);color:var(--ink-1);font:inherit;text-align:start;cursor:pointer;transition:border-color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tg-chatrow:active{transform:scale(.985)}
.tg-chatrow-t{flex:1;min-width:0}
.tg-chatrow-t b{display:block;font-weight:600;font-size:14px}
.tg-chatrow-t small{display:block;margin-top:2px;font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tg-chatrow-n{flex:none;min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:grid;place-items:center;background:var(--gold);color:#16110a;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.tg-chatrow .tgc-mark{width:32px;height:32px;font-size:13px}
.tg-chatrow-go{flex:none;display:grid;color:var(--ink-3)}
html[dir=rtl] .tg-chatrow-go svg{transform:scaleX(-1)}
@media (hover:hover) and (pointer:fine){.tg-chatrow:hover{border-color:rgba(245,198,107,.4);background:rgba(245,198,107,.05)}}
/* ---------- Faith (public/js/faith.js, faith-page.js): only for someone who added it. Moonlight is its own colour;
   gold stays for what's next and what she can act on; every word sits on a solid surface, never on the stars ---------- */
:root{--moon:204,232,250}
.fa-moon-dark{fill:#2b2e3a}.fa-moon-lit{fill:#ece7da}
/* the one line under the greeting */
.fa-home{display:flex;flex-direction:column;align-items:center;gap:8px;margin:2px 0 10px;pointer-events:auto}
.fa-home:empty{display:none}
.fa-line{display:contents}
.fa-line[hidden]{display:none}
.fa-line-go{appearance:none;display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 13px 6px 10px;border-radius:999px;border:1px solid rgba(var(--moon),.2);background:rgba(10,11,20,.78);color:var(--ink-2);font:400 12.5px/1.35 var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.fa-line-go:hover{border-color:rgba(var(--moon),.36)}.fa-line-go:active{transform:scale(.97)}
.fa-line-go:focus-visible{outline:2px solid rgba(var(--moon),.7);outline-offset:2px}
.fa-line-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fa-line-t b{font-weight:500;color:var(--ink-1)}
.fa-moon{flex:none}
html[lang=ar] .fa-line-go{font-size:13px;line-height:1.5}
.greet.talking .fa-home,#stage.reading .greet .fa-home{display:none}
/* Ramadan's day under it: the fast, the quiet hours, iftar, now */
.fa-shape{width:min(340px,86vw);padding:10px 12px 8px;border-radius:14px;background:rgba(12,13,22,.86);border:1px solid var(--hair);text-align:start}
.fa-shape-track{position:relative;height:18px}
.fa-shape-track::before{content:"";position:absolute;inset-inline:0;top:8px;height:2px;border-radius:2px;background:rgba(246,239,230,.14)}
.fa-shape-track i{position:absolute;display:block}
.fa-shape-track .fast{top:4px;height:10px;border-radius:6px;background:linear-gradient(90deg,rgba(var(--moon),.16),rgba(var(--moon),.32));border:1px solid rgba(var(--moon),.36)}
.fa-shape-track .quiet{top:1px;height:16px;border-radius:6px;background:repeating-linear-gradient(135deg,rgba(169,139,255,.2) 0 4px,rgba(169,139,255,.06) 4px 8px);border:1px dashed rgba(169,139,255,.6)}
.fa-shape-track .iftar{top:0;width:2px;height:18px;border-radius:2px;background:var(--gold);margin-inline-start:-1px}
.fa-shape-track .now{top:-2px;width:1px;height:22px;background:rgba(255,250,240,.9);margin-inline-start:-.5px}
.fa-shape-l{display:flex;justify-content:space-between;gap:8px;margin-top:4px;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.fa-shape-l .q{color:#bda8ff}.fa-shape-l .g{color:var(--gold)}
/* the one note when her times move city */
.fa-move{padding:12px 14px;border-radius:16px;background:#13151f;border:1px solid rgba(var(--moon),.32);text-align:start;display:flex;flex-direction:column;gap:6px}
.fa-move-t{margin:0;display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-1);line-height:1.4}
.fa-move-s{margin:0;font-size:12.5px;color:var(--ink-3);line-height:1.45}
.fa-move-a{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
/* small controls */
.fa-pill{appearance:none;display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 14px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-1);font:500 12.5px/1.2 var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.fa-pill:hover{border-color:rgba(246,239,230,.34)}.fa-pill:active{transform:scale(.97)}
.fa-pill.quiet{border-color:transparent;color:var(--ink-3)}.fa-pill.quiet:hover{color:var(--ink-1)}
.fa-pill:disabled{opacity:.5;cursor:default}
.fa-pill:focus-visible,.fa-seg-b:focus-visible,.fa-sw:focus-visible,.fa-step-b:focus-visible,.fa-link:focus-visible,.fa-x:focus-visible,.fa-cta:focus-visible,.fa-remove:focus-visible,.fa-sugg-b:focus-visible{outline:2px solid rgba(var(--moon),.75);outline-offset:2px}
.fa-x{appearance:none;flex:none;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:50%;background:none;color:var(--ink-3);font-size:19px;line-height:1;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease}
.fa-x:hover{color:var(--ink-1)}.fa-x:active{transform:scale(.94)}
.fa-seg{display:inline-flex;flex:none;padding:2px;border-radius:11px;border:1px solid var(--hair-2);gap:2px}
.fa-seg-b{appearance:none;border:0;background:none;padding:6px 11px;border-radius:9px;color:var(--ink-3);font:500 12.5px/1.2 var(--sans);white-space:nowrap;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease,background-color .2s ease}
.fa-seg-b:hover{color:var(--ink-1)}.fa-seg-b:active{transform:scale(.97)}
.fa-seg-b.on{background:rgba(var(--k-246-239-230,246,239,230),.1);color:var(--ink-1)}
.fa-sw{appearance:none;position:relative;flex:none;width:38px;height:22px;border-radius:999px;border:0;background:rgba(var(--k-246-239-230,246,239,230),.16);cursor:pointer;transition:background-color .2s ease}
.fa-sw i{position:absolute;top:3px;inset-inline-start:3px;width:16px;height:16px;border-radius:50%;background:#fff;opacity:.85;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.fa-sw.on{background:rgba(111,242,196,.62)}.fa-sw.on i{opacity:1;transform:translateX(16px)}
html[dir=rtl] .fa-sw.on i{transform:translateX(-16px)}
.fa-step{display:inline-flex;align-items:center;flex:none;border:1px solid var(--hair-2);border-radius:10px}
.fa-step-b{appearance:none;width:32px;height:30px;border:0;background:none;color:var(--ink-2);font-size:16px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease}
.fa-step-b:hover{color:var(--ink-1)}.fa-step-b:active{transform:scale(.92)}
.fa-step b{min-width:52px;padding:0 4px;text-align:center;font-weight:500;font-size:12.5px;color:var(--ink-1);font-variant-numeric:tabular-nums;border-inline:1px solid var(--hair)}
.fa-select{appearance:none;-webkit-appearance:none;max-width:min(240px,52vw);padding:8px 30px 8px 12px;border-radius:10px;border:1px solid var(--hair-2);background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23b9b3aa' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:10px 6px;color:var(--ink-1);font:500 12.5px/1.2 var(--sans);cursor:pointer;text-overflow:ellipsis}
.fa-select{color-scheme:dark}
html[dir=rtl] .fa-select{padding:8px 12px 8px 30px;background-position:left 11px center}
/* Jumu'ah's time: hour, minutes and AM/PM as three small choices, in her language's own digits */
.fa-timef{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.fa-timef .fa-tsel{max-width:none;min-width:58px;padding:8px 26px 8px 11px;font-variant-numeric:tabular-nums}
html[dir=rtl] .fa-timef .fa-tsel{padding:8px 11px 8px 26px}
.fa-timef .fa-link{margin-inline-start:4px;font-size:12.5px}
.fa-row-time{align-items:flex-start}
/* Method: one short line and "Change ›"; the whole list opens on that tap */
.fa-row-method{flex-wrap:nowrap}
.fa-method-l{font-size:12.5px;color:var(--ink-3);line-height:1.45}
.fa-change{flex:none;font-size:12.5px;text-decoration:none;color:var(--ice);white-space:nowrap}
.fa-select.fa-method{display:block;width:100%;max-width:none;margin:0 0 8px}
.fa-select.fa-method[hidden]{display:none}
.fa-select option{background:#12141e;color:#f6efe6}
:is(.fa-select,.fa-time):focus-visible,.fa-search input:focus-visible{outline:2px solid rgba(var(--moon),.6);outline-offset:1px}
.fa-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--hair)}
.fa-row-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.fa-row-t b{font-weight:500;font-size:14px;color:var(--ink-1)}
.fa-row-t small{font-size:12px;color:var(--ink-3);line-height:1.4}
html[lang=ar] .fa-row-t small{line-height:1.6}
.fa-fine{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}
.fa-search{position:relative;margin:2px 0 6px}
.fa-search[hidden]{display:none}
.fa-search input{width:100%;padding:11px 14px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.03);color:var(--ink-1);font:400 14px/1.3 var(--sans)}
.fa-search input::placeholder{color:var(--ink-3)}
.fa-sugg{list-style:none;margin:6px 0 0;padding:4px;border-radius:12px;border:1px solid var(--hair)}
.fa-sugg[hidden]{display:none}
.fa-sugg-b{appearance:none;display:flex;flex-direction:column;gap:1px;width:100%;padding:8px 10px;border:0;border-radius:9px;background:none;color:var(--ink-1);font:inherit;text-align:start;cursor:pointer}
.fa-sugg-b:hover{background:rgba(var(--k-246-239-230,246,239,230),.06)}
.fa-sugg-b b{font-weight:500;font-size:13.5px}.fa-sugg-b small{font-size:12px;color:var(--ink-3)}
.fa-sugg-none{padding:8px 10px;font-size:12.5px;color:var(--ink-3)}
.fa-chosen{margin:4px 0 2px;font-size:13px;color:var(--ink-2)}.fa-chosen b{color:var(--ink-1);font-weight:500}
.fa-chosen[hidden]{display:none}
/* setup */
.fa-setup{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(3,4,10,.62);opacity:0;transition:opacity .2s ease-out}
.fa-setup.on{opacity:1}
.fa-setup-card{width:min(460px,100%);max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;padding:18px 20px 16px;border-radius:22px;background:#12141e;border:1px solid rgba(246,239,230,.2);box-shadow:0 30px 70px -30px #000;color:#f6efe6;transform:translateY(8px) scale(.985);transition:transform .22s cubic-bezier(.23,1,.32,1);
  --ink-1:#f6efe6;--ink-2:rgba(246,239,230,.74);--ink-3:rgba(246,239,230,.56);--hair:rgba(246,239,230,.10);--hair-2:rgba(246,239,230,.2);--k-246-239-230:246,239,230}
.fa-setup.on .fa-setup-card{transform:none}
.fa-setup-top{display:flex;align-items:center;justify-content:flex-end;margin:-8px -10px -18px 0}
html[dir=rtl] .fa-setup-top{margin:-8px 0 -18px -10px}
.fa-eyebrow{display:flex;align-items:center;gap:7px;margin:0;font-size:12.5px;color:var(--ink-3)}
.fa-setup-h{margin:0 0 6px;padding-inline-end:28px;font-family:var(--display);font-weight:400;font-size:28px;line-height:1.12;color:var(--ink-1)}
html[lang=ar] .fa-setup-h{font-size:24px;line-height:1.5}
.fa-setup-p{margin:0 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.fa-row-where{border-top:0;padding-top:4px}
.fa-setup .fa-sugg{background:#171a26}
.fa-cta{appearance:none;width:100%;margin:14px 0 2px;padding:12px 16px;border:0;border-radius:999px;background:var(--gold);color:#1d1408;font:600 14px/1.2 var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .2s ease}
.fa-cta:active{transform:scale(.98)}.fa-cta:disabled{opacity:.6}
/* the Arabic setup line */
/* the section's page */
.fa-wrap{display:block}
.fa-page{display:flex;flex-direction:column;gap:12px;margin:0 0 12px}
.fa-hero.sc-hero{--tint:radial-gradient(40% 46% at 24% 18%,rgba(var(--moon),.10),rgba(var(--moon),0) 70%),radial-gradient(46% 40% at 29% 82%,rgba(92,225,255,.08),rgba(92,225,255,0) 72%);margin:0;min-height:min(560px,66vh)}
.fa-sky{position:absolute;inset:0;z-index:0}
.fa-sky canvas{display:block;width:100%;height:100%}
.fa-plate{position:relative;z-index:1;grid-column:2;align-self:center;margin:22px 22px 22px 0;padding:18px 20px 16px;border-radius:20px;background:rgba(14,16,25,.96);border:1px solid rgba(var(--moon),.13);display:flex;flex-direction:column;gap:4px;color:var(--ink-1)}
/* in Arabic the sheet reads right to left, but the sky is never mirrored: the east stays on the left, as it is */
html[dir=rtl] .fa-hero{direction:ltr}html[dir=rtl] .fa-plate{direction:rtl}
.fa-plate.plain{grid-column:auto;margin:0;align-self:stretch}
.fa-mode{align-self:flex-start;margin:0 0 10px}
.fa-plate .fa-eyebrow{font-size:13px;color:var(--ink-2)}
.fa-note{margin:2px 0 8px;font-size:12.5px;color:var(--ink-3)}
.fa-lab{margin:6px 0 0;font-size:12px;color:var(--ink-3)}
.fa-big{margin:2px 0 0;font-family:var(--display);font-weight:400;font-size:clamp(34px,3.4vw,44px);line-height:1.02;color:var(--ink-1);font-variant-numeric:lining-nums}
.fa-big .g{color:var(--gold)}
html[lang=ar] .fa-big{font-size:clamp(28px,2.8vw,36px);line-height:1.45}
.fa-in{margin:2px 0 6px;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.fa-sub{margin:2px 0;font-size:12.5px;line-height:1.5;color:var(--ink-2)}
.fa-hair{display:block;height:1px;margin:8px 0;background:var(--hair)}
.fa-times{list-style:none;margin:8px 0 4px;padding:0;border-top:1px solid var(--hair)}
.fa-times li{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid var(--hair);font-size:14px;color:var(--ink-2)}
.fa-times li b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums}
.fa-times li small{margin-inline-start:7px;font-size:11.5px;color:var(--ink-3)}
.fa-times li.past,.fa-times li.past b{color:var(--ink-3)}
.fa-times li.sun{font-size:13px}
.fa-times li.nx,.fa-times li.nx b{color:var(--gold)}
html[lang=ar] .fa-times li{line-height:1.6}
.fa-qibla{display:flex;align-items:center;gap:7px;margin:6px 0 0;font-size:13px;color:var(--ink-2)}
.fa-q{color:var(--ink-2);flex:none}
.fa-foot{margin:6px 0 0;font-size:12px;line-height:1.5;color:var(--ink-3)}
.fa-foot b{font-weight:500;color:var(--ink-2)}
.fa-link{appearance:none;padding:0;border:0;background:none;color:var(--ice);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(92,225,255,.4)}
.fa-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:12px}
/* ---------- Faith · the live qibla compass (public/js/qibla.js; Nov 1 2026). A calm card on deep space: the rose
   turns with her phone so its N is true north, the gold needle and the small Kaaba mark at the rim point to the qibla,
   and the fixed notch at the top is where her phone points. Facing the qibla (within 3°), the gold brightens. Only
   transform and opacity move; the words sit on the card's solid surface. Static (north up) with no compass. ---------- */
.fa-compass{position:relative;display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);column-gap:40px;align-items:center;margin:0 0 12px;padding:22px 30px;border-radius:24px;background:radial-gradient(55% 75% at 18% 50%,rgba(245,198,107,.05),rgba(245,198,107,0) 70%),#05060c;border:1px solid rgba(245,198,107,.12)}
.fc-dial{position:relative;width:100%;max-width:300px;aspect-ratio:1;justify-self:center;direction:ltr}
.fc-svg{display:block;width:100%;height:100%;overflow:visible}
.fc-rose{transform-box:view-box;transform-origin:120px 120px;will-change:transform} /* (the dial's centre in the viewBox's own units) */
.fc-ring{fill:rgba(246,239,230,.015);stroke:rgba(246,239,230,.2);stroke-width:1}
.fc-tick{stroke:rgba(246,239,230,.2);stroke-width:1}
.fc-tick.l{stroke:rgba(246,239,230,.42);stroke-width:1.4}
.fc-pt{fill:var(--ink-3);font:500 13px var(--sans)}
.fc-pt.n{fill:var(--ink-1)}
.fc-needle{stroke:rgba(245,198,107,.72);stroke-width:2;stroke-linecap:round;transition:stroke .24s cubic-bezier(.23,1,.32,1)}
.fc-k-body{fill:#0d0c10;stroke:rgba(245,198,107,.8);stroke-width:1.3;transition:stroke .24s cubic-bezier(.23,1,.32,1)}
.fc-k-band{stroke:var(--gold);stroke-width:1.6}
.fc-hub{fill:var(--ink-2)}
.fc-index{fill:rgba(246,239,230,.6);opacity:0;transition:opacity .24s cubic-bezier(.23,1,.32,1)}
.fc-glow{fill:rgba(245,198,107,.045);stroke:rgba(245,198,107,.45);stroke-width:1.5;opacity:0;transition:opacity .24s cubic-bezier(.23,1,.32,1)}
.fa-compass.is-live .fc-index{opacity:1}
.fa-compass[data-state=aligned] .fc-glow{opacity:1}
.fa-compass[data-state=aligned] .fc-needle,.fa-compass[data-state=aligned] .fc-k-body{stroke:var(--gold)}
.fa-compass[data-state=aligned] .fc-index{fill:var(--gold)}
.fc-read{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;text-align:start}
.fc-head{margin:0;font-size:13.5px;color:var(--ink-2)}
.fc-big{display:flex;align-items:center;gap:10px;margin:0;font:400 36px/1.15 var(--display);letter-spacing:-.01em;color:var(--ink-1);font-variant-numeric:tabular-nums}
html[lang=ar] .fc-big{font-size:30px;line-height:1.4;letter-spacing:0}
.fa-compass[data-state=aligned] .fc-big{color:var(--gold)}
.fc-pt-w{color:var(--ink-2)}
.fc-turn:empty{display:none}
.fc-arrow{display:block;width:26px;height:26px;fill:none;stroke:var(--gold);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fc-sub{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-2);text-wrap:balance}
.fc-warn{margin:2px 0 0;padding:7px 12px;border-radius:12px;background:rgba(92,225,255,.07);border:1px solid rgba(92,225,255,.22);font-size:14px;line-height:1.45;color:var(--ice)}
.fc-warn[hidden],.fc-start[hidden]{display:none}
.fc-start{min-height:44px;margin-top:6px;padding:8px 20px;font-size:14px}
.fc-where{margin:8px 0 0;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.fc-fine{margin:0;max-width:44ch;font-size:12.5px;line-height:1.5;color:var(--ink-3);text-wrap:balance}
.fc-say{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:760px){
  .fa-compass{grid-template-columns:1fr;row-gap:14px;padding:18px 16px 16px;border-radius:20px;background:radial-gradient(70% 45% at 50% 28%,rgba(245,198,107,.05),rgba(245,198,107,0) 70%),#05060c}
  .fc-dial{max-width:min(272px,78vw)}
  .fc-read{align-items:center;text-align:center}
  .fc-big{font-size:32px}
  html[lang=ar] .fc-big{font-size:27px}
}
@media (prefers-reduced-motion:reduce){.fc-needle,.fc-k-body,.fc-index,.fc-glow{transition:none}}
/* ---------- end of the qibla compass ---------- */
/* the real moon, this month (public/js/faith-moon.js): the moon on its own night sky, the words on a solid sheet beside
   it, and a line through the lunar month to drag along. Moonlight is the colour; gold marks now and the holy days */
.fa-moonv{position:relative;display:grid;grid-template-columns:minmax(260px,380px) minmax(0,1fr);grid-template-areas:"stage read" "line line" "fine fine";column-gap:40px;row-gap:6px;margin:0 0 12px;padding:22px 30px 18px;border-radius:24px;background:radial-gradient(60% 70% at 20% 34%,rgba(var(--moon),.06),rgba(var(--moon),0) 70%),#05060c;border:1px solid rgba(var(--moon),.12)}
.fm-stage{grid-area:stage;position:relative;aspect-ratio:1;width:100%;max-width:380px;justify-self:center;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.fm-stage::before{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(closest-side,rgba(233,230,220,.16) 58%,rgba(233,230,220,.05) 78%,rgba(233,230,220,0));opacity:var(--fm-glow,.6);pointer-events:none}
.fm-stars{position:absolute;inset:0;display:block;width:100%;height:100%}
.fm-moon{position:absolute;inset:18%;display:block;width:64%;height:64%;will-change:transform} /* (its own layer: redrawing the moon repaints nothing else) */
.fm-stage.dragging{cursor:grabbing}
.fm-hit{position:absolute;inset-inline-start:50%;top:50%;width:72%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
html[dir=rtl] .fm-hit{translate:50% -50%}
.fm-hit:focus-visible{outline:2px solid rgba(var(--moon),.7);outline-offset:4px}
.fm-pop{position:relative;width:min(340px,100%);margin-top:6px;padding:12px 14px 10px;border-radius:16px;background:#0e1019;border:1px solid rgba(var(--moon),.2);text-align:start;animation:fmPop .2s cubic-bezier(.23,1,.32,1)}
.fm-pop[hidden]{display:none}
@keyframes fmPop{from{opacity:0;transform:translateY(6px) scale(.98)}}
.fm-pop-h{margin:0 34px 6px 0;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
html[dir=rtl] .fm-pop-h{margin:0 0 6px 34px}
.fm-pop-x{position:absolute;top:2px;inset-inline-end:2px;width:44px;height:44px;border:0;border-radius:50%;background:none;color:var(--ink-3);font:400 20px/1 var(--sans);cursor:pointer}
.fm-pop-x:hover{color:var(--ink-1)}.fm-pop-x:active{transform:scale(.94)}
.fm-pop-dl{display:grid;grid-template-columns:auto 1fr;gap:4px 18px;margin:0;font-size:14.5px}
.fm-pop-dl dt{color:var(--ink-2)}.fm-pop-dl dd{margin:0;color:var(--ink-1);font-variant-numeric:tabular-nums;text-align:end}
.fm-pop-dl dd.none{color:var(--ink-3);font-size:13px}
.fm-read{contain:layout paint;grid-area:read;align-self:center;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.fm-when{margin:0;font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.fm-name{margin:0;font:400 40px/1.08 var(--display);letter-spacing:-.01em;color:var(--ink-1)}
html[lang=ar] .fm-name{font-size:36px;line-height:1.3;letter-spacing:0}
.fm-facts{margin:2px 0 0;font-size:15px;line-height:1.5;color:var(--ink-2)}
.fm-facts b{font-weight:500;color:rgb(var(--moon))}
.fm-facts>*{white-space:nowrap}
.fm-sky,.fm-near{margin:0;font-size:13.5px;color:var(--ink-3)}
.fm-near{color:var(--gold)}
.fm-back{min-height:44px;margin-top:8px;padding:8px 18px;border-color:rgba(245,198,107,.5);color:var(--gold)}
.fm-back:hover{border-color:var(--gold)}
.fm-back[hidden]{display:none}
.fm-line{grid-area:line;margin-top:10px}
.fm-row{position:relative;height:44px}
.fm-track{position:relative;height:44px}
.fm-track::before{content:"";position:absolute;inset-inline:0;top:21px;height:3px;border-radius:3px;background:var(--fm-grad,rgba(var(--moon),.2))}
.fm-dot{position:absolute;top:22px;width:9px;height:9px;margin:-4.5px 0 0;translate:-50% 0;border-radius:50%;pointer-events:none}
html[dir=rtl] .fm-dot{translate:50% 0}
.fm-dot.new{background:#05060c;border:1.5px solid rgba(var(--moon),.75)}
.fm-dot.full{background:rgb(var(--moon));box-shadow:0 0 10px rgba(var(--moon),.6)}
.fm-dot.crescent{background:#05060c;border:1.5px solid rgba(var(--moon),.75);border-inline-start-color:transparent}
.fm-dot.tick{width:2px;height:9px;border-radius:1px;background:rgba(var(--moon),.4)}
.fm-dot.holy{width:8px;height:8px;margin-top:-4px;border-radius:2px;rotate:45deg;background:var(--gold)}
.fm-dot.now{width:2px;height:20px;margin-top:-10px;border-radius:1px;background:var(--gold)}
.fm-range{position:absolute;inset:0;width:100%;height:44px;margin:0;background:none;appearance:none;-webkit-appearance:none;cursor:grab;touch-action:pan-y}
.fm-range:active{cursor:grabbing}
.fm-range::-webkit-slider-runnable-track{height:44px;background:none}
.fm-range::-moz-range-track{height:44px;background:none}
.fm-range::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:10px;border-radius:50%;background:radial-gradient(circle at 38% 34%,#fbf7ee,#d9d4c8 70%,#b6b1a5);border:2px solid #05060c;box-shadow:0 0 0 1px rgba(var(--moon),.5),0 0 16px rgba(var(--moon),.45);transition:transform .16s cubic-bezier(.23,1,.32,1)}
.fm-range::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 38% 34%,#fbf7ee,#d9d4c8 70%,#b6b1a5);border:2px solid #05060c;box-shadow:0 0 0 1px rgba(var(--moon),.5),0 0 16px rgba(var(--moon),.45)}
.fm-range:active::-webkit-slider-thumb{transform:scale(1.12)}
.fm-range:focus{outline:none}
.fm-range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px rgba(var(--moon),.85),0 0 16px rgba(var(--moon),.45)}
.fm-range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px rgba(var(--moon),.85)}
.fm-mark{position:absolute;top:0;min-height:44px;translate:-50% 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px 6px;border:0;border-radius:10px;background:none;color:var(--ink-2);font:400 12px/1.25 var(--sans);white-space:nowrap;cursor:pointer}
html[dir=rtl] .fm-mark{translate:50% 0}
html[dir=rtl] .fm-mark.first{translate:0 0}
.fm-mark.first{translate:0 0;align-items:flex-start;padding-inline-start:0}
.fm-mark.last{translate:-100% 0;align-items:flex-end;padding-inline-end:0}
html[dir=rtl] .fm-mark.last{translate:100% 0}
.fm-mark .n{color:var(--ink-2)}.fm-mark .d{color:var(--ink-3);font-size:11.5px;font-variant-numeric:tabular-nums}
.fm-mark.full .n{color:rgb(var(--moon))}
.fm-mark.holy .n{color:var(--gold)}
.fm-mark:hover .n{color:var(--ink-1)}.fm-mark:active{transform:scale(.97)}
.fm-mark:focus-visible{outline:2px solid rgba(var(--moon),.7);outline-offset:0}
.fm-row.up .fm-mark{justify-content:flex-end}
.fm-row.two{height:84px}
.fm-row.up .fm-mark{top:auto;bottom:0}
.fm-row.up .fm-mark.out{bottom:40px}
.fm-row .fm-mark.out{top:40px}
.fm-row.up .fm-mark.out{top:auto}
.fm-notes{grid-area:fine;display:flex;flex-direction:column;gap:4px;margin-top:6px}
.fm-notes .fa-fine{margin:0}
.fm-local{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.fm-local[hidden],.fm-notes [hidden]{display:none}
.fa-panel.tile{gap:8px;animation:none}
.fa-panel h4{margin:0 0 2px;font-size:15px;font-weight:500;color:var(--ink-1)}
.fa-spine{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column}
.fa-spine li{display:grid;grid-template-columns:72px 14px minmax(0,1fr);gap:8px;align-items:start;padding:6px 0;font-size:13.5px;color:var(--ink-2)}
.fa-spine .tm{padding-top:1px;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.fa-spine .dt{width:9px;height:9px;margin-top:5px;border-radius:50%;justify-self:center;background:var(--ice)}
.fa-spine .what{display:flex;flex-direction:column;gap:1px;min-width:0}
.fa-spine .what b{font-weight:500;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fa-spine .what small{font-size:11.5px;color:var(--ink-3)}
.fa-spine li.prayer .dt,.fa-spine li.jumuah .dt{background:none;box-shadow:inset 0 0 0 1.5px rgb(var(--moon))}
.fa-spine li.prayer .what b{color:rgb(var(--moon));font-weight:400}
.fa-spine li.jumuah .what{padding:6px 9px;border-radius:10px;background:repeating-linear-gradient(135deg,rgba(var(--moon),.08) 0 6px,rgba(var(--moon),.02) 6px 12px);border:1px solid rgba(var(--moon),.3)}
.fa-spine li.jumuah .what b{color:rgb(var(--moon))}
.fa-spine li.proposed .what{padding:6px 9px;border-radius:10px;border:1px dashed rgba(245,198,107,.6)}
.fa-spine li.proposed .dt{background:var(--gold)}
.fa-spine li.past{opacity:.55}
.fa-facts{display:flex;flex-direction:column;gap:8px}
.fa-fact{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:rgba(var(--k-246-239-230,246,239,230),.035)}
.fa-fact b{font-weight:500;font-size:13.5px;color:var(--ink-1)}.fa-fact span{font-size:12.5px;color:var(--ink-3);line-height:1.45}
.fa-kv{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--hair);font-size:13.5px;color:var(--ink-2)}
.fa-kv b{font-weight:500;color:var(--ink-1)}
.fa-prog{height:4px;margin:6px 0 0;border-radius:4px;background:var(--hair);overflow:hidden}
.fa-prog i{display:block;height:100%;background:var(--mint);border-radius:4px}
.fa-set{padding:0}
.fa-set>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;font-size:15px;font-weight:500;color:var(--ink-1);border-radius:18px}
.fa-set>summary::-webkit-details-marker{display:none}
.fa-set>summary::after{content:"";width:8px;height:8px;border-inline-end:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.fa-set[open]>summary::after{transform:rotate(-135deg)}
.fa-set>summary:focus-visible{outline:2px solid rgba(var(--moon),.7);outline-offset:-2px}
.fa-group{padding:4px 16px 12px}
.fa-group h5{margin:10px 0 4px;font-size:12px;font-weight:500;color:var(--ink-3)}
.fa-group .fa-search{margin:4px 0 8px}
/* the adhan (Nov 6 2026): each prayer's choice at its time, the voice with a preview, the credits */
.fa-lead{margin:0 0 4px}
.fa-row-prayer .fa-row-t small{font-variant-numeric:tabular-nums}
.fa-voice{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}
.fa-play{gap:7px;min-width:78px}
.fa-play-i{width:0;height:0;border-style:solid;border-width:5px 0 5px 8px;border-color:transparent transparent transparent currentColor}
/* (media symbols are never mirrored: play points right in Arabic too) */
.fa-play-i.stop{width:9px;height:9px;border:0;border-radius:2px;background:currentColor}
.fa-play.on{border-color:rgba(245,198,107,.6);color:var(--gold)}
.fa-credits{margin:10px 0 0;font-size:12.5px;color:var(--ink-3)}
.fa-credits>summary{display:inline-flex;align-items:center;min-height:32px;cursor:pointer;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}
.fa-credits>summary:focus-visible{outline:2px solid rgba(var(--moon),.7);outline-offset:2px;border-radius:4px}
.fa-credits ul{margin:4px 0 0;padding-inline-start:18px;line-height:1.6}
.fa-credits a{color:var(--ice)}
.fa-credit-by{white-space:nowrap}
@media (max-width:560px){.fa-row-voice{flex-wrap:wrap}.fa-row-voice .fa-voice{width:100%;justify-content:space-between}}
/* a prayer's choice and an on/off switch stay beside their words on a phone (the words wrap instead) */
.fa-row.fa-row-prayer,.fa-row.fa-row-switch{flex-wrap:nowrap}
/* the adhan playing while NOVA is open: a calm card with Stop (or Play adhan when the browser needs a tap first) */
.fa-adhan{position:fixed;z-index:60;inset-inline-end:20px;bottom:calc(var(--dock-space,108px) + 12px);width:min(340px,calc(100vw - 32px));padding:14px 16px 14px;border-radius:18px;background:#10121f;border:1px solid rgba(245,198,107,.42);box-shadow:0 20px 50px -18px #000;color:var(--ink-1);opacity:0;transform:translateY(8px);transition:opacity .22s ease-out,transform .26s cubic-bezier(.23,1,.32,1)}
.fa-adhan.on{opacity:1;transform:none}
.fa-adhan-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--gold)}
.fa-adhan-t{margin:6px 0 0;font-family:var(--display);font-size:22px;line-height:1.25;color:var(--ink-1)}
.fa-adhan-t b{font-weight:inherit;color:var(--gold)}
html[lang=ar] .fa-adhan-t{line-height:1.6}
.fa-adhan-s{margin:4px 0 0;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.fa-adhan-a{display:flex;gap:8px;margin-top:12px}
.fa-adhan-a .fa-pill{min-height:40px;padding:8px 18px;font-size:13.5px}
@media (max-width:600px){.fa-adhan{inset-inline:16px;width:auto}}
@media (prefers-reduced-motion:reduce){.fa-adhan{transition:opacity .2s ease-out;transform:none}}
.fa-adjust{padding:8px 0 0;border-top:1px solid var(--hair)}
.fa-adjust .fa-lab{margin:0 0 4px}
.fa-adj-r{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0;font-size:13.5px;color:var(--ink-1)}
.fa-adj-r small{color:var(--ink-3);font-size:12px;font-variant-numeric:tabular-nums;margin-inline-start:4px}
.fa-remove{appearance:none;margin:12px 0 0;padding:9px 14px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font:500 12.5px/1.2 var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s ease,border-color .2s ease}
.fa-remove:active{transform:scale(.97)}.fa-remove.armed{color:var(--rose);border-color:rgba(255,122,182,.5)}
/* the day view in Right now: prayers as thin moonlight, Jumu'ah as the soft band kept free */
.tl-row.tl-faith.prayer{padding:5px 0;border-top:1px solid rgba(var(--moon),.16)}
.tl-row.tl-faith.prayer .m{flex-direction:row;align-items:baseline;justify-content:space-between;gap:10px}
.tl-row.tl-faith.prayer .m b{font-weight:400;font-size:12.5px;color:rgb(var(--moon))}
.tl-row.tl-faith.prayer .m small{color:rgba(var(--moon),.75)}
.tl-row.tl-faith.jumuah{margin:4px 0;padding:8px 10px;border-radius:10px;border:1px solid rgba(var(--moon),.3);background:repeating-linear-gradient(135deg,rgba(var(--moon),.08) 0 6px,rgba(var(--moon),.02) 6px 12px)}
.tl-row.tl-faith.jumuah .m b{color:rgb(var(--moon))}
@media (max-width:760px){
  .fa-hero.sc-hero{grid-template-columns:1fr;min-height:0}
  .fa-moonv{grid-template-columns:1fr;grid-template-areas:"stage" "read" "line" "fine";padding:14px 16px 14px;border-radius:20px;row-gap:4px}
  .fm-stage{max-width:290px}
  .fm-read{align-items:center;text-align:center}
  .fm-name{font-size:32px}
  html[lang=ar] .fm-name{font-size:30px}
  .fm-facts{font-size:14px}
  .fa-sky{position:relative;inset:auto;height:210px;min-height:0}
  .fa-plate,html[dir=rtl] .fa-plate{grid-column:1;margin:0 10px 10px;padding:16px 16px 14px}
  .fa-row{flex-wrap:wrap}
  .fa-spine li{grid-template-columns:64px 14px minmax(0,1fr)}
}
/* the line under the greeting names the city and "tomorrow" when it has to */
.fa-line-tm,.fa-line-city{white-space:nowrap}
/* an invitation that landed on a prayer: NOVA's reply, ready for her OK */
.fa-asks{display:flex;flex-direction:column;gap:10px}
.fa-ask{padding:14px 16px 12px;border-radius:18px;background:#10121c;border:1px solid rgba(245,198,107,.4);display:flex;flex-direction:column;gap:6px;color:var(--ink-2);transition:box-shadow .3s ease-out}
.fa-ask.flash{box-shadow:0 0 0 2px rgba(245,198,107,.55)}
.fa-ask-sep{font-style:normal;margin:0 7px;opacity:.6}
.fa-ask-top{display:flex;align-items:center;font-size:12px;color:var(--ink-3);min-height:28px;margin:-4px 0 0}
.fa-ask-k{color:var(--gold);font-weight:500}
.fa-ask-acc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.fa-ask-top .fa-x{margin-inline-start:auto;margin-inline-end:-8px}
.fa-ask-t{margin:0;font:400 22px/1.2 var(--display);color:var(--ink-1)}
.fa-ask-t b{font-weight:400}
html[lang=ar] .fa-ask-t{font-size:20px;line-height:1.5}
.fa-ask-w{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.fa-ask-w b{font-weight:500;color:var(--ink-1)}.fa-ask-w b.g{color:var(--gold)}
.fa-ask-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 14px;margin:8px 0 0;padding-top:10px;border-top:1px solid var(--hair);font-size:13px;line-height:1.5}
.fa-ask-dl dt{color:var(--ink-3);white-space:nowrap}
.fa-ask-dl dd{margin:0;min-width:0;color:var(--ink-1);overflow-wrap:anywhere}
.fa-ask-body{display:block;white-space:pre-wrap;color:var(--ink-2)}
.fa-ask-ta{width:100%;box-sizing:border-box;resize:vertical;padding:10px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.04);color:var(--ink-1);font:400 13px/1.5 var(--sans)}
.fa-ask-ta:focus-visible{outline:2px solid rgba(var(--moon),.6);outline-offset:1px}
.fa-ask-a{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.fa-pill.gold{background:var(--gold);border-color:var(--gold);color:#1d1408;font-weight:600}
.fa-pill.gold:hover{border-color:var(--gold);filter:brightness(1.06)}
.fa-ask .fa-fine{margin:2px 0 0}
.fa-ask.queued .fa-ask-dl{display:none}
.fa-ask-ok{margin-top:6px}.fa-ask-ok .cv-ok{margin:0;max-width:none}
.fa-spine li .what.open{appearance:none;background:none;border:0;padding:6px 9px;border-radius:10px;border:1px dashed rgba(245,198,107,.6);text-align:start;font:inherit;color:inherit;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.fa-spine li .what.open:hover{background:rgba(245,198,107,.07)}.fa-spine li .what.open:active{transform:scale(.99)}
.fa-spine li .what.open:focus-visible{outline:2px solid rgba(var(--moon),.75);outline-offset:2px}
.fa-spine li .what.open small::after{content:" ›"}
html[dir=rtl] .fa-spine li .what.open small::after{content:" ‹"}
/* the section's page keeps clear of the message bar under it */
.fa-wrap{padding-bottom:max(0px,calc(var(--dock-space,96px) - 36px))}/* the page already keeps 36px of its own; together they equal the dock height */
@media (max-width:760px){
  .fa-plate .fa-note{display:none}
  .fa-times li{padding:5px 0}
  .fa-plate{gap:2px}
  .fa-ask{padding:12px 14px 10px}
  .fa-ask-t{font-size:20px}
}
/* touch targets: every Faith control has at least a 44px hit area (small ones keep their look and grow only the invisible area) */
@media (pointer:coarse),(max-width:700px){
  .fa-pill,.fa-cta,.fa-remove,.fa-line-go,.fa-tsel,.fa-seg-b{min-height:44px}
  .fa-x,.fa-step-b,.fa-sw,.fa-link{position:relative}
  .fa-link::before{content:"";position:absolute;inset:-15px -8px}
  .fa-x::before,.fa-step-b::before{content:"";position:absolute;inset:-7px -6px}
  .fa-sw::before{content:"";position:absolute;inset:-11px -3px}
}
@media (prefers-reduced-motion:reduce){.fm-pop{animation:none}.fm-range::-webkit-slider-thumb,.fa-setup,.fa-setup-card,.fa-line-go,.fa-pill,.fa-seg-b,.fa-sw i,.fa-step-b,.fa-cta,.fa-remove,.fa-set>summary::after{transition:none}}
/* ---------- pull to refresh (phones; public/js/pullrefresh.js) ----------
   A star opens above the page as she pulls: it stretches and brightens, light flows into it while NOVA pulls in
   what's new, then one quiet line. Only transform and opacity move; the browser's own pull-to-refresh is off. */
@media (pointer:coarse){html,body{overscroll-behavior-y:contain}}
@media (max-width:760px){#life .life-detail{overscroll-behavior-y:contain}}
.pr{max-width:calc(100vw - 32px);width:max-content;position:fixed;left:50%;top:0;z-index:40;display:grid;justify-items:center;pointer-events:none;opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.pr.on{opacity:1}
#greet.pr-held .status{opacity:0;transition:opacity .16s cubic-bezier(.23,1,.32,1)} /* its last line would sit on the glance below while the greeting is pulled down */
.pr-star,.pr-flow{position:relative;grid-area:1/1;width:28px;height:28px}
.pr-star{transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s cubic-bezier(.23,1,.32,1)}
.pr.live .pr-star,.pr.live .pr-star i{transition:none}
.pr-star i{position:absolute;display:block;transition:opacity .2s,transform .2s cubic-bezier(.23,1,.32,1)}
.pr-glow{inset:-12px;border-radius:50%;background:radial-gradient(closest-side,rgba(92,225,255,.5),rgba(92,225,255,0));opacity:0}
.pr-v{left:50%;top:-4px;bottom:-4px;width:1.5px;margin-left:-.75px;border-radius:2px;background:linear-gradient(rgba(214,246,255,0),#e6faff 50%,rgba(214,246,255,0))}
.pr-h{top:50%;left:5px;right:5px;height:1.5px;margin-top:-.75px;border-radius:2px;background:linear-gradient(90deg,rgba(214,246,255,0),#e6faff 50%,rgba(214,246,255,0))}
.pr-core{left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#f4fdff;box-shadow:0 0 6px 1px rgba(92,225,255,.85)}
.pr.ready .pr-glow{opacity:1}
.pr.busy .pr-star{animation:pr-breathe .9s cubic-bezier(.45,0,.55,1) infinite alternate}
.pr-flow i{position:absolute;left:50%;top:50%;width:1.5px;height:12px;margin:-6px 0 0 -.75px;border-radius:2px;background:linear-gradient(rgba(92,225,255,0),rgba(170,238,255,.95));opacity:0;transform:rotate(var(--a)) translateY(-30px)}
.pr.busy .pr-flow i{animation:pr-in .9s cubic-bezier(.23,1,.32,1) infinite}
@keyframes pr-in{0%{opacity:0;transform:rotate(var(--a)) translateY(-34px) scaleY(.5)}35%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-9px) scaleY(1)}}
@keyframes pr-breathe{from{transform:scale(.94)}to{transform:scale(1.08)}}
.pr.said .pr-star{opacity:0;transform:scale(.6)}
.pr-say{position:relative;grid-area:1/1;align-self:center;display:inline-flex;align-items:center;gap:8px;padding:6px 13px 6px 11px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-8-10-22,8,10,22),.96);color:var(--ink-1);font:inherit;font-size:13px;line-height:1.25;white-space:normal;text-align:center;opacity:0;transform:scale(.96);transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1);pointer-events:none}
.pr-say::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 8px rgba(111,242,196,.7)}
.pr.warn .pr-say::before,.pr.fail .pr-say::before{background:var(--rose);box-shadow:0 0 8px rgba(255,122,182,.7)}
.pr.offline .pr-say::before,.pr.slow .pr-say::before{background:#f5c66b;box-shadow:0 0 8px rgba(245,198,107,.6)}
.pr.said.warn .pr-say::after,.pr.said.fail .pr-say::after{content:"";position:absolute;inset:-8px -10px} /* a 44px target around the pill */
/* the pill is only as tall as its line; the bar of the status chrome steps aside while a life section is pulled */
html.pr-world :is(#menu,#life .life-menu,#life .life-top,#life .life-back,#life .life-up,#life .life-hint){opacity:0!important;pointer-events:none!important;transition:opacity .16s cubic-bezier(.23,1,.32,1)}
.pr-say:empty{display:none}
.pr.said .pr-say{opacity:1;transform:none}
.pr.said.warn .pr-say,.pr.said.fail .pr-say{pointer-events:auto;border-color:rgba(255,122,182,.45);cursor:pointer}
.pr.said.warn .pr-say:active,.pr.said.fail .pr-say:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){.pr-flow{display:none}.pr.busy .pr-star{animation:none}.pr-star,.pr-star i,.pr-say{transition:opacity .2s}.pr-say,.pr.said .pr-star{transform:none}}
/* ---------- New Year, made doable (Dreams & goals; public/js/newyear.js) ----------
   One screen over deep space: the look back (a story), the builder (talk it into a plan), each goal's page (the next
   step the brightest, closest star) and the monthly check-in. Text always sits on solid surfaces. Motion only where it
   means something: the plan building row by row, light between synapses while NOVA thinks, the one live step breathing. */
.ny{--ny-sheet:#0d0f19;--ny-sheet2:#151827;--ny-sheet3:#1c2033;--ny-col:#0a0b14;--ny-ease:cubic-bezier(.23,1,.32,1);--ny-tone:#a98bff;
  position:fixed;inset:0;height:100vh;height:100dvh;z-index:105;background:var(--night,#03040a);color:var(--ink-1);font-family:var(--sans);overflow:hidden;opacity:0;transition:opacity .22s var(--ny-ease);outline:none}
.ny.on{opacity:1}
.ny-sky{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
html[dir=rtl] .ny-sky{transform:scaleX(-1)}
.ny-sky .ny-think{opacity:0;transition:opacity .25s ease}
.ny.thinking .ny-sky .ny-think{opacity:1}
.ny-sky .ny-tone{opacity:0;transition:opacity .4s ease}
.ny.k-story .ny-sky .ny-tone{opacity:1}
.ny-tw{animation:nyTw 6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.ny-pulse{animation:nyPulse 2.4s var(--ny-ease) infinite;transform-box:fill-box;transform-origin:center}
@keyframes nyTw{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes nyPulse{0%{transform:scale(.8);opacity:.9}100%{transform:scale(1.9);opacity:0}}
.ny-body{position:relative;z-index:1;height:100%}
.ny-wait{position:absolute;inset-inline-start:40px;top:50%;margin:0;color:var(--ink-2);font-size:17px}
.ny-x{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--ny-sheet2,#151827);border:1px solid var(--hair);color:var(--ink-2);transition:transform .16s cubic-bezier(.23,1,.32,1),color .15s ease}
.ny-x:hover{color:var(--ink-1)}.ny-x:active{transform:scale(.95)}
.ny-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 20px;border-radius:999px;background:var(--gold);color:var(--h-1a1206,#1d1408);font-weight:600;font-size:15.5px;line-height:1.2;white-space:nowrap;transition:transform .16s cubic-bezier(.23,1,.32,1),filter .15s ease}
.ny-btn:hover{filter:brightness(1.06)}.ny-btn:active{transform:scale(.97)}
.ny-btn.ghost{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.ny-btn:disabled{opacity:.5}
.ny-link{color:var(--ink-2);font-size:14.5px;min-height:36px;padding:6px 2px;text-decoration:underline;text-decoration-color:var(--hair-2);text-underline-offset:4px;transition:color .15s ease}
.ny-link:hover{color:var(--ink-1)}
.ny-link.quiet{font-size:13.5px;color:var(--ink-3)}
.ny-small{font-size:14px;line-height:1.5;color:var(--ink-3);margin:0}
.ny-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ny-chip{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:8px 14px;border-radius:999px;border:1px solid var(--hair-2);background:var(--ny-sheet2,#151827);color:var(--ink-1);font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.ny-chip:hover{border-color:rgba(245,198,107,.55)}.ny-chip:active{transform:scale(.97)}
.ny-chip.static{min-height:0;padding:6px 12px;cursor:default}.ny-chip.static:hover{border-color:var(--hair-2)}
/* in Dreams & goals: the invitation, a check-in that's due, and the builder all year */
.ny-slot{display:grid;gap:12px;margin:0 0 16px}
.ny-slot:empty{display:none}
.ny-invite{display:grid;gap:10px;padding:18px 20px 20px;border-radius:20px;background:#0d0f19;border:1px solid rgba(245,198,107,.38);animation:nyIn .26s cubic-bezier(.23,1,.32,1) both}
.ny-invite.k-checkin{border-color:rgba(92,225,255,.3)}
.ny-inv-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.ny-inv-top .ny-x{width:34px;height:34px}
.ny-k{font-size:14px;color:var(--gold)}
.ny-invite.k-checkin .ny-k{color:var(--ice)}
.ny-inv-t{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(24px,2.4vw,30px);line-height:1.12;color:var(--ink-1);text-wrap:balance}
.ny-plan-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.ny-plan-row .ny-link{color:var(--gold);text-decoration-color:rgba(245,198,107,.4)}
.ny-plan-row .ny-link.quiet{color:var(--ink-3);text-decoration-color:var(--hair-2)}
.ny-chip-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(245,198,107,.7)}
@keyframes nyIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* the story */
.ny-prog{position:absolute;inset-inline:40px;top:calc(26px + env(safe-area-inset-top,0px));display:flex;gap:6px;z-index:3}
.ny-prog i{flex:1;height:3px;border-radius:3px;background:rgba(255,255,255,.18);overflow:hidden}
.ny-prog b{display:block;height:100%;background:rgba(255,255,255,.9);transform:scaleX(0);transform-origin:left center}
html[dir=rtl] .ny-prog b{transform-origin:right center}
.ny-meta{position:absolute;inset-inline:40px;top:calc(42px + env(safe-area-inset-top,0px));display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:3;font-size:15px;color:var(--ink-3)}
.ny-ctl{display:flex;align-items:center;gap:14px}
.ny-stage{position:absolute;inset:0;z-index:2;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:pan-x}
.ny-ch{position:absolute;inset-inline-start:40px;top:150px;width:min(620px,calc(100% - 80px));display:flex;flex-direction:column;gap:16px;padding:40px 44px;border-radius:24px;background:#0d0f19;border:1px solid var(--hair);opacity:0;transform:translateY(8px);transition:opacity .26s cubic-bezier(.23,1,.32,1),transform .26s cubic-bezier(.23,1,.32,1);cursor:auto}
.ny-ch.in{opacity:1;transform:none}
.ny-ch.t-rose{border-color:rgba(255,122,182,.28)}
.ny-month{margin:0;font-size:15px;color:var(--violet)}
.t-mint .ny-month{color:var(--mint)}.t-gold .ny-month{color:var(--gold)}.t-rose .ny-month{color:var(--rose)}.t-ice .ny-month{color:var(--ice)}
.ny-h1{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(34px,4.2vw,52px);line-height:1.04;color:var(--ink-1);text-wrap:balance}
.ny-line{margin:0;font-size:19px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.ny-ch-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin-top:8px}
.ny-src{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-3)}
.ny-src::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--violet);box-shadow:0 0 8px rgba(169,139,255,.6)}
.t-rose .ny-src::before{background:var(--rose);box-shadow:0 0 8px rgba(255,122,182,.5)}
.t-mint .ny-src::before{background:var(--mint);box-shadow:0 0 8px rgba(111,242,196,.5)}
.t-gold .ny-src::before{background:var(--gold);box-shadow:0 0 8px rgba(245,198,107,.5)}
.ny-words{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}
.ny-words .ny-small{margin-inline-end:4px}
.ny-pick{width:min(660px,calc(100% - 80px))}
.ny-picks{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:10px}
.ny-pick-b{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:15px 20px;border-radius:16px;background:var(--ny-sheet2,#151827);border:1px solid var(--hair);text-align:start;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease,background-color .15s ease}
.ny-pick-b:hover{border-color:rgba(245,198,107,.6);background:#1a1b25}.ny-pick-b:active{transform:scale(.985)}
.ny-pick-t{display:grid;gap:3px;min-width:0}
.ny-pick-t b{font-weight:600;font-size:18px;color:var(--ink-1)}
.ny-pick-t small{font-size:14.5px;color:var(--ink-3)}
.ny-pick-r{font-size:14.5px;color:var(--ink-3)}
.ny-pick-b:hover .ny-pick-r{color:var(--gold)}
.ny-pick-r.ice{color:var(--ice)}
.ny-picks li.say .ny-pick-b{background:transparent;border-style:dashed;border-color:var(--hair-2)}
.ny-picks li.say b{font-weight:500;color:var(--ink-2)}
/* conversations: the builder, the three questions, the check-in */
.ny-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px}
.ny-head>b{font-weight:500;font-size:15.5px;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ny-log{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:8px 2px;scrollbar-width:thin;overscroll-behavior:contain}
.ny-log>:first-child{margin-top:auto}
.ny-log.mini{flex:none;overflow:visible;padding:0}
.ny-log.mini>:first-child{margin-top:0}
.ny-msg{align-self:flex-start;max-width:88%;padding:13px 17px;border-radius:20px 20px 20px 8px;background:var(--ny-sheet2,#151827);border:1px solid var(--hair);color:var(--ink-1);font-size:16.5px;line-height:1.5;text-wrap:pretty;animation:nyIn .22s cubic-bezier(.23,1,.32,1) both}
html[dir=rtl] .ny-msg{border-radius:20px 20px 8px 20px}
.ny-msg.me{align-self:flex-end;border-radius:20px 20px 8px 20px;background:var(--ny-sheet3,#1c2033)}
html[dir=rtl] .ny-msg.me{border-radius:20px 20px 20px 8px}
.ny-msg.thinking{display:flex;gap:6px;padding:16px 18px}
.ny-msg.thinking i{width:7px;height:7px;border-radius:50%;background:var(--ice);opacity:.35;animation:nyDot 1.2s ease-in-out infinite}
.ny-msg.thinking i:nth-child(2){animation-delay:.15s}.ny-msg.thinking i:nth-child(3){animation-delay:.3s}
@keyframes nyDot{0%,100%{opacity:.25}50%{opacity:1}}
.ny-why{align-self:flex-start;margin:0;font-size:14px;color:var(--ink-3)}
.ny-chips{display:flex;flex-wrap:wrap;gap:8px}
.ny-chips:empty{display:none}
.ny-compose{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 20px;border-radius:999px;background:var(--ny-sheet2,#151827);border:1px solid var(--hair-2);transition:border-color .15s ease}
html[dir=rtl] .ny-compose{padding:6px 20px 6px 6px}
.ny-compose:focus-within{border-color:rgba(92,225,255,.45)}
.ny-compose input{flex:1;min-width:0;text-overflow:ellipsis;background:none;border:0;outline:none;color:var(--ink-1);font:inherit;font-size:16px;padding:10px 0}
.ny-compose input::placeholder{color:var(--ink-3)}
.ny-mic,.ny-send{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.ny-mic{background:rgba(92,225,255,.12);border:1px solid rgba(92,225,255,.4);color:var(--ice)}
.ny-mic.on{background:rgba(92,225,255,.28);box-shadow:0 0 0 4px rgba(92,225,255,.12)}
.ny-send{background:var(--ink-1);color:var(--h-141018,#141018)}
.ny-mic:active,.ny-send:active{transform:scale(.95)}
.ny-qs{list-style:none;margin:0;padding:14px 16px;display:grid;gap:10px;border-radius:16px;background:var(--ny-sheet2,#151827);border:1px solid var(--hair);font-size:16px;color:var(--ink-3)}
.ny-qs li{display:flex;gap:8px}.ny-qs li.now{color:var(--ink-1)}.ny-qs li.now .ny-qn{color:var(--ice)}.ny-qs li.done{color:var(--ink-3)}.ny-qs li.done .ny-qn{color:var(--mint)}
.ny-qn{flex:none;min-width:1.2em}
/* the builder: the conversation on a solid column, the plan materialising beside it */
.ny-b{position:absolute;inset:0;display:grid;grid-template-columns:min(540px,42vw) minmax(0,1fr)}
.ny-convo{display:flex;flex-direction:column;gap:12px;min-height:0;padding:calc(24px + env(safe-area-inset-top,0px)) 30px calc(24px + env(safe-area-inset-bottom,0px));background:#0a0b14;border-inline-end:1px solid var(--hair)}
.ny-planbox{min-height:0;overflow-y:auto;padding:28px 40px;scrollbar-width:thin}
.ny-plan{max-width:620px;display:flex;flex-direction:column;gap:16px;padding:26px 28px;border-radius:22px;background:#0d0f19;border:1px solid var(--hair)}
.ny-plan.mat>*{animation:nyMat .26s cubic-bezier(.23,1,.32,1) both}
.ny-plan.mat>:nth-child(2){animation-delay:70ms}.ny-plan.mat>:nth-child(3){animation-delay:140ms}.ny-plan.mat>:nth-child(4){animation-delay:210ms}.ny-plan.mat>:nth-child(5){animation-delay:280ms}.ny-plan.mat>:nth-child(6){animation-delay:330ms}.ny-plan.mat>:nth-child(7){animation-delay:370ms}
@keyframes nyMat{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ny-grab{display:none}
.ny-goalhead{display:flex;align-items:flex-start;gap:16px}
.ny-gstar{flex:none;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,#fff 0 12%,#ffe2a8 22%,rgba(245,198,107,.4) 45%,transparent 70%)}
.ny-goal-t{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(28px,2.8vw,38px);line-height:1.08;color:var(--ink-1);text-wrap:balance}
.ny-sub{margin:4px 0 0;font-size:15.5px;color:var(--ink-3)}
.ny-band-w{display:grid;gap:8px}
.ny-band{display:flex;gap:6px;align-items:start}
.ny-seg{flex:1 1 0;min-width:6.9rem;display:grid;gap:5px;align-content:start}
.ny-seg b{font-weight:500;font-size:14.5px;line-height:1.25;color:var(--ink-1);hyphens:none;overflow-wrap:normal;word-break:normal;margin-top:3px}
.ny-seg small{font-size:13px;color:var(--ink-3);white-space:nowrap}
.ny-seg.cur b{color:var(--gold)}
.ny-seg.cur i{background:var(--gold);box-shadow:0 0 12px rgba(245,198,107,.35)}
.ny-seg.past i{background:rgba(111,242,196,.45)}
.ny-band i{height:10px;border-radius:6px;background:rgba(255,255,255,.1)}
.ny-band i.cur{background:var(--gold);box-shadow:0 0 12px rgba(245,198,107,.35)}
.ny-band i.past{background:rgba(111,242,196,.45)}




.ny-adjust{margin:4px 0 0;padding:9px 12px;border-radius:10px;background:rgba(245,198,107,.07);border:1px solid rgba(245,198,107,.22);font-size:14.5px;line-height:1.45;color:var(--ink-2)}
.ny-months{list-style:none;margin:0;padding:0;display:grid}
.ny-months li{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:14px;align-items:baseline;padding:12px 0;border-top:1px solid var(--hair);font-size:16px}
.ny-months li.done .ny-m-t{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(111,242,196,.5)}
.ny-m,.ny-m-v{font-size:14.5px;color:var(--ink-3)}
.ny-m-v{font-variant-numeric:tabular-nums}
.ny-first{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 16px;align-items:center;padding:18px 20px;border-radius:18px;background:#1a160e;border:1px solid rgba(245,198,107,.42)}
.ny-first.set{border-color:rgba(111,242,196,.4);background:#0f1714}
.ny-tm{display:grid;place-items:center;align-content:center;width:64px;height:64px;border-radius:16px;background:rgba(245,198,107,.14);color:var(--gold);line-height:1}
.ny-tm b{font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.ny-tm small{font-size:12.5px;margin-top:3px}
.ny-first-t{display:grid;gap:3px;min-width:0}
.ny-first-k{margin:0;font-size:13.5px;color:var(--gold)}
.ny-first-title{font-weight:600;font-size:17.5px;line-height:1.35;color:var(--ink-1)}
.ny-first-acts{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px}
.ny-state{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;color:var(--ink-2)}
.ny-state::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--gold)}
.ny-state.ok{color:var(--mint)}.ny-state.ok::before{background:var(--mint)}
.ny-notes{display:grid;gap:4px}
.ny-week-w{margin:0;display:grid;gap:6px}
.ny-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:10px;border-radius:16px;background:#0a0b14;border:1px solid var(--hair)}
.ny-wd{display:grid;grid-template-rows:auto 128px;gap:6px;min-width:0}
.ny-wd-h{display:grid;justify-items:center;line-height:1.1}
.ny-wd-h small{font-size:11.5px;color:var(--ink-3)}
.ny-wd-h b{font-size:15px;font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ny-wd.on .ny-wd-h b{color:var(--gold)}
.ny-wd-l{position:relative;border-radius:8px;background:rgba(255,255,255,.03)}
.ny-busy{position:absolute;inset-inline:3px;border-radius:4px;background:rgba(255,255,255,.13)}
.ny-step{position:absolute;inset-inline:1px;min-height:10px;border-radius:5px;border:1.5px dashed var(--gold);background:rgba(245,198,107,.16);transition:background-color .2s ease,border-color .2s ease}
.ny-step.solid{border-style:solid;background:var(--gold);box-shadow:0 0 12px rgba(245,198,107,.45)}
.ny-plan-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.ny-saved{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;color:var(--mint)}
.ny-saved::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--mint)}
.ny-edit{cursor:text;border-radius:6px;transition:background-color .15s ease;outline-offset:2px}
.ny-edit:hover{background:rgba(255,255,255,.05)}
.ny-edit-in{width:100%;font:inherit;color:var(--ink-1);background:var(--ny-sheet3,#1c2033);border:1px solid rgba(245,198,107,.5);border-radius:8px;padding:4px 8px;outline:none}
.ny-ok{display:grid}
.ny-ok .cv-ok{margin-top:0;background:#14120d}
/* the three questions and the check-in: one short conversation, on a solid column */
.ny.k-chat .ny-body{display:flex;flex-direction:column;align-items:center;padding:calc(24px + env(safe-area-inset-top,0px)) 16px calc(24px + env(safe-area-inset-bottom,0px))}
.ny.k-chat .ny-head{width:min(600px,100%)}
.ny-col{flex:1;min-height:0;width:min(600px,100%);display:flex;flex-direction:column;gap:12px;margin-top:12px;padding:22px 24px;border-radius:24px;background:#0a0b14;border:1px solid var(--hair)}
.ny-hold{display:grid;gap:8px;padding:14px 16px;border-radius:16px;background:var(--ny-sheet2,#151827);border:1px solid var(--hair)}
.ny-hold-top{display:flex;justify-content:space-between;gap:12px;font-size:15.5px}
.ny-hold-top b{font-weight:600;color:var(--mint)}
/* the goal's own page: the next step near and bright, the goal far behind it */
.ny.k-goal .ny-body>.ny-head{position:absolute;inset-inline:40px;top:calc(24px + env(safe-area-inset-top,0px));z-index:2}
.ny.k-goal .ny-body>.ny-head>b{font-family:var(--display);font-size:24px;color:var(--ink-1);font-weight:400}
.ny-plate{position:absolute;z-index:1;display:grid;gap:2px;padding:10px 14px;border-radius:14px;background:#0d0f19;border:1px solid rgba(246,239,230,.14);transform:translate(-50%,0);max-width:260px}
.ny-plate b{font-weight:600;font-size:15px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ny-plate small{font-size:13px;color:var(--ink-3)}
.ny-plate.near b{color:var(--gold)}
.ny-gp{position:absolute;inset-inline-end:40px;top:calc(88px + env(safe-area-inset-top,0px));max-height:calc(100% - 128px - env(safe-area-inset-top,0px));width:min(540px,calc(100% - 80px));overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:30px 32px;border-radius:24px;background:#0d0f19;border:1px solid var(--hair);scrollbar-width:thin}
.ny-gp-t{margin:0;font-family:var(--display);font-weight:400;font-size:clamp(28px,2.8vw,38px);line-height:1.08;color:var(--ink-1);text-wrap:balance}
.ny-gp-more{display:grid;gap:16px;margin-top:6px;padding-top:14px;border-top:1px solid var(--hair)}
.ny-gp-more>summary{list-style:none;cursor:pointer;font-size:14.5px;color:var(--ink-2);min-height:36px;display:flex;align-items:center;gap:8px}
.ny-gp-more>summary::-webkit-details-marker{display:none}
.ny-gp-more>summary::after{content:"";width:7px;height:7px;border-inline-end:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.ny-gp-more[open]>summary::after{transform:rotate(225deg) translateY(-1px)}
.ny-gp-more:not([open]){padding-bottom:0}
@media (min-width:721px){.ny-gp-more>summary{display:none}}
.ny-day{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14.5px;color:var(--ink-2)}
.ny-day select{font:inherit;color:var(--ink-1);background:var(--ny-sheet2,#151827);border:1px solid var(--hair-2);border-radius:10px;padding:6px 10px;min-height:36px}
/* the share card */
.ny-share{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px 16px;background:#03040a;outline:none;animation:nyIn .2s cubic-bezier(.23,1,.32,1) both}
body>.ny-share{position:fixed;z-index:106}
.ny-share-card img{display:block;height:min(52vh,540px);width:auto;max-width:calc(100vw - 32px);border-radius:22px;border:1px solid var(--hair-2);box-shadow:0 30px 60px -30px #000}
.ny-share-foot{display:grid;justify-items:center;gap:12px;width:min(460px,100%);padding:16px 18px;border-radius:20px;background:#0d0f19;border:1px solid var(--hair)}
.ny-share .ny-small{text-align:center}
/* Simple view: the same words on plain surfaces, no sky */
html.simple .ny{background:var(--sv-bg,#111214)}
html.simple .ny-ch,html.simple .ny-plan,html.simple .ny-gp,html.simple .ny-col,html.simple .ny-convo{background:var(--sv-side,#17181b)}
html.simple .ny-gp{inset-inline:auto;inset-inline-end:max(16px,calc(50% - 300px));width:min(600px,calc(100% - 32px));bottom:auto;max-height:calc(100% - 128px)}
.ny-log.mini:empty{display:none}
@media (prefers-reduced-motion:reduce){.ny,.ny-ch,.ny-invite,.ny-msg,.ny-share{transition:none;animation:none}.ny-tw,.ny-pulse,.ny-msg.thinking i{animation:none}.ny-plan.mat>*{animation:none}}
/* phone: the story's panel low and wide, the plan as a sheet over the conversation, the goal page's step panel at the foot */
@media (max-width:720px){
  .ny-prog{inset-inline:16px;top:calc(14px + env(safe-area-inset-top,0px))}
  .ny-meta{inset-inline:16px;top:calc(26px + env(safe-area-inset-top,0px));font-size:14px}
  .ny-ch{inset-inline:16px;top:auto;bottom:calc(20px + env(safe-area-inset-bottom,0px));width:auto;padding:24px 22px;gap:12px;border-radius:22px}
  .ny-pick{width:auto}
  .ny-h1{font-size:30px}
  .ny-line{font-size:16.5px}
  .ny-pick-b{padding:13px 16px}.ny-pick-t b{font-size:16.5px}.ny-pick-t small{font-size:14px}
  .ny-b{display:block}
  .ny-convo{position:absolute;inset:0;background:transparent;border:0;padding:calc(14px + env(safe-area-inset-top,0px)) 16px calc(14px + env(safe-area-inset-bottom,0px))}
  .ny-convo>.ny-head{padding:0 2px}
  .ny-msg{font-size:15.5px;max-width:92%}
  .ny-planbox{position:absolute;inset-inline:0;bottom:calc(72px + env(safe-area-inset-bottom,0px));max-height:calc(100% - 150px);padding:0 8px;overflow:visible;transform:translateY(0);transition:transform .26s cubic-bezier(.23,1,.32,1);pointer-events:none}
  .ny-planbox:not(.has){display:none}
  .ny-planbox>.ny-plan{pointer-events:auto;max-height:calc(100dvh - 150px - env(safe-area-inset-top,0px));overflow-y:auto;padding:8px 18px 18px;gap:12px;border-radius:26px 26px 22px 22px;box-shadow:0 -20px 40px -20px #000}
  .ny-planbox.peek{transform:translateY(calc(100% - 58px))}
  .ny-planbox.peek>.ny-plan{overflow:hidden}
  .ny-grab{display:grid;justify-items:center;gap:6px;width:100%;min-height:44px;padding:4px 0 2px;position:sticky;top:-8px;background:#0d0f19;z-index:1}
  .ny-grab i{width:40px;height:5px;border-radius:3px;background:var(--hair-2)}
  .ny-peek-t{font-size:13.5px;color:var(--ink-3)}
  .ny-goal-t{font-size:26px}.ny-gstar{width:36px;height:36px}.ny-sub{font-size:14px}
  .ny-months li{grid-template-columns:44px minmax(0,1fr) auto;gap:10px;padding:9px 0;font-size:15px}
  .ny-seg{min-width:4.6rem}.ny-seg b{font-size:12px}.ny-seg small{font-size:11.5px;white-space:normal}
  .ny-first{grid-template-columns:auto minmax(0,1fr);padding:14px;gap:10px 12px}
  .ny-tm{width:52px;height:52px;border-radius:14px}.ny-tm b{font-size:19px}
  .ny-first-title{font-size:16px}
  .ny-first-acts .ny-btn{flex:1}
  .ny-col{flex:0 1 auto;margin-top:auto;max-height:calc(100% - 150px);padding:16px;border-radius:22px;background:#0a0b14}
  .ny-col>.ny-log>:first-child{margin-top:0}
  .ny.k-chat .ny-body{padding-inline:12px}
  .ny.k-goal .ny-body>.ny-head{inset-inline:16px}
  .ny.k-goal .ny-body>.ny-head>b{font-size:20px}
  .ny-gp{inset-inline:12px;width:auto;top:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 120px - env(safe-area-inset-top,0px));padding:20px;gap:10px;border-radius:24px}
  .ny-gp:has(.ny-gp-more:not([open])){max-height:46dvh}
  .ny-gp .ny-line{font-size:15.5px}
  .ny-plate b{white-space:normal}
  .ny-gp-t{font-size:24px}
  .ny-plate{padding:8px 12px;border-radius:12px;max-width:200px}.ny-plate b{font-size:14px}
}
/* ===================================================================== Projects, made over (Oct 18, public/js/projects.js)
   A + B: a calm desk (rail · the project · Ask NOVA) with the project's path of stars as its progress. Solid surfaces under
   every word; one gold button per screen (the next step, or New project on the list); ice for what NOVA read, rose for
   what's in the way, mint for done, violet for NOVA's notice. Motion: items settle onto the shelf (opacity + 8px, 200ms),
   the reading comet while NOVA reads (live only), nothing else moves. */
.pd{--pd-sheet:#080a14;--pd-raised:#10121f;--pd-e:cubic-bezier(.23,1,.32,1)}
.pd-i{flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
:where(.pd,.pd-sheet) :where(button){font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
.pd :is(button,a):focus-visible,.pd-sheet :is(button,a,input,textarea):focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
/* the header follows: on the list, New project is the gold step forward; inside a project the gold is the next step */
.hub.h-projects:not(.pd-in) .hub-setup{background:var(--gold);color:#1d1408;border-color:var(--gold);font-weight:600;font-size:14px;padding:10px 18px}
.hub.h-projects:not(.pd-in) .hub-setup:hover{color:#1d1408;filter:brightness(1.05)}
.hub.h-projects.pd-in .hub-setup{display:none}
.hub-setup .hs-s{display:none}
@media (max-width:760px){
  .hub.h-projects:not(.pd-in) .hub-setup{width:auto;height:40px;padding:0 16px 0 13px;gap:6px}
  .hub.h-projects:not(.pd-in) .hub-setup .hs-s{display:inline}
}
.hub.h-projects.pd-in .ld-title h3{font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:0}
@media (min-width:761px){
  .hub.h-projects.pd-in{padding:0;overflow:hidden}
  .hub.h-projects.pd-in .hub-head{margin:0;padding:12px 24px}
  .hub.h-projects.pd-in .hub-body{margin:0}
}
/* shared bits */
.pd-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none;background:rgb(var(--c,255,238,214));box-shadow:0 0 8px rgba(var(--c,255,238,214),.55)}
.pd-mark{display:inline-block;width:28px;height:28px;border-radius:50%;flex:none;background:radial-gradient(circle at 50% 50%,#fff8ee 0 14%,rgba(245,198,107,.95) 26%,rgba(245,198,107,.25) 52%,transparent 72%)}
.pd-mark.sm{width:22px;height:22px}
.pd-gold{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:999px;background:var(--gold)!important;color:#1d1408!important;font-weight:600!important;font-size:15.5px;white-space:nowrap;text-decoration:none;transition:transform .16s var(--pd-e,ease),filter .15s}
.pd-gold:hover{filter:brightness(1.05)}.pd-gold:active{transform:scale(.97)}.pd-gold:disabled{opacity:.6;cursor:default}
.pd-line{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(245,198,107,.45)!important;color:var(--gold)!important;font-weight:500;font-size:14.5px;white-space:nowrap;transition:transform .16s var(--pd-e,ease),background-color .15s}
.pd-line:hover{background:rgba(245,198,107,.07)!important}.pd-line:active{transform:scale(.97)}
.pd-line.sm,.pd-q.sm{min-height:36px;font-size:13.5px;padding:0 14px}
.pd-q{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;color:var(--ink-2);font-size:14.5px;white-space:nowrap;transition:color .15s,transform .16s var(--pd-e,ease)}
.pd-q:hover{color:var(--ink-1)}.pd-q:active{transform:scale(.97)}
.pd-q.edge{border:1px solid var(--hair-2)!important}
.pd-x{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-2);border:1px solid var(--hair)!important;flex:none;transition:color .15s,transform .16s}
.pd-x:hover{color:var(--ink-1)}.pd-x:active{transform:scale(.95)}
.pd-x.sm{width:34px;height:34px;border-color:transparent!important}
.pd-link{color:var(--ink-2);font-size:13.5px;text-decoration:underline;text-underline-offset:3px;min-height:32px;padding:0 4px}
.pd-chips{display:flex;gap:8px;flex-wrap:wrap}
.pd-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 13px;border-radius:999px;font-size:13.5px;color:var(--ink-2);border:1px solid var(--hair)!important;white-space:nowrap;transition:border-color .15s,background-color .15s,color .15s}
.pd-chip small{color:var(--ink-3);font-size:12.5px}
.pd-chip[aria-pressed="true"]{border-color:rgba(245,198,107,.5)!important;color:var(--ink-1);background:rgba(245,198,107,.08)!important}
.pd-chip:active{transform:scale(.97)}
.pd-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pd-none{margin:18px 4px;color:var(--ink-3);font-size:14.5px}
.pd-sub-h{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:17px;font-weight:600;color:var(--ink-1)}
.pd-sub-l{margin:0 0 14px;color:var(--ink-2);font-size:14.5px;line-height:1.5}
/* stars: pearl done, gold now, faint later */
.pd-stars{display:inline-flex;align-items:center;gap:7px;flex:none}
.st{display:inline-block;flex:none;border-radius:50%}
.st.done{width:10px;height:10px;background:var(--pearl);box-shadow:0 0 0 3px rgba(255,243,230,.09),0 0 10px rgba(255,243,230,.5)}
.st.now{width:11px;height:11px;background:var(--gold);box-shadow:0 0 0 4px rgba(245,198,107,.16),0 0 14px rgba(245,198,107,.7)}
.st.later{width:6px;height:6px;margin:0 2px;background:rgba(246,239,230,.28)}
.pd-stars.big .st.done{width:12px;height:12px}.pd-stars.big .st.now{width:13px;height:13px}.pd-stars.big .st.later{width:7px;height:7px}
.pd-tag{font-size:14px}.pd-tag.good{color:var(--mint)}.pd-tag.warn{color:var(--gold)}.pd-tag.bad{color:var(--rose)}

/* ---------------------------------------------------------------- home */
.pd-hwrap{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:28px;align-items:start;padding-bottom:24px}
.pd-hbar{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.pd-find{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-radius:999px;background:var(--sf-1);border:1px solid var(--sf-edge);color:var(--ink-3);width:min(320px,100%)}
.pd-find input{flex:1;min-width:0;height:100%;background:none;border:0;outline:none;color:var(--ink-1);font:inherit;font-size:14.5px}
.pd-find input::placeholder{color:var(--ink-3)}
.pd-find:focus-within{border-color:rgba(92,225,255,.45)}
.pd-hbar .pd-q{margin-inline-start:auto}
.pd-list{display:flex;flex-direction:column;background:var(--sf-0);border:1px solid var(--sf-edge);border-radius:22px;padding:6px 8px 8px;box-shadow:0 1px 0 rgba(255,255,255,.02) inset,0 18px 40px -30px rgba(0,0,0,.8)}
.pd-grp+.pd-grp{border-top:1px solid var(--hair);margin-top:4px}
.hub-body h4.pd-grp-h{display:flex;align-items:center;gap:8px;margin:0;padding:12px 14px 4px;font-size:14px;font-weight:500;color:var(--ink-2);letter-spacing:0;text-transform:none}
.pd-row{display:grid;grid-template-columns:minmax(0,1.35fr) 128px minmax(0,1.5fr) 84px 60px;align-items:center;gap:18px;width:100%;padding:13px 14px;border-radius:16px;text-align:start;transition:background-color .15s}
.pd-row:hover{background:rgba(246,239,230,.04)!important}
.pd-row:active{transform:scale(.995)}
.pd-row-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.pd-row-t b{font-size:16.5px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-row-g{font-size:14px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-row-n{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:14.5px;color:var(--ink-2)}
.pd-row-next{display:flex;align-items:flex-start;gap:8px;line-height:1.35}
.pd-row-next .pd-i{color:var(--gold);margin-top:2px}
.pd-row-why{font-size:13px;line-height:1.35}.pd-row-why.t-risk{color:var(--rose)}.pd-row-why.t-watch{color:var(--gold)}
.pd-row-th{display:flex;justify-content:flex-end}
.pd-mini{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;overflow:hidden;background:var(--sf-2);color:var(--ink-3);border:2px solid var(--sf-0);margin-inline-start:-10px}
.pd-mini:first-child{margin-inline-start:0}
.pd-mini img{width:100%;height:100%;object-fit:cover;display:block}
.pd-row-d{font-size:13.5px;color:var(--ink-3);text-align:end;white-space:nowrap}
.pd-row.s-paused,.pd-row.s-done{opacity:.72}
.pd-more{border-top:1px solid var(--hair);margin-top:4px}
.pd-more summary{cursor:pointer;list-style:none;padding:14px;font-size:14px;color:var(--ink-3)}
.pd-more summary::-webkit-details-marker{display:none}
.pd-more summary::after{content:" ›"}.pd-more[open] summary::after{content:" ⌄"}
.pd-hside{display:flex;flex-direction:column;gap:16px;position:sticky;top:96px}
.pd-notice{padding:18px;border-radius:20px;background:var(--pd-raised);border:1px solid rgba(169,139,255,.28);display:flex;flex-direction:column;gap:16px}
.hub-body .pd-notice h4:not(.ld-sec){display:flex;align-items:center;gap:10px;margin:0;font-size:15.5px;font-weight:600;color:var(--ink-1);letter-spacing:0;text-transform:none}
.pd-notice-t{display:block;margin:10px 0 2px;font-size:15px;color:var(--ink-1)}
.pd-notice p{margin:4px 0 12px;color:var(--ink-2);font-size:14.5px;line-height:1.5}
.pd-notice-c+.pd-notice-c{border-top:1px solid var(--hair);padding-top:14px}
.pd-side-h{margin:2px 2px 10px;font-size:17px;font-weight:600;color:var(--ink-1)}
.pd-plans-l{background:var(--sf-0);border:1px solid var(--sf-edge);border-radius:20px;padding:6px}
.pd-plan{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;padding:0 12px;border-radius:14px;text-align:start;transition:background-color .15s}
.pd-plan+.pd-plan{border-top:1px solid var(--hair)}
.pd-plan:hover{background:rgba(246,239,230,.04)!important}
.pd-plan-i{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(92,225,255,.08);color:var(--ice);flex:none}
.pd-plan-t{flex:1;font-size:15px;color:var(--ink-1)}
.pd-plan small{color:var(--ink-3);font-size:13px}
.pd-files{display:flex;align-items:center;gap:14px;width:100%;padding:16px 18px;border-radius:20px;background:var(--sf-0)!important;border:1px solid var(--sf-edge)!important;text-align:start;color:var(--ink-2)}
.pd-files:hover{border-color:var(--hair-2)!important}
.pd-files-i{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--sf-2);color:var(--ink-2);flex:none}
.pd-files-t{flex:1;display:flex;flex-direction:column;gap:2px}.pd-files-t b{font-size:15px;font-weight:500;color:var(--ink-1)}.pd-files-t small{font-size:13px;color:var(--ink-3)}
.pd-empty{padding:34px 30px;border-radius:22px;background:var(--sf-0);border:1px solid var(--sf-edge)}
.pd-empty-h{margin:0 0 10px!important;font-family:var(--display)!important;font-weight:400!important;font-size:32px!important;letter-spacing:-.01em!important;color:var(--ink-1)!important;text-transform:none!important}
.pd-empty p{margin:0 0 20px;color:var(--ink-2);font-size:15.5px;line-height:1.55;max-width:60ch}
.pd-empty-go{display:flex;gap:10px;flex-wrap:wrap}
.pd-say{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:6px;min-height:58px;margin-top:18px;padding:6px;border-radius:30px;background:var(--sf-1);border:1px solid var(--hair-2);box-shadow:0 -18px 30px -10px #04050c}
.pd-say input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--ink-1);font:inherit;font-size:16px;padding:0 6px}
.pd-say input::placeholder,.pd-comp textarea::placeholder{color:var(--ink-3)}
.pd-cbtn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);flex:none;transition:transform .16s,background-color .15s}
.pd-cbtn:first-child{border:1px solid var(--hair)!important}
.pd-cbtn.send{background:rgba(246,239,230,.12)!important;color:var(--ink-1)}
.pd-cbtn.on{color:var(--ice);background:rgba(92,225,255,.1)!important}
.pd-cbtn:active{transform:scale(.94)}

/* ---------------------------------------------------------------- the workspace */
.pd-desk{display:grid;grid-template-columns:248px minmax(0,1fr) 392px;grid-template-rows:minmax(0,1fr);height:calc(100vh - var(--pd-top,70px));height:calc(100dvh - var(--pd-top,70px));position:relative}
.pd-desk.drop::after{content:"";position:absolute;inset:10px;border:1.5px dashed rgba(92,225,255,.6);border-radius:22px;background:rgba(92,225,255,.04);pointer-events:none;z-index:5}
.pd-rail{min-height:0;display:flex;flex-direction:column;gap:2px;padding:16px 12px;overflow:auto;background:rgba(9,10,18,.94);border-inline-end:1px solid var(--hair)}
.pd-rail-back{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border-radius:12px;color:var(--ink-3);font-size:14.5px}
.pd-rail-back:hover{color:var(--ink-1)}
[dir=rtl] .pd-rail-back .pd-i,[dir=rtl] .pd-row-next .pd-i,[dir=rtl] .pd-then .pd-i,[dir=rtl] .pd-files>.pd-i,[dir=rtl] .pd-step-h>.pd-i,[dir=rtl] .pd-lrow>.i-chev{transform:scaleX(-1)}
.pd-rail-t{display:block;padding:8px 12px 14px;font-size:15px;font-weight:600;color:var(--ink-1);line-height:1.3}
.pd-nav{display:flex;flex-direction:column;gap:2px}
.pd-nav-b{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:12px;color:var(--ink-2);font-size:15px;text-align:start;transition:background-color .15s,color .15s}
.pd-nav-b small{margin-inline-start:auto;color:var(--ink-3);font-size:13px}
.pd-nav-b:hover{color:var(--ink-1)}
.pd-nav-b.on{background:rgba(246,239,230,.07)!important;color:var(--ink-1)}
.pd-rail-h{margin:20px 12px 8px;font-size:13px;font-weight:400;color:var(--ink-3);letter-spacing:0;text-transform:none}
.pd-rail .pd-pills{padding:0 8px}
.pd-rail-o{margin-top:auto;padding-top:10px}
.pd-rail-p{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:0 12px;border-radius:12px;color:var(--ink-2);font-size:14px;text-align:start}
.pd-rail-p span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pd-rail-p .pd-dot{width:7px;height:7px}
.pd-rail-p:hover{color:var(--ink-1)}
.pd-pills{display:flex;flex-wrap:wrap;gap:6px}
.pd-pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:999px;font-size:13px;color:var(--ink-2);background:rgba(246,239,230,.05)!important;border:1px solid var(--hair)!important;white-space:nowrap}
.pd-pill .pd-dot{width:7px;height:7px}
.pd-pill.add{color:var(--ink-3)}.pd-pill.add:hover{color:var(--ink-1)}
.pd-main{position:relative;min-height:0;overflow:auto;overscroll-behavior:contain;padding:28px 36px 40px;background:radial-gradient(ellipse 80% 40% at 30% -5%,rgba(var(--c),.07),transparent 70%),#07080f;scroll-padding-top:16px}
.pd-top-r{display:flex;align-items:center;gap:10px}
.pd-top-r .pd-pills{flex:1}
.pd-more-b{width:40px;height:40px}
.pd-title{margin:12px 0 6px;font-family:var(--display);font-weight:400;font-size:clamp(32px,3.3vw,46px);line-height:1.06;letter-spacing:-.01em;color:var(--ink-1);text-wrap:balance}
.pd-goal{margin:0;font-size:17px;line-height:1.45;color:var(--ink-2);max-width:62ch}
.pd-addgoal{color:var(--ink-3);font-size:15px;text-decoration:underline;text-underline-offset:3px;min-height:36px}
.pd-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:14px;color:var(--ink-3);font-size:14px}
.pd-sep{color:var(--ink-3);opacity:.6}
/* the next step: one gold button */
.pd-next{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;margin-top:22px;padding:20px 22px;border-radius:20px;background:linear-gradient(180deg,rgba(245,198,107,.075),rgba(245,198,107,.03)),#0d0e16;border:1px solid rgba(245,198,107,.32)}
.pd-next-k{margin-inline-end:6px}
.pd-from{color:var(--ink-3)}
.pd-filed>span+span{margin-inline-start:3px}
.pd-then>span+span{margin-inline-start:2px}
.pd-next h2{margin:0;font-size:21px;font-weight:500;line-height:1.3;color:var(--ink-1)}
.pd-next p{margin:5px 0 0;color:var(--ink-2);font-size:14.5px;line-height:1.5}
.pd-est{color:var(--ink-3)}
.pd-next-a{display:flex;flex-direction:column;align-items:stretch;gap:2px}
.pd-next-a .pd-q{justify-content:center;font-size:13.5px;min-height:36px}
.pd-then{grid-column:2/4;display:flex;align-items:center;gap:8px;margin:0!important;padding-top:12px;border-top:1px solid rgba(245,198,107,.16);font-size:14px!important;color:var(--ink-3)!important}
.pd-then .pd-i{color:var(--ink-3)}
/* what's in the way, ideas from what she added */
.pd-way{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:14px}
.pd-way-s{padding:14px 16px;border-radius:16px;background:var(--sf-1);border:1px solid var(--hair)}
.pd-way-s h4{display:flex;align-items:center;gap:8px;margin:0 0 8px!important;font-size:14px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-1)!important}
.pd-way-s h4::before{content:"";width:8px;height:8px;border-radius:50%}
.pd-way-s.bad h4::before{background:var(--rose);box-shadow:0 0 8px rgba(255,122,182,.6)}
.pd-way-s.ice h4::before{background:var(--ice);box-shadow:0 0 8px rgba(92,225,255,.6)}
.pd-way-r+.pd-way-r{border-top:1px solid var(--hair);margin-top:10px;padding-top:10px}
.pd-way-r p{margin:0 0 8px;font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.pd-way-r small{color:var(--ink-3)}
/* tabs on narrower screens, the phone and Simple view */
.pd-seg{display:flex;gap:4px;margin:20px 0 4px;padding:4px;border-radius:16px;background:var(--sf-1);border:1px solid var(--hair)}
.pd-seg-b{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;border-radius:12px;font-size:14.5px;color:var(--ink-2);transition:background-color .15s,color .15s}
.pd-seg-b small{color:var(--ink-3);font-size:13px}
.pd-seg-b[aria-selected="true"]{background:rgba(245,198,107,.1)!important;color:var(--ink-1);box-shadow:inset 0 0 0 1px rgba(245,198,107,.45)}
@media (min-width:1180px){html:not(.simple) .pd-desk .pd-seg{display:none}}
@media (max-width:1179px){.pd-desk{grid-template-columns:minmax(0,1fr) 360px}.pd-rail{display:none}}
/* the shelf */
.pd-shelf{margin-top:26px}
.pd-shelf-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pd-shelf-h>.pd-chips{order:5;flex-basis:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.pd-shelf-h>.pd-chips::-webkit-scrollbar{display:none}
.pd-shelf-h>.pd-chips .pd-chip{flex:none}
.pd-shelf-h h3{margin:0 6px 0 0;font-size:17px;font-weight:600;color:var(--ink-1)}
.pd-add-btn{margin-inline-start:auto}
.pd-shelf-h>.pd-q{margin-inline-start:auto}.pd-shelf-h>.pd-q+.pd-add-btn{margin-inline-start:0}
@media (max-width:1179px){.pd-shelf-h>h3{display:none}}
html.simple .pd-shelf-h>h3{display:none}
.pd-shelf-g{margin-top:18px}
.pd-shelf-g h4{display:flex;align-items:center;gap:10px;margin:0 0 12px!important;font-size:14.5px!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-2)!important}
.pd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(164px,1fr));gap:18px 16px}
.pd-grid.small{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin:12px 0}
.pd-tile{position:relative;min-width:0}
.pd-tile-o{display:block;width:100%;text-align:start}
.pd-tile-o:active .pd-th{transform:scale(.98)}
.pd-th{position:relative;display:block;aspect-ratio:4/3;border-radius:14px;overflow:hidden;background:var(--sf-2);border:1px solid var(--hair);transition:transform .16s var(--pd-e),border-color .15s}
.pd-tile-o:hover .pd-th{border-color:var(--hair-2)}
.pd-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-play{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:rgba(3,4,10,.6);color:#fff}
.pd-badge{position:absolute;inset-inline-start:8px;bottom:8px;height:22px;padding:0 8px;border-radius:999px;display:inline-flex;align-items:center;background:rgba(3,4,10,.72);color:var(--ink-1);font-size:12px}
.pd-th-page{position:absolute;inset:0;display:flex;flex-direction:column;gap:7px;padding:12% 10%;background:#f3ece2;color:#2e4637}
.pd-th-page .bar{align-self:flex-end;width:18%;height:6px;border-radius:9px;background:#2e4637}
.pd-th-page b{font-family:var(--display);font-weight:400;font-size:17px;line-height:1.08;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pd-th-page .ln{height:3px;width:58%;border-radius:3px;background:rgba(46,70,55,.3)}.pd-th-page .ln.s{width:36%}
.pd-th-page .btn{margin-top:auto;width:34%;height:13px;border-radius:99px;background:#c4694a}
.pd-th-site{position:absolute;inset:0;display:flex;flex-direction:column;gap:7px;padding:0 0 10px;background:#e9e6e1;color:#3a3631}
.pd-th-site .dots{height:16px;background:#d8d3cc}
.pd-th-site b{margin:6px 10% 0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-th-site .ln{margin:0 10%;height:4px;width:70%;border-radius:3px;background:#b8b1a8}.pd-th-site .ln.s{width:45%}
.pd-th.k-link.bare{background:#e9e6e1}
.pd-th-q{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:12%;background:linear-gradient(160deg,rgba(169,139,255,.12),rgba(92,225,255,.05)),var(--sf-2);color:var(--ink-1);font-family:var(--display);font-size:16px;line-height:1.3}
.pd-th-q .pd-i{color:var(--violet)}
.pd-th-q span{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.pd-th-res{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:9px;padding:10%;background:#14161d}
.pd-th-res span{font-size:12.5px;color:var(--ink-1);padding-inline-start:10px;border-inline-start:3px solid rgba(92,225,255,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-th-res .pd-i{align-self:center;color:var(--ice)}
.pd-th-kit{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-between;padding:12%;background:linear-gradient(90deg,#2e4637 0 25%,#c4694a 25% 50%,#f3ece2 50% 75%,#9db29a 75%) top/100% 34% no-repeat,#14161d;color:var(--ink-2)}
.pd-th-kit b{font-family:var(--display);font-weight:400;font-size:30px;color:var(--ink-1)}
.pd-th-doc{position:absolute;inset:16% 22% 0;display:flex;flex-direction:column;gap:7px;padding:12% 10%;border-radius:6px 6px 0 0;background:#f4f0ea}
.pd-th-doc i{height:3px;border-radius:2px;background:#c9c2b8}.pd-th-doc i.h{height:5px;width:70%;background:#2e4637}.pd-th-doc i.s{width:60%}
.pd-th.k-doc,.pd-th.k-sheet,.pd-th.k-deck,.pd-th.k-file{background:#20232d}
.pd-tile-m{display:block;padding:9px 2px 0}
.pd-tile-m b{display:block;font-size:14.5px;font-weight:500;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-tile-m small{display:block;font-size:13px;color:var(--ink-3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-tile-x{position:absolute;top:6px;inset-inline-end:6px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:rgba(3,4,10,.62)!important;color:var(--ink-1);opacity:0;transition:opacity .15s}
.pd-tile:hover .pd-tile-x,.pd-tile-x:focus-visible{opacity:1}
@media (hover:none){.pd-tile-x{opacity:1;width:30px;height:30px;top:5px;inset-inline-end:5px;background:rgba(3,4,10,.45)!important}}
.pd-tile.fresh{animation:pdSettle .2s var(--pd-e) both}
.pd-tile.fresh .pd-th{outline:1.5px solid rgba(92,225,255,.7);outline-offset:2px}
@keyframes pdSettle{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pd-grid.list{grid-template-columns:minmax(0,1fr);gap:6px}
.pd-grid.list .pd-tile-o{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:center;padding:8px;border-radius:14px}
.pd-grid.list .pd-tile-o:hover{background:rgba(246,239,230,.04)}
.pd-grid.list .pd-th{aspect-ratio:1;border-radius:10px}
.pd-grid.list .pd-th :is(.pd-th-page b,.pd-th-q span){font-size:9px}
.pd-grid.list .pd-tile-m{padding:0}
.pd-grid.list .pd-tile-x{top:50%;transform:translateY(-50%);opacity:1;background:none!important;color:var(--ink-3)}
.pd-all{margin-top:16px}
.pd-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;min-height:180px;padding:24px;border-radius:20px;border:1.5px dashed var(--hair-2)!important;background:rgba(246,239,230,.02)!important;color:var(--ink-2);text-align:center}
.pd-dropzone .pd-i{color:var(--ice)}
.pd-dropzone b{font-size:16px;font-weight:500;color:var(--ink-1)}
.pd-dropzone span{font-size:14px;color:var(--ink-3);max-width:46ch;line-height:1.5}
.pd-dropzone:hover{border-color:rgba(92,225,255,.5)!important}
.pd-dropzone.static{min-height:140px;margin-bottom:14px}
/* also linked (tasks, emails, meetings, people, goals) */
.pd-linked{margin-top:28px;padding:16px;border-radius:18px;background:var(--sf-0);border:1px solid var(--sf-edge)}
.pd-lrow{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:6px 6px;border-radius:12px;text-align:start;color:var(--ink-3)}
.pd-lrow+.pd-lrow{border-top:1px solid var(--hair)}
.pd-lrow-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.pd-lrow-t b{font-size:14.5px;font-weight:500;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-lrow-t small{font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-lrow.done b{color:var(--ink-3);text-decoration:line-through}
.pd-lrow.sug{background:rgba(92,225,255,.04)}
.pd-lrow.agent .pd-i{color:var(--violet)}.pd-lrow.agent.on .pd-lrow-t small{color:var(--mint)}
.pd-lrow.walled{opacity:.65}
button.pd-lrow:hover{background:rgba(246,239,230,.04)!important}
.pd-chats,.pd-agents{margin-top:22px;padding:16px;border-radius:18px;background:var(--sf-0);border:1px solid var(--sf-edge)}
.pd-chats>.pd-line{margin-top:14px}
/* steps */
.pd-steps{margin-top:22px;display:flex;flex-direction:column}
.pd-step{border-bottom:1px solid var(--hair)}
.pd-step-h{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;min-height:62px;padding:10px 6px;text-align:start}
.pd-step-h .st{justify-self:center}
.pd-step-h>.pd-i{color:var(--ink-3);transition:transform .2s var(--pd-e)}
.pd-step.open>.pd-step-h>.pd-i{transform:rotate(90deg)}
[dir=rtl] .pd-step.open>.pd-step-h>.pd-i{transform:scaleX(-1) rotate(90deg)}
.pd-step-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.pd-step-t b{font-size:15.5px;font-weight:500;color:var(--ink-1)}
.pd-step-t small{font-size:13.5px;color:var(--ink-3)}
.pd-step.done .pd-step-t b{color:var(--ink-2)}
.pd-step.now{border:1px solid rgba(245,198,107,.35);border-radius:16px;background:rgba(245,198,107,.04);margin:6px 0}
.pd-step-b{padding-block:0 16px;padding-inline:46px 14px}
[dir=rtl] .pd-step-b{padding:0 46px 16px 14px}
.pd-step-why{margin:0 0 10px;color:var(--ink-2);font-size:14.5px;line-height:1.5}
.pd-todo{position:relative;display:flex;align-items:center;gap:12px;min-height:40px;font-size:15px;color:var(--ink-1);cursor:pointer}
.pd-todo input,.pd-check input{position:absolute;opacity:0;width:1px;height:1px}
.pd-box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--hair-2);flex:none;display:grid;place-items:center;transition:background-color .15s,border-color .15s}
.pd-todo input:checked+.pd-box,.pd-check input:checked+.pd-box{background:var(--mint);border-color:var(--mint)}
.pd-todo input:checked+.pd-box::after,.pd-check input:checked+.pd-box::after{content:"";width:9px;height:5px;border:2px solid #06281c;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
.pd-todo input:focus-visible+.pd-box,.pd-check input:focus-visible+.pd-box{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
.pd-todo.done span:last-child{color:var(--ink-3)}
.pd-addtodo input,.pd-addstep input{width:100%;height:40px;padding:0 12px;border-radius:12px;background:transparent;border:1px dashed var(--hair-2);color:var(--ink-1);font:inherit;font-size:14.5px;outline:none}
.pd-addtodo{margin:6px 0 4px}
.pd-addtodo input:focus,.pd-addstep input:focus{border-style:solid;border-color:rgba(92,225,255,.5)}
.pd-addstep{display:flex;gap:10px;margin-top:14px}
.pd-step-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pd-tool{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 13px;border-radius:999px;font-size:13.5px;color:var(--ink-2);background:var(--sf-1)!important;border:1px solid var(--hair)!important;white-space:nowrap;transition:border-color .15s,color .15s,transform .16s}
.pd-tool .pd-i{color:var(--ice)}
.pd-tool:hover{color:var(--ink-1);border-color:var(--hair-2)!important}.pd-tool:active{transform:scale(.97)}
/* Ask NOVA about this project */
.pd-dock{display:flex;flex-direction:column;min-height:0;background:var(--pd-sheet);border-inline-start:1px solid var(--hair)}
.pd-dock-h{display:flex;align-items:center;gap:12px;padding:16px 20px 14px;border-bottom:1px solid var(--hair)}
.pd-dock-h b{display:block;font-size:15.5px;font-weight:600;color:var(--ink-1)}
.pd-dock-h span{display:block;font-size:13px;color:var(--ink-3)}
.pd-dock-h span span{display:inline}
.pd-thread{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:18px 20px;display:flex;flex-direction:column;gap:12px}
.pd-thread-e{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:auto}
.pd-thread-e p{margin:0 0 6px;color:var(--ink-2);font-size:14.5px;line-height:1.5}
.pd-sugg{min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2)!important;color:var(--ink-1);font-size:14px;text-align:start}
.pd-sugg:hover{border-color:rgba(92,225,255,.45)!important}
.pd-me{align-self:flex-end;max-width:88%;padding:9px 14px;border-radius:18px 18px 6px 18px;background:rgba(246,239,230,.08);color:rgba(246,239,230,.9);font-size:14.5px;line-height:1.45;white-space:pre-wrap}
[dir=rtl] .pd-me{border-radius:18px 18px 18px 6px}
.pd-nova{align-self:stretch;padding:14px 16px;border-radius:6px 20px 20px 20px;background:var(--pd-raised);border:1px solid var(--hair);color:var(--ink-1);font-size:14.5px;line-height:1.55}
[dir=rtl] .pd-nova{border-radius:20px 6px 20px 20px}
.pd-nova.err{border-color:rgba(255,122,182,.35)}
.pd-rich p{margin:0 0 8px}.pd-rich p:last-child{margin:0}.pd-rich ul{margin:0 0 8px;padding-inline-start:18px}.pd-rich li{margin:2px 0}
.pd-think{color:var(--ink-2)}
.pd-comet{position:relative;display:block;height:2px;margin-top:10px;border-radius:2px;background:rgba(92,225,255,.14);overflow:hidden}
.pd-comet::after{content:"";position:absolute;top:0;bottom:0;left:-40%;width:40%;background:linear-gradient(90deg,transparent,rgba(92,225,255,.95));border-radius:2px;animation:pdComet 1.25s cubic-bezier(.45,0,.25,1) infinite}
[dir=rtl] .pd-comet::after{animation-name:pdCometR}
.pd-comet.rest::after,.pd-hidden .pd-comet::after{animation-play-state:paused}
@keyframes pdComet{to{transform:translateX(350%)}}
@keyframes pdCometR{from{transform:translateX(350%)}to{transform:translateX(0)}}
.pd-made{display:flex;align-items:center;gap:12px;width:100%;margin-top:12px;padding:10px 12px;border-radius:14px;background:var(--sf-1)!important;border:1px solid var(--hair)!important;text-align:start}
.pd-made .pd-i{color:var(--ice)}
.pd-made b{display:block;font-size:14px;color:var(--ink-1)}.pd-made small{font-size:12.5px;color:var(--mint)}
.pd-tools{display:flex;flex-wrap:wrap;gap:8px;padding:0 20px 12px}
.pd-comp{display:flex;align-items:flex-end;gap:6px;margin:0 16px 16px;min-height:56px;padding:6px;border-radius:28px;background:var(--sf-1);border:1px solid var(--hair-2)}
.pd-comp:focus-within{border-color:rgba(92,225,255,.4)}
.pd-comp textarea::placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-comp textarea{flex:1;min-width:0;min-height:44px;max-height:160px;resize:none;background:none;border:0;outline:none;color:var(--ink-1);font:inherit;font-size:15.5px;line-height:1.4;padding:11px 6px}
.pd-askin{margin-top:30px;padding:18px 0 0;border-top:1px solid var(--hair)}
.pd-askin .pd-thread{padding:0 0 14px;overflow:visible}
.pd-askin .pd-tools{padding:0 0 12px}.pd-askin .pd-comp{margin:0}

/* ---------------------------------------------------------------- sheets: a dialog on a computer, a bottom sheet on a phone */
.pd-modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:rgba(3,4,10,.7);opacity:0;transition:opacity .18s ease}
.pd-modal.on{opacity:1}
.pd-sheet{width:min(560px,100%);max-height:min(860px,calc(100dvh - 48px));overflow:auto;overscroll-behavior:contain;padding:22px;border-radius:24px;background:#10121f;border:1px solid var(--hair-2);box-shadow:inset 0 1px 0 rgba(246,239,230,.05),0 12px 28px -12px rgba(0,0,0,.75),0 40px 90px -30px rgba(0,0,0,.95);color:var(--ink-1);transform:translateY(8px) scale(.985);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.pd-sheet.wide{width:min(680px,100%)}
.pd-modal.on .pd-sheet{transform:none}
.pd-sheet-h{display:flex;align-items:flex-start;gap:12px}
.pd-sheet-t{flex:1;margin:4px 0 0;font-family:var(--display);font-weight:400;font-size:26px;line-height:1.15;letter-spacing:-.005em;color:var(--ink-1);outline:none}
.pd-sheet-lead{margin:6px 0 16px;color:var(--ink-2);font-size:14.5px;line-height:1.5}
/* the head (title, close) and the foot (the buttons) stay put; only the middle scrolls */
.pd-sheet{display:flex;flex-direction:column;overflow:hidden}
.pd-sheet-h,.pd-sheet-lead{flex:none}
.pd-sheet-b{display:flex;flex-direction:column;gap:14px;flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;margin:0 -22px;padding:2px 22px 0;scroll-padding-top:8px}
.pd-sheet-f{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;padding:14px 0 2px;border-top:1px solid var(--hair);position:sticky;bottom:0;z-index:1;background:#10121f}
.pd-form{display:flex;flex-direction:column;gap:16px}
.pd-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.pd-field-l{font-size:14.5px;font-weight:500;color:var(--ink-1)}
.pd-field small{font-size:13px;color:var(--ink-3);margin-top:-4px}
.pd-field-row{display:flex;gap:8px;align-items:center}
.pd-form input:not([type=checkbox]),.pd-inline input:not([type=checkbox]),.pd-inline textarea{width:100%;min-width:0;height:48px;padding:0 14px;border-radius:14px;background:var(--sf-1);border:1px solid var(--hair-2);color:var(--ink-1);font:inherit;font-size:15.5px;outline:none;color-scheme:dark}
.pd-inline textarea{height:auto;padding:12px 14px;resize:vertical;line-height:1.45}
.pd-form input:focus,.pd-inline :is(input,textarea):focus{border-color:rgba(92,225,255,.5)}
.pd-tchips{display:flex;flex-wrap:wrap;gap:8px}
.pd-tchips .pd-chip small{color:var(--gold)}
.pd-limit{padding:14px 16px;border-radius:14px;background:rgba(245,198,107,.06);border:1px solid rgba(245,198,107,.3);display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.pd-limit-t{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.pd-limit[hidden]{display:none}
.pd-plan-steps{margin:0;padding-inline-start:22px;display:flex;flex-direction:column;gap:10px}
.pd-plan-steps li b{display:block;font-size:15.5px;font-weight:500}.pd-plan-steps li span{display:block;font-size:14px;color:var(--ink-2)}
.pd-menu{display:flex;flex-direction:column;gap:2px}
.pd-menu-h{margin:6px 0 2px!important;font-size:13.5px!important;font-weight:500!important;color:var(--ink-3)!important;letter-spacing:0!important;text-transform:none!important}
.pd-menu-b{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 12px;border-radius:12px;text-align:start;color:var(--ink-1);font-size:15px}
.pd-menu-b:hover{background:rgba(246,239,230,.05)!important}
.pd-menu-b span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-menu-b>.pd-i{color:var(--ink-3)}
.pd-menu-b.on{color:var(--gold)}.pd-menu-b.on>.i-check{color:var(--gold)}
.pd-menu-b.bad{color:var(--rose)}.pd-menu-b.bad>.pd-i{color:var(--rose)}
.pd-big{display:block;width:100%;max-height:52vh;object-fit:contain;border-radius:16px;background:#000}
.pd-item-meta{margin:0;color:var(--ink-3);font-size:13.5px}
.pd-item-note{margin:0;color:var(--ink-2);font-size:14px}
.pd-item-text{margin:0;font-size:16px;line-height:1.55;white-space:pre-wrap}
.pd-read{padding:14px 16px;border-radius:16px;background:rgba(92,225,255,.05);border:1px solid rgba(92,225,255,.18)}
.pd-read h4{margin:0 0 6px!important;font-size:14px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--ice)!important}
.pd-read p{margin:0;font-size:14.5px;line-height:1.5}
.pd-read ul{margin:8px 0 0;padding-inline-start:18px;font-size:14px;color:var(--ink-2)}
/* bring anything in */
.pd-srcs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.pd-src{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:78px;padding:8px 4px;border-radius:16px;border:1px dashed var(--hair-2)!important;font-size:12.5px;color:var(--ink-2);text-align:center;line-height:1.25;transition:border-color .15s,background-color .15s,transform .16s}
.pd-src .pd-i{color:var(--ice)}
.pd-src.on{border-color:rgba(92,225,255,.5)!important;background:rgba(92,225,255,.04)!important;color:var(--ink-1)}
@media (hover:hover){.pd-src:hover{border-color:rgba(92,225,255,.5)!important;background:rgba(92,225,255,.04)!important;color:var(--ink-1)}} /* a finger's last spot never looks picked */
.pd-src:active{transform:scale(.97)}
.pd-bring-f:empty{display:none}
.pd-inline{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pd-inline input[type=url]{flex:1}
.pd-inline.col{flex-direction:column;align-items:stretch}
.pd-check{position:relative;display:flex;align-items:center;gap:10px;flex-basis:100%;font-size:14px;color:var(--ink-2);cursor:pointer;min-height:36px}
.pd-arr:empty{display:none}
.pd-arr-r{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--hair);animation:pdSettle .2s var(--pd-e) both}
.pd-arr-th{width:64px;height:48px;border-radius:10px;overflow:hidden;display:grid;place-items:center;background:var(--sf-2);color:var(--ice)}
.pd-arr-th img{width:100%;height:100%;object-fit:cover}
.pd-arr-t{min-width:0}
.pd-arr-t b{display:block;font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-arr-t p{margin:3px 0 0;font-size:13.5px;color:var(--ink-2);line-height:1.4}
.pd-arr-r.bad .pd-arr-t p{color:var(--rose)}
.pd-arr-to{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.pd-filed{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--mint);white-space:nowrap}
.pd-pop{padding:6px;border-radius:14px;background:var(--sf-1);border:1px solid var(--hair-2)}
.pd-private{flex:1;display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--ink-3)}
.pd-bring-foot{justify-content:space-between}


.pd-wayline{display:flex;align-items:center;gap:14px;flex-wrap:wrap;width:100%;min-height:52px;margin-top:12px;padding:10px 16px;border-radius:16px;background:var(--sf-1)!important;border:1px solid var(--hair)!important;font-size:14.5px;color:var(--ink-1);text-align:start}
.pd-wayline>span{display:inline-flex;align-items:center;gap:8px}.pd-wayline>span i{width:8px;height:8px;border-radius:50%}
.pd-wayline .bad i{background:var(--rose)}.pd-wayline .ice i{background:var(--ice)}
.pd-wayline>.pd-i{margin-inline-start:auto;color:var(--ink-3)}
.pd-sheet .pd-way{grid-template-columns:minmax(0,1fr);margin:0}
@media (max-width:760px){.pd-next>.pd-mark{display:none}.pd-next{grid-template-columns:minmax(0,1fr)}.pd-next-t{grid-column:1/-1}}

/* Files across projects (Oct 18): which project each lives in, a filter by project, Move to project */
.mf-proj{display:flex;gap:8px;margin:2px 0 8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.mf-proj::-webkit-scrollbar{display:none}
.mf-proj[hidden]{display:none}
.mf-pchip{flex:none;min-height:36px;padding:0 13px;border-radius:999px;border:1px solid var(--hair);background:none;color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis;transition:border-color .15s,background-color .15s,color .15s}
.mf-pchip[aria-pressed=true]{border-color:rgba(245,198,107,.5);background:rgba(245,198,107,.08);color:var(--ink-1)}
.mf-pchip:active{transform:scale(.97)}
.mf-place{position:relative;display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px}
.mf-in{display:inline-flex;align-items:center;max-width:100%;min-height:30px;padding:0 10px;border-radius:999px;border:1px solid rgba(169,139,255,.3);background:rgba(169,139,255,.07);color:var(--ink-1);font:inherit;font-size:12.5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-in span{overflow:hidden;text-overflow:ellipsis}
.mf-in.none{border-color:var(--hair);background:none;color:var(--ink-3);cursor:default}
.mf-move{min-height:30px;padding:0 10px;border-radius:999px;border:1px solid rgba(245,198,107,.4);background:none;color:var(--gold);font:inherit;font-size:12.5px;cursor:pointer}
.mf-move:active,.mf-in:active{transform:scale(.97)}
.mf-menu{position:absolute;top:calc(100% + 6px);inset-inline-start:0;z-index:5;min-width:220px;max-width:280px;padding:6px;border-radius:14px;background:#10121f;border:1px solid var(--hair-2);box-shadow:0 12px 28px -12px rgba(0,0,0,.75),0 30px 60px -30px rgba(0,0,0,.9);display:flex;flex-direction:column}
.mf-menu button{min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:var(--ink-1);font:inherit;font-size:14.5px;text-align:start;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mf-menu button:hover,.mf-menu button:focus-visible{background:rgba(246,239,230,.06);outline:none}
.mf-menu button.q{color:var(--ink-2);border-top:1px solid var(--hair);border-radius:0 0 10px 10px}
@media (max-width:760px){.mf-in.none{display:none}}
/* ---------------------------------------------------------------- Simple view: one calm column */
.pd-desk.simple{display:block;height:auto;max-width:720px;margin:0 auto}
.pd-desk.simple .pd-main{overflow:visible;padding:8px 0 40px;background:none}
html.simple .hub.h-projects.pd-in{overflow:auto}
html.simple .pd-hwrap{grid-template-columns:minmax(0,1fr);margin:0 auto} /* the full width of the header above it, so the gold button lines up with the list (design review, Oct 18) */
html.simple .pd-hside{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
html.simple .pd-hside>.pd-notice{grid-column:1/-1}
html.simple .pd-row{grid-template-columns:minmax(0,1.3fr) 110px minmax(0,1.4fr) 60px}
html.simple .pd-row-th{display:none}

/* ---------------------------------------------------------------- the phone */
@media (max-width:760px){
  .hub.h-projects{padding-bottom:0}
  .pd-hwrap{grid-template-columns:minmax(0,1fr);gap:18px}
  .pd-hside{position:static}
  .pd-hbar .pd-q{display:none}
  .pd-find{width:100%}
  .pd-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -14px;padding:0 14px 2px}
  .pd-chips::-webkit-scrollbar{display:none}
  .pd-hwrap>.pd-hmain>.pd-chips{margin-bottom:14px}
  .pd-list{border-radius:20px;padding:0}
  .pd-grp+.pd-grp{margin-top:0}
  .pd-row{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:16px 18px;border-radius:0}
  .pd-grp .pd-row+.pd-row,.pd-grp-h+.pd-row~.pd-row{border-top:1px solid var(--hair)}
  .pd-row-top{display:flex;align-items:center;gap:10px}
  .pd-row-top b{flex:1;min-width:0;font-size:17px}
  .pd-row-top .pd-dot{width:9px;height:9px}
  .pd-row-g{padding-inline-start:19px}
  .pd-row-line{display:flex;align-items:center;gap:12px;min-width:0;padding-inline-start:19px}
  .pd-row-line .pd-row-n{flex:1;min-width:0}
  .pd-row-line .pd-row-next,.pd-row-line .pd-row-why{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
  .pd-row-line .pd-row-next .pd-i{display:none}
  .pd-row-line .pd-row-why{font-size:14px}
  .pd-row-line .pd-row-next+.pd-row-why{display:none}
  .pd-row-line.why .pd-row-next{display:none}
  .pd-row-line.why .pd-row-next+.pd-row-why{display:block}
  .pd-grp-h{padding:16px 18px 2px}
  .pd-hside .pd-plans,.pd-hside .pd-files{display:none}
  .pd-desk{display:block;height:auto}
  .pd-main{overflow:visible;padding:4px 0 0;background:none}
  .pd-title{font-size:36px;margin-top:10px}
  .pd-goal{font-size:16.5px}
  .pd-next{grid-template-columns:auto minmax(0,1fr);padding:18px;gap:12px 14px;margin-top:20px}
  .pd-next h2{font-size:19px}
  .pd-next-a{grid-column:1/-1}
  .pd-next-a .pd-gold{min-height:54px;font-size:16.5px}
  .pd-then{grid-column:1/-1}
  .pd-way{grid-template-columns:minmax(0,1fr)}
  .pd-shelf{margin-top:16px}
  .pd-shelf-h .pd-chips{order:3;flex-basis:100%;margin-top:4px}
  .pd-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}
  .pd-comp.phone{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));margin:20px 0 0;box-shadow:0 -24px 30px -6px #04050c}
  .pd-modal{place-items:end stretch;padding:0}
  .pd-sheet,.pd-sheet.wide{width:100%;max-height:92dvh;border-radius:28px 28px 0 0;border-bottom:0;padding:12px 18px calc(18px + env(safe-area-inset-bottom,0px));transform:translateY(24px)}
  .pd-sheet::before{content:"";display:block;width:40px;height:5px;border-radius:3px;background:var(--hair-2);margin:0 auto 10px}
  .pd-sheet-t{font-size:24px}
  .pd-sheet-b{margin:0 -18px;padding:2px 18px 0}
  .pd-srcs{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pd-src{min-height:96px;font-size:14px;border-style:solid!important;border-color:var(--hair)!important;background:var(--sf-1)!important}
  .pd-arr-r{grid-template-columns:56px minmax(0,1fr)}
  .pd-arr-to{grid-column:2;justify-content:flex-start}
  .pd-asksheet{height:92dvh;display:flex;flex-direction:column}
  .pd-asksheet .pd-sheet-b{flex:1;min-height:0}
  .pd-asksheet .pd-thread{padding:6px 0}
  .pd-asksheet .pd-tools{padding:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .pd-asksheet .pd-comp{margin:0}
  .pd-sheet-f .pd-gold{flex:1}
  .pd-step-b{padding-block:0 16px;padding-inline:40px 14px}
  .pd-linked,.pd-chats,.pd-agents{padding:12px}
}
/* design finish review (Oct 18) */
.pd-grid.small.list{grid-template-columns:minmax(0,1fr);gap:6px;margin:12px 0}
.pd-sheet-f::before{content:"";position:absolute;inset-inline:0;bottom:calc(100% + 1px);height:28px;background:linear-gradient(rgba(16,18,31,0),#10121f);pointer-events:none} /* what scrolls under the buttons fades out */
@media (min-width:761px){.pd-src{justify-content:flex-start;padding-top:18px}}
@media (max-width:760px){
  .pd-grid.small{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .mf-move,.mf-in{min-height:36px}
  .mf-move{position:relative}.mf-move::before{content:"";position:absolute;inset:-4px}
}
@media (min-width:761px){.pd-grid.small{grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}}
.pd-tile-m small,.pd-sheet-t{text-wrap:balance}
.pd-src{font-size:13.5px;padding:10px 8px}
html.simple .pd-hside>.pd-files{margin-top:32px} /* level with the plan list beside it, under its heading */
@media (max-width:760px){html.simple .pd-hside>.pd-files{margin-top:0}}
.hub.h-projects.pd-in .hub-head .ld-title{transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.hub.h-projects.pd-in .hub-head .ld-title.pd-under{opacity:0}
/* a web page's face: its site name reads left to right and stays clear of the ⋯ in the corner */
.pd-th-site b{direction:ltr;unicode-bidi:isolate}
[dir=ltr] .pd-th-site b,html:not([dir=rtl]) .pd-th-site b{margin-right:44px}
[dir=rtl] .pd-th-site b{margin-left:44px;text-align:right}
.pd-files-t b{text-wrap:balance}
/* performance gate (Oct 18): what's below the first screen is laid out only when it scrolls near */
.pd-main>.pd-view .pd-shelf-g,.pd-main>.pd-view .pd-grid{content-visibility:auto;contain-intrinsic-size:auto 420px}
.pd-tile-m small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pd-th-page .bar{align-self:flex-start}
.pd-view,.pd-shelf,.pd-steps{scroll-margin-top:calc(var(--pd-top,70px) + 12px)}
.pd-lead-plan{font-weight:600;color:var(--ink-1)}
.pd-gold:disabled{cursor:not-allowed}
@media (min-width:761px){.hub.h-projects.pd-in .hub-head .ld-title{visibility:hidden}} /* the project's name is the big title right below */
@media (max-width:420px){.pd-bring-foot{flex-direction:column;align-items:stretch}.pd-bring-foot .pd-gold{flex:none}}
.pd-look{display:inline-flex;align-items:center;gap:8px}
/* the mic sits inside the name field, so every field in the sheet is the same width */
.pd-field-row{position:relative}
.pd-field-row>.pd-cbtn{position:absolute;inset-inline-end:2px;top:50%;transform:translateY(-50%);border:0!important}
.pd-field-row>.pd-cbtn:active{transform:translateY(-50%) scale(.94)}
.pd-field-row.has-mic input{padding-inline-end:52px}
.pd-form input[type=date]{font-variant-numeric:tabular-nums}
.pd-form input[type=date]::-webkit-calendar-picker-indicator{opacity:.75;cursor:pointer;padding:8px;margin-inline-end:-8px} /* light already (color-scheme:dark) */
/* her words keep their own direction, the line keeps the page's alignment (an English title in an Arabic row sits right) */
[dir=rtl] :is(.pd,.pd-sheet,.mf-panel) [dir=auto],[dir=rtl] .hub.h-projects .hub-head h3[dir=auto]{text-align:right}
[dir=ltr] :is(.pd,.pd-sheet,.mf-panel) [dir=auto],[dir=ltr] .hub.h-projects .hub-head h3[dir=auto]{text-align:left}
.pd-goal{margin-inline:0}
/* the project's sections live in the rail when there is one: shown once */
.pd-desk.has-rail .pd-top .pd-pills{display:none}
@media (max-width:1179px){.pd-desk.has-rail .pd-top .pd-pills{display:flex}}
.pd-top-r .pd-more-b{margin-inline-start:auto}
/* list rows keep room for their ⋯, and the ⋯ is a full finger wide */
.pd-grid.list .pd-tile-o{padding-inline-end:52px}
.pd-tile-x::before,.pd-more-b::before{content:"";position:absolute;inset:-6px}
.pd-more-b{position:relative}
.pd-grid.list .pd-th :is(.pd-th-page b,.pd-th-q span,.pd-th-res span,.pd-th-site b){display:none}
.pd-grid.list .pd-th-q{justify-content:center;align-items:center}
/* rows that scroll sideways fade at their edge, so a cut chip reads as "more this way" */
[dir=rtl] :is(.mf-proj,.mf-filter,.pd-chips){--fade-to:left}
/* Files' project filter speaks the same pill language as its kind filter */
.mf-pchip{min-height:40px;border-color:transparent;color:var(--ink-3)}
.mf-pchip:hover{color:var(--ink-1)}
.mf-pchip[aria-pressed=true]{background:var(--sf-2,#1f222c);border-color:var(--sf-edge,var(--hair));color:var(--ink-1)}
.mf-filter{top:-24px;padding-top:12px}
@media (max-width:760px){
  .pd-chips{-webkit-mask-image:linear-gradient(to var(--fade-to,right),#000 calc(100% - 32px),transparent);mask-image:linear-gradient(to var(--fade-to,right),#000 calc(100% - 32px),transparent)}
  .pd-todo{min-height:44px}.pd-check{min-height:44px}
  .pd-more-b{width:44px;height:44px}
  .pd-tile-x::before{inset:-8px}
  .pd-hwrap{padding-bottom:84px}
  /* Files on a phone: a sheet from the bottom edge, like every sheet in Projects */
  #madeFiles{align-items:flex-end;padding:0}
  #madeFiles .mf-panel{width:100%;height:92dvh;max-height:92dvh;border-radius:28px 28px 0 0;border-bottom:0;padding:12px 18px calc(18px + env(safe-area-inset-bottom,0px))}
  #madeFiles .mf-panel::before{content:"";display:block;width:40px;height:5px;border-radius:3px;background:var(--hair-2);margin:0 auto 10px}
  #madeFiles .mf-filter{top:-12px}
  .mf-proj,.mf-filter{-webkit-mask-image:linear-gradient(to var(--fade-to,right),#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to var(--fade-to,right),#000 calc(100% - 28px),transparent)}
}
@media (prefers-reduced-motion:reduce){
  .pd-tile.fresh,.pd-arr-r{animation:none}
  .pd-comet::after{animation:none;left:0;width:100%;opacity:.5}
  .pd-modal,.pd-sheet{transition:none}
}

/* Speed (Oct 18 2026, public/js/perf.js). The deep field behind the mind is painted once, off the main thread, and
   fades in when it's ready. A live blur behind a panel is worked out again every frame while the sky moves behind it,
   which an integrated GPU (Katie's Snapdragon laptop) can't keep up with: panels that are nearly solid anyway draw no
   blur at all, and in low power none do; the see-through ones get a little more surface instead, so they read the same. */
#nebula{pointer-events:none;opacity:0;transition:opacity .8s var(--ease)}
#nebula.in{opacity:1}
.rail-peek{contain:layout style}
.rail-peek,#memcard,.remind,.story,.plus-menu,.gl-tray,.bk-menu{-webkit-backdrop-filter:none;backdrop-filter:none}
html.low-power *,html.low-power *::before,html.low-power *::after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html.low-power .rail-card{background:rgba(var(--k-14-16-27,14,16,27),.9)}
@media (min-width:1280px){html.low-power .glance{background:rgba(var(--k-26-29-44,26,29,44),.97)}} /* (the side card only: on smaller screens it's a row of doors with no surface) */
html.low-power .convo::before{background:linear-gradient(rgba(var(--k-246-239-230,246,239,230),.025),rgba(var(--k-246-239-230,246,239,230),.025)),rgba(var(--k-6-7-13,6,7,13),.93)}
html.low-power .mfa-dlg{background:rgba(var(--k-3-4-10,3,4,10),.86)}
html.low-power .am-view,html.low-power .cm-zb{background:rgba(var(--k-4-5-12,4,5,12),.9)}
html.low-power .cm-card{background:rgba(var(--k-4-5-12,4,5,12),.94)}
html.low-power .dash .ld-head,html.low-power .life-detail.dash .ld-head,html.low-power .hub-head{background:rgba(var(--k-4-5-12,4,5,12),.97)}

/* ---- Which microphone and camera (public/js/devices.js; computers only, Oct 19). A solid menu beside the mic or
   camera button: the selected microphone's live level on top (restrained ice, tied to her real voice), then the
   devices, the one in use checked. Rows are 44px; it opens from its button (scale .98 + fade, 160ms ease-out). ---- */
.dv-chev{position:relative;flex:none;display:grid;place-items:center;color:var(--ink-3);transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.dv-chev[hidden]{display:none}
.dv-chev:active{transform:scale(.92)}
.dv-chev:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
.dv-chev[aria-expanded=true]{color:var(--ink-1)}
.mic-chev{width:20px;height:38px;margin-inline-start:-6px;border-radius:10px}
.mic-chev::before{content:"";position:absolute;inset:-3px -6px}
@media (hover:hover){.dv-chev:hover{color:var(--ink-1)}}
.dock.dictating .mic-chev{display:none}
/* the video call: a small disc on the corner of the microphone and camera buttons, like a call's own pickers */
.lc-f{position:relative}
.lc-dv{position:absolute;top:34px;inset-inline-start:calc(50% + 14px);width:24px;height:24px;border-radius:50%;color:var(--ink-1);background:#1c1e27;box-shadow:0 0 0 2px #020308,inset 0 0 0 1px var(--hair-2)}
.lc-dv::before{content:"";position:absolute;inset:-8px}
@media (hover:hover){.lc-dv:hover{background:#262935}}
.lcall.vc[data-phase=call] .lc-top .lc-dv{top:24px;inset-inline-start:calc(50% + 9px);width:20px;height:20px}
.lcall[data-phase=ended] .lc-dv{display:none}
.dvm{position:fixed;z-index:400;box-sizing:border-box;padding:8px;border-radius:16px;background:#14151c;color:var(--ink-1);
  box-shadow:0 0 0 1px rgba(246,239,230,.12),0 1px 0 rgba(255,255,255,.03) inset,0 28px 56px -22px rgba(0,0,0,.9);
  opacity:0;transform:translateY(6px) scale(.98);transform-origin:50% 100%;transition:opacity .16s cubic-bezier(.23,1,.32,1),transform .16s cubic-bezier(.23,1,.32,1)}
.dvm.below{transform:translateY(-6px) scale(.98);transform-origin:50% 0}
.dvm.on{opacity:1;transform:none}
.dvm-h{margin:6px 10px 10px;font-size:13px;font-weight:600;letter-spacing:0;color:var(--ink-2)}
.dvm-meter{height:4px;margin:0 10px 10px;border-radius:2px;background:rgba(246,239,230,.08);overflow:hidden}
.dvm-lvl{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,rgba(92,225,255,.45),#5ce1ff);transform:scaleX(0);transform-origin:0 50%;will-change:transform}
html[dir=rtl] .dvm-lvl{transform-origin:100% 50%;background:linear-gradient(270deg,rgba(92,225,255,.45),#5ce1ff)}
.dvm-list{display:flex;flex-direction:column;gap:2px;max-height:min(360px,60vh);overflow-y:auto;overscroll-behavior:contain}
.dvm-row{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 10px;border-radius:10px;text-align:start;font-size:14px;line-height:1.3;color:var(--ink-1);transition:background-color .12s ease}
.dvm-row:focus-visible{outline:none;box-shadow:inset 0 0 0 1.5px var(--gold)}
.dvm-row:active{background:rgba(246,239,230,.09)}
@media (hover:hover){.dvm-row:hover{background:rgba(246,239,230,.06)}}
.dvm-ck{flex:none;width:16px;height:16px;display:grid;place-items:center;color:#5ce1ff}
.dvm-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.dvm-n,.dvm-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dvm-row[aria-checked=true] .dvm-n{font-weight:500}
.dvm-s{font-size:12px;color:var(--ink-3)}
html[dir=rtl] .dvm-t>[dir=auto]{text-align:right}
.dvm-ask{display:flex;align-items:center;width:100%;min-height:44px;margin-top:4px;padding:6px 10px 6px 36px;border-radius:10px;border-top:1px solid rgba(246,239,230,.08);text-align:start;font-size:13.5px;color:var(--gold)}
html[dir=rtl] .dvm-ask{padding:6px 36px 6px 10px}
.dvm-ask:focus-visible{outline:none;box-shadow:inset 0 0 0 1.5px var(--gold)}
@media (hover:hover){.dvm-ask:hover{background:rgba(245,198,107,.07)}}
@media (prefers-reduced-motion:reduce){.dvm,.dvm.below{transform:none;transition:opacity .12s linear}}
/* Customize › Voice & Talk: the device in use, and Change */
.vs-dev{cursor:default}
.vs-dev-btn{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px 0 14px;border-radius:999px;font-size:13.5px;color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--hair-2);transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.vs-dev-btn svg{color:var(--ink-3);transform:rotate(180deg)}
.vs-dev-btn:active{transform:scale(.97)}
.vs-dev-btn:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
@media (hover:hover){.vs-dev-btn:hover{background:rgba(246,239,230,.06)}}
/* Guided goal setup (public/js/guided.js): one question at a time on a solid sheet; a small constellation gains a star per answer */
.gs{--gs-sheet:#080a14;--gs-raised:#10121f;--gs-ease:cubic-bezier(.23,1,.32,1);position:fixed;inset:0;z-index:106;display:grid;place-items:center;background:rgba(3,4,10,.78);color:var(--ink-1);font-family:var(--sans);opacity:0;transition:opacity .2s var(--gs-ease);outline:none}
.gs.on{opacity:1}
.gs-sheet{position:relative;display:flex;flex-direction:column;width:min(540px,calc(100vw - 32px));height:min(820px,calc(100dvh - 48px));background:var(--gs-sheet);border:1px solid var(--hair);border-radius:28px;box-shadow:0 30px 90px rgba(0,0,0,.6);overflow:hidden;transform:translateY(10px) scale(.985);transition:transform .24s var(--gs-ease)}
.gs.on .gs-sheet{transform:none}
.gs-top{display:flex;align-items:center;gap:12px;padding:16px 18px 6px}
.gs-kind{flex:1;margin:0;text-align:center;font-size:14.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-ic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--gs-raised);border:1px solid var(--hair);color:var(--ink-2);transition:transform .16s var(--gs-ease),color .15s ease}
.gs-ic:hover{color:var(--ink-1)}.gs-ic:active{transform:scale(.95)}
.gs-ic.gone{visibility:hidden}
html[dir=rtl] .gs-back svg{transform:scaleX(-1)}
.gs-prog{display:flex;gap:6px;padding:10px 24px 0}
.gs-prog[hidden]{display:none}
.gs-prog i{flex:1;height:3px;border-radius:2px;background:var(--hair-2);transition:background-color .2s ease}
.gs-prog i.d{background:var(--gold)}.gs-prog i.c{background:rgba(245,198,107,.45)}
.gs-sky{display:block;width:100%;height:76px;margin:6px 0 0;flex:none}
html[dir=rtl] .gs-sky{transform:scaleX(-1)}
.gs-star-in{transform-box:fill-box;transform-origin:center}
.gs-new .gs-star-in{animation:gsLit .26s var(--gs-ease) both}
@keyframes gsLit{from{opacity:.2;transform:scale(.55)}to{opacity:1;transform:scale(1)}}
.gs.thinking .gs-star-in{animation:gsThink 1.6s ease-in-out infinite}
@keyframes gsThink{50%{opacity:.55}}
.gs-main{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 24px 20px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18px);mask-image:linear-gradient(to bottom,transparent 0,#000 18px);opacity:0;transform:translateY(var(--gs-from,10px));transition:opacity .2s var(--gs-ease),transform .24s var(--gs-ease)}
.gs-main.in{opacity:1;transform:none}
.gs-eye{margin:4px 0 8px;font-size:14px;color:var(--ice)}
.gs-q{margin:0;font-family:var(--display);font-weight:400;font-size:32px;line-height:1.12;letter-spacing:-.01em;outline:none;text-wrap:balance}
html[lang=ar] .gs-q{font-family:"Noto Naskh Arabic",var(--display);line-height:1.35}
.gs-why{margin:12px 0 0;font-size:15.5px;line-height:1.5;color:var(--ink-2)}
.gs-ans{margin-top:22px}
.gs-opts{display:grid;gap:10px;margin-top:22px}
.gs-ans .gs-opts{margin-top:0}
.gs-opt{display:flex;align-items:center;gap:14px;min-height:60px;padding:12px 18px;border-radius:18px;background:var(--gs-raised);border:1px solid var(--hair);color:var(--ink-1);text-align:start;transition:transform .16s var(--gs-ease),border-color .15s ease,background-color .15s ease}
.gs-opt:hover{border-color:var(--hair-2)}.gs-opt:active{transform:scale(.985)}
.gs-opt.on{border-color:var(--gold);background:linear-gradient(180deg,rgba(245,198,107,.10),rgba(245,198,107,.04)),var(--gs-raised)}
.gs-opt-t{flex:1;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;min-width:0}
.gs-opt-t b{font-weight:500;font-size:16.5px;line-height:1.3}
.gs-opt-t small{font-size:13.5px;color:var(--ink-3)}
.gs-type .gs-opt-t{flex-direction:column;align-items:flex-start;justify-content:center}
.gs-mark{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--hair-2);transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}
.gs-opt.multi .gs-mark{border-radius:6px}
.gs-opt.on .gs-mark{border-color:var(--gold);background:var(--gold);box-shadow:inset 0 0 0 5px #3a2a10}
.gs-opt.multi.on .gs-mark{box-shadow:none;background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1408' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/14px no-repeat}
.gs-date{display:block}.gs-date[hidden]{display:none}
.gs-date input{width:100%;min-height:52px;padding:10px 16px;border-radius:14px;background:var(--gs-raised);border:1px solid var(--hair-2);color:var(--ink-1);font:inherit;font-size:16px;color-scheme:dark}
.gs-field{display:flex;align-items:center;gap:10px;min-height:64px;padding:6px 8px 6px 18px;border-radius:18px;background:var(--gs-raised);border:1px solid var(--hair-2);transition:border-color .15s ease}
html[dir=rtl] .gs-field{padding:6px 18px 6px 8px}
.gs-field:focus-within{border-color:rgba(245,198,107,.6)}
.gs-pre{font-size:22px;color:var(--ink-3)}
.gs-in{flex:1;min-width:0;background:transparent;border:0;outline:none;color:var(--ink-1);font:inherit;font-size:22px;padding:8px 0}
.gs-field.text .gs-in{font-size:17.5px}
.gs-in::placeholder{color:var(--ink-3)}
.gs-unit-t{font-size:15px;color:var(--ink-3);white-space:nowrap}
.gs-units{display:flex;padding:3px;border-radius:999px;background:var(--gs-sheet);border:1px solid var(--hair)}
.gs-unit{min-width:44px;min-height:36px;padding:0 12px;border-radius:999px;color:var(--ink-2);font-size:14.5px;transition:background-color .15s ease,color .15s ease}
.gs-unit.on{background:rgba(245,198,107,.16);color:var(--gold)}
.gs-mic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hair);transition:transform .16s var(--gs-ease),background-color .15s ease,color .15s ease}
.gs-mic:active{transform:scale(.95)}
.gs-mic.on{background:var(--gold);color:var(--gold-ink,#1d1408);border-color:var(--gold)}
.gs-mic[hidden]{display:none}
.gs-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.gs-chip{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:15px;transition:transform .16s var(--gs-ease),border-color .15s ease}
.gs-chip:hover{border-color:rgba(245,198,107,.55)}.gs-chip:active{transform:scale(.97)}
.gs-err{margin:10px 0 0;min-height:0;font-size:14px;color:var(--rose)}
.gs-err:empty{display:none}
@media (min-width:700px) and (hover:hover){.gs-sheet{height:min(860px,calc(100dvh - 32px))}.gs-opts{gap:8px}.gs-opt{min-height:52px;padding:10px 18px}} /* a computer: the question, all answers and a pace note fit without scrolling the question away */
.gs-note{margin-top:16px;padding:14px 16px;border-radius:14px;background:var(--gs-raised);border:1px solid var(--hair);border-inline-start:3px solid var(--gold)}
.gs-note[hidden]{display:none}
.gs-note p,p.gs-note{margin:0;font-size:15px;line-height:1.5;color:var(--ink-1)}
p.gs-note.on{margin-top:14px;border-inline-start-color:var(--ice)}
.gs-connect{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;padding:14px 16px;border-radius:16px;border:1px dashed rgba(92,225,255,.35);background:rgba(92,225,255,.04)}
.gs-connect-ic{flex:none;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#0f1d27;color:var(--ice)}
.gs-connect-t{flex:1;min-width:160px}
.gs-connect-t b{display:block;font-weight:500;font-size:15px}
.gs-connect-t small{display:block;margin-top:2px;font-size:13.5px;line-height:1.4;color:var(--ink-3)}
.gs-connect-a{display:flex;flex-wrap:wrap;gap:8px}
.gs-connect-b{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(92,225,255,.45);color:var(--ice);font-size:14.5px;font-weight:500;transition:transform .16s var(--gs-ease),background-color .15s ease}
.gs-connect-b:hover{background:rgba(92,225,255,.08)}.gs-connect-b:active{transform:scale(.97)}
.gs-foot{display:grid;gap:4px;padding:12px 20px calc(16px + env(safe-area-inset-bottom));background:var(--gs-sheet);border-top:1px solid var(--hair)}
.gs-foot:empty{display:none}
.gs-go{min-height:56px;border-radius:999px;background:var(--gold);color:var(--gold-ink,#1d1408);font-size:17px;font-weight:600;transition:transform .16s var(--gs-ease),opacity .15s ease,filter .15s ease}
.gs-go:hover{filter:brightness(1.05)}.gs-go:active{transform:scale(.98)}
.gs-go:disabled{background:var(--hair);color:var(--ink-3);cursor:default;transform:none;filter:none}
.gs-skip{min-height:44px;color:var(--ink-2);font-size:15px;transition:color .15s ease}
.gs-skip:hover{color:var(--ink-1)}.gs-skip[hidden]{display:none}
.gs-name{display:block;margin-top:20px}
.gs-name>span{display:block;margin-bottom:6px;font-size:14px;color:var(--ink-3)}
.gs-name .gs-in{width:100%;min-height:56px;padding:10px 16px;border-radius:16px;background:var(--gs-raised);border:1px solid var(--hair-2);font-size:19px;font-weight:500}
.gs-name .gs-in:focus{border-color:rgba(245,198,107,.6)}
.gs-nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;margin:14px 0 0}
.gs-num.wide{grid-column:1/-1}
.gs-num{padding:14px 16px;border-radius:16px;background:var(--gs-raised);border:1px solid var(--hair)}
.gs-num dt{font-size:13.5px;color:var(--ink-3)}
.gs-num dd{margin:4px 0 0;font-size:16.5px;line-height:1.35;font-weight:500;font-variant-numeric:tabular-nums}
.gs-sec{margin-top:26px}
.gs-sec h3{margin:0 0 4px;font-size:17px;font-weight:600}
.gs-small{margin:0;font-size:14px;line-height:1.5;color:var(--ink-3)}
.gs-miles{list-style:none;margin:10px 0 0;padding:0;position:relative}
.gs-miles li{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;padding:10px 0 10px 26px;border-bottom:1px solid var(--hair)}
html[dir=rtl] .gs-miles li{padding:10px 26px 10px 0}
.gs-miles li::before{content:"";position:absolute;inset-inline-start:4px;top:16px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.55)}
.gs-miles li:last-child{border-bottom:0}
.gs-mile-t{font-size:15.5px;line-height:1.4}
.gs-miles small{font-size:13.5px;color:var(--ink-3);white-space:nowrap}
.gs-sug{position:relative;display:flex;align-items:flex-start;gap:12px;margin-top:10px;padding:13px 16px;border-radius:16px;background:var(--gs-raised);border:1px solid var(--hair);cursor:pointer;transition:border-color .15s ease}
.gs-sug:hover{border-color:var(--hair-2)}
.gs-sug input{position:absolute;opacity:0;width:1px;height:1px}
.gs-box{flex:none;width:20px;height:20px;margin-top:1px;border-radius:6px;border:1.5px solid var(--hair-2);transition:background-color .15s ease,border-color .15s ease}
.gs-sug input:checked+.gs-box{border-color:var(--gold);background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1408' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/14px no-repeat}
.gs-sug input:focus-visible+.gs-box{outline:2px solid var(--ice);outline-offset:2px}
.gs-sug-t{flex:1;min-width:0}
.gs-sug-t b{display:block;font-weight:500;font-size:15.5px;line-height:1.35}
.gs-sug-t small{display:block;margin-top:3px;font-size:13.5px;color:var(--ink-3)}
.gs-told{margin-top:24px;border-top:1px solid var(--hair);padding-top:6px}
.gs-told summary{min-height:44px;display:flex;align-items:center;font-size:15px;color:var(--ink-2);cursor:pointer}
.gs-told-r{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--hair)}
.gs-told-q{grid-column:1;font-size:13.5px;color:var(--ink-3)}
.gs-told-a{grid-column:1;font-size:15px}
.gs-told-a.skip{color:var(--ink-3)}
.gs-told-c{grid-column:2;grid-row:1/span 2;min-height:44px;padding:0 10px;color:var(--gold);font-size:14.5px}
.gs-disc{margin-top:18px}
.gs[data-screen=saved] .gs-small{margin-top:10px}
.gs-saved-t{margin:16px 0 0;font-size:19px;font-weight:500;color:var(--mint)}
.gs[data-screen=saved] .gs-main{display:flex;flex-direction:column;justify-content:center;text-align:center}
/* agent setup's "Here's your agent" (public/js/guided-agent.js): the job in plain words, then what needs their OK */
.gs-plain{margin:14px 0 0;padding:4px 16px;border-radius:16px;background:var(--gs-raised);border:1px solid var(--hair)}
.gs-plain-r{display:grid;grid-template-columns:84px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--hair)}
.gs-plain-r:last-child{border-bottom:0}
.gs-plain dt{font-size:13.5px;line-height:1.45;color:var(--ink-3);padding-top:1px}
.gs-plain dd{margin:0;font-size:16px;line-height:1.45;font-weight:500;overflow-wrap:anywhere}
.gs-act{display:flex;align-items:flex-start;gap:12px;margin-top:10px;padding:13px 16px;border-radius:16px;background:var(--gs-raised);border:1px solid var(--hair)}
.gs-act-t{flex:1;min-width:0}
.gs-act-t b{display:block;font-weight:500;font-size:15.5px;line-height:1.35}
.gs-act-t small{display:block;margin-top:3px;font-size:13.5px;line-height:1.45;color:var(--ink-3);overflow-wrap:anywhere}
.gs-act-k{flex:none;margin-top:1px;padding:4px 10px;border-radius:999px;font-size:13px;white-space:nowrap;color:var(--ice);border:1px solid rgba(92,225,255,.4)}
.gs-act-k.ask{color:var(--gold);border-color:rgba(245,198,107,.45)}
p.gs-note.gs-warn{border-inline-start-color:var(--rose)}
.gs-alt{display:block;margin:14px auto 0;padding:0 12px}
@media (max-width:720px){
  .gs{place-items:stretch;background:var(--night,#03040a)}
  .gs-sheet{width:100%;height:100%;border:0;border-radius:0;box-shadow:none;padding-top:env(safe-area-inset-top);transform:translateY(16px)}
  .gs-main{padding:6px 20px 18px}
  .gs-q{font-size:30px}
  .gs-foot{padding-inline:20px}
}
@media (prefers-reduced-motion:reduce){
  .gs,.gs-sheet,.gs-main{transition:none}
  .gs-new .gs-star-in,.gs.thinking .gs-star-in{animation:none}
}
html.simple .gs-sky{display:none}
/* ==== Agent setup: one stepped, choice-first flow (Oct 29 2026; public/js/agentflow.js, agentflow-core.js) ====
   One question per step, every answer a tap ("Other…" opens a short field right there). Progress is the agent taking
   shape: an outline of its sections goes empty → current → filled in, each filled one with its one-line summary. A
   side rail on a computer, a compact strip on a phone. A centred panel / a full-height sheet with a sticky footer. */
.af{--af-sheet:#080a14;--af-rail:#0b0d18;--af-raised:#10121f;--af-ease:cubic-bezier(.23,1,.32,1);position:fixed;inset:0;z-index:107;display:grid;place-items:center;background:rgba(3,4,10,.78);color:var(--ink-1);font-family:var(--sans);opacity:0;transition:opacity .2s var(--af-ease)}
.af.on{opacity:1}
.af-panel{position:relative;display:grid;grid-template-columns:292px minmax(0,1fr);width:min(1000px,calc(100vw - 48px));height:min(780px,calc(100dvh - 48px));background:var(--af-sheet);border:1px solid var(--hair);border-radius:28px;box-shadow:0 40px 120px -40px rgba(0,0,0,.85),0 0 0 1px rgba(0,0,0,.4);overflow:hidden;transform:translateY(10px) scale(.985);transition:transform .24s var(--af-ease)}
.af.on .af-panel{transform:none}
.af ::selection{background:rgba(245,198,107,.32);color:var(--ink-1)}
/* the outline: the agent taking shape */
.af-rail{display:flex;flex-direction:column;gap:14px;min-height:0;padding:22px 16px 18px;background:radial-gradient(120% 60% at 0 0,rgba(169,139,255,.08),transparent 60%),var(--af-rail);border-inline-end:1px solid var(--hair);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--hair-2) transparent}
.af-who{display:flex;gap:12px;align-items:center;padding:4px 6px 16px;border-bottom:1px solid var(--hair)}
.af-who-m{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:var(--violet);background:rgba(169,139,255,.10);border:1px solid rgba(169,139,255,.28);overflow:hidden}
.af-who-m>svg:not([width]){width:46px;height:46px}
.af-who-t{min-width:0}
.af-who-n{display:block;font-family:var(--display);font-weight:400;font-size:21px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[lang=ar] .af-who-n{font-family:"Noto Naskh Arabic",var(--display)}
.af-who-l{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:3px;font-size:13.5px;line-height:1.4;color:var(--ink-3)}
.af-out{list-style:none;margin:0;padding:0}
.af-sec{position:relative}
.af-sec::before{content:"";position:absolute;inset-inline-start:19px;top:31px;bottom:-9px;width:1px;background:var(--hair-2);transform-origin:top}
.af-sec:last-child::before{display:none}
.af-sec.done::before{background:rgba(245,198,107,.55)}
.af-sec-b{display:flex;gap:12px;width:100%;align-items:flex-start;min-height:46px;padding:9px 10px;border-radius:14px;text-align:start;color:var(--ink-3);transition:background-color .15s ease,color .15s ease}
.af-sec-b:not(:disabled):hover{background:rgba(246,239,230,.04);color:var(--ink-1)}
.af-sec-b:disabled{cursor:default}
.af-sec-b:focus-visible{outline:2px solid var(--ice);outline-offset:1px}
.af-node{position:relative;z-index:1;flex:none;width:20px;height:20px;margin-top:1px;border-radius:50%;border:1.5px solid var(--hair-2);display:grid;place-items:center;background:var(--af-rail);color:#1d1408;transition:border-color .15s ease,background-color .15s ease}
.af-sec.cur .af-node{border-color:var(--gold);box-shadow:0 0 0 4px rgba(245,198,107,.12)}
.af-sec.done .af-node{border-color:var(--gold);background:var(--gold)}
.af-node.lit{animation:afLit .28s var(--af-ease) both}
@keyframes afLit{from{opacity:.35;transform:scale(.6)}to{opacity:1;transform:none}}
.af-sec-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.af-sec-n{font-size:15px;font-weight:500;line-height:1.3}
.af-sec.cur .af-sec-b{color:var(--ink-1);background:rgba(245,198,107,.07)}
.af-sec.done .af-sec-b{color:var(--ink-1)}
.af-sec-s{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13.5px;line-height:1.4;color:var(--ink-3);overflow-wrap:anywhere}
/* the question */
.af-col{display:flex;flex-direction:column;min-width:0;min-height:0}
.af-head{display:flex;align-items:center;justify-content:flex-end;padding:14px 16px 0}
.af-ic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--af-raised);border:1px solid var(--hair);color:var(--ink-2);transition:transform .16s var(--af-ease),color .15s ease,background-color .15s ease}
.af-ic:hover{color:var(--ink-1)}.af-ic:active{transform:scale(.95)}
.af-ic:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.af-main{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 40px 28px;scroll-padding-block:24px;scrollbar-width:thin;scrollbar-color:var(--hair-2) transparent}
.af-step{max-width:660px}
.af-step.in{animation:afIn .2s var(--af-ease) both}
@keyframes afIn{from{opacity:0;transform:translateX(var(--af-from,12px))}to{opacity:1;transform:none}}
.af-count{font-size:13.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.af-count[hidden]{display:none}
.af-q{margin:0;font-family:var(--display);font-weight:400;font-size:32px;line-height:1.14;letter-spacing:-.01em;outline:none;text-wrap:balance}
html[lang=ar] .af-q{font-family:"Noto Naskh Arabic",var(--display);line-height:1.4}
.af-why{margin:10px 0 0;font-size:15.5px;line-height:1.5;color:var(--ink-2);max-width:60ch}
.af-body{margin-top:22px}
.af-err{margin:12px 0 0;font-size:14.5px;color:var(--rose)}
.af-err:empty{display:none}
/* answers: native radios and checkboxes under the styling */
.af-opts{display:grid;gap:8px}
.af-in-sr{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.af-opt{position:relative;display:flex;align-items:center;gap:14px;min-height:56px;padding:12px 16px;border-radius:16px;background:var(--af-raised);border:1px solid var(--hair);cursor:pointer;transition:transform .16s var(--af-ease),border-color .15s ease,background-color .15s ease}
.af-opt:hover{border-color:var(--hair-2)}.af-opt:active{transform:scale(.985)}
.af-opt.on{border-color:var(--gold);background:linear-gradient(180deg,rgba(245,198,107,.10),rgba(245,198,107,.04)),var(--af-raised)}
.af-opt:has(.af-in-sr:focus-visible){outline:2px solid var(--ice);outline-offset:2px}
.af-opt-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.af-opt-t b{font-weight:500;font-size:16px;line-height:1.3;overflow-wrap:anywhere}
.af-opt-t small{font-size:13.5px;line-height:1.4;color:var(--ink-3);overflow-wrap:anywhere}
.af-mark{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--hair-2);transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}
.af-opt.multi .af-mark{border-radius:6px}
.af-opt.on .af-mark{border-color:var(--gold);background:var(--gold);box-shadow:inset 0 0 0 5px #3a2a10}
.af-opt.multi.on .af-mark{box-shadow:none;background:var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1408' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/14px no-repeat}
.af-opt-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:rgba(169,139,255,.10);color:var(--violet);transition:background-color .15s ease,color .15s ease}
.af-opt.on .af-opt-ic{background:rgba(245,198,107,.14);color:var(--gold)}
/* the job: cards, two across on a computer */
.af-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.af-cards .af-opt{align-items:flex-start;min-height:88px;padding:14px 16px}
.af-cards .af-mark{position:absolute;top:14px;inset-inline-end:14px;width:18px;height:18px}
.af-cards .af-opt-t{padding-inline-end:22px}
/* small choices: pills that wrap */
.af-pills{display:flex;flex-wrap:wrap;gap:8px}
.af-pills .af-opt{min-height:44px;padding:0 16px;border-radius:999px;gap:8px}
.af-pills .af-mark{display:none}
.af-pills .af-opt-t b{font-size:15px;white-space:nowrap}
.af-pills .af-opt.multi.on::before{content:"";width:14px;height:14px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f5c66b' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/14px no-repeat}
.af-times .af-opt-t b{font-variant-numeric:tabular-nums}
.af-follow{margin-top:22px;padding-top:18px;border-top:1px solid var(--hair)}
.af-sub{margin:20px 0 10px;font-size:15px;font-weight:500;color:var(--ink-2)}
.af-body>div>.af-sub:first-child,.af-follow>.af-sub:first-child{margin-top:0}
.af-other{display:flex;gap:8px;align-items:flex-start;margin-top:12px}
.af-text{flex:1;width:100%;min-width:0;min-height:52px;padding:12px 16px;border-radius:14px;background:var(--af-raised);border:1px solid var(--hair-2);color:var(--ink-1);font:inherit;font-size:16px;transition:border-color .15s ease}
textarea.af-text{resize:none;min-height:104px;line-height:1.5}
.af-text:focus{outline:none;border-color:rgba(245,198,107,.6)}
.af-text::placeholder{color:var(--ink-3)}
.af-mic{margin-top:4px}
.af-mic.on{background:var(--gold);color:#1d1408;border-color:var(--gold)}
.af-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.af-chip{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:14.5px;transition:transform .16s var(--af-ease),border-color .15s ease,color .15s ease}
.af-chip:hover{border-color:rgba(245,198,107,.55);color:var(--ink-1)}.af-chip:active{transform:scale(.97)}
.af-chip.on{border-color:var(--gold);color:var(--gold)}
.af-chip:focus-visible,.af-edit:focus-visible,.af-back:focus-visible,.af-skip:focus-visible,.af-go:focus-visible,.af-connect:focus-visible,.af-remove:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.af-note{margin:16px 0 0;padding:12px 14px;border-radius:14px;background:var(--af-raised);border:1px solid var(--hair);font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.af-note.ice{background:rgba(92,225,255,.05);border-color:rgba(92,225,255,.22)}
.af-note.gold{background:rgba(245,198,107,.06);border-color:rgba(245,198,107,.3)}
.af-note.rose{background:rgba(255,122,182,.06);border-color:rgba(255,122,182,.32);color:var(--ink-1)}
.af-hint{margin:10px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.af-connect{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:16px;padding:0 16px;border-radius:999px;border:1px dashed rgba(92,225,255,.45);color:var(--ice);font-size:14.5px;font-weight:500;transition:background-color .15s ease,transform .16s var(--af-ease)}
.af-connect:hover{background:rgba(92,225,255,.07)}.af-connect:active{transform:scale(.97)}
.af-field{display:block;margin-top:16px}
.af-field>label{display:block;margin-bottom:6px;font-size:14px;color:var(--ink-2)}
.af-check{display:flex;gap:12px;align-items:flex-start;margin-top:20px;padding:14px 16px;border-radius:16px;background:var(--af-raised);border:1px solid var(--hair);cursor:pointer}
.af-check input{flex:none;width:20px;height:20px;margin:2px 0 0;accent-color:var(--gold)}
.af-check b{display:block;font-weight:500;font-size:15.5px}
.af-check small{display:block;margin-top:3px;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.af-custom{margin-top:4px}
.af-inline{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:14px;font-size:15px;color:var(--ink-2)}
.af-time,.af-num{min-height:44px;padding:0 12px;border-radius:12px;background:var(--af-raised);border:1px solid var(--hair-2);color:var(--ink-1);font:inherit;font-size:16px;color-scheme:dark;font-variant-numeric:tabular-nums}
.af-num{width:72px}
/* Review: the outline itself, filled in (gold stars on a gold thread, each section's summary and Edit) */
.af-rev{list-style:none;margin:22px 0 0;padding:0}
.af-rev-r{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:2px 14px;align-items:start;padding:10px 0}
.af-rev-r::before{content:"";position:absolute;inset-inline-start:9.5px;top:32px;bottom:-11px;width:1px;background:rgba(245,198,107,.55)}
.af-rev-r:last-child::before{display:none}
.af-rev-r .af-node{border-color:var(--gold);background:var(--gold);margin-top:2px}
.af-rev-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.af-rev-t b{font-size:15.5px;font-weight:500;line-height:1.35}
.af-rev-s{font-size:14.5px;line-height:1.45;color:var(--ink-2);overflow-wrap:anywhere}
.af-rev .af-edit{min-height:40px;margin-top:-6px}
.af.at-review .af-out{display:none}
.af.at-review .af-who{border-bottom:0}
/* the mark forming: one star per section, lit as it is answered */
.af-mark-c .af-mk-s{fill:rgba(246,239,230,.28)}
.af-mark-c .af-mk-s.on{fill:var(--gold)}
.af-mark-c .af-mk-l{stroke:rgba(245,198,107,.55);stroke-width:.8}
.af-mark-c .af-mk-s.new{transform-box:fill-box;transform-origin:center;animation:afLit .28s cubic-bezier(.23,1,.32,1) both}
.af-who-m:has(.af-mark-c){background:rgba(245,198,107,.05);border-color:rgba(245,198,107,.22)}
/* Review: the outline, filled in, in plain sentences */
.af-name .af-sub{margin-top:0}
.af-qs{margin-top:18px}
.af-qs p{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.af-dim{color:var(--ink-3)}
.af-edit{min-height:44px;padding:0 4px;color:var(--gold);font-size:14.5px;transition:opacity .15s ease}
.af-edit:hover{opacity:.8}
.af-remove{display:block;min-height:44px;margin-top:20px;padding:0;color:var(--rose);font-size:14.5px}
/* a built-in agent's own settings, in its steps (the same fields, at the flow's sizes) */
.af .af-part.ag-set{margin:0;padding:0;border:0;gap:18px}
.af .af-part.ag-set label>span{font-size:14px;letter-spacing:0;color:var(--ink-2)}
.af .af-part.ag-set small{font-size:13px}
.af .af-part.ag-set .ag-chk{min-height:44px;font-size:15px}
.af .af-part.ag-set textarea,.af .af-part.ag-set input[type=text],.af .af-part.ag-set input[type=url]{min-height:48px;padding:12px 14px;border-radius:14px;font-size:16px}
.af .af-part .ag-limit{margin:0}
/* the footer: Back, Skip, and the one gold button */
.af-foot{display:flex;align-items:center;gap:14px;padding:14px 28px 16px 32px;border-top:1px solid var(--hair);background:var(--af-sheet)}
.af-back{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 14px;border-radius:999px;color:var(--ink-2);font-size:15px;transition:color .15s ease,background-color .15s ease,transform .16s var(--af-ease)}
.af-back:hover{color:var(--ink-1);background:rgba(246,239,230,.05)}.af-back:active{transform:scale(.97)}
.af-back[hidden]{display:none}
html[dir=rtl] .af-back svg{transform:scaleX(-1)}
.af-foot-r{display:flex;align-items:center;gap:8px;margin-inline-start:auto}
.af-skip{min-height:48px;padding:0 14px;color:var(--ink-2);font-size:15px;transition:color .15s ease}
.af-skip:hover{color:var(--ink-1)}.af-skip[hidden]{display:none}
.af-go{min-height:52px;min-width:156px;padding:0 28px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:16.5px;font-weight:600;transition:transform .16s var(--af-ease),filter .15s ease,opacity .15s ease}
.af-go:hover{filter:brightness(1.05)}.af-go:active{transform:scale(.98)}
.af-go:disabled{opacity:.6;cursor:default;transform:none}
.af.thinking .af-go{animation:afThink 1.4s ease-in-out infinite}
@keyframes afThink{50%{opacity:.7}}
html.af-open #hub,html.af-open .side{overscroll-behavior:contain}
@media (min-width:761px){#stage:has(#hub.on)>.remind:not([hidden]){z-index:14}} /* a computer: a due reminder sits on top of a full page (the Agents list), not half under it */
@media (max-width:760px){
  .af{place-items:stretch;background:var(--night,#03040a)}
  .af-panel{width:100%;height:100%;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);border:0;border-radius:0;box-shadow:none;padding-top:env(safe-area-inset-top);transform:translateY(16px)}
  /* the outline as a compact strip across the top: the name taking shape, then each section as a pill */
  .af-rail{gap:8px;padding:10px 0 10px;border-inline-end:0;border-bottom:1px solid var(--hair);overflow:visible;background:var(--af-rail)}
  .af-who{padding:0 64px 0 16px;border:0;gap:10px;min-height:44px}
  html[dir=rtl] .af-who{padding:0 16px 0 64px}
  .af-who-m{width:34px;height:34px}
  .af-who-m>svg:not([width]){width:34px;height:34px}
  .af-who-n{font-size:18px}
  .af-who-l{display:none}
  .af-out{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:2px 16px;scrollbar-width:none;scroll-padding-inline:56px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 20px),transparent);mask-image:linear-gradient(90deg,transparent,#000 20px,#000 calc(100% - 20px),transparent)}
  .af-sec{flex:none}
  .af-out::-webkit-scrollbar{display:none}
  .af-sec::before{display:none}
  .af-sec-b{height:40px;min-height:40px;padding:0 13px 0 8px;align-items:center;gap:8px;border-radius:999px;border:1px solid var(--hair);white-space:nowrap}
  .af-sec.cur .af-sec-b{border-color:rgba(245,198,107,.55)}
  .af-sec-s{display:none}
  .af-sec-n{font-size:14px}
  .af-node{width:18px;height:18px;margin:0}
  .af-head{position:absolute;top:calc(env(safe-area-inset-top) + 10px);inset-inline-end:12px;padding:0;z-index:2}
  .af-main{padding:16px 20px 20px}
  .af-foot .af-count{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap} /* (still announced) */
  .af-q{font-size:28px}
  .af-cards{grid-template-columns:minmax(0,1fr);gap:8px}
  .af-cards .af-opt{min-height:68px;align-items:center;padding:12px 14px}
  .af-cards .af-mark{position:static}
  .af-cards .af-opt-t{padding-inline-end:0}
  .af-foot{gap:6px;padding:10px 12px calc(12px + env(safe-area-inset-bottom))}
  .af-foot-r{flex:1;justify-content:flex-end}
  .af-go{flex:1;min-width:0;min-height:56px;max-width:260px}
  .af-skip{padding:0 10px}
}
@media (prefers-reduced-motion:reduce){
  .af,.af-panel{transition:none}
  .af-step.in,.af-node.lit,.af.thinking .af-go{animation:none}
}
/* ==== One card surface (Oct 31 2026; Katie: "the To-dos card, across the whole Full view") ====
   Every card in Full view is the same frosted dark glass Katie chose on To-dos: her list and Scheduled. These tokens are
   the only place it is defined; To-dos, Agents, Projects, the life sections, Life at a glance (the dashboard's Now and
   next), Connections and Customize all paint their cards from them (see DESIGN.md, "One card surface").
   - fill: dark glass, 82% at the top to 88% at the foot, so body text stays well above 4.5:1 and muted text at 4.5:1
     over the brightest sky we paint, with or without blur (measured Oct 31 2026; it was 78/86%);
   - rim: a hairline; lit: a faintly lit top edge; drop: a soft shadow under it; radius 18px;
   - tint: the page's own colour rising faintly from the top corner on the reading side (--c, --card-x);
   - blur: only where the sky moves behind a card at phone width (one or two cards at once); never on a wide screen,
     in Simple view, low power, reduced motion or reduced transparency, and never animated;
   - solid: what reduced transparency gets; dense: what low power gets; floor: the opaque colour of the card's foot,
     for a sticky row that content scrolls under.
   Simple view never uses them: it keeps its own flat, solid panels. */
:root{
  --card-fill:linear-gradient(172deg,rgba(26,29,42,.82),rgba(13,14,23,.88));
  --card-solid:linear-gradient(172deg,rgb(26,29,42),rgb(14,15,24));
  --card-dense:linear-gradient(172deg,rgba(26,29,42,.9),rgba(13,14,23,.94));
  --card-floor:#0c0d15;
  --card-rim:rgba(246,239,230,.075);
  --card-lit:inset 0 1px 0 rgba(255,255,255,.075);
  --card-drop:0 18px 40px -28px rgba(0,0,0,.85);
  --card-radius:18px;
  --card-tint:.06;
  --card-blur:20px;
  --card-x:0%;
}
@media (max-width:760px){:root{--card-blur:16px}}
html[dir=rtl]{--card-x:100%}
@media (prefers-reduced-transparency:reduce){:root{--card-fill:var(--card-solid)}}
html.low-power{--card-fill:var(--card-dense)}
/* ==== end of one card surface tokens ==== */
/* ==== Glass section pages ("Focus depth", Oct 26 2026; Katie chose C, life section pages only, never home) ====
   A life section's tiles (Finance, Career, Business, Wellness…; public/js/tiles.js via dash.js) are one family of
   frosted glass in Full view: dark glass that softly takes the section's colour and the sky behind it, a faintly lit
   top edge, a hairline rim. The one tile that needs her (Money alerts, else "Needs you here" when it holds something
   for her; tiles.js focusOf) sits forward in warm gold glass; everything else rests on the cooler layer behind.
   Readable with no blur at all: every surface is at least 78% opaque on its own. Only tile surfaces ever blur (never
   anything inside them): the forward tile, and on a phone the rest too (16px there); none in Simple view, low power,
   reduced motion or reduced transparency.
   Big numbers are light and sure (the system sans at 300); NOVA's serif stays for section titles.
   Kept in one block, apart from the tile CSS above, so other work on public/index.html doesn't collide with it. */
:root{
  --gl-gold-fill:linear-gradient(150deg,rgba(245,198,107,.17),rgba(150,98,30,.13) 42%,rgba(245,198,107,0) 75%),linear-gradient(180deg,rgba(30,23,14,.84),rgba(18,14,10,.88));
  --gl-gold-rim:rgba(245,198,107,.3);
  --gl-gold-lit:inset 0 1px 0 rgba(255,236,200,.2);
  --gl-gold-glow:0 26px 56px -30px rgba(0,0,0,.9),0 0 64px -30px rgba(245,198,107,.42);
  --gl-ease:cubic-bezier(.23,1,.32,1);
}
/* the surface: one rule for every tile on a section's page */
html:not(.simple) #life .life-detail.dash .tile:not(.sk){
  background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,200,215,255),.07),rgba(var(--c,200,215,255),0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
/* Arabic: the light comes from the reading side */
html[dir=rtl]:not(.simple) #life .life-detail.dash .tile{--card-x:100%}
/* the live blur: the forward tile everywhere; the rest only on a phone, where one or two show at a time. On a wide
   screen five or six blurred tiles sliding over the sky cut scrolling from about 44 to 17 frames a second (4x slower
   CPU); there the cool glass is solid enough (78–86%) that it reads the same without it */
html:not(.simple) #life .life-detail.dash .tile.gl-focus{-webkit-backdrop-filter:blur(var(--card-blur)) saturate(135%);backdrop-filter:blur(var(--card-blur)) saturate(135%)}
@media (max-width:760px){html:not(.simple) #life .life-detail.dash .tile:not(.sk){-webkit-backdrop-filter:blur(var(--card-blur)) saturate(135%);backdrop-filter:blur(var(--card-blur)) saturate(135%)}}
/* a note keeps its dashed edge (a suggestion, not a fact); a folded section the same glass */
html:not(.simple) #life .life-detail.dash .tile.k-note{background:linear-gradient(rgba(var(--c),.05),rgba(var(--c),.05)),var(--card-fill);border:1px dashed rgba(var(--c),.32)}
html:not(.simple) #life .life-detail.dash .tile.fold:not(.open){background:var(--card-fill)}
/* the one that needs her, forward in warm gold */
html:not(.simple) #life .life-detail.dash .tile.gl-focus{position:relative;z-index:1;background:var(--gl-gold-fill);border-color:var(--gl-gold-rim);box-shadow:var(--gl-gold-lit),var(--gl-gold-glow)}
html[dir=rtl]:not(.simple) #life .life-detail.dash .tile.gl-focus{background:linear-gradient(210deg,rgba(245,198,107,.17),rgba(150,98,30,.13) 42%,rgba(245,198,107,0) 75%),linear-gradient(180deg,rgba(30,23,14,.84),rgba(18,14,10,.88))}
html:not(.simple) #life .life-detail.dash .tile.gl-focus .tl-h h4{color:var(--h-ffe3ad,#ffe3ad)}
html:not(.simple) #life .life-detail.dash .tile.gl-focus .tl-row{border-top-color:rgba(245,198,107,.14)}
html:not(.simple) #life .life-detail.dash .tile.gl-focus .tl-row:first-child{border-top:0}
/* inside a tile: hairlines, not boxes */
html:not(.simple) #life .life-detail.dash .tile .fp-seg{border-color:transparent;background:rgba(3,4,10,.32)}
/* big numbers: light, sure, tabular (the sans; Arabic keeps its own sans) */
html:not(.simple) #life .life-detail.dash :is(.tl-v,.tl-cell-v,.fp-total b,.fp-ring-mid b,.md-spend-n b,.md-stat b,.mn-big b){font-family:var(--sans);font-weight:300;letter-spacing:-.025em;font-variant-numeric:lining-nums tabular-nums}
html:not(.simple) #life .life-detail.dash .tl-v:not(.txt){font-size:40px}
html:not(.simple) #life .life-detail.dash .tl-cell-v:not(.txt){font-size:30px}
html:not(.simple) #life .life-detail.dash .fp-total b{font-size:24px}
html[lang=ar]:not(.simple) #life .life-detail.dash :is(.tl-v,.tl-cell-v,.fp-total b,.fp-ring-mid b,.md-spend-n b,.md-stat b,.mn-big b){letter-spacing:0}
/* a change the data already gives: a small pill in its own tone */
html:not(.simple) #life .life-detail.dash .tile .tl-d{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:rgba(246,239,230,.07);font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums}
html:not(.simple) #life .life-detail.dash .tile .tl-d.good{background:rgba(111,242,196,.11)}
html:not(.simple) #life .life-detail.dash .tile .tl-d.bad{background:rgba(255,180,162,.11)}
html:not(.simple) #life .life-detail.dash .tile .fp-pv small:is(.good,.bad){display:inline-block;margin-top:3px;padding:1px 8px;border-radius:999px;background:rgba(111,242,196,.11)}
html:not(.simple) #life .life-detail.dash .tile .fp-pv small.bad{background:rgba(255,180,162,.11)}
/* charts: a soft fill under a calm line */
html:not(.simple) #life .life-detail.dash .tile .tl-spark .ln{stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
/* a computer with a mouse: a tile lifts a little under the pointer (translate, so the arrival animation keeps transform) */
@media (hover:hover) and (pointer:fine){
  html:not(.simple) #life .life-detail.dash .tiles>.tile:not(.sk),html:not(.simple) #life .life-detail.dash .lane-tiles>.tile{transition:translate .24s var(--gl-ease)}
  html:not(.simple) #life .life-detail.dash .tiles>.tile:not(.sk):hover,html:not(.simple) #life .life-detail.dash .lane-tiles>.tile:hover{translate:0 -3px}
}
html:not(.simple) #life .life-detail.dash .tile :is(.tl-go,.fp-x){transition:color .2s ease,transform .16s var(--gl-ease)}
html:not(.simple) #life .life-detail.dash .tile button.tl-row{transition:background-color .15s ease,transform .16s var(--gl-ease)}
html:not(.simple) #life .life-detail.dash .tile :is(.tl-go,.fp-x):active{transform:scale(.97)}
html:not(.simple) #life .life-detail.dash .tile button.tl-row:active{transform:scale(.99)}
/* no live blur where it costs or isn't wanted: a solid glass instead, reading the same */
@media (prefers-reduced-transparency:reduce){
  html:not(.simple) #life .life-detail.dash .tile:not(.sk){-webkit-backdrop-filter:none;backdrop-filter:none;--card-fill:var(--card-solid)}
}
@media (prefers-reduced-motion:reduce){
  html:not(.simple) #life .life-detail.dash .tile:not(.sk){-webkit-backdrop-filter:none;backdrop-filter:none}
  html:not(.simple) #life .life-detail.dash .tile{transition:none!important;translate:none!important}
}
html.low-power:not(.simple) #life .life-detail.dash .tile:not(.sk){--card-fill:var(--card-dense)}
/* ==== end of glass section pages ==== */
/* ==== Glass hub pages (Oct 27 2026; Katie: "the same glass as the life sections") ====
   The To-dos and Agents pages in Full view (#hub.hub-space, over the same still sky) wear the section pages' cool glass:
   the --card-* tokens (One card surface, above), nothing new. Her list, the add box, the suggestions, "Waiting for your OK", Agents' next
   item and its side list are one family of frosted dark glass with a lit top edge and a hairline rim, tinted faintly
   with the page's colour. Readable with no blur (every fill is at least 78% opaque on its own); the live blur only at
   phone width, where one or two panels show at once, and never in Simple view, reduced motion or reduced
   transparency. Projects and Connections have no sky behind them (flat pages); their cards wear the same surface
   from the "One card surface: the rest of Full view" block below. */
html:root:not(.simple) #hub.hub-space :is(.hub-body .tlist,.hub-body .agx-list,.hub-side,.hub-body .tform,.hub-body .tdbl,.hub-body .tile,.dash .tile:not(.sk),.ax-rail,.hub-body .ag-reports .ag-agent,.hub-body>.ag-work:not(.ag-m-agents,.ag-m-team)){
  background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,200,215,255),var(--card-tint)),rgba(var(--c,200,215,255),0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
/* Agents' proposal: the same glass, its gold-to-nothing edge and deeper lift kept (the one card forward); on a phone the
   sticky actions row takes the card's own foot colour, since the draft scrolls under it */
html:root:not(.simple) #hub.hub-space .ax-card{background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c),var(--card-tint)),rgba(var(--c),0) 55%),var(--card-fill);border-color:var(--card-rim);box-shadow:var(--card-lit),0 12px 28px -12px rgba(0,0,0,.75),0 50px 100px -30px rgba(0,0,0,.95)}
html:root:not(.simple) #hub.hub-space .ax-ghost{background:var(--card-floor)}
/* To-dos' numbers and "Open across your life" sit a breath below the list and the side column, not against them */
html:root:not(.simple) #hub.hub-space.h-actions>.dash{margin-top:18px}
@media (max-width:760px){
  html:root:not(.simple) #hub.hub-space.has-talk .ax-card .ax-acts{background:var(--card-floor)}
  html:root:not(.simple) #hub.hub-space.has-talk .ax-card .ax-acts::before{background:linear-gradient(to top,var(--card-floor),rgba(12,13,21,0))}
}
/* the add box keeps its focus ring's brighter edge */
html:root:not(.simple) #hub.hub-space .hub-body .tform:focus-within{border-color:rgba(var(--k-245-198-107,245,198,107),.45)}
/* Agents' next item: the agent's colour rises a little more, as it did on the solid panel */
html:root:not(.simple) #hub.hub-space .hub-body .agx-next{background:radial-gradient(120% 140% at var(--card-x,0%) 0%,rgba(var(--c),.12),rgba(var(--c),0) 60%),var(--card-fill);border-color:var(--card-rim);box-shadow:var(--card-lit),var(--card-drop)}
html:root:not(.simple) #hub.hub-space .hub-body :is(.ag-out-rep,.ag-out-it){background:rgba(3,4,10,.32)}
@media (max-width:760px){
  html:root:not(.simple) #hub.hub-space :is(.hub-body .tlist,.hub-body .agx-list,.hub-side,.hub-body .tform,.hub-body .agx-next,.dash .tile:not(.sk),.ax-rail,.ax-card){-webkit-backdrop-filter:blur(var(--card-blur)) saturate(135%);backdrop-filter:blur(var(--card-blur)) saturate(135%)}
}
@media (prefers-reduced-transparency:reduce){
  html:root:not(.simple) #hub.hub-space{--card-fill:var(--card-solid)}
  html:root:not(.simple) #hub.hub-space :is(.hub-body .tlist,.hub-body .agx-list,.hub-side,.hub-body .tform,.hub-body .agx-next,.dash .tile:not(.sk),.ax-rail,.ax-card){-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-reduced-motion:reduce){
  html:root:not(.simple) #hub.hub-space :is(.hub-body .tlist,.hub-body .agx-list,.hub-side,.hub-body .tform,.hub-body .agx-next,.dash .tile:not(.sk),.ax-rail,.ax-card){-webkit-backdrop-filter:none;backdrop-filter:none}
}
html.low-power:root:not(.simple) #hub.hub-space{--card-fill:var(--card-dense)}
/* ==== end of glass hub pages ==== */
/* ==== One card surface: the rest of Full view (Oct 31 2026) ====
   Projects, Connections, Customize, Life at a glance's "Now and next" and a section's closing panels wear the same
   --card-* surface as To-dos. Their pages are flat or sit over the mind, so no live blur: the fill alone reads the same.
   Each keeps its own edge colour where it means something (a project NOVA noticed keeps its violet rim). Full view only. */
html:root:not(.simple) #hub.h-projects :is(.pd-list,.pd-plans-l,.pd-notice),
html:root:not(.simple) #hub.h-connections :is(.clb-side,.clb-idea,.clb-all),
html:root:not(.simple) .cz-list,
html:root:not(.simple) .gp,
html:root:not(.simple) #life .life-detail.dash :is(.sec-foot,.ld-fine){
  background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,200,215,255),var(--card-tint)),rgba(var(--c,200,215,255),0) 55%),var(--card-fill);border-color:var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
html:root:not(.simple) #hub.h-projects .pd-files{background:var(--card-fill)!important;border-color:var(--card-rim)!important;box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
html:root:not(.simple) #hub.h-projects .pd-notice{border-color:rgba(169,139,255,.28)}
html:root:not(.simple) #hub.h-connections .clb-all:hover{background:linear-gradient(rgba(246,239,230,.035),rgba(246,239,230,.035)),var(--card-fill)}
html:root:not(.simple) #life .life-detail.dash .ld-fine{border-radius:14px}
/* ==== end of one card surface: the rest of Full view ==== */
/* ==== One card surface: the last solid cards (Nov 1 2026; Katie: "some are see-through, some are not… make sure
   they're all the same") ====
   The content cards that still painted the old solid grey (--sf-1/--sf-2, from their own modules' CSS) now wear the
   same glass as the Agents proposal and My day's cards: To-dos' "Needs you" on a phone, Agents' "Your agents" list and
   the Chart, Connections' Email & calendar, A to Z list, "nothing here" note and compact ideas, a section's Arrange
   cards, and the cards NOVA puts in the conversation (NOVA noticed and the other briefs, the NOVA email address card,
   free tools, "take me there", a shared trip). Same fill, rim, lit edge and soft drop; each keeps its own edge colour.
   Live blur only at phone width on the pages with sky behind them (To-dos, Agents), like the proposal.
   A box inside a glass card is a faint inner tint, never a second pane of glass.
   Deliberately still solid: dialogs over a dimmed scrim (approvals, reports, the deck, pickers), the tour card, menus
   and drawers, the talk bar, inputs and search boxes, full-screen Stories. Simple view keeps its flat panels. */
html:root:not(.simple) #hub.hub-space :is(.hub-main>.nu,.al,.oc),
html:root:not(.simple) #hub.h-connections :is(.ew,.clb-list,.clb-none,.clb-idea.compact),
html:root:not(.simple) :is(.arr-card,.arr-row,.arr-empty,.arr-hint){
  background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,200,215,255),var(--card-tint)),rgba(var(--c,200,215,255),0) 55%),var(--card-fill);border-color:var(--card-rim);box-shadow:var(--card-lit),var(--card-drop)}
html:root:not(.simple) #hub.hub-space .hub-main>.nu,html:root:not(.simple) #hub.hub-space .al{border-radius:var(--card-radius)}
/* the chart keeps its deeper lift (it is the page) */
html:root:not(.simple) #hub.hub-space .oc{box-shadow:var(--card-lit),0 40px 90px -30px rgba(0,0,0,.95)}
/* inside the chart, a lane is a faint inner tint, not a second card */
html:root:not(.simple) #hub.hub-space .oc .oc-lane{background:rgba(246,239,230,.035);border-color:var(--card-rim)}
/* the cards in the conversation: the same glass, their meaning kept in the edge (and a brief's faint colour) */
html:root:not(.simple) :is(.mailcard,.ft-card,.ts-card){background:var(--card-fill);box-shadow:var(--card-lit),var(--card-drop)}
html:root:not(.simple) .cv-act{background:var(--card-fill)}
html:root:not(.simple) .mbrief{background:linear-gradient(180deg,rgba(var(--e),.07),rgba(var(--e),0) 70%),var(--card-fill);box-shadow:var(--card-lit)}
html:root:not(.simple) .mbrief.e-trip{background:linear-gradient(180deg,rgba(var(--e),.07),rgba(var(--e),0) 70%),var(--card-fill)}
@media (max-width:760px){
  /* Connections on a phone: each account is a chip inside "Your connections", so a faint inner tint */
  html:root:not(.simple) #hub.h-connections .clb-acct{background:rgba(246,239,230,.035)}
  /* the live blur, as on the proposal and her list: the hub panels that didn't have it yet */
  html:root:not(.simple) #hub.hub-space :is(.hub-main>.nu,.al,.oc,.hub-body .tdbl,.hub-body .ag-reports .ag-agent,.hub-body>.ag-work:not(.ag-m-agents,.ag-m-team)){-webkit-backdrop-filter:blur(var(--card-blur)) saturate(135%);backdrop-filter:blur(var(--card-blur)) saturate(135%)}
}
@media (prefers-reduced-transparency:reduce){
  html:root:not(.simple) #hub.hub-space :is(.hub-main>.nu,.al,.oc,.hub-body .tdbl,.hub-body .ag-reports .ag-agent,.hub-body>.ag-work){-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-reduced-motion:reduce){
  html:root:not(.simple) #hub.hub-space :is(.hub-main>.nu,.al,.oc,.hub-body .tdbl,.hub-body .ag-reports .ag-agent,.hub-body>.ag-work){-webkit-backdrop-filter:none;backdrop-filter:none}
}
/* ==== end of one card surface: the last solid cards ==== */
/* ==== A life section's connection tip (public/js/conntips.js, Oct 28 2026) ====
   One quiet line at the top of a section: the service's mark, one sentence, a link-style action. The same glass as the
   section's tiles (Glass section pages above), tinted by the section's colour; never gold (gold is for what needs her
   now), never a card that competes with the numbers. Simple view: the same line, flat (below). */
.ctip{position:relative;display:flex;align-items:flex-start;gap:12px;margin:0 0 14px;padding:12px 44px 12px 14px;border-radius:14px;background:radial-gradient(120% 140% at 0% 0%,rgba(var(--c,200,215,255),.09),rgba(var(--c,200,215,255),0) 60%),var(--card-fill,rgba(18,20,30,.86));border:1px solid rgba(var(--c,200,215,255),.2);box-shadow:var(--card-lit,none);animation:ctip-in .22s cubic-bezier(.23,1,.32,1) both;transition:opacity .16s ease-out,transform .16s ease-out}
html[dir=rtl] .ctip{padding:12px 14px 12px 44px;background:radial-gradient(120% 140% at 100% 0%,rgba(var(--c,200,215,255),.09),rgba(var(--c,200,215,255),0) 60%),var(--card-fill,rgba(18,20,30,.86))}
.ctip .ctip-mark{margin-top:1px}
.ctip-w{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:14px;row-gap:4px}
.ctip-t{margin:0;font-size:14px;line-height:1.45;color:var(--ink-1);font-weight:500}
.ctip-a{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
.ctip-a button{appearance:none;border:0;background:none;padding:2px 0;margin:0;font:inherit;font-size:13.5px;line-height:1.4;cursor:pointer;color:var(--ink-3);text-decoration:none;border-radius:4px;transition:color .15s ease-out,transform .12s ease-out}
.ctip-a .ctip-go{color:rgb(var(--c,200,215,255));font-weight:550}
.ctip-a .ctip-go::after{content:' →'}
html[dir=rtl] .ctip-a .ctip-go::after{content:' ←'}
.ctip-a .ctip-alt{color:var(--ink-2)}
.ctip-a button:active{transform:scale(.97)}
.ctip-a button:focus-visible,.ctip-x:focus-visible{outline:2px solid rgba(var(--c,200,215,255),.7);outline-offset:2px}
.ctip-x{position:absolute;top:6px;inset-inline-end:6px;width:32px;height:32px;display:grid;place-items:center;appearance:none;border:0;border-radius:10px;background:none;color:var(--ink-3);font-size:18px;line-height:1;cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.ctip-x:active{transform:scale(.94)}
@media (hover:hover){.ctip-a button:hover{color:var(--ink-1)}.ctip-a .ctip-go:hover{text-decoration:underline;text-underline-offset:3px}.ctip-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}}
.ctip.ctip-out{opacity:0;transform:translateY(-4px)}
@keyframes ctip-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (max-width:760px){.ctip{margin:0 0 12px;padding:11px 40px 11px 12px;gap:10px}html[dir=rtl] .ctip{padding:11px 12px 11px 40px}.ctip-w{flex-direction:column;align-items:flex-start}.ctip-a button{min-height:32px}}
@media (prefers-reduced-motion:reduce){.ctip{animation:none;transition:none}}
.mk > .ctip{margin-bottom:16px}
/* Payment app receipts (public/js/payreceipts.js): the switches at Finance's foot, and where a transaction came from */
.sec-feet>.sec-foot+.sec-foot{margin-top:10px}
.rcpt-set{display:flex;flex-direction:column;padding-top:6px}
.rcpt-set .note-sm{font-size:13.5px;line-height:1.5;color:var(--ink-2);margin:8px 0 0;max-width:62ch}
.rcpt-set .rcpt-keep{color:var(--ink-3);margin-top:12px}
.rcpt-apps{display:flex;flex-direction:column;margin-top:6px}
.rcpt-apps>.srow-wrap+.srow-wrap{border-top:1px solid var(--hair)}
.rcpt-app .srow-t{gap:10px}
.rcpt-mark{flex:none}
.rcpt-row{display:flex;align-items:center;flex-wrap:wrap;gap:4px 14px;margin-top:6px}
.rcpt-row .note-sm{margin:0}
.rcpt-now{min-height:40px;padding:0;font-size:14px;color:var(--ink-1);background:none;border:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;transition:transform .12s ease-out}
.rcpt-now:active{transform:scale(.97)}.rcpt-now:disabled{color:var(--ink-3);cursor:default}
.rcpt-connect{align-self:flex-start;margin-top:10px}
.rcpt-src{display:flex;align-items:flex-start;gap:12px;margin:0 0 14px;padding:12px 14px;border-radius:14px;background:var(--sf-1,#181a22);border:1px solid var(--hair)}
.rcpt-src .rcpt-src-mark{margin-top:1px}
.rcpt-src-w{flex:1;min-width:0}
.rcpt-src-t{margin:0;font-size:14px;line-height:1.45;font-weight:500;color:var(--ink-1)}
.rcpt-src-s{margin:2px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-2);overflow-wrap:anywhere}
.rcpt-src-x{display:inline-block;min-height:36px;margin-top:2px;padding:0;font-size:13.5px;background:none;border:0;cursor:pointer;color:var(--ink-2);transition:color .15s ease-out,transform .12s ease-out}
.rcpt-src-x:active{transform:scale(.97)}
@media (hover:hover){.rcpt-src-x:hover,.rcpt-now:hover{color:var(--ink-1)}}
.rcpt-now:focus-visible,.rcpt-src-x:focus-visible{outline:2px solid var(--ice);outline-offset:2px;border-radius:4px}
@media (prefers-reduced-motion:reduce){.rcpt-now,.rcpt-src-x{transition:none}}
/* every section's first-visit walk (public/js/sectionintro.js): the same glass line as the tip, one sentence at a time,
   sticky at the top of the page while what it talks about softly lights below. Quiet: no scrim, nothing blocked. */
.si{position:relative;z-index:6;margin:0 0 14px;padding:14px 16px 10px;border-radius:16px;background:radial-gradient(120% 140% at 0% 0%,rgba(var(--c,200,215,255),.11),rgba(var(--c,200,215,255),0) 60%),linear-gradient(172deg,rgba(26,29,42,.94),rgba(13,14,23,.96));border:1px solid rgba(var(--c,200,215,255),.26);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 18px 40px -26px rgba(0,0,0,.9);animation:ctip-in .22s cubic-bezier(.23,1,.32,1) both;transition:opacity .16s ease-out,transform .16s ease-out}
html[dir=rtl] .si{background:radial-gradient(120% 140% at 100% 0%,rgba(var(--c,200,215,255),.11),rgba(var(--c,200,215,255),0) 60%),linear-gradient(172deg,rgba(26,29,42,.94),rgba(13,14,23,.96))}
.si > p{margin:0 0 8px;font-size:15px;line-height:1.45;color:var(--ink-1);text-wrap:pretty}
.si .si-where{display:flex;align-items:baseline;gap:12px;margin:0 0 6px;font-size:12.5px;color:rgb(var(--c,200,215,255))}
.si .si-end{appearance:none;border:0;background:none;padding:0;margin-inline-start:auto;font:inherit;font-size:12.5px;color:var(--ink-3);cursor:pointer}
.si .si-tipacts{margin:-2px 0 8px}
.si-acts{display:flex;align-items:center;gap:6px}
.si-dots{display:flex;gap:6px;margin-inline-end:auto}
.si-dots[hidden]{display:none}
.si-dots i{width:6px;height:6px;border-radius:50%;background:rgba(var(--k-246-239-230,246,239,230),.22);transition:background-color .2s ease-out}
.si-dots i.on{background:rgb(var(--c,200,215,255))}
.si-acts:has(.si-dots[hidden]) .si-skip,.si-acts:has(.si-dots[hidden]) .si-next{margin-inline-start:auto}
.si-next,.si-skip{appearance:none;min-height:36px;padding:0 14px;border-radius:999px;font:inherit;font-size:13.5px;cursor:pointer;transition:transform .12s ease-out,background-color .15s ease-out,color .15s ease-out}
.si-next{border:1px solid rgba(var(--c,200,215,255),.45);background:rgba(var(--c,200,215,255),.14);color:var(--ink-1);font-weight:550}
.si-skip{border:0;background:none;color:var(--ink-3)}
.si-next:active,.si-skip:active,.ld-how:active{transform:scale(.97)}
.si-next:focus-visible,.si-skip:focus-visible,.si .si-end:focus-visible,.ld-how:focus-visible{outline:2px solid rgba(var(--c,200,215,255),.7);outline-offset:2px}
@media (hover:hover){.si-next:hover{background:rgba(var(--c,200,215,255),.22)}.si-skip:hover,.si .si-end:hover{color:var(--ink-1)}}
.si.si-out{opacity:0;transform:translateY(-4px)}
/* what a step talks about: a soft ring of the section's colour, nothing dimmed (sectionintro.js marks the page) */
.life-detail[data-si=hero] :is(.sc-hero,.mk-field,.fa-wrap > .si + *,.world-places > .si-slot + *,.hh-now),
.life-detail[data-si=board] :is(.dash > .tiles,.dash > .sb,.ld-rest,.hh > .hh-board),
.life-detail[data-si=talk] .wt-bar{outline:1.5px solid rgba(var(--c,200,215,255),.6);outline-offset:4px;transition:outline-color .2s ease-out}
.life-detail[data-si=hero] .sc-hero,.life-detail[data-si=board] .dash > :is(.tiles,.sb){border-radius:18px}
/* Simple view: the same card, flat and solid */
html.simple .si,html.simple .ctip{background:var(--bg-2,#11131c);box-shadow:none;animation:none}
/* the header's "How this works": a small round ? beside the section's name */
.ld-how{display:inline-grid;place-items:center;width:22px;height:22px;margin-inline-start:10px;vertical-align:.35em;padding:0;border-radius:50%;border:1px solid rgba(var(--k-246-239-230,246,239,230),.22);background:none;color:var(--ink-3);font:600 12px/1 var(--sans);cursor:pointer;transition:color .15s ease-out,border-color .15s ease-out,transform .12s ease-out}
@media (hover:hover){.ld-how:hover{color:var(--ink-1);border-color:rgba(var(--c,200,215,255),.6)}}
@media (max-width:760px){.si{margin:0 0 12px;padding:12px 14px 8px}.si > p{font-size:14.5px}.ld-how{width:20px;height:20px;margin-inline-start:8px;vertical-align:.25em}}
@media (prefers-reduced-motion:reduce){.si{animation:none;transition:none}}
.si-slot:empty{display:none}
.mk-coach .mk-coach-tipline{font-weight:500}
.mk-coach .mk-coach-tipacts{margin:-4px 0 10px}
/* the permanent "+ Add an account" / "+ Add a bank or card" line (conntips.js accountsLine): beside "From Plaid · as of",
   what it covers in one quiet line, then her accounts by name and last digits and "Manage in Connections" */
.acl{margin:10px 0 0;display:flex;flex-direction:column;gap:4px}
.acl-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
.acl-row > p{margin:0}
.acl-add,.acl-manage{appearance:none;border:0;background:none;padding:2px 0;font:inherit;font-size:13px;line-height:1.4;cursor:pointer;border-radius:4px;transition:color .15s ease-out,transform .12s ease-out}
.acl-add{color:rgb(var(--c,200,215,255));font-weight:550}
.acl-manage{color:var(--ink-3)}
.acl-add:active,.acl-manage:active{transform:scale(.97)}
.acl-add:focus-visible,.acl-manage:focus-visible{outline:2px solid rgba(var(--c,200,215,255),.7);outline-offset:2px}
@media (hover:hover){.acl-add:hover{text-decoration:underline;text-underline-offset:3px}.acl-manage:hover{color:var(--ink-1)}}
.acl-hint{margin:0;font-size:12px;line-height:1.45;color:var(--ink-3)}
.acl-have{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 14px;margin-top:4px}
.acl-list{display:flex;flex-wrap:wrap;gap:2px 12px;margin:0;padding:0;list-style:none;font-size:12.5px;color:var(--ink-2)}
.acl-list li{white-space:nowrap}
.mk-list > .acl{margin:0 0 10px}
@media (max-width:760px){.acl-add,.acl-manage{min-height:32px}}
/* ==== end of connection tip ==== */
/* ==== Home, the household section (public/js/household-page.js; Oct 29 2026, reworked after design review) ====
   One surface sits forward: what matters at home today, on a solid sheet over the sky, each line with its Done (or the
   next thing ahead; or, on a first visit, three small setup steps). Under it the section glass for three tiles at most:
   Chores (fair share at its foot) beside the shopping list, upkeep under it (a bills tile only in a week one is due).
   Who lives here and the house's details rest on one solid sheet; the foot is a solid sheet too: no text on stars.
   Warm hearth light (--c 247,206,158); gold for due today, ice for a bill, rose for late, violet for upkeep.
   Phone: one column, 44px targets. Only transform and opacity move. */
.hh{display:flex;flex-direction:column;gap:0}
.hh-wait{min-height:60vh}
.hh-now{position:relative;margin:0 0 14px;padding:22px 24px 18px;border-radius:22px;border:1px solid rgba(var(--c,247,206,158),.22);background:radial-gradient(90% 140% at 0% 0%,rgba(var(--c,247,206,158),.13),rgba(var(--c,247,206,158),0) 62%),linear-gradient(172deg,rgba(28,26,30,.92),rgba(14,13,20,.95));box-shadow:inset 0 1px 0 rgba(255,236,210,.08),0 24px 50px -32px rgba(0,0,0,.9);animation:ldIn .4s cubic-bezier(.23,1,.32,1) both}
html[dir=rtl] .hh-now{background:radial-gradient(90% 140% at 100% 0%,rgba(var(--c,247,206,158),.13),rgba(var(--c,247,206,158),0) 62%),linear-gradient(172deg,rgba(28,26,30,.92),rgba(14,13,20,.95))}
.hh-lead{margin:0 0 12px;font-family:var(--display);font-weight:400;font-size:30px;line-height:1.1;color:var(--ink-1);letter-spacing:-.01em;text-wrap:balance}
html[lang=ar] .hh-lead{letter-spacing:0;line-height:1.3}
.hh-ms{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-width:620px}
.hh-m{display:flex;align-items:center;gap:10px;min-height:44px;font-size:15px;line-height:1.4;color:var(--ink-1)}
.hh-m .hh-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ice)}
.hh-m.t-gold .hh-dot{background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.55)}
.hh-m.t-rose .hh-dot{background:var(--rose)}
.hh-m.t-violet .hh-dot{background:var(--violet)}
.hh-m.t-dim{color:var(--ink-2)}.hh-m.t-dim .hh-dot{background:rgba(246,239,230,.3)}
.hh-mw{flex:0 1 auto;min-width:0}
.hh-mw b{font-weight:550}
.hh-amt{color:var(--ink-2);font-variant-numeric:tabular-nums}
.hh-calm{margin:0 0 4px;font-size:15px;line-height:1.55;color:var(--ink-2);max-width:56ch}
.hh-next{margin:0 0 2px}
.hh-quick{flex:none;margin-inline-start:auto;min-height:36px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.42);background:rgba(245,198,107,.1);color:var(--ink-1);font-size:13.5px;font-weight:550;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.hh-quick:active{transform:scale(.96)}
@media (hover:hover){.hh-quick:hover{background:rgba(245,198,107,.18)}}
.hh-sep{color:var(--ink-3)}
.hh-pl{margin-inline-end:5px}
.hh-sp{white-space:pre}
.hh-k{font-size:13.5px;color:var(--ink-2);margin:0}
/* first visit: three steps */
.hh-steps{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:18px;max-width:720px}
.hh-step-h{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-size:15.5px;font-weight:550;color:var(--ink-1)}
.hh-step-n{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:rgba(var(--c,247,206,158),.16);color:rgb(var(--c,247,206,158));font-size:13.5px;font-weight:600}
/* faces */
.hh-av{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(var(--c,247,206,158),.18);color:rgb(var(--c,247,206,158));font-size:14px;font-weight:600}
.hh-av.sm{width:24px;height:24px;font-size:12px}
.hh-av.pet{background:rgba(111,242,196,.13);color:var(--mint)}
.hh-av.me{background:rgba(245,198,107,.22);color:var(--gold)}
/* who lives here */
.hh-pp{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.hh-p{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 6px;border-radius:999px;background:rgba(246,239,230,.05);border:1px solid var(--hair);font-size:14.5px;color:var(--ink-1)}
.hh-p:has(.hh-pb){padding:0;background:none;border:0}
.hh-pb{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 6px;border-radius:999px;background:rgba(246,239,230,.05);border:1px solid var(--hair);font:inherit;font-size:14.5px;color:var(--ink-1);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
html[dir=rtl] :is(.hh-p,.hh-pb){padding:0 6px 0 14px}
html[dir=rtl] .hh-p:has(.hh-pb){padding:0}
.hh-pb:active{transform:scale(.97)}
.hh-pb[aria-expanded=true]{border-color:rgba(var(--c,247,206,158),.55)}
@media (hover:hover){.hh-pb:hover{border-color:rgba(var(--c,247,206,158),.45)}}
.hh-pk{font-size:13.5px;color:var(--ink-2)}
.hh-add{padding:0 16px;color:var(--ink-2);border-style:dashed}
.hh-menu{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:10px 0 0;padding:10px 12px;border-radius:14px;background:rgba(3,4,10,.4);border:1px solid var(--hair);animation:hhIn .18s cubic-bezier(.23,1,.32,1) both}
.hh-menu b{font-weight:550;font-size:14.5px}
.hh-sug{margin:14px 0 0}
.hh-sug .hh-k{margin:0 0 8px}
.hh-form{display:flex;flex-direction:column;gap:10px;margin:12px 0 2px;padding:14px;border-radius:14px;background:rgba(3,4,10,.38);border:1px solid var(--hair);animation:hhIn .2s cubic-bezier(.23,1,.32,1) both}
@keyframes hhIn{from{opacity:0;transform:translateY(4px)}}
.hh-note{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2);max-width:60ch}
.hh-field{display:block}
.hh-field input,.hh-inline input,.hh-kvr input{width:100%;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(3,4,10,.5);color:var(--ink-1);font:inherit;font-size:15px}
.hh :is(input,select):focus-visible{outline:2px solid rgba(var(--c,247,206,158),.7);outline-offset:1px}
/* the selects that remain: NOVA's own chevron, never the browser's */
.hh-sel{appearance:none;-webkit-appearance:none;width:auto;min-width:140px;max-width:100%;min-height:44px;padding:0 34px 0 12px;border-radius:12px;border:1px solid var(--hair-2);background-color:rgba(3,4,10,.5);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23b9b3aa' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;background-size:10px 6px;color:var(--ink-1);font:inherit;font-size:14.5px;cursor:pointer;color-scheme:dark}
html[dir=rtl] .hh-sel{padding:0 12px 0 34px;background-position:left 13px center}
.hh-sel option{background:#15161d;color:var(--ink-1)}
.hh-row2{display:flex;flex-wrap:wrap;gap:8px}
.hh-seg{display:inline-flex;align-self:flex-start;padding:3px;border-radius:999px;background:rgba(3,4,10,.5);border:1px solid var(--hair)}
.hh-sg{min-height:38px;padding:0 16px;border-radius:999px;font-size:14px;color:var(--ink-2);transition:background-color .15s ease,color .15s ease}
.hh-sg.on{background:rgba(var(--c,247,206,158),.18);color:var(--ink-1)}
.hh-acts{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px}
.hh-acts .link{min-height:40px;font-size:13.5px}
.hh-chips,.hh-days{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.hh-chips>.hh-k{margin-inline-end:4px}
.hh-chip{min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font-size:13.5px;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease,background-color .15s ease,color .15s ease}
.hh-chip:active{transform:scale(.96)}
.hh-chip.on{border-color:rgba(var(--c,247,206,158),.55);background:rgba(var(--c,247,206,158),.14);color:var(--ink-1)}
.hh-chip.plus{border-style:dashed}
.hh-day{min-width:52px}
@media (hover:hover){.hh-chip:hover{color:var(--ink-1);border-color:rgba(var(--c,247,206,158),.45)}}
.hh-starts{margin-top:2px}
.hh-addline{align-self:flex-start;min-height:40px;padding:0;font-size:13.5px;color:rgb(var(--c,247,206,158));font-weight:550;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.hh-addline:active{transform:scale(.97)}
@media (hover:hover){.hh-addline:hover{text-decoration:underline;text-underline-offset:3px}}
/* the board: two columns that each flow on their own; one column on a phone, in reading order */
.hh-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;margin:0 0 12px}
.hh-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.hh-board .tile{animation-delay:0ms}
.hh-chores{order:1}.hh-bills{order:2}.hh-supplies{order:3}.hh-upkeep{order:4}
@media (max-width:1100px){.hh-board{grid-template-columns:1fr}.hh-col{display:contents}}
.hh-tick{position:relative;margin:0}
.hh-tick::before{content:"";position:absolute;inset:-12px}
.hh :is(.hh-chore,.hh-bill,.hh-fix) .m small{display:block;white-space:normal;line-height:1.45}
.hh-late{color:var(--h-ffb4a2,#ffb4a2)}
.hh-soon{color:var(--gold)}
.hh-more{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:10px;color:var(--ink-3);font-size:17px;line-height:1;transition:color .15s ease,background-color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.hh-more:active{transform:scale(.94)}
@media (hover:hover){.hh-more:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}}
.hh-more[aria-expanded=true]{color:var(--ink-1)}
.hh-ci+.hh-ci .tl-row{border-top:1px solid var(--hair)}
.hh-ci:first-child .tl-row{border-top:0}
.hh-cm{display:flex;flex-direction:column;gap:10px;margin:0 0 10px;padding:12px;border-radius:12px;background:rgba(3,4,10,.32);animation:hhIn .18s cubic-bezier(.23,1,.32,1) both}
.hh-rm{color:var(--h-ffb4a2,#ffb4a2)}
.hh-fair{margin-top:6px;padding-top:12px;border-top:1px solid var(--hair)}
.hh-fair>.hh-k{margin:0 0 10px}
.hh-bars{display:flex;flex-direction:column;gap:10px}
.hh-bar{display:grid;grid-template-columns:minmax(64px,auto) 1fr auto;align-items:center;gap:12px;font-size:13.5px}
.hh-bn{color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12ch}
.hh-bt{position:relative;height:6px;border-radius:999px;background:rgba(246,239,230,.08);overflow:hidden}
.hh-bt i{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,rgba(var(--c,247,206,158),.55),rgb(var(--c,247,206,158)));transform-origin:left center;transition:transform .5s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .hh-bt i{transform-origin:right center}
.hh-bv{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.hh-payer{min-height:38px;padding:0 12px;font-size:13.5px}
.hh-bill .tl-rv{color:var(--gold)}
.hh-inline{display:flex;gap:8px;margin-top:4px}
.hh-inline input{flex:1;min-width:0}
.hh-go{flex:none;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid rgba(var(--c,247,206,158),.45);background:rgba(var(--c,247,206,158),.12);color:var(--ink-1);font-size:14px;font-weight:550;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.hh-go:active{transform:scale(.97)}
/* who lives here and the house's details: one solid sheet */
.hh-sheet{margin:0 0 12px;padding:16px 18px;border-radius:18px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09))}
.hh-sheet-h{margin:0 0 10px;font-size:13.5px;color:var(--ink-2)}
.hh-details{margin-top:14px;border-top:1px solid var(--hair)}
.hh-sum{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;min-height:48px;padding:12px 0 4px;cursor:pointer;list-style:none;font-size:15px;font-weight:550;color:var(--ink-1)}
.hh-sum::-webkit-details-marker{display:none}
.hh-sum::after{content:"";width:8px;height:8px;margin-inline-start:auto;align-self:center;border:solid var(--ink-3);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.hh-details[open] .hh-sum::after{transform:rotate(-135deg)}
.hh-sum small{font-size:13.5px;font-weight:400;color:var(--ink-2)}
.hh-sum:focus-visible{outline:2px solid rgba(var(--c,247,206,158),.7);outline-offset:2px;border-radius:6px}
.hh-kv{display:flex;flex-direction:column;gap:12px;padding:8px 0 4px}
.hh-kvr{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:10px}
.hh-kvr .hh-k{font-size:13.5px;color:var(--ink-2)}
.hh-kvr input{max-width:360px}
.hh-every{margin-inline-start:6px}
.hh-tel{flex:none;padding:10px 2px;font-size:14px;color:var(--ice);font-variant-numeric:tabular-nums;text-decoration:none}
@media (hover:hover){.hh-tel:hover{text-decoration:underline;text-underline-offset:3px}}
/* the foot: a solid sheet, like the section's fine print */
.hh-foot{display:flex;flex-direction:column;gap:6px;margin:0 0 18px;padding:14px 18px;border-radius:16px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09))}
.hh-agent{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.hh-agent b{color:var(--ink-1);font-weight:550}
.hh-agent .link{margin-inline-start:8px;font-size:13.5px}
.hh-fine{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.hh-off{align-self:flex-start;min-height:40px;font-size:13.5px;color:var(--ink-2)}
.hh :is(button,a):focus-visible{outline:2px solid rgba(var(--c,247,206,158),.7);outline-offset:2px}
@media (max-width:760px){
  .hh-now{padding:18px 16px 14px;border-radius:18px}
  .hh-lead{font-size:26px}
  .hh-m{font-size:14.5px}
  :is(.hh-quick,.hh-chip,.hh-payer,.hh-sg){min-height:44px}
  .hh-more{width:44px;height:44px}
  :is(.hh-addline,.hh-acts .link,.hh-off,.hh-agent .link){min-height:44px}
  .hh-kvr{grid-template-columns:1fr;gap:6px}
  .hh-day{min-width:44px;padding:0 10px}
  .hh-sheet,.hh-foot{padding:14px}
}
html.simple .hh-now{background:var(--bg-2,#11131c);box-shadow:none;animation:none}
@media (prefers-reduced-motion:reduce){.hh-now,.hh-form,.hh-cm,.hh-menu{animation:none}.hh-bt i,.hh-sum::after{transition:none}}
/* ==== end of Home ==== */
/* ==== Home, more suggestive, with the week's dinners (public/js/home-plus.js; Nov 1 2026) ====
   Under "today at home": NOVA suggests (two quiet lines on a solid sheet, a faint ice rim because NOVA is thinking,
   each with its line glyph in hearth light, one gold Add, Not now and the "…"), then This week's dinners (a solid
   sheet with the hearth's glow: seven rows on a phone, seven columns on a computer; a day opens NOVA's ideas and a box
   for her own; Add ingredients shows what goes on her real list first). Glyphs are line drawings in NOVA's stroke.
   A chore done: a mint check and its points rise from the tap (700ms, transform and opacity), none with reduced
   motion. Phone: one column, 44px targets. */
.hp-ic{display:inline-grid;place-items:center;flex:none;line-height:0}
.hp-ic svg{width:20px;height:20px}
.hp-hints{margin:0 0 14px;padding:14px 18px 6px;border-radius:18px;background:var(--sf-0,#0f1016);border:1px solid rgba(92,225,255,.16);box-shadow:inset 0 1px 0 rgba(92,225,255,.06);animation:hhIn .3s cubic-bezier(.23,1,.32,1) both}
.hp-hh{display:flex;align-items:center;gap:8px;margin:0 0 2px;font-size:13.5px;color:var(--ink-2)}
.hp-spark{color:var(--ice)}.hp-spark svg{width:16px;height:16px}
.hp-hl{list-style:none;margin:0;padding:0}
.hp-h{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;padding:12px 0;transition:opacity .2s ease-out,transform .2s cubic-bezier(.23,1,.32,1)}
.hp-h+.hp-h{border-top:1px solid var(--hair)}
.hp-h.hp-going{opacity:0;transform:translateY(-4px)}
.hp-hg{width:40px;height:40px;border-radius:50%;background:rgba(var(--c,247,206,158),.11);color:rgb(var(--c,247,206,158))}
.hp-h.hp-took .hp-hg{background:rgba(111,242,196,.14);color:var(--mint)}
.hp-ht{min-width:0}
.hp-htt{margin:0;font-size:15px;line-height:1.42;color:var(--ink-1);text-wrap:pretty}
.hp-hts{margin:3px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.hp-ha{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin-top:10px}
.hp-add{min-height:38px;padding:0 16px;border-radius:999px;border:1px solid rgba(245,198,107,.5);background:rgba(245,198,107,.15);color:var(--ink-1);font-size:13.5px;font-weight:600;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.hp-add:active{transform:scale(.96)}
.hp-add:disabled{opacity:.5}
@media (hover:hover){.hp-add:hover{background:rgba(245,198,107,.24)}}
.hp-later{min-height:38px;padding:0 10px;border-radius:999px;color:var(--ink-2);font-size:13.5px;transition:color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.hp-later:active{transform:scale(.96)}
@media (hover:hover){.hp-later:hover{color:var(--ink-1)}}
.hp-quiet{margin:6px 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.hp-off{margin:4px 0 10px;padding-top:10px;border-top:1px solid var(--hair);font-size:13.5px;color:var(--ink-3)}
.hp-on{font-size:13.5px;min-height:32px}
/* this week's dinners */
.hp-meals{position:relative;margin:0 0 14px;padding:18px 20px 16px;border-radius:20px;border:1px solid rgba(var(--c,247,206,158),.18);background:radial-gradient(70% 120% at 100% 0%,rgba(var(--c,247,206,158),.09),rgba(var(--c,247,206,158),0) 60%),var(--sf-0,#0f1016);animation:hhIn .3s cubic-bezier(.23,1,.32,1) both}
html[dir=rtl] .hp-meals{background:radial-gradient(70% 120% at 0% 0%,rgba(var(--c,247,206,158),.09),rgba(var(--c,247,206,158),0) 60%),var(--sf-0,#0f1016)}
.hp-mh{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 12px}
.hp-mt{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px;min-width:0}
.hp-mg{color:rgb(var(--c,247,206,158))}.hp-mg svg{width:24px;height:24px}
.hp-mt h3{margin:0;font-family:var(--display);font-weight:400;font-size:24px;line-height:1.15;color:var(--ink-1);letter-spacing:-.01em}
html[lang=ar] .hp-mt h3{letter-spacing:0;font-family:var(--sans);font-weight:500;font-size:21px;line-height:1.35}
.hp-mm{grid-column:2;margin:2px 0 0;font-size:13.5px;color:var(--ink-2)}
.hp-groc{flex:none;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(var(--c,247,206,158),.4);background:rgba(var(--c,247,206,158),.08);color:var(--ink-1);font-size:13.5px;font-weight:550;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.hp-groc .hp-ic{color:rgb(var(--c,247,206,158))}.hp-groc .hp-ic svg{width:18px;height:18px}
.hp-groc:active{transform:scale(.97)}
.hp-groc[aria-expanded=true]{background:rgba(var(--c,247,206,158),.16)}
@media (hover:hover){.hp-groc:hover{background:rgba(var(--c,247,206,158),.14)}}
.hp-diet{margin:-4px 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.hp-diet b{font-weight:550;color:var(--ink-1)}
.hp-from{color:var(--ink-3)}
.hp-week{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.hp-dli+.hp-dli .hp-day{border-top:1px solid var(--hair)}
.hp-day{display:grid;grid-template-columns:88px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 2px;text-align:start;color:var(--ink-1);font:inherit;transition:background-color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.hp-day:active{transform:scale(.99)}
@media (hover:hover){.hp-day:hover{background:rgba(246,239,230,.03)}}
.hp-dw{display:flex;align-items:baseline;gap:6px;min-width:0}
.hp-dn{font-size:14.5px;font-weight:550;color:var(--ink-1);white-space:nowrap}
.hp-dd{font-size:13.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.hp-day.today .hp-dn{color:var(--gold)}
.hp-dm{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;min-width:0}
.hp-dm b{font-weight:500;font-size:15px;line-height:1.35;overflow-wrap:anywhere}
.hp-min{font-size:13.5px;color:var(--ink-3)}
.hp-plan{font-size:14px;color:rgba(var(--c,247,206,158),.85)}
.hp-busy{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--gold);white-space:nowrap}
.hp-bd{width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(245,198,107,.6)}
.hp-dli.open .hp-day{background:rgba(var(--c,247,206,158),.06);border-radius:12px}
.hp-day.dragging{opacity:.45}
.hp-day.drop{outline:1.5px dashed rgba(245,198,107,.7);outline-offset:-2px;border-radius:12px}
.hp-pick,.hp-gp{margin:10px 0 2px;padding:14px;border-radius:14px;background:rgba(3,4,10,.42);border:1px solid var(--hair);animation:hhIn .2s cubic-bezier(.23,1,.32,1) both}
.hp-gp{margin:0 0 12px}
.hp-ph,.hp-gh{margin:0 0 10px;font-size:15px;font-weight:550;color:var(--ink-1)}
.hp-busyw{display:flex;align-items:center;gap:8px;margin:-4px 0 10px;font-size:13.5px;color:var(--gold)}
.hp-dli>.hp-pick{margin:4px 0 12px}
.hp-ln{font-weight:600}
.hp-ideas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 10px}
.hp-idea{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:10px;min-height:56px;padding:8px 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(246,239,230,.025);text-align:start;font:inherit;color:var(--ink-1);transition:border-color .15s ease,background-color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.hp-idea .hp-ic{color:rgb(var(--c,247,206,158))}
.hp-idea:active{transform:scale(.98)}
@media (hover:hover){.hp-idea:hover{border-color:rgba(var(--c,247,206,158),.5);background:rgba(var(--c,247,206,158),.06)}}
.hp-it{display:flex;flex-direction:column;min-width:0}
.hp-it b{font-weight:550;font-size:14.5px;line-height:1.3}
.hp-it small{font-size:13.5px;color:var(--ink-2);line-height:1.35}
.hp-own{margin:0 0 8px}
.hp-ing{display:block;width:100%;min-height:44px;margin:0 0 8px;padding:0 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(3,4,10,.5);color:var(--ink-1);font:inherit;font-size:14.5px}
.hp-ing:focus-visible{outline:2px solid rgba(var(--c,247,206,158),.7);outline-offset:1px}
.hp-gc{margin:0 0 10px}
.hp-gc .hh-chip{display:inline-flex;align-items:center;gap:6px}
.hp-ck{color:var(--mint)}.hp-ck svg{width:15px;height:15px}
.hp-have{margin:0 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
@media (min-width:900px){
  .hp-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
  .hp-dli+.hp-dli .hp-day{border-top:1px solid var(--hair)}
  .hp-day,.hp-dli+.hp-dli .hp-day{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;height:100%;min-height:118px;padding:12px;border-radius:14px;border:1px solid var(--hair);background:rgba(246,239,230,.025)}
  .hp-day.empty{border-style:dashed;background:none}
  .hp-day.today{border-color:rgba(245,198,107,.38)}
  .hp-day.busy .hp-busy{margin-top:auto}
  .hp-dli.open .hp-day{border-color:rgba(var(--c,247,206,158),.55);background:rgba(var(--c,247,206,158),.07)}
  .hp-day[draggable=true]{cursor:grab}
  .hp-dm{flex-direction:column;gap:2px}
}
/* who did what this week (at the foot of Chores, above the 30-day bars) */
.hp-wk{margin:0 0 14px}
.hp-wk>.hh-k{margin:0 0 8px}
.hp-wkl{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 18px}
.hp-wp{display:flex;align-items:center;gap:8px;min-height:32px}
.hp-pips{display:flex;gap:3px}
.hp-pips i{width:6px;height:6px;border-radius:50%;background:rgba(111,242,196,.75)}
.hp-wn{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.hp-wp.top .hp-wn{color:var(--mint)}
/* today's lines: a little drawing in place of the dot, coloured by what it means now */
.hh-m .hp-mgl{width:22px;height:22px;color:var(--ice)}
.hh-m .hp-mgl svg{width:20px;height:20px}
.hh-m.t-gold .hp-mgl{color:var(--gold);filter:drop-shadow(0 0 6px rgba(245,198,107,.35))}
.hh-m.t-rose .hp-mgl{color:var(--rose)}
.hh-m.t-violet .hp-mgl{color:var(--violet)}
.hh-m.t-dim .hp-mgl{color:var(--ink-3)}
.hp-happy{display:flex;align-items:center;gap:10px}
.hp-happy .hp-mgl{color:var(--mint)}
/* a chore done: the check and its points rise from the tap */
.hp-cele{position:fixed;z-index:90;width:0;height:0;pointer-events:none}
.hp-cele-ring{position:absolute;left:-22px;top:-22px;width:44px;height:44px;border-radius:50%;border:2px solid var(--mint);opacity:0;animation:hpRing .6s cubic-bezier(.23,1,.32,1) both}
.hp-cele-chk{position:absolute;left:-14px;top:-14px;width:28px;height:28px;color:var(--mint);animation:hpChk 1.2s cubic-bezier(.23,1,.32,1) both}
.hp-cele-chk svg{width:28px;height:28px;stroke-width:2.2}
.hp-cele-pts{position:absolute;left:16px;top:-26px;font:600 15px var(--sans);color:var(--mint);text-shadow:0 0 12px rgba(111,242,196,.5);animation:hpPts .9s cubic-bezier(.23,1,.32,1) both}
html[dir=rtl] .hp-cele-pts{left:auto;right:16px}
@keyframes hpRing{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(1.5)}}
@keyframes hpChk{0%{opacity:0;transform:scale(.7)}18%{opacity:1;transform:scale(1.08)}30%{transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:translateY(-6px)}}
@keyframes hpPts{0%{opacity:0;transform:translateY(6px)}25%{opacity:1}100%{opacity:0;transform:translateY(-26px)}}
@media (max-width:760px){
  .hp-hints{padding:12px 14px 4px}
  .hp-meals{padding:16px 14px 12px;border-radius:18px}
  .hp-mt h3{font-size:22px}
  .hp-mh{flex-wrap:wrap}
  .hp-day{grid-template-columns:84px minmax(0,1fr) auto;min-height:56px}
  .hp-ideas{grid-template-columns:1fr}
  :is(.hp-add,.hp-later,.hp-groc){min-height:44px}
  .hp-on{min-height:44px}
}
html.simple :is(.hp-hints,.hp-meals){animation:none}
@media (prefers-reduced-motion:reduce){
  :is(.hp-hints,.hp-meals,.hp-pick,.hp-gp){animation:none}
  .hp-h{transition:none}
  .hp-cele-ring,.hp-cele-pts{display:none}
  .hp-cele-chk{animation:hpFade .6s linear both}
  @keyframes hpFade{0%,70%{opacity:1}100%{opacity:0}}
}
.hp-settled>.hh-now,.hp-settled>.hp-hints,.hp-settled>.hp-meals{animation:none}
/* a finished chore holds its place for a moment while the mint check sits on it, then the page redraws without it */
.hp-finished{pointer-events:none;opacity:.35;transform:scale(.985);transition:opacity .45s cubic-bezier(.23,1,.32,1),transform .45s cubic-bezier(.23,1,.32,1)}
@media (prefers-reduced-motion:reduce){.hp-finished{transform:none;transition:opacity .2s linear}}
/* ==== end of Home, more suggestive ==== */
/* ==== Smart home (public/js/smarthome.js, Nov 1 2026; Direction A "Rooms"): the devices view, the connect flow and
   the Home tile. Solid surfaces for reading; glow only on what is live (a light that is on is gold, the thermostat ice,
   an unlocked door rose, an armed alarm mint). Motion: opacity and transform, ease-out, under 240ms; none with reduced
   motion. Phone: a full-height sheet from the bottom, 44px targets. ==== */
.sh-sheet{z-index:66}
.sh-card{width:min(680px,100%);gap:16px;padding:24px 22px 20px}
.sh-x{position:absolute;top:12px;inset-inline-end:12px;width:44px;height:44px;display:grid;place-items:center;border-radius:999px;color:var(--ink-3);transition:transform .16s cubic-bezier(.23,1,.32,1),color .15s ease;z-index:1}
.sh-x:active{transform:scale(.94)}
@media (hover:hover){.sh-x:hover{color:var(--ink-1)}}
.sh-xi,.sh-i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.sh-head{display:flex;flex-direction:column;gap:2px;padding-inline-end:44px}
.sh-kick{margin:0;font-size:13.5px;color:var(--ice)}
.sh-name{margin:0;font-size:14px;color:var(--ink-2)}
.sh-err{margin:0;padding:10px 12px;border-radius:12px;background:rgba(255,122,182,.08);border:1px solid rgba(255,122,182,.3);color:var(--h-ffb3d6,#ffb3d6);font-size:14px}
.sh-chips{display:flex;flex-wrap:wrap;gap:8px}
.sh-chip,.sh-note{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);font-size:13.5px;color:var(--ink-1)}
.sh-note.t-bad{border-color:rgba(255,122,182,.5);background:rgba(255,122,182,.08);color:var(--h-ffb3d6,#ffb3d6)}
.sh-note.t-warn{border-color:rgba(245,198,107,.45);color:var(--gold)}
.sh-note b{font-weight:600}
.sh-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none;box-shadow:0 0 8px currentColor}
.sh-rooms{display:flex;flex-direction:column;gap:10px}
.sh-room{padding:4px 14px 6px;border-radius:18px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09));animation:shIn .22s cubic-bezier(.23,1,.32,1) both}
.sh-room.look{border-color:rgba(255,122,182,.32)}
@keyframes shIn{from{opacity:0;transform:translateY(4px)}}
.sh-rh{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 0 4px}
.sh-rh h4{margin:0;font-size:15.5px;font-weight:600;color:var(--ink-1)}
.sh-rh small{font-size:13px;color:var(--ink-2);white-space:nowrap}
.sh-devs{list-style:none;margin:0;padding:0}
.sh-dev{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:8px 0;border-top:1px solid var(--hair)}
.sh-dev:first-child{border-top:0}
.sh-dev.off{opacity:.55}
.sh-dev>.sh-ok{grid-column:1/-1;margin:4px 0 6px;animation:shIn .2s cubic-bezier(.23,1,.32,1) both}
.sh-mark{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--ink-3);background:rgba(246,239,230,.04);border:1px solid var(--hair);transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease}
.sh-mark.t-gold{color:var(--gold);background:rgba(245,198,107,.1);border-color:rgba(245,198,107,.35);box-shadow:0 0 18px rgba(245,198,107,.18)}
.sh-mark.t-ice{color:var(--ice);background:rgba(92,225,255,.08);border-color:rgba(92,225,255,.3)}
.sh-mark.t-bad{color:var(--rose);background:rgba(255,122,182,.08);border-color:rgba(255,122,182,.38);box-shadow:0 0 18px rgba(255,122,182,.16)}
.sh-mark.t-mint{color:var(--mint);background:rgba(111,242,196,.08);border-color:rgba(111,242,196,.3)}
.sh-dw{display:flex;flex-direction:column;gap:2px;min-width:0}
.sh-dw b{font-weight:550;font-size:15px;color:var(--ink-1);overflow-wrap:anywhere}
.sh-dw small{font-size:13px;color:var(--ink-2);line-height:1.45}
.sh-ctl{display:flex;align-items:center;gap:6px;justify-self:end}
.sh-ctl.wide{grid-column:2/-1;justify-self:stretch;flex-wrap:wrap;gap:8px}
.sh-sw{position:relative;flex:none;width:52px;height:44px;border-radius:999px;background:none;cursor:pointer}
.sh-sw::before{content:"";position:absolute;inset:9px 0;border-radius:999px;background:rgba(246,239,230,.14);transition:background-color .2s ease}
.sh-sw::after{content:"";position:absolute;top:12px;inset-inline-start:3px;width:20px;height:20px;border-radius:50%;background:var(--ink-2);transition:transform .2s cubic-bezier(.23,1,.32,1),background-color .2s ease}
.sh-sw.on::before{background:rgba(245,198,107,.38)}
.sh-sw.on::after{transform:translateX(26px);background:var(--gold)}
html[dir=rtl] .sh-sw.on::after{transform:translateX(-26px)}
.sh-sw:active::after{transform:scale(.92)}
.sh-sw.on:active::after{transform:translateX(26px) scale(.92)}
html[dir=rtl] .sh-sw.on:active::after{transform:translateX(-26px) scale(.92)}
.sh-sw:disabled{opacity:.5;cursor:default}
.sh-step{width:44px;height:44px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:20px;line-height:1;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.sh-step:active{transform:scale(.94)}
@media (hover:hover){.sh-step:hover{border-color:rgba(92,225,255,.5)}}
.sh-temp{min-width:62px;text-align:center;font-family:var(--display);font-size:24px;color:var(--ice);font-variant-numeric:tabular-nums}
.sh-modes{display:flex;flex-wrap:wrap;gap:6px;margin-inline-start:auto}
.sh-mode{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:13.5px;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease,border-color .15s ease,color .15s ease}
.sh-mode:active{transform:scale(.96)}
.sh-mode.on{border-color:rgba(92,225,255,.55);background:rgba(92,225,255,.12);color:var(--ink-1)}
.sh-mode:disabled.on{opacity:1}
.sh-act{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:14px;font-weight:550;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.sh-act.gold{border-color:rgba(245,198,107,.6);background:rgba(245,198,107,.14)}
.sh-act:active{transform:scale(.97)}
.sh-act:disabled{opacity:.5}
.sh-ok .ap-prev{margin:6px 0 2px}
.sh-ok .cv-ok-acts button{height:44px}
.sh-rules{border-radius:16px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09));padding:0 14px}
.sh-rsum{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;min-height:52px;padding:14px 0 10px;cursor:pointer;list-style:none;font-size:15px;font-weight:550}
.sh-rsum::-webkit-details-marker{display:none}
.sh-rsum::after{content:"";width:8px;height:8px;margin-inline-start:auto;align-self:center;border:solid var(--ink-3);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.sh-rules[open] .sh-rsum::after{transform:rotate(-135deg)}
.sh-rsum small{font-size:13.5px;font-weight:400;color:var(--ink-2)}
.sh-rrow{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:60px;padding:8px 0;border-top:1px solid var(--hair)}
.sh-always{flex:none;font-size:13px;color:var(--gold);padding:0 4px}
.sh-fine{margin:0;font-size:13px;line-height:1.5;color:var(--ink-3)}
.sh-demo{color:var(--ink-3)}
.sh-wait{height:220px;border-radius:18px;background:linear-gradient(90deg,rgba(246,239,230,.03),rgba(246,239,230,.06),rgba(246,239,230,.03))}
/* the connect flow */
.sh-connect .sh-card{width:min(500px,100%)}
.sh-bigmark{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;color:var(--ice);background:rgba(92,225,255,.08);border:1px solid rgba(92,225,255,.25)}
.sh-bigmark .sh-i{width:24px;height:24px}
.sh-bigmark.ok{color:var(--mint);background:rgba(111,242,196,.08);border-color:rgba(111,242,196,.3)}
.sh-can{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.sh-can li{display:flex;gap:12px;font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.sh-tick{flex:none;width:18px;height:18px;margin-top:2px;border-radius:50%;border:1.5px solid rgba(111,242,196,.6);background:rgba(111,242,196,.12)}
.sh-can li.t-ask .sh-tick{border-color:rgba(245,198,107,.7);background:rgba(245,198,107,.14)}
.sh-can li.t-ask{color:var(--ink-2)}
.sh-k{margin:4px 0 -6px;font-size:13.5px;color:var(--ink-2)}
.sh-k2{margin:-6px 0 0;font-size:13px;color:var(--ink-3)}
.sh-seg{display:flex;flex-wrap:wrap;gap:8px}
.sh-sg{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:14.5px;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease,border-color .15s ease}
.sh-sg:active{transform:scale(.97)}
.sh-sg.on{border-color:rgba(92,225,255,.55);background:rgba(92,225,255,.1);color:var(--ink-1)}
.sh-cta{min-height:52px;width:100%;font-size:16px;border-radius:14px;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.sh-cta:active{transform:scale(.98)}
.sh-alt{min-height:48px;width:100%;font-size:15px;border-radius:14px;background:none;border:1px solid var(--hair-2);color:var(--ink-1)}
.sh-found{display:flex;flex-direction:column;padding:0 14px;border-radius:16px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09))}
.sh-found .sh-rrow:first-child{border-top:0}
.sh-pulse{height:4px;border-radius:999px;background:rgba(92,225,255,.12);overflow:hidden;position:relative}
.sh-pulse::after{content:"";position:absolute;inset:0;width:40%;border-radius:inherit;background:var(--ice);animation:shGo 1.4s cubic-bezier(.45,0,.2,1) infinite}
@keyframes shGo{from{transform:translateX(-100%)}to{transform:translateX(250%)}}
html[dir=rtl] .sh-pulse::after{animation-direction:reverse}
/* the Home tile */
.hh-board .sh-tile{order:2}
.sh-tgo{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%;min-height:56px;padding:4px 0 2px;text-align:start;color:var(--ink-1);border-radius:10px;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.sh-tgo:active{transform:scale(.985)}
.sh-tl{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.sh-tl .sh-note{min-height:32px}
.sh-sum{font-size:14.5px;color:var(--ink-1)}
.sh-sep{color:var(--ink-3)}
.sh-via{font-size:12.5px;color:var(--ink-3)}
.sh :is(button,summary):focus-visible,.sh-card :is(button,summary):focus-visible,.sh-tile button:focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
@media (max-width:760px){
  .sh-sheet{place-items:end stretch;padding:0}
  .sh-card{width:100%;max-height:calc(100dvh - 24px);border-radius:24px 24px 0 0;padding:22px 16px calc(18px + env(safe-area-inset-bottom));transform:translateY(24px)}
  .sh-connect .sh-card{width:100%}
  .sh-dev{grid-template-columns:40px minmax(0,1fr) auto;gap:10px}
  .sh-ctl.wide{grid-column:1/-1}
  .sh-modes{margin-inline-start:0;width:100%}
  .sh-mode{flex:1;min-height:44px;padding:0 8px}
}
html.simple .sh-mark{box-shadow:none}
@media (prefers-reduced-motion:reduce){.sh-room,.sh-dev>.sh-ok{animation:none}.sh-sw::after,.sh-mark{transition:none}.sh-pulse::after{animation:none;width:100%;opacity:.4}}
/* user-named things (device, room, home) keep their own text direction but line up with the page in Arabic */
html[dir=rtl] .sh-own{text-align:right}
/* smart home 2 (smart-home-2, follow-up to PR #500): one home whatever the brand. Each device names the account it comes
   through; the connect flow starts with which way in (Google Home on the phone, every brand; or Govee with her key). */
.sh-src{display:flex;flex-wrap:wrap;font-size:12.5px;color:var(--ink-3);line-height:1.4}
.sh-src>span{unicode-bidi:isolate;white-space:pre}
.sh-dw small.sh-src{font-size:12.5px;color:var(--ink-3)}
.sh-brand{color:var(--ink-2);white-space:nowrap}
.sh-scene{align-self:flex-start;margin-top:6px;min-height:40px;max-width:100%;padding:0 32px 0 12px;border-radius:999px;border:1px solid var(--hair-2);background:var(--sf-0,#0f1016);color:var(--ink-1);font:inherit;font-size:13.5px;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px;background-repeat:no-repeat}
html[dir=rtl] .sh-scene{padding:0 12px 0 32px;background-position:12px 50%,17px 50%}
.sh-scene:focus-visible,.sh-key:focus-visible{outline:2px solid rgba(92,225,255,.7);outline-offset:2px}
.sh-scene:disabled{opacity:.5}
.sh-more{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:0 14px;border-radius:16px;border:1px dashed var(--hair-2);color:var(--ink-2);font-size:14.5px;text-align:start;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease,color .15s ease}
.sh-more .sh-i{width:20px;height:20px;flex:none;color:var(--ice)}
.sh-more:active{transform:scale(.985)}
@media (hover:hover){.sh-more:hover{border-color:rgba(92,225,255,.45);color:var(--ink-1)}}
.sh-ways{display:flex;flex-direction:column;gap:10px}
.sh-way{display:grid;grid-template-columns:40px minmax(0,1fr) 18px;align-items:center;gap:14px;width:100%;min-height:76px;padding:14px;border-radius:18px;background:var(--sf-0,#0f1016);border:1px solid var(--sf-edge,rgba(246,239,230,.09));text-align:start;color:var(--ink-1);transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.sh-way:active{transform:scale(.985)}
@media (hover:hover){.sh-way:hover{border-color:rgba(92,225,255,.4)}}
.sh-wi,.sh-chev{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.sh-wi{width:40px;height:40px;padding:9px;border-radius:12px;color:var(--ice);background:rgba(92,225,255,.08);border:1px solid rgba(92,225,255,.25);box-sizing:border-box}
.sh-ww{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.sh-ww b{font-size:16px;font-weight:600}
.sh-ww small{font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.sh-tag{margin-top:4px;padding:3px 10px;border-radius:999px;font-size:12.5px;color:var(--gold);background:rgba(245,198,107,.1);border:1px solid rgba(245,198,107,.3)}
.sh-chev{width:18px;height:18px;color:var(--ink-3)}
html[dir=rtl] .sh-chev{transform:scaleX(-1)}
.sh-steps{margin:0;padding-inline-start:22px;display:flex;flex-direction:column;gap:8px;font-size:14.5px;line-height:1.5;color:var(--ink-1)}
.sh-steps li::marker{color:var(--ice);font-variant-numeric:tabular-nums}
.sh-key{width:100%;min-height:48px;padding:0 14px;border-radius:12px;border:1px solid var(--hair-2);background:var(--sf-0,#0f1016);color:var(--ink-1);font:inherit;font-size:15px;letter-spacing:.02em;box-sizing:border-box}
.sh-key::placeholder{color:var(--ink-3)}
@media (prefers-reduced-motion:reduce){.sh-way,.sh-more{transition:none}}
/* ==== end of Smart home ==== */
/* "Not right" and "Don't show this again" (public/js/notright.js): one quiet "…" by anything NOVA learned or suggests.
   The menu sits on a solid raised surface (readable text, no glass); a sheet from the bottom on a phone. Motion: a short
   fade and 4px lift from where the "…" is, under 200ms, transform and opacity only; none with reduced motion. */
.nr-dots{flex:none;position:relative;display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;color:var(--ink-3);fill:currentColor;transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.nr-dots::before{content:"";position:absolute;inset:-6px}
.nr-dots svg{width:18px;height:18px}
@media (hover:hover){.nr-dots:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.07)}}
.nr-dots:active{transform:scale(.94)}
.nr-dots[aria-expanded=true]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.09)}
.nr-dots:focus-visible,.nr-item:focus-visible,.nrp-restore:focus-visible,.nr-not:focus-visible,.mem-row>.main:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.7);outline-offset:2px}
.nr-menu{position:fixed;inset:0;z-index:90;pointer-events:none}
.nr-card{position:fixed;pointer-events:auto;padding:6px;border-radius:14px;border:1px solid rgba(246,239,230,.13);background:#1a1c26;box-shadow:0 18px 50px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.35);color:var(--ink-1);opacity:1;transform:none;transition:opacity .16s cubic-bezier(.23,1,.32,1),transform .16s cubic-bezier(.23,1,.32,1)}
@starting-style{.nr-card{opacity:0;transform:translateY(4px) scale(.98)}}
.nr-menu.nr-out .nr-card{opacity:0;transform:translateY(4px) scale(.98)}
.nr-title{margin:0;padding:8px 12px 6px;font-size:12.5px;color:var(--ink-3)}
.nr-list{display:flex;flex-direction:column}
.nr-item{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:12px;width:100%;min-height:48px;padding:9px 12px;border-radius:10px;text-align:start;color:var(--ink-1);transition:background-color .12s ease-out,transform .12s ease-out}
@media (hover:hover){.nr-item:hover{background:rgba(246,239,230,.06)}}
.nr-item:focus-visible{background:rgba(246,239,230,.06)}
.nr-item:active{transform:scale(.985)}
.nr-ic{display:grid;place-items:center;width:22px;height:22px;color:var(--ink-2)}
.nr-ic svg{width:18px;height:18px}
.nr-tx b{display:block;font-size:14.5px;font-weight:500;line-height:1.3}
.nr-tx small{display:block;margin-top:2px;font-size:12.5px;line-height:1.35;color:var(--ink-3)}
.nr-danger .nr-ic,.nr-danger b{color:#ff9cc6}
.nr-sheet .nr-scrim{position:fixed;inset:0;pointer-events:auto;background:rgba(3,4,10,.55);opacity:1;transition:opacity .2s ease-out}
@starting-style{.nr-sheet .nr-scrim{opacity:0}}
.nr-sheet.nr-out .nr-scrim{opacity:0}
.nr-sheet .nr-card{left:0;right:0;bottom:0;width:auto;border-radius:20px 20px 0 0;border-bottom:0;padding:8px 10px calc(14px + env(safe-area-inset-bottom,0px))}
@starting-style{.nr-sheet .nr-card{transform:translateY(24px);opacity:0}}
.nr-sheet.nr-out .nr-card{transform:translateY(24px)}
.nr-sheet .nr-card::before{content:"";display:block;width:36px;height:4px;margin:2px auto 6px;border-radius:2px;background:rgba(246,239,230,.2)}
.nr-sheet .nr-item{min-height:56px;padding:10px 12px}
.nr-sheet .nr-title{padding:4px 12px 8px;font-size:13px}
/* Fix it: the words become a small editor where they were */
.nr-edit{display:flex;flex-direction:column;gap:8px;margin:2px 0 4px;width:100%}
.nr-ta{width:100%;min-height:76px;padding:10px 12px;border-radius:12px;border:1px solid rgba(246,239,230,.2);background:#11131c;color:var(--ink-1);font:inherit;font-size:14.5px;line-height:1.45;resize:vertical}
.nr-ta:focus{outline:none;border-color:rgba(var(--k-169-139-255,169,139,255),.6)}
.nr-edit-a{display:flex;align-items:center;gap:10px}
.nr-edit-a small{flex:1;min-width:0;font-size:12px;color:var(--ink-3)}
.nr-save,.nr-cancel{min-height:36px;padding:0 14px;border-radius:999px;font-size:13.5px;transition:transform .12s ease-out,background-color .15s ease-out}
.nr-save{background:rgba(var(--k-169-139-255,169,139,255),.16);border:1px solid rgba(var(--k-169-139-255,169,139,255),.45);color:#d9cdff;font-weight:500}
.nr-cancel{color:var(--ink-3)}
.nr-save:active,.nr-cancel:active{transform:scale(.97)}
.nr-save:disabled{opacity:.5}
.nr-mark{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#c8b8ff}
.nr-mark::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--violet)}
#memcard .mc-fix{justify-content:flex-end}
#memcard .mc-fix .nr-mark{margin-inline-end:auto}
.mem-row{align-items:center}
.mem-row .nr-dots{align-self:center}
.mem-row.nrp-gone,.nrp-row.nrp-gone{opacity:0;transform:translateY(-4px);transition:opacity .16s ease-out,transform .16s ease-out}
/* suggestions: the "…" sits after Not now and Remove */
.sgs-acts .sgs-dots{width:36px;height:36px;border:1px solid var(--hair-2)}
/* Settings › Hidden & corrected */
.nrp{display:flex;flex-direction:column;gap:12px}
.nrp-intro{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.nrp-h{display:flex;align-items:center;gap:8px;margin:10px 4px 0;font-size:13px;font-weight:500;color:var(--ink-2)}
.nrp-n{min-width:20px;padding:1px 7px;border-radius:999px;background:rgba(246,239,230,.08);font-size:11.5px;color:var(--ink-3);text-align:center;font-variant-numeric:tabular-nums}
.nrp-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;column-gap:12px;padding:13px 14px}
.nrp-row+.nrp-row{border-top:1px solid var(--hair)}
.nrp-main b{display:block;font-size:14px;font-weight:500;line-height:1.4;color:var(--ink-1);overflow-wrap:anywhere}
.nrp-main small{display:block;margin-top:3px;font-size:12.5px;line-height:1.4;color:var(--ink-3);overflow-wrap:anywhere}
html[dir=rtl] .nrp-main b{text-align:right}
.nrp-forgot{color:#ff9cc6}.nrp-corrected{color:#c8b8ff}.nrp-hidden{color:var(--ink-3)}
.nrp-restore{min-height:34px;padding:0 14px;border-radius:999px;border:1px solid rgba(92,225,255,.32);background:rgba(92,225,255,.06);color:var(--ice);font-size:13px;font-weight:500;transition:background-color .16s ease-out,border-color .16s ease-out,transform .12s ease-out}
@media (hover:hover){.nrp-restore:hover{background:rgba(92,225,255,.12);border-color:rgba(92,225,255,.5)}}
.nrp-restore:active{transform:scale(.97)}
.nrp-restore:disabled{opacity:.45}
.nrp-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 16px;text-align:center}
.nrp-empty .nr-ic{color:var(--mint);width:28px;height:28px}
.nrp-empty b{font-size:14.5px;font-weight:500}
.nrp-empty small{max-width:34ch;font-size:13px;line-height:1.45;color:var(--ink-3)}
@container (max-width:420px){.nrp-row{grid-template-columns:28px minmax(0,1fr);row-gap:10px}.nrp-restore{grid-column:2;justify-self:start}}
@media (max-width:480px){.nrp-row{grid-template-columns:28px minmax(0,1fr);row-gap:10px}.nrp-restore{grid-column:2;justify-self:start}}
/* first-time setup: what NOVA is about to remember, each with ✓ / Not right */
.nr-reads{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.nr-read{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 14px 14px 16px;border-radius:16px;border:1px solid var(--fr-line2,rgba(246,239,230,.2));background:rgba(246,239,230,.03);transition:opacity .16s ease-out,border-color .16s ease-out}
.nr-rt{font-size:15px;line-height:1.45;color:#f6efe6}
.nr-ra{display:flex;align-items:center;gap:8px}
.nr-not{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(246,239,230,.2);color:var(--ink-2);font-size:13.5px;white-space:nowrap;transition:background-color .15s ease-out,border-color .15s ease-out,color .15s ease-out,transform .12s ease-out}
.nr-not:active{transform:scale(.96)}
.nr-read.off{border-color:rgba(255,122,182,.25)}
.nr-read.off .nr-rt{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(255,122,182,.5)}
@media (max-width:480px){.nr-read{grid-template-columns:28px minmax(0,1fr)}.nr-read .nr-not{grid-column:2;justify-self:start}}
@media (prefers-reduced-motion:reduce){.nr-card,.nr-sheet .nr-scrim,.nr-dots,.nr-item,.nr-read,.nrp-row.nrp-gone,.mem-row.nrp-gone{transition:none!important}}
/* review fixes (Oct 29): the read's mint mark is a status, not a button; one button per read */
.nr-ok{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:rgba(111,242,196,.12);color:var(--mint);transition:opacity .15s ease-out}
.nr-ok svg{width:16px;height:16px}
.nr-read.off .nr-ok{opacity:.3}
.nr-rw{display:flex;flex-direction:column;gap:3px;min-width:0}
.nr-state{font-size:12.5px;color:#ffb3d4}
.nr-state:empty{display:none}
.nr-dots[hidden]{display:none}
.mem-row>.main{border-radius:8px;cursor:zoom-in}
.mem-row .nr-dots{cursor:pointer}
.ctip-ends{display:contents}
.ctip-dots{position:absolute;top:6px;inset-inline-end:40px}
.ctip{padding-inline-end:80px!important}
/* 44px wherever a finger taps */
@media (pointer:coarse){.nr-save,.nr-cancel,.nrp-restore,.nr-not{min-height:44px}.nr-save,.nr-cancel{padding:0 18px}.nr-dots{width:40px;height:40px}}
/* the fair-use line under the plan cards */
.plan-fine{margin:10px 2px 0;font-size:13px;color:var(--ink-3)}
/* "Why NOVA says this": More shows the rest of the evidence */
.ld-more{margin:6px 0 0;padding:0;border:0;background:none;color:var(--ink-2);font-size:12.5px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* ---------- home, direction D (Katie's pick, Oct 31 2026): one left panel, a gold My day, Talk to NOVA ----------
   The galaxy brain is untouched. Around it: one panel on the left (My day, then every life section with its ring and
   word, then To-dos, Agents and Projects, then Customize and Help), no panel on the right, no pills in the top bar and
   no hint line under Talk. On a phone: ☰, the NOVA mark, Your life, the My day ring and her photo; the five round shortcuts are gone. */
#glance{display:none!important}
/* a section's ring (public/js/myday.js): the score as the arc, in the section's own colour; it fills in once */
.mdr{position:relative;display:inline-grid;place-items:center;flex:none;vertical-align:middle}
.mdr svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
html[dir=rtl] .mdr svg{transform:rotate(-90deg) scaleY(-1)}
.mdr .trk{fill:none;stroke:rgba(var(--c,245,198,107),.17)}
.mdr .val{fill:none;stroke:rgb(var(--c,245,198,107));stroke-linecap:round}
.mdr.grow .val{transition:stroke-dashoffset .9s cubic-bezier(.19,1,.22,1)}
.mdr.none .val{opacity:0}
.mdr.hit{animation:mdHit .5s cubic-bezier(.23,1,.32,1)}
@keyframes mdHit{35%{transform:scale(1.09)}}
.mdr-n{position:relative;display:grid;place-items:center;font-family:var(--display);font-weight:400;font-size:17px;color:rgb(var(--c,245,198,107));font-variant-numeric:tabular-nums}
.sc.up,.md-rword.up,.bk-w.up{color:var(--mint)}
.sc.down,.md-rword.down,.bk-w.down{color:var(--rose)}

/* ---------- home's pair: Life sections and At a Glance, centred just above the talk bar ----------
   Katie, Nov 1 2026 (02:21): the two icons that sat beside her photo (#499) become home's main features, at the
   bottom centre where her thumb already is. Renamed later that day ("Let's just call it At a Glance and Life
   sections"): Life sections wears the clean gold ring with its dot (a calm full ring, not a progress meter: the
   sections each have their own score inside); At a Glance, the dashboard, wears a new mark, a sunburst iris
   (#glanceMark: "seeing everything at once"), radiant where the ring is a clean line, and its warm-white rim brightens
   once today's to-dos are all done. Each sits on a solid dark disc with a lit rim, so it reads on any part of the
   starfield. They step aside whenever the greeting does (talking, reading, in a section, the overview, first run);
   Simple view keeps its own layout without them. The greeting and NOVA noticed card lift by the pair's height so
   nothing overlaps (--pair-room). */
#stage{--pair-orb:56px;--pair-room:96px}
/* short laptops (1366×640 and the like; Nov 7 review): a smaller pair and no empty status line, so a NOVA noticed card's
   buttons stay in sight instead of under the card's fade */
@media (min-width:761px) and (max-height:720px){
  #stage{--pair-orb:46px;--pair-room:80px}
  .hp-life .md-mini{width:32px;height:32px}.hp-glance .hp-orb .hp-mark{width:35px;height:35px}
  #greet:not(.talking) .status.st-idle{display:none}
}
.home-pair{position:absolute;left:50%;bottom:calc(var(--dock-box,96px) + 12px);transform:translateX(-50%);display:flex;align-items:flex-start;justify-content:center;gap:36px;z-index:5;transition:opacity .2s ease-out,visibility .2s}
.hp-btn{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:72px;padding:0;border:0;background:none;color:var(--ink-1);font:600 13px/1.15 var(--sans);letter-spacing:.01em;cursor:pointer;-webkit-tap-highlight-color:transparent}
.hp-orb{position:relative;display:grid;place-items:center;width:var(--pair-orb);height:var(--pair-orb);border-radius:50%;background:radial-gradient(120% 120% at 50% 0%,rgba(var(--c),.22),rgba(var(--k-6-8-18,6,8,18),.94) 62%);border:1px solid rgba(var(--c),.55);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 4px rgba(var(--c),.07),0 8px 24px rgba(0,0,0,.45),0 0 22px rgba(var(--c),.16);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,box-shadow .2s ease}
.hp-l{text-shadow:0 1px 2px rgba(0,0,0,.9),0 0 12px rgba(0,0,0,.8);white-space:nowrap}
.ld-back .life-glyph.nova-mark-g{width:24px;height:24px;margin:-1px 0}
/* Life sections: the gold ring and its dot (the dot sits at the top: the mini ring's svg is turned a quarter) */
.hp-life{--c:var(--k-245-198-107,245,198,107)}
.hp-life .md-mini{width:38px;height:38px}
.hp-life .md-mini svg{overflow:visible}
.hp-eclipse .core{fill:#03040a}
.hp-life .hp-eclipse .ring{fill:none;stroke:var(--gold);stroke-width:2.2;filter:drop-shadow(0 0 2px rgba(245,198,107,.75))}
.hp-life .hp-eclipse .dot{fill:#ffe7b3;filter:drop-shadow(0 0 2.5px rgba(255,214,140,.95))}
/* At a Glance: the sunburst iris, on a warm-white rim (hp-glance, not hp-day: that name is the meal plan's day cell,
   whose wide-screen min-height made this button 118px tall and lifted the pair into the headline; Katie, Nov 6) */
.hp-glance{--c:var(--k-250-232-200,250,232,200)}
.hp-glance .hp-orb .hp-mark{width:42px;height:42px;display:block;overflow:visible}
.hp-glance.full .hp-orb{border-color:rgba(var(--c),.85);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 4px rgba(var(--c),.12),0 8px 24px rgba(0,0,0,.45),0 0 26px rgba(var(--c),.3)}
@media (hover:hover){.hp-btn:hover .hp-orb{border-color:rgba(var(--c),.85);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 4px rgba(var(--c),.12),0 8px 24px rgba(0,0,0,.45),0 0 28px rgba(var(--c),.28)}}
.hp-btn:active .hp-orb{transform:scale(.95)}
.hp-btn:focus-visible{outline:none}
.hp-btn:focus-visible .hp-orb{outline:2px solid rgba(var(--c),.9);outline-offset:3px}
/* the glyph: a ringed planet and its moon (her worlds), drawn in the button's ink; used again on ← Worlds in a section */
.ld-back .life-glyph{width:22px;height:22px;display:block;overflow:visible}
#lifeGlyph .tl-orbit{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}
#lifeGlyph .tl-orbit:not(.tl-front){opacity:.55}
#lifeGlyph .tl-core{fill:var(--night,#03040a);stroke:currentColor;stroke-width:1.4}
#lifeGlyph .tl-moon{fill:currentColor;opacity:.8}
.md-mini{display:block;width:22px;height:22px}
.md-mini svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.md-mini .trk{fill:none;stroke:rgba(var(--k-246-239-230,246,239,230),.16);stroke-width:3;transition:stroke .2s ease}
.md-mini .val{fill:none;stroke:var(--gold);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.19,1,.22,1)}
html[dir=rtl] .md-mini svg{transform:rotate(-90deg) scaleY(-1)}
/* home only: away whenever the greeting steps aside, and in Simple view */
#stage:is(.simple,.reading,.in-life,.in-overview,.focusing,.first-run) .home-pair,#stage:has(#dock.in-talk) .home-pair{opacity:0;visibility:hidden;pointer-events:none}
#stage:not(.simple):not(.reading):not(.in-life):not(.in-overview):not(.first-run):not(:has(#dock.in-talk)) #greet{padding-bottom:var(--pair-room)}
@media (min-width:761px){
  #stage:not(.simple):has(#sheet.on) #homePair{translate:var(--pane-shift) 0}
}
@media (max-width:760px){
  #stage{--pair-orb:58px;--pair-room:96px}
  .home-pair{gap:44px}
}
@media (prefers-reduced-motion:reduce){.home-pair,.hp-orb{transition:none}.hp-btn:active .hp-orb{transform:none}}
.ld-worlds{display:inline-flex;align-items:center;gap:6px}
.ld-worlds .life-glyph{width:16px;height:16px;flex:none}
@media (max-width:760px){
  /* the panel's groups belong to a computer; in a world on a phone the rail stays the row of sections */
  .rail-work,.rail-foot{display:none!important}
}

/* the panel: one surface from under the top bar to the foot of the screen */
@media (min-width:761px){
  #stage:not(.simple) .rail{gap:4px;padding:10px 10px 10px;border-radius:var(--card-radius);background:var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop)}
  #stage:not(.simple) .rail>:first-child{margin-top:0}
  #stage:not(.simple) .rail>:last-child{margin-bottom:0}
  #stage:not(.simple) .rail .rail-card{padding:0;background:none;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}
  #stage:not(.simple) .rail .rail-fold{position:absolute;top:10px;inset-inline-end:10px;margin:0;z-index:2}
  .rail .life-ask{position:absolute;top:calc(100% + 10px);inset-inline-start:0}
  /* My day: gold, the day's ring and what's left */
  #stage:not(.simple) .rail .rail-dash{flex:none;padding:12px 14px;margin:30px 0 8px;border-radius:16px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:radial-gradient(130% 140% at var(--card-x,0%) 0%,rgba(var(--k-245-198-107,245,198,107),.2),rgba(var(--k-245-198-107,245,198,107),.03) 72%);transition:border-color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
  #stage:not(.simple) .rail button.rail-dash:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.75);background:radial-gradient(130% 140% at var(--card-x,0%) 0%,rgba(var(--k-245-198-107,245,198,107),.28),rgba(var(--k-245-198-107,245,198,107),.05) 72%)}
  #stage:not(.simple) .rail button.rail-dash:active{transform:scale(.98)}
  .rail-dash .rd-top{gap:12px}
  .rail-dash .rd-ring{width:38px;height:38px}
  .rail-dash .rd-ring .trk,.rail-dash .rd-ring .val{stroke-width:4}
  .rail-dash .rd-head .rc-t{font-family:var(--sans);font-weight:650;font-size:16px;letter-spacing:0;line-height:1.2}
  .rail-dash .rd-sum{font-size:12.5px;color:var(--ink-2)}
  /* a group's name: quiet, in sentence case */
  .rail .rail-head{margin:0 0 2px;padding:6px 8px 2px;border-radius:8px;display:flex;align-items:center;justify-content:space-between}
  .rail .rail-head .rc-k,.rail .rw-k{font-size:12px;letter-spacing:.02em;text-transform:none;color:var(--ink-3)}
  .rail .rail-head .rc-t{display:none}
  .rail .rail-head:hover .rc-k{color:var(--ink-1)}
  .rail .rw-k{display:block;padding:10px 8px 4px}
  #stage:not(.simple) .rail .rail-life{flex:0 1 auto;min-height:120px}
  /* each section: its ring, its name, its word */
  .rail-list{margin:0}
  .rail-list ol button{gap:10px;padding:6px 8px;min-height:34px}
  .rail-list ol button .n,.rail-list ol button .d{display:none}
  .rail-list .sc{font-size:11.5px;color:var(--ink-3);white-space:nowrap}
  /* NOVA: To-dos, Agents and Projects with live counts; Customize and Help at the foot */
  #stage:not(.simple) .rail .rail-work{flex:none;padding:0;gap:0}
  .rail .rail-proj,.rail-work .rail-proj{width:100%;min-height:34px;padding:6px 8px;gap:10px;border-radius:10px;text-align:start;color:var(--ink-1);transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
  .rail .rail-proj:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}
  .rail .rail-proj:active{transform:scale(.985)}
  .rail-work .rail-proj+.rail-proj{box-shadow:none}
  .rail .rj-ic{width:22px;height:22px;border-radius:7px;border:0;background:rgba(var(--k-246-239-230,246,239,230),.06)}
  .rail .rj-ic svg{width:13px;height:13px}
  #stage.rail-min .rail .rd-fx{display:none}
  .rail .rw-n .rj-ic{color:#1d1408;background:var(--gold);border-radius:50%;box-shadow:0 0 14px -4px rgba(var(--k-245-198-107,245,198,107),.7)}
  /* the daily tools, then her life sections: a hairline between them */
  #stage:not(.simple) .rail .rail-work{padding-bottom:6px;border-bottom:1px solid var(--card-rim)}
  .rail .rj-s,.rail .rj-go{display:none}
  .rail .rj-t .rc-k{font-size:14px;letter-spacing:0;text-transform:none;color:var(--ink-1)}
  .rail .rj-n{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--ink-2)}
  .rail-foot{flex:none;display:grid;gap:0;margin-top:auto;padding-top:6px;border-top:1px solid var(--card-rim)}
  .rail-foot .rj-t .rc-k{color:var(--ink-2)}
  .rail-foot .rj-ic{color:var(--ink-2)}
  /* folded: the same things as icons and rings */
  #stage.rail-min .rail{padding:10px 6px}
  #stage.rail-min .rail .rail-fold{position:static;align-self:center}
  #stage.rail-min .rail .rail-dash{margin:6px 0;padding:8px 0;display:grid;place-items:center}
  #stage.rail-min .rail .rail-head,#stage.rail-min .rail .rw-k,#stage.rail-min .rail .rj-t,#stage.rail-min .rail .rj-n,#stage.rail-min .rail-list .sc{display:none}
  #stage.rail-min .rail .rail-proj{justify-content:center;padding:8px 0}
  #stage.rail-min .rail-list ol button .mdr{width:20px;height:20px}
}
@media (min-width:761px) and (max-width:1279px){
  .rail-dash .rd-ring{width:34px;height:34px}
  .rail-list .sc{display:none}
}

@media (prefers-reduced-motion:reduce){.mdr.grow .val,.md-mini .val{transition:none}.mdr.hit{animation:none}}

/* ---------- ☰ on top: My day and her life sections with their rings (the panel's list) ---------- */
.bk-top{display:grid;gap:4px;padding:0 0 10px;margin-bottom:6px;border-bottom:1px solid var(--hair)}
.bk-myday{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 14px;border-radius:16px;text-align:start;color:var(--ink-1);border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);background:radial-gradient(130% 140% at var(--card-x,0%) 0%,rgba(var(--k-245-198-107,245,198,107),.2),rgba(var(--k-245-198-107,245,198,107),.03) 72%);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s}
.bk-myday:hover{border-color:rgba(var(--k-245-198-107,245,198,107),.75)}
.bk-myday:active{transform:scale(.98)}
.bk-myday .bk-l{display:grid;gap:1px}
.bk-myday b{font-size:15.5px;font-weight:650}
.bk-myday small{font-size:12.5px;color:var(--ink-2)}
.bk-k{margin:8px 0 2px;padding:0 10px;font-size:12px;color:var(--ink-3)}
/* the daily tools (Chats, To-dos, Agents, Projects) sit close together under New chat: one tight group, 44px rows */
.bk-tools{gap:0}
.bk-mid .bk-life{margin-top:2px}
.bk-sec{gap:12px}
.bk-sec .bk-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-w{font-size:12px;color:var(--ink-3);white-space:nowrap}
@media (max-width:760px){
  /* a phone: the list is the whole screen */
  .bk-menu{width:100vw!important;max-width:none!important;border-radius:0!important;border:0!important;background:var(--h-090a13,#090a13)!important}
  .bk-sec,.bk-myday{min-height:48px}
  .bk-tools .bk-row{min-height:44px}
}

/* ---------- her life sections, edited in place: ☰, the side panel, Simple view (public/js/lifemenu.js) ---------- */
.le-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0 0;padding-inline-start:10px}
.le-k{margin:0;font-size:12px;color:var(--ink-3)}
.le-edit{min-width:44px;min-height:44px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:500;color:var(--ink-2);transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-edit.on{color:var(--gold);font-weight:650}
.le-edit:active{transform:scale(.96)}
.le-edit:focus-visible,.le-grip:focus-visible,.le-x:focus-visible,.le-show:focus-visible,.le-rn:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.75);outline-offset:-2px}
@media (hover:hover){.le-edit:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.055)}.le-edit.on:hover{color:var(--gold)}}
.le-add{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:0 12px;border-radius:12px;text-align:start;color:var(--ink-2);transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-add .le-l{flex:1;min-width:0}
.le-plus{flex:none;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;color:var(--gold);box-shadow:inset 0 0 0 1px rgba(var(--k-245-198-107,245,198,107),.45)}
.le-add:active{transform:scale(.98)}
@media (hover:hover){.le-add:hover{color:var(--ink-1)}}
.le-add[aria-expanded=true]{color:var(--ink-1)}
.le-addw .lm-make{margin:4px 0}
.le-box{display:grid;gap:2px;animation:leIn .2s cubic-bezier(.23,1,.32,1)}
@keyframes leIn{from{opacity:0;transform:translateY(4px)}}
.le-list{list-style:none;margin:0;padding:0;display:grid;gap:1px}
.le-row{display:flex;align-items:center;gap:4px;min-height:44px;border-radius:12px;-webkit-user-select:none;user-select:none}
.le-row.dragging{position:relative;z-index:1;background:rgba(var(--k-246-239-230,246,239,230),.07);box-shadow:0 10px 26px rgba(var(--k-0-0-0,0,0,0),.4)}
.le-grip{flex:none;width:40px;height:44px;display:grid;place-items:center;border-radius:10px;color:var(--ink-3);cursor:grab;touch-action:none}
.le-row.dragging .le-grip{cursor:grabbing;color:var(--gold)}
.le-dot{flex:none;width:8px;height:8px;margin-inline-end:6px;border-radius:50%;background:rgb(var(--c));box-shadow:0 0 8px rgba(var(--c),.45)}
.le-name{flex:1;min-width:0;display:flex;align-items:center;gap:7px;min-height:44px;padding:0;border-radius:10px;font-size:14.5px;color:var(--ink-1);text-align:start}
.le-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.le-hint{margin:2px 0 6px;padding:0 10px;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
@media (hover:hover){.le-rn:hover{background:rgba(var(--k-246-239-230,246,239,230),.05)}.le-grip:hover{color:var(--ink-1)}.le-x:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}}
.le-in{flex:1;min-width:0;height:36px;padding:0 10px;border-radius:10px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.5);background:rgba(var(--k-3-4-10,3,4,10),.6);color:var(--ink-1);font:inherit;font-size:14.5px}
.le-in:focus{outline:none;border-color:var(--gold)}
.le-x{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-x:active,.le-grip:active{transform:scale(.94)}
.le-hidden{display:grid;gap:1px;margin-top:8px;padding-top:6px;border-top:1px solid var(--hair)}
.le-hidden .le-k{padding:6px 0 2px 10px}
.le-row.off{padding-inline-start:16px}
.le-row.off .le-dot{background:transparent;box-shadow:inset 0 0 0 1.5px rgba(var(--c),.7)}
.le-row.off .le-name{color:var(--ink-3)}
.le-show{flex:none;min-height:44px;padding:0 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--gold);transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-show:active{transform:scale(.96)}
@media (hover:hover){.le-show:hover{background:rgba(var(--k-245-198-107,245,198,107),.08)}}
.le-focus{margin-top:8px;padding:8px 6px 8px 10px;min-height:56px;gap:12px;border-top:1px solid var(--hair)}
.le-box .dy-card{margin:8px 0 0}
@media (prefers-reduced-motion:reduce){.le-box{animation:none}}
/* the side panel: Edit sits at the heading's end; editing swaps the list for the edit list in place */
.le-rail{display:grid;gap:2px;min-height:0;margin:2px -8px 0}
.le-rail .le-head{position:absolute;top:-1px;inset-inline-end:8px;margin:0;padding:0}
.le-rail .le-k{display:none}
.le-rail .le-edit{min-height:30px;padding:0 10px;font-size:12.5px}
.le-rail .le-add{min-height:38px;padding:0 8px;font-size:14px}
.le-rail .le-row{min-height:38px}.le-rail .le-grip{width:34px;height:38px}.le-rail .le-name{min-height:38px;font-size:14px}.le-rail .le-x{width:36px;height:36px}.le-rail .le-show{min-height:34px}
.le-rail .le-hint{padding:0 8px;font-size:12px}
.le-rail .le-focus{min-height:0;padding:10px 4px 6px 8px}.le-rail .le-focus .srow-line,.le-rail .le-focus small{font-size:12px}
.le-rail .le-box{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(var(--k-246-239-230,246,239,230),.14) transparent}
.rail-life.le-on .rail-list{display:none}
.rail-life.le-on .le-rail{grid-template-rows:minmax(0,1fr);grid-auto-rows:auto}
@media (min-width:761px){.rail-life{grid-template-rows:auto minmax(0,1fr) auto}.rail-life.le-on{grid-template-rows:auto minmax(0,1fr)}}
#stage.rail-min .le-rail{display:none}
#stage.rail-min .rail-life.le-on .rail-list{display:block}
@media (max-width:760px){.le-rail{display:none}.rail-life.le-on .rail-list{display:block}}
html[data-device=tablet] .le-rail :is(.le-edit,.le-add,.le-row,.le-name,.le-show){min-height:44px}html[data-device=tablet] .le-rail :is(.le-grip,.le-x){width:44px;height:44px}
/* Simple view: her sections fold under one row */
.le-sv{display:grid;gap:1px;margin-top:12px}
.le-svh{display:flex;align-items:center;gap:2px}
.le-svh .sv-lifeh{flex:1;min-width:0}
.sv-chev{flex:none;width:6px;height:6px;margin-inline-end:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.55;transition:transform .2s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .sv-chev{transform:rotate(135deg)}
.sv-lifeh[aria-expanded=true] .sv-chev{transform:rotate(45deg)}
.le-sv .le-edit{min-height:36px;font-size:12.5px}
.sv-secs{display:grid;gap:1px}
.le-sv .sv-row>span.mdr,.le-sv .sv-row>span.le-plus,.le-sv .sv-row>span.bk-w{flex:none}
.le-sv .sv-row>.bk-w{font-size:11.5px}
.sv-sec{gap:10px;padding-inline-start:14px}
.le-sv .le-add{min-height:36px;padding:0 10px;font-size:13.5px}
@media (max-width:900px){.le-sv .le-add,.le-sv .le-edit{min-height:44px}}

/* ---------- renaming a life section: ✎ in Edit, the name edited where it is (public/js/lifemenu.js renameInPlace;
   Katie, Nov 1 2026: "a way to rename life sections in the edit option"). The pencil is quiet until pointed at; the
   field is the one gold-edged thing on the row; Reset to its usual name sits under it. Mirrors in Arabic by itself
   (logical properties, dir=auto on the field). ---------- */
.le-pen{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3);transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-pen:active{transform:scale(.94)}
.le-pen:focus-visible,.le-ok:focus-visible,.le-reset:focus-visible,.arr-rename:focus-visible,.hl-lib-rename:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.75);outline-offset:-2px}
@media (hover:hover){.le-pen:hover{color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.07)}}
.le-row.renaming{background:rgba(var(--k-246-239-230,246,239,230),.035)}
.le-row.renaming .le-x{display:none}
.le-row.renaming{align-items:flex-start}.le-row.renaming .le-grip{height:48px}.le-row.renaming .le-dot{margin-top:20px}
.le-rail .le-row.renaming .le-grip{height:42px}.le-rail .le-row.renaming .le-dot{margin-top:17px}
.le-ren{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:2px;padding:4px 0}
.le-ren-f{display:flex;align-items:center;gap:4px}
.le-ren .le-in{height:40px;width:0}
.le-in[aria-invalid=true]{border-color:var(--rose)}
.le-ok{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:var(--gold);transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-ok:active{transform:scale(.94)}
@media (hover:hover){.le-ok:hover{background:rgba(var(--k-245-198-107,245,198,107),.1)}}
.le-ren-m{margin:0;padding-inline-start:10px;font-size:12.5px;line-height:1.4;color:var(--rose)}
.le-ren-m:empty{display:none}
.le-reset{justify-self:start;min-height:36px;padding:0 10px;border-radius:999px;font-size:13px;font-weight:550;color:var(--ink-2);text-align:start;transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.le-reset::before{content:'↺';display:inline-block;margin-inline-end:6px;color:var(--gold)}
html[dir=rtl] .le-reset::before{transform:scaleX(-1)}
.le-reset:active{transform:scale(.97)}
@media (hover:hover){.le-reset:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.055)}}
@media (pointer:coarse){.le-reset{min-height:44px}}
/* the side panel's rows are a little shorter on a computer (a mouse); a tablet keeps 44px */
.le-rail .le-pen{width:36px;height:36px}.le-rail .le-ok{width:36px;height:36px}.le-rail .le-ren .le-in{height:34px;font-size:14px}
html[data-device=tablet] .le-rail :is(.le-pen,.le-ok){width:44px;height:44px}
/* a section's own page: its name in the header becomes the field (✎ › Rename this section) */
.ld-title h3.renaming{display:block}
.ld-ren{max-width:min(420px,100%);padding:0}
.ld-ren .le-in{height:46px;font-family:var(--display);font-size:24px;font-weight:400;padding:0 12px}
.arr-rename,.hl-lib-rename{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;font:600 14px var(--sans);color:var(--ink-2);transition:color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.arr-rename .arr-ic,.hl-lib-rename .arr-ic{width:16px;height:16px}
.arr-rename:active,.hl-lib-rename:active{transform:scale(.97)}
@media (hover:hover){.arr-rename:hover,.hl-lib-rename:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}}
.arr-tools2-w{margin:-2px 0 6px}
.hl-lib-foot .hl-lib-rename{margin-inline-end:auto;padding-inline-start:4px}
@media (max-width:760px){.ld-ren .le-in{font-size:20px;height:44px}}
.ld-ren .le-reset,.ld-ren .le-ren-m{font-family:var(--sans)}
/* while the name is a field, it gets the header's first row to itself (the score chip and × wait) */
.ld-head:has(.ld-title h3.renaming)>.ld-title{flex:1 1 auto;min-width:0}
.ld-head:has(.ld-title h3.renaming)>:is(.ld-chip,.ld-x,.ld-mark){display:none}

/* ---------- My day (public/js/overview.js + myday.js) ---------- */
#stage.in-overview #fig{opacity:0!important}
.overview.md{background:radial-gradient(ellipse 70% 50% at 50% 0%,rgba(var(--k-245-198-107,245,198,107),.05),transparent 70%),rgba(var(--k-3-4-10,3,4,10),.9)}
.overview.md .ov-top{align-items:center}
.overview.md .ov-top{position:relative;z-index:3;padding-bottom:12px;transition:background-color .2s ease-out,box-shadow .2s ease-out}.overview.md.scrolled .ov-top{background-color:rgba(var(--k-3-4-10,3,4,10),.97);box-shadow:0 1px 0 var(--card-rim,rgba(255,255,255,.08))}
.overview.md .ov-kicker{margin:0 0 4px;font-size:12px;letter-spacing:.04em;color:var(--gold)}
.md-hi{margin:0;font-family:var(--sans)!important;font-weight:650!important;font-size:clamp(22px,2.2vw,30px)!important;letter-spacing:-.01em;line-height:1.2!important;color:var(--ink-1)}
.md-date{margin:3px 0 0;font-size:13.5px;color:var(--ink-3)}
.md-topacts{display:flex;align-items:center;gap:8px;flex:none}
.overview.md .ov-scroll{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);grid-template-areas:"main side";gap:22px 40px;max-width:1180px;width:100%;margin:0 auto;padding:18px 26px 64px;align-items:start;-webkit-mask-image:none;mask-image:none}
.md-main{grid-area:main;display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0}
.md-side{grid-area:side;display:grid;grid-template-columns:minmax(0,1fr);gap:18px;min-width:0}
.md-side>*{min-width:0;grid-area:auto!important}
.md-side .ov-panel,.md-side .gp,.md-side .qst{margin:0}
/* the four rings */
.md-rings{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:6px 0 0}
.md-ring{display:grid;justify-items:center;align-content:start;gap:3px;min-height:44px;padding:6px 4px 8px;border-radius:18px;color:var(--ink-1);transition:background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-ring:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}
.md-ring:active{transform:scale(.97)}
.md-ring .mdr{margin-bottom:6px}
.md-rname{font-size:13.5px;font-weight:600;text-align:center;line-height:1.25}
.md-rword{font-size:12px;color:var(--ink-3)}
/* a ring with nothing to score yet: a faint dashed track, a + in the middle and what would fill it (Katie, Nov 1) */
.md-ring-empty .mdr .trk{stroke:rgba(var(--c,245,198,107),.28);stroke-dasharray:2.2 3.2}
.md-ring-empty .mdr-n{font-family:var(--sans);font-size:22px;font-weight:300;color:rgba(var(--c,245,198,107),.85)}
.md-rword.fill{max-width:16ch;text-align:center;line-height:1.3;color:var(--ink-2);text-decoration:underline;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.25);text-underline-offset:3px}
.md-ring-empty:hover .md-rword.fill{color:var(--ink-1)}
.md-lineRow{display:flex;align-items:baseline;gap:14px;justify-content:space-between}
.md-line{margin:0;font-family:var(--display);font-style:italic;font-size:clamp(17px,1.5vw,20px);line-height:1.4;color:var(--ink-1);text-wrap:pretty;max-width:62ch}
.md-change{flex:none;white-space:nowrap}
/* a card: the One card surface */
.md-card,.md-story{background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,200,215,255),var(--card-tint)),rgba(var(--c,200,215,255),0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
.md-card{padding:14px 16px 12px}
.md-head{display:flex;align-items:baseline;gap:10px;margin:0 0 8px}
.md-head h3{margin:0;font-size:15px;font-weight:650;color:var(--ink-1)}
.md-count{font-size:12.5px;color:var(--ink-3)}
.md-head .md-more{margin-inline-start:auto;min-height:32px}
.md-empty{margin:4px 0 6px;font-size:13.5px;color:var(--ink-2)}
/* NOVA Stories */
.md-stories .md-head{padding:0 2px}
.md-srow{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:0;scrollbar-width:none;margin:0;padding:2px 0 6px;overscroll-behavior-x:contain}
/* with a mouse the row pages with two arrows beside its title; on a phone it swipes */
.md-snav{display:flex;gap:6px;margin-inline-start:auto;align-self:center}
.md-snav[hidden]{display:none}
.md-sarrow{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--hair-2);color:var(--ink-2);transition:color .15s ease-out,border-color .15s ease-out,opacity .15s ease-out,transform .16s cubic-bezier(.23,1,.32,1)}
.md-sarrow:hover:not(:disabled){color:var(--ink-1);border-color:var(--ink-3)}
.md-sarrow:active:not(:disabled){transform:scale(.94)}
.md-sarrow:disabled{opacity:.3;cursor:default}
.md-snext svg,html[dir=rtl] .md-sprev svg{transform:scaleX(-1)}
html[dir=rtl] .md-snext svg{transform:none}
@media (hover:none){.md-snav{display:none}}
.md-srow::-webkit-scrollbar{display:none}
.md-story{--c:245,198,107;--card-tint:.18;flex:none;scroll-snap-align:start;width:176px;min-height:208px;display:flex;flex-direction:column;justify-content:flex-end;gap:6px;padding:14px;text-align:start;color:var(--ink-1);transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s}
.md-story:hover{border-color:rgba(var(--c),.45)}
.md-story:active{transform:scale(.97)}
.md-story.t-violet{--c:196,182,255}.md-story.t-cyan{--c:92,225,255}.md-story.t-mint{--c:111,242,196}.md-story.t-rose{--c:255,120,150}
.md-story-end{justify-content:center;align-items:center;text-align:center;gap:8px}.md-story-end .md-ok{width:44px;height:44px;box-shadow:0 0 24px rgba(var(--k-111-242-196,111,242,196),.22)}.md-story-end .md-ok::after{left:17px;top:9px;width:9px;height:18px;border-width:0 3px 3px 0}
.md-sk{font-size:12px;font-weight:600;color:rgb(var(--c))}
.md-sbig{font-family:var(--display);font-size:40px;line-height:1;color:rgb(var(--c))}
.md-st{font-size:15px;font-weight:650;line-height:1.3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}
.md-sw{font-size:11.5px;line-height:1.35;color:var(--ink-3)}
/* Do next */
.md-tasks{list-style:none;margin:0;padding:0}
.md-task{display:flex;align-items:center;gap:10px;padding:2px 0;border-top:1px solid var(--card-rim)}
.md-task:first-child{border-top:0}
.md-check{position:relative;flex:none;width:44px;height:44px;margin-inline-start:-10px;display:grid;place-items:center;border-radius:50%}
.md-check::before{content:"";width:24px;height:24px;border-radius:50%;border:1.5px solid var(--ink-3);transition:background-color .2s ease,border-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-check:hover::before{border-color:var(--mint)}
.md-check:active::before{transform:scale(.9)}
.md-task.done .md-check::before{background:var(--mint);border-color:var(--mint)}
.md-task.done .md-check::after{content:"";position:absolute;width:6px;height:11px;border:solid var(--h-06281c,#06281c);border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.md-tw{flex:1;min-width:0;display:grid;gap:1px;padding:8px 0}
.md-tt{font-size:14.5px;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-tm{font-size:12px;color:var(--ink-3)}
.md-task.done .md-tt{color:var(--ink-3);text-decoration:line-through}
.md-pts{flex:none;font-size:12.5px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}
.md-plus{position:fixed;left:0;top:0;z-index:60;pointer-events:none;font-weight:800;font-size:16px;color:var(--gold);text-shadow:0 0 12px rgba(var(--k-245-198-107,245,198,107),.6)}
/* the crown week: a drawn mark per day tier (Nov 1 2026, PR week-tiers). crown = gold ring + thin-line crown; kept = closed
   gold ring; partial = gold arc; freeze = ice ring + snowflake; missed = open dashed rose ring + dot; today = cyan outline
   filling with the day. Tap or hover a day: the popover under the strip says what made it. */
.md-crowns{position:relative}
.md-count .md-sep{color:var(--ink-3)}
.md-crowns .md-head{align-items:center;margin-bottom:6px}
.md-wkc{margin:-4px 0 10px;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.md-wkc>span:first-child{color:var(--gold)}
.md-week{list-style:none;margin:2px 0 0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center}
.md-day{display:grid;justify-items:center;min-width:0}
.md-db{display:grid;justify-items:center;gap:4px;width:100%;min-height:58px;padding:4px 0;border-radius:14px;font-size:11.5px;color:var(--ink-3);-webkit-tap-highlight-color:transparent;transition:background-color .16s ease}
.md-db:hover,.md-db[aria-expanded=true]{background:rgba(var(--k-246-239-230,246,239,230),.05)}
.md-db:focus-visible{outline:2px solid var(--ice);outline-offset:-2px}
.md-db:active .md-dd{transform:scale(.94)}
.md-dd{position:relative;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.md-dd>*{grid-area:1/1}
.md-mark{width:36px;height:36px;overflow:visible;fill:none}
.md-dn{font-size:12.5px;font-weight:650;color:var(--ink-1);font-variant-numeric:tabular-nums}
.mk-track{stroke:rgba(var(--k-246-239-230,246,239,230),.1);stroke-width:3}
.mk-full{stroke:var(--gold);stroke-width:3.4;fill:rgba(var(--k-245-198-107,245,198,107),.08)}
.mk-arc{stroke:var(--gold);stroke-width:3.4;stroke-linecap:round}
.mk-crown{stroke:var(--gold);stroke-width:1.35;stroke-linejoin:round;fill:rgba(var(--k-245-198-107,245,198,107),.2)}
.mk-band{stroke:var(--gold);stroke-width:1.35;stroke-linecap:round}
.mk-orb{fill:var(--gold)}
.m-crown{filter:drop-shadow(0 0 5px rgba(var(--k-245-198-107,245,198,107),.45))}
.mk-today{stroke:var(--ice);stroke-width:1.5;opacity:.85}
.mk-arc-today{stroke:var(--ice);stroke-width:3.4;stroke-linecap:round}
.mk-ice{stroke:var(--ice);stroke-width:2.2;opacity:.75;fill:rgba(var(--k-92-225-255,92,225,255),.07)}
.mk-flake{stroke:var(--ice);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.mk-miss{stroke:rgba(var(--k-255-122-182,255,122,182),.62);stroke-width:2;stroke-linecap:round}
.mk-dot{fill:rgba(var(--k-255-122-182,255,122,182),.7)}
.mk-pause{stroke:var(--ink-3);stroke-width:2;stroke-linecap:round}
.md-day.today .md-dw{color:var(--ink-1);font-weight:650}
.md-day.today:not(.t-today) .md-dd{box-shadow:0 0 0 2px var(--ice)}
.md-day.t-missed .md-dw{color:rgba(var(--k-255-122-182,255,122,182),.8)}
.md-day.t-crown .md-dw{color:var(--gold)}
.md-day.t-none .md-dn{color:var(--ink-3);font-weight:550}
/* the popover: a small solid bubble under the strip, its point under the day */
.md-pop{position:relative;margin-top:8px;padding:11px 14px 12px;border-radius:14px;background:var(--card-solid,rgba(18,20,30,.96));border:1px solid var(--card-rim);box-shadow:0 10px 30px rgba(var(--k-0-0-0,0,0,0),.35);opacity:0;transform:translateY(-4px);transition:opacity .18s cubic-bezier(.23,1,.32,1),transform .18s cubic-bezier(.23,1,.32,1)}
.md-pop.on{opacity:1;transform:none}
.md-pop::before{content:"";position:absolute;top:-6px;inset-inline-start:calc((var(--i,0) + .5) * 100% / 7 - 6px);width:10px;height:10px;transform:rotate(45deg);background:inherit;border-top:1px solid var(--card-rim);border-left:1px solid var(--card-rim)}
.md-pop-t{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:14px;color:var(--ink-1)}
.md-pop-t span{font-size:12.5px;color:var(--ink-3)}
.md-pop[data-tier=crown] .md-pop-t b{color:var(--gold)}
.md-pop[data-tier=missed] .md-pop-t b{color:var(--rose)}
.md-pop[data-tier=freeze] .md-pop-t b,.md-pop[data-tier=today] .md-pop-t b{color:var(--ice)}
.md-pop-r{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:5px}
.md-pop-r li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.md-pop-r li::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--ink-3)}
.md-pop-r li.ok{color:var(--ink-1)}
.md-pop-r li.ok::before{background:var(--gold);border-color:var(--gold)}
.md-pop-n{margin:8px 0 0;font-size:12.5px;line-height:1.4;color:var(--ink-3)}
/* the gentle missed line */
.md-miss{margin:10px 0 0;font-size:12.5px;color:var(--ink-2)}
.md-miss>span:first-child{color:rgba(var(--k-255-122-182,255,122,182),.9)}
.md-miss .md-sep{color:var(--ink-3)}
@media (min-width:761px){.md-dd,.md-mark{width:42px;height:42px}.md-db{min-height:64px}}
@media (prefers-reduced-motion:reduce){.md-pop,.md-dd,.md-db{transition:none}.md-pop{transform:none}}
/* the rings strip (Katie Nov 1 2026, 02:16: "have the rings scrollable and show all life sections that are relevant"):
   a sideways snap-scrolling row on a phone with four in view and a peek of the fifth; a wrapping grid on wider screens */
.md-rings{display:flex;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -16px;padding:6px 16px 2px;scroll-padding-inline:16px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 22px),transparent)}
html[dir=rtl] .md-rings{-webkit-mask-image:linear-gradient(to left,transparent 0,#000 12px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to left,transparent 0,#000 12px,#000 calc(100% - 22px),transparent)}
.md-rings::-webkit-scrollbar{display:none}
.md-rings>.md-ring{flex:0 0 calc((100% - 12px) / 4.3);min-width:0;scroll-snap-align:start}
.md-pick-c .md-chip-n{min-width:1ch;font-size:12px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}
.md-pick-c .md-chip-n:empty{display:none}
@media (min-width:761px){
  .md-rings{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px 8px;overflow:visible;margin:0;padding:6px 0 0;-webkit-mask-image:none;mask-image:none}
  html[dir=rtl] .md-rings{-webkit-mask-image:none;mask-image:none}
}
/* the same marks in the streak panel's week (public/js/streak.js) */
.stk-dot.has-mark,.stk-d .stk-dot.has-mark{width:28px;height:28px;border:0;background:none;box-shadow:none}
.stk-dot.has-mark .md-mark{width:28px;height:28px;stroke:none}
.stk-d.today .stk-dot.has-mark{border:0}
.md-lvl{display:flex;align-items:center;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--hair)}
.md-lvl-n{flex:none;font-size:13px;font-weight:650;color:var(--gold);font-variant-numeric:tabular-nums}
.md-lvbar{flex:1;min-width:40px;height:4px;border-radius:99px;overflow:hidden;background:rgba(var(--k-246-239-230,246,239,230),.08)}
.md-lvbar i{display:block;height:100%;background:var(--gold);transform-origin:left center}
html[dir=rtl] .md-lvbar i{transform-origin:right center}
.md-lvt{flex:none;display:flex;gap:8px;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.md-lvn{color:var(--ink-3)}.md-lvn::before{content:"·";margin-inline-end:8px}
@media (max-width:420px){.md-lvl{flex-wrap:wrap;row-gap:8px}.md-lvbar{order:3;flex-basis:100%}}
/* choosing the four rings */
.md-pick{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:rgba(var(--k-3-4-10,3,4,10),.72)}
.md-pick-p{width:min(440px,100%);display:grid;gap:12px;padding:18px;border-radius:var(--card-radius);background:var(--card-solid);border:1px solid var(--card-rim);box-shadow:var(--card-drop)}
.md-pick-p h3{margin:0;font-size:17px}
.md-pick-n{margin:0;font-size:13.5px;color:var(--ink-2)}
.md-pick-c{display:flex;flex-wrap:wrap;gap:8px}
.md-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--hair-2);font-size:13.5px;color:var(--ink-2)}
.md-chip[aria-pressed=true]{border-color:rgba(var(--k-245-198-107,245,198,107),.7);color:var(--ink-1);background:rgba(var(--k-245-198-107,245,198,107),.1)}
.md-chip:disabled{opacity:.45}
.md-pick-r{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
/* "Arrange rings" (Katie, Nov 2 2026, 21:46: "arrange in the order I select and hide any I leave out"): one row per
   section, a switch for shown/hidden on At a Glance, and Move up / Move down; the list scrolls, the buttons stay put */
.md-arr{width:min(480px,100%);max-height:calc(100dvh - 48px);grid-template-rows:auto auto auto auto minmax(0,1fr) auto;gap:10px}
.md-arr-mode{margin:0;font-size:13px;line-height:1.45;color:var(--ink-2);padding:8px 12px;border-radius:12px;background:rgba(var(--k-92-225-255,92,225,255),.07);border:1px solid rgba(var(--k-92-225-255,92,225,255),.18)}
.md-arr-count{margin:2px 0 0;font-size:13px;font-weight:600;color:var(--ink-1);font-variant-numeric:tabular-nums}
.md-arr-l{list-style:none;margin:0 -6px;padding:0 6px;overflow-y:auto;overscroll-behavior:contain;display:grid;gap:4px;min-height:0}
.md-arr-r{display:flex;align-items:center;gap:4px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.035);border:1px solid var(--hair)}
.md-arr-sw{flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 10px;border-radius:13px;text-align:start;color:var(--ink-1)}
.md-arr-knob{flex:none;position:relative;width:36px;height:22px;border-radius:99px;background:rgba(var(--k-246-239-230,246,239,230),.14);transition:background-color .18s cubic-bezier(.23,1,.32,1)}
.md-arr-knob::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:16px;height:16px;border-radius:50%;background:var(--ink-2);transition:transform .18s cubic-bezier(.23,1,.32,1),background-color .18s}
.md-arr-sw[aria-checked=true] .md-arr-knob{background:rgba(var(--k-245-198-107,245,198,107),.85)}
.md-arr-sw[aria-checked=true] .md-arr-knob::after{transform:translateX(14px);background:var(--h-05060c,#05060c)}
html[dir=rtl] .md-arr-sw[aria-checked=true] .md-arr-knob::after{transform:translateX(-14px)}
.md-arr-w{min-width:0;display:grid;line-height:1.25}
.md-arr-nm{font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-arr-st{font-size:12.5px;color:var(--ink-2)}
.md-arr-r.off .md-arr-nm{color:var(--ink-3)}
.md-arr-r.off .md-arr-st{color:var(--ink-3)}
.md-arr-r.off svg{opacity:.4}
.md-arr-mv{flex:none;width:44px;height:44px;border-radius:12px;font-size:17px;color:var(--ink-2);display:grid;place-items:center}
.md-arr-mv:last-child{margin-inline-end:4px}
.md-arr-mv:disabled{opacity:.25}
.md-arr-sw:active,.md-arr-mv:not(:disabled):active{transform:scale(.97)}
@media (hover:hover){.md-arr-mv:not(:disabled):hover,.md-arr-sw:hover{background:rgba(var(--k-246-239-230,246,239,230),.06)}}
.md-arr-sw:focus-visible,.md-arr-mv:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.md-arr-foot{padding-top:4px}
.md-arr-reset{margin-inline-end:auto}
.md-rnone{margin:4px 0 0;font-size:14px;color:var(--ink-2)}.md-rnone .link{margin-inline-start:8px;min-height:44px}
@media (max-width:420px){.md-arr{padding:16px 14px}.md-arr-foot .btn{flex:1 1 auto}.md-arr-reset{flex-basis:100%!important;order:3}}
@media (prefers-reduced-motion:reduce){.md-arr-knob,.md-arr-knob::after{transition:none}}
/* the Stories player */
.md-play{--c:245,198,107;position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;padding:calc(12px + env(safe-area-inset-top,0px)) max(16px,calc((100vw - 520px) / 2)) calc(18px + env(safe-area-inset-bottom,0px));background:radial-gradient(120% 70% at 50% 0%,rgba(var(--c),.22),transparent 70%),var(--h-05060c,#05060c);color:var(--ink-1);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1);outline:none}
.md-play.on{opacity:1}
.md-play[data-tone=violet]{--c:196,182,255}.md-play[data-tone=cyan]{--c:92,225,255}.md-play[data-tone=mint]{--c:111,242,196}.md-play[data-tone=rose]{--c:255,120,150}
.md-bars{display:flex;gap:4px}
.md-bars>span{display:block;flex:1;height:3px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.2);overflow:hidden}
.md-bars>span>b{display:block;height:100%;background:var(--ink-1);transform-origin:left;transform:scaleX(0)}
html[dir=rtl] .md-bars>span>b{transform-origin:right}
.md-ptop{position:relative;z-index:2;display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--ink-2)}
.md-pdot{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--h-fff3e6,#fff3e6),var(--gold) 55%,var(--h-6b4a12,#6b4a12))}
.md-ptop b{color:var(--ink-1)}
.md-px{margin-inline-start:auto;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;font-size:24px;line-height:1;color:var(--ink-1)}
.md-pbody{flex:1;display:flex;flex-direction:column;justify-content:center;gap:10px;min-height:0;padding:20px 0}
.md-pkind{margin:0;font-size:13px;font-weight:650;letter-spacing:.04em;color:rgb(var(--c))}
.md-pbig{margin:0;font-family:var(--display);font-size:88px;line-height:1;color:rgb(var(--c))}
.md-ptitle{margin:0;font-size:clamp(24px,6vw,32px);font-weight:700;line-height:1.2;letter-spacing:-.01em;text-wrap:balance}
.md-pdesc{margin:0;font-size:16px;line-height:1.5;color:var(--ink-2)}
.md-pfoot{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.md-pfoot .btn{min-height:44px;padding:0 18px}
.md-why{flex:1 1 100%;margin:4px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-3)}
.md-why b{font-weight:600;color:var(--ink-2)}
.md-tap{position:absolute;top:80px;bottom:150px;width:38%;z-index:1;background:none;border:0;-webkit-tap-highlight-color:transparent;outline:none}
.md-tap-back{inset-inline-start:0}.md-tap-next{inset-inline-end:0}
.md-caught{flex:1;display:grid;place-content:center;justify-items:center;gap:12px;text-align:center}
.md-caught h2{margin:0;font-size:26px}
.md-caught p{margin:0;color:var(--ink-2)}
.md-ok{position:relative;width:76px;height:76px;border-radius:50%;background:rgba(var(--k-111-242-196,111,242,196),.12);box-shadow:0 0 40px rgba(var(--k-111-242-196,111,242,196),.25)}
.md-ok::after{content:"";position:absolute;left:30px;top:18px;width:14px;height:28px;border:solid var(--mint);border-width:0 4px 4px 0;transform:rotate(45deg)}
/* To-dos: today's progress, in place of the numbers strip */
.md-progress-host{margin-top:4px}
.md-progress{display:flex;align-items:center;gap:16px;max-width:560px}
.md-progress .mdr-n{font-family:var(--sans);font-size:16px;font-weight:700;color:var(--ink-1)}
.md-pt h3{margin:0;font-size:16px;font-weight:650}
.md-pl{margin:3px 0 0;font-size:13.5px;color:var(--ink-2)}
.md-ps{margin:3px 0 0;font-size:13px;font-weight:600;color:var(--gold)}
@media (min-width:1001px){.md-story{flex:0 0 calc((100% - 36px) / 4);min-width:150px;width:auto}}
@media (max-width:1000px){
  .overview.md .ov-scroll{grid-template-columns:minmax(0,1fr);grid-template-areas:"main" "side";padding:10px 16px 60px;gap:18px}
  .md-srow{margin:0 -16px;padding:2px 16px 6px;scroll-padding-inline:16px}
}
@media (max-width:760px){
  .overview.md .ov-scroll{display:grid}
  .overview.md .ov-top{flex-wrap:wrap}
  .md-topacts .md-weekbtn{display:none}
  .overview.md .ov-back{min-height:44px}
  .md-change,.md-head .md-more{min-height:44px;display:inline-flex;align-items:center}
  .md-lineRow{align-items:center}
  .md-rings{gap:4px}
  .md-ring .mdr{width:70px!important;height:70px!important}
  .md-rname{font-size:12.5px}
  .md-story{width:150px;min-height:190px}
  .md-pbig{font-size:72px}
}
@media (prefers-reduced-motion:reduce){.md-play{transition:none}.md-story,.md-ring,.md-check::before{transition:none}}
/* ==== NOVA Stories: "Your week in stars" (Nov 1 2026; Katie chose direction A "Constellation", plus B's guess card and
   share image and C's Listen; public/js/stories.js, server/stories.js). A constellation drawn from the story's own data
   (every star a real thing) over a solid card: one big number, one headline, one line. Colours keep their meaning:
   violet people and memories, gold action and money, mint wins, cyan insight; never rose. Less motion: fades only. ==== */
.ns-ering{flex:none;width:60px;height:60px}
.ns-ering svg{width:100%;height:100%;overflow:visible}
.ns-ecore{fill:var(--pearl);filter:drop-shadow(0 0 6px rgba(255,243,230,.7))}
.ns-enew{filter:drop-shadow(0 0 5px currentColor)}
.ns-eseen{opacity:.35}
.ns-ewords{display:flex;flex-direction:column;gap:3px;min-width:0}
.ns-etitle{font-family:var(--display);font-weight:400;font-size:22px;line-height:1.2}
.ns-eline{font-size:14.5px;color:var(--ink-2)}
#stage:has(.ns-play) #toast{z-index:80;top:calc(env(safe-area-inset-top,0px) + 76px);bottom:auto}
.ns-play{--c:92,225,255;position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;gap:10px;padding:calc(12px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px));background:radial-gradient(110% 60% at 50% 0%,rgba(var(--c),.13),transparent 70%),var(--h-05060c,#05060c);color:var(--ink-1);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1);outline:none;overscroll-behavior:contain;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.ns-play.on{opacity:1}
.ns-bars{display:flex;gap:4px}
.ns-bars span{flex:1;height:3px;border-radius:3px;background:rgba(246,239,230,.2);overflow:hidden}
.ns-bars b{display:block;height:100%;background:var(--ink-1);transform:scaleX(0);transform-origin:0 50%}
html[dir=rtl] .ns-bars b{transform-origin:100% 50%}
.ns-head{display:flex;align-items:center;gap:8px;min-height:44px}
.ns-who{display:flex;align-items:center;gap:8px;font-size:15px}
.ns-orb{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#bff6ff,#5ce1ff 45%,#6a4fd8 100%);box-shadow:0 0 12px rgba(92,225,255,.35)}
.ns-sub{color:var(--ink-3)}
.ns-listen{margin-inline-start:auto;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s,color .2s}
.ns-listen svg{width:18px;height:18px}
.ns-listen.on{color:var(--ink-1);border-color:rgba(var(--c),.6);background:rgba(var(--c),.1)}
.ns-listen:active,.ns-ib:active,.ns-chip:active,.ns-segb:active,.ns-later:active,.ns-check:active{transform:scale(.96)}
.ns-ib{display:inline-grid;place-items:center;width:44px;height:44px;flex:none;border-radius:50%;border:1px solid var(--hair-2);background:transparent;color:var(--ink-2);transition:transform .16s cubic-bezier(.23,1,.32,1),color .2s,border-color .2s}
.ns-ib svg{width:20px;height:20px}
.ns-x{border-color:transparent;color:var(--ink-1)}
.ns-stage{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}
.ns-pic{flex:1 1 auto;min-height:150px;display:grid;place-items:center}
.ns-sky{width:100%;height:100%;max-height:100%;overflow:visible}
.ns-bg circle{fill:var(--ink-1)}
.ns-lines line{stroke:rgba(var(--c),.45);stroke-width:1.1}
.ns-dot{fill:rgb(var(--c))}
.ns-halo{fill:rgba(var(--c),.16)}
.ns-st.you .ns-dot{fill:var(--pearl)}
.ns-st.dim .ns-dot{fill:rgba(246,239,230,.28)}
.ns-label{fill:var(--ink-2);font:500 12.5px var(--sans)}
.ns-light .ns-st{opacity:0;transform-box:fill-box;transform-origin:center;animation:nsLight .42s cubic-bezier(.23,1,.32,1) forwards;animation-delay:calc(var(--i) * 60ms + 100ms)}
.ns-light .ns-lines{opacity:0;animation:nsFade .5s ease-out .55s forwards}
@keyframes nsLight{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes nsFade{to{opacity:1}}
.ns-card{flex:none;position:relative;padding:20px 20px 12px;border-radius:24px;background:var(--h-10121f,#10121f);border:1px solid rgba(var(--c),.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 24px 48px -30px rgba(0,0,0,.9);max-height:64%;overflow-y:auto;user-select:text;-webkit-user-select:text}
.ns-big{margin:0 0 6px;font-family:var(--display);font-weight:400;font-size:50px;line-height:1.02;letter-spacing:-.01em;color:rgb(var(--c))}
.ns-big.gold{color:var(--gold)}
.ns-title{margin:0;font-family:var(--display);font-weight:400;font-size:25px;line-height:1.2;text-wrap:balance}
.ns-line{margin:8px 0 0;font-size:16px;line-height:1.5;color:var(--ink-2)}
.ns-guessed{margin:10px 0 0;font-size:15px;color:var(--mint)}
.ns-act{display:flex;justify-content:center;align-items:center;width:100%;min-height:50px;margin-top:16px;font-size:16px}
.ns-act+.ns-act{margin-top:10px}
/* "Do this" (Nov 4): a story's next steps, rows on the card (not cards in a card), gold for action, mint once done */
.ns-dothis{margin:16px 0 0;border-top:1px solid var(--hair);display:grid}
.ns-step{border-bottom:1px solid var(--hair)}
.ns-do{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 4px;border:0;background:none;color:var(--ink-1);text-align:start;border-radius:12px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s}
.ns-do:hover{background:rgba(245,198,107,.06)}
.ns-do:active{transform:scale(.98)}
.ns-do[aria-busy=true]{opacity:.6}
.ns-doi,.ns-stepok{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:var(--gold);border:1px solid rgba(245,198,107,.45);background:rgba(245,198,107,.08)}
.ns-doi svg,.ns-stepok svg{width:20px;height:20px}
[dir=rtl] .t-go .ns-doi svg{transform:scaleX(-1)}
.ns-dowords,.ns-stepwords{display:flex;flex-direction:column;gap:2px;min-width:0}
.ns-dowords b,.ns-stepwords b{font-weight:500;font-size:16px;line-height:1.3}
.ns-stepw{font-size:13.5px;line-height:1.35;color:var(--ink-3)}
.ns-step.done{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:10px 4px}
.ns-stepok{color:var(--mint);border-color:rgba(111,242,196,.45);background:rgba(111,242,196,.08)}
.ns-step.done .ns-stepok svg{animation:ns-tick .24s cubic-bezier(.23,1,.32,1) both}
@keyframes ns-tick{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
.ns-stepwords b{color:var(--mint);font-size:14.5px}
.ns-stepmade{font-size:16px;color:var(--ink-1);overflow-wrap:anywhere}
.ns-undo{min-height:44px;min-width:44px;padding:0 10px;border:0;background:none;color:var(--ink-2);font-size:14.5px;text-decoration:underline;text-underline-offset:3px;border-radius:10px}
.ns-undo:hover{color:var(--ink-1)}
/* a win worth celebrating: one soft bloom of light from the sky's centre as the story opens, then still */
.ns-pic{position:relative}
.ns-cele::after{content:"";position:absolute;left:50%;top:50%;width:min(62vw,340px);aspect-ratio:1;margin:calc(min(62vw,340px) / -2) 0 0 calc(min(62vw,340px) / -2);border-radius:50%;border:1px solid rgba(var(--c),.5);box-shadow:0 0 60px 6px rgba(var(--c),.16),inset 0 0 40px rgba(var(--c),.1);opacity:0;pointer-events:none;animation:ns-bloom 1.1s cubic-bezier(.16,1,.3,1) .45s both}
@keyframes ns-bloom{0%{opacity:0;transform:scale(.72)}35%{opacity:.9}100%{opacity:0;transform:scale(1.18)}}
.ns-foot{display:flex;align-items:center;gap:6px;margin-top:14px}
.ns-gap{flex:1}
.ns-how{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 4px;border:0;background:none;color:var(--ink-2);font-size:14.5px;white-space:nowrap}
.ns-how svg{width:18px;height:18px}
.ns-heart[aria-pressed=true]{color:rgb(var(--c));border-color:rgba(var(--c),.5)}
.ns-heart[aria-pressed=true] svg{fill:currentColor}
.ns-why{margin-top:8px;padding:12px 14px;border-radius:14px;background:rgba(246,239,230,.035)}
.ns-whyline{margin:0 0 8px;font-size:14.5px;color:var(--ink-1)}
.ns-src{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ns-src li{display:flex;flex-direction:column;gap:1px}
.ns-src b{font-weight:500;font-size:14.5px;color:var(--ink-2)}
.ns-src span{font-size:13.5px;color:var(--ink-3)}
.ns-why .ns-src+.ns-evid{margin-top:12px;padding-top:12px;border-top:1px solid var(--hair)}
.ns-chips{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 4px}
.ns-chip{min-width:76px;min-height:54px;padding:0 18px;border-radius:999px;border:1px solid rgba(var(--c),.5);background:rgba(var(--c),.06);color:var(--ink-1);font-family:var(--display);font-size:24px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .2s}
.ns-chip:hover{background:rgba(var(--c),.14)}
.ns-todos{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:4px}
.ns-todo{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;align-items:center;gap:8px;min-height:52px}
.ns-check{width:44px;height:44px;border:0;background:none;display:grid;place-items:center;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.ns-check::before{content:"";width:24px;height:24px;border-radius:50%;border:2px solid var(--gold);transition:background-color .2s,border-color .2s}
.ns-todo.done .ns-check::before{background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2306130e' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4L18 8'/%3E%3C/svg%3E") center/16px no-repeat;border-color:var(--mint)}
.ns-tt{font-size:16px;line-height:1.35;overflow-wrap:anywhere}
.ns-todo.done .ns-tt,.ns-todo.moved .ns-tt{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(246,239,230,.3)}
.ns-pts{font-size:14.5px;font-weight:600;color:var(--gold)}
.ns-todo.done .ns-pts{color:var(--mint)}
.ns-later{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font-size:13.5px}
.ns-q{display:flex;gap:8px;margin-top:14px}
.ns-qin{flex:1;min-width:0;min-height:50px;padding:0 14px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(246,239,230,.04);color:var(--ink-1);font:16px var(--sans)}
.ns-qsave{min-height:50px;padding:0 20px;font-size:16px}
.ns-saved{margin:14px 0 0;color:var(--mint);font-size:15px}
.ns-end{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:16px}
.ns-peek{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:center}
.ns-peekc{display:flex;flex-direction:column;gap:8px;padding:18px 16px;border-radius:18px;background:rgba(var(--c),.08);border:1px solid rgba(var(--c),.2);filter:blur(7px);opacity:.8}
.ns-peekc b{font-family:var(--display);font-weight:400;font-size:24px}
.ns-peekc span{font-size:14px;color:var(--ink-2)}
.ns-endc{max-height:none}
.ns-caught{flex:1;display:grid;place-content:center;justify-items:center;gap:12px;text-align:center;padding:0 12px}
.ns-caught h2{margin:0;font-family:var(--display);font-weight:400;font-size:30px}
.ns-caught p{margin:0 0 6px;color:var(--ink-2);font-size:16px}
.ns-caught .btn{min-height:50px;padding:0 24px;font-size:16px}
.ns-ok{position:relative;display:block;width:56px;height:56px;border-radius:50%;background:rgba(111,242,196,.14);border:1px solid rgba(111,242,196,.5);box-shadow:0 0 28px rgba(111,242,196,.2)}
.ns-ok::after{content:"";position:absolute;left:21px;top:13px;width:11px;height:22px;border:solid var(--mint);border-width:0 3px 3px 0;transform:rotate(45deg)}
.ns-sheet{position:absolute;inset:0;z-index:3;display:flex;align-items:flex-end;justify-content:center;background:rgba(3,4,10,.62);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.ns-sheet.on{opacity:1}
.ns-sh{width:min(560px,100%);max-height:92%;overflow-y:auto;padding:8px 20px calc(18px + env(safe-area-inset-bottom,0px));border-radius:26px 26px 0 0;background:var(--h-10121f,#10121f);border:1px solid var(--hair);border-bottom:0;transform:translateY(24px);transition:transform .24s cubic-bezier(.23,1,.32,1);user-select:text;-webkit-user-select:text}
.ns-sheet.on .ns-sh{transform:none}
.ns-grab{display:block;width:40px;height:4px;margin:2px auto 14px;border-radius:4px;background:var(--hair-2)}
.ns-sh-title{margin:0;font-family:var(--display);font-weight:400;font-size:28px;line-height:1.15}
.ns-sh-lead{margin:8px 0 0;font-size:16px;line-height:1.5;color:var(--ink-2)}
.ns-fields{display:grid;gap:10px;margin-top:18px}
.ns-field{display:flex;align-items:center;gap:12px;min-height:54px;padding:0 16px;border-radius:14px;border:1px solid var(--hair-2);background:rgba(246,239,230,.03)}
.ns-field>span{flex:none;font-size:15px;color:var(--ink-3)}
.ns-field input,.ns-field select{flex:1;min-width:0;min-height:50px;border:0;background:none;color:var(--ink-1);font:600 16px var(--sans);text-align:end}
.ns-field select{appearance:none;-webkit-appearance:none;cursor:pointer}
.ns-field select option{background:#10121f;color:var(--ink-1)}
.ns-field:focus-within{border-color:rgba(245,198,107,.6)}
.ns-field input:focus,.ns-field select:focus{outline:none}
.ns-field select{padding-inline-end:4px}
.ns-seg{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.ns-segb{min-height:50px;padding:0 10px;border-radius:14px;border:1px solid var(--hair-2);background:none;color:var(--ink-2);font-size:15px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s,color .2s}
.ns-segb[aria-checked=true]{border-color:var(--gold);color:var(--ink-1);background:rgba(245,198,107,.08)}
.ns-land{margin:12px 0 0;font-size:14.5px;line-height:1.45;color:var(--ink-3)}
.ns-sh-acts{display:flex;gap:10px;margin-top:18px}
.ns-sh-acts .btn{min-height:52px;padding:0 24px;font-size:16px}
.ns-sh-acts .btn.gold{flex:1}
.ns-done{display:grid;justify-items:center;gap:10px;text-align:center;padding:12px 0 4px}
.ns-done .btn{min-height:50px;min-width:160px;margin-top:8px;font-size:16px}
.ns-sh canvas.ns-shimg{position:relative;inset:auto;display:block;height:min(48vh,480px);width:auto;aspect-ratio:9/16;margin:14px auto 0;border-radius:18px;border:1px solid var(--hair)}
.ns-toggles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:14px}
.ns-tog{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);font-size:15px;color:var(--ink-2);cursor:pointer}
.ns-tog input{width:18px;height:18px;accent-color:var(--gold)}
.ns-sh .ns-land{text-align:center}
@media (min-width:1001px){
  .ns-play{padding:28px 48px 32px;gap:14px}
  .ns-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,460px);align-items:center;gap:48px}
  .ns-pic{height:100%;min-height:0}
  .ns-card{max-height:100%;padding:28px 28px 16px}
  .ns-big{font-size:60px}
  .ns-title{font-size:30px}
  .ns-end{grid-column:1/-1;max-width:560px;width:100%;margin:0 auto;height:100%}
  .ns-sheet{align-items:center}
  .ns-sh{border-radius:26px;border-bottom:1px solid var(--hair);max-height:88%}
}
@media (max-width:760px){.ns-entry{min-height:80px;padding:12px 16px}.ns-ering{width:52px;height:52px}}
@media (max-height:700px) and (max-width:760px){.ns-big{font-size:40px}.ns-title{font-size:22px}.ns-pic{min-height:110px}}
@media (prefers-reduced-motion:reduce){.ns-play,.ns-sheet,.ns-sh,.ns-entry,.ns-ib,.ns-chip,.ns-segb,.ns-check::before{transition:none}.ns-sh{transform:none}.ns-light .ns-st,.ns-light .ns-lines{animation:none;opacity:1}}
/* -- My day's story row (Katie, Nov 1 02:26: "much more wow… insta-style scrolling… about me, graphics"): a row of
   story cards she swipes through, each drawn its own way from its own data and filling the card: a memory as a
   full-bleed photo with a quote, people as a constellation of initials, places as a map, a big number over its
   picture, to-dos as chips with a ring, a "Did you know?" tip. Each card is a colour field in its story's colour;
   the words sit on a solid panel. New ones wear a ring; cards arrive with a short rise (fades only with less motion). -- */
.ns-railwrap{display:flex;flex-direction:column;gap:12px;min-width:0}
.ns-railwrap[hidden]{display:none}
.ns-rhead{display:flex;align-items:center;gap:12px;min-width:0}
.ns-rhead .ns-ering{width:46px;height:46px}
.ns-rhead .ns-ewords{flex:1}
.ns-playall{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;color:var(--ink-1);background:rgba(246,239,230,.07);border:1px solid var(--card-rim);font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),background .2s}
.ns-playall svg{width:14px;height:14px}
.ns-playall:hover{background:rgba(246,239,230,.12)}
.ns-playall:active{transform:scale(.97)}
.ns-eleft{display:block;margin-top:2px;font-size:13.5px;color:var(--gold)}
.ns-rest{display:flex;align-items:center;gap:12px;min-width:0;padding:4px 0}
.ns-rest .ns-ering{width:46px;height:46px;flex:none;opacity:.7}
.ns-rest .ns-ewords{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ns-rest .ns-eline{line-height:1.45}
@media (max-width:560px){.ns-rest{display:grid;grid-template-columns:46px minmax(0,1fr);row-gap:12px}.ns-restplans{grid-column:2;justify-self:start}}
[dir=rtl] .ns-playall svg{transform:scaleX(-1)}
.ns-rrow{position:relative;min-width:0}
.ns-rail{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:16px;padding:6px 16px 14px;margin-inline:-16px;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.ns-rail::-webkit-scrollbar{display:none}
@keyframes ns-rise{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.ns-tile{--c:92,225,255;position:relative;flex:none;scroll-snap-align:start;display:flex;flex-direction:column;width:228px;height:344px;border-radius:24px;overflow:hidden;
  background:radial-gradient(130% 75% at 50% 0%,rgba(var(--c),.42),rgba(var(--c),.1) 55%,rgba(var(--c),0) 80%),radial-gradient(80% 50% at 100% 100%,rgba(var(--c),.16),rgba(var(--c),0) 70%),#0c0e1b;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 1.5px rgba(var(--c),.65),0 22px 44px -26px rgba(var(--c),.75);
  animation:ns-rise .28s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 45ms);transition:transform .16s cubic-bezier(.23,1,.32,1)}
.ns-tile.seen{box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(246,239,230,.1),0 18px 40px -30px rgba(0,0,0,.9)}
.ns-tile:has(.ns-topen:active){transform:scale(.98)}
.ns-t-photo{width:272px}
.ns-t-people{width:252px}
.ns-t-map{width:252px}
.ns-t-tip{width:284px}
.ns-t-todo{width:276px}
.ns-topen{flex:1;display:flex;flex-direction:column;align-items:stretch;min-height:0;width:100%;padding:0;margin:0;text-align:start;color:inherit;background:none;border:0;border-radius:0;cursor:pointer;font:inherit}
.ns-topen:focus-visible{outline:2px solid rgb(var(--c));outline-offset:-4px;border-radius:24px}
.ns-topen>*{flex:none}
.ns-tart,.ns-photo{position:relative;display:block;flex:1 1 0;min-height:120px;overflow:hidden}
.ns-art{position:absolute;inset:0;display:block;width:100%;height:100%}
.ns-adust{fill:var(--pearl)}
.ns-agrid{fill:none;stroke:rgba(246,239,230,.1);stroke-width:1}
.ns-aroute{fill:none;stroke-width:1.6;stroke-dasharray:3 4;opacity:.75}
.ns-aring{fill:none;stroke-width:1.2;opacity:.7}
.ns-adot{filter:drop-shadow(0 0 5px rgba(var(--c),.9))}
.ns-atrack{fill:none;stroke:rgba(246,239,230,.1);stroke-width:10}
.ns-afill{fill:none;stroke-width:10;stroke-linecap:round;filter:drop-shadow(0 0 8px rgba(var(--c),.7))}
.ns-atick{stroke:rgba(246,239,230,.25);stroke-width:1.2;stroke-linecap:round}
.ns-aline{stroke-opacity:.45;stroke-width:1.1}
.ns-abubble{fill:#14122a;stroke-width:1.6}
.ns-ainit{fill:var(--pearl);font-family:var(--sans,system-ui);font-weight:600;letter-spacing:.02em}
/* the number, big, over its picture */
.ns-tnum{position:absolute;inset-inline-start:16px;bottom:8px;display:flex;align-items:baseline;gap:6px;max-width:calc(100% - 32px);color:var(--pearl);text-shadow:0 2px 18px rgba(0,0,0,.55),0 0 24px rgba(var(--c),.45)}
.ns-tnum b{font-family:var(--display);font-weight:400;font-size:64px;line-height:.95;letter-spacing:-.02em}
.ns-tnum b.word{font-size:34px}
.ns-tnum small{font-size:17px;color:rgba(255,243,230,.88);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ns-tguess{position:absolute;inset-inline-start:16px;bottom:10px;font-family:var(--display);font-weight:400;font-size:32px;color:rgb(var(--c));text-shadow:0 0 22px rgba(var(--c),.5)}
/* the words, on a solid panel */
.ns-tpanel{display:flex;flex-direction:column;gap:4px;padding:12px 16px 16px;background:linear-gradient(180deg,rgba(12,14,27,.82),#0c0e1b 26%)}
.ns-hook{display:block;font-size:13.5px;line-height:1.3;font-weight:600;color:rgb(var(--c))}
.ns-ttl{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font-size:15px;line-height:1.38;color:var(--ink-2)}
.ns-ttl.ns-head{font-family:var(--display);font-size:22px;line-height:1.2;color:var(--ink-1)}
.ns-quote{font-family:var(--display);font-size:20px;line-height:1.28;color:var(--ink-1);-webkit-line-clamp:4}
.ns-quote::before{content:"“";color:rgb(var(--c))}
.ns-quote::after{content:"”";color:rgb(var(--c))}
/* a memory, like a photo: its own sky full-bleed, the date stamped on it */
.ns-photo{background:radial-gradient(60% 75% at var(--x1,40%) var(--y1,40%),rgba(var(--c),.85),rgba(var(--c),0) 72%),radial-gradient(55% 60% at var(--x2,70%) 90%,rgba(92,225,255,.45),rgba(92,225,255,0) 70%),radial-gradient(40% 40% at 85% 15%,rgba(245,198,107,.3),rgba(245,198,107,0) 70%),linear-gradient(160deg,#241a44,#0a0c17)}
.ns-stamp{position:absolute;inset-inline-start:16px;bottom:12px;font-family:var(--display);font-weight:400;font-size:30px;line-height:1;color:var(--pearl);text-shadow:0 2px 16px rgba(0,0,0,.6)}
/* a "Did you know?" tip */
.ns-t-tip .ns-topen{padding-top:18px}
.ns-tglyph{display:grid;place-items:center;width:58px;height:58px;margin:0 16px auto;border-radius:18px;color:rgb(var(--c));background:radial-gradient(circle at 50% 40%,rgba(var(--c),.35),rgba(var(--c),.08));box-shadow:0 0 40px -4px rgba(var(--c),.7),inset 0 0 0 1px rgba(var(--c),.35)}
.ns-tglyph svg{width:30px;height:30px}
.ns-t-tip .ns-tpanel{background:none}
.ns-t-tip .ns-ttl{font-family:var(--display);font-size:21px;line-height:1.22;color:var(--ink-1)}
.ns-tbody{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:14px;line-height:1.4;color:var(--ink-2)}
.ns-tacts{display:flex;align-items:center;gap:4px;padding:0 8px 14px 16px}
.ns-tchip{flex:none;min-height:44px;padding:0 18px;border-radius:999px;color:#1a1306;background:rgb(245,198,107);border:0;font-weight:600;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.ns-tchip:active{transform:scale(.97)}
.ns-tmore{min-width:0;min-height:44px;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2);background:none;border:0;font-size:13.5px;text-decoration:underline;text-underline-offset:3px}
.ns-allf{display:block;margin:10px auto 0;min-height:44px}
/* a quick win: a ring that fills as she ticks, and the to-dos as chips */
.ns-tq{display:flex;align-items:center;gap:14px;padding:18px 16px 0}
.ns-tqring{position:relative;flex:none;width:92px;height:92px}
.ns-t-todo .ns-topen{flex:none}
.ns-t-todo .ns-ttl{font-family:var(--display);font-size:22px;line-height:1.2;color:var(--ink-1)}
.ns-tqring svg{width:100%;height:100%;overflow:visible}
.ns-tqn{position:absolute;inset:0;display:grid;place-items:center;font-size:18px;font-weight:600;color:var(--ink-1)}
.ns-tqw{display:flex;flex-direction:column;gap:2px;min-width:0}
.ns-tqpts{direction:ltr;unicode-bidi:isolate;font-family:var(--display);font-size:34px;line-height:1;color:rgb(245,198,107);text-shadow:0 0 20px rgba(245,198,107,.45)}
.ns-t-todo .ns-tpanel{background:none;padding-bottom:6px}
.ns-tchips{display:flex;flex-direction:column;justify-content:flex-end;gap:8px;flex:1;padding:0 12px 14px}
.ns-todochip{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 12px;border-radius:14px;text-align:start;color:var(--ink-1);background:rgba(246,239,230,.06);border:1px solid rgba(245,198,107,.28);font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),background .2s,border-color .2s}
.ns-todochip:active{transform:scale(.98)}
.ns-tcc{flex:none;width:20px;height:20px;border-radius:50%;border:1.6px solid rgba(245,198,107,.8)}
.ns-tcn{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ns-tcp{flex:none;direction:ltr;unicode-bidi:isolate;font-size:13px;font-weight:600;color:rgb(245,198,107)}
.ns-todochip.done{background:rgba(111,242,196,.1);border-color:rgba(111,242,196,.45)}
.ns-todochip.done .ns-tcc{border-color:rgb(111,242,196);background:rgb(111,242,196) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.5l3 3 6-7' fill='none' stroke='%230b0d18' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat}
.ns-todochip.done .ns-tcn{color:var(--ink-2);text-decoration:line-through}
.ns-rdots{display:flex;justify-content:center;gap:7px}
.ns-rdots i{width:5px;height:5px;border-radius:50%;background:rgba(246,239,230,.24);transition:transform .2s cubic-bezier(.23,1,.32,1),background .2s}
.ns-rdots i.on{background:var(--pearl);transform:scale(1.4)}
.ns-rnav{display:none}
@media (hover:hover) and (pointer:fine){
  .ns-rnav{position:absolute;top:50%;z-index:2;display:grid;place-items:center;width:40px;height:40px;margin-top:-20px;border-radius:50%;color:var(--ink-1);background:var(--h-10121f,#10121f);border:1px solid var(--card-rim);box-shadow:0 8px 20px -8px rgba(0,0,0,.8);transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .2s}
  .ns-rnav svg{width:18px;height:18px}
  .ns-rnav:active{transform:scale(.94)}
  .ns-rnav.off{opacity:0;pointer-events:none}
  .ns-rnav.prev{inset-inline-start:-12px}
  .ns-rnav.next{inset-inline-end:-12px}
  [dir=rtl] .ns-rnav svg{transform:scaleX(-1)}
  .ns-rdots{display:none}
  .ns-todochip:hover{background:rgba(246,239,230,.1)}
}
@keyframes ns-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.ns-step.done .ns-stepok svg{animation:none}.ns-tile{animation-name:ns-fade}.ns-tile,.ns-rdots i,.ns-playall,.ns-tchip,.ns-rnav,.ns-todochip{transition:opacity .2s}}
.ns-why .ns-ainote{margin:10px 0 0}
/* ==== end NOVA Stories ==== */
/* ==== Life section pattern "Halo" (Nov 1 2026; Katie chose direction A; public/js/halo.js, halo-charts.js, halo-wellness.js;
   DESIGN.md "Life section pattern (Halo)"). The section ring is the hero, with its word and NOVA's one line; four tiles
   picked for her; each tile opens its own page. Every card is the one card surface (--card-fill, rim, lit edge, drop):
   the glass she likes, readable on its own without blur. Tones carry meaning: ok cyan (met), warn gold (not met),
   bad rose (trouble), done mint, mem violet, none a quiet gap. Data arriving is the motion, once per screen per
   session (.hc-intro / .hc-in): the ring fills, tiles rise 50ms apart, bars grow and lines sweep, each under 600ms,
   transform, opacity and stroke-dashoffset only; nothing moves under reduced motion. Kept in one block. ==== */
.halo{--h-gap:12px;container:halo/inline-size;color:var(--ink-1);margin:0 0 18px}
.halo .hc-ok{--tone:var(--ice)}.halo .hc-warn{--tone:var(--gold)}.halo .hc-bad{--tone:var(--rose)}.halo .hc-done{--tone:var(--mint)}.halo .hc-mem{--tone:var(--violet)}
.halo .hc-none{--tone:rgba(246,239,230,.32)}.halo .hc-gold{--tone:var(--gold)}
.halo :is(.halo-glance,.halo-tile,.halo-card,.halo-nudge,.halo-empty,.halo-metrics,.halo-sec){background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(var(--c,170,230,212),.07),rgba(var(--c,170,230,212),0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
html.simple .halo :is(.halo-glance,.halo-tile,.halo-card,.halo-nudge,.halo-empty,.halo-metrics,.halo-sec){background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
.halo button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
.halo button:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.halo-home{display:grid;gap:var(--h-gap);grid-template-columns:minmax(0,1fr)}
.halo-glance{display:grid;justify-items:center;text-align:center;gap:10px;padding:22px 18px 20px}
.halo-ring{position:relative;display:grid;place-items:center;color:var(--tone,rgba(246,239,230,.3))}
.halo-ring svg{display:block;width:min(184px,52vw);height:auto}
.hc-ring .hc-trk{fill:none;stroke:rgba(246,239,230,.08)}
.hc-ring .hc-arc{fill:none;stroke:currentColor;stroke-linecap:round;filter:drop-shadow(0 0 7px color-mix(in srgb,currentColor 45%,transparent))}
.halo-ring-in{position:absolute;inset:0;display:grid;place-content:center;gap:2px}
.halo-ring-n{font:300 46px/1 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--ink-1)}
.halo-ring-l{font-size:12.5px;color:var(--ink-3)}
.halo-word{font:600 19px/1.2 var(--sans);color:var(--tone,var(--ink-2))}
.halo-voice{margin:0;max-width:34ch;font:italic 400 17px/1.45 var(--display);color:var(--ink-1);text-wrap:pretty}
html[lang=ar] .halo-voice{font-style:normal;font-family:var(--sans);font-size:16px}
.halo-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.halo-chip{font:600 12.5px var(--sans);padding:6px 11px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(246,239,230,.04);color:var(--tone,var(--ink-2))}
.halo-chip.hc-gold{border-color:rgba(245,198,107,.32)}
.halo-side{display:grid;gap:var(--h-gap);align-content:start;min-width:0}
.halo-why{margin:4px 4px 0;font-size:13px;color:var(--ink-3)}
.halo-tiles{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.halo-tile{display:grid;align-content:start;gap:4px;min-width:0;text-align:start;padding:14px;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease}
button.halo-tile:hover{border-color:var(--card-rim-hi,rgba(246,239,230,.16))}
button.halo-tile:active{transform:scale(.97)}
.halo-tn{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font:600 13.5px var(--sans);color:var(--ink-1)}
.halo-tn>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.halo-tw{font:600 12.5px var(--sans);color:var(--tone,var(--ink-2));white-space:nowrap}
.halo-tv{font:300 25px/1.15 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.halo-ts{font-size:12.5px;line-height:1.35;color:var(--ink-2)}
.halo-tc{display:block;margin-top:6px}
.halo-tc svg{display:block;width:100%;height:34px}
.halo-src{font-size:11.5px;color:var(--ink-3)}
.halo-tile.is-empty{cursor:default;border-style:dashed;background:rgba(15,16,22,.55);box-shadow:none}
.halo-te{margin:2px 0 8px;font-size:13px;line-height:1.4;color:var(--ink-2)}
.halo-btn{justify-self:start;border:0;border-radius:999px;padding:9px 14px;background:var(--gold);color:#1a1405!important;font:600 13px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.halo-btn.ghost{background:rgba(246,239,230,.06);color:var(--ink-1)!important;border:1px solid var(--sf-edge-2)}
.halo-btn:active{transform:scale(.96)}
.halo-empty{padding:18px;display:grid;gap:8px}.halo-empty h3{margin:0;font:500 20px var(--display)}.halo-empty p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.45}
.halo-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.halo-nudge{display:flex;align-items:center;gap:12px;padding:12px 14px}
.halo-chk{flex:none;width:30px;height:30px;border-radius:50%;border:1.5px solid var(--ink-3);background:none;cursor:pointer;display:grid;place-items:center;transition:background-color .18s ease,border-color .18s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.halo-chk:active{transform:scale(.92)}
.halo-nudge.is-done .halo-chk{background:var(--mint);border-color:var(--mint)}
.halo-nudge.is-done .halo-chk::after{content:"";width:6px;height:11px;border:solid #06261b;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.halo-nt{flex:1;min-width:0;display:grid;gap:1px}.halo-ntt{font-size:14.5px}.halo-nts{font-size:12.5px;color:var(--ink-3)}
.halo-nudge.is-done .halo-ntt{color:var(--ink-3);text-decoration:line-through}
.halo-pts{font:700 13px var(--sans);color:var(--gold)}
.halo-plus{position:fixed;left:0;top:0;z-index:90;font:800 18px var(--sans);color:var(--gold);pointer-events:none;text-shadow:0 0 14px rgba(245,198,107,.7)}
/* a tile's page */
.halo-detail{display:grid;gap:var(--h-gap);grid-template-columns:minmax(0,1fr)}
.halo-dhead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px}
.halo-back{display:inline-flex;align-items:center;gap:8px;border:0;background:none;color:var(--ink-2);font:600 14px var(--sans);padding:8px 2px;cursor:pointer}
.halo-back::before{content:"";width:8px;height:8px;border:solid currentColor;border-width:0 0 2px 2px;transform:rotate(45deg)}
html[dir=rtl] .halo-back::before{transform:rotate(-135deg)}
.halo-col{display:grid;gap:var(--h-gap);align-content:start;min-width:0}
.halo-card{padding:14px;display:grid;gap:14px;min-width:0}
.halo-scrub{display:flex;align-items:center;gap:4px;min-width:0}
.halo-arr{flex:none;width:34px;height:34px;border-radius:50%;border:0;background:rgba(246,239,230,.06);cursor:pointer;display:grid;place-items:center}
.halo-arr::before{content:"";width:7px;height:7px;border:solid var(--ink-2);border-width:0 0 2px 2px;transform:translateX(1px) rotate(45deg)}
.halo-arr.next::before{transform:translateX(-1px) rotate(-135deg)}
html[dir=rtl] .halo-arr.prev::before{transform:translateX(-1px) rotate(-135deg)}html[dir=rtl] .halo-arr.next::before{transform:translateX(1px) rotate(45deg)}
.halo-arr:disabled{opacity:.35;cursor:default}
.halo-days{flex:1;min-width:0;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}
.halo-days::-webkit-scrollbar{display:none}
.halo-day{flex:1 0 40px;scroll-snap-align:center;border:0;background:none;cursor:pointer;display:grid;justify-items:center;gap:2px;padding:3px 0;color:var(--ink-3);font-size:11px}
.halo-cr{height:13px;line-height:13px;font-size:11px;color:var(--gold)}
.halo-dn{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:600 13px var(--sans);color:var(--ink-2);transition:background-color .15s ease,color .15s ease}
.halo-day[aria-pressed="true"] .halo-dn{background:var(--ink-1);color:#0f1016}
.halo-dot{width:5px;height:5px;border-radius:50%;background:var(--tone)}
.halo-dot.hc-none{background:none;box-shadow:inset 0 0 0 1px rgba(246,239,230,.3)}
.halo-big{display:grid;gap:4px}
.halo-kick{font-size:12.5px;color:var(--ink-3)}
.halo-bigv{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.halo-bign{font:300 40px/1.05 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.halo-bigv .halo-tw{font-size:15px}
.halo-story{margin:2px 0 0;font:italic 400 16px/1.45 var(--display);text-wrap:pretty}
html[lang=ar] .halo-story{font-style:normal;font-family:var(--sans);font-size:15px}
.halo-toggle{display:flex;gap:2px;padding:3px;border-radius:999px;background:rgba(246,239,230,.05)}
.halo-toggle button{flex:1;border:0;background:none;color:var(--ink-2);font:600 13px var(--sans);padding:8px 10px;border-radius:999px;cursor:pointer;transition:background-color .15s ease,color .15s ease}
.halo-toggle button[aria-pressed="true"]{background:var(--ink-1);color:#0f1016}
.halo-chart{display:grid;gap:10px}
.hc-day{display:block;width:100%;height:auto;max-height:260px;overflow:visible}
.hc-day text{font:500 10.5px var(--sans);fill:var(--ink-3)}
.hc .hc-bar,.hc .hc-pt,.hc-zbar i,.hc-legend i,.hc-c b{fill:var(--tone);background:var(--tone)}
.hc-day .hc-bar{opacity:.5;transition:opacity .15s ease}.hc-day .hc-bar.on{opacity:1}
.hc .hc-gap{fill:none;stroke:rgba(246,239,230,.24);stroke-dasharray:2 3}
.hc-mini .hc-gap{fill:rgba(246,239,230,.12);stroke:none}
.hc .hc-line{fill:none;stroke:var(--tone,var(--ice));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.hc-spark .hc-line{stroke-width:1.6;vector-effect:non-scaling-stroke}.hc-spark .hc-dot{fill:var(--tone)}
.hc-day .hc-line{stroke:rgba(246,239,230,.55)}
.hc-pt.on{stroke:#0f1016;stroke-width:2}
.hc-base{stroke:rgba(246,239,230,.1)}.hc-ref{stroke:rgba(246,239,230,.22);stroke-dasharray:3 4}
.hc-band{fill:var(--tone);opacity:.07}
.hc-stem{stroke:var(--tone);stroke-width:1.2;opacity:.7}
.hc-call{fill:#1b1e2a;stroke:var(--tone);stroke-opacity:.55}
.hc-day .hc-callt{fill:var(--ink-1);font-weight:600;font-size:11.5px}
.hc-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--ink-2)}
.hc-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-inline-end:6px;vertical-align:1px}
.hc-legend i.gap{background:none;border:1px dashed var(--ink-3)}
.halo-metrics{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);overflow:hidden}
.halo-metrics>div{padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--sf-edge)}
.halo-metrics>div:nth-child(-n+2){border-top:0}.halo-metrics>div:nth-child(odd):not(.wide){border-inline-end:1px solid var(--sf-edge)}
.halo-metrics>div.wide{grid-column:1/-1}
.halo-metrics>div>span:first-child{display:grid;gap:2px}
.halo-ml{font-size:12px;color:var(--ink-3)}.halo-mv{font:400 19px/1.2 var(--sans);font-variant-numeric:tabular-nums}
.halo-sec{padding:14px 16px;display:grid;gap:12px}
.halo-sec h3{margin:0;font:600 15px var(--sans);letter-spacing:-.005em}
.hc-contrib{display:grid;gap:12px}
.hc-c{display:grid;grid-template-columns:1fr auto;gap:5px 10px;font-size:13.5px}
.hc-cw{font:600 12.5px var(--sans);color:var(--tone)}
.hc-c>i{grid-column:1/-1;height:5px;border-radius:3px;background:rgba(246,239,230,.07);overflow:hidden}
.hc-c b{display:block;height:100%;border-radius:3px;transform-origin:var(--hc-start,left);transform:scaleX(var(--p))}
html[dir=rtl] .hc-c b{--hc-start:right}
.hc-zones{display:grid;gap:10px}.hc-zbar{display:flex;gap:3px;height:12px;border-radius:6px;overflow:hidden}.hc-zbar i{display:block;min-width:4px}
.hc-zkey{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--ink-2)}.hc-zkey i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-inline-end:6px}.hc-zkey b{color:var(--ink-1);font-weight:600}
.halo-rows{display:grid}
.halo-row{border-top:1px solid var(--sf-edge)}.halo-row:first-child{border-top:0}
.halo-rowh{width:100%;display:flex;align-items:center;gap:10px;border:0;background:none;text-align:start;padding:13px 2px;cursor:pointer}
div.halo-rowh{cursor:default}
.halo-rl{flex:1;min-width:0;font-size:14px}.halo-rv{font:600 13.5px var(--sans);font-variant-numeric:tabular-nums}.halo-rv.dim{color:var(--ink-3);font-weight:500}
button.halo-rowh::after{content:"";width:7px;height:7px;border:solid var(--ink-3);border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1);margin-inline-start:4px}
.halo-row.open button.halo-rowh::after{transform:rotate(-135deg)}
.halo-more{margin:0;padding:0 2px 14px;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.halo-learn{display:flex;align-items:center;gap:10px;padding:0 2px 12px;font-size:13px;color:var(--ink-3)}
.halo-pips{display:flex;gap:4px}.halo-pips i{width:14px;height:6px;border-radius:3px;background:rgba(246,239,230,.1)}.halo-pips i.on{background:var(--violet)}
.halo-none{gap:6px}.halo-none h3{margin:0;font:600 15px var(--sans)}.halo-none p{margin:0;color:var(--ink-2);font-size:13.5px;line-height:1.45}
.halo-ask{justify-self:start;display:inline-flex;align-items:center;gap:9px;border-radius:999px;padding:11px 17px;background:rgba(15,16,22,.7);border:1px solid rgba(92,225,255,.3);font:600 14px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.halo-ask:active{transform:scale(.97)}
.halo-ask i{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#c4f3ff,#2b8fd6);box-shadow:0 0 10px rgba(92,225,255,.5)}
/* waiting for the numbers: the frame, at once */
.halo-sk{height:14px;border-radius:7px;background:rgba(246,239,230,.07)}.halo-sk.w1{width:96px;height:18px}.halo-sk.w2{width:min(280px,80%)}
.halo-sk-tile{min-height:132px;cursor:default}
.halo.is-wait .halo-sk,.halo.is-wait .halo-sk-tile{animation:hcWait 1.4s ease-in-out infinite alternate}
@keyframes hcWait{from{opacity:.55}to{opacity:1}}
/* data arriving is the motion, once per screen per session */
.hc-intro .hc-arc{animation:hcRing .6s cubic-bezier(.23,1,.32,1) both}
@keyframes hcRing{from{stroke-dashoffset:var(--c)}}
.hc-intro .halo-tile,.hc-intro .halo-nudge{animation:hcRise .42s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--t,0) * 50ms + 80ms)}
@keyframes hcRise{from{opacity:0;transform:translateY(8px)}}
.hc-in .hc-bar{transform-box:fill-box;transform-origin:50% 100%;animation:hcBar .38s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--t,0) * 50ms + var(--k,0) * 12ms + 120ms)}
@keyframes hcBar{from{opacity:0;transform:scaleY(.3)}}
/* (the dash only lives while the line sweeps in: a sparkline's non-scaling stroke measures its length differently, so a
   dash left on afterwards cut the line short before its last point) */
.hc-in .hc-sweep{animation:hcSweep .55s cubic-bezier(.23,1,.32,1) backwards;animation-delay:calc(var(--t,0) * 50ms + 120ms)}
@keyframes hcSweep{from{stroke-dasharray:1;stroke-dashoffset:1}to{stroke-dasharray:1;stroke-dashoffset:0}}
.hc-in .hc-dot,.hc-in .hc-pt,.hc-in .hc-call,.hc-in .hc-callt,.hc-in .hc-stem{animation:hcFade .3s ease-out both;animation-delay:calc(var(--t,0) * 50ms + 360ms)}
@keyframes hcFade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.halo *,.halo-plus{animation:none!important;transition:none!important}}
/* wide: the ring stays beside the tiles; a tile's page puts its chart beside its numbers */
@container halo (min-width:820px){
  .halo-home{grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:18px;align-items:start}
  .halo-glance{position:sticky;top:84px;padding:28px 22px}
  .halo-tiles{gap:14px}.halo-tile{padding:18px}.halo-tv{font-size:30px}
  .halo-detail{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}
  .halo-dhead{grid-column:1/-1}
  .halo-card{padding:18px}
}
/* Finance, Career, Business and Relationships (Nov 1 2026, batch 2): the one way down to the section's own picture
   (the money map, the week ahead, the pipeline river, her circle), a row that asks NOVA for help (a person to write
   back to), and a page for something only known as it is now (no days to scrub) */
.halo-jump{display:inline-flex;align-items:center;gap:8px;margin-top:2px;border:1px solid var(--sf-edge-2);border-radius:999px;background:rgba(246,239,230,.04);padding:8px 14px;font:600 13px var(--sans);color:var(--ink-2);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease,color .15s ease}
.halo-jump::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:translateY(-2px) rotate(45deg)}
.halo-jump:hover{color:var(--ink-1);border-color:var(--card-rim-hi,rgba(246,239,230,.16))}
.halo-jump:active{transform:scale(.97)}
button.halo-rowh.is-ask::after{transform:rotate(-45deg)}
html[dir=rtl] button.halo-rowh.is-ask::after{transform:rotate(135deg)}
.halo-rowh .halo-rv:empty{display:none}
.halo-detail.is-now .halo-card{gap:10px}
.halo-chart:empty{display:none}
.halo-detail.is-now .hc-faces{padding-inline-start:8px}.halo-detail.is-now .hc-faces i{width:40px;height:40px;font-size:13px;margin-inline-start:-8px}
/* a tile's word drops under its name rather than running out of the tile (Spanish and Arabic words run longer) */
.halo-tn{flex-wrap:wrap;row-gap:1px}
.halo .halo-tw.hc-none,.halo .halo-word.hc-none{color:var(--ink-3)}
.halo-rowh.is-ask .halo-rv{font-weight:500;color:var(--ink-2)}
.hc-faces{display:flex;padding-inline-start:6px;margin-top:4px}
.hc-faces i{width:32px;height:32px;margin-inline-start:-6px;border-radius:50%;display:grid;place-items:center;font:600 11px var(--sans);font-style:normal;letter-spacing:.02em;color:var(--ink-1);background:color-mix(in srgb,var(--tone) 22%,#151824);box-shadow:0 0 0 2px #10121a,inset 0 0 0 1px color-mix(in srgb,var(--tone) 45%,transparent)}
.hc-faces i.more{background:#1a1d28;color:var(--ink-2);box-shadow:0 0 0 2px #10121a,inset 0 0 0 1px var(--sf-edge-2)}
.hc-intro .hc-faces i{animation:hcRise .36s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--t,0) * 50ms + 140ms)}
/* ---- Halo batch 3 (Together, Places & travel, Dreams & goals, Home, Right now, Faith, Astrology, Markets): the same
   page, with what the lighter ones add. A tile with no page of its own takes her to the part of the section that holds
   it (or just shows its number); the next step that isn't a tick is one tap (ask NOVA, open a page) and promises no
   points; Faith's ring holds a time, not a score, in moonlight; small moon and compass marks; months in the scrubber. */
.halo .halo-tile.is-still{cursor:default}
.halo button.halo-nudge.is-go{width:100%;text-align:start;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.halo button.halo-nudge.is-go:hover{border-color:var(--card-rim-hi,rgba(246,239,230,.16))}
.halo button.halo-nudge.is-go:active{transform:scale(.98)}
.halo .halo-go{flex:none;width:30px;height:30px;border-radius:50%;background:rgba(92,225,255,.1);border:1px solid rgba(92,225,255,.28);display:grid;place-items:center}
.halo .halo-go::before{content:"";width:7px;height:7px;border:solid var(--ice);border-width:2px 2px 0 0;transform:translateX(-1px) rotate(45deg)}
html[dir=rtl] .halo .halo-go::before{transform:translateX(1px) rotate(-135deg)}
.halo .halo-ring-n.is-text{font-size:30px;letter-spacing:-.01em}
.halo.h-faith .halo-ring.hc-ok,.halo.h-faith .halo-word.hc-ok{--tone:rgb(204,232,250)}
.halo .halo-tc :is(.hc-moon,.hc-compass){width:34px;height:34px}
.halo .hc-moon-d{fill:rgba(246,239,230,.08);stroke:rgba(246,239,230,.14)}.halo .hc-moon-l{fill:rgba(220,236,250,.92)}
.halo .hc-cmp-r{fill:none;stroke:rgba(246,239,230,.2)}.halo .hc-cmp-n{font:700 7px var(--sans);fill:var(--ink-3)}.halo .hc-cmp-a{fill:var(--gold)}
/* (their names and words run longer, and in Spanish and Arabic more so: the word drops under the name rather than spill) */
.halo:is(.h-together,.h-places,.h-dreams,.h-household,.h-now,.h-faith,.h-astrology,.h-markets) .halo-tn>span:first-child{white-space:normal}
.halo .hc-meters{height:auto!important;max-height:34px}.halo .hc-mtrk{fill:rgba(246,239,230,.07)}
.halo.h-places .halo-day{flex-basis:48px}
.halo.h-places .halo-dn{width:auto;min-width:36px;padding:0 7px;border-radius:15px;font-size:12px}
.halo.h-places .halo-dw{min-height:13px}
/* one page in chapters (the shared approach "Halo pages as one story", the same look as Finance, Career, Business and
   Relationships): the Halo, then the section's own picture under its name with no frame (its top opens out of the
   sky), then "Everything in <section>", every card she had on the Halo's glass, type and spacing. Batch 3's sections
   carry .is-halo3 (public/js/dash.js chapters3), so other pages keep their look. */
#life .is-halo3 .halo-chap{display:flex;align-items:center;gap:12px;margin:30px 4px 12px;font:600 16px/1.3 var(--sans);letter-spacing:-.005em;color:var(--ink-1)}
#life .is-halo3 .halo-chap::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(246,239,230,.16),rgba(246,239,230,0))}
html[dir=rtl] #life .is-halo3 .halo-chap::after{background:linear-gradient(270deg,rgba(246,239,230,.16),rgba(246,239,230,0))}
#life .world-places>.halo-chap{display:flex;align-items:center;gap:12px;margin:26px 4px 12px;font:600 16px/1.3 var(--sans);color:var(--ink-1)}
#life .world-places>.halo-chap::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(246,239,230,.16),rgba(246,239,230,0))}
#life .is-halo3>.sc-hero,#life .is-halo3 .fa-hero{border-color:transparent;box-shadow:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 56px);mask-image:linear-gradient(180deg,transparent 0,#000 56px)}
#life .dash.is-halo3>.tiles{gap:12px}
#life .dash.is-halo3 .tiles .tile:not(.k-caption){background:radial-gradient(120% 90% at 0% 0%,rgba(170,230,212,.05),rgba(170,230,212,0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius);padding:16px}
#life .dash.is-halo3 .tiles .tile.gl-focus{border-color:rgba(245,198,107,.34)}
html.simple #life .dash.is-halo3 .tiles .tile:not(.k-caption){background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
#life .dash.is-halo3 .tiles .tl-h h4{font:600 15px/1.3 var(--sans);letter-spacing:-.005em;color:var(--ink-1);text-transform:none}
#life .is-halo3 .halo-flash{position:relative}
#life .is-halo3 .halo-flash::before{content:"";position:absolute;inset:-1px;border-radius:inherit;border:1px solid rgba(92,225,255,.6);pointer-events:none;opacity:0;animation:hc3Flash 1.4s ease-out}
@keyframes hc3Flash{15%,40%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){#life .is-halo3 .halo-flash::before{animation:none}}
@media (min-width:900px){#life .is-halo3 .halo-chap,#life .world-places>.halo-chap{margin-top:40px;font-size:18px}#life .dash.is-halo3 .tiles .tile:not(.k-caption){padding:18px}}
/* calm by default (Nov 1, Katie: "way too many things by default"): the way to the rest of a page's parts, and ✎ ›
   Add to this page for the pages that draw themselves (public/js/halo-library.js). The sheet rises from the bottom on a
   phone and sits centred on a wide screen; each part has a switch and a place; Done (gold) keeps it. */
.halo-full{justify-self:start;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--sf-edge-2);border-radius:999px;background:rgba(246,239,230,.04);padding:10px 16px;min-height:44px;font:600 13.5px var(--sans);color:var(--ink-2);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),color .15s ease}
.halo-full::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:translateY(-2px) rotate(45deg)}
.halo-full:hover{color:var(--ink-1)}.halo-full:active{transform:scale(.97)}
#life .is-halo3 .halo-more-cards,#life [data-lib] .halo-more-cards{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;margin:14px 0 6px;border:1px dashed var(--sf-edge-2);border-radius:var(--card-radius);background:none;color:var(--ink-2);font:600 14px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),color .15s ease}
#life .is-halo3 .halo-more-cards::before,#life [data-lib] .halo-more-cards::before{content:"+";font:400 18px/1 var(--sans);color:var(--ink-3)}
#life .is-halo3 .halo-more-cards:hover,#life [data-lib] .halo-more-cards:hover{color:var(--ink-1)}
#life .is-halo3 .halo-more-cards:active,#life [data-lib] .halo-more-cards:active{transform:scale(.98)}
/* Places starts calm: its long lists show the first few, "Show N more" opens the rest in place (public/js/atlas.js foldRest) */
.atlas .at-next-b>[hidden],.atlas .at-trips>[hidden],.atlas .at-rows>[hidden]{display:none!important}
.atlas .at-more{display:block;width:100%;min-height:44px;margin:8px 0 2px;border-radius:12px;border:1px solid var(--sf-edge-2,rgba(255,255,255,.1));background:transparent;color:var(--ink-1);font:500 14px/1.2 var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .16s ease-out}
.atlas .at-more:hover{background:rgba(255,255,255,.04)}
.atlas .at-more:active{transform:scale(.98)}
/* the Workspace card on a page that draws itself: one full-width card on the Halo's glass at the end of the page */
#life .ws3{margin:18px 0 6px}
#life .ws3:empty{display:none}
#life .ws3>.tiles{grid-template-columns:minmax(0,1fr);margin:0}
#life .ws3 .tile{grid-column:1/-1;min-width:0;background:radial-gradient(120% 90% at 0% 0%,rgba(170,230,212,.05),rgba(170,230,212,0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius);padding:16px}
html.simple #life .ws3 .tile{background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
#life .ws3 .tl-h h4{font:600 15px/1.3 var(--sans);letter-spacing:-.005em;color:var(--ink-1);text-transform:none}
.hl-lib-back{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;background:rgba(3,4,10,.62);animation:hlLibFade .2s ease-out both}
.hl-lib-back.out{opacity:0;transition:opacity .16s ease-out}
.hl-lib{position:relative;width:100%;max-height:min(86vh,720px);overflow:auto;padding:22px 16px calc(18px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;background:#11131b;border:1px solid var(--sf-edge-2);border-bottom:0;box-shadow:0 -18px 60px rgba(0,0,0,.5);animation:hlLibUp .26s cubic-bezier(.23,1,.32,1) both}
.hl-lib-h{margin:0 48px 6px 4px;font:600 19px/1.3 var(--sans);color:var(--ink-1)}
.hl-lib-sub{margin:0 4px 14px;font:400 14px/1.45 var(--sans);color:var(--ink-2)}
.hl-lib-x{position:absolute;top:12px;inset-inline-end:10px;width:44px;height:44px;border-radius:12px;font-size:22px;color:var(--ink-3)}
.hl-lib-x:hover{color:var(--ink-1)}
.hl-lib-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.hl-lib-row{display:flex;align-items:center;gap:4px;min-height:56px;padding:6px 8px 6px 14px;border-radius:14px;background:var(--card-fill,#161821);border:1px solid var(--sf-edge)}
html[dir=rtl] .hl-lib-row{padding:6px 14px 6px 8px}
.hl-lib-name{flex:1;min-width:0;display:grid;gap:2px;font:600 15px/1.3 var(--sans);color:var(--ink-1)}
.hl-lib-name small{font:400 12.5px/1.3 var(--sans);color:var(--ink-3)}
.hl-lib-mv{flex:none;display:grid;place-items:center;width:40px;height:44px;border-radius:10px;color:var(--ink-3);transition:color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.hl-lib-mv .arr-ic{width:18px;height:18px}
.hl-lib-mv:hover:not(:disabled){color:var(--ink-1)}.hl-lib-mv:active:not(:disabled){transform:scale(.92)}
.hl-lib-mv:disabled{opacity:.25}
.hl-lib-sw{flex:none;position:relative;width:52px;height:44px;margin-inline-start:4px}
.hl-lib-sw i{position:absolute;inset:11px 4px;border-radius:999px;background:rgba(246,239,230,.14);transition:background-color .18s ease}
.hl-lib-sw i::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:16px;height:16px;border-radius:50%;background:var(--ink-1);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.hl-lib-sw.on i{background:var(--gold)}
.hl-lib-sw.on i::after{transform:translateX(22px);background:#1d1408}
html[dir=rtl] .hl-lib-sw.on i::after{transform:translateX(-22px)}
.hl-lib-sw:active i::after{transform:scale(.9)}.hl-lib-sw.on:active i::after{transform:translateX(22px) scale(.9)}
.hl-lib-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px}
.hl-lib-reset{min-height:44px;padding:0 14px;border-radius:999px;font:600 14px var(--sans);color:var(--ink-2)}
.hl-lib-reset:hover{color:var(--ink-1)}
.hl-lib-done{min-height:48px;padding:0 28px;border-radius:999px;background:var(--gold);color:#1d1408;font:600 16px var(--sans);transition:transform .16s cubic-bezier(.23,1,.32,1)}
.hl-lib-done:active{transform:scale(.97)}
.hl-lib :focus-visible{outline:2px solid var(--ice);outline-offset:2px}
@keyframes hlLibFade{from{opacity:0}}
@keyframes hlLibUp{from{transform:translateY(24px);opacity:0}}
@media (min-width:760px){.hl-lib-back{align-items:center}.hl-lib{width:min(520px,calc(100vw - 32px));padding:26px 22px 22px;border-radius:22px;border-bottom:1px solid var(--sf-edge-2)}}
html.simple .hl-lib{background:var(--sf-1);box-shadow:none}
@media (prefers-reduced-motion:reduce){.hl-lib-back,.hl-lib{animation:none}.hl-lib-sw i::after{transition:none}}
/* ==== end of Life section pattern "Halo" ==== */
/* ==== Halo pages as one story, in chapters (Nov 1 2026; Katie: "I like the Halo design, it's clean ... feel
   seamless/connected"; direction A in the halo-below directions). A Halo section reads top to bottom as one page: the
   Halo (how it's going), then the section's own picture as the next chapter (no box: it opens out of the sky), then
   "Everything in <section>": every card she had, on the Halo's glass, type and spacing. Headings are plain words in
   sentence case; cards rise in once a visit (transform/opacity, under 450ms, 40ms apart); nothing moves under reduced
   motion. Scoped to .dash.is-halo so other pages keep their look. Kept in one block. ==== */
#life .dash.is-halo .halo-chap{display:flex;align-items:center;gap:12px;margin:30px 4px 12px;font:600 16px/1.3 var(--sans);letter-spacing:-.005em;color:var(--ink-1)}
#life .dash.is-halo .halo-chap::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(246,239,230,.16),rgba(246,239,230,0))}
html[dir=rtl] #life .dash.is-halo .halo-chap::after{background:linear-gradient(270deg,rgba(246,239,230,.16),rgba(246,239,230,0))}
#life .dash.is-halo .halo-slot+.halo-chap,#life .dash.is-halo>.halo+.halo-chap{margin-top:22px}
/* the picture: the same space as the page around it, no frame; its top opens out of the sky */
#life .dash.is-halo>.sc-hero{border-color:transparent;box-shadow:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 56px);mask-image:linear-gradient(180deg,transparent 0,#000 56px)}
/* every card: the Halo's one card surface, its radius and its rhythm */
#life .dash.is-halo>.tiles{gap:12px}
#life .dash.is-halo .tiles .tile:not(.k-caption){background:radial-gradient(120% 90% at 0% 0%,rgba(170,230,212,.05),rgba(170,230,212,0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius);padding:16px}
#life .dash.is-halo .tiles .tile.gl-focus{border-color:rgba(245,198,107,.34)}
html.simple #life .dash.is-halo .tiles .tile:not(.k-caption){background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
#life .dash.is-halo .tiles .tl-h h4{font:600 15px/1.3 var(--sans);letter-spacing:-.005em;color:var(--ink-1);text-transform:none}
#life .dash.is-halo .tiles .lane-h{font:600 15px/1.3 var(--sans);color:var(--ink-1);text-transform:none;letter-spacing:-.005em}
#life .dash.is-halo .tl-caption{font-size:11.5px;color:var(--ink-3)}
/* a tile's way to the same measure in full, and the card it lands on (a brief light, then calm) */
.halo-full{justify-self:start;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--sf-edge-2);border-radius:999px;background:rgba(246,239,230,.04);padding:10px 16px;min-height:44px;font:600 13.5px var(--sans);color:var(--ink-2);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),color .15s ease}
.halo-full::after{content:"";width:6px;height:6px;border:solid currentColor;border-width:0 1.6px 1.6px 0;transform:translateY(-2px) rotate(45deg)}
.halo-full:hover{color:var(--ink-1)}.halo-full:active{transform:scale(.97)}
#life .dash.is-halo .tiles .tile.halo-flash{position:relative}
#life .dash.is-halo .tiles .tile.halo-flash::before{content:"";position:absolute;inset:-1px;border-radius:inherit;border:1px solid rgba(92,225,255,.6);pointer-events:none;opacity:0;animation:hcFlash 1.4s ease-out}
@keyframes hcFlash{15%,40%{opacity:1}100%{opacity:0}}
/* the cards rise in once a visit, after the Halo has drawn */
#life .dash.is-halo.halo-cards-in .tiles .tile,#life .dash.is-halo.halo-cards-in .lane-g{animation:hcRise .42s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--i,0) * 40ms + 220ms)}
@media (prefers-reduced-motion:reduce){#life .dash.is-halo .tiles .tile,#life .dash.is-halo .lane-g{animation:none!important}}
@media (min-width:900px){#life .dash.is-halo .halo-chap{margin-top:40px;font-size:18px}#life .dash.is-halo .tiles .tile:not(.k-caption){padding:18px}}
/* calm by default: the way to the rest of the section's cards (✎ › Add to this page) */
#life .dash.is-halo .halo-more-cards{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;margin:12px 0 4px;border:1px dashed var(--sf-edge-2);border-radius:var(--card-radius);background:none;color:var(--ink-2);font:600 14px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),color .15s ease}
#life .dash.is-halo .halo-more-cards::before{content:"+";font:400 18px/1 var(--sans);color:var(--ink-3)}
#life .dash.is-halo .halo-more-cards:hover{color:var(--ink-1)}#life .dash.is-halo .halo-more-cards:active{transform:scale(.98)}
/* the section as a workspace (server/workspace.js): what's linked here in quiet groups, one tap to open each, and the
   three ways in (+ Link, New chat here, New project here); 44px targets, no gold fill (gold is for what needs her) */
.tl-ws{display:grid;gap:14px}
.tl-ws .ws-empty{margin:0;color:var(--ink-2);font-size:14px;line-height:1.5;max-width:52ch}
.tl-ws .ws-g,.ws-pick .ws-g{display:grid;gap:2px}
.tl-ws .ws-g h5,.ws-pick .ws-g h5{margin:0 0 4px;font:600 12.5px var(--sans);color:var(--ink-3)}
.ws-row{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px 6px;border:0;border-radius:12px;background:none;color:var(--ink-1);font:500 14px var(--sans);text-align:start;cursor:pointer;transition:background-color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.ws-row:hover{background:rgba(246,239,230,.04)}.ws-row:active{transform:scale(.99)}
.ws-row:disabled{opacity:.5}
.ws-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-s{flex:none;font-size:12.5px;color:var(--ink-3)}.ws-s.ws-add{color:var(--ice);font-weight:600}
.ws-ic{flex:none;width:28px;height:28px;border-radius:9px;background:rgba(246,239,230,.05);box-shadow:inset 0 0 0 1px var(--sf-edge);position:relative}
.ws-ic::after{content:"";position:absolute;inset:9px;border-radius:3px;background:var(--tone,var(--ice));opacity:.85}
.ws-ic-project{--tone:var(--gold)}.ws-ic-chat{--tone:var(--ice)}.ws-ic-chat::after{border-radius:50% 50% 50% 2px}.ws-ic-page{--tone:var(--mint)}.ws-ic-page::after{inset:8px 10px}.ws-ic-agent{--tone:var(--violet)}.ws-ic-agent::after{border-radius:50%}
.ws-acts{display:flex;flex-wrap:wrap;gap:8px}
.ws-act{min-height:44px;padding:10px 16px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(246,239,230,.04);color:var(--ink-1);font:600 13.5px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.ws-act.main{border-color:rgba(92,225,255,.34)}.ws-act:active{transform:scale(.97)}
.ws-pick{margin-top:14px;padding-top:14px;border-top:1px solid var(--sf-edge);display:grid;gap:12px}
.ws-pick-h{margin:0;font:600 14px var(--sans)}
/* ==== end of Halo pages as one story ==== */


/* ==== Right now as the Today view (Nov 1 2026; Katie: "calendar as the default view for the 1-day timeline view plus
   adjustable views, to-dos, 1 or 2 suggestions"; public/js/today.js, the rules in todaymodel.js). The hero right under
   Right now's light Halo: a view switch, today's all-day strip (subscribed calendars folded into one quiet line), the
   day in hours (public/js/daytimeline.js) or as a list / three days, one or two suggestions, and what's due. One card
   surface; cyan for the calendar, gold for what to do; the Now line is the only thing that moves (once a minute). */
.tdy-slot{margin:0 0 18px}
.tdy{position:relative;padding:14px 0 6px;border-radius:var(--card-radius,18px);background:var(--card-fill);border:1px solid var(--card-rim,var(--hair));box-shadow:var(--card-lit),var(--card-drop);color:var(--ink-1)}
.tdy.tdy-wait{min-height:300px}
.tdy-head{display:flex;align-items:center;gap:10px;padding:0 14px 12px}
.tdy-seg{display:flex;flex:1;gap:2px;padding:3px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.05);border:1px solid var(--hair)}
.tdy-sb{flex:1 1 auto;min-width:0;min-height:40px;padding:0 10px;border-radius:999px;font-size:14px;font-weight:500;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .15s ease,color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-sb:hover{color:var(--ink-1)}
.tdy-sb.on{background:rgba(var(--k-92-225-255,92,225,255),.13);color:var(--ink-1);box-shadow:inset 0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.32)}
.tdy-sb:active{transform:scale(.97)}
.tdy-sb:focus-visible,.tdy button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media (pointer:coarse){.tdy-sb{min-height:44px}}
/* Week: The week ahead opens over Right now (it's hidden inside a section otherwise) */
#stage.in-life .upcoming.from-life.on{opacity:1!important;pointer-events:auto!important}
/* all day */
.tdy-ad{padding:0 14px 10px}
.tdy-ad-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px}
.tdy-ad-k{font-size:13px;color:var(--ink-3);margin-inline-end:2px}
.tdy-chip{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:34px;max-width:100%;padding:0 12px;border-radius:999px;background:var(--sf-2,rgba(246,239,230,.06));border:1px solid var(--hair);font-size:13.5px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-chip>span{overflow:hidden;text-overflow:ellipsis}
button.tdy-chip::after{content:"";position:absolute;inset:-5px 0}
button.tdy-chip:hover{border-color:var(--hair-2)}button.tdy-chip:active{transform:scale(.97)}
.tdy-chip.quiet{background:none;border-style:dashed;color:var(--ink-2)}
.tdy-chip small{font-size:12px;color:var(--ink-3)}
.tdy-ad-more{font-size:13px;color:var(--ink-3)}
.tdy-quiet{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 4px;font-size:13.5px;color:var(--ink-3);transition:color .15s ease}
.tdy-quiet:hover{color:var(--ink-2)}
.tdy-chev{width:7px;height:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);transition:transform .2s cubic-bezier(.23,1,.32,1)}
.tdy-ad.open .tdy-chev{transform:translateY(1px) rotate(-135deg)}
.tdy-ad-quiet{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s cubic-bezier(.23,1,.32,1)}
.tdy-ad.open .tdy-ad-quiet{grid-template-rows:1fr}
.tdy-ad-in{min-height:0;overflow:hidden;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.tdy-ad.open .tdy-ad-in{padding-top:6px}
.tdy-link{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 4px;font-size:13.5px;color:var(--ice);transition:opacity .15s ease}
.tdy-link:hover{opacity:.8}
.tdy-hid{color:var(--ink-3)}
.tdy-arr{font-size:16px;line-height:1}
html[dir=rtl] .tdy-arr{transform:scaleX(-1)}
/* the timeline: the day in hours sits flush inside the card */
.tdy-tl .odv{margin:0;padding:4px 0 8px;background:none;border:0;border-radius:0}
.tdy-tl .odv-foot{margin-inline:14px}
.tdy-tl .odv-scroll{padding-inline:14px}
.odv-ev.on{border-color:rgba(var(--k-92-225-255,92,225,255),.62);background:linear-gradient(rgba(var(--k-92-225-255,92,225,255),.1),rgba(var(--k-92-225-255,92,225,255),.1)),var(--sf-2)}
.odv-ev.next{border-color:rgba(var(--k-92-225-255,92,225,255),.38)}
.odv-ev.next .odv-w{color:var(--ice)}
/* the list */
.tdy-list{list-style:none;margin:0;padding:2px 8px 6px}
.tdy-li .tdy-lb{display:grid;grid-template-columns:76px 3px minmax(0,1fr);align-items:start;gap:0 12px;width:100%;min-height:52px;padding:9px 8px;border-radius:12px;text-align:start;color:inherit;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-li.k-todo .tdy-lb{grid-template-columns:76px 20px minmax(0,1fr)}
button.tdy-lb:hover{background:rgba(var(--k-246-239-230,246,239,230),.04)}button.tdy-lb:active{transform:scale(.99)}
.tdy-lc{display:flex;flex-direction:column;font-variant-numeric:tabular-nums;line-height:1.3}
.tdy-lc b{font-size:14px;white-space:nowrap;font-weight:600;color:var(--ink-1)}
.tdy-lc small{font-size:12.5px;white-space:nowrap;color:var(--ink-3)}
.tdy-bar{align-self:stretch;width:3px;border-radius:3px;background:rgba(var(--k-92-225-255,92,225,255),.55)}
.tdy-lm{display:flex;flex-direction:column;min-width:0}
.tdy-lt{display:flex;align-items:baseline;gap:8px;font-size:15px;font-weight:500;line-height:1.35}
.tdy-lt>span:first-child{min-width:0;overflow-wrap:anywhere}
.tdy-lw{font-size:13px;color:var(--ink-3);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdy-tag{flex:none;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;line-height:18px}
.tdy-tag.now{background:rgba(var(--k-245-198-107,245,198,107),.16);color:var(--gold)}
.tdy-tag.next{box-shadow:inset 0 0 0 1px rgba(var(--k-92-225-255,92,225,255),.45);color:var(--ice)}
.tdy-li.s-past{opacity:.45}
.tdy-li.s-now .tdy-bar{background:var(--ice)}
.tdy-li.s-now .tdy-lb{background:rgba(var(--k-92-225-255,92,225,255),.06)}
.tdy-li .tcheck{margin-top:2px}
.tdy-nowline{position:relative;display:flex;align-items:center;gap:8px;margin:2px 8px;height:20px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--gold)}
.tdy-nowline::after{content:"";flex:1;height:1.5px;background:linear-gradient(90deg,var(--gold),rgba(var(--k-245-198-107,245,198,107),.1))}
html[dir=rtl] .tdy-nowline::after{background:linear-gradient(270deg,var(--gold),rgba(var(--k-245-198-107,245,198,107),.1))}
.tdy-nowline b{font-weight:600}
.tdy-none{margin:0;padding:8px 14px 12px;font-size:14px;color:var(--ink-3)}
/* three days */
.tdy-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 10px 10px}
.tdy-3d{display:flex;flex-direction:column;gap:4px;min-width:0;padding:10px 6px 6px;border-radius:14px;background:rgba(var(--k-246-239-230,246,239,230),.025);border:1px solid var(--hair)}
.tdy-3d.today{border-color:rgba(var(--k-92-225-255,92,225,255),.28)}
.tdy-3h{margin:0 4px 4px;font-size:14px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdy-3d.today .tdy-3h{color:var(--ice)}
.tdy-3a{min-height:32px;padding:4px 8px;border-radius:8px;border:1px dashed var(--hair-2);font-size:12.5px;line-height:1.25;color:var(--ink-2);text-align:start;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.tdy-3e{display:flex;flex-direction:column;align-items:flex-start;min-height:44px;padding:6px 8px;border-radius:10px;background:var(--sf-2,rgba(246,239,230,.05));border-inline-start:2px solid rgba(var(--k-92-225-255,92,225,255),.6);text-align:start;transition:background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-3e:hover{background:rgba(var(--k-246-239-230,246,239,230),.08)}.tdy-3e:active{transform:scale(.98)}
.tdy-3e.past{opacity:.45}
.tdy-3e.on{border-inline-start-color:var(--gold);background:rgba(var(--k-245-198-107,245,198,107),.08)}
.tdy-3t{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;line-height:1.3}
.tdy-3w{max-width:100%;font-size:13px;line-height:1.3;color:var(--ink-1);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;hyphens:auto}
.tdy-3q,.tdy-3n{margin:2px 4px;font-size:12.5px;color:var(--ink-3)}
/* suggestions */
.tdy-k{margin:0;font-size:13px;font-weight:500;color:var(--ink-3)}
.tdy-sg{display:flex;flex-direction:column;gap:8px;margin:6px 14px 0;padding-top:14px;border-top:1px solid var(--hair)}
.tdy-card{display:flex;gap:12px;padding:12px 14px 6px;border-radius:14px;background:linear-gradient(rgba(var(--k-245-198-107,245,198,107),.06),rgba(var(--k-245-198-107,245,198,107),.02));border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);transition:opacity .18s ease,transform .18s cubic-bezier(.23,1,.32,1)}
.tdy-card.out{opacity:0;transform:translateY(4px)}
.tdy-ci{flex:none;width:8px;height:8px;margin-top:8px;border-radius:50%;background:var(--gold)}
.tdy-card.k-leave .tdy-ci{border-radius:2px;transform:rotate(45deg)}
.tdy-cb{flex:1;min-width:0}
.tdy-ct{margin:0;font-size:16px;font-weight:600;line-height:1.35;color:var(--ink-1);font-variant-numeric:tabular-nums}
.tdy-cs{margin:2px 0 0;font-size:14px;line-height:1.45;color:var(--ink-2);overflow-wrap:anywhere}
.tdy-ctodo{color:var(--ink-1)}
.tdy-acts{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:8px}
.tdy-do{min-height:40px;padding:0 16px;border-radius:999px;background:var(--gold);color:#1d1408;font-size:14px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),filter .15s ease}
.tdy-do:hover{filter:brightness(1.06)}.tdy-do:active{transform:scale(.97)}.tdy-do:disabled{opacity:.55}
.tdy-no{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-2);font-size:14px;transition:border-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-no:hover{border-color:rgba(var(--k-246-239-230,246,239,230),.35)}.tdy-no:active{transform:scale(.97)}
.tdy-never{min-height:44px;padding:0 6px;font-size:13px;color:var(--ink-3)}
.tdy-never:hover{color:var(--ink-2)}
@media (pointer:coarse){.tdy-do,.tdy-no{min-height:44px}}
.tdy-msg{margin:4px 0 0;font-size:13px;color:var(--rose)}.tdy-msg:empty{display:none}
.tdy-ok{margin-top:8px}
/* due today */
.tdy-due{margin:12px 14px 0;padding-top:12px;border-top:1px solid var(--hair)}
.tdy-dh{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:32px}
.tdy-dl{list-style:none;margin:2px 0 0;padding:0}
.tdy-di{display:flex;align-items:center;gap:12px;min-height:52px;border-bottom:1px solid var(--hair)}
.tdy-di:last-child{border-bottom:0}
.tdy-di .tcheck{margin:0;width:22px;height:22px}
.tdy-di .tcheck::before{content:"";position:absolute;inset:-11px}
.tdy-di .tcheck.on::after{left:6.5px;top:3px}
.tdy-dt{flex:1;min-width:0;display:flex;flex-direction:column;font-size:15px;line-height:1.35}
.tdy-dt>span{overflow-wrap:anywhere}
.tdy-di:has(.tcheck.on) .tdy-dt>span{color:var(--ink-3);text-decoration:line-through;text-decoration-color:rgba(var(--k-246-239-230,246,239,230),.3)}
.tdy-dt small{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tdy-late{color:var(--rose)}
.tdy-snz{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-3);transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.tdy-snz:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}.tdy-snz:active{transform:scale(.94)}
.tdy-empty{padding:6px 14px 14px}
.tdy-empty p{margin:0 0 10px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.tdy-btn{min-height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(var(--k-92-225-255,92,225,255),.45);color:var(--ice);font-size:14.5px}
/* what Today shows (a dialog) */
.tdy-ch-note{margin:4px 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.tdy-ch-h{margin:20px 0 6px;font-size:14px;font-weight:600;color:var(--ink-3)}
.tdy-ch-list{display:flex;flex-direction:column}
.tdy-sw{display:flex;align-items:center;gap:10px;min-height:52px;padding:0 2px;border-bottom:1px solid var(--hair);text-align:start;color:var(--ink-1);font-size:15px}
.tdy-sw-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdy-sw small{font-size:12.5px;color:var(--ink-3)}
.tdy-sw i{flex:none;position:relative;width:40px;height:24px;border-radius:999px;background:rgba(var(--k-246-239-230,246,239,230),.14);transition:background-color .18s ease}
.tdy-sw i::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:18px;height:18px;border-radius:50%;background:var(--ink-1);transition:transform .18s cubic-bezier(.23,1,.32,1)}
.tdy-sw[aria-checked="true"] i{background:rgba(var(--k-92-225-255,92,225,255),.7)}
.tdy-sw[aria-checked="true"] i::after{transform:translateX(16px)}
html[dir=rtl] .tdy-sw[aria-checked="true"] i::after{transform:translateX(-16px)}
@media (max-width:420px){
  .tdy-head{padding-inline:12px}.tdy-ad,.tdy-tl .odv-scroll{padding-inline:12px}
  .tdy-sb{padding:0 6px;font-size:13.5px}
  .tdy-3{gap:6px;padding-inline:8px}.tdy-3d{padding-inline:4px}.tdy-3e{padding-inline:6px}
  .tdy-li .tdy-lb{grid-template-columns:72px 3px minmax(0,1fr);gap:0 10px}
  .tdy-li.k-todo .tdy-lb{grid-template-columns:72px 20px minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){
  .tdy-ad-quiet,.tdy-chev,.tdy-card,.tdy-sw i,.tdy-sw i::after{transition:none}
}
/* ==== end of Right now as the Today view ==== */

/* Nov 1 review: on a phone every row in Simple view's drawer is a full 44px target, and so are the hub's Back and × */
@media (max-width:900px){.sv-row{min-height:44px}}
.sv-row.sv-myday svg{color:var(--gold)}
@media (max-width:760px){
  .hub .ld-back,.hub .ld-x{position:relative}
  .hub .ld-back::after,.hub .ld-x::after{content:"";position:absolute;inset:-8px -6px}
}

/* ---------- the mind up close (Nov 1 2026, public/js/presence.js zoomLabels) ----------
   Zoomed into the brain, each region is named where it sits: a short line of its colour and the name on a dark halo,
   only on the side facing her. Its position rides a transform; its opacity steps (presence.js sets both). */
.zl{position:absolute;left:0;top:0;z-index:4;display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.2;color:var(--ink-1);white-space:nowrap;pointer-events:none;opacity:0;will-change:transform,opacity;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.zl i{width:22px;height:1px;flex:none;background:linear-gradient(90deg,rgba(var(--c),.95),rgba(var(--c),0))}
.zl span{padding:3px 8px;border-radius:999px;background:rgba(6,8,16,.62);text-shadow:none}
/* close in (#stage.mind-close, set by presence.js past ~1.5×): the greeting, its cards and any note step aside so the
   mind is the whole screen; one "Zoom out" pill under the top bar brings her home. Header and the talk bar stay. */
#stage.mind-close #greet,#stage.mind-close #toast{opacity:0!important;pointer-events:none!important;transition:opacity .22s cubic-bezier(.23,1,.32,1)}
.mind-back{position:absolute;left:50%;top:calc(84px + env(safe-area-inset-top,0px));z-index:6;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px 0 12px;border-radius:999px;border:1px solid rgba(196,212,255,.22);background:rgba(8,10,20,.72);color:var(--ink-1);font-size:14px;line-height:1;opacity:0;pointer-events:none;transform:translate(-50%,-6px);transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1)}
.mind-back i{width:14px;height:14px;flex:none;border-radius:50%;border:1.5px solid rgba(150,222,255,.85);box-shadow:inset 0 0 0 3px rgba(8,10,20,.72),inset 0 0 0 6px rgba(150,222,255,.5)}
#stage.mind-close .mind-back{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.mind-back:active{transform:translate(-50%,0) scale(.97)}
#stage.reading .mind-back,#stage.simple .mind-back,#stage.simple .zl{display:none}
@media (prefers-reduced-motion:reduce){.zl,.mind-back,#stage.mind-close #greet,#stage.mind-close #toast{transition:none}}
/* ---- Galaxy brain restore (Nov 1 2026): the "Zoom out" chip really hides once she is back out. It is also a .chrome
   element, and ".ready .chrome{opacity:1}" outranked ".mind-back{opacity:0}", so after zooming out it stayed on screen
   (over the greeting) and kept its taps. Shown only while the mind is close (past 1.15x; hidden again below 1.05x). ---- */
#stage .mind-back{opacity:0;pointer-events:none}
#stage.mind-close .mind-back{opacity:1;pointer-events:auto}
/* Customize › Look › Presence: the humanoid's picture beside the galaxy brain's (.cz-pv-full) */
.cz-pv-human{background:#05060c url(/media/humanoid-view.webp) center 30%/cover}

/* ==== The pre-rendered humanoid (public/js/humanoid-video.js, Nov 1 2026) ====
   Video loops rendered offline (dev/humanoid-render/) stand in for the live figure. Pure black in the clips is
   see-through (screen blending over the starfield); the figure frame is 1080 x 1350 "frame pixels", placed and scaled by
   the script to where presence.js lays the figure out. Taps go through to the mind underneath (#fig). The ember and
   the rings are the live layer that follows NOVA's voice. Hidden wherever the live figure would be. */
#stage .hv{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;isolation:isolate;contain:strict;transition:opacity .45s cubic-bezier(.23,1,.32,1)}
#stage .hv-fig,#stage .hv-land{position:absolute;left:0;top:0;width:1080px;height:1350px;transform-origin:0 0;will-change:transform;mix-blend-mode:screen}
#stage .hv-land{width:5400px;opacity:.5}
/* (the chest fades out toward the greeting under it, so text never sits on bright lines; and the clip's soft glow fades
   before the frame's sides, so its edge never shows as a box) */
#stage .hv-fig{-webkit-mask-image:linear-gradient(#000 74%,transparent 93%),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(#000 74%,transparent 93%),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-composite:intersect}
#stage .hv-v,#stage .hv-still{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;background:#000;mix-blend-mode:screen}
#stage .hv-ember{position:absolute;width:330px;height:300px;border-radius:50%;opacity:0;transform:translate(-50%,-50%);mix-blend-mode:screen;
  background:radial-gradient(closest-side,rgba(var(--k-245-198-107,245,198,107),.5),rgba(232,150,70,.22) 45%,rgba(220,130,60,0));transition:opacity .2s ease-out}
#stage .hv-rings{position:absolute;width:0;height:0}
#stage .hv-rings i{position:absolute;left:-250px;top:-250px;width:500px;height:500px;border-radius:50%;border:3px dotted rgba(92,225,255,.6);
  mix-blend-mode:screen;opacity:0;animation:hv-ring 1.5s cubic-bezier(.22,.8,.3,1) forwards}
@keyframes hv-ring{0%{transform:scale(.62);opacity:calc(var(--a,.6) * .95)}100%{transform:scale(1.55);opacity:0}}
#stage.simple .hv,#stage.in-life .hv,#stage.in-overview .hv{opacity:0!important}
#stage.hv-on:not(.in-life):not(.in-overview) #fig{opacity:0}
@media (prefers-reduced-motion:reduce){#stage .hv-rings{display:none}#stage .hv,#stage .hv-ember{transition:opacity .2s}}
/* Customize › Look › Presence: the humanoid's card shows a frame of the real clip */
.cz-pv-human{background:#000 url(/media/humanoid/idle-poster.jpg) center 34%/cover}
/* ==== end of the pre-rendered humanoid ==== */

/* ==== Section galaxies (public/js/lifegalaxy.js): the navigator between her life sections ====
   The WebGL galaxies draw on .life-gl, under the 2D canvas (warp light, Faith's moon); both fill #life (#life>canvas).
   While she travels between sections, the space behind (the mind's stars and the small Together galaxies around it,
   frozen while the mind rests) steps back: dimmer and a little smaller, so only the section in front of her glows. */
#stage #bg{transition:opacity .45s cubic-bezier(.23,1,.32,1),transform .45s cubic-bezier(.23,1,.32,1)}
#stage.in-life #bg{opacity:.42;transform:scale(.94)}
@media (prefers-reduced-motion:reduce){#stage #bg{transition:opacity .2s}#stage.in-life #bg{transform:none}}
/* Simple view: no galaxy pictures (Katie, Nov 1 2026). The navigator draws no galaxies and makes no flights (life.js),
   Relationships keeps its numbers and people without the planets circling her, and the Places globe turns on a plain
   panel instead of the photograph of deep space. Full view is unchanged. */
html.simple #life .life-gl{display:none}
html.simple .sc-hero.sc-orbits{grid-template-columns:1fr;min-height:0}
html.simple .sc-hero.sc-orbits .sc-scene{display:none}
html.simple .sc-hero.sc-orbits .sc-over{grid-column:1;margin-top:0;background:none}
html.simple .at-hero{background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,0) 60%),#1c1e24;border-color:rgba(255,255,255,.07)}
html.simple .at-hero::after{display:none}
/* A section page's name and its "How this works" (?) share one line: a long name gives way (…) before the ? wraps
   under it; the ? keeps a 44px target around its small circle. */
.life-detail .ld-title h3{display:flex;align-items:center;min-width:0}
.life-detail .ld-title h3 .ld-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.life-detail .ld-title h3 .ld-how{flex:none;position:relative;vertical-align:baseline}
.life-detail .ld-title h3 .ld-how::after{content:"";position:absolute;inset:-11px}
.ld-head>.ld-how-row{display:none}
@media (max-width:760px){
  .life-detail .ld-title h3{font-size:21px}
  .life-detail .ld-title h3 .ld-how{display:none}
  .life-detail.dash .ld-head>.ld-how-row{display:inline-grid;position:relative;order:6;width:44px;height:44px;margin:-6px -6px -6px 0;border:0;font-size:13px}
  .life-detail.dash .ld-head>.ld-how-row::before{content:"";position:absolute;width:24px;height:24px;border-radius:50%;border:1px solid rgba(var(--k-246-239-230,246,239,230),.22)}
  html[dir=rtl] .life-detail.dash .ld-head>.ld-how-row{margin:-6px 0 -6px -6px}
  .life-detail.dash .ld-head:has(>.ld-how-row) .ld-nav{width:calc(100% - 96px)}
}
/* a narrow phone (360px): Worlds keeps only its sign (its name is still read out), so a long section name fits whole */
@media (max-width:380px){.life-detail.dash .ld-head>.ld-back{min-width:44px;min-height:44px;padding:0;justify-content:center}.life-detail.dash .ld-head>.ld-back>span{display:none}}
/* The row of sections along the bottom of the navigator on a phone: no pills or words, just each section's light in
   its colour, a 44px target each, the one she's facing larger inside its score ring (its name and how it's going are
   the big words above). The row scrolls to keep her section in the middle and fades at its ends. */
@media (max-width:760px){
  #stage.in-life .rail-list ol{gap:0;padding:0 calc(50% - 22px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent)}
  #stage.in-life .rail-list ol button{position:relative;width:44px;height:44px;min-height:44px;padding:0;gap:0;justify-content:center;border:0;border-radius:50%;background:none}
  #stage.in-life .rail-list ol button.on{border:0;background:none}
  #stage.in-life .rail-list ol button :is(.n,.t,.sc){display:none}
  #stage.in-life .rail-list ol button .d{display:block;width:7px;height:7px;opacity:.5;box-shadow:0 0 7px rgba(var(--c),.45);transition:transform .25s cubic-bezier(.23,1,.32,1),opacity .25s ease}
  #stage.in-life .rail-list ol button.on .d{opacity:1;transform:scale(1.45);box-shadow:0 0 12px rgba(var(--c),.85)}
  #stage.in-life .rail-list ol button>.mdr{position:absolute;left:10px;top:10px;width:24px!important;height:24px!important;opacity:0;transform:scale(.6);transition:transform .25s cubic-bezier(.23,1,.32,1),opacity .2s ease}
  #stage.in-life .rail-list ol button.on>.mdr{opacity:1;transform:none}
  #stage.in-life .rail-list ol button:active .d{transform:scale(1.2)}
  @media (prefers-reduced-motion:reduce){#stage.in-life .rail-list ol button :is(.d,.mdr){transition:opacity .2s}}
}
/* ==== end of Section galaxies ==== */
/* ===================== Show me around v2 + "Here's what I learned" (setup-tour, Nov 1 2026) =====================
   public/js/guide.js (.gd2: the spotlight walk), public/js/setupreview.js (.lrn), and the Halo pages' first-visit walk
   (public/js/sectionintro.js haloLines). One block, so the rest of app.css is untouched. */
/* the light on a place: a soft cyan edge (intelligence pointing), the gold kept for the one button that moves on */
.gd2 .gd-spot{box-shadow:0 0 0 200vmax rgba(3,4,10,.74),0 0 0 1.5px rgba(150,220,255,.62),0 0 30px 3px rgba(120,200,255,.2);transition:opacity .16s cubic-bezier(.23,1,.32,1),transform .24s cubic-bezier(.23,1,.32,1),width .24s cubic-bezier(.23,1,.32,1),height .24s cubic-bezier(.23,1,.32,1)}
.gd2 .gd-card{background:var(--sf-1,#161925);padding:18px 18px 14px}
.gd2 .gd-t{font-size:18px;padding-inline-end:36px}
.gd2 .gd-b{font-size:14.5px;line-height:1.5}
.gd2 .gd-foot{gap:6px;margin-top:14px;flex-wrap:nowrap}
.gd2 .gd-n{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 4px}
.gd2 .gd-skip,.gd2 .gd-back{min-height:44px;padding:0 10px}
.gd2 .gd-next{min-height:44px;padding:0 18px;white-space:nowrap}
.gd2 .gd-x{position:absolute;top:8px;inset-inline-end:8px;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;border:0;background:none;color:var(--ink-3);font-size:22px;line-height:1;cursor:pointer;transition:color .15s ease-out,background-color .15s ease-out,transform .12s ease-out}
.gd2 .gd-x::after{content:"";position:absolute;inset:-4px}
.gd2 .gd-x:active{transform:scale(.94)}
@media (hover:hover){.gd2 .gd-x:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}}
.gd2 .gd-live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gd2 .gd-end{flex-wrap:wrap}
.gd2 .gd-views+.gd-foot{flex-wrap:wrap}
@media (max-width:600px){
  .gd2 .gd-card{width:calc(100vw - 32px)}
  .gd2 .gd-end .gd-next{order:-2;flex:1 1 100%}
  .gd2 .gd-end .gd-feat{order:-1;flex:1 1 100%;min-height:44px}
}
@media (prefers-reduced-motion:reduce){.gd2 .gd-spot{transition:none}}
/* the tour sits over the open ☰ menu (it opens it on a phone): the menu's own scrim stays under the tour's dark */
html.bk-on .gd2 .gd-spot{box-shadow:0 0 0 200vmax rgba(3,4,10,.6),0 0 0 1.5px rgba(150,220,255,.62),0 0 30px 3px rgba(120,200,255,.2)}

/* "Here's what I learned": a calm solid sheet (full screen on a phone, a centred panel on a computer) */
.lrn{position:fixed;inset:0;z-index:25;display:flex;align-items:center;justify-content:center;color:var(--ink-1);color-scheme:dark}
.lrn-scrim{position:absolute;inset:0;background:rgba(3,4,10,.72);opacity:0;transition:opacity .2s cubic-bezier(.23,1,.32,1)}
.lrn-panel{position:relative;display:flex;flex-direction:column;width:min(560px,calc(100vw - 32px));max-height:min(780px,calc(100vh - 48px));background:#0d0f19;border:1px solid rgba(246,239,230,.11);border-radius:24px;box-shadow:0 40px 90px -40px rgba(0,0,0,.95);opacity:0;transform:translateY(8px);transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .24s cubic-bezier(.23,1,.32,1)}
.lrn.on .lrn-scrim{opacity:1}.lrn.on .lrn-panel{opacity:1;transform:none}
.lrn.out .lrn-scrim,.lrn.out .lrn-panel{opacity:0}
.lrn-head{display:flex;align-items:flex-start;gap:12px;padding:24px 20px 6px 24px}
.lrn-ht{flex:1;min-width:0}
.lrn-head h2{margin:0;font-weight:600;font-size:22px;line-height:1.25;letter-spacing:-.01em;outline:none;text-wrap:balance}
.lrn-sub{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.lrn-x{flex:none;width:44px;height:44px;margin:-8px -6px 0 0;display:grid;place-items:center;border-radius:50%;border:0;background:none;color:var(--ink-3);font-size:24px;cursor:pointer;transition:color .15s ease-out,transform .12s ease-out}
.lrn-x:active{transform:scale(.94)}
.lrn-body{flex:1;min-height:0;overflow:auto;padding:4px 16px 12px;overscroll-behavior:contain}
.lrn-h{margin:18px 8px 8px;font-size:13.5px;font-weight:600;color:var(--ink-3)}
.lrn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lrn-row{display:flex;align-items:center;gap:12px;min-height:60px;padding:10px 10px 10px 14px;border-radius:16px;background:#141725;border:1px solid rgba(246,239,230,.07);transition:opacity .18s ease-out,transform .18s ease-out}
.lrn-rt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.lrn-rt small{font-size:12.5px;color:var(--ink-3)}
.lrn-rt b{font-weight:500;font-size:15px;line-height:1.4;color:var(--ink-1);overflow-wrap:anywhere}
.lrn-rt b.lrn-none{color:var(--ink-3);font-weight:400}
.lrn-change{flex:none;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid rgba(150,220,255,.28);background:rgba(150,220,255,.06);color:#cfeeff;font:inherit;font-size:13.5px;font-weight:550;cursor:pointer;transition:background-color .15s ease-out,transform .12s ease-out}
.lrn-change:active{transform:scale(.97)}
@media (hover:hover){.lrn-change:hover{background:rgba(150,220,255,.14)}.lrn-x:hover{color:var(--ink-1)}}
.lrn-mem .lrn-mt{font-size:15px;line-height:1.45;color:var(--ink-1)}
.lrn-mem::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--violet,#a98bff);box-shadow:0 0 10px rgba(169,139,255,.7)}
.lrn-mem.nr-fixed::before{background:var(--mint,#6ff2c4);box-shadow:0 0 10px rgba(111,242,196,.6)}
.lrn-mem.lrn-gone{opacity:0;transform:translateX(8px)}
.lrn-mem .nr-edit{flex:1}
.lrn-wait,.lrn-empty{margin:4px 8px;font-size:14px;line-height:1.5;color:var(--ink-3)}
.lrn-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid rgba(246,239,230,.07)}
.lrn-link{min-height:44px;padding:0 6px;border:0;background:none;color:var(--ink-3);font:inherit;font-size:13.5px;cursor:pointer}
@media (hover:hover){.lrn-link:hover{color:var(--ink-1)}}
.lrn-ok{min-height:46px;padding:0 24px}
.lrn :focus-visible:not([tabindex="-1"]){outline:2px solid rgba(150,220,255,.7);outline-offset:2px}
@media (max-width:600px){
  .lrn{align-items:stretch}
  .lrn-panel{width:100vw;max-height:none;height:100%;border-radius:0;border:0;padding-top:env(safe-area-inset-top,0px)}
  .lrn-head{padding:18px 12px 4px 18px}
  .lrn-body{padding:4px 12px 12px}
  .lrn-ok{flex:1}
}
html[dir=rtl] .lrn-x{margin:-8px 0 0 -6px}
html[dir=rtl] .lrn-head{padding:24px 24px 6px 20px}
html[dir=rtl] .lrn-mem.lrn-gone{transform:translateX(-8px)}
@media (prefers-reduced-motion:reduce){.lrn-scrim,.lrn-panel,.lrn-row{transition:none}.lrn-panel{transform:none}}
html.simple .lrn-panel{box-shadow:none}

/* (a Halo page's first-visit walk is lit by the small-fixes block that follows) */
/* ===================== end Show me around v2 ===================== */
/* ==== Invite friends (Nov 1 2026, rebuilt Nov 4: public/js/invite.js; off until the owner turns it on) ====
   The sign-in sheet's invite card and Customize › Plan & usage › Invite friends. One quiet column on solid surfaces,
   no cards: gold is the action (sharing) and a day of the first week that has passed, mint a friend who counted and
   a free month earned, violet the friend side (who invited you). */
#gate .gate-ref,.gate-ref{display:flex;flex-direction:column;gap:12px;margin:0 0 18px;padding:16px 16px 14px;border-radius:20px;background:#10121f;border:1px solid rgba(var(--k-245-198-107,245,198,107),.32);text-align:start;animation:grefIn .24s cubic-bezier(.23,1,.32,1) both}
.gate-ref.is-off{border-color:var(--hair-2)}
.gref-top{display:flex;align-items:center;gap:14px}
.gref-mark{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font:600 18px var(--sans);color:var(--h-1d1408,#1d1408);background:var(--gold);box-shadow:0 0 22px rgba(var(--k-245-198-107,245,198,107),.35)}
.gref-txt{min-width:0}
.gate-in .gate-ref .gref-t{margin:0;color:var(--ink-1);font-size:16px;font-weight:600;line-height:1.3}
.gate-in .gate-ref .gref-s{margin:3px 0 0;color:var(--ink-2);font-size:13.5px;line-height:1.45}
.gate-in .gate-ref.is-off .gref-s{margin:0}
.gref-steps{list-style:none;margin:0;padding:10px 0 0;border-top:1px solid var(--hair);display:flex;flex-direction:column;gap:6px;counter-reset:gs}
.gref-steps li{counter-increment:gs;display:flex;align-items:baseline;gap:10px;font-size:13.5px;line-height:1.4;color:var(--ink-2)}
.gref-steps li::before{content:counter(gs);flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font:600 11.5px var(--sans);color:var(--gold);border:1px solid rgba(var(--k-245-198-107,245,198,107),.45);transform:translateY(-1px)}
@keyframes grefIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.inv{display:flex;flex-direction:column;gap:22px;max-width:620px}
.inv-hero{position:relative;display:flex;flex-direction:column;gap:6px;padding:4px 0 2px;isolation:isolate}
.inv-hero::before{content:"";position:absolute;inset:-28px auto auto -36px;width:260px;height:150px;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(var(--k-245-198-107,245,198,107),.16),transparent);filter:blur(6px)}
[dir=rtl] .inv-hero::before{inset:-28px -36px auto auto}
.inv-big{margin:0;font-family:var(--display);font-weight:400;font-size:30px;line-height:1.12;color:var(--ink-1);letter-spacing:-.005em}
.inv-lead{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink-2);max-width:52ch}
.inv-h{margin:0;font-size:15px;font-weight:600;color:var(--ink-1);letter-spacing:0}
.inv-send{display:flex;flex-direction:column;gap:10px}
.inv-link{display:flex;align-items:center;gap:10px;padding:4px 4px 4px 14px;border-radius:16px;background:#10121f;border:1px solid var(--hair-2);min-width:0}
[dir=rtl] .inv-link{padding:4px 14px 4px 4px}
.inv-url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--ink-1);direction:ltr;text-align:start}
.inv-copy{flex:none;min-height:44px;min-width:72px;padding:0 14px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(var(--k-246-239-230,246,239,230),.05);color:var(--ink-1);font:500 13.5px var(--sans);cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .15s ease,color .15s ease}
.inv-copy:hover{background:rgba(var(--k-246-239-230,246,239,230),.09)}
.inv-copy:active{transform:scale(.97)}
.inv-copy.is-done{color:var(--mint);border-color:rgba(var(--k-111-242-196,111,242,196),.45)}
.inv-acts{display:flex;gap:10px;flex-wrap:wrap}
.inv-acts .btn{min-height:46px;padding:0 22px;font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.inv-acts .btn:active{transform:scale(.97)}
.inv-codeline{margin:0;font-size:13px;color:var(--ink-3);display:flex;flex-wrap:wrap;align-items:baseline;gap:4px}
.inv-codeline b{font:600 13.5px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.1em;color:var(--gold)}
.inv-msg{display:flex;flex-direction:column;gap:8px}
.inv-msg-h{display:flex;align-items:center;justify-content:space-between;gap:12px}
.inv-edit{min-height:44px;padding:0 4px;font-size:14px}
.inv-quote{margin:0;padding:2px 0 2px 14px;border-inline-start:2px solid rgba(var(--k-245-198-107,245,198,107),.45);font-size:14.5px;line-height:1.55;color:var(--ink-1);white-space:pre-wrap;overflow-wrap:anywhere}
[dir=rtl] .inv-quote{padding:2px 14px 2px 0}
.inv-msg .note-sm{margin:0}
.inv-form-msg{display:flex;flex-direction:column;gap:10px}
.inv-form-msg textarea{width:100%;box-sizing:border-box;min-height:96px;padding:12px 14px;border-radius:14px;background:#10121f;border:1px solid var(--hair-2);color:var(--ink-1);font:15px/1.5 var(--sans);resize:vertical}
.inv-form-msg textarea:focus{outline:none;border-color:rgba(var(--k-245-198-107,245,198,107),.55)}
.inv-msg-a{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.inv-msg-a .btn{min-height:44px;padding:0 18px}
.inv-left{margin-inline-start:auto;font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.inv-people{display:flex;flex-direction:column;gap:8px}
.inv-sum{margin:0;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.inv-empty{margin:0;font-size:14px;line-height:1.55;color:var(--ink-2)}
.inv-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.inv-f{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:12px;row-gap:6px;padding:12px 0;border-top:1px solid var(--hair)}
.inv-f:first-child{border-top:0}
.inv-av{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font:600 13px var(--sans);color:var(--ink-1);background:rgba(var(--k-169-139-255,169,139,255),.16);box-shadow:inset 0 0 0 1px rgba(var(--k-169-139-255,169,139,255),.38)}
.inv-av.anon::before{content:"";width:6px;height:6px;border-radius:50%;background:rgba(var(--k-196-182-255,196,182,255),.85);box-shadow:0 0 10px rgba(var(--k-169-139-255,169,139,255),.7)}
.inv-f.is-qualified .inv-av{background:rgba(var(--k-111-242-196,111,242,196),.14);box-shadow:inset 0 0 0 1px rgba(var(--k-111-242-196,111,242,196),.5)}
.inv-f.is-qualified .inv-av.anon::before{background:var(--mint);box-shadow:0 0 10px rgba(var(--k-111-242-196,111,242,196),.7)}
.inv-ft{display:flex;flex-direction:column;gap:2px;min-width:0}
.inv-ftop{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.inv-ft b{font-size:14.5px;font-weight:600;color:var(--ink-1)}
.inv-when{font-size:12.5px;color:var(--ink-3)}
.inv-st{font-size:13px;line-height:1.45;color:var(--ink-2)}
.inv-f.is-qualified .inv-st{color:var(--mint)}
.inv-f.is-held .inv-st{color:var(--ink-2)}
.inv-week{display:flex;align-items:center}
.inv-track{display:flex;gap:3px}
.inv-track i{width:12px;height:4px;border-radius:2px;background:rgba(var(--k-246-239-230,246,239,230),.12)}
.inv-track i.on{background:rgba(var(--k-245-198-107,245,198,107),.85)}
.inv-earned{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:16px;background:rgba(var(--k-111-242-196,111,242,196),.05);border:1px solid rgba(var(--k-111-242-196,111,242,196),.24)}
.inv-et{margin:0;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--ink-1)}
.inv-arr{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.inv-earned .note-sm{margin:4px 0 0}
.inv-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px rgba(var(--k-111-242-196,111,242,196),.6)}
.inv-by{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:16px;background:rgba(var(--k-169-139-255,169,139,255),.06);border:1px solid rgba(var(--k-169-139-255,169,139,255),.22)}
.inv-by-t{margin:0;font-size:15px;font-weight:600;color:var(--ink-1)}
.inv-by .inv-st{margin:0}
.inv-name{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:10px;margin-top:2px;border-top:1px solid var(--hair)}
.inv-name-x{display:flex;flex-direction:column;gap:2px;min-width:0}
.inv-name-t{font-size:14px;color:var(--ink-1)}
.inv-name-x small{font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.inv-name .ag-sw{flex:none}
.inv-name .ag-sw[aria-checked="true"]{background:rgba(var(--k-169-139-255,169,139,255),.7)}
.inv-enter summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px;color:var(--ink-2)}
.inv-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.inv-form input{flex:1 1 160px;min-height:44px;padding:0 14px;border-radius:12px;background:#10121f;border:1px solid var(--hair-2);color:var(--ink-1);font:600 15px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}
.inv-form .btn{min-height:44px;padding:0 18px}
.inv-err{flex:1 1 100%;margin:0;font-size:13px;color:var(--rose)}
.inv-err:empty{display:none}
.inv-rules{margin-top:0}
@media (max-width:760px){
  .inv{gap:20px}.inv-big{font-size:27px}
  .inv-acts .btn{flex:1 1 0}
  .inv-f{grid-template-columns:auto minmax(0,1fr)}
  .inv-week{grid-column:2}
}
@media (prefers-reduced-motion:reduce){#gate .gate-ref,.gate-ref{animation:none}.inv-acts .btn:active,.inv-copy:active{transform:none}}
/* ==== end of Invite a friend ==== */
/* ===== NOVA Together · Report and Block (public/js/tgsafety.js, Nov 1 2026) =====
   The ⋯ on a person and in the chat header, the Report and Block sheets (built on the Report-a-problem sheet's
   .rp-* styles), and Customize › Privacy & security › Blocked people. Rose is for Block only: it ends something. */
.tgs-wrap{position:relative;display:inline-flex;flex:none}
.tgs-more{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:0;background:none;color:var(--ink-3);cursor:pointer;transition:color .15s,background .15s,transform .16s cubic-bezier(.23,1,.32,1)}
.tgs-more:hover,.tgs-more[aria-expanded="true"]{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.06)}
.tgs-more:active{transform:scale(.94)}
.tgs-more:focus-visible{outline:1.5px solid var(--gold);outline-offset:2px}
.tg-lp-h>.tgs-wrap{margin-inline-start:-6px}
.tgc-head>.tgs-wrap{margin-inline-start:auto}
.tgs-menu{inset-inline-start:auto;inset-inline-end:0;transform-origin:top right;min-width:200px}
.tgs-menu.up{transform-origin:bottom right}
html[dir=rtl] .tgs-menu{transform-origin:top left}html[dir=rtl] .tgs-menu.up{transform-origin:bottom left}
.tgs-menu button.tgs-danger,.tgs-menu button.tgs-danger svg{color:var(--rose)}
.tgs-scrim{z-index:120}
.tgs-panel .rp-inc+.rp-what{margin-top:-2px}
.tgs-what{margin:4px 0 14px;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.tgs-what li{position:relative;padding-inline-start:18px;font-size:15px;line-height:1.45;color:var(--ink-2)}
.tgs-what li::before{content:'';position:absolute;inset-inline-start:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:rgba(var(--k-255-122-182,255,122,182),.75)}
.tgs-foot{margin-top:14px}
.rp-panel .rp-send.tgs-block{background:var(--rose);border-color:var(--rose);color:#1f0812}
.tgs-alt{min-height:44px;padding:0 6px;border:0;background:none;font:inherit;font-size:14.5px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tgs-alt:hover{color:var(--ink-1)}
.tgs-lede{margin:0 0 10px;font-size:14px;line-height:1.45;color:var(--ink-3)}
.tgs-bl{margin:0;padding:0;list-style:none}
.tgs-bp{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--hair)}
.tgs-bp:first-child{border-top:0}
.tgs-orb{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:15px;color:var(--ink-3);background:rgba(var(--k-246-239-230,246,239,230),.05);box-shadow:inset 0 0 0 1px var(--hair-2)}
.tgs-bp-t{flex:1;min-width:0;display:flex;flex-direction:column}
.tgs-bp-t b{font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tgs-bp-t small{font-size:13px;color:var(--ink-3)}
.tgs-bp .btn{flex:none;min-height:44px}
.tgs-empty,.tgs-loading{margin:0;font-size:14px;color:var(--ink-3)}
@media (max-width:760px){.tgs-panel{align-self:flex-end;border-radius:22px 22px 18px 18px}.tgs-scrim{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}}
/* ===== end NOVA Together · Report and Block ===== */
/* ==== Plan moments (Nov 1, plans upgrade: public/js/planmoments.js). Usage against the plan, the heads-up before
   NOVA Free's messages run out, the limit moment in the conversation, Compare plans, and the welcome after a plan
   starts. Cyan = what's counted, gold = the one action, mint = what she has, never rose (a limit is not trouble).
   Motion only where it means something: the day's dots light as "you used them", the welcome's ring opens. ==== */
.pm-choose-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.pm-choose-h .set-h{margin-bottom:6px}
.pm-cmp-open{font-size:13px;color:var(--gold);min-height:44px;padding:0 2px;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(var(--k-245-198-107,245,198,107),.4)}
/* usage against the plan */
.pm-use{display:grid;grid-template-columns:1fr;gap:0 28px;margin:2px 0 4px}
.pm-use-r{display:flex;flex-direction:column;gap:7px;padding:12px 0;border-top:1px solid var(--hair)}
.pm-use-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:13.5px;color:var(--ink-2)}
.pm-use-h b{font-weight:500;color:var(--ink-1);font-variant-numeric:tabular-nums;white-space:nowrap}
.pm-meter{height:6px;border-radius:6px;background:rgba(var(--k-246-239-230,246,239,230),.08);overflow:hidden}
.pm-meter i{display:block;height:100%;width:var(--w,0%);border-radius:6px;background:linear-gradient(90deg,rgba(92,225,255,.55),var(--ice))}
.pm-meter.open{background:repeating-linear-gradient(90deg,rgba(111,242,196,.28) 0 6px,transparent 6px 10px)}
.t-near .pm-meter i{background:linear-gradient(90deg,rgba(245,198,107,.6),var(--gold))}
.t-full .pm-meter i{background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.45)}
.pm-use-r small{font-size:12px;line-height:1.45;color:var(--ink-3)}
.pm-use-note{margin:2px 0 0}
[dir="rtl"] .pm-meter i{background:linear-gradient(270deg,rgba(92,225,255,.55),var(--ice))}
[dir="rtl"] .t-near .pm-meter i{background:linear-gradient(270deg,rgba(245,198,107,.6),var(--gold))}
/* the heads-up under an answer */
.pm-near{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:14px 0 0;font-family:var(--sans);font-size:13px;color:var(--ink-3)}
.pm-near::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--ice);opacity:.8}
.pm-near.last::before{background:var(--gold)}
.pm-near .link{font-size:13px;color:var(--gold);min-height:32px}
/* the limit moment, in the conversation */
.pm-moment{margin-top:14px;padding:18px 18px 16px;border-radius:20px;background:var(--card-fill);border:1px solid rgba(var(--k-245-198-107,245,198,107),.22);font-family:var(--sans);display:flex;flex-direction:column;gap:14px;animation:pmIn .24s cubic-bezier(.23,1,.32,1)}
.pm-top{display:flex;align-items:center;gap:16px}
.pm-ring{flex:none;width:72px;height:72px}
.pm-ring svg{display:block;overflow:visible}
.pm-track{fill:none;stroke:rgba(246,239,230,.07);stroke-width:1}
.pm-dot{fill:var(--gold);opacity:0;animation:pmDot .18s ease-out forwards;animation-delay:calc(var(--i) * 14ms)}
.pm-arc{fill:none;stroke:var(--gold);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transform:rotate(-90deg);transform-origin:36px 36px;animation:pmArc .5s cubic-bezier(.23,1,.32,1) forwards}
.pm-core{fill:rgba(245,198,107,.18);stroke:rgba(245,198,107,.6);stroke-width:1}
.pm-moment.still .pm-dot{opacity:1;animation:none}.pm-moment.still .pm-arc{stroke-dashoffset:0;animation:none}
.pm-tt{min-width:0;display:flex;flex-direction:column;gap:4px}
.pm-tt b{font-size:17px;font-weight:600;line-height:1.3;color:var(--ink-1)}
.pm-tt p{margin:0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.pm-wait-box{padding:12px 14px;border-radius:14px;background:rgba(246,239,230,.035);border:1px solid var(--hair)}
.pm-back{margin:0 0 8px;font-size:14px;color:var(--ink-1)}
.pm-still{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:5px}
.pm-still li{display:flex;gap:9px;align-items:baseline;font-size:13px;line-height:1.45;color:var(--ink-2)}
.pm-still li::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;background:var(--mint);transform:translateY(-1px)}
.pm-sub{margin:-4px 0 0;font-size:12.5px;color:var(--ink-3)}
.pm-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.pm-go,.pm-alt{appearance:none;min-height:44px;padding:0 18px;border-radius:999px;font:inherit;font-size:14.5px;font-weight:500;cursor:pointer;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease,background-color .2s ease}
.pm-go{background:var(--gold);color:var(--h-1d1408,#1d1408);border:0}
.pm-alt{background:transparent;color:var(--ink-1);border:1px solid var(--hair-2)}
.pm-alt:hover{border-color:var(--ink-3)}
.pm-go:active,.pm-alt:active,.pm-wait:active{transform:scale(.97)}
.pm-go:disabled{opacity:.55;cursor:default}
.pm-wait{appearance:none;min-height:44px;padding:0 10px;background:none;border:0;color:var(--ink-2);font:inherit;font-size:14px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--hair-2)}
.pm-moment.waiting{border-color:var(--hair)}
.pm-moment.waiting .pm-acts,.pm-moment.waiting .pm-sub{display:none}
.pm-moment.compact{padding:12px 14px;gap:10px;border-radius:16px;border-color:var(--hair)}
.pm-line1{margin:0;display:flex;flex-wrap:wrap;gap:2px 8px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.pm-line1 b{font-weight:500;color:var(--ink-1)}
@keyframes pmIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes pmDot{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes pmArc{to{stroke-dashoffset:0}}
.pm-dot{transform-box:fill-box;transform-origin:center}
@media (max-width:560px){.pm-moment{padding:16px 14px 14px}.pm-ring{width:60px;height:60px}.pm-ring svg{width:60px;height:60px}.pm-acts .pm-go{flex:1 1 100%}.pm-acts .pm-alt{flex:1 1 auto}}
/* Compare plans */
.nd-panel.pm-cmp-d{width:min(980px,100%)}
.pm-cmp{display:flex;flex-direction:column;gap:12px}
.pm-cmp-seg{margin:0}
.pm-cmp-chips{display:none;gap:6px;flex-wrap:wrap}
.pm-cmp-chips button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);font-size:13.5px;color:var(--ink-2);transition:background-color .15s ease,color .15s ease}
.pm-cmp-chips button[aria-selected="true"]{background:rgba(245,198,107,.14);border-color:rgba(245,198,107,.5);color:var(--ink-1)}
.pm-cmp-t{display:flex;flex-direction:column}
.pm-cmp-row{display:grid;grid-template-columns:minmax(150px,1.3fr) repeat(var(--n,4),minmax(0,1fr));align-items:center;gap:0 10px;padding:10px 0;border-top:1px solid var(--hair);font-size:13.5px}
.pm-cmp-t.n3 .pm-cmp-row{--n:3}.pm-cmp-t.n4 .pm-cmp-row{--n:4}.pm-cmp-t.n5 .pm-cmp-row{--n:5}
.pm-cmp-l{color:var(--ink-2);line-height:1.4}
.pm-cmp-c{color:var(--ink-1);text-align:center;line-height:1.35;padding:0 4px}
.pm-cmp-c.is-none{color:var(--ink-3)}.pm-cmp-c.is-none i{font-style:normal}
.pm-cmp-row:not(.pm-cmp-head) .pm-cmp-c.is-mine{color:var(--mint)}
.pm-cmp-head{border-top:0;align-items:stretch;padding-top:4px}
.pm-cmp-head .pm-cmp-c{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px;border-radius:16px;border:1px solid transparent}
.pm-cmp-head .pm-cmp-c.is-lead{border-color:rgba(245,198,107,.4);background:rgba(245,198,107,.045)}
.pm-cmp-head .pm-cmp-c.is-mine{border-color:rgba(111,242,196,.4)}
.pm-cmp-head b{font-size:15px;font-weight:600}
.pm-cmp-p{font-family:var(--display);font-size:24px;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap}.pm-cmp-p small{font-family:var(--sans);font-size:12px;color:var(--ink-3);margin-inline-start:2px}
.pm-cmp-head small{font-size:11.5px;color:var(--ink-3)}
.pm-cmp-mine{margin-top:6px;font-size:12.5px;color:var(--mint);min-height:36px;display:grid;place-items:center}
.pm-cmp-mine.quiet{color:var(--ink-3);font-size:11.5px;line-height:1.3}
.pm-cmp-go{margin-top:6px;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--hair-2);color:var(--ink-1);font-size:13px;font-weight:500;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s ease}
.pm-cmp-go.gold{background:var(--gold);border-color:transparent;color:var(--h-1d1408,#1d1408)}
.pm-cmp-go:active:not(:disabled){transform:scale(.97)}.pm-cmp-go:disabled{opacity:.5}
.pm-cmp-fine{margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
@media (max-width:700px){
  .pm-cmp-chips{display:flex}
  .pm-cmp-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr)}
  .pm-cmp-row .pm-cmp-c:not(.is-on){display:none}
  .pm-cmp-head .pm-cmp-c{padding:12px 6px}
  .pm-cmp-p{font-size:21px;white-space:normal;display:flex;flex-direction:column;align-items:center}.pm-cmp-p small{margin:0}
  .pm-cmp-go{padding:0 10px;font-size:12.5px}
  .pm-cmp-row{font-size:13px}
}
/* the welcome after a plan starts */
.nd-panel.pm-yay{text-align:center}
.pm-yay .nd-head,.sr-panel .nd-head{justify-content:space-between}
.pm-yay .nd-head::before,.sr-panel .nd-head::before{content:"";flex:none;width:44px}.pm-yay .nd-title,.sr-panel .nd-title{flex:1;text-align:center}
.pm-yay-mark{position:relative;width:96px;height:96px;margin:4px auto 14px}
.pm-yay-mark i{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(245,198,107,.7);animation:pmRing .5s cubic-bezier(.23,1,.32,1) both}
.pm-yay-mark i+i{inset:14px;border-color:rgba(92,225,255,.45);animation-delay:.08s}
.pm-yay-mark b{position:absolute;inset:36px;border-radius:50%;background:radial-gradient(circle,#fff6dc 0,var(--gold) 55%,rgba(245,198,107,0) 100%);box-shadow:0 0 28px rgba(245,198,107,.55);animation:pmIn .3s ease-out both .12s}
.pm-yay-mark.still i,.pm-yay-mark.still b{animation:none}
.pm-yay-lede{margin:0 0 14px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.pm-yay-list{margin:0 auto 18px;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;text-align:start;max-width:340px}
.pm-yay-list li{display:flex;gap:10px;align-items:baseline;font-size:14.5px;line-height:1.45;color:var(--ink-1);animation:pmIn .22s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(.2s + var(--i) * 40ms)}
.pm-yay-list li::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 8px rgba(111,242,196,.5);transform:translateY(-1px)}
.pm-yay .pm-acts{justify-content:center}
@keyframes pmRing{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pm-moment,.pm-yay-list li,.pm-yay-mark i,.pm-yay-mark b{animation:none}.pm-dot{opacity:1;animation:none}.pm-arc{stroke-dashoffset:0;animation:none}.pm-go,.pm-alt,.pm-cmp-go{transition:none}}
/* ==== end Plan moments ==== */
/* ==== Streak rewards (Nov 1: public/js/streakreward.js, server/streakrewards.js). A milestone's thank-you: the days
   kept as a ring of lit stars around the number, then the gift in one line. Off unless the owner turns them on. ==== */
.nd-panel.sr-panel{text-align:center;width:min(440px,100%)}
.sr-ring{position:relative;width:112px;height:112px;margin:2px auto 12px;display:grid;place-items:center}
.sr-ring svg{position:absolute;inset:0;width:112px;height:112px;overflow:visible}
.sr-track{fill:none;stroke:rgba(246,239,230,.08);stroke-width:1}
.sr-dot{fill:var(--gold);opacity:0;transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 0 3px rgba(245,198,107,.65));animation:pmDot .2s ease-out forwards;animation-delay:calc(var(--i) * (420ms / var(--n)))}
.sr-n{position:relative;font-family:var(--display);font-size:38px;font-weight:400;line-height:1;color:var(--ink-1);font-variant-numeric:tabular-nums;text-shadow:0 0 24px rgba(245,198,107,.35);animation:pmRing .32s cubic-bezier(.23,1,.32,1) both .1s}
.sr-n.long{font-size:28px}
.sr-ring.still .sr-dot{opacity:1;animation:none}.sr-ring.still .sr-n{animation:none}
.sr-lede{margin:0 0 14px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.sr-gift{display:flex;flex-direction:column;gap:4px;align-items:center;margin:0 auto 18px;padding:14px 16px;max-width:360px;border-radius:16px;background:rgba(245,198,107,.06);border:1px solid rgba(245,198,107,.28);animation:pmIn .24s cubic-bezier(.23,1,.32,1) both .44s}
.sr-gift-k{font-size:12.5px;color:var(--gold)}
.sr-gift b{font-size:17px;font-weight:600;line-height:1.35;color:var(--ink-1)}
.sr-gift small{font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.sr-panel .pm-acts{justify-content:center}
.sr-fine{margin:14px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}
@media (max-width:560px){.sr-panel .pm-acts .pm-go{flex:1 1 100%}.sr-panel .pm-acts .pm-alt{flex:1 1 100%}}
@media (prefers-reduced-motion:reduce){.sr-dot{opacity:1;animation:none}.sr-n,.sr-gift{animation:none}}
/* ==== end Streak rewards ==== */
/* ==== This phone / This iPhone (Nov 1 2026; Katie's Android screenshot: the block broke out of its card, flush to the
   screen edge, nine long rows with ON and Manage stacked). public/js/thisphone.js: a header, one summary line, small
   group names, compact rows (icon, name, one short line, a quiet On or a Turn on pill); tapping a row opens a sheet
   with the full story and the row's actions. Also here: Your connections reads as a short list on a phone (no sideways
   strip cropping at the edge), and Connections leaves room at its foot so a toast never sits on the last button. ==== */
.tp{--tp-pad:16px;margin:0;padding:18px var(--tp-pad) 6px}
.clb-side>.tp{margin-top:12px;border-top:1px solid var(--hair)}
@media (min-width:761px){.clb-side>.tp{--tp-pad:10px;padding-top:16px}}
.dev-body>.tp{padding-inline:0}
.tp-head{display:grid;gap:3px;margin-bottom:6px}
.hub-body h3.tp-h,.sheet-body h3.tp-h,.tp-h{font-family:inherit;font-size:17px;font-weight:600;line-height:1.3;letter-spacing:0;text-transform:none;color:var(--ink-1);margin:0}
.tp-sum{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-3)}
.tp-dot{color:var(--ink-3);opacity:.7}
.tp-sum>span:not(.tp-dot){unicode-bidi:plaintext} /* the phone's name (Latin) and "9 of 9 on" each read their own way round in Arabic */
.tp-intro{margin:6px 0 0;font-size:14px;line-height:1.5;color:var(--ink-2)}
.tp-group{margin-top:12px}
.hub-body h4.tp-gh,.sheet-body h4.tp-gh,.tp-gh{margin:0 0 2px;font-family:inherit;font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;line-height:1.4;color:var(--ink-3)}
.tp-rows{list-style:none;margin:0;padding:0}
.tp-row{display:flex;align-items:center;gap:8px;min-width:0}
.tp-row+.tp-row{border-top:1px solid var(--hair)}
.tp-rb{flex:1;min-width:0;min-height:58px;display:flex;align-items:center;gap:12px;margin:0 -6px;padding:8px 6px;background:none;border:0;border-radius:12px;color:inherit;font:inherit;text-align:start;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.tp-rb:hover{background:rgba(246,239,230,.04)}
.tp-rb:active{transform:scale(.985)}
.tp-rb:focus-visible{outline:2px solid rgba(150,200,255,.7);outline-offset:-2px}
.tp-ic{flex:none;display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;background:rgba(150,200,255,.08);color:rgba(170,212,255,.92)}
.tp-row.is-off .tp-ic,.tp-row.is-na .tp-ic{background:rgba(246,239,230,.05);color:var(--ink-3)}
.tp-t{flex:1;display:grid;gap:1px;min-width:0}
.tp-t b{font-size:15px;font-weight:600;line-height:1.3;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-line{font-size:13.5px;line-height:1.35;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-line.bad{color:var(--rose)}
.tp-st{flex:none;display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink-3)}
.tp-row.is-on .tp-st{color:var(--mint)}
.tp-row.is-on .tp-st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}
.tp-row.is-ready .tp-st{color:rgba(170,212,255,.92)}
.tp-chev{flex:none;color:var(--ink-3);margin-inline-start:-4px}
html[dir=rtl] .tp-chev svg{transform:scaleX(-1)}
.tp-act{position:relative;flex:none;height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(245,198,107,.45);background:rgba(245,198,107,.08);color:var(--gold);font:inherit;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.tp-act::after{content:"";position:absolute;inset:-4px -2px}
.tp-act:hover{background:rgba(245,198,107,.14)}
.tp-act:active{transform:scale(.96)}
.tp-note{display:flex;align-items:center;gap:8px;min-height:44px;margin-top:8px;padding:0;background:none;border:0;color:var(--ink-3);font:inherit;font-size:13.5px;text-align:start;cursor:pointer}
.tp-note:hover{color:var(--ink-2)}
.tp-note svg{flex:none}
.tp-foot{display:flex;gap:16px;padding:4px 0 2px}
.tp-foot .clb-link{min-height:44px}
/* the sheet: from the bottom on a phone, a centred card on a computer; solid, so its words read cleanly */
.tps-scrim{position:fixed;inset:0;z-index:1000;background:rgba(3,4,10,.62)}
.tps{position:fixed;inset:auto 0 0 0;z-index:1001;max-height:86vh;overflow:auto;overscroll-behavior:contain;padding:8px 20px calc(20px + env(safe-area-inset-bottom,0px));background:var(--card-solid,#151722);border:1px solid var(--card-rim,rgba(246,239,230,.08));border-bottom:0;border-radius:22px 22px 0 0;box-shadow:0 -24px 60px -20px rgba(0,0,0,.8);color:var(--ink-1);outline:none}
.tps-grab{display:block;width:38px;height:4px;margin:2px auto 12px;border-radius:4px;background:rgba(246,239,230,.2)}
@media (min-width:761px){
  .tps{inset:0;margin:auto;width:min(460px,calc(100vw - 32px));height:fit-content;max-height:80vh;padding:22px 24px 22px;border-bottom:1px solid var(--card-rim,rgba(246,239,230,.08));border-radius:22px}
  .tps-grab{display:none}
}
.tps-top{display:flex;align-items:flex-start;gap:12px;touch-action:none}
.tps-tt{flex:1;display:grid;gap:2px;min-width:0;padding-top:2px}
.tps-h{margin:0;font-family:inherit;font-size:19px;font-weight:600;line-height:1.3;letter-spacing:0;color:var(--ink-1)}
.tps-st{font-size:13.5px;color:var(--ink-3)}
.tps-st.is-on{color:var(--mint)}
.tps-st.is-ready{color:rgba(170,212,255,.92)}
.tps-x{flex:none;display:inline-grid;place-items:center;width:44px;height:44px;margin:-6px -10px 0 0;border-radius:50%;background:none;border:0;color:var(--ink-3);cursor:pointer;transition:background-color .15s,color .15s}
html[dir=rtl] .tps-x{margin:-6px 0 0 -10px}
.tps-x:hover{background:rgba(246,239,230,.06);color:var(--ink-1)}
.tps-body{margin-top:14px}
.tps-body p{margin:0 0 12px;font-size:15px;line-height:1.55;color:var(--ink-2)}
.tps-body .tps-note{padding:10px 12px;border-radius:12px;background:rgba(246,239,230,.045);font-size:14px;line-height:1.5;color:var(--ink-1)}
.tps-body .tps-fine{font-size:13.5px;color:var(--ink-3)}
.tps-acts{display:grid;gap:10px;margin-top:18px}
.tps-btn{min-height:48px;padding:0 18px;border-radius:14px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}
.tps-btn:hover{background:rgba(246,239,230,.05)}
.tps-btn:active{transform:scale(.98)}
.tps-btn.gold{background:var(--gold);border-color:var(--gold);color:#1b1407}
.tps-btn.gold:hover{background:#f8d189}
.tps-btn.danger{color:var(--rose);border-color:rgba(255,122,182,.38)}
.tps-acts .calm-confirm{display:grid;gap:10px}
@media (min-width:761px){.tps-acts{grid-auto-flow:column;justify-content:start}}
@media (prefers-reduced-motion:reduce){.tp-rb,.tp-act,.tps-btn{transition:none}.tp-rb:active,.tp-act:active,.tps-btn:active{transform:none}}
/* Your connections on a phone: a short list (the first few, then Show all), not a sideways strip that crops */
@media (max-width:760px){
  .clb-side{padding:6px 0 10px}
  .clb-mine{display:grid;gap:0;overflow:visible;padding:0 10px;scroll-snap-type:none}
  .clb-acct{width:auto;flex:initial;scroll-snap-align:none;background:none;border:0;border-radius:14px;padding-inline-end:6px}
  .clb-acct+.clb-acct{border-top:1px solid var(--hair);border-radius:0}
  .clb-acct.bad{border-color:var(--hair)}
  .clb-acct-b{min-height:58px;padding:8px 6px}
  .clb-live{display:block}
}
/* Connections: room at the foot, so the last button scrolls clear of a toast or the bottom of the phone */
#hub.h-connections .clb{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}
/* ==== end of This phone / This iPhone ==== */
/* ==== Finance › Points (Nov 2 2026; direction A "Rewards ring"; public/js/points.js, points-model.js). The page a
   Points tile opens on the Finance Halo page: the ring (earned against what her own best cards could have earned),
   the cards NOVA can't place yet, her biggest misses, which card for what, what each card earned, her cards, and the
   sheet that fixes a card. The one card surface; gold = action and "could earn more", cyan = met, violet = a question
   for her. Transform and opacity only; nothing moves under reduced motion. Kept in one block. ==== */
.pts{display:grid;gap:var(--h-gap);grid-template-columns:minmax(0,1fr)}
.pts-glance,.pts-sec,.pts-ask-card{background:radial-gradient(120% 90% at 0% 0%,rgba(170,230,212,.07),rgba(170,230,212,0) 55%),var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius)}
html.simple .halo :is(.pts-glance,.pts-sec,.pts-ask-card){background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
.pts-glance{display:grid;justify-items:center;text-align:center;gap:10px;padding:22px 18px 20px}
.pts-glance .halo-ring-n{font-size:42px}
.pts-per{width:min(260px,100%);margin-top:4px}
.pts-side{display:grid;gap:var(--h-gap);align-content:start;min-width:0}
.pts-sec{padding:14px 16px 16px;display:grid;gap:10px;min-width:0}
.pts-sec>h3{margin:0;font:600 15px/1.3 var(--sans);color:var(--ink-1)}
.pts-card{display:grid;min-width:0}
.pts-none,.pts-hint{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.pts-hint{color:var(--ink-3);padding-top:10px}
.pts-tot{margin:0;padding-top:12px;border-top:1px solid var(--hair);font-size:13.5px;color:var(--gold)}
/* a card NOVA can't place yet: one question, in violet (memory: it's learning her) */
.pts-ask-card{padding:14px 16px;display:grid;gap:8px;border-style:dashed;border-color:rgba(169,139,255,.45);background:linear-gradient(172deg,rgba(169,139,255,.09),rgba(169,139,255,.03)),var(--card-fill)}
.pts-q{margin:0;font:600 15px/1.35 var(--sans)}
.pts-q b{font-weight:600;color:var(--violet)}
.pts-qrow{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;border-top:1px solid rgba(169,139,255,.2)}
.pts-qrow b{font:600 14.5px var(--sans);color:var(--ink-1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-qs{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.pts-acts{display:flex;flex-wrap:wrap;gap:8px}
.pts-btn{min-height:44px;border:0;border-radius:999px;padding:0 16px;background:var(--gold);color:#1a1405!important;font:600 13.5px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.pts-btn.ghost{background:rgba(246,239,230,.06);color:var(--ink-1)!important;border:1px solid var(--sf-edge-2)}
.pts-btn:active{transform:scale(.96)}.pts-btn:disabled{opacity:.5}
/* the biggest misses: the shop and amount, then what was used against the best card she has */
.pts-miss{display:grid;gap:4px;padding:12px 0;border-top:1px solid var(--hair)}
.pts-miss:first-child{border-top:0;padding-top:2px}
.pts-mt{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.pts-mn{font:600 15px/1.3 var(--sans);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-ma{font-variant-numeric:tabular-nums;font-size:15px;color:var(--ink-1)}
.pts-md{font-size:12.5px;color:var(--ink-3)}
.pts-mu{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:baseline;font-size:13.5px;color:var(--ink-2);margin-top:2px}
.pts-ml{font-size:12.5px;color:var(--ink-3);min-width:88px}
.pts-mc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-mr{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink-2)}
.pts-mu.is-best .pts-mc{color:var(--ink-1)}.pts-mu.is-best .pts-mr{color:var(--ice)}
.pts-mm{display:flex;gap:8px;align-items:baseline;margin-top:4px;font:600 13.5px var(--sans);color:var(--gold)}
.pts-est{font:500 11.5px var(--sans);color:var(--ink-3);border:1px solid var(--hair-2);border-radius:999px;padding:1px 7px}
/* which card for…: the kind, the card, its rate */
.pts-best{display:flex;align-items:center;gap:12px;min-height:52px;border-top:1px solid var(--hair)}
.pts-best:first-child{border-top:0}
.pts-ic{flex:none;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:rgba(92,225,255,.08);color:var(--ice)}
.pts-bt{flex:1;min-width:0;display:grid;gap:1px}
.pts-bk{font:500 14.5px/1.3 var(--sans);color:var(--ink-1)}
.pts-bc{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pts-br{font:600 16px var(--sans);font-variant-numeric:tabular-nums;color:var(--ice)}
.pts-askn{margin-top:4px}
/* earned, and her cards */
.pts-row{display:flex;justify-content:space-between;gap:12px;align-items:baseline;min-height:40px;align-items:center;border-top:1px solid var(--hair);font-size:14px}
.pts-row:first-child{border-top:0}
.pts-rl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1)}
.pts-rv{font-variant-numeric:tabular-nums;color:var(--ink-2);white-space:nowrap}
.halo .pts-cardrow{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 0;border:0;border-top:1px solid var(--hair);background:none;text-align:start;cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.halo .pts-cardrow:first-child{border-top:0}
.halo .pts-cardrow:active{transform:scale(.99)}
.pts-ct{flex:1;min-width:0;display:grid;gap:3px}
.pts-cn{font:600 14.5px/1.3 var(--sans)}
.pts-cs{font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.pts-cs b{font-weight:600;color:var(--ice)}
.pts-dot{color:var(--ink-3)}
.pts-tag{justify-self:start;font:600 11.5px var(--sans);color:var(--violet);border:1px solid rgba(169,139,255,.4);border-radius:999px;padding:1px 8px}
.pts-bal{font-size:12.5px;color:var(--ink-1)}.pts-dim{color:var(--ink-3)}
.pts-fix{flex:none;font:600 13px var(--sans);color:var(--gold);padding:6px 2px}
.pts-foot{line-height:1.55}
/* the tile's small bar on the Finance page, and "Points" beside the money map's three views (one line each) */
.halo-tc svg.pt-tbar{display:block;width:100%;height:10px;margin-top:12px}
.sc-seg:has(>.sc-seg-b:nth-child(4)) .sc-seg-b{padding-inline:11px;white-space:nowrap}
@media (max-width:420px){.sc-seg:has(>.sc-seg-b:nth-child(4)) .sc-seg-b{padding-inline:9px;font-size:12.5px}}
.pt-tbar .pt-trk{fill:rgba(246,239,230,.08)}.pt-tbar .pt-fill{fill:var(--tone,var(--ice))}
/* a card's sheet */
.pts-dlg .pts-sh{display:grid;gap:10px;padding-top:16px;margin-top:14px;border-top:1px solid var(--hair)}
.pts-dlg .pts-sh:first-of-type{border-top:0;margin-top:4px;padding-top:4px}
.pts-dlg h3{margin:0;font:600 15px var(--sans)}
.pts-dlg .pts-note{padding:0;margin-top:2px}
.pts-in{width:100%;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(0,0,0,.25);color:var(--ink-1);font:16px var(--sans);caret-color:var(--gold)}
.pts-in:focus-visible{outline:2px solid var(--ice);outline-offset:1px}
.pts-list{display:grid;gap:2px;max-height:240px;overflow-y:auto;overscroll-behavior:contain}
.pts-opt{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:44px;padding:0 10px;border:0;border-radius:10px;background:none;color:var(--ink-1);font:500 14.5px var(--sans);text-align:start;cursor:pointer}
.pts-opt:hover,.pts-opt:focus-visible{background:rgba(246,239,230,.06)}
.pts-opt.on{background:rgba(92,225,255,.1)}
.pts-oi{font-size:12.5px;color:var(--ink-3);white-space:nowrap}
.pts-rates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pts-rate{display:grid;gap:5px;font-size:13px;color:var(--ink-2)}
.pts-rate.wide{grid-column:1/-1}
.pts-balrow{display:flex;gap:8px}.pts-balrow .pts-in{flex:1}
/* the page's arrival: the side's cards rise once, 50ms apart */
@media (prefers-reduced-motion:no-preference){
  .pts.hc-intro .pts-side>*{animation:pts-rise .42s cubic-bezier(.23,1,.32,1) both}
  .pts.hc-intro .pts-side>*:nth-child(2){animation-delay:.05s}.pts.hc-intro .pts-side>*:nth-child(3){animation-delay:.1s}.pts.hc-intro .pts-side>*:nth-child(n+4){animation-delay:.15s}
}
@keyframes pts-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@container halo (min-width:820px){
  .halo-detail.is-own{grid-template-columns:minmax(0,1fr)}
  .pts{grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:18px;align-items:start}
  .pts-glance{position:sticky;top:84px;padding:28px 22px}
  .pts-sec{padding:18px 20px 20px}
}
/* ==== end Finance › Points ==== */
/* ==== Small fixes (Nov 1 2026, branch small-fixes-nov1) ====
   1. The talk bar on a narrow phone: Talk was squeezing "Ask NOVA…" to "Ask N…". In Simple view up to 430px wide (and
      in Full view on the narrowest phones, where its hint line below still names Talk), Talk is its round wave icon
      alone (its aria-label still says "Start a voice conversation with NOVA") and the bar's gaps are a little tighter,
      so the invitation reads whole in English, Spanish and Arabic. */
@media (max-width:430px){
  #stage.simple .dock{gap:6px}
  #stage.simple .dock:not(.in-talk) .talk{width:48px;padding:0;gap:0;justify-content:center}
  #stage.simple .dock:not(.in-talk) .talk .talk-l{display:none}
}
@media (max-width:374px){
  #stage:not(.simple) .dock{gap:6px}
  #stage:not(.simple) .dock:not(.in-talk) .talk{width:48px;padding:0;gap:0;justify-content:center}
  #stage:not(.simple) .dock:not(.in-talk) .talk .talk-l{display:none}
}
/* 2. A section's first-visit walk on a Halo page (Wellness, Finance, Career…): "what this shows" lights the ring and
      its sentence, "what NOVA notices" lights the next step and the tiles (public/js/sectionintro.js marks the page). */
.life-detail[data-si=hero] .halo-home>.halo-glance,
.life-detail[data-si=board] .halo-home :is(.halo-nudge,.halo-tiles){outline:1.5px solid rgba(var(--c,200,215,255),.6);outline-offset:4px;transition:outline-color .2s ease-out}
.life-detail[data-si=board] .halo-home .halo-tiles{border-radius:18px}
/* 3. The reminder card on the home screen (public/js/tasks.js): the same glass as NOVA noticed and the other cards
      (PR #488), its gold edge kept. It was solid so the greeting never showed through; the greeting and its brief
      already step aside while a reminder is up (on a phone a long one moves the line away), and the glass is the
      cards' own dense fill, so the words stay readable. A ringing alarm stays solid. */
html:root:not(.simple) .remind:not(.alarm-ring){background:radial-gradient(120% 90% at var(--card-x,0%) 0%,rgba(245,198,107,var(--card-tint)),rgba(245,198,107,0) 55%),var(--card-fill);box-shadow:var(--card-lit),var(--card-drop)}
/* ==== end of small fixes (Nov 1 2026) ==== */
/* ==== AI disclosure line (Nov 1 2026, public/js/ainote.js) ====
   "NOVA is AI and can make mistakes." One quiet line in the same words everywhere it matters: the start of a
   conversation, under the dock while Talk is on, the foot of Finance, Wellness, Astrology, Markets and Points, a
   plan's money or health plan, Faith's prayer times, and any approval carrying text NOVA wrote. Small but readable
   (12px, ink-3, never all-caps), no icon, no glow, no motion: a fact, not an alarm. */
.ai-note{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--ink-3);font-weight:400;letter-spacing:0;text-wrap:pretty}
.ai-note span{color:inherit}
/* the conversation: once, centred above the first turn (hidden until there is a first turn) */
.ai-note.cv-ai{max-width:720px;margin:0 auto 18px;text-align:center;padding:0 12px}
.cv-scroll:has(> .cv-thread:empty) > .cv-ai{display:none}
/* Talk: a second line under the dock's own hint */
.dock-hint .ai-note.dh-ai{display:block;margin-top:3px;font-size:11px}
/* an approval with text NOVA wrote: right under what will be sent */
.ai-note.ai-draft{margin:8px 0 2px;font-size:12px}
.approve .ai-note.ai-draft{margin:6px 0 10px}
/* a plan's lines: the AI line, then the plan's own disclaimer right under it */
.ai-note.gs-disc + .gs-disc-2{margin-top:2px}
/* Halo pages, Points, Markets and Faith: at the foot, under the page's own source line */
.halo-side > .ai-note{margin-top:calc(4px - var(--h-gap,0px))}
.fa-foot + .ai-note{margin-top:4px}
.mk-calm + .ai-note{margin-top:6px}
/* ==== end of AI disclosure line ==== */

/* ==== Customize wears NOVA's mark (Nov 1 2026, Katie: "replace the K with the NOVA icon star/sun") ====
   The Customize row at the foot of Full view's menu (.bk-pic) and Simple view's sidebar (.sv-pic) shows the app
   icon's eclipse (#novaMark in index.html) instead of her initial. The mark brings its own gold rim, so the circle's
   border and fill step aside; the corona is allowed to spill a hair past the 28/30px box. Same mark for everyone. */
.bk-me .bk-pic.nova-mark,.sv-pic.nova-mark{border:0;background:none;overflow:visible}
.bk-pic.nova-mark svg,.sv-pic.nova-mark svg{width:34px;height:34px;flex:none;display:block;pointer-events:none}
/* ==== end Customize wears NOVA's mark ==== */
/* ==== Final review fixes (Nov 1 2026 overnight) ====
   1. Phone: the greeting never climbs under the top bar. A note over the box lifts it only as far as there is room
      (--greet-room, measured in app.js); a too-tall greeting scrolls its NOVA noticed card instead.
   2. Phone: while the menu is open, a note steps aside (it sat over the list of sections); news waits for it to close.
   3. A section's Workspace card: each linked chat, project or page has its own Unlink (×), 44px to tap.
   (A note never covering a panel's action row is measured in app.js bottomBarSpace, not here.) */
@media (max-width:760px){
  #stage:has(#toast.on) .greet{translate:0 calc(min(var(--toast-h,0px),var(--greet-room,9999px)) * -1)}
  body:has(#bkMenu:not([hidden])) #toast{opacity:0;pointer-events:none}
}
.tl-ws .ws-g{grid-template-columns:minmax(0,1fr);min-width:0}
.ws-line{display:flex;align-items:center;gap:2px;min-width:0}
.ws-line>.ws-row{flex:1;min-width:0}
.ws-unlink{flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:12px;background:none;color:var(--ink-3);cursor:pointer;transition:color .15s ease,background-color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.ws-unlink:hover{color:var(--ink-1);background:rgba(246,239,230,.05)}
.ws-unlink:active{transform:scale(.94)}
.ws-unlink:focus-visible{outline:2px solid var(--ice);outline-offset:-2px}
@media (hover:hover) and (pointer:fine){.ws-line .ws-unlink{opacity:.55}.ws-line:hover .ws-unlink,.ws-unlink:focus-visible{opacity:1}}
/* 4. A section's message box stays at the foot of the screen while its page is still filling in (Faith drew it
      mid-screen for a moment, longer in Simple view; Astrology too): the page holds a screen's height from the start. */
.life-detail.dash>.ld-board{min-height:calc(100% - 200px)}
@media (max-width:760px){.life-detail.dash>.ld-board{min-height:calc(100% - 300px)}}
/* ==== end Final review fixes ==== */
/* ==== Galaxy brain up close (brain-zoom-dramatic, Nov 1 2026) ====
   1. The greeting's block (and the dark pool behind it) sat over the lower half of the mind on a phone whenever cards
      showed under it, and swallowed her pinches and taps there: on home only its own text and controls take touches,
      so a pinch anywhere on the mind zooms it. (While NOVA is talking the whole block is live again, as before.)
   2. "Zoom out" sits at the top centre under the header (presence.js), never over home's pair or the talk bar, with a
      44px target above everything else on the stage. */
#greet:not(.talking){pointer-events:none}
#greet:not(.talking) :is(button,a,input,textarea,select,label,[role=button],[tabindex],.brief,#reply,#said,.stk-row>*){pointer-events:auto}
.mind-back{z-index:7;min-width:44px;touch-action:manipulation}
/* ==== end Galaxy brain up close ==== */


/* ==== Tour covers everything (Nov 1): the setup resume chip gets a quiet ✕ beside it ==== */
.fr-chipbox:has(.fr-chipx){flex-direction:row;justify-content:center;gap:4px}
.fr-chipx{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:rgba(246,239,230,.55);transition:color .16s ease-out,transform .16s cubic-bezier(.23,1,.32,1)}
.fr-chipx:hover{color:#f6efe6}.fr-chipx:active{transform:scale(.94)}.fr-chipx .fr-ic{width:15px;height:15px}
/* "9 more for you" never sits under a reminder (on a phone it showed through behind "Send the Q4 plan to Dana"):
   while a reminder is up, the line steps aside, and comes back when the reminder is done */
#stage:has(.remind.on) .greet .brief:not(.mb-open)>.brief-more{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease-out,visibility 0s .2s}
/* ==== end Tour covers everything ==== */
/* ==== Tour: Swipe to decide (public/js/guideswipe.js) ====
   A sample waiting row inside the tour card that swipes itself, with the real gesture's look (.sw, .sw-lab), and a
   key under it: the word for what the row is showing lights up as it goes. Still with reduced motion. */
.gdsw{margin-top:14px}
.gdsw-row.sw{border-radius:14px;background:rgba(246,239,230,.035);box-shadow:inset 0 0 0 1px var(--sf-edge-2,rgba(246,239,230,.13))}
.gdsw-row .sw-under{border-radius:14px}
.gdsw-face{display:grid;grid-template-columns:8px minmax(0,1fr) 14px;align-items:center;gap:12px;min-height:58px;padding:10px 14px;border-radius:14px;cursor:default;user-select:none;-webkit-user-select:none}
.gdsw-row.sw-live>.gdsw-face{border-radius:14px}
.gdsw-dot{width:8px;height:8px;border-radius:50%;background:var(--gold,#f5c66b)}
.gdsw-t{display:grid;gap:2px;min-width:0}
.gdsw-t b{font-weight:500;font-size:14.5px;line-height:1.3;color:var(--ink-1);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
.gdsw-t small{font-size:12.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gdsw-chev{color:var(--ink-3);font-size:18px;line-height:1}
.gdsw-key{display:flex;flex-wrap:wrap;gap:4px 14px;margin:10px 2px 0;padding:0;list-style:none;font-size:13px;color:var(--ink-3)}
.gdsw-key li{display:inline-flex;align-items:center;gap:6px;transition:color .2s cubic-bezier(.23,1,.32,1)}
.gdsw-way{font-size:14px;line-height:1}
.gdsw-key li.on[data-a=yes]{color:var(--gold,#f5c66b)}
.gdsw-key li.on[data-a=later],.gdsw-key li.on[data-a=tap]{color:var(--ink-1)}
.gdsw-key li.on[data-a=remove]{color:rgb(var(--k-255-122-182,255,122,182))}
@media (prefers-reduced-motion:reduce){.gdsw-key li{transition:none}.gdsw-key li{color:var(--ink-2)}}
/* ==== end Tour: Swipe to decide ==== */

/* ==== Stories: only bills NOVA is sure about, with the proof (Nov 1) ====
   1. Phone: the picture and the card are one composition. The sky no longer takes every spare pixel (a lone star
      floated mid-screen over empty space with the card pushed low): it sizes to its content and sits right above the
      card, and the pair is centred in the space under the header. A single star gets a smaller sky than a pattern.
   2. A charge's sky: its past charges on one rising line with their dates, the next one the bright gold star.
   3. The statement's own words under a charge's name, and its proof in "How NOVA knows", with "Not a bill". */
@media (max-width:760px){
  .ns-stage{justify-content:center}
  .ns-pic{flex:0 1 auto;height:min(46vh,400px);min-height:140px}
  .ns-pic-single{height:min(30vh,250px)}
  .ns-pic-charges{height:min(34vh,290px)}
  .ns-pic .ns-sky{height:100%;width:100%}
}
.ns-p-charges .ns-label{font-size:15px;fill:var(--ink-2)}
.ns-p-charges .ns-st.next .ns-dot{fill:var(--gold)}
.ns-p-charges .ns-st.next .ns-halo{fill:rgba(245,198,107,.2)}
.ns-p-charges .ns-st.next .ns-label{fill:var(--gold);font-weight:600}
.ns-p-charges .ns-lines line{stroke:rgba(245,198,107,.4);stroke-dasharray:3 5}
.ns-raw{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:8px 0 0;font-size:13.5px;line-height:1.4;color:var(--ink-3)}
.ns-rawv{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--ink-2);overflow-wrap:anywhere}
.ns-proof{margin-top:4px}
.ns-evid{margin-top:0}
.ns-evid li span{overflow-wrap:anywhere}
[dir=rtl] .ns-evid li span[dir=ltr]{text-align:right}
.ns-proofacts{display:flex;gap:8px;margin:6px 0 4px}
.ns-notbill{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair-2);background:transparent;color:var(--ink-1);font-size:14.5px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .2s}
.ns-notbill:hover{border-color:rgba(var(--c),.5)}
.ns-notbill:active{transform:scale(.96)}
.ns-notbill:focus-visible{outline:2px solid rgb(var(--c));outline-offset:2px}
/* ==== end Stories: only bills NOVA is sure about ==== */
/* ==== Humanoid v2 (humanoid-v2, Nov 1 2026) ====
   The crisp humanoid sits higher and larger (presence.js), so on home its shoulders run behind the greeting: the dark pool
   behind the greeting deepens for it, and while the figure assembles the greeting steps back so the opening reads
   cleanly (it returns as the figure settles). Reduced motion: no fade (the figure is already formed). */
#stage[data-presence=humanoid]:not(.simple) #greet::before{inset:-64px -110px -48px;background:radial-gradient(closest-side,rgba(var(--k-3-4-10,3,4,10),.9),rgba(var(--k-3-4-10,3,4,10),0))}
#stage.hum-forming:not(.simple) #greet{opacity:0;transition:opacity .25s cubic-bezier(.23,1,.32,1)}
@media (prefers-reduced-motion:reduce){#stage.hum-forming #greet{opacity:1}}
/* the greeting sits below the figure (Nov 1 2026, final round): its cards ("NOVA noticed"…) keep to a short window that
   scrolls, so the words, the cards and the chip stay together just above home's pair and the figure never sits under
   text. Only in the humanoid view; the galaxy brain's home is unchanged. */
#stage[data-presence=humanoid]:not(.simple):not(.reading) #greet:not(.talking) .brief{max-height:min(20vh,170px);overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 calc(100% - 28px),transparent);mask-image:linear-gradient(#000 calc(100% - 28px),transparent)}
@media (max-width:760px){#stage[data-presence=humanoid]:not(.simple):not(.reading) #greet:not(.talking) .brief{max-height:min(12vh,100px)}}
/* ==== end Humanoid v2 ==== */
/* ==== Crisp section pages (Katie, Nov 1 2026: "This UI also doesn't look crisp… make sure it fits with our new theme")
   One treatment for every life section page, matching the rebuilt galaxy brain (tiny crisp points, deep black, no soft
   blur over content):
   1. the header is a SOLID surface (the near-black page colour) with a hairline edge and a short fade below, so nothing
      that scrolls under it shows through (a .9 surface let bright words read through it on her phone);
   2. its two rows line up on a phone: Worlds keeps only its sign so the section's name fits beside the score ring in
      every language; the second row is ‹ dots › then the pencil and ?, each a 44px target on one centre line;
   3. the picture (.sc-hero, the globe, Faith's sky) sits on deep black: the space photograph is only a faint backdrop,
      there's no haze painted over the scene, and the words under it sit on a solid surface with a hairline (the
      canvases themselves now draw at the screen's density: public/js/perf.js crisp, public/js/scenes.js). */
html #life .life-detail.dash>.ld-head.ld-head,html .life-detail.dash>.ld-head.ld-head{background:var(--ld-solid,#05060c);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1px solid rgba(var(--k-246-239-230,246,239,230),.09);box-shadow:none}
html.simple .life-detail.dash>.ld-head.ld-head{--ld-solid:#0f1016}
.life-detail.dash>.ld-head::after{content:"";position:absolute;left:0;right:0;top:100%;height:14px;margin-top:1px;background:linear-gradient(180deg,var(--ld-solid,#05060c),rgba(5,6,12,0));pointer-events:none}
html.simple .life-detail.dash>.ld-head::after{background:linear-gradient(180deg,#0f1016,rgba(15,16,22,0))}
.life-detail.dash>.ld-head .ld-title h3{line-height:1.15}
/* ‹ ›: a 44px target, the visible ring stays 32px */
.life-detail.dash .ld-head :is(.ld-prev,.ld-next){position:relative;width:44px;height:44px;border:0;border-radius:50%}
.life-detail.dash .ld-head :is(.ld-prev,.ld-next)::before{content:"";position:absolute;inset:6px;border-radius:50%;border:1px solid var(--hair);transition:border-color .2s ease}
.life-detail.dash .ld-head :is(.ld-prev,.ld-next):hover:not(:disabled)::before{border-color:var(--hair-2)}
.life-detail.dash .ld-head .ld-dot{height:44px}
@media (max-width:760px){
  .life-detail.dash>.ld-head.ld-head{padding:10px 14px 8px;gap:4px 10px;align-items:center}
  /* row 1: ☰ · Worlds (its sign) · the name · the score ring · × */
  .life-detail.dash>.ld-head>.ld-back{flex:none;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;justify-content:center;border-radius:50%}
  .life-detail.dash>.ld-head>.ld-back>span{display:none}
  .life-detail.dash>.ld-head>.ld-back .life-glyph{width:20px;height:20px}
  .life-detail.dash>.ld-head>.ld-title{flex:1 1 0;min-width:0}
  .life-detail.dash>.ld-head .ld-title h3{font-size:22px}
  .life-detail.dash>.ld-head>.ld-chip{flex:none}
  .life-detail.dash>.ld-head>.ld-x{flex:none;width:44px;height:44px;padding:0;display:grid;place-items:center}
  /* row 2: ‹ dots › | pencil | ? — the pencil's place is kept on every page so › never moves under her thumb */
  .life-detail.dash>.ld-head.ld-head .ld-nav,.life-detail.dash>.ld-head:has(>.ld-how-row) .ld-nav{width:calc(100% - 108px);margin:0;gap:0}
  .life-detail.dash>.ld-head>.arr-open,.life-detail.dash>.ld-head>.ld-how-row{width:44px;height:44px;margin:0}
  html[dir=rtl] .life-detail.dash>.ld-head>.arr-open,html[dir=rtl] .life-detail.dash>.ld-head>.ld-how-row{margin:0}
  .life-detail.dash>.ld-head:not(:has(>.arr-open))>.ld-how-row{margin-inline-start:54px}
  .life-detail.dash>.ld-head>.ld-how-row::before{width:32px;height:32px}
  /* ☰ and Worlds: the same 44px circle, side by side */
  .life-detail.dash>.ld-head>.menu{flex:none;width:44px;height:44px}
}
/* the picture: deep black, the photograph only a faint backdrop, nothing hazy painted over the scene */
html:not(.simple) .sc-hero:not(.sc-clusters){background:var(--tint),linear-gradient(rgba(var(--k-2-3-10,2,3,10),.84),rgba(var(--k-2-3-10,2,3,10),.84)),#02030a var(--space)}
html:not(.simple) .sc-hero.sc-clusters{background:var(--tint),var(--wash),linear-gradient(rgba(var(--k-2-3-10,2,3,10),.8),rgba(var(--k-2-3-10,2,3,10),.8)),#02030a var(--space)}
html:not(.simple) .at-hero{background:linear-gradient(rgba(var(--k-2-3-10,2,3,10),.78),rgba(var(--k-2-3-10,2,3,10),.78)),var(--h-02030a,#02030a) url('/textures/space.jpg') center / cover no-repeat}
@media (max-width:760px){
  .sc-hero::after{display:none} /* (on a phone it laid a haze over the picture's lower labels) */
  /* the words under the picture sit on a solid surface with a hairline, never over the picture's lower edge */
  .sc-hero .sc-over{margin-top:0;background:rgb(var(--k-4-5-12,4,5,12));border-top:1px solid rgba(var(--c,246,239,230),.12)}
  .sc-fig b{color:var(--h-fff,#fff)}
  .sc-fig span{color:rgba(var(--k-232-238-252,232,238,252),.9)}
}
/* ==== end Crisp section pages ==== */
/* ==== The waiting orb (Nov 1 2026, Katie: "I want the orb to be more prominent. Anything that requires loading,
   users waiting should show orb"). One sign that NOVA is working, everywhere: public/js/orbwait.js (the orb itself is
   public/js/orb.js). Sizes: lg 64 (the conversation), md 40 (a page on its way), sm 24 (a line), xs 16 (a button). ==== */
canvas.orb{position:static;inset:auto;display:block;flex:none;max-width:none}
.ow{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:14px;line-height:1.4;min-width:0}
.ow-t{min-width:0;transition:opacity .11s cubic-bezier(.23,1,.32,1),transform .11s cubic-bezier(.23,1,.32,1)}
.ow-t.ow-swap{opacity:0;transform:translateY(3px)}
.ow-sm{gap:10px;font-size:13.5px}.ow-xs{gap:8px}
.ow-pad{padding:18px 4px}
.ow-md.ow-pad{justify-content:flex-start}
/* the conversation: a 64px living orb, the step beside it, no pill around it */
.turn-work.ow-chat{gap:6px;min-height:64px;padding:6px 0;margin:4px 0 2px;border-radius:0;background:none;box-shadow:none;font-size:15.5px;color:var(--ink-1);width:auto;transform-origin:32px 50%}
.turn-work.ow-chat::before,.turn-work.ow-chat::after{content:none}
.turn-work.ow-chat>.nglow{display:none} /* the orb is the one sign: no light circling a pill */
.turn-work.ow-chat .orb{margin:0;filter:drop-shadow(0 0 14px rgba(var(--k-92-225-255,92,225,255),.28))}
.turn-work.ow-chat[data-s="acting"] .orb,.turn-work.ow-chat[data-s="approval"] .orb{filter:drop-shadow(0 0 14px rgba(var(--k-245-198-107,245,198,107),.3))}
.turn-work.ow-chat[data-s="complete"] .orb{filter:drop-shadow(0 0 12px rgba(var(--k-111-242-196,111,242,196),.3))}
.turn-work.ow-chat.done .ow-t{color:var(--ink-2)}
/* the hand-off to the answer: a shrink and a fade, under 300ms, transform and opacity only */
.ow{transition:opacity .24s cubic-bezier(.23,1,.32,1),transform .24s cubic-bezier(.23,1,.32,1)}
.ow.ow-out{opacity:0;transform:scale(.6)}
.turn-a.ow-held{opacity:0}.turn-a{transition:opacity .16s cubic-bezier(.23,1,.32,1)}
@media (min-width:900px){.turn-work.ow-chat .orb{width:56px!important;height:56px!important}.turn-work.ow-chat{min-height:56px;transform-origin:28px 50%}}
/* a section on its way: the orb and its words above the shapes of what's coming */
.sk-wrap{display:flex;flex-direction:column;gap:14px}
.ow-sec{padding:10px 2px 0}
.halo-ring:has(>.ow-halo)>*{grid-area:1/1}
.ow-halo{justify-content:center;pointer-events:none}
.ns-wait{min-height:44px;padding:6px 2px}
.att-n.ow{display:inline-flex;gap:8px}
.lrn-wait.ow,.mf-note.ow{display:flex}
/* a button that's running: the 16px orb before its words */
.ow-btn{display:inline-flex;align-items:center;gap:8px}
.ow-btn .orb{margin:0}
/* ==== Waiting feels shorter (orb-alive, Nov 1 2026; Katie: "make the orbs for loading a little more animated, or
   something that doesn't make the user feel like they're waiting so long"). A Halo ring that is on its way, or showing
   the last copy while the fresh one comes, carries a light travelling round it (cyan easing into gold: progress, not a
   spinner); tiles shaped like the real ones get a soft sweep instead of a flat grey pulse; the words under the ring
   move on (dash.js WAIT_WORDS). Transform and opacity only. Reduced motion: the light rests as a still arc, no sweep. */
.halo.is-wait .halo-ring::after,.is-updating .halo-ring::after{content:'';position:absolute;inset:0;margin:auto;width:min(184px,52vw);height:min(184px,52vw);border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,rgba(92,214,255,0) 0deg 150deg,rgba(92,214,255,.28) 250deg,rgba(150,225,255,.6) 310deg,rgba(255,196,87,.9) 350deg,rgba(255,238,205,1) 357deg,rgba(255,196,87,0) 360deg);
  -webkit-mask:radial-gradient(closest-side,transparent 86.4%,#000 87.4%,#000 99.2%,transparent 100%);mask:radial-gradient(closest-side,transparent 86.4%,#000 87.4%,#000 99.2%,transparent 100%);
  filter:drop-shadow(0 0 6px rgba(255,196,87,.35));animation:owRing 2.1s cubic-bezier(.55,.12,.35,.92) infinite}
.is-updating .halo-ring::after{opacity:.75;animation-duration:1.6s}
@keyframes owRing{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.halo-say{margin:-2px 0 0;min-height:21px;font-size:14px;line-height:1.5;color:var(--ink-2);text-align:center;transition:opacity .11s cubic-bezier(.23,1,.32,1),transform .11s cubic-bezier(.23,1,.32,1)}
.halo-say[hidden]{display:block;visibility:hidden}
.halo-say.ow-swap{opacity:0;transform:translateY(3px)}
.halo.is-wait .halo-sk-tile,.tiles.sk .tile{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:10px;animation:none}
.halo.is-wait .halo-sk{position:relative;overflow:hidden;animation:none}
:is(.halo-sk-tile,.tiles.sk .tile)>span{display:block;border-radius:6px;background:rgba(246,239,230,.06)}
:is(.halo-sk-tile,.tiles.sk .tile)>.sk-l{width:46%;height:11px}
:is(.halo-sk-tile,.tiles.sk .tile)>.sk-n{width:34%;height:24px;border-radius:8px}
:is(.halo-sk-tile,.tiles.sk .tile)>.sk-c{width:100%;height:26px;margin-top:auto;border-radius:8px;background:linear-gradient(180deg,rgba(246,239,230,0),rgba(246,239,230,.05))}
.halo.is-wait :is(.halo-sk,.halo-sk-tile)::after,.tiles.sk .tile::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 25%,rgba(214,240,255,.075) 45%,rgba(255,236,205,.06) 55%,transparent 75%);transform:translateX(-110%);animation:owSweep 1.9s cubic-bezier(.45,0,.25,1) infinite;animation-delay:var(--sw,0s)}
.halo.is-wait .halo-sk.w1{--sw:.05s}.halo.is-wait .halo-sk.w2{--sw:.12s}
.halo-sk-tile:nth-child(2),.tiles.sk .tile:nth-child(2){--sw:.14s}.halo-sk-tile:nth-child(3),.tiles.sk .tile:nth-child(3){--sw:.26s}.halo-sk-tile:nth-child(4),.tiles.sk .tile:nth-child(4){--sw:.38s}.tiles.sk .tile:nth-child(5){--sw:.5s}.tiles.sk .tile:nth-child(6){--sw:.62s}
@keyframes owSweep{from{transform:translateX(-110%)}62%,to{transform:translateX(110%)}}
[dir=rtl] .halo.is-wait :is(.halo-sk,.halo-sk-tile)::after,[dir=rtl] .tiles.sk .tile::after{animation-name:owSweepRtl}
@keyframes owSweepRtl{from{transform:translateX(110%)}62%,to{transform:translateX(-110%)}}
@media (prefers-reduced-motion:reduce){
  .halo.is-wait .halo-ring::after,.is-updating .halo-ring::after{animation:none;transform:rotate(30deg)}
  .halo.is-wait :is(.halo-sk,.halo-sk-tile)::after,.tiles.sk .tile::after{animation:none;opacity:0}
  .halo-say{transition:none}
}
/* ==== end: Waiting feels shorter ==== */
/* the Your mind pill: its dot is a live 20px orb */
.cv-back canvas.orb{margin-inline-start:-3px}
/* Talk connecting or thinking: the waiting orb in place of the mic's bars */
.talk-live .talk-orb canvas.orb{display:none;position:absolute;inset:4px}
.dock:is([data-talk="opening"],[data-talk="connecting"],[data-talk="thinking"],[data-talk="working"]) .talk-live .talk-orb canvas.orb{display:block}
.dock:is([data-talk="opening"],[data-talk="connecting"],[data-talk="thinking"],[data-talk="working"]) .talk-live .talk-orb i{opacity:0}
/* reduced motion: the orb holds still (orb.js) with a gentle opacity pulse to say it's still working */
@media (prefers-reduced-motion:reduce){
  .ow canvas.orb,.ow-btn canvas.orb{animation:owPulse 2.4s ease-in-out infinite}
  .ow,.ow-t{transition:none}
}
@keyframes owPulse{0%,100%{opacity:1}50%{opacity:.6}}
/* ==== end The waiting orb ==== */
/* ==== A reminder never sits on top of NOVA noticed (Nov 1 2026) ====
   On a phone the reminder card rises from just above home's pair, which is where the greeting's card (NOVA noticed,
   a brief) ends, so the two collided and the card's words read through the reminder's glass. One card on home at a
   time, as a tablet already does: while a reminder is up, the card under the greeting steps aside (it keeps its room,
   so the greeting doesn't move) and the reminder takes its place; when the reminder is done or snoozed, it comes back.
   Hidden, not just faded, so it can't be tapped or tabbed to through the reminder (a tablet's own rule only faded it). */
@media (max-width:1179px){
  #stage:has(.remind.on) .greet #brief{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s cubic-bezier(.23,1,.32,1),visibility 0s .2s}
}
/* ==== end A reminder never sits on top of NOVA noticed ==== */
/* ==== Glass menu (Nov 1 2026; public/js/glassrail.js): the side panel and the ☰ menu in floating glass, three looks
   to try behind html[data-rail=a|b|c] (?rail=a|b|c, or Customize › Look › Menu style). Nothing here applies until one
   is picked. A: a slim rail of icons by default that opens to the full panel. B: the open panel. C: the slim rail that
   opens while the pointer rests on it. The glass: a deep blur that picks up the galaxy's colour behind it, a 1px light
   rim, a brighter top edge, a faint grain and a soft shadow, dense enough that the words always read. One glass pill
   slides to the row under the pointer and rests on the section she's in. Icons and rings sit in the same place open
   and folded (a 32px column), so opening the panel only widens the glass and fades the words in. ---- */
html[data-rail]{
  --gl-ease:cubic-bezier(.23,1,.32,1);
  --gl-fill:linear-gradient(180deg,rgba(34,38,58,.62) 0%,rgba(17,19,32,.66) 30%,rgba(11,12,22,.74) 100%);
  --gl-tint:radial-gradient(90% 38% at 100% 18%,rgba(92,225,255,.07),rgba(92,225,255,0) 70%),radial-gradient(80% 34% at 0% 82%,rgba(169,139,255,.07),rgba(169,139,255,0) 70%);
  --gl-rim:rgba(246,239,230,.13);
  --gl-lit:inset 0 1px 0 rgba(255,255,255,.16),inset 0 0 0 1px rgba(255,255,255,.025),inset 0 -1px 0 rgba(0,0,0,.35);
  --gl-drop:0 30px 70px -28px rgba(0,0,0,.9),0 4px 14px -6px rgba(0,0,0,.55);
  --gl-blur:blur(28px) saturate(175%) brightness(1.06);
  --gl-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
  --gl-pill:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,.05));
  --gl-pill-rim:rgba(255,255,255,.15);
}
/* the glass itself: the panel, the ☰ menu and the little labels share it */
@media (min-width:761px){
  html[data-rail] #stage:not(.simple) .rail{isolation:isolate;padding:8px;gap:2px;border-radius:30px;border:1px solid var(--gl-rim);
    background:var(--gl-tint),var(--gl-fill);box-shadow:var(--gl-lit),var(--gl-drop);
    -webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);transition:width .28s var(--gl-ease),box-shadow .28s var(--gl-ease)}
  /* the top edge catching the light, and a faint grain so it reads as a material, not a flat tint */
  html[data-rail] #stage:not(.simple) .rail::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;
    background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,0) 90px),radial-gradient(120% 60px at 50% 0%,rgba(255,255,255,.06),rgba(255,255,255,0))}
  html[data-rail] #stage:not(.simple) .rail::after{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--gl-grain);background-size:140px;opacity:.05;mix-blend-mode:overlay}
  html[data-rail] #stage:not(.simple) .rail .rail-card{-webkit-backdrop-filter:none;backdrop-filter:none}
  html[data-rail] #stage.rail-min .rail{width:64px;padding:8px}
  /* the open/fold button: a small round light on the glass's edge, as in the reel */
  html[data-rail] #stage:not(.simple) .rail .rail-fold,html[data-rail] #stage.rail-min .rail .rail-fold{position:absolute;top:19px;inset-inline-end:-18px;z-index:3;width:26px;height:26px;margin:0;border:0;border-radius:50%;
    color:#151624;background:linear-gradient(180deg,rgba(250,246,240,.96),rgba(214,208,200,.94));box-shadow:0 6px 16px -6px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.25),inset 0 1px 0 #fff}
  html[data-rail] #stage .rail .rail-fold::after{content:'';position:absolute;inset:-9px;border-radius:50%}
  html[data-rail] #stage .rail .rail-fold:hover{color:#000}
  html[data-rail] #stage .rail .rail-fold:active{transform:scale(.92)}
  html[dir=rtl][data-rail] #stage .rail .rail-fold svg{transform:scaleX(-1)}
  html[dir=rtl][data-rail] #stage.rail-min .rail .rail-fold svg{transform:none}
  /* At a Glance: a pill-ended card, its ring in the rail's column */
  html[data-rail] #stage:not(.simple) .rail .rail-dash,html[data-rail] #stage.rail-min .rail .rail-dash{display:grid;place-items:stretch;margin:0 0 6px;padding-block:6px;padding-inline:6px 14px;border-radius:25px;min-height:48px;position:relative;z-index:1}
  html[data-rail] #stage .rail .rail-dash .rd-ring{width:34px;height:34px}
  html[data-rail] #stage.rail-min .rail .rail-card{justify-items:stretch}
  html[data-rail] #stage.rail-min .rail .rd-fx:not([hidden]){display:flex}
  html[data-rail] #stage.rail-min .rail .rail-dash .rd-head{display:grid}
  html[data-rail] #stage.rail-min .rail .rail-dash .rc-t{display:block}
  html[data-rail] #stage.rail-min .rail-list .t{display:block}
  html[data-rail] #stage.rail-min .rail .rail-dash .rd-ring{width:34px;height:34px}
  html[data-rail] #stage.rail-min .rail .rail-work{padding:0}
  html[data-rail] #stage .rail .rail-dash .rd-head{min-width:0;white-space:nowrap}
  html[data-rail] #stage .rail .rail-dash .rd-head>*{overflow:hidden;text-overflow:ellipsis}
  html[data-rail] #stage .rail .rail-dash .rd-fx{margin-block:6px 2px;margin-inline:6px 4px;padding-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}
  /* rows: one height, pill-ended, the icon at the same place open or folded */
  html[data-rail] #stage .rail .rail-proj,html[data-rail] #stage.rail-min .rail .rail-proj{position:relative;z-index:1;justify-content:flex-start;min-height:38px;padding-block:0;padding-inline:13px 12px;gap:12px;border-radius:999px}
  html[data-rail] #stage .rail .rj-ic{flex:none;background:rgba(246,239,230,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
  html[data-rail] #stage .rail .rw-n .rj-ic{background:var(--gold);box-shadow:0 0 14px -4px rgba(245,198,107,.7)}
  html[data-rail] #stage .rail .rj-t,html[data-rail] #stage.rail-min .rail .rj-t{display:grid;white-space:nowrap}
  html[data-rail] #stage .rail .rj-t .rc-k{overflow:hidden;text-overflow:ellipsis}
  html[data-rail] #stage.rail-min .rail .rj-n{display:block}
  html[data-rail] #stage .rail-list,html[data-rail] #stage.rail-min .rail-list{margin:0;padding:0;width:auto}
  html[data-rail] #stage .rail-list ol{gap:0}
  html[data-rail] #stage .rail-list{-webkit-mask-image:linear-gradient(#000 calc(100% - 22px),transparent);mask-image:linear-gradient(#000 calc(100% - 22px),transparent)}
  html[data-rail] #stage .rail-list ol button{min-height:36px;padding-block:0;padding-inline:14px 12px;gap:12px;border-radius:999px}
  html[data-rail] #stage.rail-min .rail-list ol button{justify-content:flex-start;padding-block:0;padding-inline:14px 12px}
  html[data-rail] #stage.rail-min .rail-list .sc{display:inline}
  html[data-rail] #stage .rail-list .t{white-space:nowrap}
  html[data-rail] #stage .rail-ind{display:none}
  html[data-rail] #stage .rail .rail-head{position:relative;min-height:28px;padding-block:6px 2px;padding-inline:14px 12px}
  html[data-rail] #stage.rail-min .rail .rail-head{display:flex}
  html[data-rail] #stage .le-rail,html[data-rail] #stage.rail-min .le-rail{display:grid;margin:2px 0 0}
  html[data-rail] #stage .le-rail .le-head{inset-inline-end:2px}
  html[data-rail] #stage .le-rail .le-add{position:relative;z-index:1;min-height:36px;padding-block:0;padding-inline:14px 12px;border-radius:999px;white-space:nowrap}
  html[data-rail] #stage .rail-foot{padding-top:6px}
  /* on a computer the pill does the hover; the rows' own tints step aside */
  @media (hover:hover) and (pointer:fine){
    html[data-rail] #stage .rail :is(.rail-proj,.le-add):hover,html[data-rail] #stage .rail-list ol button:hover{background:none}
    html[data-rail] #stage .rail-list ol:has(button:hover) button:not(:hover):not(.on){opacity:1}
  }
  /* a press on a touch screen: the same glass, under the finger */
  @media (hover:none){
    html[data-rail] #stage .rail :is(.rail-proj,.le-add,.rail-list ol button):active{background:var(--gl-pill);box-shadow:inset 0 0 0 1px var(--gl-pill-rim)}
    html[data-rail] #stage .rail-list ol button.on{background:rgba(var(--c),.12);box-shadow:inset 0 0 0 1px rgba(var(--c),.3)}
  }
  /* ---- folded (A and C, or B folded): the words fade, the icons and rings stay put ---- */
  html[data-rail] #stage .rail :is(.rj-t,.rj-n,.rd-head,.rd-fx>*,.rail-list .t,.rail-list .sc,.rail-head .rc-k,.le-head,.le-l,.gr-lfold){transition:opacity .2s ease-out .07s}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail :is(.rj-t,.rj-n,.rd-head,.rd-fx>*,.rail-list .t,.rail-list .sc,.rail-head .rc-k,.le-head,.le-l,.gr-lfold){opacity:0;visibility:hidden;transition:opacity .1s ease-out,visibility 0s .1s}
  /* folded, a group's name becomes a short hairline, and the day's focus a gold dot */
  html[data-rail] #stage .rail .rail-head::before{content:'';position:absolute;inset-inline-start:15px;top:50%;width:18px;height:1px;background:rgba(246,239,230,.16);opacity:0;transition:opacity .15s ease-out}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail .rail-head::before{opacity:1}
  html[data-rail] #stage .rail .rd-fx::before{content:'';position:absolute;inset-inline-start:9px;top:13px;width:6px;height:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(245,198,107,.8);opacity:0;transition:opacity .15s ease-out}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail .rd-fx::before{opacity:1}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail .rd-fx{border-top-color:transparent}
  /* what waits for her: a dot on the folded icon (gold To-dos and Projects, violet Agents, rose when something's late or failing) */
  html[data-rail] #stage .rail .rail-proj .rj-ic{position:relative}
  html[data-rail] #stage .rail .rail-proj.wait .rj-ic::after{content:'';position:absolute;top:-3px;inset-inline-end:-3px;width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 2px rgba(14,15,26,.9),0 0 8px rgba(245,198,107,.7);opacity:0;transform:scale(.6);transition:opacity .18s ease-out,transform .18s var(--gl-ease)}
  html[data-rail] #stage .rail .rw-a.wait .rj-ic::after{background:var(--violet);box-shadow:0 0 0 2px rgba(14,15,26,.9),0 0 8px rgba(169,139,255,.7)}
  html[data-rail] #stage .rail .rail-proj.wait.warn .rj-ic::after{background:var(--rose);box-shadow:0 0 0 2px rgba(14,15,26,.9),0 0 8px rgba(255,138,160,.7)}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail .rail-proj.wait .rj-ic::after{opacity:1;transform:none}
  /* folded, a section's card beside the rail gives way to the glass label (public/js/glassrail.js) */
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail-peek{display:none}
  /* C: opened by resting the pointer on it, over the page (nothing behind it moves) */
  html[data-rail=c] #stage.rail-min.gr-peek .rail{width:262px;box-shadow:var(--gl-lit),0 40px 90px -24px rgba(0,0,0,.95),0 0 0 1px rgba(0,0,0,.25)}
  /* B and C: Life sections fold away under their heading */
  .gr-lfold{display:none}
  html[data-rail=b] .rail .gr-lfold,html[data-rail=c] .rail .gr-lfold{position:absolute;top:2px;inset-inline-start:var(--x,112px);z-index:2;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:var(--ink-3);transition:color .2s ease,opacity .2s ease-out .07s,transform .16s var(--gl-ease)}
  html[data-rail] #stage .rail .gr-lfold:hover{color:var(--ink-1)}
  html[data-rail] #stage .rail .gr-lfold:active{transform:scale(.9)}
  html[data-rail] #stage .rail .gr-lfold svg{transition:transform .22s var(--gl-ease)}
  html[data-rail] #stage .rail .rail-life.gr-shut .gr-lfold svg{transform:rotate(-90deg)}
  html[dir=rtl][data-rail] #stage .rail .rail-life.gr-shut .gr-lfold svg{transform:rotate(90deg)}
  html[data-rail] #stage .rail .rail-life .rail-list{transition:opacity .2s ease-out}
  html[data-rail=b] .rail .rail-life.gr-shut :is(.rail-list,.le-rail),html[data-rail=c] .rail .rail-life.gr-shut :is(.rail-list,.le-rail){display:none}
  html[data-rail=b] .rail .rail-life.gr-shut,html[data-rail=c] .rail .rail-life.gr-shut{min-height:0}
  html[data-rail] #stage.rail-min:not(.gr-peek) .rail .rail-life.gr-shut :is(.rail-list){display:block}
}
/* a section's card beside the open panel: the same glass */
@media (min-width:761px){
  html[data-rail] #stage .rail-peek{border-radius:22px;border-color:rgba(var(--c),.3);background:radial-gradient(120% 100% at 0% 0%,rgba(var(--c),.14),rgba(var(--c),0) 60%),linear-gradient(180deg,rgba(34,38,58,.86),rgba(13,14,24,.92));
    box-shadow:var(--gl-lit),var(--gl-drop);-webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur)}
  html[data-rail] #stage .rail-peek::before{display:none}
}
/* Arabic: the glass panel mirrors to the right edge, and a section's page keeps its room on that side */
@media (min-width:761px){
  html[dir=rtl][data-rail] #stage:not(.simple) .rail{left:auto;right:max(26px,3vw)}
  html[dir=rtl][data-rail] #stage .rail-peek{left:auto;right:calc(100% + 14px);transform:translateX(6px)}
  html[dir=rtl][data-rail] #stage .rail-peek.on{transform:none}
  html[dir=rtl][data-rail] #stage:not(.simple).in-world .life-detail.dash{padding-left:var(--padX);padding-right:var(--padL)}
  html[dir=rtl][data-rail] #stage:not(.simple).in-world .life-detail.dash :is(.wt,.ld-head){margin-left:calc(-1 * var(--padX,28px));margin-right:calc(-1 * var(--padL,28px));padding-left:var(--padX,28px);padding-right:var(--padL,28px)}
}
@media (min-width:761px) and (max-width:1179px){
  html[dir=rtl][data-rail] #stage:not(.simple):not(.reading):not(.in-life) :is(#greet,#dock,#dockHint,#convoResume){translate:calc((var(--rail-room) - 20px) / -2) 0}
}
/* the pill that slides between rows (one in the panel, one in the ☰ menu) */
.gr-pill{position:absolute;left:0;top:0;z-index:0;border-radius:999px;pointer-events:none;opacity:0;
  background:var(--gl-pill);border:1px solid var(--gl-pill-rim);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.25),0 8px 20px -10px rgba(0,0,0,.8);
  transition:transform .24s var(--gl-ease),opacity .16s ease-out}
.gr-pill.on{opacity:1}
.gr-pill.tint{background:radial-gradient(120% 140% at 0% 50%,rgba(var(--c),.2),rgba(var(--c),0) 70%),var(--gl-pill);border-color:rgba(var(--c),.32)}
html:not([data-rail]) .gr-pill,#stage.simple .gr-pill{display:none}
/* the little glass label beside a row */
.gr-tip{position:fixed;left:0;top:0;z-index:40;pointer-events:none;transition:transform .2s var(--gl-ease)}
.gr-tip>span{display:flex;align-items:center;gap:8px;height:30px;padding:0 12px;border-radius:999px;white-space:nowrap;font:500 13px/1 var(--sans);color:var(--ink-1);
  background:linear-gradient(180deg,rgba(40,44,64,.82),rgba(18,20,33,.88));border:1px solid var(--gl-rim);box-shadow:var(--gl-lit),0 10px 26px -10px rgba(0,0,0,.85);
  -webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);
  opacity:0;transform:translateX(-6px) scale(.97);transform-origin:left center;transition:opacity .14s ease-out,transform .18s var(--gl-ease)}
html[dir=rtl] .gr-tip>span{transform:translateX(6px) scale(.97);transform-origin:right center}
.gr-tip.on>span{opacity:1;transform:none}
.gr-tip b{min-width:20px;height:18px;padding:0 6px;display:inline-grid;place-items:center;border-radius:999px;font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink-2);background:rgba(246,239,230,.09)}
html:not([data-rail]) .gr-tip{display:none}
/* the ☰ menu (a computer's floating panel, a tablet's and a phone's drawer): the same glass */
html[data-rail] .bk-menu{border-radius:30px;border:1px solid var(--gl-rim);background:var(--gl-tint),var(--gl-fill);box-shadow:var(--gl-lit),var(--gl-drop);
  -webkit-backdrop-filter:var(--gl-blur);backdrop-filter:var(--gl-blur);isolation:isolate}
html[data-rail] .bk-menu::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,0) 90px)}
html[data-rail] .bk-menu::after{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:var(--gl-grain);background-size:140px;opacity:.05;mix-blend-mode:overlay}
html[data-rail] .bk-row,html[data-rail] .bk-myday{position:relative;z-index:1;border-radius:999px}
html[data-rail] .bk-myday{border-radius:26px}
@media (hover:hover) and (pointer:fine){html[data-rail] .bk-row:hover{background:none}}
html[data-rail] .bk-row:active{background:var(--gl-pill);box-shadow:inset 0 0 0 1px var(--gl-pill-rim);transform:scale(.98)}
@media (max-width:760px){
  /* a phone: still the whole screen (the list is the screen), now glass over the galaxy, its rows answering a press */
  html[data-rail] .bk-menu{border-radius:0!important;border:0!important;background:var(--gl-tint),linear-gradient(180deg,rgba(18,20,34,.9),rgba(7,8,16,.95))!important}
  html[data-rail] .bk-menu::before,html[data-rail] .bk-menu::after{border-radius:0}
  html[data-rail] .bk-row,html[data-rail] .bk-sec{border-radius:16px}
}
/* no live blur (low power, or her device asks for less see-through): the glass turns nearly solid, still lit at the edge */
html.low-power[data-rail] #stage:not(.simple) .rail,html.low-power[data-rail] .bk-menu{background:linear-gradient(180deg,rgba(26,29,44,.97),rgba(12,13,22,.98))!important}
@media (prefers-reduced-transparency:reduce){
  html[data-rail] #stage:not(.simple) .rail,html[data-rail] .bk-menu,.gr-tip>span{background:linear-gradient(180deg,rgba(26,29,44,.98),rgba(12,13,22,.99))!important;-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-reduced-motion:reduce){
  html[data-rail] #stage:not(.simple) .rail,.gr-pill,.gr-tip,.gr-tip>span,html[data-rail] #stage .rail *{transition:none!important}
}
/* Customize › Look › Menu style: a quiet "Preview" tag beside the heading */
.cz-pre{display:inline-block;margin-inline-start:8px;padding:2px 9px;border-radius:999px;vertical-align:2px;font-size:12px;font-weight:500;color:var(--ink-2);border:1px solid var(--hair-2)}
/* ==== end Glass menu ==== */

/* ==== Life sections scroll (Nov 2 2026; public/js/railscroll.js). Katie: "This scroll also isn't intuitive - let's
   show the scroll bar better." The side panel's list of life sections takes the room the panel has left (the rows
   above it tighten a little on short windows), shows only whole rows (scrolling stops on a row, so none is ever half
   cut under the heading), and when some don't fit, a small bar under it says so in words: "3 more ⌄" and "⌃ 2 above",
   each a button that pages to them. Folded to icons it's one "+3 ⌄" chip under the rings. No native scrollbar. ---- */
.rs-bar{display:none}
@media (min-width:761px){
  /* the list: whole rows, a stop on each, no native bar (the words below say what's hidden) */
  html #stage .rail .rail-list.rs-on{scroll-snap-type:y mandatory;scrollbar-width:none;-webkit-mask-image:none;mask-image:none}
  html #stage .rail .rail-list.rs-on::-webkit-scrollbar{display:none}
  html #stage .rail .rail-list.rs-on>ol>li{scroll-snap-align:start}
  /* a soft edge only where rows continue past it */
  html #stage .rail .rail-list.rs-on:is(.rs-ma,.rs-mb){--rs-a:#000;--rs-b:#000;-webkit-mask-image:linear-gradient(var(--rs-a),#000 10px,#000 calc(100% - 10px),var(--rs-b));mask-image:linear-gradient(var(--rs-a),#000 10px,#000 calc(100% - 10px),var(--rs-b))}
  html #stage .rail .rail-list.rs-on.rs-ma{--rs-a:rgba(0,0,0,.25)}
  html #stage .rail .rail-list.rs-on.rs-mb{--rs-b:rgba(0,0,0,.25)}
  /* the bar: "3 more" leads (it's what you reach for at the bottom of a list), "2 above" sits at the far side */
  #stage:not(.simple) .rail .rs-bar.on{display:flex;align-items:center;justify-content:space-between;gap:6px;height:28px;margin:-1px 0 -1px;padding-inline:4px}
  .rs-b{position:relative;z-index:1;display:inline-flex;align-items:center;gap:5px;height:26px;padding-inline:11px 10px;border-radius:999px;white-space:nowrap;
    font:500 12.5px/1 var(--sans);color:var(--ink-2);background:rgba(var(--k-246-239-230,246,239,230),.06);box-shadow:inset 0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.11);
    opacity:0;transform:translateY(3px);pointer-events:none;
    transition:opacity .16s ease-out,transform .18s cubic-bezier(.23,1,.32,1),color .15s ease-out,background-color .15s ease-out}
  .rs-up{padding-inline:10px 11px;transform:translateY(-3px)}
  .rs-b.on{opacity:1;transform:none;pointer-events:auto}
  .rs-b svg{flex:none;opacity:.75}
  .rs-n{display:none}
  @media (hover:hover) and (pointer:fine){.rs-b:hover{color:var(--ink-1);background:rgba(var(--k-246-239-230,246,239,230),.11)}.rs-b:hover svg{opacity:1}}
  .rs-b.on:active{transform:scale(.96)}
  .rs-b:focus-visible{outline:2px solid rgba(var(--k-245-198-107,245,198,107),.8);outline-offset:2px}
  /* folded to icons: one small chip under the rings, "+3 ⌄" (or "+2 ⌃" once you're at the bottom) */
  #stage.rail-min:not(.gr-peek) .rail .rs-bar.on{justify-content:center;padding:0}
  #stage.rail-min:not(.gr-peek) .rail .rs-b{gap:1px;padding-inline:8px 7px}
  #stage.rail-min:not(.gr-peek) .rail .rs-up{padding-inline:7px 8px}
  #stage.rail-min:not(.gr-peek) .rail .rs-b .rs-l{display:none}
  #stage.rail-min:not(.gr-peek) .rail .rs-b .rs-n{display:inline;font-variant-numeric:tabular-nums}
  #stage.rail-min:not(.gr-peek) .rail .rs-bar.dn .rs-up,#stage.rail-min:not(.gr-peek) .rail .rs-bar:not(.dn) .rs-dn{display:none}
  /* folded, the hidden heading keeps to one line and the daily tools keep their bottom space, so the list has the
     same room folded as open (no row count jump as it opens) */
  html[data-rail] #stage.rail-min .rail .rail-head .rc-k{white-space:nowrap;overflow:hidden}
  html[data-rail] #stage.rail-min .rail .rail-work{padding-bottom:6px}
}
/* room for the sections first: on a shorter window the panel starts a little higher and the rows above the list
   tighten (34px, the section rows 32px with a mouse; a tablet keeps its 44px rows) */
@media (min-width:761px) and (max-height:940px){
  html[data-rail]:not([data-device=tablet]) #stage .rail .rail-proj,html[data-rail]:not([data-device=tablet]) #stage.rail-min .rail .rail-proj{min-height:36px}
}
@media (min-width:761px) and (max-height:820px){
  .rail{top:76px;bottom:12px}
  html[data-rail]:not([data-device=tablet]) #stage .rail .rail-proj,html[data-rail]:not([data-device=tablet]) #stage.rail-min .rail .rail-proj{min-height:34px}
  html[data-rail]:not([data-device=tablet]) #stage .rail-list ol button{min-height:34px}
  html[data-rail]:not([data-device=tablet]) #stage .le-rail .le-add{min-height:34px}
}
/* with a mouse or trackpad, the section rows themselves go to 32px there: one more section in view on a 768px laptop */
@media (min-width:761px) and (max-height:820px) and (hover:hover) and (pointer:fine){
  html[data-rail]:not([data-device=tablet]) #stage .rail-list ol button{min-height:32px}
}
@media (prefers-reduced-motion:reduce){.rs-b{transition:opacity .12s linear}.rs-b,.rs-up{transform:none}}
/* ==== end Life sections scroll ==== */
/* ==== Typing on a phone (Nov 2 2026; public/js/kbfields.js) ====
   Katie: "The keyboard covers the place for me to be able to text". While she types into any box that isn't a talk
   bar (an agent's question, a to-do, a section's name, a setting), the talk bars and what's pinned under them step
   aside so the keyboard and her words have the screen; they come back when she leaves the box or puts the keyboard
   away. Instant on purpose: the keyboard's own slide is the motion. Phones and tablets only (the class is never set
   on a computer). */
html.kb-field :is(#dock,#dockHint,#convoResume,#homePair,#glance .gl-work,.rate,.remind,.life-hint),
html.kb-field :is(.wt,.life-talk):not(:focus-within){visibility:hidden!important;opacity:0!important;pointer-events:none!important}
/* the overview's bar sits in the page's column, not over it: let the list have its room */
html.kb-field .ov-talk:not(:focus-within){display:none!important}
/* an agent's buttons (Send answer, Ask, Skip) ride just above the keyboard, not 80px up where the bar was */
html.kb-field .hub.has-talk .ax-card .ax-acts{bottom:0}
/* a notice while she types: at the top, never on the box or the keyboard */
html.kb-field #toast,html.kb-field #stage #toast{top:calc(env(safe-area-inset-top,0px) + 10px);bottom:auto}
/* ==== end Typing on a phone ==== */
/* ==== Calendar shortcut (Nov 2 2026; #calBtn in public/index.html, .md-calbtn in public/js/overview.js, the pop-over
   in public/js/tasks.js). Katie: "We don't see the calendar shortcut like before. I liked that on the main page, and
   in the dashboard", and "what is this The week ahead supposed to do?". One glass button with a calendar icon, the
   same on home's top bar and At a Glance: the word "Calendar" beside the icon on a computer, the icon alone on a phone
   (40px circle, 44px to touch). Her next 7 days drop from under it, over whichever page it is on. ==== */
.cal-btn{position:relative;display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 15px 0 13px;border-radius:999px;border:1px solid var(--hair-2);background:rgba(var(--k-3-4-10,3,4,10),.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink-1);font:inherit;font-size:13px;white-space:nowrap;cursor:pointer;transition:border-color .2s ease,background-color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.cal-btn .cal-ic{flex:none;color:var(--ice)}
@media (hover:hover){.cal-btn:hover{border-color:rgba(var(--k-92-225-255,92,225,255),.45);background:rgba(var(--k-92-225-255,92,225,255),.06)}}
.cal-btn[aria-expanded="true"]{border-color:rgba(var(--k-92-225-255,92,225,255),.55);background:rgba(var(--k-92-225-255,92,225,255),.1)}
.cal-btn:active{transform:scale(.97)}
.cal-btn:focus-visible{outline:2px solid rgba(var(--k-92-225-255,92,225,255),.7);outline-offset:3px}
.overview.md .md-calbtn{flex:none}
@media (max-width:760px){
  .cal-btn{width:40px;height:40px;padding:0;justify-content:center}
  .cal-btn .cal-l{display:none}
  .cal-btn .cal-ic{width:18px;height:18px}
  .cal-btn::after{content:"";position:absolute;inset:-2px;border-radius:50%}
  .overview.md .md-calbtn{width:44px;height:44px}
}
/* the pop-over: opened from a button it drops from under it (right-aligned under a button on the right), and it
   shows over At a Glance and a life section instead of behind them */
.upcoming.from-right{transform-origin:top right}
#stage.in-overview .upcoming.over.on,#stage.in-life .upcoming.over.on{opacity:1!important;pointer-events:auto!important}
.upcoming.over{z-index:16}
.up-head{align-items:flex-start;gap:12px}
.up-title{min-width:0}
.up-sub{margin:4px 0 0;font-size:13px;line-height:1.4;color:var(--ink-2)}
.upcoming .up-head .ld-x{flex:none;display:grid;place-items:center;min-width:44px;min-height:44px;margin:-8px -10px 0 0;padding:0;border-radius:50%}
html[dir=rtl] .upcoming .up-head .ld-x{margin:-8px 0 0 -10px}
.up-connect{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:10px 16px 2px;padding:14px 16px;border-radius:16px;border:1px solid rgba(var(--k-245-198-107,245,198,107),.28);background:rgba(var(--k-245-198-107,245,198,107),.06)}
.up-connect p{margin:0;font-size:14px;line-height:1.45;color:var(--ink-1)}
.up-connect .up-connect-b{min-height:44px;padding:0 18px;background:var(--gold);color:var(--h-1d1408,#1d1408);border:0;transition:transform .16s cubic-bezier(.23,1,.32,1)}
.up-connect .up-connect-b:active{transform:scale(.97)}
/* (on a phone the calendars it reads take the whole line, so a long work address is never cut off by Refresh) */
@media (max-width:760px){.upcoming .up-foot{flex-wrap:wrap}.upcoming .up-sync{flex:1 1 100%}.upcoming .up-sync .sy{overflow-wrap:anywhere}}
@media (prefers-reduced-motion:reduce){.cal-btn,.cal-btn:active,.up-connect .up-connect-b:active{transition:none;transform:none}}
/* ==== end Calendar shortcut ==== */
/* ==== Hourly affirmations (Nov 2 2026; public/js/affirm.js, affirmline.js) ==== */
/* At a Glance: one quiet line under the date, a small lavender star before it (Astrology's colour), a faint ⋯ after */
.md-aff{position:relative;display:flex;align-items:flex-start;gap:9px;width:fit-content;margin:10px 0 0;max-width:min(62ch,100%)}
.md-aff-mk{flex:none;display:grid;place-items:center;width:14px;height:22px;color:rgba(214,196,255,.85)}
.md-aff-mk svg{filter:drop-shadow(0 0 6px rgba(214,196,255,.45))}
.md-aff-t{margin:0;min-width:0;font-family:var(--display);font-size:16.5px;line-height:1.38;color:var(--ink-2);text-wrap:pretty;transition:opacity .2s cubic-bezier(.23,1,.32,1),filter .2s cubic-bezier(.23,1,.32,1)}
html[lang=ar] .md-aff-t{font-size:17px;line-height:1.6}
.md-aff.swap .md-aff-t{opacity:0;filter:blur(2px)}
/* the ⋯: small to look at, a full 44px to tap */
.md-aff-more{position:relative;flex:none;display:grid;place-items:center;width:28px;height:22px;margin:0;padding:0;border:0;border-radius:999px;background:none;color:var(--ink-3);cursor:pointer;transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.md-aff-more::before{content:"";position:absolute;inset:-11px -8px}
.md-aff-more i{display:flex;gap:3px}.md-aff-more b{width:3px;height:3px;border-radius:50%;background:currentColor}
.md-aff-more:active{transform:scale(.94)}
.md-aff-more:focus-visible{outline:2px solid rgba(214,196,255,.7);outline-offset:2px}
@media (hover:hover) and (pointer:fine){.md-aff-more:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}}
.md-aff-more[aria-expanded=true]{color:var(--ink-1);background:rgba(246,239,230,.08)}
/* its menu: one choice, on a solid surface, growing from the ⋯ */
.md-aff-menu{position:absolute;z-index:30;top:calc(100% + 8px);inset-inline-end:0;width:min(300px,calc(100vw - 32px));padding:6px;border:1px solid var(--hair-2);border-radius:14px;background:#10121f;box-shadow:0 18px 40px rgba(0,0,0,.5);transform-origin:top right;animation:md-aff-in .16s cubic-bezier(.23,1,.32,1)}
html[dir=rtl] .md-aff-menu{transform-origin:top left}
@keyframes md-aff-in{from{opacity:0;transform:scale(.96) translateY(-4px)}}
.md-aff-off{display:block;width:100%;min-height:44px;padding:10px 12px;border:0;border-radius:10px;background:none;color:var(--ink-1);font:inherit;font-size:15px;text-align:start;cursor:pointer;transition:background-color .15s ease}
@media (hover:hover) and (pointer:fine){.md-aff-off:hover{background:rgba(246,239,230,.07)}}
.md-aff-off:focus-visible{outline:2px solid rgba(214,196,255,.7);outline-offset:-2px}
.md-aff-note{margin:2px 12px 8px;font-size:13px;line-height:1.4;color:var(--ink-3)}
@media (max-width:760px){.md-aff{margin-top:8px}.md-aff-t{font-size:15.5px}html[lang=ar] .md-aff-t{font-size:16px}
  /* on a phone the menu spans the header's width under the line, so it never runs off either edge (RTL too) */
  .overview.md .ov-titles:has(.md-aff){position:relative}.md-aff{position:static}.md-aff-menu{inset-inline:0;width:auto}}
/* Astrology's birth-details sheet: the switch sits under the form, set apart by a hairline */
.ds-aff{margin-top:18px;padding-top:12px;border-top:1px solid var(--hair)}
@media (prefers-reduced-motion:reduce){.md-aff-t{transition:opacity .2s ease}.md-aff.swap .md-aff-t{filter:none}.md-aff-menu{animation:none}.md-aff-more:active{transform:none}}
/* ==== end Hourly affirmations ==== */
/* ==== Goal affirmations (Nov 2 2026; public/js/goalaffirm.js, affirmline.js goalAffirmLine) ==== */
/* Dreams & goals: the hourly line's twin under NOVA's line, about one of her goals; centred in the glance, read left to right */
.halo-glance .ga-aff{margin:6px auto 0;max-width:min(46ch,100%);text-align:start}
.halo-glance .ga-aff .md-aff-t{font-style:italic;font-size:15.5px;line-height:1.42}
html[lang=ar] .halo-glance .ga-aff .md-aff-t{font-style:normal;font-family:var(--sans);font-size:15.5px;line-height:1.6}
.ga-aff{transition:opacity .18s cubic-bezier(.23,1,.32,1)}
.ga-aff.ga-out{opacity:0}
/* the offer, once, until she chooses: the same star, one question, two small answers */
.ga-offer-b{display:grid;gap:4px;min-width:0}
.ga-offer .md-aff-t{color:var(--ink-2)}
.ga-offer-acts{display:flex;flex-wrap:wrap;gap:4px;margin-inline-start:-10px}
.ga-offer-acts button{min-height:44px;padding:0 10px;border:0;border-radius:999px;background:none;font:inherit;font-size:14.5px;cursor:pointer;transition:color .15s ease,background-color .15s ease,transform .16s cubic-bezier(.23,1,.32,1)}
.ga-offer .ga-offer-acts .ga-offer-on{color:rgb(214,196,255);font-weight:600}
.ga-offer .ga-offer-acts .ga-offer-no{color:var(--ink-3)}
.ga-offer-acts button:active{transform:scale(.96)}
.ga-offer-acts button:focus-visible{outline:2px solid rgba(214,196,255,.7);outline-offset:-4px}
@media (hover:hover) and (pointer:fine){.ga-offer .ga-offer-acts .ga-offer-on:hover{background:rgba(214,196,255,.1)}.ga-offer .ga-offer-acts .ga-offer-no:hover{color:var(--ink-1);background:rgba(246,239,230,.06)}}
/* on a phone the ⋯ menu spans the glance under the line, so it never runs off either edge (RTL too) */
@media (max-width:760px){.halo-glance:has(.ga-aff){position:relative}.halo-glance .ga-aff{position:static}.halo-glance .ga-aff .md-aff-menu{inset-inline:16px;width:auto}}
@media (prefers-reduced-motion:reduce){.ga-aff{transition:none}.ga-offer-acts button:active{transform:none}}
/* ==== end Goal affirmations ==== */
/* Together: what a notification opened on (that person, that trip): a soft ring that fades, then gets out of the way */
.tg-here{position:relative}
.tg-here::after{content:"";position:absolute;inset:-6px;border-radius:24px;pointer-events:none;box-shadow:0 0 0 1.5px rgba(var(--cc,92,214,255),.7),0 0 28px rgba(var(--cc,92,214,255),.22);opacity:0;animation:tg-here 2.6s cubic-bezier(.23,1,.32,1) forwards}
@keyframes tg-here{12%{opacity:1}70%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.tg-here::after{animation:none;opacity:1}}

/* ---------- the pages' header (Connections, Agents, To-dos, Projects, Together: public/js/hub.js) — Nov 2 2026 ----------
   1. a solid surface. It was 92–94% see-through with a blur, so whatever scrolled under it (Connections' chips, the
      names in Your connections, an agent's card) read faintly between Back and the title, and plainly while the page
      was still scrolling (Calendar › Connect a calendar scrolls straight to the email list). Same fix as the section
      pages' header (.life-detail.dash>.ld-head above): nothing under it ever shows through.
   2. every button in it answers a 44px tap, at any width and in either direction; what you see stays the same size. */
html #hub .hub-head.hub-head{background:var(--sf-0,#0f1016);-webkit-backdrop-filter:none;backdrop-filter:none}
html:root:not(.simple) #hub.hub-space .hub-head.hub-head{background:#05060c}
html #hub .hub-head>:is(.menu,.ld-back,.hub-setup,.ld-x){position:relative}
html #hub .hub-head>:is(.menu,.ld-back,.hub-setup,.ld-x)::after{content:"";position:absolute;inset:auto;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
/* Connections' category chips: a full 44px on a touch screen (they already scroll sideways, never under the header) */
@media (pointer:coarse){.clb-chip{height:44px}}
/* ==== Review chain: how an item was checked on its way to you (public/js/reviewtrail.js, server/agents/review.js) ==== */
.rvt{margin:10px 0 0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.rvt>summary{display:flex;align-items:flex-start;gap:8px;list-style:none;cursor:pointer;min-height:44px;padding:11px 0;margin:-11px 0;border-radius:8px}
.rvt>summary::-webkit-details-marker{display:none}
.rvt>summary:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
p.rvt{display:flex;align-items:flex-start;gap:8px}
.rvt-dot{flex:none;width:7px;height:7px;margin-top:7px;border-radius:50%;background:var(--mint)}
.rvt-back .rvt-dot{background:var(--violet)}.rvt-open .rvt-dot,.rvt-un .rvt-dot{background:var(--gold)}.rvt-drop .rvt-dot{background:var(--rose)}
.rvt-line{flex:1;min-width:0}
.rvt-more{flex:none;margin-inline-start:6px;color:var(--ice);font-size:13px;white-space:nowrap}
.rvt[open] .rvt-more{color:var(--ink-3)}
.rvt-steps{margin:12px 0 0;padding:0 0 0 15px;border-inline-start:1px solid var(--hair-2,rgba(246,239,230,.18));list-style:none;display:flex;flex-direction:column;gap:8px}
[dir=rtl] .rvt-steps{padding:0 15px 0 0}
.rvt-steps li{display:flex;flex-direction:column;gap:2px}
.rvt-steps b{font-weight:600;color:var(--ink-1);font-size:13.5px}
.rvt-steps .v-send_back b,.rvt-steps .v-question b{color:var(--violet)}
.rvt-steps .v-drop b{color:var(--rose)}
.rvt-was{margin:12px 0 0;padding:10px 12px;border-radius:12px;background:rgba(246,239,230,.04);border:1px solid var(--hair,rgba(246,239,230,.1))}
.rvt-was small{display:block;color:var(--ink-3);font-size:12.5px;margin-bottom:4px}
.rvt-was p{margin:0;color:var(--ink-2);white-space:pre-line}
@media (hover:hover) and (pointer:fine){.rvt>summary:hover .rvt-more{text-decoration:underline}}
/* on a phone the line takes the full width; "How it was checked" sits under it, in line with the words */
@media (max-width:760px){.rvt>summary{flex-wrap:wrap;row-gap:2px}.rvt-more{flex-basis:100%;margin-inline-start:15px}}
.nu-chk{color:var(--mint)}
/* the team map: work sent back to revise (a violet return arrow), beside the mint tick for checked work */
.amp-back circle{fill:var(--violet);stroke:#0b0c14;stroke-width:2}.amp-back path{fill:none;stroke:#160d33;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.amp-key .k-back i{background:var(--violet);width:10px;height:10px}
.amp-backm{position:absolute;right:-4px;top:-4px;width:12px;height:12px;border-radius:50%;background:var(--violet);box-shadow:0 0 0 2px #0d0e16}
@media (max-width:760px){.amp-back{transform-box:fill-box}}
/* ==== end Review chain ==== */

/* ---------- zooming toward a life section (Nov 3 2026): the "Keep zooming…" hint never sits on top of the
   Life sections / At a Glance buttons. While it shows, those two step aside, and the words sit on a soft dark pill. -- */
#homePair{transition:opacity .2s ease-out}
body:has(#edgeHint.on) #homePair{opacity:0;pointer-events:none}
/* a card reaching into the pair's row (a tall box lifts the pair): the pair steps away (app.js, Nov 9) */
#homePair.hp-yield{opacity:0;pointer-events:none}
.edge-hint span{padding:6px 14px;border-radius:999px;background:rgba(var(--k-3-4-10,3,4,10),.72);box-shadow:0 0 0 1px rgba(var(--k-246-239-230,246,239,230),.08)}
@media (prefers-reduced-motion:reduce){#homePair{transition:none}}

/* ==== Small polish, Nov 3: the Talk bar's floor on Agents (and every hub page) ====
   Katie: faint text showed through by the Talk bar, bottom right of Agents (the "Your agents" list scrolling behind
   it). The band behind the bar was 98.5% dark, so a bright line under it still read faintly. Now the bar sits on a
   solid floor and what scrolls under it fades out over a short ramp above it, so nothing reads through. */
html:root:not(.simple) #hub.hub-space .wt::before{inset:-44px 0 0;background:linear-gradient(to top,rgb(3,4,10) calc(100% - 44px),rgba(3,4,10,.9) calc(100% - 28px),rgba(3,4,10,0))}
/* ==== end Small polish, Nov 3 ==== */
/* first-run walk (Nov 4 2026): the home screen's menu and video-call buttons answer a 44px tap, like the hub's header
   buttons above; what you see stays the same size */
#menu::after,#videoCall::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
#videoCall{position:relative}
/* Simple view on a phone: the drawer's own close button, beside the wordmark (a wide screen keeps the sidebar open, so none) */
.sv-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sv-x{display:none}
@media (max-width:900px){
  .sv-x{display:grid;place-items:center;flex:none;width:44px;height:44px;margin:-10px -6px -10px 0;border-radius:50%;color:var(--ink-2);transition:color .2s ease,transform .16s cubic-bezier(.23,1,.32,1)}
  .sv-x:active{transform:scale(.96)}
  .sv-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
  html[dir=rtl] .sv-x{margin:-10px 0 -10px -6px}
}
/* Touch: invisible 44px hit areas on the small controls a phone reaches most (Nov 7 review measured 32–36px and a
   15px "Show 7 more"). The look doesn't change; only the area that answers a finger. */
@media (pointer:coarse){
  :is(.sheet-close,.cz-mic,.tsl-x,.tsl-add,.r-listen,.ag-sw,.sch-more,.mbrief-fold,.mbrief-x,.sch-plus,.sheet-go-b){position:relative}
  :is(.sheet-close,.cz-mic,.tsl-x,.r-listen)::after{content:"";position:absolute;inset:-6px}
  :is(.tsl-add,.mbrief-fold,.mbrief-x,.sheet-go-b)::after{content:"";position:absolute;inset:-7px -4px}
  .sch-plus::after{content:"";position:absolute;inset:-3px}
  .tcheck::before{content:"";position:absolute;inset:-12px}
  .ag-sw::after{content:"";position:absolute;inset:-10px -4px}
  .sch-more::after{content:"";position:absolute;inset:-14px 0}
  .remind :is(.yes,.no){min-height:44px}
}
/* ==== Finance › Money plan (Household Money part 3, Nov 7 2026; public/js/moneyplan.js, moneyplan-model.js,
   moneyplan-setup.js). One page for one person's plan or a household's, inside Finance's Halo (`.halo-own`). The
   header is the plan's scene (its cover photo behind an 84% night veil, or a faint wash of her colour), then one
   swipeable rail of sections that never widens a 390px page, then cards on the one card surface. Each person has a
   colour (`--pc`); joint is neutral. Gold = action and "not met", mint = done, rose never (a tight plan is a fact).
   Outlined gold for actions inside cards; the start screen's Start is the one filled gold button. Words never on the
   photo or the stars: every caption sits on a surface. Transform and opacity only; nothing moves under reduced
   motion. Kept in one block. ==== */
.mp{--mp-c:var(--ice);display:grid;gap:var(--h-gap,12px);min-width:0;grid-template-columns:minmax(0,1fr)}
.mp :is(.mp-head,.mp-card,.mp-tile){background:var(--card-fill);border:1px solid var(--card-rim);box-shadow:var(--card-lit),var(--card-drop);border-radius:var(--card-radius,18px)}
html.simple .mp :is(.mp-head,.mp-card,.mp-tile){background:var(--sf-1);box-shadow:none;border-color:var(--sf-edge)}
/* the header: the plan's scene */
.mp-head{position:relative;overflow:hidden;min-height:132px;padding:20px 18px 16px;display:grid;gap:10px;align-content:end;isolation:isolate;
  background:radial-gradient(120% 110% at 0% 0%,color-mix(in srgb,var(--mp-c) 12%,transparent),transparent 60%),var(--card-fill)}
html[dir=rtl] .mp-head{background:radial-gradient(120% 110% at 100% 0%,color-mix(in srgb,var(--mp-c) 12%,transparent),transparent 60%),var(--card-fill)}
.mp-head.has-cover{min-height:184px}
.mp-scene{position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .3s cubic-bezier(.23,1,.32,1)}
.mp-scene.on{opacity:1}
.mp-scene img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) blur(1.5px);transform:scale(1.03)}
.mp-scene::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(3,4,10,.62) 0%,rgba(3,4,10,.84) 52%,rgba(3,4,10,.93) 100%)}
.mp-headin{display:grid;gap:6px;min-width:0;padding-inline-end:120px}
.mp-title{margin:0;font:400 30px/1.1 var(--display);letter-spacing:-.01em;color:var(--ink-1);overflow-wrap:anywhere;text-wrap:balance}
.mp-who{margin:0;font-size:14px;line-height:1.4;color:var(--ink-2)}
.mp-dot{color:var(--ink-3)}
.mp-people{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.mp-person{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:0 11px 0 9px;border-radius:999px;background:rgba(3,4,10,.55);border:1px solid var(--sf-edge-2);font:600 13px var(--sans);color:var(--ink-1)}
.mp-person i{width:8px;height:8px;border-radius:50%;background:var(--pc);box-shadow:0 0 0 3px color-mix(in srgb,var(--pc) 18%,transparent)}
.mp-person small{font:500 11.5px var(--sans);color:var(--ink-3)}
.mp-photow{position:absolute;top:12px;inset-inline-end:12px;display:flex;align-items:center;gap:4px}
.mp-photo{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(3,4,10,.72);color:var(--ink-2);font:600 12.5px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),color .15s ease}
.mp-photo:hover{color:var(--ink-1)}.mp-photo:active{transform:scale(.96)}.mp-photo:disabled{opacity:.5}
.mp-photow .mp-link{background:rgba(3,4,10,.72);border-radius:999px;padding:0 10px;min-height:36px}
.mp-ic{display:inline-grid;place-items:center;flex:none}
/* the rail: every section in one row that scrolls on its own (never the page) */
.mp-rail{display:flex;gap:2px;min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;padding:3px;border-radius:999px;background:rgba(15,16,22,.86);border:1px solid var(--sf-edge);
  -webkit-mask:linear-gradient(90deg,transparent,#000 14px,#000 calc(100% - 14px),transparent);mask:linear-gradient(90deg,transparent,#000 14px,#000 calc(100% - 14px),transparent);scroll-padding-inline:24px}
.mp-rail::-webkit-scrollbar{display:none}
.mp-tab{flex:none;scroll-snap-align:start;display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 15px;border:0;border-radius:999px;background:none;color:var(--ink-2);font:600 13.5px var(--sans);white-space:nowrap;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.mp-tab:hover{color:var(--ink-1)}.mp-tab:active{transform:scale(.97)}
.mp-tab[aria-selected="true"]{background:var(--ink-1);color:#0f1016}
.mp-tab:focus-visible{outline:2px solid var(--ice);outline-offset:-2px}
.mp-tdot{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%}
html[data-device=phone] .mp-tab,html[data-device=tablet] .mp-tab{min-height:44px}
/* the body: one column on a phone, two from 820px of section width */
.mp-body{display:grid;gap:var(--h-gap,12px);grid-template-columns:minmax(0,1fr);align-items:start;min-width:0}
.mp-body>:is(.mp-tiles,.mp-seg,.mp-chips,.mp-lead,.mp-txtop,.mp-stackcol,.mp-calm,.mp-billcard){grid-column:1/-1}
.mp-stackcol{display:grid;gap:var(--h-gap,12px);grid-template-columns:minmax(0,1fr);min-width:0}
.mp-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.mp-tile{display:grid;align-content:start;gap:4px;min-width:0;padding:14px}
.mp-tn{font:600 13.5px var(--sans);color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-tv{font:300 25px/1.15 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--ink-1);overflow-wrap:anywhere}
.mp-ts{font-size:12.5px;line-height:1.35;color:var(--ink-2);overflow-wrap:anywhere}
.mp-tile.hc-warn .mp-tv{color:var(--gold)}.mp-tile.hc-none .mp-tv{color:var(--ink-3)}
.mp-card{display:grid;gap:10px;align-content:start;min-width:0;padding:15px 16px 16px}
.mp-h{margin:0;font:600 15px/1.3 var(--sans);color:var(--ink-1)}
.mp-sub{margin:-4px 0 2px;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.mp-small{margin:0;font-size:13px;color:var(--ink-3)}
.mp-lead{margin:2px 4px;font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.mp-lead.hc-warn{color:var(--gold)}
.mp-calm{margin:0;display:flex;align-items:center;gap:10px;font-size:14px;line-height:1.5;color:var(--ink-2)}
.mp-calm::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--ink-3)}
.mp-body>.mp-calm{padding:12px 14px;border-radius:14px;background:rgba(15,16,22,.86);border:1px solid var(--sf-edge)}
.mp-warn{margin:0;font:500 13.5px/1.45 var(--sans);color:var(--gold)}
.mp-note{margin:0;padding:10px 12px;border-radius:12px;background:rgba(92,225,255,.06);font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.mp-note.warn{background:rgba(245,198,107,.08);color:var(--ink-1)}
.mp-foot{justify-self:center;margin:4px 0 0;padding:7px 12px;border-radius:10px;background:#03040a;font-size:12.5px;color:var(--ink-3);text-align:center}
/* rows: a name and a quiet line, then a tag and an amount */
.mp-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 0;border-top:1px solid var(--hair);min-width:0}
.mp-card>.mp-h+.mp-row,.mp-card>.mp-sub+.mp-row,.mp-card>.mp-row:first-child,.mp-card>div>.mp-row:first-child{border-top:0}
.mp-rt{flex:1;min-width:0;display:grid;gap:2px}
.mp-rn{font:500 14.5px/1.3 var(--sans);color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-rs{font-size:12.5px;line-height:1.4;color:var(--ink-2);overflow-wrap:anywhere}
.mp-ra{flex:none;font:500 15px var(--sans);font-variant-numeric:tabular-nums;color:var(--ink-1);white-space:nowrap}
.mp-ra.in{color:var(--mint)}.mp-ra.neg{color:var(--gold)}
.mp-row.mp-total{border-top:1px solid var(--hair-2)}
.mp-row.mp-total .mp-rn{font-weight:600}
.mp-who2{display:inline-flex;align-items:center;gap:8px;font:500 14.5px var(--sans);color:var(--ink-1);min-width:0}
.mp-tag{flex:none;display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(246,239,230,.03);font:600 11.5px var(--sans);color:var(--ink-2);white-space:nowrap}
button.mp-tag{min-height:32px;cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
button.mp-tag:active{transform:scale(.96)}
.mp-tag.free,.mp-tag.bill{border-color:rgba(111,242,196,.35);color:var(--mint)}
.mp-tag.earns{border-color:rgba(245,198,107,.35);color:var(--gold)}
.mp-tag.warn{border-color:rgba(245,198,107,.45);color:var(--gold);white-space:normal}
.mp-tag.joint{color:var(--ink-1)}.mp-tag.business{border-color:rgba(144,133,233,.45);color:#b8aef5}.mp-tag.savings{border-color:rgba(25,158,112,.5);color:#5fd3a6}
.mp-tag.t-work_reimbursable{color:var(--ice);border-color:rgba(92,225,255,.35)}.mp-tag.t-business{border-color:rgba(144,133,233,.45);color:#b8aef5}.mp-tag.t-joint{color:var(--ink-1);border-color:var(--hair-2)}.mp-tag.t-needs_review{color:var(--gold);border-color:rgba(245,198,107,.4)}.mp-tag.t-ignore{color:var(--ink-3)}
/* segmented choices and chips */
.mp-seg{display:flex;gap:2px;padding:3px;border-radius:999px;background:rgba(246,239,230,.05);min-width:0}
.mp-seg button{flex:1 1 0;min-width:0;min-height:38px;border:0;background:none;color:var(--ink-2);font:600 13px var(--sans);padding:0 10px;border-radius:999px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .15s ease,color .15s ease}
.mp-seg button[aria-checked="true"]{background:var(--ink-1);color:#0f1016}
.mp-seg button:focus-visible{outline:2px solid var(--ice);outline-offset:-2px}
.mp-body>.mp-seg.mp-per{justify-self:start;width:min(380px,100%);background:rgba(15,16,22,.86);border:1px solid var(--sf-edge)}
.mp-chips{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.mp-chip{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(15,16,22,.86);color:var(--ink-2);font:600 13px var(--sans);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .14s cubic-bezier(.23,1,.32,1)}
.mp-chip:active{transform:scale(.97)}
.mp-chip small{font:600 11.5px var(--sans);color:var(--ink-3)}
.mp-chip:is([aria-pressed="true"],[aria-checked="true"],[aria-selected="true"],.on){border-color:rgba(92,225,255,.5);background:rgba(92,225,255,.1);color:var(--ink-1)}
html[data-device=phone] .mp-chip{min-height:44px}
/* buttons: outlined gold inside cards, filled gold once on the start screen */
.mp-btn{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid rgba(245,198,107,.55);background:rgba(245,198,107,.06);color:var(--gold);font:600 14px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .15s ease}
.mp-btn:hover{background:rgba(245,198,107,.12)}.mp-btn:active{transform:scale(.97)}.mp-btn:disabled{opacity:.5;cursor:default}
.mp-btn.primary{min-height:56px;padding:0 26px;border:0;background:var(--gold);color:#1d1408;font-size:16px}
.mp-btn.ghost{border-color:var(--sf-edge-2);background:rgba(246,239,230,.04);color:var(--ink-1)}
.mp-link{border:0;background:none;color:var(--ink-2);font:600 13px var(--sans);min-height:44px;padding:0 6px;cursor:pointer}
.mp-link:hover{color:var(--ink-1)}
.mp-btn:focus-visible,.mp-link:focus-visible,.mp-chip:focus-visible,.mp-photo:focus-visible,.mp-addb:focus-visible,.mp-use:focus-visible,button.mp-tag:focus-visible,.mp-payer:focus-visible{outline:2px solid var(--ice);outline-offset:2px}
.mp-add{display:grid;gap:10px;padding-top:4px}
.mp-addb{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;border:0;background:none;color:var(--gold);font:600 14px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1)}
.mp-addb:active{transform:scale(.97)}
/* small forms: labels above full-width fields */
.mp-form{display:grid;gap:12px;padding:12px;border-radius:14px;background:rgba(246,239,230,.035);min-width:0}
.mp-field{display:grid;gap:6px;min-width:0}
.mp-fl{font-size:13px;color:var(--ink-2)}
.mp-in{display:flex;align-items:center;min-height:46px;border-radius:12px;border:1px solid var(--hair-2);background:rgba(0,0,0,.28);min-width:0;transition:border-color .15s ease}
.mp-in:focus-within{border-color:rgba(92,225,255,.6)}
.mp-in input{flex:1;min-width:0;height:44px;border:0;background:none;color:var(--ink-1);font:16px var(--sans);padding:0 12px;caret-color:var(--gold);outline:0;color-scheme:dark}
.mp-in.money input{padding-inline-start:4px;font-variant-numeric:tabular-nums}
.mp-pre{padding-inline-start:12px;color:var(--ink-3);font-size:16px}
.mp-hint{font-size:12.5px;line-height:1.4;color:var(--ink-3)}
.mp-err{margin:0;font:500 13.5px var(--sans);color:var(--rose)}
.mp-err:empty{display:none}
.mp-facts{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mp-switch{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--hair);cursor:pointer;position:relative}
.mp-switch.small{min-height:44px;border-top:0;padding:0}
.mp-switch input{position:absolute;opacity:0;width:1px;height:1px}
.mp-knob{flex:none;width:44px;height:26px;border-radius:999px;background:rgba(246,239,230,.14);position:relative;transition:background-color .15s ease}
.mp-knob::after{content:"";position:absolute;top:3px;inset-inline-start:3px;width:20px;height:20px;border-radius:50%;background:var(--ink-1);transition:transform .18s cubic-bezier(.23,1,.32,1)}
.mp-switch input:checked+.mp-knob{background:var(--mint)}
.mp-switch input:checked+.mp-knob::after{transform:translateX(18px);background:#0f1016}
html[dir=rtl] .mp-switch input:checked+.mp-knob::after{transform:translateX(-18px)}
.mp-switch input:focus-visible+.mp-knob{outline:2px solid var(--ice);outline-offset:2px}
/* Overview's pictures */
.mp-donutw{display:grid;grid-template-columns:128px minmax(0,1fr);gap:16px;align-items:center}
.mp-donut{position:relative;width:128px;height:128px}
.mp-dmid{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:1px}
.mp-dmid b{font:300 19px var(--sans);font-variant-numeric:tabular-nums;color:var(--ink-1)}
.mp-dmid span{font-size:11.5px;color:var(--ink-3)}
.mp-bars{display:grid;gap:9px;min-width:0}
.mp-bar{display:grid;gap:5px;min-width:0}
.mp-bart{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--ink-2)}
.mp-bart>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-bart b{font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-1)}
.mp-trk{height:6px;border-radius:3px;background:rgba(246,239,230,.06);overflow:hidden}
.mp-trk i{display:block;height:100%;width:var(--w);border-radius:3px;transform-origin:left center}
html[dir=rtl] .mp-trk i{transform-origin:right center}
.mp-check{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--hair)}
.mp-card>.mp-sub+.mp-check{border-top:0;padding-top:2px}
.mp-checkt{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.mp-checkt b{font:500 15px var(--sans);font-variant-numeric:tabular-nums}
.mp-stack{display:flex;gap:2px;height:14px;border-radius:7px;overflow:hidden;background:rgba(246,239,230,.05)}
.mp-stack i{flex:none;width:var(--w);height:100%;transform-origin:left center}
html[dir=rtl] .mp-stack i{transform-origin:right center}
.mp-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--ink-2)}
.mp-lg{display:inline-flex;align-items:center;gap:7px}
.mp-lg i{width:9px;height:9px;border-radius:3px;background:var(--lc)}
.mp-lg i.dash{width:14px;height:0;border-radius:0;border-top:1.6px dashed var(--lc);background:none}
.mp-lg b{font-weight:500;color:var(--ink-1)}
.mp-chart{display:grid;gap:10px;min-width:0}
.mp-lines svg{display:block;width:100%;height:132px;overflow:visible}
.mp-axis{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-3)}
/* Joint */
.mp-jbill{align-items:flex-start;padding:12px 0}
.mp-jbill .mp-ra{padding-top:2px}
.mp-payers{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.mp-payer{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--sf-edge-2);background:rgba(246,239,230,.03);color:var(--ink-1);font:600 12.5px var(--sans);cursor:pointer;transition:transform .14s cubic-bezier(.23,1,.32,1),border-color .15s ease}
.mp-payer small{font:500 11.5px var(--sans);color:var(--ink-3)}
.mp-payer:hover{border-color:rgba(245,198,107,.45)}.mp-payer:active{transform:scale(.96)}.mp-payer:disabled{cursor:default;opacity:.85}
html[data-device=phone] .mp-payer{min-height:44px}
/* a member's page: the paycheck autopilot, in payday order */
.mp-step{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--hair)}
.mp-card>.mp-sub+.mp-step{border-top:0}
.mp-stepn{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--sc);color:var(--ink-1);font:600 12px var(--sans);font-variant-numeric:tabular-nums}
.mp-label{width:100%;max-width:280px;min-height:34px;border:0;border-bottom:1px dashed var(--hair-2);background:none;color:var(--ink-2);font:14px var(--sans);padding:0 2px;caret-color:var(--gold);outline:0}
.mp-label:focus{border-bottom-color:var(--ice);color:var(--ink-1)}
.mp-label::placeholder{color:var(--ink-3)}
html[data-device=phone] .mp-label{min-height:40px;font-size:16px}
.mp-stale{margin:0;font-size:12.5px;color:var(--ink-3)}
.mp-stale.stale{opacity:.7}
.mp-share{display:grid;gap:8px;padding:12px 0;border-top:1px solid var(--hair);min-width:0}
.mp-share>.mp-rn{white-space:normal}
.mp-seg.mp-lvl button{font-size:12.5px;padding:0 6px}
/* Debt */
.mp-debthero{justify-items:start;gap:6px}
.mp-big{font:300 40px/1.05 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--mint)}
.mp-debthero .mp-sub{margin:0}
.mp-tick{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--hair);cursor:pointer;position:relative}
.mp-tick input{position:absolute;opacity:0;width:1px;height:1px}
.mp-box{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--hair-2);display:grid;place-items:center;transition:background-color .15s ease,border-color .15s ease}
.mp-tick.on .mp-box{background:var(--mint);border-color:var(--mint)}
.mp-tick.on .mp-box::after{content:"";width:6px;height:11px;border:solid #0f1016;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.mp-tick input:focus-visible+.mp-box{outline:2px solid var(--ice);outline-offset:2px}
.mp-tick.on .mp-rn{color:var(--ink-2)}
.mp-strat{margin-top:4px}
/* Bills */
.mp-shares{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px}
.mp-share1{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}
.mp-share1 b{font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-1)}
/* Transactions */
.mp-txtop{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.mp-export{min-height:40px;font-size:13px;padding:0 14px}
.mp-txtools{display:grid;gap:10px;min-width:0}
.mp-search{display:flex;align-items:center;gap:8px;min-height:46px;padding:0 12px;border-radius:12px;border:1px solid var(--sf-edge-2);background:rgba(15,16,22,.92);color:var(--ink-3)}
.mp-search:focus-within{border-color:rgba(92,225,255,.6)}
.mp-search input{flex:1;min-width:0;height:44px;border:0;background:none;color:var(--ink-1);font:16px var(--sans);outline:0}
.mp-groups{display:grid;gap:8px;min-width:0}
.mp-group{border-radius:14px;background:var(--card-fill);border:1px solid var(--card-rim);min-width:0}
html.simple .mp-group{background:var(--sf-1)}
.mp-group>summary{display:flex;align-items:center;gap:10px;min-height:56px;padding:6px 14px;cursor:pointer;list-style:none}
.mp-group>summary::-webkit-details-marker{display:none}
.mp-group>summary .mp-ic{color:var(--ink-3);transition:transform .18s cubic-bezier(.23,1,.32,1)}
.mp-group[open]>summary .mp-ic{transform:rotate(90deg)}
html[dir=rtl] .mp-group>summary .mp-ic{transform:scaleX(-1)}
html[dir=rtl] .mp-group[open]>summary .mp-ic{transform:rotate(90deg)}
.mp-group>summary:focus-visible{outline:2px solid var(--ice);outline-offset:-2px;border-radius:14px}
.mp-use{margin:0 14px 4px;min-height:40px;padding:0 12px;border-radius:999px;border:1px solid rgba(245,198,107,.45);background:none;color:var(--gold);font:600 12.5px var(--sans);cursor:pointer}
.mp-tx{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 14px;border-top:1px solid var(--hair)}
.mp-pick{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px 12px;background:rgba(246,239,230,.03)}
.mp-pick .mp-hint{flex-basis:100%}
/* no plan yet: the start screen */
.mp-start{justify-items:center;text-align:center;gap:12px;padding:28px 20px 22px;background:radial-gradient(90% 70% at 50% 0%,rgba(245,198,107,.08),transparent 70%),var(--card-fill)}
.mp-startart svg{display:block;max-width:100%;height:auto}
.mp-starth{margin:0;max-width:22ch;font:400 28px/1.15 var(--display);letter-spacing:-.01em;text-wrap:balance}
.mp-start .mp-sub{margin:0;max-width:48ch}
.mp-starts{list-style:none;margin:4px 0 6px;padding:0;display:grid;gap:8px;text-align:start;max-width:44ch}
.mp-starts li{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.45;color:var(--ink-2)}
.mp-starts .mp-ic{color:var(--mint);margin-top:1px}
.mp-start .mp-btn{justify-self:center}
.mp-invite{border-color:rgba(169,139,255,.4)}
.mp-invite .mp-sub b{font-weight:600;color:var(--ink-1)}
.mp-error .mp-btn{margin-top:2px}
.mp-error h3{margin:0;font:600 16px var(--sans)}
.mp-error p{margin:0;color:var(--ink-2);font-size:14px}
/* setup: share levels and the photo on NOVA's guided sheet */
.mps-acct{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--hair)}
.mps-acct b{font:600 14.5px var(--sans)}
.mps-cover{justify-items:start}
.mps-thumb:not(:empty){width:100%;max-width:320px;aspect-ratio:16/7;border-radius:14px;overflow:hidden;border:1px solid var(--hair)}
.mps-thumb img{width:100%;height:100%;object-fit:cover}
/* loading: shaped like the page, a soft sweep across */
.mp-sk{display:block;border-radius:7px;background:rgba(246,239,230,.06);position:relative;overflow:hidden}
.mp-sk.w1{width:58%;height:28px}.mp-sk.w2{width:40%;height:14px}.mp-sk.pill{flex:none;width:86px;height:34px;border-radius:999px}
.mp-sk.l{width:52%;height:11px}.mp-sk.n{width:38%;height:24px;border-radius:8px}.mp-sk.block{width:100%;height:96px;border-radius:12px}
.mp-sk-tile{min-height:92px}
.mp-sk::after{content:'';position:absolute;inset:0;background:linear-gradient(100deg,transparent 25%,rgba(214,240,255,.075) 45%,rgba(255,236,205,.06) 55%,transparent 75%);transform:translateX(-110%);animation:owSweep 1.9s cubic-bezier(.45,0,.25,1) infinite}
html[dir=rtl] .mp-sk::after{animation-name:owSweepRtl}
/* motion: data arriving fills the bars once (cause and effect), cards rise once a visit */
@media (prefers-reduced-motion:no-preference){
  .mp.mp-intro .mp-trk i,.mp.mp-intro .mp-stack i{animation:mp-fill .52s cubic-bezier(.23,1,.32,1) both;animation-delay:calc(var(--k,0) * 40ms + 120ms)}
  .mp.mp-intro .mp-body>*{animation:mp-rise .36s cubic-bezier(.23,1,.32,1) both}
  .mp.mp-intro .mp-body>:nth-child(2){animation-delay:.04s}.mp.mp-intro .mp-body>:nth-child(3){animation-delay:.08s}.mp.mp-intro .mp-body>:nth-child(n+4){animation-delay:.12s}
  .mp .mp-dseg{transition:stroke-dasharray .4s cubic-bezier(.23,1,.32,1)}
}
@media (prefers-reduced-motion:reduce){.mp-sk::after{animation:none;opacity:0}.mp *{transition:none!important}}
@keyframes mp-fill{from{transform:scaleX(.35);opacity:.4}to{transform:none;opacity:1}}
@keyframes mp-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* a phone: the header's name has the room, the photo button sits under it */
@container halo (max-width:520px){
  .mp-headin{padding-inline-end:0}
  .mp-photow{position:static;order:2;justify-self:start}
  .mp-title{font-size:26px}
  .mp-head{padding:18px 16px 14px}
  .mp-donutw{grid-template-columns:112px minmax(0,1fr);gap:14px}
  .mp-donut{width:112px;height:112px}
  .mp-tv{font-size:22px}
  .mp-starth{font-size:25px}
  .mp-rail{border-radius:16px}
}
@container halo (min-width:820px){
  .mp-head{padding:26px 26px 20px;min-height:156px}
  .mp-head.has-cover{min-height:220px}
  .mp-title{font-size:34px}
  .mp-tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  .mp-tile{padding:18px}.mp-tv{font-size:30px}
  .mp-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .mp-card{padding:18px 20px 20px}
  .mp-card.mp-wide{grid-column:1/-1}
  .mp-stackcol{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .mp-stackcol>.mp-debthero,.mp-stackcol>.mp-calm{grid-column:1/-1}
  .mp-start{padding:40px 32px 32px}
}
/* words inside its buttons take the button's own size (not the page's larger default for spans in buttons) */
.mp button>span:not(.mp-ic),.mp summary>.mp-rt{font:inherit}
.mp button.mp-tag{font:600 11.5px var(--sans)}
.mp-group>summary .mp-rn{font:500 14.5px/1.3 var(--sans)}.mp-group>summary .mp-rs{font-size:12.5px}
.mp-list{display:grid;gap:10px;min-width:0}
/* ==== end Finance › Money plan ==== */
