/* Companion UI tokens map directly to docs/design-system.md. */
@font-face{font-family:Inter;src:url('/fonts/inter/files/inter-latin-600-normal.woff2');font-weight:600;font-display:swap}
@font-face{font-family:Nunito;src:url('/fonts/nunito/files/nunito-latin-800-normal.woff2');font-weight:800;font-display:swap}
:root{
  color-scheme:dark;
  --background:#000000;--label:#FFFFFF;--secondary:#8D8D93;--tertiary:#48484A;
  --green:#30D158;--orange:#FF9F0A;--red:#FF453A;--blue:#0A84FF;
  --cyan:#64D2FF;--yellow:#FFD60A;--radius:22px;--margin:16px;
  /* Neutral structural dividers; tertiary is reserved for inactive page dots. */
  --separator:rgba(255,255,255,.16);--control:rgba(255,255,255,.06);
}
*{box-sizing:border-box}
body{margin:0;background:var(--background);color:var(--label);font:600 15px/1.5 Inter,Arial,sans-serif;letter-spacing:-.2px}
button,input,select{font:inherit;letter-spacing:inherit}
button,a{touch-action:manipulation}
button{cursor:pointer;border:1px solid var(--separator);border-radius:12px;background:transparent;color:var(--label);padding:11px 16px;min-height:44px}
button:hover{background:var(--control);border-color:var(--secondary)}
button:disabled{opacity:.5;cursor:wait}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--label);outline-offset:4px}
a{color:inherit;text-underline-offset:3px}
[hidden]{display:none!important}
header{height:80px;padding:0 max(24px,calc((100vw - 1200px)/2));display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--separator)}
.brand{display:flex;align-items:center;gap:10px;font:800 26px/1 Nunito,Arial,sans-serif;letter-spacing:-.52px;text-decoration:none}
.symbol{width:17px;height:17px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.brand .symbol{width:24px;height:24px}
.connection{margin-left:auto;color:var(--secondary);font-size:13px}
.quiet{border:0;color:var(--label)}
main{max-width:1200px;margin:auto;padding:48px 24px 24px}
.intro{margin-bottom:40px;max-width:740px}
.screen-label{display:flex;align-items:center;gap:8px;color:var(--secondary);font-size:15px;margin:0 0 16px}
.screen-label .symbol{color:var(--cyan)}
h1{font:800 clamp(44px,5vw,64px)/1.06 Nunito,Arial,sans-serif;letter-spacing:-.02em;margin:0 0 16px}
h2{font-size:22px;font-weight:600;letter-spacing:-.3px;line-height:1.25;margin:0 0 12px}
h3{font-size:17px;font-weight:600;letter-spacing:-.4px;margin:0 0 12px}
p{color:var(--secondary);margin:0 0 24px}
#page-subtitle{font-size:17px;letter-spacing:-.4px;margin:0}
.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px;align-items:start}
.panel{background:var(--background);min-width:0}
.steps{display:flex;gap:24px;margin:0 0 32px;padding-bottom:20px;border-bottom:1px solid var(--separator);font-size:13px;color:var(--secondary)}
.steps span{display:flex;gap:8px;align-items:center}
.steps span::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--tertiary);flex-shrink:0}
.steps .active{color:var(--label)}
.steps .active::before{background:var(--label)}
.step{animation:step-enter .35s ease-out}
@keyframes step-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
label{display:block;font-size:15px;margin:0 0 8px;color:var(--label)}
input:not([type=checkbox]):not([type=range]),select{display:block;width:100%;background:var(--background);color:var(--label);border:1px solid var(--separator);border-radius:12px;padding:13px 16px;margin:8px 0 16px;min-width:0;min-height:48px}
input::placeholder{color:var(--secondary);opacity:1}
.search{display:flex;gap:8px;align-items:start}
.search input{margin:0}
.search button{min-height:50px}
.place{margin:24px 0}
.place>label{display:flex;align-items:center;gap:8px}
.place>label .symbol{color:var(--cyan)}
.check{display:flex;align-items:center;gap:11px;margin:16px 0;min-height:32px}
.check input{accent-color:var(--label);width:20px;height:20px;flex-shrink:0;margin:0}
.field-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.small{font-size:13px;color:var(--secondary);line-height:1.55}
.primary{background:var(--label);color:var(--background);border-color:var(--label)}
.primary:hover{background:var(--label);border-color:var(--label);opacity:.85}
.actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--separator)}
.results button{display:block;width:100%;margin-top:8px;text-align:left}
.selected{font-size:13px;color:var(--cyan);overflow-wrap:anywhere;margin-top:8px}
.selected:empty{display:none}
details{border-block:1px solid var(--separator);padding:16px 0;margin:24px 0}
summary{cursor:pointer;font-size:13px;color:var(--secondary);min-height:24px}
details p{font-size:13px;margin-top:16px}
.days{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 24px}
.day{position:relative;margin:0}
.day input{position:absolute;opacity:0}
.day span{display:block;border:1px solid var(--separator);border-radius:50%;width:44px;height:44px;text-align:center;padding:10px 0;cursor:pointer}
.day input:checked+span{background:var(--label);color:var(--background);border-color:var(--label)}
.day input:focus-visible+span{outline:2px solid var(--label);outline-offset:3px}
.preview-column{position:sticky;top:32px;min-width:0}
.preview-caption{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:15px;color:var(--secondary);margin-bottom:20px}
.preview-caption>span:first-child{display:flex;align-items:center;gap:8px}
.device{background:var(--background);border:1px solid var(--separator);border-radius:var(--radius);padding:16px;overflow:hidden}
canvas{display:block;width:100%;height:auto;aspect-ratio:4/3;background:var(--background);image-rendering:auto;border-radius:6px}
.preview-actions{display:flex;justify-content:space-between;gap:16px;margin:16px 0}
.preview-actions button{font-size:13px;border:0;padding:8px 0;min-height:44px;color:var(--secondary)}
.preview-actions button:hover{color:var(--label);background:transparent}
.health{padding:20px 0;border-bottom:1px solid var(--separator);display:flex;gap:16px;align-items:start;justify-content:space-between}
.health strong{display:block;font-size:17px;letter-spacing:-.4px;margin-bottom:4px}
.health small{color:var(--secondary);font-size:13px}
.badge{font-size:13px;color:var(--green);white-space:nowrap}
.badge.unavailable{color:var(--secondary)}
.badge.stale{color:var(--orange)}
.review-row{padding:20px 0;border-bottom:1px solid var(--separator)}
.review-row small{display:block;color:var(--secondary);font-size:13px;margin-bottom:6px}
.review-row strong{font-weight:600;font-size:17px;overflow-wrap:anywhere}
.route-map{width:100%;height:150px;border:1px solid var(--separator);border-radius:var(--radius);background:var(--background);margin:12px 0}
.route-map polyline{stroke:var(--cyan);fill:none;stroke-width:3}
.route-map circle{fill:var(--label)}
#route-options{margin-bottom:24px}
#message{margin:20px 0 0;color:var(--orange);font-size:15px}
#message:empty{display:none}
#device-sync{margin-top:24px}
footer{display:flex;justify-content:space-between;gap:24px;color:var(--secondary);font-size:11px;margin-top:64px;padding:24px 0 0;border-top:1px solid var(--separator)}
dialog{background:var(--background);color:var(--label);border:1px solid var(--separator);border-radius:var(--radius);padding:24px;width:min(calc(100vw - 32px),500px);max-height:90dvh}
dialog::backdrop{background:#000b;backdrop-filter:blur(8px)}
.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.dialog-top h2{margin:0}
.dialog-top button{border:0;font-size:24px;padding:0;width:44px;height:44px;background:none}
.menu-list{display:grid;border-block:1px solid var(--separator)}
.menu-list button{display:flex;justify-content:space-between;text-align:left;gap:16px;align-items:center;border:0;border-radius:0;min-height:60px;padding:16px 0;font-size:17px}
.menu-list button+button{border-top:1px solid var(--separator)}
.menu-list button>span{color:var(--secondary)}
.danger{color:var(--red);border:0;background:transparent;margin-top:24px;padding-left:0;text-align:left;font-size:15px}
#menu-content{margin-top:24px}
#menu-content:empty{display:none}
#menu-content p{font-size:15px}
#menu-content input[type=range]{display:block;margin:16px 0 24px;min-height:24px}
input[type=range]{width:100%;accent-color:var(--label)}
@media(max-width:800px){
  header{padding:0 16px;gap:12px;height:72px}.brand{font-size:22px}.connection{max-width:125px;font-size:11px}
  main{padding:32px 16px 24px}.intro{margin-bottom:32px}.layout{grid-template-columns:1fr;gap:48px}
  .preview-column{position:static;width:100%;max-width:540px}.steps{gap:20px}.field-grid{gap:12px}
  footer{flex-direction:column;gap:12px;margin-top:40px}.actions{gap:12px}.actions .small{max-width:150px}
}
@media(max-width:380px){.connection{display:none}.quiet{margin-left:auto}.field-grid{grid-template-columns:1fr}.steps{gap:16px}.steps span{gap:6px}.actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.step{animation:none}}
