:root{
  --green:#125B36;--green-dark:#0A4227;--gold:#D6A928;--gold-dark:#AE8617;--green-pale:#EAF3ED;
  --bg:#F7F9F8;--surface:#FFFFFF;--text:#1D2923;--muted:#68746D;--border:#DCE4DF;
  --m-gold:#D4AF37;--m-silver:#A7ADB4;--m-bronze:#B87333;--danger:#B3261E;--warn:#8A5A00;
  --radius:8px;--nav-h:60px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:0 0 .25rem}h2{font-size:1.15rem;margin:0 0 .6rem}h3{font-size:1rem;margin:0 0 .4rem}
p{margin:.3rem 0}.muted{color:var(--muted)}.small{font-size:.85rem}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}

/* top bar */
.topbar{background:var(--green);color:#fff;position:sticky;top:0;z-index:30;border-bottom:3px solid var(--gold)}
.topbar-in{display:flex;align-items:center;gap:1rem;padding:.55rem 1rem;max-width:1400px;margin:0 auto}
.brand{display:flex;align-items:center;gap:.6rem;color:#fff;font-weight:700;line-height:1.15}
.brand:hover{text-decoration:none}
.brand small{display:block;font-weight:400;font-size:.72rem;opacity:.85}
.logo{width:36px;height:36px;border-radius:50%;background:var(--gold);color:var(--green-dark);display:grid;place-items:center;font-weight:800;font-size:.7rem;flex:none;overflow:hidden}
.logo img{width:100%;height:100%;object-fit:cover}
.toplinks{display:flex;gap:.2rem;margin-left:auto;flex-wrap:wrap}
.toplinks a{color:#fff;padding:.35rem .6rem;border-radius:6px;font-size:.9rem}
.toplinks a:hover,.toplinks a.on{background:var(--green-dark);text-decoration:none}

/* layout */
.shell{max-width:1400px;margin:0 auto;display:block}
.shell.has-side{display:grid;grid-template-columns:240px 1fr;gap:0}
.sidebar{background:var(--green-dark);color:#fff;min-height:calc(100vh - 60px);padding:1rem .6rem;position:sticky;top:60px;align-self:start;max-height:calc(100vh - 60px);overflow:auto}
details.grp>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;user-select:none}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary::after{content:"▸";transition:transform .15s}
details.grp[open]>summary::after{transform:rotate(90deg)}
.sidebar details.grp{margin:.15rem 0}
.sidebar details.grp>summary{margin:.25rem 0;padding:.55rem .7rem;border-radius:6px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:#fff;font-weight:700;background:var(--green)}
.sidebar details.grp>summary:hover{background:#0f4d2d}
.sidebar details.grp[open]>summary{background:var(--gold);color:var(--green-dark)}
.menu-overlay details.grp>summary{padding:.8rem .9rem;background:var(--green);color:#fff;border-radius:8px;margin:.4rem 0;font-weight:700}
.menu-overlay details.grp[open]>summary{background:var(--green-dark);border-bottom:3px solid var(--gold)}
.menu-overlay a.item.on{border-color:var(--gold);background:#fbf1d1}
.sidebar h4{margin:1rem .6rem .3rem;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}
.sidebar a{display:block;color:#e6efe9;padding:.4rem .6rem;border-radius:6px;font-size:.9rem}
.sidebar a:hover{background:rgba(255,255,255,.08);text-decoration:none}
.sidebar a.on{background:var(--gold);color:var(--green-dark);font-weight:600}
.main{padding:1.1rem 1rem 2rem;min-width:0}
.page-head{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;margin-bottom:1rem}

/* components */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}
.card>h2:first-child,.card>h3:first-child{margin-top:0}
.grid{display:grid;gap:1rem}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}
.stats{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));margin-bottom:1rem}
.stat{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:var(--radius);padding:.55rem .75rem}
.stat b{display:block;font-size:1.35rem;color:var(--green)}.stat span{font-size:.78rem;color:var(--muted)}
.btn{display:inline-block;border:1px solid var(--green);background:var(--green);color:#fff;padding:.5rem .9rem;border-radius:6px;font:inherit;font-weight:600;cursor:pointer;min-height:40px}
.btn:hover{background:var(--green-dark);text-decoration:none}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--green-dark)}.btn.gold:hover{background:var(--gold-dark);color:#fff}
.btn.ghost{background:transparent;color:var(--green)}.btn.ghost:hover{background:var(--green-pale)}
.btn.danger{background:var(--danger);border-color:var(--danger)}
.btn.sm{padding:.25rem .6rem;min-height:32px;font-size:.85rem}
.badge{display:inline-block;padding:.1rem .5rem;border-radius:99px;font-size:.75rem;font-weight:600;background:var(--green-pale);color:var(--green-dark);border:1px solid var(--border);white-space:nowrap}
.badge.live{background:#fde8e6;color:var(--danger);border-color:#f4c2bd}
.badge.gold{background:#fbf1d1;color:var(--gold-dark);border-color:#ecd78f}
.badge.warn{background:#fff3d6;color:var(--warn)}
.badge.ok{background:#dff1e5;color:var(--green-dark)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--danger);margin-right:.3rem;animation:pulse 1.4s infinite}
@keyframes pulse{50%{opacity:.25}}
.swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.4rem;vertical-align:baseline}
.alert{padding:.6rem .9rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid}
.alert.ok{background:#e6f4ea;border-color:#b6dcc2;color:var(--green-dark)}
.alert.err{background:#fdecea;border-color:#f4c2bd;color:var(--danger)}
.alert.warn{background:#fff3d6;border-color:#ecd78f;color:var(--warn)}
.empty{padding:1.2rem;text-align:center;color:var(--muted)}

/* tables */
.tablewrap{overflow-x:auto}
table.t{width:100%;border-collapse:collapse;font-size:.92rem}
table.t th{background:var(--green-pale);color:var(--green-dark);text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;padding:.5rem .6rem;border-bottom:2px solid var(--border);white-space:nowrap}
table.t td{padding:.5rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle}
table.t tr:hover td{background:#fafcfb}
table.t td.num,table.t th.num{text-align:right;font-variant-numeric:tabular-nums}
.rank{font-weight:800;color:var(--green)}
.rank1{color:var(--m-gold)}.rank2{color:var(--m-silver)}.rank3{color:var(--m-bronze)}
.medal{display:inline-block;min-width:1.4em;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.medal::before{content:"";display:inline-block;width:.7em;height:.7em;border-radius:50%;margin-right:.25em;background:currentColor;vertical-align:baseline}
.medal.g{color:var(--m-gold)}.medal.s{color:var(--m-silver)}.medal.b{color:var(--m-bronze)}
.total{font-weight:800;color:var(--green-dark)}
.matchrow{display:flex;gap:.8rem;align-items:center;padding:.55rem 0;border-bottom:1px solid var(--border)}
.matchrow:last-child{border:0}
.matchrow .when{min-width:64px;font-weight:700;color:var(--green)}
.matchrow .what{flex:1;min-width:0}
.matchrow .score{font-weight:800;font-size:1.05rem;color:var(--green-dark);white-space:nowrap}

/* forms */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.8rem 1rem}
.field{display:flex;flex-direction:column;gap:.25rem}.field.wide{grid-column:1/-1}
label{font-size:.85rem;font-weight:600;color:var(--green-dark)}
input,select,textarea{font:inherit;padding:.5rem .6rem;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);width:100%;min-height:42px}
input[type=checkbox]{width:auto;min-height:0;margin-right:.4rem}
input[type=color]{padding:2px;height:42px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);border-color:var(--gold)}
.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end}
.inline-form .field{flex:1 1 140px}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}
.err-text{color:var(--danger);font-size:.82rem}
.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.8rem}.filters>*{flex:1 1 150px}.filters .btn{flex:0 0 auto}

/* pagination */
.pager{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.8rem}
.pager a,.pager span{padding:.3rem .65rem;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:.85rem}
.pager .cur{background:var(--green);color:#fff;border-color:var(--green)}

/* hero */
.hero{background:linear-gradient(135deg,var(--green-dark),var(--green));color:#fff;border-radius:var(--radius);padding:1.4rem 1.2rem;margin-bottom:1rem;border-bottom:4px solid var(--gold)}
.hero h1{font-size:1.8rem;margin:0}.hero p{opacity:.9}

/* bracket */
.bracket{display:flex;gap:1.4rem;overflow-x:auto;padding-bottom:.6rem}
.round{min-width:230px;display:flex;flex-direction:column;justify-content:space-around;gap:.7rem;flex:none}
.round h4{margin:0;font-size:.8rem;text-transform:uppercase;color:var(--gold-dark);letter-spacing:.05em}
.bm{border:1px solid var(--border);border-radius:6px;background:#fff;font-size:.88rem}
.bm div{display:flex;justify-content:space-between;gap:.5rem;padding:.35rem .55rem}
.bm div+div{border-top:1px solid var(--border)}
.bm .w{font-weight:700;background:var(--green-pale)}
.round-tabs{display:none;gap:.4rem;overflow-x:auto;margin-bottom:.6rem}
.round-tabs button{border:1px solid var(--border);background:#fff;border-radius:99px;padding:.3rem .8rem;white-space:nowrap}
.round-tabs button.on{background:var(--green);color:#fff;border-color:var(--green)}

/* live scoring */
.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.side{border:2px solid var(--border);border-radius:12px;padding:1rem;text-align:center;background:#fff}
.side .nm{font-weight:700;margin-bottom:.4rem}
.side .big{font-size:4rem;font-weight:800;line-height:1;color:var(--green-dark);width:100%;text-align:center;border:0;background:transparent;min-height:0;padding:0}
.pm{display:flex;gap:.5rem;margin-top:.7rem}.pm button{flex:1;font-size:1.6rem;min-height:56px;border-radius:10px;border:1px solid var(--green);background:var(--green-pale);color:var(--green-dark);font-weight:700;cursor:pointer}
.pm button.plus{background:var(--green);color:#fff}
.judge-card{border:1px solid var(--border);border-radius:var(--radius);padding:.8rem;margin-bottom:.8rem;background:#fff}
.judge-card .crit{display:flex;align-items:center;gap:.6rem;justify-content:space-between;padding:.35rem 0;border-top:1px dashed var(--border)}
.judge-card .crit input{width:90px;text-align:right;font-size:1.1rem}

/* mobile chrome */
.bottom-nav{display:none}
.menu-overlay{position:fixed;inset:0;background:var(--bg);z-index:60;overflow:auto;padding:1rem 1rem calc(var(--nav-h) + 1.5rem)}
.menu-overlay[hidden]{display:none}
.menu-overlay h4{margin:1.1rem 0 .35rem;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-dark)}
.menu-overlay a.item{display:block;padding:.75rem .9rem;background:#fff;border:1px solid var(--border);border-radius:8px;margin-bottom:.4rem;color:var(--text);font-weight:600}
.menu-close{float:right}

/* A4 reports */
.report-toolbar{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;position:sticky;top:60px;z-index:20;background:var(--bg);padding:.4rem 0}
.report-stage{background:#cfd8d2;padding:1rem;border-radius:var(--radius);overflow:auto}
.report-page{width:210mm;min-height:297mm;margin:0 auto 1rem;background:#fff;padding:12mm;box-shadow:0 2px 12px rgba(0,0,0,.2);color:#000;font-size:10.5pt;transform-origin:top left}
.report-page.landscape{width:297mm;min-height:210mm}
.rh{text-align:center;border-bottom:2px solid var(--green);padding-bottom:6mm;margin-bottom:5mm}
.rh .logo{width:18mm;height:18mm;margin:0 auto 2mm;font-size:9pt}
.rh .rep{font-size:8.5pt;letter-spacing:.1em}.rh .uni{font-size:14pt;font-weight:800;color:var(--green-dark)}
.rh .evt{font-weight:700;margin-top:1mm}.rh .sub{font-size:9pt;color:#444}
.rh .title{font-size:13pt;font-weight:800;margin-top:4mm;text-transform:uppercase;letter-spacing:.03em}
.report-page table{width:100%;border-collapse:collapse;font-size:9.5pt}
.report-page th,.report-page td{border:1px solid #888;padding:1.6mm 2mm;text-align:left}
.report-page th{background:#e6efe9;font-weight:700}
.report-page tr{break-inside:avoid}
.report-page thead{display:table-header-group}
.signatures{display:flex;gap:10mm;justify-content:space-around;margin-top:16mm;break-inside:avoid}
.signatures div{flex:1;text-align:center;border-top:1px solid #000;padding-top:1.5mm;font-size:9pt}
.rf{margin-top:8mm;border-top:1px solid #999;padding-top:2mm;font-size:8pt;color:#444;display:flex;justify-content:space-between;gap:6mm}
.id-sheet{display:grid;grid-template-columns:repeat(2,86mm);gap:6mm;justify-content:center}
.id-card{width:86mm;height:54mm;border:1.5px solid var(--green);border-radius:3mm;overflow:hidden;display:flex;flex-direction:column;break-inside:avoid;font-size:8.5pt;background:#fff}
.id-card .hd{background:var(--green);color:#fff;padding:1.5mm 3mm;font-weight:700;font-size:8pt;border-bottom:1.2mm solid var(--gold)}
.id-card .bd{flex:1;display:flex;gap:2mm;padding:2mm 3mm;align-items:center}
.id-card .bd svg{width:22mm;height:22mm;flex:none}
.id-card .nm{font-size:11pt;font-weight:800;line-height:1.1}

/* public display */
.display{background:var(--bg);color:var(--text);min-height:100vh;padding:2vw;border-top:1.2vw solid var(--green)}
.display .panel{display:none;background:var(--surface);border:1px solid var(--border);border-top:.5vw solid var(--gold);border-radius:12px;padding:2vw}
.display .panel.on{display:block}
.display h1{font-size:3vw;color:var(--green-dark);margin:0 0 1.2vw}
.display table.t{font-size:2vw}.display table.t th{background:var(--green);color:#fff;font-size:1.2vw}
.display table.t td{border-color:var(--border)}.display table.t tr:hover td{background:transparent}
.display .matchrow{font-size:2vw;border-color:var(--border)}.display .matchrow .when,.display .matchrow .score{color:var(--green)}
.display .empty{font-size:2vw}

/* ── mobile ── */
@media (max-width:820px){
  .toplinks{display:none}
  .shell.has-side{display:block}
  .sidebar{display:none}
  .main{padding:.8rem .8rem calc(var(--nav-h) + 1.6rem)}
  .g2,.g3,.form-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(3,1fr);gap:.4rem}.stat{padding:.4rem .5rem}.stat b{font-size:1.1rem}.stat span{font-size:.68rem}
  .hero{padding:1rem}.hero h1{font-size:1.3rem}
  .hide-m{display:none!important}
  table.t{font-size:.84rem}table.t th,table.t td{padding:.4rem .35rem}
  .card{padding:.75rem}
  .round-tabs{display:flex}.bracket .round{display:none;min-width:100%}.bracket .round.on{display:flex}
  .scoreboard .big{font-size:3.2rem}
  .btn{min-height:44px}
  .bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;height:var(--nav-h);background:var(--green);border-top:3px solid var(--gold);z-index:50;padding-bottom:env(safe-area-inset-bottom)}
  .bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#cfe3d6;font-size:.7rem;background:none;border:0;font-family:inherit;cursor:pointer;text-decoration:none;min-height:44px}
  .bottom-nav .ico{font-size:1.15rem;line-height:1}
  .bottom-nav a.on{color:var(--gold);font-weight:700}
  .report-page{margin-bottom:.5rem}
  .report-toolbar{top:56px}
}
@media (min-width:821px){.menu-overlay{display:none!important}}

@media print{
  @page{size:A4 portrait;margin:12mm}
  body.landscape-report{--x:1}
  .topbar,.sidebar,.bottom-nav,.menu-overlay,.report-toolbar,.no-print,.alert{display:none!important}
  body{background:#fff}
  .shell,.shell.has-side{display:block}
  .main{padding:0}
  .report-stage{background:none;padding:0;overflow:visible}
  .report-page{width:auto!important;min-height:0;margin:0;padding:0;box-shadow:none;zoom:1!important;transform:none!important}
}
