@font-face{font-family:UI;src:url('assets/ui.ttf') format('truetype');font-display:swap}@font-face{font-family:Naskh;src:url('assets/naskh.ttf') format('truetype');font-display:block}@font-face{font-family:Script;src:url('assets/script.ttf') format('truetype');font-display:block}@font-face{font-family:Japanese;src:url('assets/japanese.ttf') format('truetype');font-display:block}@font-face{font-family:Korean;src:url('assets/korean.ttf') format('truetype');font-display:block}
:root{--ink:#162751;--muted:#56647e;--blue:#3864dc;--gold:#fbcb60;--pink:#b84171;--line:#d4dbe9;--paper:#fff;--bg:#f0f3f9;--font:UI,Tahoma,Arial,sans-serif;color-scheme:light}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:400 17px/1.65 var(--font)}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation;min-height:45px;border:1px solid transparent;border-radius:9px;padding:9px 17px;font-size:16px;font-weight:700;line-height:1.6}button:disabled{opacity:.45;cursor:default}button:not(:disabled):active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #b77800;outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:38px;line-height:1.4;margin-bottom:12px}h2{font-size:25px;line-height:1.5;margin-bottom:9px}h3{font-size:19px}p{line-height:1.8}a{color:inherit}em{font-style:normal;color:var(--blue)}.app{max-width:1400px;margin:auto;padding:0 34px}.header{min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-size:28px;font-weight:800;line-height:1.35}.brand small{display:block;font-size:14px;font-weight:400;margin-top:4px;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:52px;height:54px;border-radius:14px;background:var(--ink);color:var(--gold);font:44px/1 Georgia,serif}.header-actions{display:flex;gap:10px}.quiet{border-color:transparent;background:transparent;color:var(--muted);font-size:14px}.quiet:hover{background:#e2e8f4}.outline{border-color:var(--line);color:var(--ink);background:white}.outline:hover{border-color:var(--blue);background:#f6f8ff}.primary{background:var(--ink);color:white;border-color:var(--ink)}.primary:hover{background:#294079}.wide{width:100%}.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow:hidden}.eyebrow{display:block;font-size:14px;font-weight:700;color:var(--blue);margin-bottom:8px}.intro{display:flex;justify-content:space-between;align-items:center;gap:35px;padding:30px 0 20px}.intro h1{font-size:35px;margin-bottom:0}.intro h1 br{display:none}.intro>p{max-width:410px;font-size:16px;color:var(--muted);margin:0}.method-set{padding:0;margin:0 0 23px;border:0}.method-set legend{font-size:18px;font-weight:700;margin-bottom:11px}.method-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.method{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;background:white;padding:16px;cursor:pointer;min-width:0}.method:has(input:checked){border:2px solid var(--blue);padding:15px;background:#edf2ff}.method input{width:18px;height:18px;accent-color:var(--blue);flex-shrink:0}.method b{display:block;font-size:19px;line-height:1.5}.method small{display:block;font-size:14px;color:var(--muted);margin-top:3px}.method i{margin-inline-start:auto;font-style:normal;font-size:25px;color:#9faccc}.method-note{margin:10px 0 0;color:var(--muted);font-size:14px}.setup-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:24px;margin-bottom:34px;align-items:start}.setup-controls{padding:23px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.section-heading h2{margin:0;font-size:23px}.count-label{display:flex;align-items:center;gap:10px;white-space:nowrap;font-size:14px}.count-label select{width:104px;margin:0}select{width:100%;display:block;background:white;border:1px solid #b8c4d9;border-radius:7px;min-height:43px;padding:7px 11px;font-size:16px;color:var(--ink);margin-top:6px}.team-fields{display:grid;grid-template-columns:1fr 1fr;gap:11px}.team-field{border:1px solid var(--line);border-inline-start:4px solid var(--team);border-radius:8px;padding:8px 11px;background:#f8faff}.team-field label{display:block;font-size:14px;color:var(--muted)}.team-field input{width:100%;background:transparent;border:0;color:var(--ink);font-size:17px;font-weight:700;padding:5px 0;min-height:35px}.settings{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.settings label{font-size:15px;font-weight:700}.load-status{font-size:14px;color:#126a5c;margin:17px 0 12px}.error{color:#a12248;font-size:15px;margin:12px 0}.load-status.failed{color:#a12248}.sample>.section-heading{padding:19px 21px 0;flex-wrap:wrap;gap:9px}.tag{display:inline-block;border:1px solid #c8d4ed;background:#edf2ff;color:#314d8c;font-size:14px;padding:3px 10px;border-radius:6px}.sample-paper{position:relative;margin:4px 20px 0;min-height:260px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex-direction:column;overflow:hidden;border-radius:9px}.sample-word{font:160px/1.4 Naskh,serif;color:var(--ink);z-index:1}.sample-baseline{position:absolute;top:64%;left:8%;right:8%;border-bottom:1px dashed #b1c4e6}.sample-label{font-size:14px;color:var(--muted);padding:0 10px 12px;text-align:center}.sample-caption{padding:19px 23px 5px}.sample-caption b{font-size:20px}.sample-caption p{font-size:15px;color:var(--muted);margin:6px 0 12px}.rubric{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;background:#edf2fa;border-top:1px solid var(--line);padding:17px}.rubric span{text-align:center;font-size:14px;color:var(--muted)}.rubric b{display:block;font-size:27px;color:var(--ink)}.game-top{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:23px 0 17px}.game-top h1{font-size:28px;margin:0}.game-top .eyebrow{margin:0;font-size:14px}.scores{display:grid;grid-template-columns:repeat(var(--teams,4),minmax(0,1fr));gap:10px;margin-bottom:20px}.score-card{background:white;border:1px solid var(--line);border-top:4px solid var(--team);padding:11px 14px;border-radius:9px;display:flex;justify-content:space-between;align-items:center;gap:10px}.score-card.active{box-shadow:0 0 0 2px var(--team)}.score-card h2{font-size:16px;margin:0;color:var(--team);overflow-wrap:anywhere}.score-card strong{font:700 28px/1.4 Tahoma,Arial,sans-serif;white-space:nowrap}.ready{text-align:center;padding:36px 22px}.ready h2{font-size:31px;margin:17px 0 10px}.ready>p{color:var(--muted);font-size:16px;max-width:810px;margin:0 auto 15px}.flow{display:flex;justify-content:center;gap:45px;flex-wrap:wrap;margin:26px 0}.flow>span{font-size:20px;font-weight:700}.flow b{display:inline-grid;place-items:center;background:var(--gold);border-radius:50%;width:30px;height:30px;font-size:17px;margin-inline-end:5px}.flow small{display:block;font-size:14px;font-weight:400;color:var(--muted);padding-top:5px}.ready-actions{display:flex;justify-content:center;gap:13px;flex-wrap:wrap}.small-note{font-size:14px;color:var(--muted);margin:12px 0 0}.ready .small-note{margin:15px auto 0}.arena-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 23px}.arena-heading h2{margin:0;font-size:26px}.arena-heading p{font-size:15px;color:var(--muted);margin:3px 0 0}.arena-heading .eyebrow{margin:0}.clock{display:flex;align-items:center;gap:11px;flex-shrink:0}.clock strong{font:700 48px/1.1 Tahoma,Arial,sans-serif;min-width:66px;text-align:center}.clock small{display:block;font-size:14px;color:var(--muted)}.clock .quiet{padding:2px 0;min-height:35px}.clock.urgent strong{color:#af284e}.time-track{height:4px;background:#e6eafa}.time-track span{height:100%;display:block;background:var(--blue);width:100%}.work-area{display:grid;grid-template-columns:225px minmax(0,1fr);gap:20px;padding:20px;background:#e8edf7;align-items:start}.work-area.wide-board{grid-template-columns:1fr}.reference{padding:12px;background:white;border:1px solid var(--line);border-radius:10px;text-align:center}.reference>span{font-size:14px;color:var(--muted)}.reference canvas{display:block;width:100%;height:auto;margin:5px 0 10px}.reference p{font-size:14px;line-height:1.5;margin:0;color:var(--muted)}.drawing-area{min-width:0}.drawing-caption{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:9px;font-size:14px;color:var(--muted)}.canvas-wrap{width:100%;aspect-ratio:5/3;position:relative;background:white;border:1px solid #b9c6dc;border-radius:10px;overflow:hidden;max-height:64vh}.canvas-wrap canvas{display:block;width:100%;height:100%;position:absolute;inset:0}#ink{touch-action:none;cursor:crosshair}#ink.locked{pointer-events:none;cursor:default}.draw-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;padding-top:13px}.draw-tools button{font-size:14px;padding:7px 12px}.draw-tools label{display:flex;align-items:center;gap:8px;font-size:14px}.draw-tools select{width:95px;margin:0;min-height:42px;font-size:14px}.cover{min-height:360px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--ink);padding:35px 25px;text-align:center;color:white}.cover>span{font:65px/1.4 Tahoma,Arial,sans-serif;color:var(--gold)}.cover h2{font-size:30px;margin:16px 0 6px}.cover p{max-width:740px;font-size:17px;color:#d7e0f2}.cover .primary{border-color:var(--gold);background:var(--gold);color:var(--ink)}.transition-actions,.submit-actions{text-align:center;padding:18px;border-top:1px solid var(--line)}.review{padding:23px}.review-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(310px,.85fr);gap:25px;align-items:start}.compare-tabs{display:flex;gap:6px;padding:4px;background:#e8eefb;border-radius:9px;margin:0 auto 13px;width:fit-content}.compare-tabs button{background:transparent;color:var(--muted);font-size:15px;min-height:40px;padding:5px 15px}.compare-tabs button[aria-pressed=true]{background:white;color:var(--ink);box-shadow:0 1px 6px #b7c3de}.review canvas{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:white}.feedback{font-size:16px;margin:13px 0 0;padding:12px 15px;background:#edf4fd;border-inline-start:4px solid var(--blue);border-radius:7px}.physical-review p{font-size:15px;color:var(--muted);margin:12px 0 0}.grading-area>p{font-size:15px;margin:0 0 15px;color:var(--muted)}.grade-card{border:1px solid var(--line);border-inline-start:4px solid var(--team);border-radius:10px;padding:14px;margin-bottom:13px}.grade-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.grade-heading h3{margin:0;color:var(--team);overflow-wrap:anywhere}.grade-heading strong{font:700 23px/1.4 Tahoma,Arial,sans-serif}.grade-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.grade-fields label{font-size:14px;line-height:1.5;color:var(--muted)}.grade-fields input{width:100%;background:#f5f8fd;border:1px solid #b3c3dd;border-radius:7px;font:700 22px/1.4 Tahoma,Arial,sans-serif;text-align:center;padding:8px 3px;margin-top:7px;color:var(--ink);min-height:45px}.auto-label{font-size:13px;color:#536788;margin:0 0 11px}.finish{text-align:center;padding:34px 0}.finish h1{font-size:35px;overflow-wrap:anywhere}.finish>p{color:var(--muted);font-size:17px}.podium{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:15px;margin:25px 0}.podium-card{background:white;border:1px solid var(--line);border-top:5px solid var(--team);border-radius:13px;padding:22px 15px}.podium-card h2{font-size:22px;color:var(--team);margin:8px 0;overflow-wrap:anywhere}.podium-card strong{font:700 43px/1.5 Tahoma,Arial,sans-serif}.podium-card small{font-size:14px;color:var(--muted);display:block}.podium-card>span{font-size:15px}.table-wrap{padding:15px 22px;margin-bottom:25px;overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:right;font-size:17px}caption{text-align:right;font-size:21px;font-weight:700;padding:4px 0 12px}td,th{padding:12px 10px;border-top:1px solid var(--line)}th{color:var(--muted);font-weight:400;font-size:15px}td:nth-child(2){font-weight:700;overflow-wrap:anywhere}td:last-child{color:var(--blue);font-weight:700}footer{display:flex;justify-content:center;gap:13px;flex-wrap:wrap;border-top:1px solid var(--line);padding:18px 0;margin-top:25px;font-size:14px;color:var(--muted)}footer span{color:var(--blue)}dialog{font:17px/1.9 var(--font);color:var(--ink);background:white;border:1px solid #adbdd8;border-radius:15px;padding:28px;width:calc(100% - 30px);max-width:780px;max-height:calc(100dvh - 30px);overflow:auto;box-shadow:0 20px 100px #14254455}dialog::backdrop{background:#122344c9;backdrop-filter:blur(4px)}dialog h2{font-size:27px}dialog li{padding:5px 0}dialog ol{padding-inline-start:25px}.dialog-actions{display:flex;gap:12px;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.notice{position:fixed;bottom:20px;left:15px;right:15px;margin:auto;max-width:800px;background:var(--ink);color:white;border:1px solid #8fadd9;border-radius:10px;padding:13px 18px;font-size:16px;z-index:30}#print-area{display:none}
@media(min-width:1100px) and (max-height:850px){.header{min-height:82px}.intro{padding:20px 0 16px}.intro h1{font-size:31px}.method{padding:12px}.method:has(input:checked){padding:11px}.setup-controls{padding:20px}.game-top{padding-top:16px}.scores{margin-bottom:14px}.score-card{padding:8px 12px}.arena-heading{padding:12px 20px}.work-area{padding:14px 18px;grid-template-columns:205px minmax(0,1fr)}.canvas-wrap{max-height:56vh;max-width:calc(56vh * 5 / 3);margin:auto}.work-area.wide-board .canvas-wrap{max-width:calc(58vh * 5 / 3);max-height:58vh}.draw-tools{padding-top:10px}.review-grid{grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr)}}
@media(max-width:1050px){.app{padding:0 23px}.intro{gap:20px;align-items:start}.intro h1{font-size:31px}.intro h1 br{display:block}.intro>p{padding-top:20px;max-width:310px}.method{padding:12px;gap:8px}.method:has(input:checked){padding:11px}.method b{font-size:18px}.method i{display:none}.setup-grid{grid-template-columns:1.15fr .85fr;gap:18px}.setup-controls{padding:18px}.section-heading{gap:12px;flex-wrap:wrap}.section-heading h2{font-size:22px}.settings{gap:12px}.settings label{font-size:14px}.settings select{font-size:15px;padding:7px}.sample>.section-heading{padding:17px 17px 0}.sample-paper{min-height:250px;margin:0 15px}.sample-word{font-size:145px}.scores{grid-template-columns:repeat(3,minmax(0,1fr))}.scores[data-count="2"],.scores[data-count="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}.work-area{grid-template-columns:180px minmax(0,1fr);gap:15px}.arena-heading h2{font-size:24px}.review-grid{grid-template-columns:minmax(0,1fr) minmax(310px,1fr);gap:18px}.grade-fields{gap:7px}.grade-card{padding:12px}.grade-fields label{font-size:14px}}
@media(max-width:760px){.app{padding:0 16px}.header{min-height:87px;gap:13px}.brand{font-size:24px;gap:10px}.brand-mark{width:43px;height:48px;font-size:36px}.brand small{font-size:12px}.header-actions{gap:3px;flex-wrap:wrap;justify-content:flex-end;max-width:180px}.header-actions button{font-size:14px;padding:6px 11px;min-height:39px}.intro{display:block;padding:24px 0 19px}.intro h1{font-size:33px}.intro h1 br{display:none}.intro>p{max-width:none;padding-top:11px;font-size:16px}.method-grid{grid-template-columns:1fr;gap:9px}.method{padding:12px 15px}.method:has(input:checked){padding:11px 14px}.method i{display:block}.method small{font-size:14px}.setup-grid{grid-template-columns:1fr}.sample-paper{min-height:230px}.sample-word{font-size:160px}.sample>.section-heading{padding:20px 20px 0}.sample-caption{padding:17px 21px 5px}.game-top h1{font-size:26px}.scores{gap:9px}.score-card h2{font-size:15px}.score-card strong{font-size:26px}.ready{padding:28px 18px}.ready h2{font-size:27px}.flow{gap:22px}.flow>span{font-size:19px}.work-area{grid-template-columns:1fr;padding:15px}.reference{display:grid;grid-template-columns:85px 1fr;align-items:center;padding:9px 12px;gap:2px 13px;text-align:right}.reference canvas{grid-row:1/3;grid-column:1;width:85px;margin:0}.reference>span{grid-column:2}.reference p{grid-column:2}.canvas-wrap{max-height:none}.arena-heading{padding:15px 17px;gap:13px}.arena-heading h2{font-size:24px}.arena-heading p{font-size:14px}.clock strong{font-size:41px;min-width:55px}.clock{gap:8px}.clock .quiet{font-size:14px}.review{padding:19px}.review-grid{grid-template-columns:1fr;gap:21px}.cover{min-height:330px;padding:30px 19px}.cover h2{font-size:27px}.cover p{font-size:16px}.draw-tools{gap:8px}.draw-tools button{font-size:14px}.finish h1{font-size:30px}.podium{grid-template-columns:repeat(2,minmax(0,1fr))}.podium-card h2{font-size:20px}.table-wrap{padding:12px 15px}table{font-size:16px}dialog{font-size:16px;padding:23px}footer{font-size:13px}}
@media(max-width:440px){.app{padding:0 12px}.header{gap:8px}.brand{font-size:22px;gap:7px}.brand-mark{width:36px;height:43px;font-size:31px}.brand small{font-size:12px}.header-actions{max-width:127px}.header-actions button{font-size:14px;min-height:35px;padding:4px 9px}.intro h1{font-size:29px}.intro h1 br{display:block}.intro>p{font-size:15px}.setup-controls{padding:17px 13px}.section-heading h2{font-size:22px}.count-label{font-size:14px}.count-label select{width:88px;font-size:15px}.team-fields{gap:9px}.team-field{padding:7px 9px}.team-field input{font-size:16px}.settings{gap:11px}.settings select{font-size:14px;padding:8px 6px}.scores{grid-template-columns:repeat(2,minmax(0,1fr))}.score-card{padding:9px 10px}.score-card h2{font-size:14px}.game-top h1{font-size:23px}.game-top .quiet{font-size:14px;padding:5px}.ready h2{font-size:25px}.ready>p{font-size:15px}.flow{gap:16px}.flow>span{font-size:17px}.flow b{width:25px;height:25px;font-size:15px}.flow small{font-size:14px}.ready-actions{gap:10px}.ready-actions button{width:100%}.arena-heading{padding:13px 12px;gap:8px}.arena-heading h2{font-size:22px}.clock strong{font-size:36px;min-width:47px}.clock .quiet{max-width:67px;line-height:1.4}.clock small{font-size:14px}.work-area{padding:12px;gap:12px}.drawing-caption{gap:8px;font-size:14px;align-items:start}.drawing-caption span:last-child{max-width:130px;text-align:left}.draw-tools{justify-content:space-between;gap:7px}.draw-tools button{font-size:14px;padding:5px 8px;min-height:40px}.draw-tools label{font-size:14px}.draw-tools select{font-size:14px;width:85px;min-height:39px}.review{padding:17px 13px}.grade-card{padding:12px 10px}.grade-fields{gap:8px}.grade-heading h3{font-size:18px}.grade-fields input{font-size:21px}.submit-actions,.transition-actions{padding:15px 12px}.submit-actions button,.transition-actions button{font-size:15px;width:100%}.cover h2{font-size:25px}.cover{min-height:310px}.podium{gap:10px}.podium-card{padding:16px 10px}.podium-card h2{font-size:19px}.podium-card strong{font-size:36px}.finish>.primary{width:100%}td,th{padding:10px 6px}th{font-size:14px}.small-note{font-size:14px}}
@media print{@page{size:A4 portrait;margin:14mm}body{background:white!important;color:black!important;font:15pt UI,Tahoma,sans-serif}.app,dialog,.notice,.sr-only{display:none!important}#print-area{display:block!important}.print-card{break-after:page;page-break-after:always}.print-card:last-child{break-after:auto;page-break-after:auto}.print-heading{display:flex;justify-content:space-between;gap:10mm;border-bottom:1px solid #aaa;padding-bottom:3mm}.print-heading h1{font-size:24pt;margin:0}.print-heading p{font-size:13pt;margin:0}.print-card h2{font-size:17pt;margin:5mm 0 2mm}.print-card img{display:block;width:100%;height:auto;aspect-ratio:5/3;border:1px solid #bbb}.print-blank{width:100%;aspect-ratio:5/3;border:1px solid #bbb}.print-card .print-note{font-size:11pt;margin:3mm 0}.print-card .print-footer{font-size:11pt;margin:4mm 0 0;color:#555}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.canvas-wrap{max-height:none;max-width:min(100%,calc(64vh * 5 / 3));margin-inline:auto}
@media(min-width:1100px) and (max-height:850px){.canvas-wrap{max-height:none;max-width:min(100%,calc(56vh * 5 / 3))}}
@media(max-width:760px){.canvas-wrap{max-width:100%;max-height:none}}
@media print{.print-card img,.print-blank{width:150mm;height:90mm;max-width:100%;margin-inline:auto}.print-card{line-height:1.4}.print-heading h1{font-size:20pt;line-height:1.3}.print-card h2{font-size:16pt;line-height:1.4;margin:4mm 0 2mm}}
