/* ==========================================================================
   前橋ミニトライアスロン — 共有デザインシステム（管理系ページ共通）
   ダーク／アクセント #00d1b2（トライアスロンの水＝ティール）。
   種目色: スイム #22d3ee / バイク #fb923c / ラン #a3e635 ＝計測点3つの色でもある。
   タイプ色: A #ff7a3d / B #4da3ff（mammoth-ts の A=暖色・B=寒色を踏襲）。
   計測アプリ(timing.html)は実戦用コンソールとして独自スタイルを持つ。
   ========================================================================== */
@font-face{font-family:'Bebas Neue';font-weight:400;font-display:swap;src:url(fonts/bebas-neue-400.woff2) format('woff2');}
@font-face{font-family:'Barlow Condensed';font-weight:600;font-display:swap;src:url(fonts/barlow-condensed-600.woff2) format('woff2');}
@font-face{font-family:'Barlow Condensed';font-weight:700;font-display:swap;src:url(fonts/barlow-condensed-700.woff2) format('woff2');}
@font-face{font-family:'JetBrains Mono';font-weight:400;font-display:swap;src:url(fonts/jetbrains-mono-400.woff2) format('woff2');}
@font-face{font-family:'JetBrains Mono';font-weight:700;font-display:swap;src:url(fonts/jetbrains-mono-700.woff2) format('woff2');}

:root{
  --bg:#0a0e13;--surface:#131a23;--surface2:#1b242f;--elev:#232e3a;--border:#2a3644;
  --accent:#00d1b2;--accent-soft:#00d1b222;--accent-hi:#26e8ca;
  --green:#00e676;--red:#ff3355;--amber:#ffb300;--gold:#f5c518;
  --swim:#22d3ee;--bike:#fb923c;--run:#a3e635;
  --ta:#ff7a3d;--tb:#4da3ff;
  --text:#e8eaed;--muted:#8b95a3;--radius:12px;--radius-sm:9px;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --sans:-apple-system,BlinkMacSystemFont,'Hiragino Sans','Yu Gothic',Meiryo,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html{-webkit-text-size-adjust:100%;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100dvh;line-height:1.5;}
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background-image:repeating-linear-gradient(0deg,transparent,transparent 39px,#ffffff04 39px,#ffffff04 40px),repeating-linear-gradient(90deg,transparent,transparent 39px,#ffffff04 39px,#ffffff04 40px);}
a{color:inherit;}
.wrap{position:relative;z-index:1;width:100%;margin:0;padding:0 24px 64px;}

/* ---- section heading ---- */
.h2{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:2px;color:var(--muted);margin:26px 4px 12px;display:flex;align-items:center;gap:10px;}
.h2 .count{margin-left:auto;}

/* ---- buttons ---- */
.btn{font-family:var(--sans);font-size:16px;font-weight:700;padding:14px 20px;min-height:50px;border-radius:11px;border:1px solid var(--border);background:var(--surface2);color:var(--text);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center;white-space:nowrap;transition:border-color .12s,background .12s,transform .06s;}
.btn:active{transform:scale(.97);}
.btn.go{background:var(--accent);color:#04211d;border-color:var(--accent);}
.btn.go:active{background:var(--accent-hi);}
.btn.ghost{background:transparent;color:var(--muted);}
.btn.ghost:active{color:var(--red);border-color:var(--red);}
.btn.sm{padding:10px 16px;font-size:14px;min-height:42px;}
.btn.lg{font-size:19px;padding:20px;min-height:64px;font-weight:800;}
.btn:disabled{opacity:.35;cursor:default;}
@media(hover:hover){.btn:hover{border-color:var(--accent);}.btn.go:hover{background:var(--accent-hi);}}

/* ---- inputs ---- */
input[type=text],input[type=search],input[type=email],input[type=tel],select{font-family:var(--sans);font-size:16px;padding:12px 13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:#fff;outline:none;width:100%;}
input:focus,select:focus{border-color:var(--accent);}
label{display:block;font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--muted);margin-bottom:6px;}
label .en{display:block;font-weight:400;color:#5f6b7a;letter-spacing:0;}

/* ---- card / tool ---- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;}
.tools{display:flex;gap:12px;flex-wrap:wrap;}
.tool{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;flex:1;min-width:230px;display:flex;flex-direction:column;}
.tool h3{font-size:15px;margin-bottom:8px;}
.tool p{font-size:12px;color:var(--muted);line-height:1.6;margin-bottom:12px;flex:1;}

/* ---- table ---- */
.tbl-wrap{overflow-x:auto;margin-top:6px;}
table.data{width:100%;border-collapse:collapse;font-size:14px;}
table.data th{text-align:left;font-size:10px;letter-spacing:1px;color:var(--muted);text-transform:uppercase;padding:10px;border-bottom:1px solid var(--border);white-space:nowrap;}
table.data td{padding:11px 10px;border-bottom:1px solid #ffffff0c;vertical-align:middle;}
table.data tbody tr:hover{background:#ffffff05;}
.num{font-family:'Bebas Neue',sans-serif;color:#fff;font-size:19px;}
.mono{font-family:var(--mono);}

/* ---- pills / tags / chips ---- */
.pill{font-size:10px;font-weight:800;letter-spacing:.5px;padding:3px 9px;border-radius:20px;white-space:nowrap;display:inline-block;}
.pill.done{background:#00e67618;color:var(--green);}
.pill.live{background:var(--accent-soft);color:var(--accent);}
.pill.pre{background:#6b768522;color:var(--muted);}
.pill.warn{background:#ffb30018;color:var(--amber);}
.tag{font-size:10px;font-weight:700;padding:3px 7px;border-radius:5px;white-space:nowrap;display:inline-block;}
.tag.a{background:#ff7a3d22;color:var(--ta);}
.tag.b{background:#4da3ff22;color:var(--tb);}
.tag.ck{background:#00e67618;color:var(--green);}
.tag.flag{background:#ffb30018;color:var(--amber);}
.tag.dup{background:#ff335518;color:var(--red);}
.chip{font-family:var(--sans);font-size:12px;font-weight:700;padding:8px 13px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--muted);cursor:pointer;}
.chip.on{background:var(--accent);color:#04211d;border-color:var(--accent);}

/* ---- misc ---- */
.empty,.status{padding:40px 20px;text-align:center;color:var(--muted);font-size:14px;}
.note{font-size:11px;color:var(--muted);margin-top:14px;line-height:1.7;}
.count{font-family:var(--mono);font-size:12px;color:var(--muted);}
.err{color:var(--red);font-size:13px;}

/* ---- modal ---- */
.ovl{display:none;position:fixed;inset:0;z-index:50;background:#000000c4;align-items:flex-start;justify-content:center;overflow-y:auto;padding:30px 14px;}
.ovl.open{display:flex;}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-width:720px;width:100%;padding:20px;position:relative;z-index:1;}
.modal .mh{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.modal .close{margin-left:auto;font-size:22px;color:var(--muted);cursor:pointer;background:none;border:none;padding:4px 10px;}
