
@font-face{font-family:"Anton";src:url(/assets/fonts/anton-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(/assets/fonts/instrument-sans-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(/assets/fonts/instrument-sans-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(/assets/fonts/ibm-plex-mono-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}
:root{--ink:#111214;--paper:#111214;--raised:#1B1C1F;--line:#2C2E33;--text:#F2F2F0;--muted:#A3A8AE;--dim:#80858C;--field:#80858C;--slab:#F2F2F0;--focus:#F2F2F0;--solid:#F2F2F0;--on-solid:#111214;--highlight:#FFD83D;--on-highlight:#111214;--bar:#F2F2F0;color-scheme:dark}
:root{--f-display:Anton,"Arial Narrow",Impact,sans-serif;--f-body:"Instrument Sans","Helvetica Neue",Arial,sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
*{box-sizing:border-box}
html{background:var(--ink)}
body{margin:0;background:var(--paper);color:var(--text);font:400 1.0625rem/1.55 var(--f-body);-webkit-text-size-adjust:100%;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}
::selection{background:var(--text);color:var(--ink)}
strong,b{font-weight:600}
a{color:inherit;text-underline-offset:.15em}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.skip{position:absolute;left:-999px}
.skip:focus{left:16px;top:20px;background:var(--paper);color:var(--text);padding:8px 12px;z-index:1}
h1,h2,h3{font-family:var(--f-display);font-weight:400;text-transform:uppercase;letter-spacing:.005em;line-height:.95;margin:36px 0 16px}
h1{font-size:clamp(2.75rem,11vw,4.5rem);line-height:.9;margin-top:40px}
h2{font-size:clamp(1.75rem,5.5vw,2.5rem);padding-top:28px;border-top:1px solid var(--line)}
h1+h2,legend h2,.card h2,fieldset h2,section>h2:first-child{padding-top:0;border-top:0}
h3{font-size:clamp(1.375rem,4vw,1.75rem)}
header.masthead{border-bottom:1px solid var(--line)}
.bar{max-width:46rem;margin:0 auto;padding:18px 16px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
main,footer{max-width:46rem;margin:0 auto;padding:24px 16px 64px}
main>:first-child,main>form:first-child>fieldset:first-child>legend>h1{margin-top:16px}
.brand{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
.brand svg{display:block;height:34px;width:auto}
.logo-light{display:none!important}
.account{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.account form{margin:0}
button,.button{display:inline-flex;align-items:center;justify-content:center;font:600 1.0625rem/1.25 var(--f-body);min-height:48px;min-width:44px;padding:12px 22px;border:2px solid var(--solid);border-radius:0;background:var(--solid);color:var(--on-solid);cursor:pointer;text-decoration:none;text-align:center}
button:hover,.button:hover{background:transparent;color:var(--text)}
button.quiet,.button.quiet,button.secondary{background:transparent;color:var(--text);border-color:var(--text)}
button.quiet:hover,.button.quiet:hover,button.secondary:hover{background:var(--solid);color:var(--on-solid)}
.account .button,.account button{min-height:40px;padding:8px 14px;border:1px solid var(--line);color:var(--muted);font:500 .75rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase}
.account .button:hover,.account button:hover{border-color:var(--text);color:var(--text);background:transparent}
@media (max-width:360px){.brand svg{height:28px}.account{gap:6px}.account .button,.account button{padding:8px;font-size:.9375rem}}
.actions{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.muted{color:var(--muted)}
label{font-weight:600}
legend{font-weight:600;padding:0 4px}
fieldset label{font-weight:400}
input,select,textarea{font:inherit;min-height:44px;padding:8px 12px;border:2px solid var(--field);border-radius:2px;background:var(--paper);color:var(--text);max-width:100%;margin:4px 0 12px}
textarea{width:100%;min-height:88px}
input[type=radio],input[type=checkbox]{min-height:auto;width:24px;height:24px;margin:0 8px 0 0;vertical-align:middle;accent-color:var(--solid)}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{background:var(--highlight);color:var(--on-highlight);border-color:var(--on-highlight)}
label:where(:has(>input[type=radio],>input[type=checkbox])){display:inline-block;margin:0 16px 4px 0}
.choice{display:block;padding:10px 0}
fieldset{border:1px solid var(--line);border-radius:0;background:var(--raised);margin:0 0 20px;padding:16px 20px 8px}
fieldset>legend{float:left;width:100%;padding:0;margin:0 0 12px}
fieldset>legend+*{clear:both}
fieldset>legend h1,fieldset>legend h2{margin:0}
.problem{background:var(--highlight);color:var(--on-highlight);border:0;border-left:6px solid var(--bar);border-radius:0;padding:12px 16px;margin:0 0 16px}
.problem:not(fieldset){--paper:#FFFFFF;--text:#111214;--muted:#5C6066;--field:#5C6066;--line:#111214;--focus:#111214;--solid:#111214;--on-solid:#FFFFFF;color-scheme:light}
.problem>:first-child{margin-top:0}
.problem>:last-child{margin-bottom:0}
p.problem[role=alert]::before,.problem[role=alert]>:first-child::before{content:"\2715  ";content:"\2715  " / "";font-weight:600}
fieldset.problem{background:var(--raised);color:var(--text);border-left-color:var(--text);padding-top:12px}
fieldset.problem legend{float:left;width:100%;margin:0 0 8px;padding:8px 12px;background:var(--highlight);color:var(--on-highlight)}
fieldset.problem legend+*{clear:left}
.loud{border-left:6px solid var(--bar);background:var(--highlight);color:var(--on-highlight);padding:12px 16px;font-weight:600;--focus:#111214}
.loud a{color:var(--on-highlight)}
.notice{border-left:2px solid var(--text);padding:4px 14px;margin:0 0 16px;font:500 .875rem/1.65 var(--f-mono);color:var(--muted)}
.check{border-left:2px solid var(--text);background:var(--raised);padding:10px 14px;margin:0 0 16px}
.card{background:var(--raised);border:1px solid var(--line);border-radius:0;padding:clamp(16px,4vw,24px);margin:0 0 16px}
.card>:first-child{margin-top:0}
.label,th,dl.summary dt,dl.record dt,.eyebrow{font:500 .75rem/1.4 var(--f-mono);text-transform:uppercase;letter-spacing:.16em;color:var(--muted)}
.eyebrow{display:flex;gap:12px;align-items:center;margin:32px 0 -24px}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--muted)}
.mono,.num,.key,code,dl.figures dd{font-family:var(--f-mono);font-weight:500;font-variant-numeric:tabular-nums}
pre{font-family:var(--f-mono);font-weight:500;font-size:.875rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.scroll{overflow-x:auto;margin:0 0 16px}
.scroll table{margin:0;min-width:32rem}
table{border-collapse:collapse;width:100%;margin:0 0 16px}
th,td{text-align:left;padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
th{border-bottom-color:var(--text)}
.num,td.num,th.num{text-align:right;white-space:nowrap}
dl.summary{display:grid;grid-template-columns:minmax(8rem,auto) 1fr;gap:4px 16px;align-items:baseline}
dl.summary dd{margin:0}
dl.record dt{margin-top:12px}
dl.record dd{margin:0}
dl.figures{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;align-items:baseline}
dl.figures dd{margin:0}
.qr{width:192px;height:192px;background:#fff;padding:8px;border:1px solid var(--line)}
.qr svg{display:block;width:100%;height:100%}
.key{font-size:1.05rem;letter-spacing:.06em;word-break:break-all}
.codes{columns:2;padding-left:1.2rem}
.codes code{font-size:1.05rem}
@media (forced-colors:active){.brand svg g[mask] path,.brand svg g[mask] rect{fill:CanvasText}}
h1 .stop{display:inline-block;width:.17em;height:.17em;margin-left:.05em;vertical-align:baseline}
@media (forced-colors:active){h1 .stop rect{fill:CanvasText}}
/* Brand pass (12 Oct): home. Cards per home, a task list with square markers, the app's sections as tiles. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h2.eyebrow{border:0;padding:0;font:500 .75rem/1.4 var(--f-mono);margin:48px 0 16px}
ul.homes,ul.tasks,nav.tiles ul{list-style:none;margin:0 0 24px;padding:0;display:grid;gap:12px}
ul.homes{margin-top:40px}
.home-card{display:grid;gap:12px;justify-items:start;background:var(--raised);border:1px solid var(--line);border-left:4px solid var(--text);padding:20px 20px 22px}
.home-card.late{border-left-color:var(--highlight)}
.home-name{font:400 clamp(1.75rem,6vw,2.25rem)/.95 var(--f-display);text-transform:uppercase;text-decoration:none}
.home-name:hover{text-decoration:underline;text-decoration-thickness:2px}
.chip{font:500 .75rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--text);padding:7px 10px}
.chip-active,.chip-active_intended{background:var(--text);color:var(--ink)}
.home-card.late .chip{background:var(--highlight);color:var(--on-highlight);border-color:var(--highlight)}
.home-next{font:500 .9375rem/1.5 var(--f-mono);color:var(--muted)}
ul.tasks{gap:0;border-top:1px solid var(--line)}
ul.tasks li{display:grid;grid-template-columns:20px 1fr;column-gap:16px;row-gap:4px;padding:16px 0;border-bottom:1px solid var(--line)}
ul.tasks li::before{content:"";grid-row:1 / span 2;width:18px;height:18px;margin-top:4px;border:2px solid var(--text)}
.task-text{font-weight:600}
.task-due{grid-column:2;font:500 .8125rem/1.5 var(--f-mono);letter-spacing:.04em;color:var(--muted)}
nav.tiles ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;padding:1px}
@media (min-width:600px){nav.tiles ul{grid-template-columns:repeat(3,minmax(0,1fr))}}
nav.tiles li{display:flex;outline:1px solid var(--line)}
nav.tiles a{flex:1;display:flex;align-items:flex-end;min-height:96px;padding:16px;background:var(--paper);font:400 1.375rem/1 var(--f-display);text-transform:uppercase;text-decoration:none}
nav.tiles a:hover{background:var(--raised)}
nav.tiles li.locked span{flex:1;display:flex;flex-direction:column;justify-content:flex-end;min-height:96px;padding:16px;background:var(--paper);color:var(--muted);font:400 1.375rem/1 var(--f-display);text-transform:uppercase}
nav.tiles li.locked small{font:400 .875rem/1.4 var(--f-body);text-transform:none;margin-top:8px}
nav.tiles a::after{content:"\2192";margin-left:auto;font:500 1rem/1 var(--f-mono);color:var(--muted)}
/* chat8/settings-setup (10 Oct): show-only-when-relevant fields, no JavaScript. A .reveal's .reveal-fields stay hidden
   until a radio or option marked data-reveals inside it is chosen. No :has (or no CSS): the fields simply show. */
.reveal:not(:has([data-reveals]:checked)) .reveal-fields{display:none}
.reveal:has([data-reveals="2"]:checked) .reveal-fields[data-reveal="1"],.reveal:has([data-reveals="1"]:checked) .reveal-fields[data-reveal="2"]{display:none}
/* end chat8/settings-setup */
/* Back links (back.ts, item 98): first thing in <main>, a plain text link; on set-up's check page a button that
   keeps the answers, drawn as the same link. Ink only. 44px tall to tap. */
.back{margin:0 0 12px}
.back a,.back button{display:inline-flex;align-items:center;min-height:44px;font:600 1rem/1.4 var(--f-body);color:var(--text)}
.back a::before,.back button::before{content:"\2190\00a0";content:"\2190\00a0" / ""}
.back button{background:none;border:0;padding:0;min-height:44px;min-width:0;text-decoration:underline;cursor:pointer}
.back button:hover{background:none;color:var(--text);text-decoration:none}
