:root{
  --page:#f3f2ec; --surface:#fcfcfb; --surface-2:#f4f3ee; --card:#ffffff;
  --ink:#131310; --ink-2:#52514e; --ink-3:#898781;
  --hairline:#e1e0d9; --baseline:#c3c2b7; --ring:rgba(11,11,11,.10);
  --accent:#8a5f00; --accent-strong:#6e4c00; --accent-wash:rgba(237,161,0,.13);
  --series:#2a78d6; --good:#0ca30c; --good-text:#006300; --warn:#fab219;
  --critical:#d03b3b; --gate:#4a3aa7;
  --sheet-shadow:0 -18px 48px rgba(15,14,10,.22);
  --mono:ui-monospace,"Cascadia Mono","SF Mono",Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",sans-serif;
  --maxw:480px;
}
:root[data-theme="dark"], :root:not([data-theme]){}
@media (prefers-color-scheme: dark){
  :root:not([data-theme]){
    --page:#0d0d0d; --surface:#1a1a19; --surface-2:#222220; --card:#20201e;
    --ink:#f5f4ef; --ink-2:#c3c2b7; --ink-3:#898781;
    --hairline:#2c2c2a; --baseline:#383835; --ring:rgba(255,255,255,.10);
    --accent:#f0a92e; --accent-strong:#f6bd55; --accent-wash:rgba(240,169,46,.14);
    --series:#3987e5; --good:#0ca30c; --good-text:#3fbf3f; --warn:#fab219;
    --critical:#e05b5b; --gate:#9085e9; --sheet-shadow:0 -18px 48px rgba(0,0,0,.55);
  }
}
:root[data-theme="dark"]{
  --page:#0d0d0d; --surface:#1a1a19; --surface-2:#222220; --card:#20201e;
  --ink:#f5f4ef; --ink-2:#c3c2b7; --ink-3:#898781;
  --hairline:#2c2c2a; --baseline:#383835; --ring:rgba(255,255,255,.10);
  --accent:#f0a92e; --accent-strong:#f6bd55; --accent-wash:rgba(240,169,46,.14);
  --series:#3987e5; --good:#0ca30c; --good-text:#3fbf3f; --warn:#fab219;
  --critical:#e05b5b; --gate:#9085e9; --sheet-shadow:0 -18px 48px rgba(0,0,0,.55);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--sans);background:var(--page);color:var(--ink);overscroll-behavior:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
input{font-family:inherit}

#app{max-width:var(--maxw);margin:0 auto;height:100dvh;background:var(--surface);display:flex;flex-direction:column;
  box-shadow:0 0 0 1px var(--ring);position:relative;overflow:hidden}
@media (min-width:520px){#app{height:min(880px,calc(100dvh - 32px));margin-top:16px;border-radius:22px}}

/* header */
.hd{padding:calc(12px + env(safe-area-inset-top)) 16px 10px;display:flex;align-items:flex-start;gap:10px;border-bottom:1px solid var(--hairline);background:var(--surface)}
.hd .stack{flex:1;min-width:0}
.hd .app{font:700 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.hd .date{font:700 17px/1.25 var(--sans);margin-top:4px}
.hd .phase{font:500 12px/1.3 var(--sans);color:var(--ink-2)}
.iconbtn{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:var(--ink-2);border:1px solid var(--hairline);background:var(--card)}
.iconbtn:hover{color:var(--ink)}
.iconbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* main */
#main{flex:1;overflow-y:auto;padding:14px 14px 22px;-webkit-overflow-scrolling:touch}
@media (prefers-reduced-motion:no-preference){#main{scroll-behavior:smooth}}

.eyebrow{font:600 10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);display:flex;align-items:center;gap:8px;margin:18px 2px 8px}
.eyebrow:first-child{margin-top:2px}
.eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
.card{background:var(--card);border:1px solid var(--hairline);border-radius:16px;padding:14px;box-shadow:0 1px 2px rgba(12,12,10,.04)}
.card+.card{margin-top:10px}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.note{font-size:11.5px;color:var(--ink-3);line-height:1.55;margin-top:6px}
.chip{display:inline-flex;align-items:center;gap:5px;font:600 11px/1 var(--sans);padding:5px 9px;border-radius:999px;border:1px solid var(--hairline);color:var(--ink-2);background:var(--surface-2)}
.chip.good{color:var(--good-text);border-color:transparent;background:color-mix(in srgb,var(--good) 14%,transparent)}
.chip.warn{color:var(--ink);background:color-mix(in srgb,var(--warn) 22%,transparent);border-color:transparent}
.chip.gate{color:var(--gate);background:color-mix(in srgb,var(--gate) 12%,transparent);border-color:transparent}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:600 13px/1 var(--sans);padding:12px 16px;border-radius:12px;border:1px solid var(--hairline);background:var(--card);color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
:root[data-theme="dark"] .btn.primary,:root[data-theme="dark"] .seg button.sel{color:#1a1408}
@media (prefers-color-scheme:dark){:root:not([data-theme]) .btn.primary,:root:not([data-theme]) .seg button.sel{color:#1a1408}}
.btn.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}
.btn:not(.primary):hover{border-color:var(--baseline)}

/* ticket */
.ticket{background:var(--card);border:1px solid var(--hairline);border-radius:16px;overflow:hidden}
.ticket .tape{height:4px;background:repeating-linear-gradient(135deg,var(--warn) 0 10px,transparent 10px 20px)}
.ticket .tape.run{background:repeating-linear-gradient(135deg,var(--series) 0 10px,transparent 10px 20px)}
.ticket .body{padding:14px}
.ticket .kind{font:600 10.5px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.ticket h2{font:700 21px/1.2 var(--sans);margin:6px 0 4px}
.ticket p{font:400 13px/1.55 var(--sans);color:var(--ink-2)}
.ticket .why{margin-top:10px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--accent-wash);border-radius:0 10px 10px 0;font-size:12.5px;color:var(--ink-2)}
.ticket .why b{color:var(--ink)}

/* quick actions */
.qa{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.qa button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;border-radius:14px;border:1px solid var(--hairline);background:var(--card);min-height:66px}
.qa button:hover{border-color:var(--baseline)}
.qa .ic{width:20px;height:20px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.qa .lb{font:600 11px/1.2 var(--sans);color:var(--ink-2);text-align:center}
.qa button.done{border-color:transparent;background:color-mix(in srgb,var(--good) 10%,transparent)}
.qa button.done .ic{stroke:var(--good-text)} .qa button.done .lb{color:var(--good-text)}
.qa button.warnbtn{border-color:transparent;background:color-mix(in srgb,var(--warn) 16%,transparent)}

/* fuel */
.fuel{display:flex;gap:14px;align-items:flex-start}
.ringwrap{position:relative;width:74px;height:74px;flex:none}
.ringwrap svg{transform:rotate(-90deg)}
.ringwrap .val{position:absolute;inset:0;display:grid;place-items:center;font:700 13px/1 var(--mono)}
.fuel .bars{flex:1;min-width:0}
.bar{margin-bottom:10px}
.bar .row{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2);margin-bottom:4px;gap:8px}
.bar .row b{color:var(--ink);font-family:var(--mono);flex:none}
.track{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.track i{display:block;height:100%;border-radius:99px;background:var(--series)}
.track i.p{background:var(--good)}
.minirow{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);padding:5px 0;border-bottom:1px solid var(--hairline)}
.minirow:last-child{border-bottom:none}
.linkx{color:var(--ink-3);font-size:13px;padding:2px 6px;flex:none}
.linkx:hover{color:var(--critical)}

/* streaks */
.streaks{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.streak{background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:10px;text-align:center}
.streak .v{font:700 20px/1 var(--mono)} .streak .l{font:500 10.5px/1.3 var(--sans);color:var(--ink-3);margin-top:5px}

/* log entries */
.entry{display:flex;gap:11px;background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:11px;margin-bottom:8px;width:100%;text-align:left;align-items:center}
button.entry:hover{border-color:var(--baseline)}
.entry .thumb{width:44px;height:44px;border-radius:10px;flex:none;display:grid;place-items:center;background:var(--surface-2);font-size:19px}
.entry .thumb.run{background:color-mix(in srgb,var(--series) 12%,transparent)}
.entry .mid{flex:1;min-width:0}
.entry .t{font:600 13.5px/1.3 var(--sans);display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
.entry .s{font:400 12px/1.45 var(--sans);color:var(--ink-2);margin-top:2px}
.entry .kv{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.entry .end{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}

/* plan */
.week{display:flex;flex-direction:column;gap:6px}
.wday{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:12px;border:1px solid var(--hairline);background:var(--card)}
.wday.today{border-color:var(--accent);background:var(--accent-wash)}
.wday .d{font:700 11px/1 var(--mono);width:34px;color:var(--ink-3)} .wday.today .d{color:var(--accent)}
.wday .what{flex:1;font:500 12.5px/1.35 var(--sans)}
.wday .what small{display:block;color:var(--ink-3);font-size:11px;margin-top:1px}
.wday .km{font:600 12px/1 var(--mono);color:var(--ink-2)}
.step{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--hairline);font-size:12.5px}
.step:last-of-type{border-bottom:none}
.step .sn{font:700 10px/1.9 var(--mono);color:var(--ink-3);width:26px;flex:none;text-transform:uppercase}
.step .sd{flex:1;color:var(--ink-2)} .step .sd b{color:var(--ink)}
.step .tgt{font:600 11.5px/1.7 var(--mono);color:var(--accent);flex:none;text-align:right}
.gepimeta{display:flex;justify-content:space-between;align-items:center;gap:8px}
.gepiw{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--hairline);font-size:12px;color:var(--ink-2)}
.gepiw:last-child{border-bottom:none} .gepiw b{font-family:var(--mono);color:var(--ink);flex:none;text-align:right}
.rail{position:relative;padding-left:26px;margin-top:2px}
.rail::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:var(--baseline);border-radius:2px}
.node{position:relative;padding:0 0 18px}
.node::before{content:"";position:absolute;left:-24px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2.5px solid var(--baseline)}
.node.now::before{border-color:var(--accent);background:var(--accent)}
.node.gate::before{border-color:var(--gate);background:var(--gate)}
.node.race::before{border-color:var(--critical);background:var(--critical)}
.node .nd{font:600 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.node .nt{font:700 14px/1.3 var(--sans);margin:3px 0 1px}
.node .ns{font:400 12px/1.5 var(--sans);color:var(--ink-2)}
.tiers{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}
.tiers th{font:600 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:6px 8px;border-bottom:1px solid var(--hairline)}
.tiers td{padding:7px 8px;border-bottom:1px solid var(--hairline);color:var(--ink-2)}
.tiers td:first-child{font-family:var(--mono);font-weight:600;color:var(--ink)} .tiers tr:last-child td{border-bottom:none}

/* week nav */
.weeknav{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.navbtn{width:40px;height:40px;flex:none;border-radius:11px;border:1px solid var(--hairline);background:var(--card);font:400 20px/1 var(--sans);color:var(--ink-2)}
.navbtn:hover:not([disabled]){border-color:var(--baseline);color:var(--ink)}
.navbtn[disabled]{opacity:.35;cursor:default}
.wninfo{flex:1;text-align:center;min-width:0}
.wnlabel{font:700 13.5px/1.25 var(--sans)}
.wnrange{font:500 11px/1.2 var(--mono);color:var(--ink-3);margin-top:2px}
.statusrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.planbar{display:flex;justify-content:space-between;gap:8px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:12px;padding:9px 12px;font-size:12.5px;color:var(--ink-2);margin-bottom:10px}
.planbar b{font-family:var(--mono);color:var(--ink)}

/* day accordion */
.wday.det{display:block;padding:0}
.wday.det>summary{display:flex;align-items:center;gap:10px;padding:9px 11px;list-style:none;cursor:pointer}
.wday.det>summary::-webkit-details-marker{display:none}
.wday.det>summary:hover{background:var(--surface-2);border-radius:12px}
.chev{margin-left:auto;color:var(--ink-3);font-size:15px;transition:transform .18s}
@media (prefers-reduced-motion:reduce){.chev{transition:none}}
.wday.det[open]>summary .chev{transform:rotate(90deg)}
.wday.det[open]{border-color:var(--accent)}
.ddbody{padding:2px 12px 12px;border-top:1px solid var(--hairline);margin-top:2px}
.ddbody .kind{font:600 10px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding-top:8px}
.ddtext{font-size:12.5px;line-height:1.55;color:var(--ink-2);padding-top:8px}

/* season matrix */
.matrix{display:grid;grid-template-columns:repeat(6,1fr);gap:5px}
.mcell{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 2px;border-radius:9px;border:1px solid transparent;background:color-mix(in srgb,var(--pc) 15%,var(--card));color:var(--ink)}
.mcell .mw{font:700 10px/1 var(--mono);color:var(--ink-2)}
.mcell .mkm{font:600 12px/1 var(--mono)}
.mcell:hover{filter:brightness(1.08)}
.mcell.cur{border-color:var(--pc);box-shadow:inset 0 0 0 1px var(--pc)}
.mcell.sel{outline:2px solid var(--accent);outline-offset:1px}
.mdot{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:2px;transform:rotate(45deg)}
.mdot.checkpoint{background:var(--ink-3)} .mdot.gate{background:var(--gate)} .mdot.race{background:var(--critical)}
.ph-a{--pc:var(--accent)} .ph-b{--pc:var(--series)} .ph-c{--pc:var(--gate)} .ph-d{--pc:var(--good)} .ph-t{--pc:var(--ink-3)}
.mlegend{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:10.5px;color:var(--ink-3);align-items:center}
.mlegend .lg{padding:2px 7px;border-radius:99px;color:var(--ink);background:color-mix(in srgb,var(--pc) 22%,transparent)}

/* activity types */
.tbadge{width:24px;height:24px;flex:none;display:grid;place-items:center;border-radius:7px;font-size:12px;line-height:1;background:color-mix(in srgb,var(--tc) 20%,transparent)}
.typechips{display:flex;gap:7px;flex-wrap:wrap;margin:-2px 0 10px}
.typechip{color:var(--ink);background:color-mix(in srgb,var(--tc) 20%,transparent);border-color:transparent}
.t-run{--tc:var(--series)} .t-str{--tc:var(--gate)} .t-walk{--tc:var(--good)} .t-bike{--tc:var(--warn)} .t-swim{--tc:#1baf7a} .t-rest{--tc:var(--ink-3)}

/* login gate + toast */
.loginov{position:absolute;inset:0;z-index:100;background:var(--surface);display:grid;place-items:center;padding:24px}
.logincard{width:100%;max-width:320px;text-align:left}
.logincard h2{font:700 20px/1.2 var(--sans)}
.lerr{color:var(--critical);font-size:12.5px;margin-top:8px}
.toast{position:absolute;left:50%;bottom:82px;transform:translate(-50%,10px);z-index:120;background:var(--ink);color:var(--surface);font-size:12.5px;line-height:1.4;padding:10px 14px;border-radius:12px;opacity:0;transition:opacity .28s,transform .28s;max-width:82%;text-align:center;box-shadow:0 6px 20px rgba(0,0,0,.32)}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* trends */
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tile{background:var(--card);border:1px solid var(--hairline);border-radius:14px;padding:11px}
.tile .v{font:700 19px/1 var(--mono)} .tile .u{font:600 11px/1 var(--mono);color:var(--ink-3)}
.tile .l{font:500 10.5px/1.35 var(--sans);color:var(--ink-3);margin-top:5px}
.chart svg{display:block;width:100%;height:auto}
.chart .axis{font:500 9.5px var(--mono);fill:var(--ink-3)} .chart .lbl{font:600 10px var(--mono);fill:var(--ink-2)}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11px;color:var(--ink-2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.empty{border:1px dashed var(--baseline);border-radius:14px;padding:14px;color:var(--ink-2);font-size:12.5px;line-height:1.55;background:var(--surface-2)}
.empty b{color:var(--ink)}

/* coach */
.msg{max-width:88%;padding:10px 13px;border-radius:16px;font-size:13px;line-height:1.55;margin-bottom:8px}
.msg.user{margin-left:auto;background:var(--accent-wash);border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-bottom-right-radius:6px}
.msg.coach{background:var(--surface-2);border:1px solid var(--hairline);border-bottom-left-radius:6px;color:var(--ink-2)}
.msg.coach b{color:var(--ink)}
.chatin{display:flex;gap:8px;margin-top:10px}
.chatin input{flex:1;font:400 13px var(--sans);padding:11px 13px;border-radius:12px;border:1px solid var(--hairline);background:var(--card);color:var(--ink)}
.chatin input::placeholder{color:var(--ink-3)}
.proposal .prow{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--hairline);font-size:12.5px;color:var(--ink-2)}
.proposal .prow:last-of-type{border-bottom:none}
.proposal .prow .d{font:700 11px/1.5 var(--mono);width:34px;color:var(--ink-3);flex:none}
.proposal .actions{display:flex;gap:8px;margin-top:12px}.proposal .actions .btn{flex:1}
.coachline{margin-top:12px;padding:11px 13px;border-left:3px solid var(--accent);background:var(--accent-wash);border-radius:0 10px 10px 0;font-size:13px;line-height:1.55;color:var(--ink-2)}
.coachline b{color:var(--ink)}

/* tabs */
.tabs{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--hairline);background:var(--surface);padding:6px 8px calc(8px + env(safe-area-inset-bottom))}
.tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border-radius:12px;color:var(--ink-3)}
.tab svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tab .tl{font:600 10px/1 var(--sans)}
.tab.active{color:var(--accent);background:var(--accent-wash)}

/* sheets */
.scrim{position:absolute;inset:0;background:rgba(10,9,6,.45);opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}
.scrim.open{opacity:1;pointer-events:auto}
.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--surface);border-radius:22px 22px 0 0;box-shadow:var(--sheet-shadow);transform:translateY(105%);transition:transform .26s cubic-bezier(.3,.9,.3,1);z-index:50;max-height:88%;display:flex;flex-direction:column}
@media (prefers-reduced-motion:reduce){.sheet,.scrim{transition:none}}
.sheet.open{transform:translateY(0)}
.sheet .grab{width:38px;height:4px;border-radius:99px;background:var(--baseline);margin:10px auto 2px;flex:none}
.sheet .shd{display:flex;align-items:center;justify-content:space-between;padding:8px 18px;flex:none}
.sheet .shd h3{font:700 16px/1.2 var(--sans)}
.sheet .sbody{overflow-y:auto;padding:4px 18px calc(22px + env(safe-area-inset-bottom))}
.xbtn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-2);font-size:16px}

/* weigh sheet */
.weighwrap{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0 4px}
.stepbtn{width:52px;height:52px;border-radius:50%;border:1px solid var(--hairline);background:var(--card);font:400 26px/1 var(--sans);color:var(--ink-2)}
.stepbtn:active{background:var(--surface-2)}
.weighin{width:130px;text-align:center;font:700 34px/1 var(--mono);border:none;background:transparent;color:var(--ink)}
.weighin::-webkit-outer-spin-button,.weighin::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* meal picker */
.mealcol{margin-top:12px}
.mealcolh{font:600 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
.mealpick{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--hairline);border-radius:12px;background:var(--card);margin-bottom:6px}
.mealpick:hover{border-color:var(--baseline)}
.mealpick .mc-code{grid-row:1/3;align-self:center;font:700 12px/1 var(--mono);color:var(--accent);width:34px}
.mealpick .mc-name{font:600 13px/1.3 var(--sans)}
.mealpick .mc-macros{font:500 11px/1 var(--mono);color:var(--ink-3)}
.mealpick.wildcard{margin-top:12px;border-style:dashed}
.mealpick.wildcard .mc-code{color:var(--warn)}
.addown{border:1px solid var(--hairline);border-radius:14px;padding:12px;background:var(--surface-2)}
.tin{width:100%;font:400 13px var(--sans);padding:10px 12px;border-radius:10px;border:1px solid var(--hairline);background:var(--card);color:var(--ink);margin-top:6px}
.tin::placeholder{color:var(--ink-3)}
.macrorow{display:flex;gap:8px;margin-top:8px}
.macrorow label{flex:1;font:600 11px var(--mono);color:var(--ink-3);display:flex;flex-direction:column;gap:0}
.macrorow .tin{margin-top:4px}

/* chip groups + severity */
.chipgroup{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.chip-btn{padding:12px 14px;font-size:12.5px;border-radius:12px;border:1px solid var(--hairline);color:var(--ink-2);background:var(--card)}
.chip-btn.sel{border-color:var(--accent);color:var(--ink);background:var(--accent-wash)}
.sev{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:10px}
.sev button{padding:14px 0;border-radius:12px;border:1px solid var(--hairline);background:var(--card);font:700 15px var(--mono);color:var(--ink-2)}
.sev button.sel{border-color:var(--accent);background:var(--accent-wash);color:var(--ink)}

/* laps + settings */
.laps{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}
.laps th{font:600 9.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);text-align:right;padding:5px 6px;border-bottom:1px solid var(--hairline)}
.laps th:first-child{text-align:left}
.laps td{font-family:var(--mono);padding:5px 6px;text-align:right;border-bottom:1px solid var(--hairline);color:var(--ink-2)}
.laps td:first-child{text-align:left;color:var(--ink)} .laps tr:last-child td{border-bottom:none}
.setrow{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--hairline)}
.setrow:last-of-type{border-bottom:none}
.setrow .si{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);flex:none;font-size:15px}
.setrow .sm{flex:1;min-width:0} .setrow .sm b{font:600 13.5px var(--sans);display:block} .setrow .sm span{font-size:11.5px;color:var(--ink-3)}
.setrow .st{font:600 11px var(--sans);flex:none}
.seg{display:inline-flex;border:1px solid var(--hairline);border-radius:10px;overflow:hidden;flex:none}
.seg button{font:600 12px var(--sans);padding:8px 12px;color:var(--ink-2);background:var(--card)}
.seg button.sel{background:var(--accent);color:#fff}
