@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
@import url('pastel.css?v=3');
@import url('premium.css?v=5');
:root{--navy:#0c3158;--blue:#1479c9;--cyan:#16b8cc;--green:#15945a;--red:#d3423b;--line:#dce7f0;--text:#17283a;--muted:#65778a;--shadow:0 12px 35px rgba(22,70,111,.10)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--text);background:linear-gradient(180deg,#eef7fd 0,#f8fafc 300px);line-height:1.55}a{color:var(--blue);text-decoration:none;transition:.2s}a:hover{color:#0a5997}.topbar{position:sticky;top:0;z-index:20;background:linear-gradient(120deg,#092c50 0%,#145489 60%,#0e7694 100%);color:#fff;padding:14px clamp(18px,4vw,44px);display:flex;align-items:center;justify-content:space-between;gap:24px;box-shadow:0 8px 25px rgba(6,38,68,.2);border-bottom:1px solid rgba(255,255,255,.14)}.topbar:before{content:"";width:9px;height:42px;border-radius:8px;background:linear-gradient(#3ed5e2,#8ce6f1);box-shadow:0 0 18px rgba(81,220,234,.65)}.topbar>div:first-of-type{margin-right:auto}.brand{font-size:20px;font-weight:800;display:flex;align-items:center;gap:10px}.brand-logo{width:32px;height:32px;border-radius:9px;flex:0 0 auto;filter:drop-shadow(0 2px 8px rgba(0,0,0,.25))}.topbar small{color:#cde8f7}.nav{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.nav a{color:#eaf7ff;padding:8px 11px;border-radius:8px;font-size:14px;font-weight:600}.nav a:hover{color:#fff;background:rgba(255,255,255,.13)}.container{max-width:1200px;margin:30px auto 60px;padding:0 20px}.container>h1{position:relative;padding-left:17px}.container>h1:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:5px;border-radius:6px;background:linear-gradient(var(--blue),var(--cyan))}.card,.stat{background:rgba(255,255,255,.97);border:1px solid rgba(198,218,233,.72);border-radius:16px;padding:22px;box-shadow:var(--shadow)}.card{margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:17px}.stat{position:relative;overflow:hidden;min-height:132px;transition:.2s}.stat:hover{transform:translateY(-3px);box-shadow:0 17px 40px rgba(22,70,111,.15)}.stat:after{content:"";position:absolute;right:-28px;top:-34px;width:110px;height:110px;border-radius:50%;background:linear-gradient(135deg,rgba(20,121,201,.13),rgba(22,184,204,.05))}.stat strong{display:block;font-size:31px;color:var(--navy);line-height:1.15;margin:8px 0}.stat span,.muted{color:var(--muted)}h1{margin:0 0 20px;color:var(--navy);font-size:clamp(25px,3vw,32px);letter-spacing:-.5px}h2{color:var(--navy);font-size:21px;margin:28px 0 14px}p{margin:8px 0 16px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(20,60,95,.06)}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff}th,td{padding:13px 14px;border-bottom:1px solid #e7eef4;text-align:left;vertical-align:middle}th{position:sticky;top:0;background:linear-gradient(180deg,#f3f8fc,#eaf3f9);color:#173f63;font-size:12px;text-transform:uppercase;letter-spacing:.45px;white-space:nowrap}tbody tr{transition:background .15s}tbody tr:hover{background:#f4faff}tbody tr:last-child td{border-bottom:0}label{display:block;font-weight:650;margin:13px 0 6px;color:#29445d;font-size:14px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #bdccda;border-radius:9px;background:#fff;color:var(--text);font:inherit;outline:none;transition:.18s}input:focus,select:focus,textarea:focus{border-color:#3b97d9;box-shadow:0 0 0 4px rgba(41,146,215,.13)}textarea{min-height:90px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;padding:10px 17px;background:linear-gradient(135deg,#176fba,#1687c7);color:#fff;font-weight:700;cursor:pointer;box-shadow:0 6px 15px rgba(20,105,175,.2);transition:.18s}.btn:hover{color:#fff;transform:translateY(-1px);box-shadow:0 9px 20px rgba(20,105,175,.27)}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn.secondary{background:linear-gradient(135deg,#5e7183,#76899a)}.btn.success{background:linear-gradient(135deg,#12854f,#20a86a)}.btn.danger{background:linear-gradient(135deg,#c43d37,#e45a52)}.btn.small{padding:7px 11px;font-size:12px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0}.alert{padding:13px 15px;border-radius:10px;margin:14px 0;border-left:4px solid;font-size:14px}.alert.success{background:#e8f7ee;color:#116539;border-color:#22a866}.alert.error{background:#fff0ee;color:#8f261f;border-color:#e25349}.alert.info{background:#eaf6ff;color:#17547d;border-color:#2996d5}.badge{display:inline-flex;padding:5px 9px;border-radius:20px;background:#e8eef3;color:#445a6d;font-size:11px;font-weight:800;white-space:nowrap}.badge.done{background:#dcf4e6;color:#14703d}.badge.warn{background:#fff0c6;color:#7a5600}.progress{height:9px;background:#e1ebf2;border-radius:10px;overflow:hidden}.progress>div{height:100%;border-radius:10px;background:linear-gradient(90deg,var(--blue),var(--cyan));box-shadow:0 0 12px rgba(22,184,204,.45)}.auth{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 15% 20%,rgba(45,189,218,.28),transparent 28%),radial-gradient(circle at 85% 80%,rgba(36,112,184,.35),transparent 32%),linear-gradient(135deg,#071f3a 0%,#0d4877 53%,#0b6f88 100%);position:relative;overflow:hidden}.auth:before,.auth:after{content:"";position:fixed;border:1px solid rgba(255,255,255,.12);border-radius:50%;pointer-events:none}.auth:before{width:380px;height:380px;left:-160px;bottom:-130px}.auth:after{width:510px;height:510px;right:-230px;top:-240px}.auth-card{position:relative;width:min(455px,94vw);background:rgba(255,255,255,.97);padding:34px;border-radius:20px;box-shadow:0 28px 75px rgba(0,18,39,.42);border:1px solid rgba(255,255,255,.65);backdrop-filter:blur(10px);animation:card-in .45s ease-out}.auth-card:before{content:"";display:block;width:58px;height:58px;border-radius:17px;margin:-3px 0 19px;background:url(logo.svg) center/cover no-repeat;box-shadow:0 10px 24px rgba(15,110,150,.28)}.auth-card h1{font-size:28px;margin-bottom:7px}.score-row{display:grid;grid-template-columns:1fr 138px;gap:20px;align-items:end;padding:16px 0;border-bottom:1px solid var(--line)}.score-row:last-of-type{border-bottom:0}.score-row strong{color:#1b3f60}.score-row input{text-align:right;font-size:18px;font-weight:700}.right{text-align:right}.center{text-align:center}.print-only{display:none}.official-title{text-align:center;margin:0 0 24px}.official-title h1,.official-title h2{font-size:22px;letter-spacing:.3px;margin:0 0 6px;color:var(--navy)}.official-title p{margin:0;color:var(--muted);font-size:14px}@keyframes card-in{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}@media(max-width:780px){.topbar{position:static;align-items:flex-start;flex-direction:column;padding:15px 18px}.topbar:before{display:none}.topbar>div:first-of-type{margin:0}.nav{width:100%;overflow:auto;flex-wrap:nowrap}.nav a{white-space:nowrap;background:rgba(255,255,255,.08)}.container{margin-top:20px;padding:0 13px}.grid{grid-template-columns:1fr 1fr}.stat{min-height:118px;padding:17px}.stat strong{font-size:25px}.score-row{grid-template-columns:1fr 95px;gap:11px}th,td{padding:10px;font-size:13px}.hide-mobile{display:none}.auth{padding:18px}.auth-card{padding:26px 22px}}@media(max-width:480px){.grid{grid-template-columns:1fr}.stat{min-height:auto}.actions .btn{flex:1}.auth-card h1{font-size:24px}}@media print{.topbar,.no-print,.actions{display:none!important}.container{max-width:none;margin:0}.card{border:0;box-shadow:none}.print-only{display:block}body{background:#fff}th{position:static}
/* Print hardening: some browsers (notably iPadOS/Safari print-to-PDF) render a fully blank page when the
   page uses CSS masks, blend modes, backdrop-filter or gradient background-clip:text — none of that decorative
   layer has any value on paper, so it is all switched off here in favour of plain, guaranteed-visible content. */
.ambient-fx,.cursor-aura,.system-loader,.language-switch{display:none!important}
body:after,body:before{content:none!important;display:none!important}
.card,.stat,.table-wrap{isolation:auto!important;overflow:visible!important}
.card:before,.stat:before,.table-wrap:before,.card:after,.stat:after{display:none!important;content:none!important}
.stat strong,.live-score{background:none!important;-webkit-background-clip:initial!important;background-clip:initial!important;color:#0c3158!important}
*{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;animation:none!important;transition:none!important}
.judge-col{display:none!important}
/* The strongest cause of a blank print: ui-effects.js adds .fx-reveal (opacity:0, blurred) to every
   .card/.stat/.table-wrap/.alert and only reveals it once scrolled into view on screen. Print never
   scrolls, so anything below the first fold — e.g. the whole results table — could stay invisible. */
.fx-reveal{opacity:1!important;transform:none!important;filter:none!important}
.official-title{margin-bottom:14px}.official-title h1,.official-title h2{font-size:17px}.official-title p{font-size:11px}
.trimmed-note,.export-panel{display:none!important}
}
/* Tablet (iPad) tuning: between the desktop layout and the phone breakpoint */
@media(min-width:781px) and (max-width:1024px){.container{padding:0 24px}.grid{grid-template-columns:repeat(2,1fr)}.guide-card{grid-template-columns:repeat(2,1fr)}.document-grid{grid-template-columns:repeat(2,1fr)}}
/* Touch ergonomics for iPad/phone: bigger tap targets, no iOS input auto-zoom, smooth momentum scroll */
html{-webkit-text-size-adjust:100%}
.table-wrap,.nav{-webkit-overflow-scrolling:touch}
a,button,.btn,.key,.nav a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
input,select,textarea{font-size:16px}
.score-row input{font-size:18px}
@media(pointer:coarse){.btn{min-height:44px;padding:12px 18px}.btn.small{min-height:38px;padding:9px 13px}.nav a{padding:11px 13px}th,td{padding:14px 13px}.key{min-height:52px}}
.topbar{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
/* Language / theme toggle bar — redesigned larger and higher-contrast so both controls are easy to spot */
.language-switch{position:fixed;right:18px;bottom:max(16px,env(safe-area-inset-bottom));z-index:1000;display:flex;align-items:center;gap:2px;padding:6px;border:1.5px solid rgba(120,120,150,.25);border-radius:16px;background:#fff;box-shadow:0 10px 30px rgba(30,30,60,.22);backdrop-filter:blur(12px);font-size:14px;font-weight:800}
.language-switch a,.language-switch .theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 13px;border-radius:11px;color:#3a3552;border:0;background:transparent;cursor:pointer;font:inherit;font-weight:800;line-height:1;min-height:38px}
.language-switch a:hover,.language-switch .theme-toggle:hover{background:rgba(20,105,175,.1);color:#0c3158}
.language-switch a.active{background:rgba(20,121,201,.16);color:#0c3158}
.ls-divider{width:1px;height:24px;background:rgba(120,120,150,.28);margin:0 3px}
.theme-icon{font-size:17px;line-height:1}

/* ---------- Dark mode ---------- */
@media screen{
[data-theme="dark"]{--navy:#eaf2fb;--blue:#6db8f2;--cyan:#5be0e8;--green:#3ddc97;--red:#ff8a80;--line:rgba(255,255,255,.12);--text:#e6ecf5;--muted:#93a1b8;--shadow:0 12px 35px rgba(0,0,0,.45)}
[data-theme="dark"] body{background:linear-gradient(180deg,#0a1120 0,#0d1526 320px)!important;color:var(--text)}
[data-theme="dark"] .card,[data-theme="dark"] .stat{background:#141c2e!important;border-color:rgba(255,255,255,.09)!important}
[data-theme="dark"] .table-wrap,[data-theme="dark"] table{background:#121a2b!important}
[data-theme="dark"] th{background:linear-gradient(180deg,#182338,#141c2e)!important;color:#c7d4e8!important}
[data-theme="dark"] th,[data-theme="dark"] td{border-bottom-color:rgba(255,255,255,.08)!important}
[data-theme="dark"] tbody tr:hover{background:rgba(255,255,255,.035)!important}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:#0f1727!important;border-color:rgba(255,255,255,.18)!important;color:var(--text)!important}
[data-theme="dark"] input:focus,[data-theme="dark"] select:focus,[data-theme="dark"] textarea:focus{box-shadow:0 0 0 4px rgba(109,184,242,.2)!important}
[data-theme="dark"] .btn:disabled{filter:brightness(.7)}
[data-theme="dark"] .badge{background:rgba(255,255,255,.09)!important;color:#c7d4e8!important}
[data-theme="dark"] .badge.done{background:rgba(61,220,151,.16)!important;color:#6ee9ae!important}
[data-theme="dark"] .badge.warn{background:rgba(255,196,64,.16)!important;color:#ffd479!important}
[data-theme="dark"] .alert.success{background:rgba(61,220,151,.1)!important;color:#6ee9ae!important;border-color:#3ddc97!important}
[data-theme="dark"] .alert.error{background:rgba(255,110,100,.12)!important;color:#ff9a90!important;border-color:#ff6e64!important}
[data-theme="dark"] .alert.info{background:rgba(109,184,242,.1)!important;color:#8fc8fa!important;border-color:#6db8f2!important}
[data-theme="dark"] .progress{background:rgba(255,255,255,.08)!important}
[data-theme="dark"] .auth{background:radial-gradient(circle at 15% 20%,rgba(45,120,189,.28),transparent 28%),radial-gradient(circle at 85% 80%,rgba(20,140,160,.28),transparent 32%),linear-gradient(135deg,#050d1a 0%,#081a2c 53%,#04222b 100%)!important}
[data-theme="dark"] .auth-card{background:rgba(15,22,38,.94)!important;border-color:rgba(255,255,255,.12)!important;color:var(--text)}
[data-theme="dark"] .auth-card h1{color:var(--navy)!important}
[data-theme="dark"] .modal-box{background:#141c2e!important;color:var(--text)}
[data-theme="dark"] .modal-box h2{color:var(--navy)!important}
[data-theme="dark"] .nav a{color:#dce8fa!important}
[data-theme="dark"] .stat strong,[data-theme="dark"] .live-score{color:var(--navy)!important;background:none!important;-webkit-background-clip:initial!important;background-clip:initial!important}
[data-theme="dark"] .certified-cell{background:rgba(61,220,151,.1)!important}
[data-theme="dark"] .certified-cell strong{color:#6ee9ae!important}
[data-theme="dark"] .judge-score-cell.partial-live{background:rgba(255,196,64,.12)!important}
[data-theme="dark"] .excluded-score,[data-theme="dark"] .judge-score-cell.excluded-score{background:rgba(255,255,255,.06)!important;color:#8b93a3!important}
[data-theme="dark"] .excluded-score strong{color:#8b93a3!important}
[data-theme="dark"] .trimmed-note{background:rgba(255,255,255,.06)!important;color:#aab4c4!important}
[data-theme="dark"] .document-meta{background:rgba(109,184,242,.1)!important;color:var(--text)!important}
[data-theme="dark"] .rubric-card{background:rgba(255,255,255,.04)!important;border-color:rgba(255,255,255,.1)!important}
[data-theme="dark"] .rubric-card h3{color:var(--navy)!important}
[data-theme="dark"] .rubric-card li{color:var(--text)!important;border-top-color:rgba(255,255,255,.08)!important}
[data-theme="dark"] .health-ok{background:rgba(61,220,151,.06)!important}
[data-theme="dark"] .health-warn{background:rgba(255,110,100,.08)!important;border-color:rgba(255,110,100,.35)!important}
[data-theme="dark"] .pin-screen{background:linear-gradient(180deg,rgba(20,28,46,.9),rgba(15,22,38,.85))!important;border-color:rgba(255,255,255,.16)!important}
[data-theme="dark"] .key{background:linear-gradient(145deg,rgba(32,42,62,.92),rgba(20,28,46,.88))!important;color:#dce8fa!important;border-color:rgba(255,255,255,.14)!important}
[data-theme="dark"] .language-switch{background:rgba(15,22,38,.94)!important;border-color:rgba(255,255,255,.16)!important}
[data-theme="dark"] .language-switch a,[data-theme="dark"] .language-switch .theme-toggle{color:#dce8fa!important}
[data-theme="dark"] .language-switch a:hover,[data-theme="dark"] .language-switch .theme-toggle:hover{background:rgba(255,255,255,.09)!important;color:#fff!important}
[data-theme="dark"] .language-switch a.active{background:rgba(109,184,242,.22)!important;color:#fff!important}
[data-theme="dark"] .ls-divider{background:rgba(255,255,255,.2)!important}
[data-theme="dark"] .document-card>b{filter:saturate(.85) brightness(.95)}
[data-theme="dark"] .score-edit-link:hover{background:rgba(255,255,255,.1)!important;color:#fff!important}
[data-theme="dark"] .live-statusbar{background:rgba(255,255,255,.05)!important;border-color:rgba(255,255,255,.12)!important}
[data-theme="dark"] .live-rank,[data-theme="dark"] .judge-count,[data-theme="dark"] .score-track{background:rgba(255,255,255,.09)!important;color:#c7d4e8!important}
[data-theme="dark"] .judge-count.complete{background:rgba(61,220,151,.16)!important;color:#6ee9ae!important}
}
