@import url('/brand.css');
/* pacewyn 錢包卡片外殼。字型：IBM Plex Sans／Noto Sans TC 的字型檔無法外連也未內嵌，
   故用本機字型 fallback（local 已安裝才會用到，否則落到系統中文字型）。兩個主題只換 token。 */
/* ═══ 令牌：淺色（預設） ═══ */
.app{
  --bg:#F1F5F8;--ink:#12303E;--mute:#5C7380;--card:#FFFFFF;--sheet:#FFFFFF;--line:#E1E8ED;--acc:#0E7C86;--field:#FFFFFF;--bd:#7C929E;
  --cardbd:1px solid transparent;--blur:none;--ibbg:var(--ct);
  --hbg:linear-gradient(135deg,#14507A,#0E7C86);--hink:#FFFFFF;--hbd:1px solid transparent;--hglow:none;--rest:rgba(255,255,255,.28);--rtrack:rgba(255,255,255,.22);--rfill:#FFFFFF;
  --ibbd:1.5px solid transparent;--ibglow:none;--gic:#0E7C86;
  --pbg:#FFF1D6;--pink:#5A3D00;--pbd:1px solid transparent;--pbtn:#5A3D00;--pbtni:#FFFFFF;
  --tbg:#FFFFFF;--tline:#E1E8ED;--tmute:#5C7380;--ton:#0E7C86;--gobg:linear-gradient(135deg,#14507A,#0E7C86);--goink:#FFFFFF;--goglow:0 6px 14px -4px rgba(14,124,134,.6);
  --sw:#0E8FC4;--bk:#B07D00;--rn:#E4503A;--brc:#5C7380;--swt:#DDF1FA;--bkt:#FFF1CF;--rnt:#FDE3DE;--brt:#E6ECF0;
  --warn:#FFF1D6;--warnink:#5A3D00;--ok:#1B7F4B;--offc:#B45309;--offink:#FFFFFF;--r:22px;--rs:16px;
  --st-free:#0B6FA8;--st-free-t:#DDF1FA;--st-back:#6A45C0;--st-back-t:#EAE4FA;--st-breast:#176B3F;--st-breast-t:#DDF3E6;--st-fly:#B04C08;--st-fly-t:#FDEBD8;--st-im:#B8301A;--st-im-t:#FDE3DE;--st-relay:#00737F;--st-relay-t:#D6F3F3;--st-on:#FFFFFF;
  --at-ok:#176B3F;--at-ok-t:#DDF3E6;--at-leave:#9A5A00;--at-leave-t:#FFF1D6;--at-abs:#B8301A;--at-abs-t:#FDE3DE;--at-late:#7A5F00;--at-late-t:#FFF3BF;--at-late-f:#F2C94C;--at-late-g:#6B5200;
  --pool-s:#076A78;--pool-s-t:#D6F3F7;--pool-s-f:#7FD3E0;--pool-l:#14507A;--pool-l-t:#DCE8F2;--pool-l-f:#14507A;
  --pb:#8F6200;--pb-f:#F2B705;--pb-t:#FFF1CF;--pb-on:#3B2A00;--hit:#176B3F;--hit-t:#DDF3E6;--miss:#B04C08;--miss-t:#FDEBD8;
  --g1:#CFE8F1;--g1-on:#12303E;--g2:#9FD0E2;--g2-on:#12303E;--g3:#6AB3D1;--g3-on:#0B2430;--g4:#2B7AA3;--g4-on:#FFFFFF;--g5:#1F6A96;--g5-on:#FFFFFF;--g6:#14507A;--g6-on:#FFFFFF;
  --sec-mine:#C2185B;--sec-meets:#14507A;--sec-rank:#8F6200;--sec-std:#176B3F;
  /* 測驗卡片（截圖、列印）固定用淺色，兩個主題相同 */
  --paper:#FFFFFF;--paper-ink:#12303E;--paper-mute:#4A6270;--paper-line:#DCE5EA;--paper-head:#EEF3F6;--paper-acc:#0E7C86;--paper-bd:#7C929E;--paper-sel:#DDF1FA;--paper-warn:#8F4B00;--paper-gold:#8F6200;--paper-warnbg:#FFF1D6;--paper-warnink:#5A3D00;--paper-pb:#F2B705;--paper-pbon:#3B2A00;--pod1:#FFF0C2;--pod2:#E7EDF1;--pod3:#FBE3D0;
  /* 可分享圖卡（測驗總表、訓練紀錄表）：米黃紙質、深咖啡字、金與紅褐點綴；固定外觀，淺色與深色模式相同 */
  --sc-bg1:#FFF9EA;--sc-bg2:#F0DCB2;--sc-ink:#3A2A17;--sc-mute:#85704D;--sc-gold:#A87908;--sc-gold-line:#C9A55A;--sc-rust:#B04A25;--sc-row:#FFFCF3;--sc-row-line:#E4D0A4;--sc-head:#F5E8C6;--sc-p1:#FBE8B0;--sc-p2:#ECE9E1;--sc-p3:#F5DAC2;
  --sc-serif:"Noto Serif TC","Songti TC","PMingLiU",serif;
  --fb:"IBM Plex Sans","Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--cmp1:#0E7C86;--cmp2:#B8301A;--cmp3:#6A45C0;--cmp4:#9A5A00;color-scheme:light}
/* 深色 = 深海（跟隨系統） */
@media (prefers-color-scheme:dark){.app[data-mode="auto"]{
  --bg:#050E14;--ink:#E6F3F8;--mute:#7E9AA8;--card:rgba(255,255,255,.05);--sheet:#0C1A22;--line:rgba(255,255,255,.09);--acc:#3DD6F5;--field:rgba(255,255,255,.07);--bd:#6F8B99;
  --cardbd:1px solid rgba(255,255,255,.09);--blur:blur(8px);--ibbg:transparent;
  --hbg:linear-gradient(140deg,#0F4660,#071C28);--hink:#FFFFFF;--hbd:1px solid rgba(61,214,245,.28);--hglow:0 0 40px -12px rgba(61,214,245,.5);--rest:rgba(255,255,255,.14);--rtrack:rgba(255,255,255,.14);--rfill:#3DD6F5;
  --ibbd:1.5px solid currentColor;--ibglow:0 0 14px -4px currentColor;--gic:#3DD6F5;
  --pbg:linear-gradient(90deg,rgba(61,214,245,.22),rgba(61,214,245,.05));--pink:#E6F3F8;--pbd:1px solid rgba(61,214,245,.35);--pbtn:#3DD6F5;--pbtni:#04141C;
  --tbg:rgba(5,14,20,.85);--tline:rgba(255,255,255,.09);--tmute:#6F8B99;--ton:#3DD6F5;--gobg:#3DD6F5;--goink:#04141C;--goglow:0 0 22px 2px rgba(61,214,245,.55);
  --sw:#3DD6F5;--bk:#FFC24D;--rn:#FF7B6B;--brc:#B8C7CF;--swt:rgba(61,214,245,.12);--bkt:rgba(255,194,77,.12);--rnt:rgba(255,123,107,.12);--brt:rgba(184,199,207,.12);
  --warn:rgba(255,194,77,.14);--warnink:#FFE2A8;--ok:#4ADE80;--offc:#FB923C;--offink:#050E14;
  --st-free:#4DB8F0;--st-free-t:#0F2E3F;--st-back:#B49CFF;--st-back-t:#241E3F;--st-breast:#4ADE80;--st-breast-t:#0F3022;--st-fly:#FFA24D;--st-fly-t:#3A2412;--st-im:#FF7B6B;--st-im-t:#3B1A17;--st-relay:#4DD8D0;--st-relay-t:#0C3335;--st-on:#04141C;
  --at-ok:#4ADE80;--at-ok-t:#0F3022;--at-leave:#FFC24D;--at-leave-t:#3A2D0D;--at-abs:#FF7B6B;--at-abs-t:#3B1A17;--at-late:#F5D84A;--at-late-t:#363008;--at-late-f:#F5D84A;--at-late-g:#3A2F00;
  --pool-s:#6FE3F0;--pool-s-t:#0C3037;--pool-s-f:#6FE3F0;--pool-l:#6BA8EE;--pool-l-t:#14263F;--pool-l-f:#3F78C4;
  --pb:#FFC24D;--pb-f:#FFC24D;--pb-t:#3A2D0D;--pb-on:#2A1D00;--hit:#4ADE80;--hit-t:#0F3022;--miss:#FFA24D;--miss-t:#3A2412;
  --g1:#1A3644;--g1-on:#E6F3F8;--g2:#21506A;--g2-on:#E6F3F8;--g3:#2B6F90;--g3-on:#FFFFFF;--g4:#3D8FB5;--g4-on:#04141C;--g5:#5CB0D6;--g5-on:#04141C;--g6:#8FDCF5;--g6-on:#04141C;
  --sec-mine:#FF8AB4;--sec-meets:#6BA8EE;--sec-rank:#FFC24D;--sec-std:#4ADE80;--paper:#FFFFFF;--paper-ink:#12303E;--paper-mute:#4A6270;--paper-line:#DCE5EA;--paper-head:#EEF3F6;--paper-acc:#0E7C86;--paper-bd:#7C929E;--paper-sel:#DDF1FA;--paper-warn:#8F4B00;--paper-gold:#8F6200;--paper-warnbg:#FFF1D6;--paper-warnink:#5A3D00;--paper-pb:#F2B705;--paper-pbon:#3B2A00;--pod1:#FFF0C2;--pod2:#E7EDF1;--pod3:#FBE3D0;--cmp1:#3DD6F5;--cmp2:#FF7B6B;--cmp3:#B49CFF;--cmp4:#FFC24D;color-scheme:dark}}
.app[data-mode="dark"]{
  --bg:#050E14;--ink:#E6F3F8;--mute:#7E9AA8;--card:rgba(255,255,255,.05);--sheet:#0C1A22;--line:rgba(255,255,255,.09);--acc:#3DD6F5;--field:rgba(255,255,255,.07);--bd:#6F8B99;
  --cardbd:1px solid rgba(255,255,255,.09);--blur:blur(8px);--ibbg:transparent;
  --hbg:linear-gradient(140deg,#0F4660,#071C28);--hink:#FFFFFF;--hbd:1px solid rgba(61,214,245,.28);--hglow:0 0 40px -12px rgba(61,214,245,.5);--rest:rgba(255,255,255,.14);--rtrack:rgba(255,255,255,.14);--rfill:#3DD6F5;
  --ibbd:1.5px solid currentColor;--ibglow:0 0 14px -4px currentColor;--gic:#3DD6F5;
  --pbg:linear-gradient(90deg,rgba(61,214,245,.22),rgba(61,214,245,.05));--pink:#E6F3F8;--pbd:1px solid rgba(61,214,245,.35);--pbtn:#3DD6F5;--pbtni:#04141C;
  --tbg:rgba(5,14,20,.85);--tline:rgba(255,255,255,.09);--tmute:#6F8B99;--ton:#3DD6F5;--gobg:#3DD6F5;--goink:#04141C;--goglow:0 0 22px 2px rgba(61,214,245,.55);
  --sw:#3DD6F5;--bk:#FFC24D;--rn:#FF7B6B;--brc:#B8C7CF;--swt:rgba(61,214,245,.12);--bkt:rgba(255,194,77,.12);--rnt:rgba(255,123,107,.12);--brt:rgba(184,199,207,.12);
  --warn:rgba(255,194,77,.14);--warnink:#FFE2A8;--ok:#4ADE80;--offc:#FB923C;--offink:#050E14;
  --st-free:#4DB8F0;--st-free-t:#0F2E3F;--st-back:#B49CFF;--st-back-t:#241E3F;--st-breast:#4ADE80;--st-breast-t:#0F3022;--st-fly:#FFA24D;--st-fly-t:#3A2412;--st-im:#FF7B6B;--st-im-t:#3B1A17;--st-relay:#4DD8D0;--st-relay-t:#0C3335;--st-on:#04141C;
  --at-ok:#4ADE80;--at-ok-t:#0F3022;--at-leave:#FFC24D;--at-leave-t:#3A2D0D;--at-abs:#FF7B6B;--at-abs-t:#3B1A17;--at-late:#F5D84A;--at-late-t:#363008;--at-late-f:#F5D84A;--at-late-g:#3A2F00;
  --pool-s:#6FE3F0;--pool-s-t:#0C3037;--pool-s-f:#6FE3F0;--pool-l:#6BA8EE;--pool-l-t:#14263F;--pool-l-f:#3F78C4;
  --pb:#FFC24D;--pb-f:#FFC24D;--pb-t:#3A2D0D;--pb-on:#2A1D00;--hit:#4ADE80;--hit-t:#0F3022;--miss:#FFA24D;--miss-t:#3A2412;
  --g1:#1A3644;--g1-on:#E6F3F8;--g2:#21506A;--g2-on:#E6F3F8;--g3:#2B6F90;--g3-on:#FFFFFF;--g4:#3D8FB5;--g4-on:#04141C;--g5:#5CB0D6;--g5-on:#04141C;--g6:#8FDCF5;--g6-on:#04141C;
  --sec-mine:#FF8AB4;--sec-meets:#6BA8EE;--sec-rank:#FFC24D;--sec-std:#4ADE80;--paper:#FFFFFF;--paper-ink:#12303E;--paper-mute:#4A6270;--paper-line:#DCE5EA;--paper-head:#EEF3F6;--paper-acc:#0E7C86;--paper-bd:#7C929E;--paper-sel:#DDF1FA;--paper-warn:#8F4B00;--paper-gold:#8F6200;--paper-warnbg:#FFF1D6;--paper-warnink:#5A3D00;--paper-pb:#F2B705;--paper-pbon:#3B2A00;--pod1:#FFF0C2;--pod2:#E7EDF1;--pod3:#FBE3D0;--cmp1:#3DD6F5;--cmp2:#FF7B6B;--cmp3:#B49CFF;--cmp4:#FFC24D;color-scheme:dark}

/* ═══ 基底 ═══ */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{background:#F1F5F8}body{margin:0;background:var(--bg,#F1F5F8)}
@media (prefers-color-scheme:dark){html,body{background:#050E14}}
.app{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--ink);font:15px/1.6 var(--fb);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
html:has(.app[data-mode="dark"]){background:#050E14}html:has(.app[data-mode="light"]){background:#F1F5F8}
.app>header,.app>main,.app>#message{max-width:480px;margin-left:auto;margin-right:auto}
.app>header{padding:calc(8px + env(safe-area-inset-top,0px)) 16px 0}
.screen{padding:0 0 130px}
.view>section,.view>div>section,.screen>section,.screen>p{padding-left:16px;padding-right:16px}.view>section.home{padding:0}
#message{min-height:24px;padding:0 18px;color:var(--mute);font-size:14px}
h1{font-size:22px;font-weight:600;line-height:1.3;margin:14px 0 8px}h2{font-size:17px;font-weight:600;line-height:1.35;margin:0 0 8px}h3{margin:0}
p{line-height:1.55;overflow-wrap:anywhere}a{color:var(--acc)}
.n{font-variant-numeric:tabular-nums}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ic{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sp-sw{--c:var(--sw);--ct:var(--swt)}.sp-bk{--c:var(--bk);--ct:var(--bkt)}.sp-rn{--c:var(--rn);--ct:var(--rnt)}.sp-br{--c:var(--brc);--ct:var(--brt)}

/* ═══ 一般控制項（表單、舊版登入／訪客畫面共用） ═══ */
.app button,.app input,.app select{font:inherit;color:inherit}
.app input,.app select{width:100%;min-height:48px;margin:6px 0;padding:10px 12px;border:1px solid var(--bd);border-radius:12px;background:var(--field)}
.app button{width:100%;min-height:48px;margin:6px 0;padding:10px 14px;border:1px solid var(--bd);border-radius:14px;background:var(--card);cursor:pointer;font-weight:600}
.app button.primary,.app .primary{background:var(--gobg);color:var(--goink);border-color:transparent}
.app button:disabled{opacity:.55;cursor:default}
.app label{display:block;margin:12px 0 4px}
.app input[type=checkbox]{width:24px;min-height:24px;vertical-align:middle;margin-right:8px}.check{display:flex;align-items:center;gap:8px}
.app input[type=date]{-webkit-appearance:none;appearance:none;min-width:0;font-size:16px}
.app article,.app fieldset,.app aside{background:var(--card);border:var(--cardbd);border-color:var(--line);border-style:solid;border-width:1px;border-radius:var(--r);margin:14px 0;padding:14px 16px;min-width:0;backdrop-filter:var(--blur)}
legend{padding:0 5px}.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}
.badge{font-size:13px;background:var(--swt);color:var(--ink);border-radius:8px;padding:4px 8px;display:inline-block}.metric{font-size:23px;font-weight:700}
.app :focus-visible{outline:3px solid var(--acc);outline-offset:2px}
[hidden]{display:none!important}
.guest-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--hbg);color:var(--hink);border-radius:12px;padding:8px 12px;margin:0 0 10px;font-size:14px}.guest-bar button{width:auto;min-height:44px;margin:0;padding:6px 14px;color:var(--ink)}
.guest-warn,.guest-error{border:1px solid var(--bk);border-radius:12px;padding:10px;background:var(--warn);color:var(--warnink)}
.sw-time{font-size:44px;text-align:center;font-variant-numeric:tabular-nums;font-weight:600}.guest-confirm{border-top:1px solid var(--line);margin-top:8px}
.private-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:8px 0;border-top:1px solid var(--line)}.private-nav button{margin:0}
.public-disclaimer{background:var(--swt);padding:12px;border-radius:12px}.public-search{margin-bottom:18px}
.demo-bar{background:var(--hbg);color:var(--hink);border:var(--hbd);border-radius:var(--r);padding:14px;margin:14px 0}.demo-bar p{font-size:13px;margin:4px 0 8px}
.demo-roles,.library-tabs,.skill-options,.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.seg{grid-template-columns:repeat(var(--n,3),minmax(0,1fr))}
.demo-roles button,.library-tabs button,.skill-options button,.seg button{min-width:0;padding:8px 4px;margin:0;font-size:14px;min-height:48px}
.demo-roles button{color:#12303E;background:#FFFFFF}.demo-roles button.primary{background:#E6F3F8;border:2px solid #FFFFFF}
.library-tabs{margin:12px 0}.library-tabs button[aria-pressed="true"],.seg button[aria-pressed="true"],.skill-options button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.set-row{display:grid;grid-template-columns:72px 1fr;gap:4px;border-top:1px solid var(--line);padding:10px 0}.set-row .badge{grid-column:2}
.roster-row{border-top:1px solid var(--line);padding:10px 0}.roster-row strong{display:block}.roster-row button{width:48%;margin-right:2%;min-height:52px}.exception{background:var(--warn)!important;color:var(--warnink)}
.chart{width:100%;height:auto;max-height:240px}.chart .ax{fill:var(--mute);font-size:10px;font-family:var(--fb)}.chart .grid{stroke:var(--line);stroke-width:1}.chart .ln{stroke:var(--acc);stroke-width:3;stroke-linejoin:round}.chart .dot{fill:var(--acc)}.chart .bar{fill:var(--acc)}
.laps{padding-left:22px;margin:8px 0}.laps li{padding:4px 0;font-variant-numeric:tabular-nums}

/* ═══ 錢包元件 ═══ */
.app .wb{width:auto;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:none;font-weight:inherit;text-align:inherit}
.app .back{display:inline-flex;align-items:center;margin:8px 16px 0;color:var(--acc);font-weight:600;padding:0 4px}
.hd{display:flex;justify-content:space-between;align-items:center;padding:18px 18px 8px}
.hd b{font-size:19px;font-weight:600;line-height:1.3;display:block}.hd small{color:var(--mute);font-size:13px}
.app .iconb{position:relative;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--card);border:var(--cardbd);border-color:var(--line);border-style:solid;border-width:1px}
.tcard{margin:6px 16px 0;padding:18px 18px 0;border-radius:var(--r);background:var(--hbg);color:var(--hink);border:var(--hbd);box-shadow:var(--hglow);position:relative;overflow:hidden}
.tcard::before{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;border:26px solid rgba(255,255,255,.07);pointer-events:none}
.tcard small{font-size:13px;opacity:.9;position:relative}
.tcard .big{font-size:42px;font-weight:600;line-height:1.1;margin:2px 0 4px;position:relative}.tcard .big span{font-size:15px;font-weight:400;margin-left:6px;opacity:.85}
.tcard .ring{position:absolute;right:16px;top:18px}.tcard .rtrack{stroke:var(--rtrack)}.tcard .rfill{stroke:var(--rfill)}.tcard .rtext{fill:var(--hink);font-size:14px;font-weight:600}
.tcard .row{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:6px 0 8px;position:relative}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;padding:0 0 12px;position:relative}.legend .k::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:var(--kc)}
.k0,.s0{--kc:#FFFFFF;--sc:#FFFFFF}.k1,.s1{--kc:#9ADFEA;--sc:#9ADFEA}.k2,.s2{--kc:#FFC24D;--sc:#FFC24D}.k3,.s3{--kc:#FF9A8B;--sc:#FF9A8B}.k4,.s4{--kc:#B8C7CF;--sc:#B8C7CF}
.stripe{display:flex;height:10px;margin:0 -18px;position:relative}.stripe i{display:block;background:var(--sc);opacity:.9}
.qa{margin:14px 16px 0;padding:14px 4px;display:grid;grid-template-columns:repeat(4,1fr);background:var(--card);border:var(--cardbd);backdrop-filter:var(--blur);border-radius:var(--r)}
.app .qa .wb{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:13px;min-height:84px;text-align:center}
.ib{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--ibbg);border:var(--ibbd);box-shadow:var(--ibglow);color:var(--c)}
.soon{font-size:11px;color:var(--mute);line-height:1.2}
.gr{margin:12px 16px 0;padding:8px 4px;display:grid;grid-template-columns:repeat(4,1fr);background:var(--card);border:var(--cardbd);backdrop-filter:var(--blur);border-radius:var(--r)}
.app .gr .wb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:12px;min-height:72px;text-align:center}.gr .ic{color:var(--gic)}
.promo{margin:12px 16px 0;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-radius:var(--r);background:var(--pbg);color:var(--pink);border:var(--pbd);font-size:14px}
.promo b{display:block;font-size:15px;font-weight:600}.app .promo .cta{background:var(--pbtn);color:var(--pbtni);border-radius:22px;padding:0 16px;font-size:13px;font-weight:600;white-space:nowrap;display:grid;place-items:center}
.rec{margin:12px 16px 0;padding:6px 14px;background:var(--card);border:var(--cardbd);backdrop-filter:var(--blur);border-radius:var(--r)}
.rec h3{margin:6px 0 2px;font-size:15px;font-weight:600;display:flex;justify-content:space-between;align-items:center}.app .link{color:var(--acc);font-size:13px;font-weight:500;padding:0 6px}.app .center{display:block;margin:6px auto 0}
.app .tx{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);min-height:62px;width:100%}.tx:last-child{border:0}
.tx .ib{width:40px;height:40px;border-radius:12px;background:var(--ct);border:1px solid var(--line);box-shadow:none}
.tx b{display:block;font-weight:500;line-height:1.3}.tx small{color:var(--mute);font-size:13px}.tx .v{text-align:right;font-weight:600}.tx .v small{display:block;font-weight:400}
.demo-note{text-align:center;color:var(--mute);font-size:12px;margin:14px 16px 0}
.month{margin:12px 0 0}.app .pill{min-height:46px;border-radius:var(--rs);background:var(--card);border:var(--cardbd);border-color:var(--line);border-style:solid;border-width:1px;display:flex;align-items:center;justify-content:space-between;padding:0 4px;font-weight:500}
.app .step{width:44px;font-size:22px;text-align:center;color:var(--acc)}.app .step:disabled{color:var(--mute)}
.sum{margin:12px 0 0;background:var(--card);border:var(--cardbd);border-radius:var(--r);padding:14px 16px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sum b{display:block;font-size:24px;font-weight:600;line-height:1.1}.sum small{color:var(--mute);font-size:12px}
.view .rec{margin:12px 0 0}
/* G 底部導覽 */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:5;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;max-width:480px;margin:0 auto;padding:4px 4px calc(10px + env(safe-area-inset-bottom,0px));background:var(--tbg);border-top:1px solid var(--tline);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.tabbar:empty{display:none}
.app .tabbar .wb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--tmute);min-height:52px;width:100%}
.app .tabbar .wb[aria-current="page"]{color:var(--ton);font-weight:600}
/* ═══ 游泳新外殼：頂部列、對象列、首頁、成績庫、工具 ═══ */
.envline{display:flex;gap:10px;flex-wrap:wrap;padding:4px 2px 0}.envline p{margin:0;font-size:12px;color:var(--mute)}.envline p:empty{display:none}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:48px}
.app .wb.targetbtn{display:flex;align-items:center;gap:8px;flex:0 1 auto;min-width:0;max-width:calc(100% - 56px);min-height:44px;padding:0 14px;border-radius:22px;background:var(--card);border:1px solid var(--line);text-align:left}
.targetbtn small,.who small{color:var(--mute);font-size:12px;white-space:nowrap}.targetbtn b,.who b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.targetbtn .chev{margin-left:2px;color:var(--mute)}.targetbtn .ic{color:var(--gic);width:20px;height:20px}
.who{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;min-width:0}
.chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.app .wb.chip{min-height:44px;padding:0 16px;border-radius:22px;border:1px solid var(--bd);background:var(--card);font-weight:500}
.app .wb.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.sheet.tall{max-height:85dvh;overflow-y:auto}.sheet input[type=search]{margin:0 0 8px}
.app .wb.pick{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:52px;padding:0 12px;border-radius:14px}.pick small{color:var(--mute)}.pick[aria-pressed="true"]{background:var(--swt)}
.pgroup h4{margin:14px 0 4px;font-size:13px;color:var(--mute);font-weight:600}.pempty{color:var(--mute);text-align:center}
.home>article{margin:12px 16px 0}.stack{margin:0;padding:0 16px}.stack>.tcard{margin:12px 0 0}.stack>article{margin:12px 0 0}.tcard .pad{height:8px}
.home>.hd+.tcard{margin-top:6px}
.wall{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:6px}
.app .wb.chip.st-ok,.app .wb.chip.st-absent,.app .wb.chip.st-incomplete,.app .wb.chip.st-adjusted{display:grid;grid-template-columns:22px 1fr;grid-template-rows:auto auto;column-gap:6px;align-items:center;padding:6px 10px;border-radius:var(--rs);text-align:left;color:var(--ink)}
.wall .chip .mark{grid-row:1/3;font-weight:700;font-size:18px}.wall .chip small{grid-column:2;font-size:12px;opacity:1}
.app .wb.chip.st-ok{background:var(--swt);border-color:var(--line)}
.app .wb.chip.st-absent,.app .wb.chip.st-adjusted{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}
.app .wb.chip.st-incomplete{background:var(--warn);color:var(--warnink);border:2px dashed var(--warnink)}
.wall-team{margin:12px 0 6px;font-size:15px;font-weight:600}.wall-legend{color:var(--mute);font-size:13px;margin:0}
.exrow,.pbrow{margin:6px 0}.badge.warnb{background:var(--warn);color:var(--warnink)}.badge.demo{background:var(--swt);color:var(--ink)}
.pbmark{display:inline-block;font-size:11px;font-weight:700;line-height:1.5;padding:0 6px;border-radius:6px;background:var(--ink);color:var(--bg);margin-left:6px}
.tagline{display:block;color:var(--mute);margin-top:6px;font-size:13px}.legend-line{color:var(--mute);font-size:13px;margin:4px 0}.demo-note.left{text-align:left;margin-left:0}
.plan-list{margin:6px 0;padding-left:20px}.plan-list li{padding:3px 0}
.result{font-weight:600;margin:10px 0}
.view>.seg,.view>div>.seg{margin-left:16px;margin-right:16px}.seg.sticky{position:sticky;top:0;z-index:3;background:var(--bg);padding:6px 0}
.seg.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0;margin:8px 0;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.app .tabs button{width:auto;flex:none;min-width:0;margin:0;padding:0 14px;min-height:44px;border-radius:22px;white-space:nowrap;font-size:14px}
.app .tabs button[aria-selected="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.crumbs ol{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;align-items:center}.crumbs li+li::before{content:"›";color:var(--mute);margin:0 2px}
.view>.crumbs{padding:0 16px}.crumbs .crumb-cur,.crumbs .crumb-txt{color:var(--mute);font-size:14px;padding:0 4px;display:inline-block;overflow-wrap:anywhere}
.app .wb.crumb{min-height:44px;padding:0 4px;color:var(--acc);font-weight:500;font-size:14px;display:inline-flex;align-items:center}
.app .wb.quick{display:flex;align-items:center;gap:10px;margin:10px 16px 0;width:calc(100% - 32px);min-height:56px;padding:0 16px;border-radius:var(--rs);background:var(--card);border:1px solid var(--line)}.quick b{flex:1;font-weight:600}.quick small{color:var(--mute)}
.public-search.sticky{position:sticky;top:0;z-index:3;background:var(--bg);padding:8px 0 4px;margin:0 0 6px;display:grid;grid-template-columns:1fr auto;gap:0 8px;align-items:end}.public-search.sticky label{grid-column:1/-1;margin:0}.public-search.sticky button{width:auto;margin:6px 0}
.tablewrap{overflow-x:auto;margin:10px 0;border:1px solid var(--line);border-radius:var(--rs);background:var(--card)}.tablewrap:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.tablewrap table{border-collapse:collapse;width:100%;min-width:320px;font-size:14px}.tablewrap th{text-align:left;font-size:12px;font-weight:600;color:var(--mute);padding:8px 7px;border-bottom:1px solid var(--line);white-space:nowrap}
.tablewrap td{padding:4px 7px;border-top:1px solid var(--line);vertical-align:middle;min-height:44px}.tablewrap tbody tr:first-child td{border-top:0}.tablewrap .r{text-align:right}
.app .wb.inl{min-height:44px;color:var(--acc);font-weight:600;text-align:left;padding:0 2px;display:inline-flex;align-items:center}
.sum.four{grid-template-columns:repeat(4,1fr)}.spot h3{margin:0;font-size:16px;font-weight:600}.top3{list-style:none;margin:6px 0 0;padding:0}.top3 li{display:flex;align-items:center;gap:8px}.top3 .rk{width:20px;color:var(--mute)}
.fast b{display:block;font-size:22px;font-weight:600}.fast small{color:var(--mute);display:block}
.grp{margin:14px 0 0;font-size:16px}.evgroup{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:6px 12px;margin:8px 0}.evgroup h4{margin:6px 0;font-size:13px;color:var(--mute);font-weight:600}
.app .wb.evrow{display:grid;grid-template-columns:64px 1fr auto auto;gap:8px;align-items:center;width:100%;min-height:48px;padding:4px 0;border-top:1px solid var(--line);text-align:left}.evrow small{color:var(--mute)}
.filters{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}.filters label{margin:6px 0 0;font-size:13px;color:var(--mute)}.filters select{margin:2px 0 0;color:var(--ink)}
.pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 10px}.app .pager .wb{min-width:88px;color:var(--acc);font-weight:600}.app .pager .wb:disabled{color:var(--mute)}
.dock{position:fixed;left:0;right:0;bottom:calc(70px + env(safe-area-inset-bottom,0px));z-index:6;max-width:480px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;background:var(--sheet);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 8px 24px -8px rgba(0,0,0,.3)}
.dock-n{color:var(--mute)}.app .wb.dockchip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--bd);border-radius:22px}.dockchip .x{color:var(--mute)}
.app .dock .cta{margin-left:auto;min-height:44px;padding:0 16px;border-radius:22px;background:var(--gobg);color:var(--goink);font-weight:600}.app .dock .cta:disabled{opacity:.55}
.app:has(.dock:not([hidden])) .screen{padding-bottom:210px}
/* ═══ 底部第五格（運動切換）、運動 sheet、選項清單 ═══ */
.app .tabbar .wb.sportcell{border-left:1px solid var(--tline);color:var(--tmute)}.sportcell .ic{color:var(--sw)}
.sports{display:grid;gap:6px}.sports .ib{flex:none}
.app .sports .wb.opt{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:0 12px;border-radius:var(--rs);border:2px solid transparent;text-align:left}
.sports .opt[aria-pressed="true"]{border-color:var(--c);background:var(--ct)}.sports .opt[aria-pressed="true"] .mid small,.pick[aria-pressed="true"] small{color:var(--ink)}.sports .mid{display:flex;flex-direction:column;line-height:1.35}.sports .mid small{color:var(--mute);font-size:13px}.sports .mid b{font-size:16px}
.opts{display:grid;gap:4px}.opts .pick b{font-weight:600}.opts .pick[aria-pressed="true"]::after{content:"✓";font-weight:700;color:var(--acc)}
.shead{margin:16px 0 4px;font-size:14px;color:var(--mute);font-weight:600}.agerow{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.agerow label{margin:4px 0 0;font-size:13px;color:var(--mute)}
/* ═══ 成績庫：搜尋、篩選 chips、口徑條、表格 ═══ */
.app{--sh:64px}
.sh,.compact-home{display:contents}.sh>.compact-home>#public-results,.compact-home>#public-results{display:block;padding:0 16px}
.public-search.sticky{padding:8px 16px;margin:0 0 4px;grid-template-columns:1fr auto auto;align-items:center}.public-search.sticky input{margin:0}.public-search.sticky button{margin:0}
.app .public-search.sticky .micb{width:48px;min-width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--bd);border-radius:14px;background:var(--card);padding:0}.micb[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.seg.sticky2{margin-top:8px;margin-bottom:6px}
.fchips{display:flex;gap:8px;overflow-x:auto;padding:8px 0;scrollbar-width:none}.fchips::-webkit-scrollbar{display:none}
.app .fchips .wb.chip{flex:none;white-space:nowrap;font-size:14px}.fchips .chip::after{content:" ▾";color:var(--mute)}
.rules.sticky3{position:sticky;top:var(--sh);z-index:2;background:var(--bg);border-bottom:1px solid var(--line);padding:6px 0;margin:0 0 4px}.rules p{margin:0;font-size:12px;line-height:1.5;color:var(--mute)}.rules .rl1{color:var(--ink);font-weight:600;font-size:13px}
.findbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}.app .wb.cta2{min-height:44px;padding:0 18px;border-radius:22px;background:var(--gobg);color:var(--goink);font-weight:600}.app .wb.cta2:disabled{opacity:.55}
.find-status{min-height:20px;margin:0 0 4px;font-size:13px;color:var(--mute)}.toollinks{display:flex;gap:4px;flex-wrap:wrap}
.scrollhint{margin:6px 0 0;font-size:12px;color:var(--mute);text-align:center}
.tablewrap[data-frozen]{max-height:min(68vh,560px);overflow:auto;background:var(--sheet);margin-top:4px}
.tablewrap[data-frozen] td{white-space:nowrap}.tablewrap[data-frozen] thead th{position:sticky;top:0;z-index:2;background:var(--sheet)}
.tablewrap[data-frozen] tr>:first-child{position:sticky;left:0;z-index:1;background:var(--sheet);box-shadow:inset -1px 0 0 var(--line),6px 0 8px -6px rgba(0,0,0,.28)}
.tablewrap[data-frozen] thead th:first-child{z-index:3}
.tablewrap tr.me>td{background:var(--swt);color:var(--ink)}.tablewrap[data-frozen] tr.me>td:first-child{background:linear-gradient(var(--swt),var(--swt)),var(--sheet)}
.tablewrap tr.hit>td{box-shadow:inset 0 2px 0 var(--acc),inset 0 -2px 0 var(--acc)}.tablewrap tr.me .rk{color:var(--ink)}
.rn{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.rn .rk{min-width:1.8em;text-align:right;color:var(--mute);font-weight:600}
.evrow .top3line{grid-column:1/-1;font-size:12px}.app .wb.evrow{grid-template-columns:64px 1fr auto auto}
.top3line{color:var(--mute)}
/* 走勢小圖與標準進度條 */
.spark{display:block;width:72px;height:26px}.spark .sline{stroke:var(--acc);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.spark .sdot{fill:var(--acc)}
.pbar{min-width:96px}.pbar .track{display:block;height:8px;border-radius:4px;background:var(--line);overflow:hidden}.pbar .track i{display:block;height:100%;background:var(--acc);border-radius:4px}.pbar small{display:block;color:var(--mute);font-size:12px;margin-top:2px;white-space:nowrap}
/* 追蹤卡片、首頁卡片 */
.fcard{margin:10px 0}.fhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fhead small{color:var(--mute)}.fhead .badge{margin-left:auto}.actions{display:flex;gap:4px;flex-wrap:wrap}
.nmrow{display:flex;justify-content:space-between;align-items:center;gap:12px}.nm b{display:block;font-weight:600}.nm small{color:var(--mute)}
.countdown{text-align:center;min-width:64px;line-height:1.1}.countdown b{display:block;font-size:30px;font-weight:600}.countdown small{color:var(--mute)}
.matchday small,.matchday .mdtips small{opacity:1}.matchday h2{margin:2px 0 8px;font-size:20px}.matchday .mdlead{margin:0 0 6px;font-size:14px}.mdlist{list-style:none;margin:0 0 10px;padding:0}.mdlist li{display:grid;grid-template-columns:1fr auto;gap:0 10px;padding:8px 0;border-top:1px solid var(--rest)}.mdlist li small{grid-column:1/-1;font-size:12px}
.mdtips{padding:8px 0 16px;font-size:13px}.mdtips b{display:block}.app .wb.on-hero{color:var(--hink);text-decoration:underline;padding:0 4px}
.child-card,#child-card{margin:12px 0 0}
/* sheet */
.scrim{position:fixed;inset:0;z-index:8;background:rgba(0,0,0,.45);animation:fade .2s}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:9;max-width:480px;margin:0 auto;background:var(--sheet);color:var(--ink);border-top:var(--cardbd);border-radius:24px 24px 0 0;padding:14px 16px calc(22px + env(safe-area-inset-bottom,0px));animation:up .28s cubic-bezier(.2,.8,.2,1)}
.sheet h3{margin:4px 0 14px;font-size:18px;font-weight:600;text-align:center}.sheet-note{text-align:center;color:var(--mute);font-size:14px;margin:12px 0 0}
.sopts{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.app .sopts .wb{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0;border-radius:var(--rs);border:2px solid transparent;font-size:13px;min-height:96px;width:auto;text-align:center}
.app .sopts .wb[aria-pressed="true"]{border-color:var(--c);background:var(--ct)}
.sheet .primary{margin-top:12px;min-height:54px;border-radius:27px;font-size:16px;text-align:center}
@keyframes fade{from{opacity:0}}@keyframes up{from{transform:translateY(40px);opacity:.4}}
@media (prefers-reduced-motion:reduce){.scrim,.sheet{animation:none}*{scroll-behavior:auto!important;transition:none!important}}
/* ═══ 登入流程（設計稿 login-v3-flow.html：泳池俯瞰＋玻璃面板）═══
   獨立全螢幕頁。這套本身是深色，登入流程一律用它，不跟 App 的淺色／深色切換走（App 外殼主題不受影響）。
   LINE 綠、Apple 白底黑字、Google 白底依各家規範，顏色與圖示不可改。 */
.app[data-screen="login"]>header,.app[data-screen="login"]>nav{display:none}
.app[data-screen="login"]>main{max-width:none;padding:0;margin:0}
.app[data-screen="login"]{background:#042F39}
.lg-word:focus,.lg-h:focus{outline:none}
html:has(.app[data-screen="login"]){background:#042F39}
.app[data-screen="login"]>#message{position:fixed;left:16px;right:16px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:50;max-width:none;margin:0 auto;padding:10px 14px;border-radius:14px;background:#EAF4F5;color:#052A31;font-size:14px}
.app[data-screen="login"]>#message:empty{display:none}
.app .lgpage{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:#042F39}.app .lgpage>div{flex:1;display:flex;flex-direction:column}
.app .lg{position:relative;flex:1;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;overflow:hidden;isolation:isolate;background:#042F39;color:#FFFFFF;
  font-family:-apple-system,"PingFang TC","Noto Sans TC",system-ui,sans-serif;text-align:left}
/* 泳池：「A 水面反光」WebGL 畫布（login-water.mjs）；WebGL 不可用時畫布隱藏，改看底下的 deep→shallow CSS 漸層。左側與底部遮罩保留（文字可讀性）。 */
.app .lg-pool{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:linear-gradient(to bottom left,#148C99 0%,#0B6070 45%,#083D4D 100%)}
.app .lg-water{position:absolute;inset:0;width:100%;height:100%;display:block}.app .lg-water[hidden]{display:none}
.app .lg-pool::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,34,42,.55) 0%,rgba(3,34,42,.2) 50%,rgba(3,34,42,0) 80%),linear-gradient(180deg,rgba(3,34,42,0) 52%,rgba(3,34,42,.85) 100%)}
.app .lg[data-dim="true"] .lg-pool::after{background:linear-gradient(90deg,rgba(3,34,42,.55) 0%,rgba(3,34,42,.2) 50%,rgba(3,34,42,0) 80%),linear-gradient(180deg,rgba(4,40,48,.3) 0%,rgba(4,40,48,.6) 55%,rgba(4,40,48,.9) 100%)}
.app .lg-body{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;width:100%;max-width:480px;margin:0 auto}
.app .lg-screen,.app .lg-form{flex:1;display:flex;flex-direction:column;min-height:0}
/* 首頁品牌 */
.app .lg-brand{padding:calc(76px + env(safe-area-inset-top,0px)) calc(26px + env(safe-area-inset-right,0px)) 0 calc(26px + env(safe-area-inset-left,0px))}
.app .lg-eyebrow{font-size:11px;letter-spacing:4px;color:rgba(255,255,255,.78)}
.app .lg-word{font-size:52px;font-weight:200;letter-spacing:2px;line-height:1;margin:10px 0 14px}
.app .lg-claim{font-size:20px;font-weight:600;line-height:1.45;letter-spacing:1px;margin:0;color:#FFFFFF}
/* 之後各步：左上縮小 logo＋文字、右上返回 */
.app .lg-top{display:flex;align-items:center;justify-content:space-between;padding:calc(18px + env(safe-area-inset-top,0px)) calc(22px + env(safe-area-inset-right,0px)) 0 calc(24px + env(safe-area-inset-left,0px));min-height:calc(52px + env(safe-area-inset-top,0px))}
.app .lg-mini{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:3px;text-transform:uppercase;color:rgba(255,255,255,.92)}
.app .lg-mini img{width:26px;height:26px;border-radius:7px}
.app .lg-back{width:auto;min-height:44px;margin:0;padding:0 6px;border:0;background:transparent;color:#EAF4F5;font-size:14px;font-weight:400;cursor:pointer}
.app .lg-step{padding:34px calc(24px + env(safe-area-inset-right,0px)) 12px calc(24px + env(safe-area-inset-left,0px));flex:1}
.app .lg-kicker{font-size:11px;letter-spacing:3px;color:#9BEDEA}
.app .lg-h{font-size:28px;font-weight:300;line-height:1.3;margin:10px 0 8px;letter-spacing:.5px;color:#FFFFFF}
.app .lg-lead{font-size:14px;line-height:1.65;color:#B8D3D7;margin:0}
/* 玻璃面板：不支援 backdrop-filter 時用實色後援 */
.app .lg-glass{display:flex;flex-direction:column;gap:10px;margin:0 calc(12px + env(safe-area-inset-right,0px)) calc(14px + env(safe-area-inset-bottom,0px)) calc(12px + env(safe-area-inset-left,0px));padding:18px 16px 16px;border-radius:26px;background:rgba(5,32,40,.94);border:1px solid rgba(255,255,255,.14)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.app .lg-glass{background:rgba(5,32,40,.55);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}
.app .lg-brand+.lg-glass{margin-top:auto}
.app .lg-screen>.lg-glass{margin-top:auto}.app .lg-form>.lg-glass{margin-top:auto}
.app .lg-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;height:52px;margin:0;padding:0 16px;border-radius:16px;font-size:16px;font-weight:600;letter-spacing:.3px;border:0;cursor:pointer}
.app .lg-ico{width:21px;height:21px;flex:none}
.app .lg-line{background:#06C755;color:#FFFFFF}
.app .lg-apple{background:#FFFFFF;color:#000000}
.app .lg-google{background:#FFFFFF;color:#1F1F1F}
.app .lg-mail{background:transparent;border:1px solid rgba(127,227,224,.55);color:#9BEDEA}
.app .lg-primary{background:#3FC1BF;color:#052A31}
.app .lg-primary.off,.app .lg-primary:disabled{background:rgba(63,193,191,.35);color:rgba(5,42,49,.7);opacity:1}
.app .lg-ghost{background:rgba(255,255,255,.08);color:#EAF4F5;border:1px solid rgba(255,255,255,.16)}
.app .lg-btn:disabled{cursor:default}
.app .lg-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:#A9C9CD;padding:2px 4px 0;min-height:24px}
.app .lg-legal a{color:#A9C9CD;text-decoration:none}
.app .lg-link{display:inline-flex;align-items:center;width:auto;min-height:44px;margin:-10px -4px;padding:0 4px;border:0;background:none;color:#A9C9CD;font-size:12px;font-weight:400;cursor:pointer}
.app .lg-link.lg-strong{color:#9BEDEA;font-weight:600}
.app .lg-link:disabled{opacity:.5}
.app .lg-hint{font-size:12.5px;line-height:1.6;color:#B8D3D7;margin:0;display:flex;flex-direction:column;gap:2px}
.app .lg-error{font-size:14px;color:#FFB4AB;margin:10px 0 0;line-height:1.5}.app .lg-error:empty,.app .lg-status:empty{display:none}
.app .lg-glass>.lg-error{margin:0;text-align:center}
.app .lg-status{font-size:14px;color:#B8D3D7;margin:10px 0 0}.app .lg-glass>.lg-status{margin:0;text-align:center}
/* 輸入欄與驗證碼格 */
.app .lg-field{width:100%;height:56px;min-height:56px;margin:22px 0 0;padding:0 18px;border-radius:16px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);color:#EAF4F5;font-size:16px;text-align:left}
.app .lg-field::placeholder{color:#8DB1B7}
.app .lg-field:focus{border:1.5px solid #3FC1BF;background:rgba(63,193,191,.08);outline:none}
.app .lg-field.lg-center{text-align:center;letter-spacing:8px;font-size:24px;font-weight:300}
.app .lg-code{position:relative;margin-top:26px;display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.app .lg-cell{min-width:0;height:58px;border-radius:14px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:300;color:#FFFFFF;font-variant-numeric:tabular-nums}
.app .lg-cell.on{border:1.5px solid #3FC1BF;box-shadow:0 0 0 4px rgba(63,193,191,.15)}
.app .lg-code-input{position:absolute;inset:0;width:100%;height:100%;min-height:58px;margin:0;padding:0;border:0;background:transparent;color:transparent;-webkit-text-fill-color:transparent;caret-color:transparent;font-size:16px;letter-spacing:40px;text-align:center}
.app .lg-meta{margin:14px 0 0;font-size:12.5px;color:#A9C9CD;display:flex;justify-content:space-between;align-items:center;gap:8px}.app .lg-meta b{color:#9BEDEA;font-weight:500}
/* 選身分 */
.app .lg-roles{margin-top:20px;display:flex;flex-direction:column;gap:10px}
.app .lg-role{display:flex;align-items:center;gap:14px;width:100%;min-height:68px;margin:0;padding:14px;border-radius:18px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);color:#FFFFFF;text-align:left;font-weight:400;cursor:pointer}
.app .lg-role.sel{border:1.5px solid #3FC1BF;background:rgba(63,193,191,.12)}
.app .lg-ri{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;flex:none}.app .lg-ri svg{width:22px;height:22px}
.app .lg-rt b{display:block;font-size:16px;font-weight:600}.app .lg-rt small{display:block;font-size:12.5px;color:#A9C9CD}
.app .lg-check{margin-left:auto;width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);flex:none}
.app .lg-role.sel .lg-check{background:#3FC1BF;border-color:#3FC1BF;box-shadow:inset 0 0 0 4px #0C4A55}
/* 交接碼 */
.app .lg-pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;padding:4px 10px;border-radius:20px;background:rgba(255,255,255,.1);color:#CFE6E9;letter-spacing:1px}
.app .lg-bigcode{margin:22px 0 6px;font-size:46px;font-weight:200;letter-spacing:12px;font-variant-numeric:tabular-nums;color:#FFFFFF}
.app .lg-timer{height:4px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden;margin-top:12px}.app .lg-timer i{display:block;height:100%;width:100%;background:#3FC1BF}
.app .lg-why{margin-top:14px}
.app .lg :focus-visible{outline:3px solid #9BEDEA;outline-offset:2px}
.app .lg .lg-code-input:focus,.app .lg .lg-code-input:focus-visible,.app .lg .lg-word:focus,.app .lg .lg-h:focus{outline:none;box-shadow:none}
.app .lg-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0}
@media (max-height:700px){.app .lg-brand{padding-top:calc(48px + env(safe-area-inset-top,0px))}.app .lg-word{font-size:44px}.app .lg-claim{font-size:18px}}
/* ═══ 隊伍／名冊／邀請／家長綁定（M0，team-ui.mjs 系列）：只用既有令牌，淺色與深色共用 ═══ */
.app .tm{padding-bottom:24px}
.tm h1{font-size:26px;line-height:1.25;margin:10px 0 6px}.tm .tm-h2{font-size:18px;margin:18px 0 6px}
.tm .tm-sub{color:var(--mute);font-size:14px;margin:4px 0}.tm .tm-sub.center,.tm .center{text-align:center;justify-content:center}
.tm .tm-foot{color:var(--mute);font-size:13px;text-align:center;margin:8px 0}
.tm .tm-load{color:var(--mute);padding:24px 0;text-align:center}
.tm .tm-req{color:#B8301A}.tm .tm-opt{color:var(--mute);font-size:12px;font-weight:400}
.tm .tm-label{margin:14px 0 4px}.tm label small.tm-count{display:block;text-align:right;color:var(--mute)}
.tm .tm-msg{min-height:20px;margin:6px 0;font-size:14px;color:var(--mute)}.tm .tm-msg.bad{color:#B8301A;font-weight:600}
.tm .tm-error{border-color:#B8301A}.tm .tm-error b{color:#B8301A}
.tm .tm-info,.tm .tm-warn{border-radius:var(--rs);font-size:14px;padding:12px 14px}
.tm .tm-info{background:var(--swt);border-color:transparent}.tm .tm-warn{background:var(--warn);color:var(--warnink);border-color:transparent}
.tm .tm-warn p,.tm .tm-info p{margin:6px 0}
.tm .tm-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}.tm .tm-chips.center{justify-content:center}
.tm .tm-chip{display:inline-block;font-size:12px;font-weight:600;line-height:1;padding:5px 9px;border-radius:999px;border:1.5px solid transparent;background:var(--brt);color:var(--ink)}
.tm .tm-chip.ok{background:var(--at-ok-t);color:var(--at-ok)}.tm .tm-chip.warn{background:var(--at-leave-t);color:var(--at-leave)}
.tm .tm-chip.info{background:var(--swt);color:var(--ink)}.tm .tm-chip.bad{background:var(--at-abs-t);color:var(--at-abs)}
/* logo 圓章 */
.tm .tm-logo{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;font-weight:800;font-size:18px;overflow:hidden;position:relative}
.tm .tm-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tm .tm-logo.xl{width:96px;height:96px;font-size:44px}.tm .tm-logo.chooser{border:3px dashed var(--acc);outline:4px solid transparent}
.tm .tm-logo-pick{display:grid;justify-items:center;gap:8px;margin:8px 0 12px}
.app .tm .tm-link{width:auto;min-height:44px;margin:0;padding:0 8px;border:0;background:none;color:var(--acc);font-weight:600;text-align:center}
.app .tm .tm-btn2{min-height:46px;margin:0;border:1.5px solid var(--ink);background:var(--card);border-radius:14px;font-weight:600}
.app .tm .tm-btn2.bad,.app .tm .primary.bad{color:#B8301A;border-color:#B8301A}.app .tm .primary.bad{background:#B8301A;color:#fff}
.app .tm .tm-btn2.wide{width:100%;margin-top:18px}
.tm .tm-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0}.tm .tm-row>:only-child{grid-column:1/-1}
.tm .tm-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
/* 運動項目／性別 單選鈕 */
.tm .tm-sports{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.tm .tm-gender{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.app .tm .tm-sport{margin:0;min-height:48px;padding:6px 4px;border:1.5px solid var(--bd);border-radius:14px;font-size:14px;line-height:1.2;display:flex;align-items:center;justify-content:center;gap:5px}
.tm .tm-sport[data-sport]::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--dot);flex:none}
.app .tm .tm-sport[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.tm .tm-sports:has([data-role]){grid-template-columns:1fr 1fr}
/* 角色入口、接下來步驟 */
.tm .tm-role.main{border:2px solid var(--acc)}.tm .tm-role p{color:var(--mute);margin:4px 0 8px}
.app .tm .tm-role-row,.app .tm .tm-step,.app .tm .tm-team,.app .tm .tm-sw-row,.app .tm .tm-row-b{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:8px 0}
.app .tm .tm-role-row{flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px}.tm .tm-role-row small{color:var(--mute);font-weight:400}
.tm .tm-num{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--bg);font-size:14px}
.tm .tm-step small,.tm .tm-row-t small{display:block;color:var(--mute);font-weight:400}
.tm .tm-hero{display:grid;justify-items:center;gap:6px;text-align:center;margin:8px 0}.tm .tm-hero h1{margin:6px 0}
/* 名額進度條 */
.app .tm .tm-seat{padding:14px 16px}.tm-seat-h{display:flex;align-items:center;gap:8px}.tm-seat-h b{flex:1}.tm-seat-n{font-size:22px;font-weight:700}
.tm .tm-bar{height:10px;border-radius:6px;background:var(--line);overflow:hidden;margin:10px 0 8px}.tm .tm-bar i{display:block;height:100%;background:var(--acc);border-radius:6px}
.tm .tm-seat.full{border:2px solid #C2570C;background:var(--warn)}.tm .tm-seat.full .tm-bar i{background:#C2570C}
.tm .tm-seat-s{color:var(--mute)}
/* 名冊 */
.tm .tm-head{display:flex;align-items:center;gap:10px;margin:6px 0}.app .tm .tm-team{flex:1;min-width:0;border:0;background:none;padding:0;margin:0}
.tm .tm-team-t{display:grid;min-width:0}.tm .tm-team-t b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tm .tm-team-t small{color:var(--mute);font-weight:400}
.app .tm .tm-add{width:auto;flex:none;margin:0;padding:0 16px;min-height:44px;background:var(--gobg);color:var(--goink);border-color:transparent;border-radius:14px}
.app .tm .tm-add.off,.app .tm .tm-add:disabled{background:var(--card);color:var(--mute);border:1px solid var(--bd)}
.tm .tm-quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px;margin:8px 0}
.app .tm .tm-q{min-height:44px;margin:0;padding:0 8px;font-size:14px;border-radius:12px;color:var(--acc)}
.tm .tm-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);margin:10px 0}
.app .tm .tm-tab{margin:0;border:0;border-radius:0;background:none;min-height:46px;color:var(--mute)}.app .tm .tm-tab[aria-selected="true"]{color:var(--ink);box-shadow:inset 0 -3px 0 var(--acc)}
.tm .tm-list{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:2px 12px}
.app .tm .tm-row-b{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0;padding:10px 0;min-height:64px;font-weight:400}.tm .tm-row-b:last-child{border-bottom:0}
.tm .tm-row-t{display:grid;flex:1;min-width:0}.tm .tm-row-t b{font-weight:700}
.tm .tm-av{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--swt);font-weight:700}.tm .tm-av.big{width:56px;height:56px;font-size:22px}.tm .tm-av.mute{background:var(--brt)}
.tm .tm-chev{color:var(--mute);font-size:20px}
.tm .tm-row-a{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.tm .tm-row-a:last-child{border:0}
.app .tm .tm-restore{width:auto;margin:0;padding:0 14px;min-height:44px;border:1.5px solid var(--ink)}
.tm .tm-empty{text-align:center}.tm .tm-card-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tm .tm-person{display:flex;gap:14px;align-items:center;margin:8px 0}.tm .tm-person h1{margin:0}.tm .tm-person small{color:var(--mute)}
.tm .tm-guard{margin:6px 0}
.app .tm .tm-sw-row{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0;padding:10px 0;font-weight:400}.tm .tm-sw-row[aria-pressed="true"]{background:none}
.app .tm .tm-sw-act{justify-content:flex-start;border:0;background:none;color:var(--acc);margin:0}
/* 邀請：QR、短碼、分享 */
.tm .tm-qr{text-align:center}.tm .tm-qr-img{display:grid;place-items:center}.tm .tm-qr-img svg{width:min(240px,70vw);height:auto;border-radius:12px}
.tm .tm-code{font:700 30px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;margin:10px 0 2px;overflow-wrap:anywhere}.tm .tm-code.big{font-size:34px}
.tm .tm-lifeline{display:flex;align-items:center;gap:12px}.tm .tm-lifeline>span:nth-child(2){flex:1;display:grid}.tm .tm-lifeline small{color:var(--mute)}.tm .tm-clock{font-size:24px;color:var(--acc)}
.tm .tm-actions{display:grid;gap:8px;margin:8px 0}
.app .tm .tm-line{background:#06C755;color:#fff;border-color:transparent;margin:0}
.tm .tm-stepline{display:flex;align-items:center;gap:8px;padding:8px 0}.tm .tm-stepline>span:first-child{flex:1;display:grid}.tm .tm-stepline small{color:var(--mute)}
.app .tm .tm-stepper{width:44px;flex:none;margin:0;padding:0;font-size:20px;border-radius:12px}.tm .tm-step-v{min-width:58px;text-align:center;font-weight:700}
.tm .tm-inv{display:grid;gap:6px;margin:8px 0}
/* 待審清單 */
.tm .tm-req-h{display:flex;align-items:center;gap:12px}.tm .tm-hint{margin:8px 0 4px;font-weight:600}
.app .tm .tm-pickkid{margin:6px 0;border:1.5px solid var(--acc);color:var(--acc);text-align:left;border-radius:12px}.app .tm .tm-pickkid.done{color:var(--ink);border-color:var(--ink)}
.tm .tm-plat{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;border-top:1px solid var(--line);font-size:14px}
/* 家長加入／我的孩子 */
.tm.dark{background:linear-gradient(160deg,#0E7C86,#082B3A 62%);color:#fff;border-radius:0 0 28px 28px;margin:0;padding:24px 16px 28px;min-height:70vh}
.tm.dark h1,.tm.dark .tm-join-line{color:#fff}.tm.dark .tm-sub,.tm.dark .tm-foot{color:rgba(255,255,255,.78)}
.tm .tm-join-h{display:grid;gap:8px;margin:6px 0 12px}.tm .tm-kicker{font-size:13px;letter-spacing:.12em;opacity:.85}.tm .tm-join-line{font-size:20px;margin:0}
.app .tm.dark .primary{background:#fff;color:#073947}
.app .tm .wb.link{display:flex;align-items:center;justify-content:center;width:100%;color:var(--acc);font-weight:600}.tm.dark .wb.link{color:#fff}
.app .tm .tm-kid{background:var(--hbg);color:var(--hink);border:var(--hbd)}.tm .tm-kid-h{display:flex;gap:14px;align-items:center}.tm .tm-kid h2{margin:0;font-size:22px}
.tm .tm-kid .tm-av{background:rgba(255,255,255,.2);color:#fff}.tm .tm-kid-team{display:flex;align-items:center;gap:8px;margin-top:6px}.tm .tm-kid-team .tm-logo{width:24px;height:24px;font-size:12px}
.tm .tm-kid .tm-chip{background:rgba(255,255,255,.2);color:#fff}
.tm .tm-wait-t{display:block;font-size:20px;text-align:center}.tm .tm-wait .tm-sub{text-align:center}
.tm .tm-kv{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.tm .tm-kv span{color:var(--mute)}.tm .tm-kv b{display:inline-flex;align-items:center;gap:6px;text-align:right}
.tm .tm-kv .tm-logo{width:24px;height:24px;font-size:12px}
.tm .tm-steps{list-style:none;margin:12px 0;padding:0}.tm .tm-st{display:grid;gap:0;padding:8px 0 8px 40px;position:relative}.tm .tm-st small{color:var(--mute)}
.tm .tm-st::before{content:"";position:absolute;left:0;top:8px;width:26px;height:26px;border-radius:50%;border:2px solid var(--bd);box-sizing:border-box}
.tm .tm-st.done::before{background:var(--ok);border-color:var(--ok)}.tm .tm-st.now::before{background:var(--acc);border-color:var(--acc)}
.tm .tm-entry-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 16px}.tm-entry.card .tm-entry-row{margin:8px 0 0}
.app .tm-entry-btn{margin:0;min-height:44px;border-radius:14px;font-weight:600;color:var(--acc)}
.view>.tm-entry:not(.card),.screen>.tm-entry:not(.card){padding:0}
.tm-entry.card{margin:14px 16px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r)}.tm-entry.card h2{margin:0 0 4px;font-size:17px}.tm-entry.card .tm-sub{color:var(--mute);margin:0}
.tm .tm-cap{display:block;color:var(--mute);margin:-2px 0 6px}

/* ═══ 訓練頁：記錄成績、出席、課表、明細（池邊濕手：記錄流程的觸控目標 ≥56px，只用既有 token） ═══ */
.rflow .actor{font-size:13px;color:var(--mute);margin:4px 0 8px}.rflow .hint{color:var(--mute);font-size:13px;margin:6px 0}
.rflow .rerr{border:2px solid var(--warnink);background:var(--warn);color:var(--warnink);border-radius:12px;padding:8px 10px;margin:8px 0}
.rflow .rwarn{background:var(--warn);color:var(--warnink);border-radius:8px;padding:2px 6px}.rflow .rmsg{background:var(--swt);color:var(--ink);border-radius:12px;padding:8px 10px;margin:8px 0}
.rflow .seg button{min-height:56px;font-size:15px}.rflow h2{margin:14px 0 8px}.rflow .shead{font-size:14px;color:var(--mute);font-weight:600;margin:14px 0 4px}
.app .rflow .wb.rchip{min-height:56px;padding:0 20px;font-size:16px}
.app .rflow .wb.rbig{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:100%;min-height:72px;padding:0 16px;border-radius:var(--rs);background:var(--card);border:1px solid var(--bd);font-size:18px;font-weight:600;text-align:left}
.rbig small{font-size:13px;font-weight:400;color:var(--mute)}.app .rflow .wb.rbig[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.app .rflow .wb.rbig[aria-pressed="true"] small{color:var(--bg)}
.rstrokes{display:grid;grid-template-columns:1fr 1fr;gap:8px}.rpools{display:grid;gap:8px}.rpools h2,.revent h2{margin-bottom:4px}.rflow .rstrokes .rbig{align-items:center;text-align:center;font-size:20px}
.app .rflow button.rbtn,.app .rflow .rbtn{min-height:60px;margin:8px 0;border-radius:30px;font-size:17px}.rbtn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--bd)}
.rsteps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:8px 0}
.app .rflow .wb.rstep{width:100%;min-height:56px;padding:0 4px;border-radius:var(--rs);background:var(--card);border:1px solid var(--line);font-size:13px;text-align:center}
.app .rflow .wb.rstep[aria-current="step"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.app .rflow .wb.rstep:disabled{color:var(--mute)}
.rhead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:6px 0}.rhead b{font-size:17px}
.rflow .syncbar .sync{font-size:13px;color:var(--mute);margin:4px 0}.rflow .sync.badge{color:var(--warnink)}
.app .rflow .rrow{margin:10px 0;padding:10px 12px}.app .rflow .rrow.active{border-color:var(--acc);border-width:2px}
.rtop{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.rtop b{font-size:17px}.rtop small{color:var(--mute)}
.app .rflow .wb.rsmall{display:inline-flex;align-items:center;justify-content:center;min-width:56px;min-height:56px;padding:0 10px;border-radius:var(--rs);border:1px solid var(--bd);background:var(--card);font-size:14px;font-weight:600;text-align:center}
.app .rflow .wb.rsmall[aria-pressed="true"]{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}
.app .rflow .wb.rsmall.att{flex:1}.app .rflow .wb.rsmall.att[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.attopts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:6px}.asum{font-weight:600;margin:8px 0 2px}.arow b{font-size:17px}
.rfb{margin:6px 0 0;font-size:14px}.rfb.rerr{margin-top:6px}
.ractions{display:flex;gap:8px}.ractions>*{flex:1}
.trow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 0;border-top:1px solid var(--line);min-height:56px}.trow:first-of-type{border-top:0}
.dline small{color:var(--mute)}.focus{font-size:18px;font-weight:600}
.grant{border-top:1px solid var(--line);padding:10px 0}.grant small{color:var(--mute);margin-left:8px}.grantsum{color:var(--mute);font-size:13px;margin:4px 0}

/* ═══ 記錄成績（v22）：橫向成績表、碼表、底部輸入面板、當天活動表、連線狀態燈 ═══ */
.conn{position:absolute;top:-2px;right:-2px;width:14px;height:14px;box-sizing:content-box;display:grid;place-items:center;font-size:10px;font-weight:800;line-height:1;border:2px solid var(--bg)}
.conn.ok{background:var(--ok);border-radius:50%}.conn.off{background:var(--offc);color:var(--offink);border-radius:4px}
.rsetup label{display:block;margin:8px 0}.rsetup input[type=date]{display:block;width:100%;min-height:56px;font-size:18px;margin-top:4px}
.dset{border-top:1px solid var(--line);padding:10px 0}.dset h3{margin:4px 0}.dset .laps{list-style:none;padding-left:0}.mk{font-weight:700;color:var(--ink)}
.dsum{margin:4px 0;font-weight:600}.dchart{margin:6px 0}.dtrend{display:flex;align-items:center;gap:10px;margin:6px 0}.dtrend .spark{width:160px;height:40px}
.chart.repbars .bar.fast{fill:var(--ink)}.chart.repbars .bar.slow{fill:none;stroke:var(--acc);stroke-width:2;stroke-dasharray:4 3}
.chart .tag{font-size:11px;font-weight:700;font-family:var(--fb)}.chart .tag.tf{fill:var(--bg)}.chart .tag.ts{fill:var(--ink)}
.shead2{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px}.shead2 small{color:var(--mute)}
.dmeta .pbrow{margin:4px 0}.dcomment{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}.dcomment small{color:var(--mute)}
.app article.sharecard{border:2px solid var(--ink);padding:20px 18px;font-size:17px}.sharecard .pbmark{font-size:13px}
.tb{display:inline-block;margin-right:10px}.tpbs{margin:8px 0}
/* ═══ 今日上課（v23）：緊湊日期＋池長同一行、可收合的學生名單、未到區、出席月曆 ═══ */
.sess{margin:4px 0 8px}.setrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.dwrap{flex:0 0 auto}
.datebar{display:inline-flex;align-items:center;gap:2px}.pools{flex-wrap:nowrap;gap:6px}
.app .rflow .wb.cstep{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:44px;padding:0;font-size:22px;color:var(--acc);font-weight:600}
.app .rflow .wb.cstep:disabled{color:var(--mute);opacity:.45}
.app .rflow .wb.cchip{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 12px;font-size:15px}
.app .rflow .wb.dchip{min-width:104px;font-weight:600}
.dpick{display:block;width:100%;min-height:44px;margin:6px 0 0;font-size:16px}
.app .rflow .wb.sumbtn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:48px;margin:8px 0 0;padding:0 14px;border-radius:var(--rs);background:var(--card);border:1px solid var(--bd);font-size:15px;text-align:left}
.sumbtn b{font-weight:600}.sumbtn .chev{color:var(--mute);font-size:13px;white-space:nowrap}
.app .rflow .wb.sumbtn.ghost2{min-height:44px;background:transparent;font-size:14px;color:var(--mute)}
.pick{margin:8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--rs);background:var(--card)}
.pick input[type=search]{display:block;width:100%;min-height:44px;margin:0 0 8px;font-size:16px}
.pacts2{margin:0 0 6px}.pcount{margin:4px 0;font-weight:600;font-size:14px}.pick .hint:empty{display:none}
.pchips{display:flex;flex-wrap:wrap;gap:6px}.pick .shead,.plist2 .shead{margin:10px 0 4px}
.app .rflow .wb.schip{min-width:64px}.app .rflow .wb.cchip:disabled{opacity:.45}
.app .rflow .wb.donebtn{margin:10px 0 0;width:100%}
.absent-rows{margin:6px 0}.arow2{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:4px 0;border-top:1px solid var(--line)}
.arow2 .anm{display:flex;flex-direction:column;min-width:0}.arow2 .anm small{color:var(--mute);font-size:12px}.aopts{display:flex;gap:6px;flex:0 0 auto}
.app .rflow .wb.cchip.att{min-width:52px;padding:0 8px;font-size:14px}
.monthnav{display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0}.monthlabel{min-width:120px;text-align:center;font-size:17px}
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:6px 0}
.calh{text-align:center;font-size:12px;color:var(--mute);padding:2px 0}.calx{min-height:44px}
.app .wb.calday,.calday.none{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:48px;border-radius:10px;font-size:14px}
.calday.none{color:var(--mute);opacity:.6}.app .wb.calday{background:var(--card);border:1px solid var(--bd)}
.app .wb.calday .dm{font-weight:700;font-size:13px;line-height:1.1}.app .wb.calday[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.app .wb.calday.a-leave,.app .wb.calday.a-absent{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}.app .wb.calday.a-absent{border-style:dashed}
.app .wb.calday.a-late,.app .wb.calday.a-early{background:var(--swt)}.legend{margin-top:4px}
.todaybadge{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px;margin:8px 0;padding:8px 12px;border-radius:var(--rs);border:2px solid var(--bd);background:var(--card)}
.todaybadge.yes{border-color:var(--ok)}.todaybadge.no{border-style:dashed}.todaybadge small{color:var(--mute)}
.app .rflow .wb.fullw,.app .rflow .fullw{width:100%}.app .rflow .wb.rbtn,.app .rflow .rbtn{text-align:center}
.bigstat{font-size:28px;font-weight:700;margin:4px 0}.grantsums{margin-top:10px}.grantsum{margin:2px 0}
.plist2{max-height:none}.grant .pchips{margin-bottom:4px}
/* ═══ 兩頁式記錄（v24）：第 1 頁點名、第 2 頁單人逐筆（大按鈕 ≥56px） ═══ */
.g2,.g3,.g4,.g5{display:grid;gap:8px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.sec2{margin-top:8px}.hacts{display:flex;gap:6px;flex:0 0 auto}.rhead{flex-wrap:wrap}
.studrow{display:flex;align-items:center;gap:6px}.studsel{flex:1;min-width:0;min-height:56px;margin:0;font-size:18px;font-weight:600}
.app .rflow .wb.cstep.big{min-width:56px;min-height:56px;border:1px solid var(--bd);border-radius:var(--rs);background:var(--card)}
.tinfo{margin:4px 0 10px;min-height:24px}.stat3{margin:8px 0}.trec{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:6px 0;border-top:1px solid var(--line)}.tacts{display:flex;gap:6px;margin-left:auto}
/* ═══ 記錄頁第 2 頁（v25）：緊湊密度、泳池選擇器、圖示 ═══ */
.pic{flex:0 0 auto;vertical-align:-3px}.rowic{color:var(--mute)}
.rflow h1{font-size:20px;margin:6px 0 2px}.rflow .actor{margin:2px 0 6px}
.rpage .rhead{display:flex;justify-content:space-between;align-items:center;gap:6px;margin:2px 0 8px}.rpage .rhead b{font-size:15px}
.single{display:grid;gap:8px}.single>*{margin:0}
.single .studrow{display:flex;align-items:center;gap:8px}.single .studsel{flex:1;min-width:0;min-height:44px;margin:0;font-size:16px;font-weight:600}
.app .rflow .wb.poolsum{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:var(--rs);background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.06);text-align:left}
.poolsum .pstext{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}.poolsum b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.poolsum small{color:var(--mute);font-size:13px}.poolsum .pinic{color:var(--acc)}
.app .rflow .single .wb.sx{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:100%;min-width:0;min-height:40px;padding:0 4px;border-radius:20px;font-size:14px}
.single .g4,.single .g5,.single .g2{gap:6px}
.single .morerow{display:flex;gap:6px;align-items:center}.single .sec2{margin:0;flex:0 0 auto;gap:6px;flex-wrap:nowrap}.app .rflow .single .sec2 .wb.sx{width:auto;padding:0 12px}.single .customd{flex:1;min-width:0;min-height:40px;margin:0;font-size:14px;padding:0 10px}
.single .repbadge{display:flex;align-items:center;gap:6px;margin:2px 0 0;font-size:14px;font-weight:600}
.single .tinfo{margin:0;min-height:20px;font-size:14px;display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}
.app .rflow .single .wb.sbtn,.app .rflow .wb.sbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;margin:0;border-radius:24px;font-size:14px;padding:0 8px}
.single .rmsg{margin:0;padding:6px 10px;font-size:14px}.single .rerr{margin:0;padding:6px 10px;font-size:14px}
.single article{margin:4px 0 0;padding:12px;border-radius:var(--rs);border:1px solid var(--line);box-shadow:0 1px 2px rgba(0,0,0,.06)}.single article h2{font-size:16px;margin:0 0 4px}.single article h3.shead{margin:8px 0 2px;font-size:14px}
.trec{font-size:14px}.app .rflow .wb.rsmall.mini{display:inline-flex;align-items:center;gap:4px;min-width:0;min-height:40px;padding:0 10px;font-size:14px}
.app .rflow .wb.cchip{gap:5px}.rpage .rhead .wb.cchip{padding:0 10px}
.prow{display:flex;align-items:center;gap:4px}.app .prow .wb.pick{flex:1;min-width:0;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;padding:6px 10px;min-height:52px;text-align:left;width:auto}.prow .pick b{font-size:15px}.prow .pick small{font-size:13px}
.app .wb.favbtn{flex:0 0 44px;min-height:44px;display:grid;place-items:center;color:var(--mute)}.app .wb.favbtn[aria-pressed="true"]{color:var(--warnink)}.app .wb.favbtn[aria-pressed="true"] .pic{fill:currentColor}
.poolist{max-height:42dvh;overflow-y:auto;margin:6px 0}.pgh{margin:10px 0 4px;font-size:13px;color:var(--mute);font-weight:600}
.manual{border-top:1px solid var(--line);margin-top:8px;padding-top:4px}.manual input{display:block;width:100%;min-height:44px;margin:6px 0;font-size:16px}
.sheet .wb.sx{min-height:40px;padding:0 10px;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border-radius:20px;border:1px solid var(--bd);background:var(--card)}.sheet .wb.sx[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.sheet .g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:6px 0}
/* ═══ 語意色（v26）：每個語意只對應一個顏色；底色大面積仍是中性與深海藍。顏色之外都另有圖示、形狀、符號或文字。 ═══ */
/* 泳式：圖示＋泳式色；--c 文字／圖形色，--ct 淺底 */
.st-free{--c:var(--st-free);--ct:var(--st-free-t)}.st-back{--c:var(--st-back);--ct:var(--st-back-t)}.st-breast{--c:var(--st-breast);--ct:var(--st-breast-t)}.st-fly{--c:var(--st-fly);--ct:var(--st-fly-t)}.st-im{--c:var(--st-im);--ct:var(--st-im-t)}.st-relay{--c:var(--st-relay);--ct:var(--st-relay-t)}
.stg{display:inline-flex;align-items:center;gap:5px;vertical-align:middle}.stg .pic{color:var(--c)}
.stl{display:flex;align-items:center;gap:10px;padding-left:12px;border-left:6px solid var(--c,var(--acc))}.stl .pic{color:var(--c,var(--acc))}
.evgroup[class*="st-"]{border-left:5px solid var(--c)}.evgroup h4.stg{display:flex;color:var(--ink)}
.chip[data-stroke="free"]{--c:var(--st-free);--ct:var(--st-free-t)}.chip[data-stroke="back"]{--c:var(--st-back);--ct:var(--st-back-t)}.chip[data-stroke="breast"]{--c:var(--st-breast);--ct:var(--st-breast-t)}.chip[data-stroke="fly"]{--c:var(--st-fly);--ct:var(--st-fly-t)}.chip[data-stroke="im"]{--c:var(--st-im);--ct:var(--st-im-t)}.chip[data-stroke="relay"]{--c:var(--st-relay);--ct:var(--st-relay-t)}
.app .rflow .wb.chip.sx[data-stroke]{border-color:var(--c)}.chip.sx[data-stroke] .pic{color:var(--c)}
.app .rflow .wb.chip.sx[data-stroke][aria-pressed="true"]{background:var(--c);color:var(--st-on);border-color:var(--c)}.chip.sx[data-stroke][aria-pressed="true"] .pic{color:var(--st-on)}
/* 池別：短池淺青、長池深藍（另有 25／50 文字） */
.pl-s{--pc:var(--pool-s)}.pl-l{--pc:var(--pool-l)}
.ptag{display:inline-block;font-size:12px;font-weight:700;line-height:1.6;padding:0 6px;border-radius:6px;border:1px solid var(--pc)}
.ptag.pl-s{background:var(--pool-s-t);color:var(--pool-s)}.ptag.pl-l{background:var(--pool-l-t);color:var(--pool-l)}
.ph{border-left:5px solid var(--pc);padding-left:8px}
.app .rflow .wb.cchip[data-plen]{border-bottom:3px solid var(--pc)}.cchip[data-plen="25"]{--pc:var(--pool-s)}.cchip[data-plen="50"]{--pc:var(--pool-l)}
.app .rflow .wb.cchip[data-plen][aria-pressed="true"]{color:var(--ink);border:2px solid var(--pc)}
.app .rflow .wb.cchip[data-plen="25"][aria-pressed="true"]{background:var(--pool-s-t)}.app .rflow .wb.cchip[data-plen="50"][aria-pressed="true"]{background:var(--pool-l-t)}
/* PB 金（星＋PB 文字） */
.pbmark{display:inline-flex;align-items:center;gap:3px;background:var(--pb-f);color:var(--pb-on)}.pbmark:not(:has(svg))::before{content:"★"}
/* 達標綠／未達標橘：進度條（文字另寫差距秒數） */
.pbar .track i{background:var(--miss)}.pbar.done .track i{background:var(--hit)}
.app .wb.chip.st-ok .mark,.wall .st-ok .mark{color:var(--at-ok)}
/* 出席：到＝綠圓、請假＝琥珀菱形、缺席＝珊瑚方形、遲到早退＝黃三角（形狀與文字都保留） */
.app .wb.chip.st-ok{background:var(--at-ok-t);border-color:var(--at-ok)}
.app .wb.chip.st-absent{background:var(--at-abs-t);color:var(--ink);border:2px solid var(--at-abs)}.wall .st-absent .mark{color:var(--at-abs)}
.app .wb.chip.st-adjusted{background:var(--at-leave-t);color:var(--ink);border:2px solid var(--at-leave)}.wall .st-adjusted .mark{color:var(--at-leave)}
.app .wb.chip.st-incomplete{background:var(--at-late-t);color:var(--ink);border:2px dashed var(--at-late)}.wall .st-incomplete .mark{color:var(--at-late)}
.cchip.att[data-attend]::before,.calday .dm{content:"";display:inline-block;flex:none}
.cchip.att[data-attend]::before{width:11px;height:11px;margin-right:5px;background:var(--ac)}
.cchip.att[data-attend="present"]{--ac:var(--at-ok);--act:var(--at-ok-t);--acb:var(--at-ok)}.cchip.att[data-attend="leave"]{--ac:var(--at-leave);--act:var(--at-leave-t);--acb:var(--at-leave)}
.cchip.att[data-attend="absent"]{--ac:var(--at-abs);--act:var(--at-abs-t);--acb:var(--at-abs)}.cchip.att[data-attend="late"],.cchip.att[data-attend="early"]{--ac:var(--at-late-f);--act:var(--at-late-t);--acb:var(--at-late)}
.cchip.att[data-attend="present"]::before{border-radius:50%}.cchip.att[data-attend="leave"]::before{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:13px;height:13px}
.cchip.att[data-attend="absent"]::before{border-radius:2px}.cchip.att[data-attend="late"]::before,.cchip.att[data-attend="early"]::before{clip-path:polygon(50% 0,100% 100%,0 100%);width:13px;height:12px}
.app .rflow .wb.cchip.att[data-attend]{border-color:var(--acb)}.app .rflow .wb.cchip.att[data-attend][aria-pressed="true"]{background:var(--act);color:var(--ink);border:2px solid var(--acb);font-weight:700}
.app .wb.calday.a-present{background:var(--at-ok-t);border-color:var(--at-ok)}
.app .wb.calday.a-leave{background:var(--at-leave-t);color:var(--ink);border:2px solid var(--at-leave)}.app .wb.calday.a-absent{background:var(--at-abs-t);color:var(--ink);border:2px dashed var(--at-abs)}
.app .wb.calday.a-late,.app .wb.calday.a-early{background:var(--at-late-t);color:var(--ink);border:2px solid var(--at-late)}
.calday .dm{display:grid;place-items:center;width:20px;height:20px;font-size:11px;font-weight:800;line-height:1;color:var(--st-on);margin-top:1px}
.calday.a-present .dm{background:var(--at-ok);border-radius:50%}.calday.a-leave .dm{background:var(--at-leave);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:22px;height:22px}
.calday.a-absent .dm{background:var(--at-abs);border-radius:3px}.calday.a-late .dm,.calday.a-early .dm{background:var(--at-late-f);color:var(--at-late-g);clip-path:polygon(50% 0,100% 100%,0 100%);width:22px;height:20px;padding-top:6px;font-size:10px}
.app .wb.calday[aria-pressed="true"] .dm{outline:2px solid var(--bg)}
.todaybadge.yes{border-color:var(--at-ok);background:var(--at-ok-t)}.todaybadge.no{border-color:var(--at-leave)}
/* 成績庫四個分段（我的／賽事／排行／標準與紀錄）與選手頁標題色條 */
.libseg button[data-key="mine"]{--c:var(--sec-mine)}.libseg button[data-key="meets"]{--c:var(--sec-meets)}.libseg button[data-key="rank"]{--c:var(--sec-rank)}.libseg button[data-key="std"]{--c:var(--sec-std)}
.app .libseg button{border-bottom:3px solid var(--c)}.app .libseg button[aria-pressed="true"]{background:var(--c);color:var(--st-on);border-color:var(--c)}
.athl-title{border-left:6px solid var(--sec-mine);padding-left:10px}
/* 標準級別（C→A）：等級階梯漸層，越高級越深（淺色）／越亮（深色） */
.lvl button[data-key="C"]{--c:var(--g2);--co:var(--g2-on)}.lvl button[data-key="B"]{--c:var(--g4);--co:var(--g4-on)}.lvl button[data-key="A"]{--c:var(--g6);--co:var(--g6-on)}
.app .lvl button{border-bottom:4px solid var(--c)}.app .lvl button[aria-pressed="true"]{background:var(--c);color:var(--co);border-color:var(--c)}
/* 彩色磚圖示：首頁入口卡、清單列、工具卡標題 */
svg.tile{border-radius:11px;flex:none}.wic{display:flex;align-items:center;gap:10px}
.ib.tl,.tx .ib.tl{background:none;border:0;box-shadow:none;width:40px;height:40px;border-radius:0}
.app .wb.quick .pic{flex:none}.child-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.child-head>.todaybadge,.child-head>.actions{flex:1 1 100%}
/* 頂部對象列與運動切換的色彩點綴（頁籤選取態維持主色） */
.targetbtn .ic{color:var(--at-ok)}.sportcell .ic{color:var(--st-free)}
/* ═══ 記錄成績第 2 頁（v26）：原生數字鍵盤、一屏版面、鍵盤上方的固定儲存列 ═══ */
.single{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
.hrow{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:1px 0}.hrow::-webkit-scrollbar{display:none}.app .hrow>.wb,.app .hrow>button{width:auto;flex:none;white-space:nowrap}.hrow.counties{margin:6px 0 8px}.popen{display:block;font-size:12px;color:var(--mute)}.lenstep h4{margin:10px 0 4px}
.app .rflow .single .hrow .wb.sx{width:auto;flex:none;padding:0 12px;min-height:40px}.single .hrow .customd{flex:none;width:84px;min-width:0;min-height:40px;margin:0;font-size:14px;padding:0 10px}
.timecard{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--rs);background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.06)}
.timerow{display:flex;gap:8px;align-items:stretch}
.app .timecard input.timein{flex:1;min-width:0;margin:0;min-height:96px;padding:0 10px;font-size:44px;line-height:1.1;font-weight:700;text-align:center;border:2px solid var(--bd);border-radius:var(--rs);background:var(--field);font-variant-numeric:tabular-nums}
.app .timecard input.timein:focus{border-color:var(--acc)}.timein::placeholder{color:var(--mute);opacity:1}
.skeys{display:grid;gap:4px;flex:0 0 96px}
.app .rflow .single .skeys .wb.skey{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:30px;padding:0 4px;margin:0;border-radius:15px;border:1px solid var(--bd);background:var(--card);font-size:13px;font-weight:600}
.app .rflow .single .skeys .wb.skey[aria-pressed="true"]{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}
.app .rflow .single .savebar{position:fixed;left:0;right:0;bottom:var(--bar-bottom,calc(64px + env(safe-area-inset-bottom,0px)));z-index:6;max-width:480px;margin:0 auto;padding:6px 12px;gap:8px;background:var(--sheet);border-top:1px solid var(--line);box-shadow:0 -6px 16px -10px rgba(0,0,0,.35)}
.app .rflow .single .savebar .wb.sbtn,.app .rflow .single .savebar button{min-height:44px;margin:0}
html[data-kb="open"] .rflow h1,html[data-kb="open"] .rflow .actor,html[data-kb="open"] .view .seg.sticky,html[data-kb="open"] .app>#message,html[data-kb="open"] .envline{display:none}
html[data-kb="open"] .app>header{display:none}html[data-kb="open"] .app .timecard input.timein{min-height:72px}html[data-kb="open"] .single{gap:6px}html[data-kb="open"] .single .rhead{margin:0}
/* ═══ 記錄成績（v27）：點名順序徽章、計時（設定／計時中／結果）、測驗總表。控制項適中（48–52px），只用既有 token ═══ */
.modeseg{margin:4px 0 8px}
.obadge{display:inline-block;margin-right:4px;font-size:17px;line-height:1;font-weight:600;color:var(--acc)}
.app .chip[aria-pressed="true"] .obadge{color:inherit}
.rflow .ohint{margin:2px 0 6px;font-weight:600;color:var(--ink)}
.osum{margin:0 0 8px;padding:8px 10px;border-radius:12px;background:var(--swt);color:var(--ink);font-size:14px;line-height:1.7}.osum b{font-weight:600}.oitem{display:inline-block;margin-right:10px;white-space:nowrap}
.schip{display:inline-flex;align-items:center}
/* 計時設定：收合成一行摘要 */
.tsetup{display:grid;gap:10px}.tsetup>article{margin:0}
.app .wb.tsum{display:flex;align-items:center;gap:10px;width:100%;min-height:60px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--rs);background:var(--card);text-align:left}
.tsumtxt{flex:1;min-width:0;display:grid;line-height:1.3}.tsumtxt b{font-size:16px;font-weight:600}.tsumtxt small{color:var(--mute);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsum .flip{transform:rotate(180deg)}
.norollrow{align-items:center}.norollrow>*{flex:none}.norollrow .link{margin-left:auto}
.tpanelset{display:grid;gap:4px;padding:6px 2px}.tpanelset .hint{margin:2px 0 6px}
.rflow .splitmodes,.rflow .ivals{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.ivals .customd,.hrow .customd{width:84px}
.olist{list-style:none;margin:0;padding:0}.olist li{display:flex;align-items:center;gap:8px;min-height:44px;border-top:1px solid var(--line)}.olist li:first-child{border-top:0}.olist small{margin-left:auto;color:var(--mute)}
.olist .obadge{font-size:20px;margin:0}
.app .rflow .tstart{position:sticky;bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:4;min-height:52px;margin:6px 0;border-radius:26px;font-size:17px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:var(--goglow)}
/* 計時中：頂部時鐘、回合 chips、到達順序清單、底部操作列。計時中收掉標題與分頁，讓一屏放得下 */
html[data-timer="run"] .rflow h1,html[data-timer="run"] .rflow .actor,html[data-timer="run"] .view .seg.sticky,html[data-timer="run"] .rpage .modeseg,html[data-timer="run"] .rpage .rhead,html[data-timer="run"] .app>header,html[data-timer="run"] .app>#message,html[data-timer="run"] .envline{display:none}
.trun{display:block}
.tclock{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;margin:0 -16px;padding:calc(8px + env(safe-area-inset-top,0px)) 16px 8px;background:var(--bg);border-bottom:1px solid var(--line)}
.tmain{margin:0;font-size:44px;line-height:1.1;font-weight:600;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.tevent{grid-column:2;grid-row:1;justify-self:end;text-align:right;color:var(--mute);font-size:12px;line-height:1.3}
.tnext{grid-column:1/-1;grid-row:2;margin:2px 0 0;padding:4px 12px;border-radius:999px;background:var(--swt);color:var(--ink);font-size:14px;font-weight:600;line-height:1.5}
.tnext.pulse{background:var(--pb-f);color:var(--pb-on);animation:pulse 1.5s ease-out}
@keyframes pulse{from{transform:scale(1.03)}}
.tstartrow{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 0}.tstartrow:empty{display:none}
.app .rflow .wb.tmark{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 16px;border-radius:24px;background:var(--gobg);color:var(--goink);font-weight:700}
.app .rflow .wb.tmarkundo{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 12px;border-radius:24px;border:1px solid var(--bd);background:var(--card);font-size:13px}
.tmsg{margin:8px 0 0;font-size:14px}.tmsg.bad{background:var(--warn);color:var(--warnink)}
.rounds{margin:8px 0 2px}
.app .rflow .wb.rnd{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-height:48px;padding:0 14px;border-radius:var(--rs);font-size:14px;line-height:1.25}.rnd small{font-size:11px;font-weight:400;opacity:.85}.rnd.full{border-color:var(--ok)}
.alist{list-style:none;margin:6px 0 0;padding:0 0 190px}
.arow{display:grid;grid-template-columns:30px 26px minmax(0,1fr) auto 40px 40px;align-items:center;gap:4px;min-height:56px;margin:6px 0;padding:4px 6px 4px 2px;border:1px solid var(--line);border-radius:14px;background:var(--card);position:relative}
.arow.arrived{border-left:4px solid var(--ok)}
.arow.next{border:2px solid var(--acc);background:var(--swt);padding-left:1px}
.arow:not(.arrived):not(.next):not(.out) .anm b{color:var(--mute)}
.arow.justgo{animation:flashrow 1.5s ease-out}@keyframes flashrow{from{background:var(--pb-t)}}
.arow.dragging{z-index:3;box-shadow:0 8px 20px -8px rgba(0,0,0,.4);opacity:.95}.arow.dropbefore{box-shadow:0 -3px 0 var(--acc)}.arow.dropafter{box-shadow:0 3px 0 var(--acc)}
.arow.out{opacity:.7}
.ahandle{display:grid;place-items:center;height:48px;color:var(--mute);touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.apos{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--line);color:var(--ink);font-size:12px;font-weight:700}
.arrived .apos{background:var(--ok);color:var(--offink)}.next .apos{background:var(--acc);color:var(--bg)}
.anm{min-width:0;display:grid;line-height:1.25}.anm b{font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.astat{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:12px;color:var(--mute)}
.tag{display:inline-block;padding:0 7px;border-radius:999px;font-size:11px;font-weight:600;line-height:1.6;background:var(--line);color:var(--ink)}
.tag.ok{background:var(--hit-t);color:var(--hit)}.tag.go{background:var(--pb-f);color:var(--pb-on)}.tag.dnf{background:var(--warn);color:var(--warnink)}
.app .alist .wb.ainline{min-height:0;padding:14px 8px;margin:-14px -4px;font-size:12px;font-weight:600;color:var(--acc)}
.atm{text-align:right;line-height:1.25}.atm b{display:block;font-size:16px;font-weight:600}.atm small{display:block;color:var(--mute);font-size:12px;min-height:15px}
.next .atm b{color:var(--acc)}
.app .alist .wb.amv{display:grid;place-items:center;width:40px;min-height:48px;border-radius:12px;color:var(--ink)}.app .alist .wb.amv:disabled{opacity:.3}
.alisttools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.alisttools .hint{margin:0}
.app .rflow .wb.treset{min-height:44px;margin:4px 0;padding:0 14px;font-size:14px;display:inline-flex;align-items:center;gap:6px;border-radius:22px}
.tbar{position:fixed;left:0;right:0;bottom:var(--bar-bottom,calc(64px + env(safe-area-inset-bottom,0px)));z-index:6;max-width:480px;margin:0 auto;display:grid;grid-template-columns:76px minmax(0,1fr) 76px;gap:8px;align-items:center;padding:8px 12px;background:var(--sheet);border-top:1px solid var(--line);box-shadow:0 -6px 16px -10px rgba(0,0,0,.35)}
.app .tbar .wb,.app .tbar button{margin:0;min-height:52px;touch-action:manipulation}.alist button{touch-action:manipulation}.viewseg+.tsum{margin-top:10px}
.app .tbar .tpress{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:26px;font-size:18px;font-weight:700;box-shadow:var(--goglow)}
.app .tbar .tundo,.app .tbar .tend{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:auto;padding:0 4px;border:1px solid var(--bd);border-radius:16px;background:var(--card);font-size:12px;font-weight:600;line-height:1.2}
.app .tbar .tend{font-size:14px}.app .tbar .tend[aria-pressed="true"]{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}
@media (prefers-reduced-motion:reduce){.tnext.pulse,.arow.justgo{animation:none}.tnext.pulse{outline:2px solid var(--pb-on)}.arow.justgo{background:var(--pb-t)}}
/* 結果與測驗總表：淺色卡片（截圖、列印用），名次表前三名底色強調 */
.app article.boardcard{--ink:var(--paper-ink);--mute:var(--paper-mute);--card:var(--paper);--line:var(--paper-line);--acc:var(--paper-acc);--bd:var(--paper-bd);--field:var(--paper);--swt:var(--paper-sel);--warn:var(--paper-warnbg);--warnink:var(--paper-warnink);--pb-f:var(--paper-pb);--pb-on:var(--paper-pbon);background:var(--paper);color:var(--paper-ink);border:1px solid var(--paper-line);box-shadow:0 1px 3px rgba(18,48,62,.08);padding:14px 12px}
.boardcard .bhead{display:grid;gap:2px;margin:0 2px 10px}.boardcard .bhead b{font-size:17px;font-weight:700}.boardcard .bhead small{color:var(--mute);font-size:12px}
.rtwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;border-radius:12px}.rtwrap:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.rtab{border-collapse:separate;border-spacing:0;min-width:100%;font-size:14px;color:var(--paper-ink)}
.rtab th{padding:8px 6px;background:var(--paper-head);color:var(--paper-mute);font-size:12px;font-weight:600;white-space:nowrap;text-align:center;border-bottom:1px solid var(--paper-line)}
.rtab td{padding:6px;background:var(--rowbg,var(--paper));border-bottom:1px solid var(--paper-line);text-align:center;white-space:nowrap;vertical-align:middle}
.rtab .trk{width:40px;min-width:40px;padding:6px 2px;position:sticky;left:0;z-index:2}.rtab .tnm{min-width:72px;padding:6px 4px;text-align:left;position:sticky;left:40px;z-index:2;box-shadow:1px 0 0 var(--paper-line)}
.rtab th.trk,.rtab th.tnm{z-index:3}
.rtab .trk b{display:block;font-size:17px;line-height:1.2}.rtab .ttie{display:block;font-size:11px;color:var(--paper-gold);font-weight:700}
.rtab .tnm b{font-weight:600;display:block}.rtab .tnm .pbmark{display:inline-flex;margin:2px 0 0;font-size:10px;padding:0 5px}
.rtab .tcl{min-width:68px;padding:6px 4px}.rtab .tcum{display:block;font-size:15px;font-weight:600;line-height:1.3}.rtab .tseg{display:block;font-size:12px;color:var(--paper-mute);line-height:1.3}.rtab .tnone{color:var(--paper-mute)}
.rtab .tdt{min-width:56px;color:var(--paper-mute)}
.rtab .tfinal{min-width:84px;text-align:right;position:sticky;right:0;z-index:2;box-shadow:-1px 0 0 var(--paper-line),-6px 0 8px -6px rgba(0,0,0,.18)}.rtab th.tfinal{z-index:3}.rtab .tbig{display:block;font-size:20px;font-weight:700;line-height:1.2}.rtab .tdn{font-size:13px;color:var(--paper-warn)}.rtab .twarn,.rtab .terr{display:block;font-size:11px;font-weight:600;color:var(--paper-warn)}
.rtab tr.p1{--rowbg:var(--pod1)}.rtab tr.p2{--rowbg:var(--pod2)}.rtab tr.p3{--rowbg:var(--pod3)}
.rtab tr.tnorank td{color:var(--paper-mute)}
.app .rtab .wb.tcb{display:block;width:100%;min-height:32px;padding:0 4px;border-radius:8px;font-variant-numeric:tabular-nums;color:var(--paper-ink)}
.app .rtab .wb.tcum{font-size:15px;font-weight:600}.app .rtab .wb.tseg{min-height:28px;font-size:12px;color:var(--paper-mute)}.app .rtab .wb.tempty{border:1px dashed var(--paper-bd);color:var(--paper-mute)}
.app .rtab .wb.tcb.sel{background:var(--paper-sel);box-shadow:inset 0 0 0 2px var(--paper-acc)}
.tpanel{position:fixed;left:0;right:0;bottom:var(--bar-bottom,calc(64px + env(safe-area-inset-bottom,0px)));z-index:6;max-width:480px;margin:0 auto;border-radius:var(--r) var(--r) 0 0;background:var(--sheet);color:var(--ink);border:1px solid var(--line);padding:8px 12px;box-shadow:0 -8px 24px -8px rgba(0,0,0,.3)}
.phead{display:flex;align-items:center;gap:6px}.phead b{flex:1;font-size:16px}
.pline input.ptime{display:block;width:100%;min-height:52px;margin:4px 0;font-size:28px;font-weight:700;text-align:center}
.pacts{display:flex;gap:8px;margin-top:6px}.pacts>*{flex:1}.app .rflow .tpanel .wb.rsmall,.app .rflow .tpanel .primary{min-height:48px;margin:0}
.withpanel{padding-bottom:230px}
.tresults .thint{margin:4px 0 8px}.tacts{display:grid;gap:2px}.rissues p{margin:6px 0;font-size:14px}.rissues:empty{display:none}
.daterange{display:flex;gap:10px;flex-wrap:wrap}.daterange label{flex:1;min-width:140px;margin:0;color:var(--mute);font-size:13px}.daterange input{margin-top:4px}
.boardcard .bnotes{margin:10px 2px 0;color:var(--paper-mute);font-size:12px;line-height:1.55}.boardcard .bnotes p{margin:3px 0}
@media print{
  .app{--bg:white;--ink:black;--card:white;--sheet:white;--line:gray;--mute:black;--acc:black;--field:white}
  html,body,.app{background:white!important;color:black!important}
  #nav,#topbar,.dock,.noprint,.seg.sticky,.back{display:none!important}
  .app article{box-shadow:none;border:1px solid black;break-inside:avoid;backdrop-filter:none}
  .app article.boardcard{border:1px solid gray;padding:8px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.rtwrap{overflow:visible}.rtab .trk,.rtab .tnm{position:static}
  .tbar,.tpanel,.tclock{display:none!important}
}
/* ═══ v28：點名版面不跳動、單人輸入頁緊湊、棄權收進「⋯」選單 ═══ */
/* 1) 點名：摘要列一開始就在、高度固定（單行橫向捲動）；序號徽章絕對定位，不改變 chip 寬高 */
.osum{height:40px;box-sizing:border-box;display:flex;align-items:center;white-space:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;line-height:1.2}.osum::-webkit-scrollbar{display:none}
.osum>*{flex:none}.osum.empty{color:var(--mute)}.oempty{font-size:14px}
.app .rflow .wb.schip{position:relative;box-sizing:border-box;min-width:72px;border-width:1px}
.schip .obadge{position:absolute;top:-6px;left:-4px;margin:0;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--bg);border:1px solid var(--acc);font-size:12px;line-height:1;color:var(--acc);pointer-events:none}
.app .chip[aria-pressed="true"] .obadge{color:var(--acc)}
.pick .shead{min-height:20px}
/* 2) 單人輸入頁：標題＋填寫者合成一行；分段控制＋日期·人數＋調整名單同一區塊；底部留出儲存列＋頁籤＋安全區 */
.rtop{display:flex;align-items:baseline;gap:8px;margin:2px 0 4px;min-width:0}
.rflow .rtop h1{font-size:16px;margin:0;flex:none}
.rflow .rtop .actor{font-size:12px;margin:0;line-height:1.3;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rctl{display:grid;gap:6px;margin:0 0 8px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--rs);background:var(--card)}
.rctl .modeseg{margin:0;gap:2px;padding:2px;background:var(--line);border-radius:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.app .rflow .rctl .modeseg button{min-height:34px;height:34px;padding:0 4px;margin:0;font-size:14px;border:0;border-radius:8px;background:transparent;box-shadow:none}
.app .rflow .rctl .modeseg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.rpage .rctl .rhead{margin:0;flex-wrap:nowrap}.rpage .rctl .rhead b{font-size:14px}
.app .rflow .rctl .rhead .wb.cchip{min-height:36px;font-size:14px}
.single{padding-bottom:calc(150px + env(safe-area-inset-bottom,0px));gap:6px}
.app .timecard input.timein{min-height:72px;font-size:40px}
.timecard{padding:8px 10px}.single .tinfo{min-height:18px}
html[data-timer="run"] .rpage .rctl,html[data-timer="run"] .rtop{display:none}
/* 3) 多人計時：列尾「⋯」小按鈕＋popover 選單 */
.arow{grid-template-columns:28px 24px minmax(0,1fr) auto 38px 38px 40px;position:relative}
.aslot{display:grid;place-items:center;width:40px;height:48px}.amv0{display:block}
.app .alist .wb.amore{display:grid;place-items:center;width:40px;min-width:40px;height:44px;min-height:40px;margin:0;padding:0;border-radius:12px;font-size:22px;line-height:1;font-weight:700;color:var(--ink)}
.app .alist .wb.amore[aria-expanded="true"]{background:var(--swt)}
.amenu{position:absolute;right:6px;top:calc(100% - 6px);z-index:8;min-width:176px;display:grid;gap:2px;padding:4px;border:1px solid var(--bd);border-radius:12px;background:var(--sheet);box-shadow:0 10px 24px -8px rgba(0,0,0,.45)}
.arow:nth-last-child(-n+3) .amenu{top:auto;bottom:calc(100% - 6px)}
.app .alist .wb.amitem{display:flex;align-items:center;justify-content:flex-start;min-height:44px;margin:0;padding:0 12px;border-radius:8px;border:0;background:transparent;font-size:15px;font-weight:600;text-align:left;color:var(--ink)}
.app .alist .wb.amitem.danger{background:var(--warn);color:var(--warnink)}
.app .alist .wb.amv{width:38px}
.pchips{row-gap:12px}

.warnmark{display:inline-flex;align-items:center;font-size:10px;font-weight:700;line-height:1.5;padding:0 5px;margin:2px 0 0;border-radius:6px;border:1px solid currentColor;color:var(--warnink)}

/* ═══ v29：按鈕與版面質感（主要按鈕 44–48px、圓角 12px、字級 15–16px；次要 40px；分段控制 34–36px；chips 36px；到達鍵 50px 略突出）；只用既有 token ═══ */
.app .rflow button.rbtn,.app .rflow .rbtn{min-height:46px;margin:6px 0;border-radius:12px;font-size:15px;font-weight:600}
.app .rflow .wb.rsmall{min-height:40px;border-radius:10px;font-size:14px}
.app .rflow .single .wb.sbtn,.app .rflow .wb.sbtn{min-height:44px;border-radius:12px;font-size:15px}
.app .rflow .single .savebar .wb.sbtn,.app .rflow .single .savebar button{min-height:44px;border-radius:12px}
.app .wb.chip,.app .rflow .wb.cchip,.app .rflow .wb.rchip{min-height:36px;padding:0 12px;border-radius:10px;font-size:14px}
.app .rflow .wb.cstep{min-height:36px;min-width:32px}
.app .rflow .wb.dchip{min-width:96px}
.app .rflow .wb.sumbtn,.app .rflow .wb.poolsum{min-height:44px;border-radius:12px}
.app .rflow .single .wb.sx,.app .rflow .single .hrow .wb.sx{min-height:36px;border-radius:10px;font-size:14px}
.app .rflow .single .skeys .wb.skey{min-height:28px;border-radius:8px;font-size:13px}
.rflow .seg button{min-height:40px;font-size:15px;border-radius:10px}
.app .rflow .wb.tsum{min-height:52px;border-radius:12px;padding:6px 12px}
.app .rflow .tstart{min-height:46px;border-radius:12px;font-size:16px;box-shadow:none}
.app .tbar .tpress{min-height:50px;border-radius:12px;font-size:17px;box-shadow:none}
.app .tbar .tundo,.app .tbar .tend{min-height:44px;border-radius:12px;font-size:13px}
.app .tbar .wb,.app .tbar button{min-height:44px}
.app .tbar .tpress{min-height:50px;border-radius:12px}
.tbar{grid-template-columns:72px minmax(0,1fr) 72px;gap:8px;padding:8px 12px}
.app .rflow .wb.rnd{min-height:40px;border-radius:10px;padding:0 10px}
.app .rflow .wb.tmark{min-height:40px;border-radius:12px;padding:0 14px;font-size:14px}.app .rflow .wb.tmarkundo{min-height:40px;border-radius:10px}
.app .rflow .wb.treset{min-height:36px;border-radius:10px}
.arow{min-height:52px;border-radius:12px;margin:5px 0}
.app article{padding:12px 14px;border-radius:14px}
.rctl{padding:6px 8px}.tpanel{border-radius:14px 14px 0 0}
.app .tpanel .rsmall,.app .tpanel .primary{min-height:44px;border-radius:12px}
.chipblock{display:grid;gap:4px;margin:6px 0 2px}.chipblock .hrow{margin:0}.chipblock .hrow[hidden]{display:none}
/* 發車提醒小條（只提醒，不自動發車）：一般＝淡色；準備出發＝黃色＋輕微脈動；現在出發／已超過＝橘色 */
.tremind{grid-column:1/-1;grid-row:3;box-sizing:border-box;min-height:40px;margin:4px 0 0;padding:0 12px;border-radius:12px;display:flex;align-items:center;background:var(--swt);color:var(--ink);font-size:15px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums}
.tremind[hidden]{display:none}
.tremind.prepare{background:var(--pb-f);color:var(--pb-on);animation:remindpulse 1s ease-in-out infinite}
.tremind.go,.tremind.over{background:var(--offc);color:var(--offink);font-weight:700}
@keyframes remindpulse{50%{transform:scale(1.02)}}
@media (prefers-reduced-motion:reduce){.tremind.prepare{animation:none;outline:2px solid var(--pb-on)}}
/* 這一趟出發（手動記起點）與忘了按的補救 */
.app .rflow .tstartrep.big{display:flex;width:100%;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:26px;font-size:17px;font-weight:700;box-shadow:var(--goglow)}
.tfix{display:grid;gap:6px;margin:8px 0 0;padding:10px 12px;border-radius:12px;background:var(--warn);color:var(--warnink);border:1px solid var(--warnink)}.tfix[hidden]{display:none}.tfix small{font-size:13px;line-height:1.4}
.tfixrow{display:flex;flex-wrap:wrap;gap:6px}.app .rflow .wb.tfixbtn{min-height:44px;padding:0 12px;border-radius:12px;font-size:14px;background:var(--card);color:var(--ink);border:1px solid var(--bd)}
.tgnext{grid-column:1/-1;margin:2px 0 0;padding:4px 12px;border-radius:10px;background:var(--warn);color:var(--warnink);font-size:14px;font-weight:600}.tgnext.pulse{background:var(--pb-f);color:var(--pb-on)}
.tconfirm .tchead{display:grid;gap:0;margin:4px 0}.tconfirm .tchead b{font-size:17px}.tconfirm .tchead small{color:var(--mute)}
.carow{grid-template-columns:28px minmax(0,1fr) auto 38px 38px}.astamp{display:block;color:var(--mute);font-size:12px}
.tcbar{grid-template-columns:96px minmax(0,1fr) 96px}.tcbar .tconfirmbtn{font-size:16px}
.lowrest{color:var(--warnink);background:var(--warn);border-radius:6px;padding:0 4px}
.scards{display:grid;gap:12px;justify-items:center}
/* 時間欄位：[分] : [秒] . [百分秒] */
.tfwrap{display:grid;gap:2px}.tflabs,.tfrow{display:grid;grid-template-columns:56px 14px minmax(0,1fr) 14px minmax(0,1fr) 44px;align-items:center;gap:0}
.tflabs{font-size:11px;color:var(--mute);text-align:center}
.app .tfwrap .tfin{width:100%;min-width:0;min-height:56px;margin:0;padding:0 4px;font-size:30px;font-weight:700;line-height:1.1;text-align:center;border:2px solid var(--bd);border-radius:12px;background:var(--field);font-variant-numeric:tabular-nums}
.app .tfwrap .tfin:focus{border-color:var(--acc);outline:none}.app .tfwrap[data-invalid="1"] .tfin.tf-s{border-color:var(--warnink)}
.tfsep{text-align:center;font-size:28px;font-weight:700;color:var(--mute)}
.app .tfwrap .tfnext{width:40px;min-width:40px;min-height:40px;margin:0 0 0 4px;border:1px solid var(--bd);border-radius:10px;background:var(--card);font-size:18px;font-weight:700;padding:0}
.tfhint{margin:2px 0 0;padding:4px 8px;border-radius:8px;background:var(--warn);color:var(--warnink);font-size:13px}
.tfwrap[data-off="1"] .tfin{opacity:.45}
.tpanel .tfwrap .tfin{min-height:48px;font-size:26px}
.rflow .tfwrap{margin:2px 0}
.timecard{gap:6px}
/* 可分享圖卡（測驗總表、訓練紀錄表）：米黃紙質、雙層金邊、襯線標題 */
.app article.scard{--ink:var(--sc-ink);--mute:var(--sc-mute);--line:var(--sc-row-line);--acc:var(--sc-gold);position:relative;width:100%;max-width:390px;aspect-ratio:4/5;margin:12px auto;padding:20px 14px 14px;color:var(--sc-ink);font-family:var(--sc-serif);background:linear-gradient(180deg,var(--sc-bg1),var(--sc-bg2));border:1px solid var(--sc-gold-line);border-radius:6px;box-shadow:inset 0 0 0 4px var(--sc-bg1),inset 0 0 0 5px var(--sc-gold-line);backdrop-filter:none;display:flex;flex-direction:column;gap:8px}
.scard .sc-head{text-align:center;display:grid;gap:2px}.scard .sc-brand{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-size:10px;letter-spacing:.14em;color:var(--sc-mute)}
.scard .sc-line{display:block;width:28px;height:1px;background:var(--sc-gold-line)}.scard .sc-team{margin:0;font-size:12px;color:var(--sc-mute);letter-spacing:.2em}
.scard h2.sc-title{margin:2px 0 0;font-size:21px;line-height:1.25;font-weight:700;letter-spacing:.02em;font-family:var(--sc-serif)}
.scard .sc-sub{margin:0;font-size:11px;color:var(--sc-mute)}.scard .sc-hint{margin:0;font-size:11px;color:var(--sc-gold);font-weight:600}.scard .sc-page{margin:0;font-size:10px;color:var(--sc-mute)}
.scard .sc-rule{height:1px;margin:6px 24px 0;background:var(--sc-gold-line);position:relative}.scard .sc-rule::after{content:"";position:absolute;left:50%;top:-2px;width:5px;height:5px;margin-left:-3px;background:var(--sc-gold-line);transform:rotate(45deg)}
.scard h3.sc-part{margin:2px 0 4px;padding-bottom:2px;font-size:14px;font-weight:700;color:var(--sc-gold);border-bottom:1px solid var(--sc-row-line);font-family:var(--sc-serif)}
.scard table{width:100%;border-collapse:separate;border-spacing:0 3px;table-layout:fixed;font-size:10.5px;color:var(--sc-ink)}
.scard th{padding:3px 1px;font-size:10px;font-weight:600;color:var(--sc-mute);text-align:center;white-space:nowrap;background:var(--sc-head)}
.scard th:first-child{border-radius:8px 0 0 8px}.scard th:last-child{border-radius:0 8px 8px 0}
.scard td{padding:3px 1px;text-align:center;background:var(--sc-row);border-top:1px solid var(--sc-row-line);border-bottom:1px solid var(--sc-row-line);vertical-align:middle}
.scard td:first-child{border-left:1px solid var(--sc-row-line);border-radius:8px 0 0 8px}.scard td:last-child{border-right:1px solid var(--sc-row-line);border-radius:0 8px 8px 0}
.scard .n{font-variant-numeric:tabular-nums}.scard b{font-weight:700}
.sc-table th.trk{width:8%}.sc-table th.tnm{width:16%}.sc-table th.tdt{width:11%}.sc-table th.tfinal{width:17%}
.sc-table td.trk b{display:block;font-size:13px;line-height:1.1}.sc-table .ttie{display:block;font-size:8px;color:var(--sc-gold);font-weight:700}
.sc-table td.tnm{text-align:left;padding-left:3px}.sc-table td.tnm b{font-size:12px;font-family:var(--sc-serif)}
.sc-date{display:inline-block;padding:0 3px;border:1px solid var(--sc-row-line);border-radius:6px;font-size:9px;line-height:1.5;color:var(--sc-mute)}.sc-date.multi{border-color:var(--sc-gold);color:var(--sc-gold);font-weight:700}
.sc-table .tcum{display:block;font-size:10.5px;line-height:1.25}.sc-table .tseg{display:block;font-size:8.5px;color:var(--sc-mute);line-height:1.2}.sc-table .tnone{color:var(--sc-mute)}
.sc-table td.tfinal{background:var(--sc-head)}.sc-table .tbig{font-size:13px;color:var(--sc-gold)}
.sc-table tr.p1 td{background:var(--sc-p1)}.sc-table tr.p2 td{background:var(--sc-p2)}.sc-table tr.p3 td{background:var(--sc-p3)}
.sc-table.dense th.trk{width:9%}.sc-table.dense th.tnm{width:30%}.sc-table.dense th.tdt{width:16%}.sc-table.dense th.tfinal{width:25%}
.sc-table.dense tr.main td{border-bottom:0;border-radius:0}.sc-table.dense tr.main td:first-child{border-radius:8px 0 0 0}.sc-table.dense tr.main td:last-child{border-radius:0 8px 0 0}
.sc-table.dense tr.sub td{border-top:0;padding:0 4px 3px;border-radius:0 0 8px 8px;background:var(--sc-row)}.sc-table.dense tr.sub.p1 td{background:var(--sc-p1)}.sc-table.dense tr.sub.p2 td{background:var(--sc-p2)}.sc-table.dense tr.sub.p3 td{background:var(--sc-p3)}
.sc-splits{display:grid;grid-template-columns:repeat(var(--n,8),minmax(0,1fr));gap:1px}.sc-sp{display:grid;line-height:1.15}.sc-sp .sc-spd{font-size:7.5px;color:var(--sc-mute)}.sc-sp .tcum{font-size:8.5px}.sc-sp .tseg{font-size:7.5px}
.scard .sc-notes{margin:2px 2px 0;font-size:9px;line-height:1.5;color:var(--sc-mute);text-align:left}
.scard .sc-foot{margin-top:auto;padding-top:6px;display:grid;justify-items:center;gap:0;font-size:11px;color:var(--sc-mute);text-align:center}.scard .sc-foot small{font-size:9px}
.scard .sc-sec{display:grid;gap:2px}
.sc-t1{margin-bottom:2px}.sc-t1 th.nm{width:17%;text-align:left;padding-left:4px}.sc-t1 th.gh{font-size:10.5px;color:var(--sc-ink)}.sc-t1 th.rh{font-size:8.5px;font-weight:400}
.sc-t1 td.nm{text-align:left;padding-left:4px}.sc-t1 td.nm b{font-size:12px;font-family:var(--sc-serif)}
.sc-t1 td.rep{font-size:11px;font-variant-numeric:tabular-nums}.sc-t1 td.rep.best{color:var(--sc-gold);font-weight:700}.sc-t1 td.rep.worst{color:var(--sc-rust);font-weight:700}.sc-t1 td.rep.none{color:var(--sc-mute)}
.sc-t1 .gfirst{border-left:1px solid var(--sc-gold-line)}
.sc-t1.sub th.nm{width:17%}.sc-t1.sub td.rep{font-size:11.5px}
.sc-legend{margin:0;font-size:9.5px;color:var(--sc-mute);display:flex;gap:4px;align-items:center}.sc-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:4px}.sc-legend .dot.best{background:var(--sc-gold)}.sc-legend .dot.worst{background:var(--sc-rust)}
.sc-t2 th.nm{width:17%;text-align:left;padding-left:4px}.sc-t2 th.total{color:var(--sc-gold)}
.sc-t2 td.nm{text-align:left;padding-left:4px}.sc-t2 td.nm b{font-size:12px;font-family:var(--sc-serif)}
.sc-t2 td.pc{padding:2px 1px;line-height:1.1}.sc-t2 td.pc .lab{display:block;font-size:6.5px;color:var(--sc-mute)}.sc-t2 td.pc .pace{display:block;font-size:13px}.sc-t2 td.pc em{display:block;font-style:normal;font-size:9.5px;color:var(--sc-mute)}.sc-t2 td.pc em.low{color:var(--sc-rust);font-weight:700}
.sc-t2 td.total .pace{color:var(--sc-gold)}.sc-t2 tr.team td{background:var(--sc-head);border-color:var(--sc-gold-line)}
@media print{.scard{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;box-shadow:none}.app article.scard{margin:0 auto 8px;max-width:none;width:100%}}
.hrow,.chips{align-items:center}
.app .rflow input.customd,.app .rflow .hrow .customd,.app .rflow .ivals .customd{width:84px;min-width:0;min-height:36px;margin:0;padding:0 10px;border-radius:10px;font-size:14px;flex:none}
.app .rflow .tpanelset{gap:2px}.tpanelset .shead{margin:10px 0 2px}
.timecard .skeys{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;flex:none}
.app .rflow .single .skeys .wb.skey{width:100%}
/* ---- 個人卡（同一人同一天同一項目的多趟成績）：沿用紙質圖卡 token（--sc-*）；趟數多時每行 5 趟 ---- */
.pcflow{display:grid;gap:10px}.pcflow .pc-ctl{display:flex;flex-wrap:wrap;gap:8px}.pcflow .pc-pick{display:grid;gap:2px;flex:1 1 120px;min-width:0}.pcflow .pc-pick small,.pcflow .pc-edit small{color:var(--mute);font-size:12px}.pcflow .pc-pick select{width:100%;min-width:0}.pcflow .pc-who{margin:0;font-weight:600}
.pcflow .pc-edit{display:grid;gap:2px}.pcflow .pc-edit input{width:100%;min-width:0}.pcflow .pc-fallback{width:100%;box-sizing:border-box;font:inherit;font-size:14px}.pcflow .pc-status.warn{background:var(--warn);color:var(--warnink)}
.scard-personal{gap:6px}.app article.scard.scard-personal{padding:16px 14px 10px;aspect-ratio:4/5;height:auto}.scard-personal .sc-foot{padding-top:2px}.scard-personal .sc-head{gap:1px}.scard-personal .sc-rule{margin-top:3px}
.scard-personal .pc-sec{display:grid;gap:4px}.scard-personal h3.pc-h{margin:0;font-size:12px;font-weight:700;color:var(--sc-gold);font-family:var(--sc-serif)}.scard-personal .pc-cap{margin:0;font-size:9px;color:var(--sc-mute)}
.scard-personal .pc-reps{gap:5px}.scard-personal .pc-row{display:grid;grid-template-columns:repeat(var(--cols,4),minmax(0,1fr));gap:5px}
.scard-personal .pc-rep{display:grid;justify-items:center;gap:0;padding:5px 1px 4px;min-width:0;background:var(--sc-row);border:1px solid var(--sc-row-line);border-radius:8px;line-height:1.15}
.scard-personal .pc-no{font-size:10px;color:var(--sc-mute)}.scard-personal .pc-time{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;font-size:19px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.scard-personal .pc-rep.long .pc-time{font-size:15px}.scard-personal .pc-row[style*="--cols:5"] .pc-time{font-size:15px}.scard-personal .pc-row[style*="--cols:5"] .pc-rep.long .pc-time{font-size:12.5px;letter-spacing:-.04em}.scard-personal .pc-row[style*="--cols:3"] .pc-time,.scard-personal .pc-row[style*="--cols:2"] .pc-time,.scard-personal .pc-row[style*="--cols:1"] .pc-time{font-size:21px}.scard-personal .pc-tag{font-style:normal;font-size:9px;min-height:11px;color:var(--sc-mute)}
.scard-personal .pc-rep.best{background:var(--sc-p1);border-color:var(--sc-gold)}.scard-personal .pc-rep.best .pc-time,.scard-personal .pc-rep.best .pc-tag{color:var(--sc-gold)}
.scard-personal .pc-rep.worst{background:var(--sc-p3);border-color:var(--sc-rust)}.scard-personal .pc-rep.worst .pc-time,.scard-personal .pc-rep.worst .pc-tag{color:var(--sc-rust)}
.scard-personal .pc-rep.best .pc-tag,.scard-personal .pc-rep.worst .pc-tag{font-weight:700}.scard-personal .pc-rep.flag{border-style:dashed}.scard-personal .pc-rep.flag .pc-tag{color:var(--sc-rust)}.scard-personal .pc-rep.none .pc-time{color:var(--sc-mute);font-size:13px}
.scard-personal .pc-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.scard-personal .pc-tile{display:grid;justify-items:center;padding:4px 1px;background:var(--sc-head);border-radius:8px;line-height:1.2;min-width:0}
.scard-personal .pc-tile small{font-size:9.5px;color:var(--sc-mute)}.scard-personal .pc-tile b{font-size:13px;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;white-space:nowrap}.scard-personal .pc-tile em{font-style:normal;font-size:8px;color:var(--sc-mute)}
.scard-personal .pc-tile.best b{color:var(--sc-gold)}.scard-personal .pc-tile.worst b{color:var(--sc-rust)}
.scard-personal .pc-stab-row{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:10.5px}.scard-personal .pc-stab-row small{font-size:10px;color:var(--sc-mute)}
.scard-personal .pc-stab{display:inline-block;padding:0 8px;border-radius:999px;border:1px solid var(--sc-gold-line);font-size:11px;font-weight:700;line-height:1.6;background:var(--sc-row)}
.scard-personal .pc-stab.stable{color:var(--sc-gold);border-color:var(--sc-gold)}.scard-personal .pc-stab.normal{color:var(--sc-ink)}.scard-personal .pc-stab.volatile{color:var(--sc-rust);border-color:var(--sc-rust)}.scard-personal .pc-stab.none{color:var(--sc-mute)}
.scard-personal .pc-chart{width:100%;height:auto;display:block;background:var(--sc-row);border:1px solid var(--sc-row-line);border-radius:8px}.scard-personal .pc-line{stroke:var(--sc-gold-line);stroke-width:1.6}.scard-personal .pc-avg{stroke:var(--sc-mute);stroke-width:.8;stroke-dasharray:3 3}
.scard-personal .pc-dot{fill:var(--sc-bg1);stroke:var(--sc-gold-line);stroke-width:1.6}.scard-personal .pc-dot.best{fill:var(--sc-gold);stroke:var(--sc-gold)}.scard-personal .pc-dot.worst{fill:var(--sc-rust);stroke:var(--sc-rust)}
.scard-personal .pc-ax{font-size:8.5px;fill:var(--sc-mute)}.scard-personal .pc-tg{font-size:9px;font-weight:700}.scard-personal .pc-tg.best{fill:var(--sc-gold)}.scard-personal .pc-tg.worst{fill:var(--sc-rust)}
.scard-personal .pc-pb,.scard-personal .pc-cycle,.scard-personal .pc-warn,.scard-personal .pc-comment{margin:0;font-size:11px;line-height:1.45}.scard-personal .pc-pb small,.scard-personal .pc-cycle small{color:var(--sc-mute)}.scard-personal .pc-pb.pb b{color:var(--sc-gold)}.scard-personal .pc-pb .pbmark{margin:0 4px 0 0}
.scard-personal .pc-warn{color:var(--sc-rust);font-size:10px}.scard-personal .pc-cycle .low{color:var(--sc-rust)}.scard-personal .pc-comment{padding:5px 8px;border-left:3px solid var(--sc-gold-line);background:var(--sc-row)}.scard-personal .pc-comment small{color:var(--sc-mute)}
.scard-personal .pc-sp{display:grid;grid-template-columns:22px repeat(var(--k,2),minmax(0,1fr));gap:2px;align-items:center;font-size:9px}.scard-personal .pc-sp-head small{text-align:center;color:var(--sc-mute)}.scard-personal .pc-sp-no{font-size:9.5px;color:var(--sc-mute)}
.scard-personal .pc-sp-c{display:flex;justify-content:center;align-items:baseline;gap:4px;line-height:1.3;background:var(--sc-row);border-radius:4px;padding:1px 0;min-width:0}.scard-personal .pc-sp[data-stack] .pc-sp-c{display:grid;justify-items:center;line-height:1.15;gap:0}.scard-personal .pc-sp-c b{font-size:9.5px}.scard-personal .pc-sp-c small{font-size:8.5px;color:var(--sc-mute)}
.scard-personal .pc-sp.best .pc-sp-no{color:var(--sc-gold);font-weight:700}.scard-personal .pc-sp.worst .pc-sp-no{color:var(--sc-rust);font-weight:700}
@media print{.scard-personal .pc-rep,.scard-personal .pc-chart{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* ═══ v30：成績庫資訊架構（搜尋｜比較｜追蹤｜排行｜更多）、選手頁四分頁、圖表；只用既有 token ═══ */
/* 頂列：字級與通知鈴 */
.tright{display:flex;align-items:center;gap:6px;flex:none}
.app .tright .iconb{position:relative;flex:none}.app .tright .iconb .pic{color:var(--ink)}
.bellcnt{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--cmp2);color:var(--st-on);font-size:11px;font-weight:700;line-height:18px;text-align:center;border:2px solid var(--bg);box-sizing:content-box}
.app .targetbtn{max-width:calc(100% - 160px)}
.notes{display:grid;gap:8px;margin:8px 0}.note-item{display:grid;gap:2px;padding:10px 12px;position:relative}.note-item small{color:var(--mute)}.note-item .badge{position:absolute;top:10px;right:10px}
/* 字級調整（三級）：套在頂列與內容，不放大底部頁籤 */
.app[data-fs="1"]>header,.app[data-fs="1"]>main{zoom:1.12}.app[data-fs="2"]>header,.app[data-fs="2"]>main{zoom:1.25}
.fontrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}.app .fontrow .fbtn{min-width:48px;min-height:44px;border:1px solid var(--bd);border-radius:12px;background:var(--card);font-weight:700;font-size:15px;text-align:center}.app .fontrow .fbtn.big{font-size:19px}.app .fontrow .fbtn:disabled{opacity:.45}
.setctl .seg{margin:4px 0}
/* 通用 */
.ll{padding-bottom:24px}.ll h1{font-size:22px;margin:10px 0 4px;overflow-wrap:anywhere}.ll h2{font-size:17px;margin:16px 0 8px}.ll h3{font-size:15px;margin:14px 0 6px}
.ll .note{font-size:13px;color:var(--mute);margin:6px 0;overflow-wrap:anywhere}.ll .stat{font-size:13px;color:var(--mute)}
.ll .warnbox{background:var(--warn);color:var(--warnink);border-radius:12px;padding:10px 12px;font-size:13px;margin:10px 0}
.ll .tagline{display:block;color:var(--mute);margin:6px 0;font-size:13px}
.ll .empty{padding:14px;color:var(--mute);text-align:center}
.empty2{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:22px 12px;color:var(--mute)}.empty2 p{margin:0;color:var(--ink);font-weight:700;font-size:15px}.empty2 small{font-size:13px;max-width:30em}
.skwrap{display:flex;flex-direction:column;gap:10px;padding:12px 0}.sk{display:block;border-radius:8px;background:linear-gradient(90deg,var(--line) 25%,var(--card) 50%,var(--line) 75%);background-size:200% 100%;animation:shim 1.4s linear infinite}.skmsg{margin:2px 0 0;color:var(--mute);font-size:12px}
@keyframes shim{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.sk{animation:none;background:var(--line)}.sk-pulse{animation:none}}
.tg{display:inline-flex;align-items:center;gap:3px;min-height:22px;padding:0 8px;border-radius:11px;font-size:12px;font-weight:700;line-height:1.4;border:1px solid var(--bd);color:var(--ink);background:transparent;white-space:nowrap}
.tg.est{border-style:dashed;border-color:var(--miss);color:var(--miss)}.tg.warn{border-color:var(--at-leave);color:var(--at-leave);background:var(--at-leave-t)}.tg.ok{border-color:var(--hit);color:var(--hit);background:var(--hit-t)}.tg.miss{border-color:var(--miss);color:var(--miss);background:var(--miss-t)}
.tg.on{border-color:var(--acc);color:var(--acc)}.tg.mute{color:var(--mute)}.tg.grp{border-color:var(--pool-l);color:var(--pool-l);background:var(--pool-l-t)}.tg.g-F{border-color:var(--cmp2)}.tg.g-M{border-color:var(--cmp1)}
.badge.est{background:var(--miss-t);color:var(--miss);display:inline-flex;gap:6px;align-items:center}
.app .wb.iconb2{position:relative;flex:none;display:inline-grid;place-items:center;width:44px;height:44px;min-height:44px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.app .wb.iconb2[aria-pressed="true"],.app .wb.iconb2.on{color:var(--sec-mine);border-color:var(--sec-mine)}.app .wb.iconb2:disabled{opacity:.45}
.ll .chiprow{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.ll .chiprow.tight{margin:0;flex:1}.app .ll .chiprow .wb.chip{min-height:36px}
.app .ll .more,.app .ll .wb.more{display:block;width:100%;min-height:48px;margin:12px 0;border:1px solid var(--bd);border-radius:12px;background:var(--card);text-align:center;font-weight:600}
.app .ll .wb.retry{min-height:44px;padding:0 18px;border:1px solid var(--bd);border-radius:12px}
/* 分區導覽（頂部固定） */
.libnav{position:sticky;top:var(--bannerh,0px);z-index:4;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin:6px -16px 8px;padding:6px 12px;background:var(--bg);border-bottom:1px solid var(--line)}
.app .lnb{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;padding:4px 2px;border-radius:12px;font-size:12px;color:var(--mute);width:100%}
.app .lnb .pic{color:currentColor}.app .lnb[aria-current="page"]{background:var(--ink);color:var(--bg);font-weight:700}
.lnb .cnt{position:absolute;top:3px;right:8px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--cmp1);color:var(--st-on);font-size:11px;font-style:normal;font-weight:700;line-height:16px;text-align:center}
.libbody{min-height:40vh}
/* 搜尋 */
.app .ll .lsearch{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;margin:10px 0;align-items:center}.app .ll .lsearch label{grid-column:1/-1;margin:0}.app .ll .lsearch input{margin:0;font-size:16px;border-radius:12px}
.app .ll .lsearch .primary{width:auto;margin:0;padding:0 20px;border-radius:12px;min-height:48px}.app .ll .lsearch .micb{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--bd);border-radius:12px;background:var(--card);padding:0}.app .ll .micb[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.recent .shead{margin:8px 0 0}
.srow{display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:6px;align-items:center;margin:8px 0}
.app .ll .lrow{display:block;width:100%;font-weight:400;text-align:left;min-height:56px;padding:10px 12px;margin:0;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);font:inherit}
.ll .lrow b{display:block;font-size:17px;overflow-wrap:anywhere}.ll .lrow small{display:block;color:var(--mute);font-size:13px;margin-top:2px;overflow-wrap:anywhere}
.ll .lbadges{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.ll .lbadges .badge{font-size:12px}
.app .ll .srow .iconb2{width:48px;height:48px}
/* 追蹤 */
.pinned{display:grid;gap:4px;margin:10px 0;background:var(--hbg);color:var(--hink);border:var(--hbd);box-shadow:var(--hglow)}.pinned .tg{border-color:rgba(255,255,255,.6);color:var(--hink);justify-self:start}.pinned .pname{font-size:20px}.pinned small,.pinned .latest{color:var(--hink);opacity:.92;font-size:13px}
.pinned .actions{margin-top:4px}.app .pinned .wb.link{color:var(--hink);text-decoration:underline}.app .pinned .wb.cta2{background:var(--card);color:var(--ink)}
.tkbar input{margin:6px 0;font-size:16px;border-radius:12px}
.tgroups{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none;align-items:center}.tgroups::-webkit-scrollbar{display:none}.app .tgroups .wb.chip{flex:none;white-space:nowrap}.app .tgroups .addg{border-style:dashed}
.tlist{display:grid;gap:8px}
.app article.trow2{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:4px;align-items:start;margin:0;padding:8px 6px;position:relative;touch-action:pan-y}
.trow2.dragging{z-index:3;box-shadow:0 10px 24px -10px rgba(0,0,0,.45);border-color:var(--acc);opacity:.96}
.app .trow2 .grip{touch-action:none;cursor:grab;border:0;background:none;color:var(--mute);height:44px}.app .trow2 .tmore{border:0;background:none}
.app .wb.tkmain{display:grid;gap:2px;text-align:left;min-height:56px;padding:2px 4px;min-width:0}.tkmain b{font-size:16px;overflow-wrap:anywhere}.tkmain small{color:var(--mute);font-size:13px;display:block}.tkmain .tg{justify-self:start}
.tkmain .latest{font-size:13px;color:var(--ink);display:block}.tkmain .tnote{color:var(--ink)}
.legend-line{color:var(--mute);font-size:13px;margin:4px 0}
.gmrow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center}.gmrow input{margin:4px 0}.app .danger{color:var(--cmp2)}
/* 比較 */
.cchips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;align-items:center}.app .cmpchip{min-height:44px}
.cmp-pool{margin:14px 0}.cmp-pool h3{display:flex;align-items:center;gap:8px}
.cmp-table th{white-space:normal;font-size:12px;vertical-align:bottom}.cmp-table th .legend{display:inline-flex}.cmp-table td{vertical-align:top}.cmp-table td b{display:block;font-size:15px}.cmp-table td small{display:block;color:var(--mute);font-size:12px}
.cmp-table td.best b{color:var(--hit)}.cmp-table td.best small{color:var(--hit);font-weight:700}
.cmp-table th svg{vertical-align:-2px;margin-right:4px}
.note2{margin:6px 0 0;font-size:12px;color:var(--mute)}
/* 排行 */
.ll .fchips{display:flex;gap:8px;overflow-x:auto;padding:8px 0;scrollbar-width:none}.ll .fchips::-webkit-scrollbar{display:none}.app .fchips .wb.chip{flex:none;white-space:nowrap}.fchips .chip::after{content:" ▾";color:var(--mute)}
.rules.sticky3{position:sticky;top:calc(var(--bannerh,0px) + 68px);z-index:2}
.podium3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:end;margin:10px 0}
.pod{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;min-width:0}.pod .medal{display:block}.pod-rk{font-size:12px;color:var(--mute)}.app .wb.pod-name{font-weight:700;font-size:15px;max-width:100%;overflow-wrap:anywhere;text-align:center;padding:0 2px}.pod-t{font-size:16px}.pod-u{color:var(--mute);font-size:12px;max-width:100%;overflow-wrap:anywhere}
.pod-step{display:block;width:100%;border-radius:10px 10px 0 0;margin-top:4px}.podium3 .p1 .pod-step{height:64px;background:var(--pod1)}.podium3 .p2 .pod-step{height:46px;background:var(--pod2)}.podium3 .p3 .pod-step{height:34px;background:var(--pod3)}
.podium3 .p1{order:2}.podium3 .p2{order:1}.podium3 .p3{order:3}
.ll .res{display:grid;grid-template-columns:2.4em minmax(0,1fr) auto;gap:2px 8px;align-items:baseline;padding:10px 4px;border-top:1px solid var(--line)}
.ll .res .rk{font-weight:700;text-align:right;color:var(--mute)}.ll .res .nm{font-weight:600;overflow-wrap:anywhere}.app .ll .res .nm button{width:auto;margin:0;font:inherit;font-weight:600;background:none;border:0;color:var(--ink);text-align:left;padding:8px 0;min-height:44px}
.ll .res .tm{font-variant-numeric:tabular-nums;font-weight:700}.ll .res small{grid-column:2/4;color:var(--mute);font-size:12px;overflow-wrap:anywhere}.ll .res.rp small{grid-column:2/3}.app .ll .res .lk{grid-column:3;align-self:center;justify-self:end;padding:0 0 0 8px}
.ll .res.me{background:var(--swt);border-radius:10px}.res .tg{margin-left:6px}
.app .ll .lk{width:auto;margin:0;font:inherit;font-size:13px;font-weight:500;background:none;border:0;color:var(--acc);padding:10px 8px 10px 0;min-height:44px;text-align:left;text-decoration:underline}
.ll .podium div{display:flex;gap:8px;padding:4px 0;align-items:baseline}.ll .podium .rk{width:1.6em;font-weight:700;text-align:right}.ll .podium .nm{flex:1;min-width:0;overflow-wrap:anywhere}.ll .podium .tm{font-variant-numeric:tabular-nums;font-weight:700}
.ll .evcard{margin:12px 0;padding:12px;border-radius:12px;background:var(--card);border:1px solid var(--line)}.ll .evcard h3{margin:0 0 6px}
.ll .ag{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.app .ll .ag button{width:auto;margin:0;min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--bd);background:var(--card);color:var(--ink);font:inherit;font-size:13px;font-weight:500}
.ll .tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.ll .tiles div{background:var(--card);border-radius:12px;padding:10px;text-align:center}.ll .tiles b{display:block;font-size:20px}.ll .tiles small{color:var(--mute);font-size:12px}
.ll .undated-sec{margin-top:18px;padding-top:4px;border-top:2px dashed var(--line)}.ll details>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600}
/* 更多：賽事分析 */
.app article.mcard{margin:10px 0;padding:0;overflow:hidden}.app .wb.mhead{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:64px;padding:10px 14px;text-align:left}.mh{display:grid;gap:2px;min-width:0}.mh b{font-size:16px}.mh small{color:var(--mute);font-size:13px}.mhead .chev{color:var(--acc);font-size:13px;white-space:nowrap}
.mbody{padding:4px 14px 14px;border-top:1px solid var(--line)}.anbody{margin-top:8px}
.medal-table{display:grid;gap:2px}.mrow{display:grid;grid-template-columns:minmax(0,1fr) 44px 44px 44px;gap:4px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}.mrow.mhead{border-top:0;color:var(--mute);font-size:12px}.mrow .mc{text-align:center;display:grid;place-items:center}.mrow .mu{overflow-wrap:anywhere}
.app article.duel{margin:8px 0;padding:10px 12px}.duel .dh{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.duel .dh small{color:var(--mute)}.duel .gap{margin-left:auto;color:var(--miss)}.dl2{display:grid;grid-template-columns:1.6em minmax(0,1fr) auto auto;gap:6px;align-items:center}.dl2 small{color:var(--mute)}.dl2 .rk{font-weight:700;color:var(--mute);text-align:right}
/* 選手頁 */
.abar{display:flex;align-items:center;gap:6px;margin:4px 0}.abar .sp{flex:1}.athl .back{margin:6px 0 0}
.app article.ahead{margin:8px 0;padding:16px;background:var(--hbg);color:var(--hink);border:var(--hbd);box-shadow:var(--hglow);border-radius:var(--r);position:relative;overflow:hidden}
.ahead::before{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;border:26px solid rgba(255,255,255,.07);pointer-events:none}
.ahead h1{margin:0 0 6px;font-size:24px;color:var(--hink)}.ahead .ameta,.ahead .ameta2,.ahead .aen{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:4px 0;font-size:14px}.ahead .tg{border-color:rgba(255,255,255,.65);color:var(--hink);background:rgba(255,255,255,.14)}.ahead .tg.est{border-style:dashed}
.app .ll .ahead .lk{color:var(--hink);padding:0;min-height:36px;font-weight:600}.ahead .note,.ahead small{color:var(--hink);opacity:.92}
.astats{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:12px}
.rate{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.1);border-radius:14px;padding:10px}.rate-txt{display:grid;gap:4px;min-width:0}.rate-txt b{font-size:17px}.rate-txt small{font-size:12px;line-height:1.45}
.rate-ring{flex:none;width:96px;height:96px}.rate-ring .rtrack2{stroke:rgba(255,255,255,.25)}.rate-ring .rfill2{stroke:var(--hink)}.rate-ring .rate-t{fill:var(--hink);font:800 24px var(--fb);font-variant-numeric:tabular-nums}.rate-ring .rate-s{fill:var(--hink);font:600 11px var(--fb)}
.medals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;background:rgba(255,255,255,.1);border-radius:14px;padding:10px}.mcell{display:grid;justify-items:center;gap:2px;text-align:center}.mcell b{font-size:22px}.mcell small{font-size:11px}.mnote{grid-column:1/-1;font-size:12px;line-height:1.45}
.ev-chips{list-style:none;margin:10px 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.ev-chips li{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:12px;background:var(--ct,var(--card));border-bottom:4px solid var(--c,var(--acc));font-size:13px;font-weight:700}
.ev-chips li .pic{color:var(--c,var(--acc))}.ev-chips li b{font-size:15px}.ev-chips li.zero{opacity:.5}.ev-chips .st-long{--c:var(--pool-l);--ct:var(--pool-l-t)}.ev-chips .st-relay{--c:var(--st-relay);--ct:var(--st-relay-t)}
.radar .seg,.radseg{margin:4px 0 8px}.radar-svg{display:block;width:100%;height:auto;max-width:340px;margin:0 auto}.radar-svg text{font:700 12px var(--fb);fill:var(--ink)}.radar-svg text.rnone{fill:var(--mute);font-weight:500}.radar-svg text.sm{font-size:11px}
.rdgrid{fill:none;stroke:var(--line);stroke-width:1}.rdfill{fill:var(--cmp1);fill-opacity:.2;stroke:var(--cmp1);stroke-width:2;stroke-linejoin:round}.rline{fill:none;stroke:var(--cmp1);stroke-width:2.4}.rdot{fill:var(--card);stroke:var(--cmp1);stroke-width:2.4}
.rad-det summary{min-height:40px;color:var(--acc);font-size:13px;font-weight:600}.rad-list{list-style:none;margin:0;padding:0}.rad-list li{display:grid;grid-template-columns:84px minmax(0,1fr) 60px;gap:6px 8px;align-items:center;min-height:36px;border-bottom:1px solid var(--line);font-size:13px}.rad-list .trk{height:10px;border-radius:5px;background:var(--line);overflow:hidden}.rad-list .trk i{display:block;height:100%;background:var(--cmp1);border-radius:5px}.rad-list .v{text-align:right;font-weight:800}.rad-list .rsub{grid-column:1/-1;color:var(--mute)}
.atabs{position:sticky;top:var(--bannerh,0px);z-index:3;margin:10px -16px 0;padding:6px 16px;background:var(--bg);border-bottom:1px solid var(--line)}.atabs .seg{margin:0}.seg.srcseg{margin:6px 0}.ll .seg button{min-height:36px;font-size:14px;padding:4px 2px;border-radius:10px}
.anote{margin:14px 0;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:13px}.anote p{margin:6px 0}
/* 成績記錄卡 */
.rlist{display:grid;gap:10px}
.app article.rcard{margin:0;padding:12px;display:grid;gap:6px;border-left:5px solid var(--c,var(--line))}.rcard.ispb{border-left-color:var(--pb-f)}
.rc-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.rk-badge{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px}.rk-badge .mute{color:var(--mute);font-weight:400}.rc-date{color:var(--mute);font-size:13px}
.app .wb.rc-meet{display:inline-flex;text-align:left;padding:0;min-height:36px;font-weight:600;text-decoration:none;color:var(--ink);overflow-wrap:anywhere}.app .wb.rc-meet:disabled{opacity:1}
.rc-sub{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;color:var(--mute);font-size:13px}.tg.ag{border-color:var(--bd)}.tg.rd{border-color:var(--acc);color:var(--acc)}.tg.rd.mute{border-color:var(--line);color:var(--mute)}
.rc-main{display:flex;justify-content:space-between;align-items:center;gap:8px}.rc-ev{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:600}.poolic{color:var(--pc,var(--pool-l))}
.rc-time{display:flex;align-items:center;gap:6px}.rc-time .big{font:800 26px/1.1 ui-monospace,"SF Mono",Menlo,Consolas,monospace;letter-spacing:-.5px}
.rc-more{border-top:1px dashed var(--line)}.rc-more summary{min-height:40px;color:var(--acc);font-size:13px}.rc-more dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:4px 0;font-size:13px}.rc-more dt{color:var(--mute)}.rc-more dd{margin:0}
.recfilt{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 個人最佳 */
.pbctl{display:flex;flex-direction:column;gap:6px}.pbctl .chiprow{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0}.pbctl .chiprow::-webkit-scrollbar{display:none}.pbctl .chiprow .wb.chip{flex:none;white-space:nowrap}.app .wb.grpbtn{align-self:flex-start}
.app article.pbrow2{margin:8px 0;padding:10px 12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;border-left:5px solid var(--c,var(--line))}.pbrow2 .pb-l{display:grid;gap:2px;min-width:0}.pbrow2 .pb-l small{color:var(--mute);font-size:12px}.pbrow2 .pb-r{display:grid;justify-items:end;gap:2px}.pbrow2 .big{font:800 24px/1.1 ui-monospace,"SF Mono",Menlo,Consolas,monospace}.pbrow2 .why{grid-column:1/-1;color:var(--mute);font-size:12px}.pb-r small{color:var(--mute);font-size:12px}
.std-chip{font-size:12px}
/* 能力指標 */
.app article.overall{margin:10px 0}.bigband{font-size:28px;font-weight:800;margin:0 0 6px}.overall .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pr{padding:2px 0}.pr-wrap{position:relative;padding-top:12px}.pr-bar{display:grid;height:22px;border-radius:11px;overflow:hidden;border:1.5px solid var(--g6)}.pr-bar i{display:block;background:var(--g6);opacity:var(--a);border-right:1px solid var(--card)}.pr-bar i.on{opacity:1;box-shadow:inset 0 3px 0 var(--ink),inset 0 -3px 0 var(--ink)}
.pr-dot{position:absolute;top:13px;width:22px;height:22px;margin-left:-11px;border-radius:50%;background:var(--card);border:3px solid var(--ink)}.pr-dot.exact::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--ink)}
.pr-ticks{position:relative;height:20px;margin-top:3px;font-size:12px;color:var(--mute)}.pr-ticks span{position:absolute;transform:translateX(-50%);white-space:nowrap}.pr-ticks span.on{color:var(--ink);font-weight:800}.pr-foot{margin:4px 0 0;color:var(--mute);font-size:12px}
.hist-svg{display:block;width:100%;height:auto}.hist-svg text{font:12px var(--fb);fill:var(--mute)}.hist-svg text.me-l{fill:var(--ink);font-weight:800}.hgrid{stroke:var(--line);stroke-width:1}.hbar{fill:var(--g3);stroke:var(--g6);stroke-width:1.2}.hbar.me{stroke:var(--ink);stroke-width:2.4}
.hbar[data-g="1"]{fill:var(--g1)}.hbar[data-g="2"]{fill:var(--g2)}.hbar[data-g="3"]{fill:var(--g3)}.hbar[data-g="4"]{fill:var(--g4)}.hbar[data-g="5"]{fill:var(--g5)}.hbar[data-g="6"]{fill:var(--g6)}.hbar[data-g="7"]{fill:var(--g6)}
.app .lrow2,.lrow2{display:grid;grid-template-columns:1.4em auto auto minmax(0,1fr);gap:6px 8px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}.lrow2 .no{font-weight:800;color:var(--mute)}.lrow2 .ptx{color:var(--mute);font-size:12px}.lrow2 .dtl{text-align:right;font-size:13px}
.ladders{container-type:inline-size}.lad-sec{margin:12px 0}.lad-sec .stg{font-size:15px}
.ladder{padding:8px 0 10px;border-top:1px solid var(--line)}.lad-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:6px}.lad-head b{font-size:14px;display:flex;align-items:center;gap:6px}.lad-head .num{font-weight:800;font-size:15px}
.lad-pins,.lad-cells,.lad-lbls{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.lad-pins{height:30px;align-items:end}
.lad-pin{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:12px;font-weight:800;min-height:1px}.lad-pin i{display:block;width:14px;height:14px;border-radius:50%;background:var(--ink);border:2px solid var(--card);box-shadow:0 0 0 2px var(--ink)}.lad-pin.est i{background:var(--card);border:2px dashed var(--miss);box-shadow:none}
.lad-pin:not(:empty)::after{content:"";display:block;width:0;height:0;border:5px solid transparent;border-top-color:var(--ink);border-bottom:0;margin-top:-2px}.lad-pin.est::after{border-top-color:var(--miss)}.lad-pin.pre{align-items:flex-start}
.lad-cell{height:26px;border-radius:7px;border:1.5px solid var(--g6);display:flex;align-items:center;justify-content:center;background:transparent;color:var(--ink)}.lad-cell .pic{width:14px;height:14px}
.lad-cell.todo{border-style:dashed;border-color:var(--bd)}.lad-cell.next{border-style:dashed;border-width:2px;background:repeating-linear-gradient(135deg,transparent 0 5px,var(--line) 5px 8px)}.lad-cell.cur{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--ink)}
.lad-cell[data-g="1"].reached{background:var(--g1);color:var(--g1-on)}.lad-cell[data-g="2"].reached{background:var(--g2);color:var(--g2-on)}.lad-cell[data-g="3"].reached{background:var(--g3);color:var(--g3-on)}.lad-cell[data-g="4"].reached{background:var(--g4);color:var(--g4-on)}.lad-cell[data-g="5"].reached{background:var(--g5);color:var(--g5-on)}.lad-cell[data-g="6"].reached{background:var(--g6);color:var(--g6-on)}
.lad-lbls{margin-top:4px;text-align:center;font-size:12px;font-weight:700;color:var(--mute)}.lad-lbls .on{color:var(--ink);font-weight:800}
.lad-foot{margin:8px 0 0;font-size:13px}.lad-foot b{font-weight:800}.lad-foot small{display:block;color:var(--mute);font-size:12px;margin-top:2px}.ladder.muted{opacity:.85}
.legend-card{margin:12px 0;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-size:13px}.legend-card p{margin:6px 0}
/* 股票風成長曲線 */
.app article.growth{margin:10px 0;padding:12px 12px 10px}.sk-ev{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--mute);font-weight:600}.sk-ev .cnt{color:var(--mute)}
.sk-big{font-size:36px;line-height:1.1;font-weight:800;letter-spacing:-1px;margin:6px 0 4px}
.sk-chg{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:800;padding:3px 11px;border-radius:14px;color:var(--hit);background:var(--hit-t)}.sk-chg.slow{color:var(--miss);background:var(--miss-t)}.sk-chg.flat{color:var(--mute);background:var(--line)}.sk-chg small{font-weight:600;font-size:12px}
.sk-span{margin:6px 0 0;color:var(--mute);font-size:12px}
.sk-plot{position:relative;margin:4px -4px 0;padding-top:58px;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border-radius:12px}.sk-plot>svg.sk-svg{display:block;width:100%;height:auto;overflow:visible}
.sk-svg text{font:600 10px var(--fb);fill:var(--mute)}.sk-svg text.num{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace}.sk-svg text.lbl{paint-order:stroke;stroke:var(--card);stroke-width:3.5px;stroke-linejoin:round;font-weight:800;fill:var(--ink)}
.grid2{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}.sk-line{fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.sk-cross{stroke:var(--ink);stroke-width:1;stroke-dasharray:3 3}.sk-cdot{fill:var(--card);stroke-width:2.6}
.star{fill:var(--pb-f);stroke:var(--pb);stroke-width:1}.star-leg{fill:var(--pb-f);stroke:var(--pb);stroke-width:1}.pt{vector-effect:non-scaling-stroke}
.sk-hint{position:absolute;top:0;left:4px;right:4px;height:52px;display:flex;align-items:center;justify-content:center;gap:6px;text-align:center;color:var(--mute);font-size:12px;border-radius:12px;border:1px dashed var(--line)}.sk-hint .pic{color:var(--mute)}
.sk-b{position:absolute;top:0;z-index:5;width:max-content;max-width:calc(100% - 8px);padding:7px 11px;border-radius:12px;background:var(--ink);color:var(--bg);font-size:12px;line-height:1.4;box-shadow:0 8px 20px -8px rgba(0,0,0,.45);pointer-events:none}.sk-b[hidden]{display:none}
.sk-b .r1{display:flex;gap:8px;align-items:baseline;white-space:nowrap}.sk-b b{font:800 17px/1.2 ui-monospace,"SF Mono",Menlo,Consolas,monospace}.sk-b .sn{font-weight:700}.sk-b .pbt{padding:0 6px;border-radius:8px;background:var(--pb-f);color:var(--pb-on);font-size:11px;font-weight:800}.sk-b .dd{font-weight:800}
.sk-rng{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px}.sk-leg{display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;font-size:12px;color:var(--mute)}.sk-leg span{display:inline-flex;align-items:center;gap:5px}
.sk-tbl{margin-top:8px;font-size:12px}.sk-tbl summary{min-height:44px}.sk-tbl .tw{overflow-x:auto;max-height:220px;overflow-y:auto}.sk-tbl table{border-collapse:collapse;width:100%;min-width:260px}.sk-tbl th,.sk-tbl td{padding:4px 6px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.gcharts{display:grid}.gwrap{min-width:0}
@keyframes skpulse{from{r:5;opacity:.5}to{r:14;opacity:0}}@media (prefers-reduced-motion:no-preference){.sk-pulse{animation:skpulse 1.8s ease-out infinite}}

.lib .back{margin:6px 0 0;padding:0 2px}.chiprow.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.chiprow.scroll::-webkit-scrollbar{display:none}.chiprow.scroll .wb.chip{flex:none;white-space:nowrap}
.rules.sticky3 .rl2{font-size:12px;line-height:1.45}
.rc-time{flex:none}.rc-time .pbmark{white-space:nowrap;margin:0}.rc-ev{flex:1;min-width:0}
.medal-more{margin:6px 0}

.podium3 .p1 .pod-step{background:linear-gradient(var(--pb-t),var(--pb-f))}.podium3 .p2 .pod-step{background:linear-gradient(var(--line),var(--bd))}.podium3 .p3 .pod-step{background:linear-gradient(var(--miss-t),var(--miss))}
.rl-det{margin:2px 0 0}.rl-det summary{min-height:36px;font-size:12px;color:var(--acc);font-weight:600}.rl-det p{margin:0 0 6px}

/* 「到達」被忽略時的回饋：按鈕上方的浮出小提示、按鈕與該列晃動（偏好減少動態時改成外框提示） */
.ttoast{position:absolute;left:12px;right:12px;bottom:calc(100% + 8px);margin:0;padding:6px 12px;border-radius:12px;background:var(--ink);color:var(--bg);font-size:14px;font-weight:600;line-height:1.4;text-align:center;box-shadow:0 6px 16px -8px rgba(0,0,0,.45);pointer-events:none}
.ttoast.bad{background:var(--warn);color:var(--warnink);border:2px solid var(--warnink)}
.app .tbar .tpress.shake{animation:tshake .45s ease-in-out}
@keyframes tshake{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
.arow.nope{animation:tshake .45s ease-in-out;border-color:var(--warnink)}
.tag.nopetag{background:var(--warn);color:var(--warnink)}
@media (prefers-reduced-motion:reduce){.app .tbar .tpress.shake,.arow.nope{animation:none}.app .tbar .tpress.shake{outline:3px solid var(--warnink)}}

/* ---------- 加秒（偷跳）：結果畫面、單人輸入、今天已記錄、活動表、圖卡的標示 ---------- */
.adjcard{padding-bottom:6px}.adjcard .tsum{margin:0}
.adjhost{margin:4px 0 0}.adjhost .adjrow{border-top:1px dashed var(--line);padding:6px 0 2px}
.adjrow{display:grid;gap:4px;padding:6px 0;border-top:1px solid var(--line)}.adjcard .adjrow:first-of-type{border-top:0}
.adjhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 10px}.adjname{font-size:16px}
.adjsum{font-size:12px;color:var(--mute);white-space:pre-wrap}.adjrow.on .adjsum{color:var(--ink);font-weight:600}
.adjctl{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.adjstep{display:inline-flex;align-items:center;gap:4px}
.app .wb.adjb{display:inline-grid;place-items:center;width:40px;min-width:40px;height:40px;min-height:40px;margin:0;padding:0;border:1px solid var(--bd);border-radius:12px;background:var(--card);font-size:22px;font-weight:700;line-height:1;touch-action:manipulation}
.app .wb.adjb:disabled,.app .wb.adjchip:disabled{opacity:.35}
.adjval{display:inline-block;min-width:58px;text-align:center;font-weight:700;font-size:15px;white-space:nowrap}
.adjquick{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px}
.app .wb.adjchip{display:inline-grid;place-items:center;min-width:38px;height:36px;min-height:36px;margin:0;padding:0 6px;border:1px solid var(--bd);border-radius:18px;background:var(--card);font-size:12.5px;font-weight:600;touch-action:manipulation}
.app .wb.adjchip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.app .wb.adjundo{justify-self:start;color:var(--acc)}
.adjmeta{display:grid;grid-template-columns:96px minmax(0,1fr);gap:6px}
.app .adjmeta select,.app .adjmeta input{min-height:36px;height:36px;margin:0;padding:2px 8px;font-size:14px;border-radius:10px}
.adjaudit{color:var(--mute);font-size:12px}.adjerr{margin:0;font-size:13px}
.adjtag{display:inline-block;font-size:11px;font-weight:700;line-height:1.5;padding:0 6px;border-radius:6px;background:var(--warn);color:var(--warnink);margin-left:6px;white-space:nowrap;vertical-align:baseline}
.adjwrap{flex:1 1 100%;min-width:0}.trec .adjwrap{padding:2px 0 6px}.laps li .adjwrap{padding:4px 0}
.rtab .tnm .adjtag{display:inline-flex;margin:2px 0 0 4px;font-size:10px;padding:0 5px}
.rtab .tadj{display:block;font-size:11px;font-weight:700;color:var(--paper-warn)}.rtab .tadjnote{display:block;font-size:10px;line-height:1.3;color:var(--paper-warn);white-space:nowrap;margin:1px 0 0}
.scard sup.sc-star{font-size:.7em;color:var(--sc-rust);font-weight:700;margin-left:1px;vertical-align:super;line-height:0}
.sc-t1 td.rep.adj{white-space:nowrap}.sc-legend{flex-wrap:wrap}.sc-legend .sc-adjlegend{color:var(--sc-rust);font-weight:600}
.scard .sc-adjnote{color:var(--sc-rust)}.scard .sc-adjnote small{color:var(--sc-mute);font-size:inherit}
.scard-personal .pc-rep{position:relative}.scard-personal .pc-rep .pc-adj{position:absolute;top:1px;right:2px;font-style:normal;font-size:8.5px;font-weight:700;line-height:1.2;padding:0 3px;border-radius:5px;background:var(--sc-rust);color:var(--sc-bg1)}
.scard-personal .pc-adjnote{margin:2px 0 0;font-size:9px;line-height:1.4;color:var(--sc-rust)}.scard-personal .pc-sp-adj{color:var(--sc-rust)}
.adjlegend{color:var(--warnink)}
.trec .tacts{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-left:auto}
/* 標準對照（台灣同齡位置＋美國標準） */
.standing{margin:10px 0 14px}.stctl{display:grid;gap:8px;margin:8px 0 10px}.app .wb.hidepos{justify-self:start;min-height:44px}
.app article.stcard{margin:10px 0;padding:10px 12px;display:grid;gap:8px;border-left:5px solid var(--c,var(--line))}
.stcard-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.stcard-l{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.stcard-r{display:grid;justify-items:end;gap:2px}.stcard-r small{color:var(--mute);font-size:12px}.stcard .big{font:800 22px/1.1 ui-monospace,"SF Mono",Menlo,Consolas,monospace}
.stblk{border-top:1px solid var(--line);padding-top:8px;min-width:0}.stblk-h{margin:0 0 6px;font-size:14px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.stblk .bigband.sm{font-size:20px;margin:6px 0 2px}.stblk .tagline{display:block;color:var(--mute);font-size:13px}
.stmeta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0 0;font-size:13px}.stblk .next{display:block;margin-top:4px;color:var(--mute);font-size:12px}
.pb-stand{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.pb-stand:empty{display:none}
.stfoot{display:grid;gap:6px;margin-top:10px;justify-items:start}.standing-note{margin:0;font-size:13px}.app .wb.methodlink{min-height:44px}
.legacy-ability{margin:14px 0;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:0 12px}.legacy-ability>summary{min-height:44px;display:flex;align-items:center;font-weight:700}
.stlist .grp{margin:14px 0 4px}
