*{box-sizing:border-box}body{margin:0;background:#dfe5e9;color:#262c31;font-family:Inter,"Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.shell{max-width:1440px;margin:auto;padding:22px 28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-weight:900;letter-spacing:.08em;color:#c76832}.nav{display:flex;gap:16px;font-size:14px;font-weight:700}.nav a{text-decoration:none;opacity:.62}.nav a.active,.nav a:hover{opacity:1;color:#b75d2b}.stage-title{text-align:center;font-size:clamp(26px,3vw,47px);font-weight:900;letter-spacing:.05em;margin:8px 0 14px}.statusline{display:flex;align-items:center;gap:26px;margin-bottom:20px}.clock{font-size:clamp(24px,3vw,44px);font-weight:900;color:#cf6a31;min-width:130px}.progress{flex:1;display:flex;align-items:center;justify-content:space-between;position:relative}.progress:before{content:"";height:2px;background:#afb6bb;position:absolute;left:0;right:0;top:50%}.diamond{width:14px;height:14px;background:#edf0f1;border:1px solid #8c989e;transform:rotate(45deg);z-index:1}.diamond.done{background:#dd793a;border-color:#fff}.day{font-size:clamp(22px,2.7vw,38px);font-weight:900;white-space:nowrap}.panel{background:#f3f4f4;border:1px solid #cbd1d4;border-radius:10px;box-shadow:0 4px 15px #52606b12}.display-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:14px;min-height:65vh}.map-panel{padding:20px;min-height:500px;display:flex;align-items:center;justify-content:center;overflow:hidden}.map-grid{display:grid;width:min(100%,650px);aspect-ratio:1;gap:1px;align-content:center}.hex{min-width:0;aspect-ratio:1.1;clip-path:polygon(25% 2%,75% 2%,100% 50%,75% 98%,25% 98%,0 50%);border:1px solid #667782}.hex[data-t="0"]{background:#e6e8e9}.hex[data-t="1"]{background:#a6bdcb}.hex[data-t="2"]{background:#a87961}.hex[data-t="3"]{background:#93aa7a}.right-panel{padding:14px;display:flex;flex-direction:column;gap:10px}.rank-heading{font-size:15px;font-weight:800;padding:6px 8px;color:#565e64}.team-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.team-card{background:#f8f8f7;border:1px solid #cdd1d2;border-radius:7px;padding:10px 12px;min-height:94px}.team-card.leader{border-color:#d47b42;background:#f4ece0}.team-top{display:flex;align-items:center;gap:8px}.rank{font-size:30px;font-weight:900;min-width:27px}.dot{width:9px;height:9px;flex:none;border-radius:50%;background:var(--team-color)}.team-name{font-weight:900;font-size:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{margin-left:auto;border-radius:10px;padding:2px 6px;background:#dcece7;color:#37685a;font-size:10px;white-space:nowrap}.badge.pending{background:#f1deda;color:#9b5e53}.team-score{font-size:14px;font-weight:700;padding-left:40px;color:#575e61}.score-board{max-width:1020px;margin:0 auto}.score-caption{display:grid;grid-template-columns:45px 1fr 150px 150px 150px 130px;gap:8px;padding:8px 20px;color:#6b747a;font-weight:700;font-size:12px}.score-row{display:grid;grid-template-columns:45px 1fr 150px 150px 150px 130px;gap:8px;align-items:center;margin:6px 0;padding:14px 20px;background:#f4f5f5;border:1px solid #cbd1d4;border-radius:7px;font-weight:900}.score-row.rank-1{background:#eee5c7}.score-row.rank-2{background:#e5e7e9}.score-row.rank-3{background:#e9d4c4}.score-row .name{display:flex;align-items:center;gap:16px;font-size:20px}.score-row .value{font-size:22px}.empty{text-align:center;color:#69737a;padding:60px 20px}.form-shell{max-width:1120px;margin:20px auto;padding:0 20px 50px}.page-heading{font-size:31px;margin:20px 0 6px}.lede{color:#68737a;margin:0 0 24px}.card{background:#f7f8f8;border:1px solid #cbd1d4;border-radius:10px;padding:22px;margin-bottom:16px}.card h2{margin:0 0 16px;font-size:19px}.fields{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid #b9c3c9;border-radius:6px;padding:10px;background:white;color:#252a2e}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}button{border:0;border-radius:6px;background:#cb7038;color:white;padding:10px 16px;font-weight:800}button.secondary{background:#4a5962}button.ghost{background:#e4e9eb;color:#364149}.message{min-height:24px;color:#9e4d30;font-weight:700}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 8px;border-bottom:1px solid #d9dfe1}th{font-size:12px;color:#617079}td input{width:95px;border:1px solid #bdc8cd;padding:8px;border-radius:5px}td input.name-input{width:180px}.secret{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;word-break:break-all}.token-result{margin-top:16px;padding:16px;border:1px solid #bfd1ca;background:#e7f2ee;border-radius:6px;word-break:break-all}.hidden{display:none!important}@media(max-width:800px){.display-grid{grid-template-columns:1fr}.map-panel{min-height:280px}.fields{grid-template-columns:1fr 1fr}.score-caption,.score-row{grid-template-columns:30px 1fr 70px 70px 70px 80px;padding:10px;font-size:11px}.score-row .name,.score-row .value{font-size:14px}.statusline{gap:10px}.clock{min-width:0}.shell{padding:15px}}@media(max-width:550px){.team-list{grid-template-columns:1fr}.fields{grid-template-columns:1fr}.score-caption{display:none}.score-row{grid-template-columns:24px 1fr 60px 60px;gap:3px}.score-row .value:nth-last-child(-n+2){display:none}.nav{gap:7px;font-size:12px}}
/* The display is projected as a single screen. The SVG keeps each hexagon's geometry. */
.display-page{height:100dvh;overflow:hidden}
.display-page .shell{height:100dvh;display:flex;flex-direction:column;min-height:0;padding:12px 20px}
.display-page .topbar,.display-page .stage-title,.display-page .statusline{flex:none}
.display-page .stage-title{margin:3px 0 8px}
.display-page .statusline{margin-bottom:12px}
.display-page .display-grid{flex:1;min-height:0;overflow:hidden}
.display-page .map-panel{min-height:0;min-width:0;padding:8px}
.display-page .map-grid{display:flex;width:100%;height:100%;min-width:0;min-height:0;aspect-ratio:auto;align-items:center;justify-content:center}
.display-page .map-grid svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%;transform:translateY(-5px);overflow:visible}
.terrain{stroke:#3d4a50;stroke-width:.75;stroke-linejoin:round}
.terrain-0{fill:#cad8c1}
.terrain-1{fill:#d9dfe1}
.terrain-2{fill:#aa8069}
.terrain-3{fill:#92bdd1}
.spot rect{fill:#f4df88;stroke:#40515c;stroke-width:1.2}
.spot text{font-size:7px;font-weight:900;fill:#202c35;paint-order:stroke;stroke:#f4df88;stroke-width:.4}
.agent circle{fill:#3379a7;stroke:#fff;stroke-width:1.5}
.agent text{font-size:7px;font-weight:900;fill:#fff}
.display-page .right-panel{min-height:0;overflow:hidden;gap:6px;padding:8px}

.display-page .rank-heading{flex:none;padding:2px 8px}
.display-page .team-list{flex:1;min-height:0;overflow-y:auto;grid-auto-rows:minmax(0,1fr);gap:5px}
.display-page .team-card{min-height:0;padding:5px 8px;overflow:hidden}
.display-page .team-name{font-size:clamp(14px,1.35vw,20px)}
.display-page .rank{font-size:clamp(17px,1.7vw,25px);min-width:20px}
.display-page .team-score{font-size:clamp(10px,.95vw,13px);padding-left:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.display-page .score-board{flex:1;min-height:0;overflow-y:auto;width:100%}
@media(max-width:800px){.display-page .display-grid{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,.9fr)}.display-page .map-panel{min-height:0}.display-page .team-list{grid-template-columns:1fr 1fr}.display-page .shell{padding:10px}}
.clock-wrap{min-width:140px}
.clock-label{font-size:11px;font-weight:800;color:#865a42;letter-spacing:.04em;white-space:nowrap}
.clock-wrap .clock{line-height:1.05}
.display-page .score-board{display:flex;flex-direction:column;margin:0 auto;width:100%;height:100%;overflow:hidden}
.display-page .score-caption{flex:none}
.display-page #score-list{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;overflow-y:auto;padding-top:10px}
.display-page #score-list .score-row{flex:none;margin:2px 0;padding:4px 14px;min-height:38px}





.display-page .team-list{grid-auto-flow:column;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr))}
.display-page .choice-card .team-top{gap:6px}
.display-page .choice-card .team-name{font-size:clamp(16px,1.6vw,21px)}
.agent-types{display:flex;gap:4px;margin-top:4px}
.type-chip{display:grid;place-items:center;width:27px;height:27px;flex:none;border:1.5px solid #293843;border-radius:50%;background:var(--team-color);color:white;font-size:15px;font-weight:900;line-height:1;box-shadow:0 1px 2px #26364088}
.type-chip.supply{border-radius:5px;background:#f7f8f7;color:var(--team-color);border-color:var(--team-color)}
.type-chip.unknown{background:#eef0f1;color:#59666e;border-color:#8c989f}
.daily-score{font-size:13px;font-weight:800;padding-left:30px;white-space:nowrap}
.display-page .daily-card.rank-highlight{border-color:#d9854c;background:#f8eee2;box-shadow:0 0 0 1px #efc59e}
.agent-marker>circle:not(.action-ring),.agent-marker>rect{fill:var(--marker-color);stroke:#fff;stroke-width:2;paint-order:stroke}
.agent-marker>text{font-size:8px;font-weight:900;fill:white;paint-order:stroke;stroke:#26333d;stroke-width:.7}
.agent-marker .action-ring{fill:none;stroke:#fff;stroke-width:2.4;stroke-dasharray:2 2}
@media(max-width:800px){.display-page .team-list{grid-auto-flow:row;grid-template-rows:none;grid-auto-rows:minmax(64px,1fr)}.type-chip{width:23px;height:23px;font-size:12px}.daily-score{font-size:11px}}
.display-page .shell{position:relative}
.announcement{position:absolute;z-index:8;top:140px;right:20px;bottom:12px;left:20px;display:grid;place-items:center;background:#e3e8ebae;color:#20292f;font-size:clamp(48px,7vw,96px);font-weight:950;letter-spacing:.08em;text-shadow:0 3px 0 #fff,0 8px 30px #34434a80;pointer-events:none;animation:announcement-glide .65s cubic-bezier(.2,.75,.25,1) both}
@keyframes announcement-glide{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
.display-page .daily-card{animation:rank-glide .65s cubic-bezier(.2,.75,.25,1) both;animation-delay:var(--reveal-delay,0ms)}
.display-page .reveal-row{animation:score-drop .75s cubic-bezier(.2,.75,.25,1) both}
.display-page .reveal-row.score-settled{animation:none}
@keyframes rank-glide{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes score-drop{from{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:translateY(0)}}
.terrain{stroke:#263943;stroke-width:1.15;stroke-linejoin:round}
.terrain-0{fill:#a4bb91}.terrain-1{fill:#e8eaeb}.terrain-2{fill:#a97152}.terrain-3{fill:#86b8d0}
.terrain-mark{fill:none;stroke:#304550;stroke-width:.85;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.terrain-mark.hill{stroke:#694c3d}.terrain-mark.water{stroke:#4b6e7d;stroke-width:.65;opacity:.75}
.spot-pointer{fill:#759c43;stroke:#263943;stroke-width:1.1}
.spot-outline{fill:#eaeecd;stroke:#202e35;stroke-width:1.6}
.spot-pin{fill:#81a342;stroke:#202e35;stroke-width:1.4}
.spot-inner{fill:#f9ee9e;stroke:#b1822e;stroke-width:.9}
.spot-bowl{fill:none;stroke:#1c3037;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.agent-marker .marker-halo{fill:white;stroke:#263943;stroke-width:1.3}
.agent-marker .marker-tail{fill:var(--marker-color);stroke:#263943;stroke-width:1.4}
.agent-marker .marker-body{fill:var(--marker-color);stroke:#182d39;stroke-width:1.3}
.agent-marker>circle.marker-body,.agent-marker>rect.marker-body{fill:var(--marker-color);stroke:#182d39;stroke-width:1.3}
.agent-marker>text{font-size:8.5px;font-weight:950;fill:white;paint-order:stroke;stroke:#1b2a34;stroke-width:1.2}
.agent-marker .action-ring{fill:none;stroke:#db523d;stroke-width:2.5;stroke-dasharray:3 2}
.display-page .daily-card.has-arrived{animation:none}
.type-chip{position:relative;transform-style:preserve-3d;border:0;background:transparent;box-shadow:none;perspective:160px}
.type-chip .flip-face{position:absolute;inset:0;display:grid;place-items:center;border:1.5px solid #293843;border-radius:50%;background:var(--team-color);color:white;backface-visibility:hidden;box-shadow:0 1px 2px #26364088}
.type-chip.supply .flip-front{border-radius:5px;background:#f7f8f7;color:var(--team-color);border-color:var(--team-color)}
.type-chip.unknown .flip-front,.type-chip .flip-back{background:#eef0f1;color:#59666e;border-color:#8c989f}
.type-chip .flip-back{transform:rotateY(180deg)}
.display-page .shell{padding:8px 18px}
.display-page .stage-title{font-size:clamp(23px,2.6vw,40px);margin:1px 0 5px}
.display-page .statusline{margin-bottom:8px;gap:20px}
.display-page .clock{font-size:clamp(23px,2.7vw,39px)}
.display-page .day{font-size:clamp(21px,2.45vw,35px)}
.announcement{top:120px;background:transparent;text-shadow:0 2px 0 #fff,0 0 13px #fff,0 6px 22px #34434a99}
.type-chip.flipping{animation:agent-flip .95s cubic-bezier(.22,.7,.2,1) both;animation-delay:var(--flip-delay,0ms)}
@keyframes agent-flip{from{transform:rotateY(180deg)}to{transform:rotateY(0)}}
.agent-marker.flipping{transform-box:fill-box;transform-origin:center;animation:marker-flip .95s cubic-bezier(.22,.7,.2,1) both}
@keyframes marker-flip{from{opacity:.3;scale:.25 1}50%{opacity:.65;scale:.02 1}to{opacity:1;scale:1 1}}
.display-page .daily-score{font-size:clamp(14px,1.25vw,18px);padding-left:30px;line-height:1.2}
.display-page .daily-card.rank-highlight{border-color:#b9aa66;background:#f7f5e7;box-shadow:0 0 0 1px #e1d6a2}
.display-page #score-list{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(var(--score-count),minmax(0,1fr));gap:4px;padding-top:7px;overflow:hidden}
.display-page #score-list .score-row{width:100%;height:100%;margin:0;min-height:0}
.display-page .reveal-row{animation:score-drop .85s cubic-bezier(.2,.75,.25,1) both}
@keyframes score-drop{from{opacity:0;transform:translateY(-42px)}to{opacity:1;transform:translateY(0)}}
.announcement.countdown{font-size:clamp(110px,17vw,230px);font-variant-numeric:tabular-nums}
.announcement{inset:0}
.rank-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px}
.rank-toolbar .rank-heading{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.page-nav{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:12px;font-weight:800}
.page-nav button{display:grid;place-items:center;width:26px;height:26px;padding:0;border:1px solid #b9c4c9;border-radius:5px;background:#f5f7f8;color:#273640;font-size:22px;line-height:1}
.page-nav button:disabled{opacity:.35;cursor:default}
.score-page-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;height:40px;padding:0 12px;color:#f8dd82;font-size:16px;font-weight:900;letter-spacing:.08em}
.score-page-bar strong{font-size:20px;letter-spacing:.14em}
.score-page-bar .page-nav button{background:#202f67;color:#f9dd82;border-color:#8a79a8}
.grand-finale{position:relative;background:#080d27;color:#fff}
.grand-finale::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 10% 10%,#2650a077,transparent 43%),radial-gradient(ellipse at 90% 85%,#9b245777,transparent 44%),repeating-linear-gradient(90deg,transparent 0 30px,#d8c56408 31px 32px);opacity:.9}
.grand-finale .shell{position:relative;z-index:1}
.grand-finale .brand,.grand-finale .nav a.active{color:#f4d46a}
.grand-finale .progress:before{background:#9a86b8}
.grand-finale .diamond{background:#242d5e;border-color:#ada4d1}
.grand-finale .diamond.done{background:#e6b944;border-color:#ffeaa1}
.grand-finale .score-board{max-width:1160px}
.grand-finale .score-caption{color:#bdc7e8}
.grand-finale #score-list .score-row{color:#f4f6ff;background:linear-gradient(90deg,#1e2d68f5,#121a45f5);border:1px solid #707cac;border-left:5px solid var(--team-color);box-shadow:inset 0 0 22px #7c86bb21,0 1px 8px #020617b0}
.grand-finale #score-list .score-row.rank-1{background:linear-gradient(90deg,#977329,#30285a);border-color:#ffe18a;box-shadow:0 0 18px #ffd45d99,inset 0 0 24px #fff2ae33}
.grand-finale #score-list .score-row.rank-2{background:linear-gradient(90deg,#606b8d,#222951);border-color:#d7e3ff}
.grand-finale #score-list .score-row.rank-3{background:linear-gradient(90deg,#775347,#232044);border-color:#ebb495}
.grand-finale #score-list .score-row .name{font-size:clamp(15px,1.8vw,23px)}
.grand-finale #score-list .score-row .value{font-size:clamp(15px,1.85vw,24px);font-variant-numeric:tabular-nums}
.grand-finale #score-list .score-row>span:first-child{font-size:clamp(20px,2.2vw,30px);color:#ffe4a1}
.grand-finale .announcement{color:#fff0ae;text-shadow:0 0 10px #ffd54a,0 0 30px #ffa435,0 4px 12px #000}
.grand-finale{background:#101b3d}
.grand-finale::before{display:none}
.grand-finale #score-list .score-row{background:#23315d;box-shadow:none}
.grand-finale #score-list .score-row.rank-1{background:#80662f;box-shadow:0 0 12px #f9d47788}
.grand-finale #score-list .score-row.rank-2{background:#515e80}
.grand-finale #score-list .score-row.rank-3{background:#684b51}
.daily-summary{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}
.summary-toolbar{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;font-size:21px;font-weight:900}
.summary-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(var(--summary-columns,2),minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:10px}
.summary-card{min-height:0;display:flex;flex-direction:column;padding:10px 12px;background:#f5f6f6;border:1px solid #c6cdd1;border-radius:9px;box-shadow:0 3px 10px #52606b12}
.summary-card h2{flex:none;margin:0 0 6px;padding:2px 4px 7px;border-bottom:2px solid #cf713b;font-size:clamp(17px,2vw,25px)}
.summary-rows{flex:1;min-height:0;display:grid;grid-template-rows:repeat(10,minmax(0,1fr));gap:3px}
.summary-row{display:grid;grid-template-columns:32px 11px minmax(0,1fr) 62px 62px;gap:6px;align-items:center;min-height:0;padding:1px 6px;border:1px solid #d9dee0;border-radius:4px;background:#fff;font-size:clamp(15px,1.5vw,19px);font-variant-numeric:tabular-nums}
.summary-grid.many-days{gap:5px}
.summary-grid.many-days .summary-card{padding:5px;min-width:0}
.summary-grid.many-days .summary-card h2{font-size:clamp(14px,1.3vw,19px);margin-bottom:3px;padding-bottom:4px}
.summary-grid.many-days .summary-row{font-size:clamp(11px,.95vw,15px);grid-template-columns:23px 8px minmax(0,1fr) 42px 42px;gap:4px;padding:1px 5px}
.summary-grid .summary-row span{white-space:nowrap}
.summary-row b{font-size:1.15em}
.summary-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.summary-row span{text-align:right;font-weight:800}
.summary-empty{padding:15px;color:#6d767b}
@media(max-width:800px){.summary-grid{grid-template-columns:repeat(min(2,var(--summary-columns,2)),minmax(0,1fr))}.summary-card{padding:6px}.summary-row{grid-template-columns:24px 8px minmax(0,1fr) 44px 44px;gap:3px;font-size:11px}}
.agent-marker .fuel-band{fill:#d9432f;stroke:#1f2e37;stroke-width:.6}
.agent-marker .fuel-ticks{fill:none;stroke:#ffdf88;stroke-width:.65;stroke-linecap:round}
.agent-marker>text{font-size:10.5px;stroke-width:1.3}
.display-page .daily-score{font-size:clamp(16px,1.45vw,20px)}
.display-page .team-name{font-size:clamp(16px,1.5vw,22px)}
.terrain-mark.water{stroke:#34566a;stroke-width:1.2;opacity:.9}
.agent-marker .fuel-disc{fill:#dc553e;stroke:#fff;stroke-width:1.4}
.agent-marker .fuel-gauge{fill:#263942;stroke:#f4f2df;stroke-width:.55}
.agent-marker .fuel-ticks{fill:none;stroke:#f4f2df;stroke-width:.9;stroke-linecap:round}
.announcement::before{content:"";position:absolute;left:0;right:0;top:50%;height:112px;transform:translateY(-50%);background:#ffffffbd;z-index:0}
.announcement>span{position:relative;z-index:1}
.announcement.countdown::before{height:180px}
.grand-finale{background:#e9edf0;color:#202b33}
.grand-finale .brand,.grand-finale .nav a.active{color:#c76832}
.grand-finale .progress:before{background:#afb6bb}
.grand-finale .diamond{background:#edf0f1;border-color:#8c989e}
.grand-finale .diamond.done{background:#dd793a;border-color:#fff}
.grand-finale .score-page-bar{color:#38434a}
.grand-finale .score-page-bar .page-nav button{background:#f5f7f8;color:#273640;border-color:#b9c4c9}
.grand-finale .score-caption{color:#5f6a70}
.grand-finale #score-list .score-row{color:#202b33;background:#f8f9f9;border:1px solid #cbd1d4;border-left:5px solid var(--team-color);box-shadow:none}
.grand-finale #score-list .score-row.rank-1{background:#f3e8c2;border-color:#d4ae49;box-shadow:0 0 10px #d4ae4950}
.grand-finale #score-list .score-row.rank-2{background:#e4e7eb;border-color:#b5c0ce}
.grand-finale #score-list .score-row.rank-3{background:#ead8cf;border-color:#c99e88}
.grand-finale #score-list .score-row>span:first-child{color:#604b23}
.grand-finale .announcement{color:#202b33;text-shadow:0 2px 0 #fff,0 6px 18px #41525a88}
@keyframes summary-day-glide{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:translateX(0)}}
.summary-rows.revealed{animation:summary-day-glide .8s cubic-bezier(.2,.75,.25,1) both}
.display-page .team-card.map-active{border-color:#df795e;background:#fff6f2;box-shadow:0 0 0 2px #ed8e70,0 0 15px #e65f4590}
.agent-marker .fuel-hatching{fill:none;stroke:var(--marker-color);stroke-width:.85;opacity:.78}
.agent-marker>text{font-size:7px;stroke-width:.8}
.display-page .daily-card.rank-highlight{border-color:#cdd1d2;background:#f8f8f7;box-shadow:none}
.grand-finale #score-list .score-row.rank-1{box-shadow:none}
.grand-finale .statusline{display:none}
.score-row .value small{font-size:1.1em;color:#a7633d;vertical-align:-.04em}
.terrain-1{fill:#c2cbd0}
.terrain-2{fill:#b67e62}
.terrain-3{fill:#8ab1c4}
.display-page .shell{width:100%;max-width:min(100vw,205dvh)}
.display-page .display-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.display-page .display-grid.map-unset{grid-template-columns:minmax(0,1fr)}
.display-page .display-grid.map-unset .map-panel{display:none}
.display-page .choice-card .team-name{font-size:clamp(16px,1.45vw,28px)}
.display-page .daily-card .team-name{font-size:clamp(16px,1.4vw,27px)}
.display-page .type-chip{width:clamp(25px,2vw,38px);height:clamp(25px,2vw,38px);font-size:clamp(14px,1.3vw,23px)}
.display-page .score-caption,.display-page .score-row{grid-template-columns:minmax(32px,.22fr) minmax(130px,1.3fr) repeat(3,minmax(78px,.75fr)) minmax(95px,.7fr)}
.display-page .team-list{grid-template-rows:repeat(5,minmax(0,clamp(68px,12vh,132px)));align-content:start}
button:disabled{opacity:.55;cursor:default}
.display-page .progress{--match-progress:0%;min-height:18px}
.display-page .progress::before{left:0;right:0;height:3px;background:#aeb7bc;z-index:0}
.display-page .progress::after{content:"";position:absolute;left:0;top:50%;width:var(--match-progress);height:3px;transform:translateY(-50%);background:#d8793e;z-index:1;transition:width .28s linear}
.display-page .progress .diamond{position:absolute;top:50%;margin-left:-7px;margin-top:-7px;z-index:2}
.display-page .progress-start,.display-page .progress-head{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:#d8793e;transform:translate(-50%,-50%);z-index:3}
.display-page .progress-start{left:0}
.display-page .progress-head{left:var(--match-progress);transition:left .28s linear}
@media(max-width:900px){.summary-grid{grid-template-columns:repeat(var(--summary-columns,3),minmax(0,1fr));gap:5px}.summary-card{padding:6px}.summary-row{grid-template-columns:22px 7px minmax(0,1fr) 36px 36px;gap:2px;padding:1px 3px;font-size:clamp(10px,1.2vw,14px)}.summary-card h2{font-size:clamp(14px,1.7vw,20px)}}
@media(max-width:800px){.display-page .display-grid{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,.9fr)}.display-page .score-caption,.display-page .score-row{grid-template-columns:30px minmax(100px,1.3fr) repeat(3,minmax(65px,.75fr)) minmax(80px,.7fr)}}
.announcement{font-size:clamp(34px,4.5vw,58px)}
.announcement.countdown{font-size:clamp(72px,10vw,130px)}
.display-page .team-list.daily-layout{grid-auto-flow:column;grid-template-rows:repeat(5,minmax(0,clamp(68px,12vh,132px)))}
/* Keep live controls visible; long token lists scroll inside their own panel. */
.control-page{height:100dvh;overflow:hidden}
.control-page .form-shell{height:100dvh;max-width:none;margin:0;padding:10px 16px;display:flex;flex-direction:column;gap:8px;min-height:0}
.control-page .page-heading{font-size:23px;margin:0}
.control-page .card{padding:10px 14px;margin:0;min-height:0}
.control-page .card h2{font-size:16px;margin:0 0 8px}
.control-page .field{font-size:11px;gap:3px}
.control-page .field input,.control-page .field select{padding:6px}
.control-page .actions{margin-top:8px;gap:5px}
.control-page button{padding:7px 10px;font-size:12px}
.control-page .message{min-height:0;margin:4px 0 0;font-size:12px}
.control-page #admin-content{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;gap:8px}
.control-page .settings-card{overflow:hidden}
.control-page .settings-card .fields{grid-template-columns:minmax(0,2fr) minmax(180px,1fr);gap:7px}
.control-page .tokens-card{min-height:0;display:flex;flex-direction:column;overflow:hidden}
.control-page .tokens-card .table-wrap{flex:1;min-height:0;overflow:auto}
.control-page .tokens-card td,.control-page .tokens-card th{padding:5px 8px;font-size:12px}
.control-page .login-card{display:flex;align-items:end;gap:8px}
.control-page .login-card .field{min-width:240px}
.control-page .login-card .message{align-self:center}
.control-page .map-card{display:flex;align-items:center;gap:10px}
.control-page .map-card h2{margin:0}
@keyframes daily-from-top{from{opacity:0;transform:translateY(-42px)}to{opacity:1;transform:translateY(0)}}
.display-page .daily-card{animation:daily-from-top .75s cubic-bezier(.2,.75,.25,1) both;animation-delay:var(--reveal-delay,0ms)}
.highlight-control{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-weight:800;color:#27764a}.highlight-control input{width:16px;height:16px;accent-color:#27ad67}
.display-page .team-card.school-highlight,.display-page .summary-row.school-highlight,.display-page #score-list .score-row.school-highlight{background:#dbf8e7;border:2px solid #29ba70;box-shadow:0 0 0 2px #51db9580,0 0 20px #20cf7770;color:#164b31}
.control-page .team-identity{display:flex;align-items:center;gap:10px;min-width:0}.control-page .team-identity-text{min-width:0;overflow:hidden;text-overflow:ellipsis}.control-page .team-identity .highlight-control{flex:none}.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:30%}.control-page .tokens-card th:nth-child(2),.control-page .tokens-card td:nth-child(2){width:13%}.control-page .tokens-card th:nth-child(3),.control-page .tokens-card td:nth-child(3){width:24%}.control-page .tokens-card th:nth-child(4),.control-page .tokens-card td:nth-child(4){width:33%}
.control-page .team-edit-actions{display:flex;gap:4px}.control-page .team-edit-actions button{padding:3px 6px;font-size:10px;white-space:nowrap}
.display-page .map-panel{position:relative}.display-page .prestart-map-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:4;padding:8px 22px;border-radius:999px;background:#21313bdf;color:#fff;font-size:clamp(20px,2.4vw,32px);font-weight:900;letter-spacing:.08em;white-space:nowrap;box-shadow:0 3px 12px #17232a66}
.announcement.leaving{animation:announcement-leave .8s ease-in both}@keyframes announcement-leave{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-28px)}}
.control-page .tokens-card table{table-layout:fixed;min-width:680px}
.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:38%}
.control-page .tokens-card th:nth-child(2),.control-page .tokens-card td:nth-child(2),.control-page .tokens-card th:nth-child(3),.control-page .tokens-card td:nth-child(3){width:12%}
.control-page .tokens-card th:nth-child(4),.control-page .tokens-card td:nth-child(4){width:38%}
.control-page button.danger{background:#9a493e}
.control-page #admin-content{grid-template-rows:auto minmax(0,1fr)}
.control-page .settings-card .actions{align-items:center}
.control-page .admission-toggle,.control-page .map-picker{font-size:12px;font-weight:700;display:flex;align-items:center;gap:5px;white-space:nowrap}
.control-page .map-picker input{width:160px;min-width:0;font-size:11px}
.control-page #admission-count{margin-left:auto;font-size:12px;font-weight:800;white-space:nowrap}
.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:30%}
.control-page .tokens-card th:nth-child(2),.control-page .tokens-card td:nth-child(2){width:13%}
.control-page .tokens-card th:nth-child(3),.control-page .tokens-card td:nth-child(3){width:24%}
.control-page .tokens-card th:nth-child(4),.control-page .tokens-card td:nth-child(4){width:33%}
.control-page .tokens-card td:nth-child(3) button{margin:2px;padding:5px 7px}
.control-page .tokens-card table{min-width:1080px}
.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:24%}
.control-page .tokens-card th:nth-child(2),.control-page .tokens-card td:nth-child(2){width:8%}
.control-page .tokens-card th:nth-child(3),.control-page .tokens-card td:nth-child(3){width:10%}
.control-page .tokens-card th:nth-child(4),.control-page .tokens-card td:nth-child(4){width:12%}
.control-page .tokens-card th:nth-child(5),.control-page .tokens-card td:nth-child(5){width:18%}
.control-page .tokens-card th:nth-child(6),.control-page .tokens-card td:nth-child(6){width:10%}
.control-page .tokens-card th:nth-child(7),.control-page .tokens-card td:nth-child(7){width:7%}
.control-page .tokens-card th:nth-child(8),.control-page .tokens-card td:nth-child(8){width:11%}
.control-page .admission-choice{max-width:100%;padding:5px;border:1px solid #b9c3c9;border-radius:5px;background:white;font-size:12px}
.control-page .tokens-card table{min-width:1240px;table-layout:fixed}
.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:19%}
.control-page .tokens-card th:nth-child(2),.control-page .tokens-card td:nth-child(2){width:12%}
.control-page .tokens-card th:nth-child(3),.control-page .tokens-card td:nth-child(3){width:11%}
.control-page .tokens-card th:nth-child(4),.control-page .tokens-card td:nth-child(4){width:15%}
.control-page .tokens-card th:nth-child(5),.control-page .tokens-card td:nth-child(5){width:20%}
.control-page .tokens-card th:nth-child(6),.control-page .tokens-card td:nth-child(6){width:10%}
.control-page .tokens-card th:nth-child(7),.control-page .tokens-card td:nth-child(7){width:13%}
.control-page .tokens-card th:nth-child(1),.control-page .tokens-card td:nth-child(1){width:17%}
.control-page .tokens-card th:nth-child(5),.control-page .tokens-card td:nth-child(5){width:18%}
.control-page .tokens-card th:nth-child(7),.control-page .tokens-card td:nth-child(7){width:10%}
.control-page .tokens-card th:nth-child(8),.control-page .tokens-card td:nth-child(8){width:10%}
.control-page .connection-light{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;background:#aeb8bd;box-shadow:inset 0 0 0 1px #718087;vertical-align:middle}
.control-page .connection-light.recent{background:#29bf63;box-shadow:0 0 0 2px #a5edbe,0 0 9px #21b45b}
.control-page .connection-label{color:#68747a;font-weight:700;white-space:nowrap}
.control-page .connection-label.connected{color:#158342}
.control-page .connected-time{white-space:nowrap;font-variant-numeric:tabular-nums}
.control-page .control-result strong{margin-right:5px;font-size:14px}
.control-page .control-result small{display:block;color:#53636b;font-size:11px;white-space:nowrap}
.control-page .token-actions{display:flex;gap:4px}
.display-page .team-top{min-width:0}
.display-page .team-card{position:relative}
.display-page .team-card .dot{width:clamp(14px,1.15vw,18px);height:clamp(14px,1.15vw,18px)}
.display-page .team-identity-line{display:block;flex:1;min-width:0;overflow:hidden;white-space:nowrap}
.display-page .team-identity-text{display:inline-block;width:max-content;max-width:none;white-space:nowrap;font-size:clamp(14px,1.35vw,23px);font-weight:900;transform-origin:left center}
.display-page .team-top .badge{position:absolute;right:7px;bottom:7px}
.display-page .daily-score{padding-right:70px}
.display-page .choice-card .agent-types{padding-right:70px}

@media (max-width:900px), (max-height:620px){
  .display-page{height:auto;min-height:100dvh;overflow:auto}
  .display-page .shell{height:auto;min-height:100dvh;max-width:none;padding:10px 12px}
  .display-page .display-grid{flex:none;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;overflow:visible}
  .display-page .map-panel{min-height:0;min-width:0;padding:8px}
  .display-page .map-grid{height:auto;min-height:0;max-height:70dvh;aspect-ratio:1}
  .display-page .map-grid svg{height:100%;width:100%}
  .display-page .right-panel{min-height:0;overflow:visible}
  .display-page .team-list,.display-page .team-list.daily-layout{height:auto;min-height:0;overflow:visible;grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:minmax(82px,auto);align-content:start}
  .display-page .team-card{min-height:82px}
  .display-page .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto}
  .display-page .summary-card{min-height:310px}
  .display-page .summary-rows{grid-template-rows:repeat(10,minmax(26px,auto))}
  .display-page .score-board{height:auto;min-height:0;overflow:visible}
  .display-page #score-list{display:flex;flex-direction:column;overflow:visible}
  .display-page #score-list .score-row{height:auto;min-height:68px}
  .display-page .announcement{position:fixed;inset:0}
}
@media (max-width:550px){
  .display-page .stage-title{font-size:20px}
  .display-page .statusline{gap:8px}
  .display-page .clock-wrap{min-width:72px}
  .display-page .clock{font-size:22px}
  .display-page .day{font-size:17px}
  .display-page .team-list,.display-page .team-list.daily-layout{grid-template-columns:minmax(0,1fr)}
  .display-page .summary-grid{grid-template-columns:minmax(0,1fr)}
  .display-page .score-caption{display:none}
  .display-page #score-list .score-row{display:grid;grid-template-columns:28px repeat(4,minmax(0,1fr));grid-template-rows:auto auto;gap:4px;padding:8px}
  .display-page #score-list .score-row>span:first-child{grid-column:1;grid-row:1}
  .display-page #score-list .score-row .name{grid-column:2/-1;grid-row:1;min-width:0}
  .display-page #score-list .score-row .value{grid-row:2;font-size:12px;white-space:nowrap}
  .display-page #score-list .score-row .value:nth-last-child(-n+2){display:block}
}
@media (max-width:1100px), (max-height:650px){
  .control-page{height:auto;min-height:100dvh;overflow:auto}
  .control-page .form-shell{height:auto;min-height:100dvh}
  .control-page #admin-content{display:flex;flex-direction:column;min-height:0}
  .control-page .settings-card{overflow:visible}
  .control-page .tokens-card{min-height:320px;overflow:visible}
  .control-page .tokens-card .table-wrap{max-height:60dvh;overflow:auto}
}
@media (max-width:600px){
  .control-page .login-card{align-items:stretch;flex-wrap:wrap}
  .control-page .login-card .field{min-width:0;width:100%}
  .control-page .settings-card .fields{grid-template-columns:minmax(0,1fr)}
}
.control-page .token-actions button{flex:1;min-width:0;padding:5px 4px}
#copy-issued-token{margin-top:10px}
.display-page .stepbar{flex:none;display:flex;align-items:center;gap:14px;height:40px;padding:9px 12px;font-weight:800;text-align:right}
.display-page .stepbar:before{display:none}
.display-page .step-track{display:block;flex:1;height:3px;background:#aeb6ba;border-radius:4px;overflow:hidden}
.display-page .step-track i{display:block;width:0;height:100%;background:#cf713b;transition:width .35s ease}
.display-page #step-text{white-space:nowrap;font-size:13px}
.tokens-page .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.tokens-page .token-hint{margin:8px 0;color:#53636b;font-size:13px;line-height:1.5}
.tokens-page #profile-fields{margin-top:16px}
.tokens-page #profile-token{max-width:680px}
@media(max-width:600px){.tokens-page .fields{grid-template-columns:minmax(0,1fr)}}
