:root{color-scheme:dark;--bg:#070c17;--panel:#0c1728;--line:#263a4e;--green:#8bffb1;--red:#ff5b74;--text:#e6f5f3;--muted:#92a7b3}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 system-ui,-apple-system,Segoe UI,sans-serif}.gridbg{position:fixed;inset:0;pointer-events:none;background:linear-gradient(transparent 97%,#152c3538 100%),linear-gradient(90deg,transparent 97%,#152c3538 100%);background-size:38px 38px;mask-image:linear-gradient(#0009,transparent 95%)}.shell{position:relative;max-width:940px;min-height:100vh;margin:auto;padding:0 22px;display:flex;flex-direction:column}header{padding:22px 0;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);align-items:center}.brand{display:inline-flex;align-items:center;gap:9px;font-weight:900;letter-spacing:.09em;color:var(--text);text-decoration:none}.brand span{color:var(--green)}.topright,.eyebrow,.hint,.tag,.progress,small{font:700 12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em}.topright{color:var(--muted)}.eyebrow{color:var(--red)}.pulse{animation:blink 1.8s infinite}@keyframes blink{50%{opacity:.55}}.hero{margin:auto;text-align:center;padding:55px 0 65px;width:100%;max-width:740px}.bigicon{font-size:64px;color:var(--red);line-height:1.4}h1{font-size:clamp(40px,9vw,80px);line-height:1.03;letter-spacing:-.055em;margin:16px 0 22px;font-weight:950}h1 em{font-style:normal;color:var(--green)}h2{font-size:clamp(22px,4vw,34px);line-height:1.25}.lead{font-size:clamp(18px,3vw,23px);max-width:590px;margin:18px auto}.sub{color:var(--muted);max-width:620px;margin:20px auto}.terminal{background:#0b1521;border:1px solid var(--line);border-radius:14px;overflow:hidden;text-align:left;max-width:600px;margin:32px auto;box-shadow:0 15px 55px #0005}.termbar{padding:9px 15px;border-bottom:1px solid var(--line);background:#142337;color:#b6cbd2;font:12px monospace}.termbar span{color:var(--red);margin-right:18px}.terminal p{font:14px/1.8 monospace;margin:0;padding:3px 20px;overflow-wrap:anywhere}.terminal p:first-of-type{padding-top:14px}.terminal p:last-child{padding-bottom:16px}.terminal b{color:var(--green)}.terminal p span{color:#f6e7a3}.start{display:flex;flex-direction:column;max-width:430px;margin:28px auto;gap:10px;text-align:left}.start label{font:700 12px monospace;color:var(--green);letter-spacing:.08em}.start label small{color:var(--muted)}input{background:#0d1b2b;border:1px solid #3b5364;border-radius:9px;padding:16px;color:white;font-size:16px;width:100%}input:focus{outline:2px solid var(--green)}button,.cta{background:var(--green);color:#06120e;border:0;border-radius:9px;padding:16px 20px;font:900 14px monospace;letter-spacing:.035em;cursor:pointer;text-decoration:none;display:inline-block;text-align:center}button:hover,.cta:hover{filter:brightness(1.12)}.hint{color:var(--muted);font-weight:400;text-align:center}.hint a,footer a{color:var(--green)}.panel{width:100%;margin:55px auto 80px;padding:32px;background:#0c1728e8;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 80px #0005}.panel h1{font-size:clamp(38px,7vw,64px)}.progress{display:flex;justify-content:space-between;color:var(--muted);margin:25px 0 10px}.bar{height:8px;background:#203445;border-radius:8px;overflow:hidden}.bar i{display:block;background:var(--green);height:100%;transition:width .3s}.tag{display:inline-block;margin-top:36px;color:var(--green);border:1px solid #4d8a73;border-radius:5px;padding:5px 10px}.options{display:grid;gap:12px;margin-top:32px}.options button{background:#122237;border:1px solid #37516a;color:var(--text);text-align:left;display:flex;align-items:center;gap:16px;font:500 16px/1.4 system-ui;letter-spacing:0}.options button:hover{background:#19384a;border-color:var(--green)}.letter{font:800 14px monospace;color:var(--green);border:1px solid #3a5b5b;border-radius:6px;min-width:34px;height:34px;display:grid;place-items:center}.arrow{margin-left:auto;color:var(--green)}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;margin:25px 0 35px;text-align:left}th{color:var(--green);font:700 12px monospace}td,th{padding:13px 10px;border-bottom:1px solid var(--line)}td{overflow-wrap:anywhere}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:24px 0}.metrics>div{min-width:0;padding:14px 12px;background:#122438;border:1px solid var(--line);border-radius:12px}.metrics small{color:var(--muted);display:block;font-size:10px;letter-spacing:.04em}.metrics strong{display:block;font-size:clamp(17px,2.2vw,26px);color:var(--green);white-space:nowrap}.secondary{background:#26384b;color:white}.error{color:var(--red)}footer{margin-top:auto;border-top:1px solid var(--line);padding:18px 0 28px;display:flex;justify-content:space-between;gap:16px;font-size:12px;color:var(--muted)}@media(max-width:600px){.topright{display:none}.hero{padding:35px 0 50px}.panel{padding:22px 16px;margin:28px auto 55px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.options button{font-size:15px}footer{flex-direction:column}.terminal p{font-size:12px}}
.timer-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:26px 0 8px;color:var(--green);font:800 13px monospace}.timer-head strong{font-size:27px;color:var(--text)}.timer-track{height:12px;border-radius:12px;background:#263a4e;overflow:hidden}.timer-track>div{height:100%;background:var(--green)}.timer-track>div.urgent{background:var(--red)}

.answer-progress{display:flex;gap:3px;height:10px;width:100%;margin:0 0 4px}.answer-segment{flex:1;min-width:0;background:#203445;border-radius:2px}.answer-segment.correct{background:var(--green)}.answer-segment.wrong{background:var(--red)}.answer-segment.current{background:#f0c674}

@media(max-width:360px){.metrics{grid-template-columns:1fr}}

/* Mission Control: preserve readable columns rather than breaking IPs and device labels. */
.visit-description{color:var(--muted);font-size:13px;margin:0 0 10px}
.visit-tablewrap{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
.visit-table{min-width:1080px;width:100%;table-layout:fixed;margin-top:14px}
.visit-table th,.visit-table td{padding:15px 10px;vertical-align:middle;overflow-wrap:normal;word-break:normal}
.visit-table th{white-space:nowrap;font-size:11px}
.visit-table th:nth-child(1){width:155px}
.visit-table th:nth-child(2){width:120px}
.visit-table th:nth-child(3){width:155px}
.visit-table th:nth-child(4){width:100px}
.visit-table th:nth-child(5){width:240px}
.visit-table th:nth-child(6){width:210px}
.visit-table .visit-time,.visit-table .visit-ip{white-space:nowrap;font-variant-numeric:tabular-nums}
.visit-table .visit-device strong,.visit-table .visit-device span{display:block;white-space:nowrap}
.visit-table .visit-device span{color:var(--muted);font-size:12px;margin-top:4px}
.visit-table tbody tr:hover{background:#14283b}

/* Game device details in admin completion history. */
.tablewrap td.visit-device{min-width:170px;overflow-wrap:normal}
.tablewrap td.visit-device strong,.tablewrap td.visit-device span{display:block;white-space:nowrap}
.tablewrap td.visit-device span{color:var(--muted);font-size:12px;margin-top:4px}

/* Leaderboard view navigation */
.leaderboard-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 14px}
.leaderboard-tabs a{display:inline-block;padding:11px 18px;border:1px solid var(--line);border-radius:9px;color:var(--muted);text-decoration:none;font:800 13px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.04em}
.leaderboard-tabs a:hover,.leaderboard-tabs a:focus-visible{border-color:var(--green);color:var(--green)}
.leaderboard-tabs a.active{background:var(--green);border-color:var(--green);color:#06120e}

/* Wider, evenly sized leaderboard tabs below the description. */
.leaderboard-tabs{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:22px 0 30px}
.leaderboard-tabs a{width:100%;text-align:center;padding:15px 20px}
@media(max-width:480px){.leaderboard-tabs{gap:8px}.leaderboard-tabs a{padding:13px 8px;font-size:11px}}

/* Mission Control section tabs */
.admin-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;margin:24px 0 18px}
.admin-tab{min-width:0;width:100%;background:#122438;color:var(--muted);border:1px solid var(--line);border-radius:9px;padding:12px 10px;font:800 12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.02em;white-space:normal;text-align:center}
.admin-tab:hover{border-color:var(--green);color:var(--green)}
.admin-tab[aria-selected="true"]{background:var(--green);color:#06120e;border-color:var(--green)}
.admin-tab:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.admin-tab-panel[hidden]{display:none}
.admin-tab-panel{min-height:180px}
.admin-tab-panel h2{margin-top:14px}

/* Mission Control entry-point links */
.entrypoint-url{color:var(--green);overflow-wrap:anywhere;word-break:break-all}
.entrypoint-label{color:var(--muted);font-size:12px;margin-top:3px}
.entrypoint-copy{padding:9px 13px;font-size:12px;white-space:nowrap}

@media(max-width:700px){.admin-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:380px){.admin-tabs{grid-template-columns:1fr}}

/* Readable leaderboard cards on narrow devices without horizontal scrolling. */
@media(max-width:600px){
 .leaderboard-tablewrap{overflow:visible}
 .leaderboard-table{display:block;width:100%;margin:8px 0 32px}
 .leaderboard-table thead{display:none}
 .leaderboard-table tbody{display:grid;gap:12px}
 .leaderboard-table tbody tr:not(.lb-empty){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;padding:16px;background:#122438;border:1px solid var(--line);border-radius:12px}
 .leaderboard-table td{display:block;min-width:0;padding:0;border:0;overflow-wrap:anywhere}
 .leaderboard-table .lb-rank{grid-column:1;color:var(--green);font:800 12px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}
 .leaderboard-table .lb-callsign{grid-column:1 / -1;font-size:20px;font-weight:750;line-height:1.25;overflow-wrap:anywhere}
 .leaderboard-table .lb-stat{font-size:17px;font-variant-numeric:tabular-nums;line-height:1.35}
 .leaderboard-table .lb-stat::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--muted);font:700 10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em}
 .leaderboard-table .lb-played{grid-column:1 / -1;color:var(--muted);font-size:14px}
 .leaderboard-table .lb-empty{display:block;padding:16px;border:1px solid var(--line);border-radius:12px}
 .leaderboard-table .lb-empty td{display:block}
 .leaderboard-tabs{margin-bottom:20px}
}

/* Mission Control mobile layout: stacked results instead of wide tables. */
@media(max-width:700px){
 .mission-control{min-width:0}
 .mission-control h1{font-size:clamp(34px,9vw,48px);overflow-wrap:anywhere}
 .mission-control .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mission-control .metrics strong{font-size:clamp(16px,4.4vw,24px);white-space:normal;overflow-wrap:anywhere}
 .mission-control .admin-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .mission-control .admin-tab{min-height:52px;padding:10px 7px;font-size:10px;line-height:1.4}
 .mission-control .admin-tab-panel{min-width:0}
 .mission-control .admin-tab-panel h2{font-size:clamp(21px,6vw,28px);overflow-wrap:anywhere}
 .mission-control .tablewrap,.mission-control .visit-tablewrap{overflow:visible;max-width:100%}
 .mission-control table,.mission-control .visit-table{display:block;min-width:0;width:100%;table-layout:auto;margin:16px 0 28px}
 .mission-control table thead{display:none}
 .mission-control table tbody{display:grid;gap:12px}
 .mission-control table tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#122438}
 .mission-control table td,.mission-control .visit-table td{display:block;min-width:0;width:auto;padding:0;border:0;white-space:normal;overflow-wrap:anywhere;word-break:normal;font-size:14px;line-height:1.45}
 .mission-control table td::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--green);font:700 10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.05em}
 .mission-control table td[data-label="CALLSIGN"],.mission-control table td[data-label="ENTRY POINT"],.mission-control table td[data-label="LINK"],.mission-control table td[data-label="DEVICE / BROWSER / OS"]{grid-column:1 / -1}
 .mission-control table td[data-label="CALLSIGN"]{font-size:18px;font-weight:750}
 .mission-control .visit-table .visit-time,.mission-control .visit-table .visit-ip,.mission-control .visit-table .visit-device strong,.mission-control .visit-table .visit-device span,.mission-control .tablewrap td.visit-device strong,.mission-control .tablewrap td.visit-device span{white-space:normal;overflow-wrap:anywhere}
 .mission-control .tablewrap td.visit-device{min-width:0}
 .mission-control .entrypoint-url{display:block;overflow-wrap:anywhere}
 .mission-control .entrypoint-copy{width:100%;min-height:42px}
 .mission-control table td[data-label="ACTION"]{grid-column:1 / -1}
 .mission-control #panel-questions a.secondary{display:block;max-width:100%;padding:14px 12px;text-align:center;overflow-wrap:anywhere}
 .mission-control .admin-tab-panel p{overflow-wrap:anywhere}
}
@media(max-width:380px){
 .mission-control .admin-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mission-control table tbody tr{gap:10px}
}

/* Make the leaderboard a clear secondary action on the landing screen. */
.leaderboard-cta{display:block;width:100%;padding:15px 18px;border:1px solid var(--green);border-radius:9px;color:var(--green);background:#112c2a;text-align:center;text-decoration:none;font:900 14px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.035em;transition:background .15s,border-color .15s}
.leaderboard-cta:hover{background:#19423a}
.leaderboard-cta:focus-visible{outline:2px solid var(--green);outline-offset:3px}

/* Highlight the signed-in player's true rank, including the extra row after top 20. */
.leaderboard-table tr.lb-own{background:#173b34;box-shadow:inset 3px 0 0 var(--green)}
.leaderboard-table tr.lb-own td{border-bottom-color:#3e8065}
.leaderboard-table .lb-you,.leaderboard-table .lb-outside-note{display:inline-block;margin-left:9px;padding:2px 7px;border:1px solid var(--green);border-radius:5px;color:var(--green);font:800 10px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;vertical-align:middle}
.leaderboard-table .lb-outside-note{display:block;width:max-content;margin:4px 0 0;border-color:var(--muted);color:var(--muted)}
@media(max-width:600px){
 .leaderboard-table tbody tr.lb-own:not(.lb-empty){background:#173b34;border-color:var(--green)}
 .leaderboard-table .lb-you{font-size:10px}
}


/* Mission Control question-bank inventory */
.question-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:22px 0}
.question-summary>div{background:#122438;border:1px solid var(--line);border-radius:12px;padding:14px;min-width:0}
.question-summary small{display:block;color:var(--muted);font-size:10px;letter-spacing:.05em}
.question-summary strong{display:block;color:var(--green);font-size:26px}
.question-stat-sections{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:22px 0}
.question-stat-sections section{min-width:0}
.question-stat-sections h3{font:700 13px/1.5 ui-monospace,monospace;letter-spacing:.06em;color:var(--green)}
.question-stat-list{display:grid;gap:13px;margin-top:18px}
.question-stat-label{display:flex;justify-content:space-between;gap:12px;font-size:13px;line-height:1.5}
.question-stat-label span:last-child{white-space:nowrap;color:var(--green)}
.question-stat-label small{color:var(--muted);font-size:11px}
.question-stat-track{height:8px;border-radius:8px;background:#203445;overflow:hidden;margin-top:5px}
.question-stat-track span{display:block;height:100%;background:var(--green);border-radius:8px}
.question-selection-note{font-size:13px;color:var(--muted);padding:12px;border:1px solid var(--line);border-radius:9px}
@media(max-width:650px){.question-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.question-stat-sections{grid-template-columns:1fr}}

/* Keep the six-column visit table scrollable instead of clipping the last columns. */
.mission-control .visit-tablewrap{overflow-x:auto;max-width:100%}

/* On narrower Mission Control panels show all visit fields, including browser,
   as readable cards instead of hiding the last table column off-screen. */
@media (min-width:651px) and (max-width:1200px){
 .mission-control .visit-tablewrap{overflow:visible}
 .mission-control .visit-table{display:block;min-width:0;width:100%;table-layout:auto}
 .mission-control .visit-table thead{display:none}
 .mission-control .visit-table tbody{display:grid;gap:12px}
 .mission-control .visit-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#122438}
 .mission-control .visit-table td{display:block;min-width:0;width:auto;padding:0;border:0;white-space:normal;overflow-wrap:anywhere}
 .mission-control .visit-table td::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--green);font:700 10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}
 .mission-control .visit-table td[data-label="IP OWNER / ORGANIZATION"],
 .mission-control .visit-table td[data-label="DEVICE / BROWSER / OS"]{grid-column:span 3}
 .mission-control .visit-table .visit-device strong,
 .mission-control .visit-table .visit-device span{white-space:normal}
}

/* Recent entry visits: all six fields visible at every viewport width. */
.mission-control .visit-tablewrap{overflow:visible;max-width:100%}
.mission-control .visit-table{display:block;min-width:0;width:100%;table-layout:auto;margin:16px 0 28px}
.mission-control .visit-table thead{display:none}
.mission-control .visit-table tbody{display:grid;gap:12px}
.mission-control .visit-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#122438}
.mission-control .visit-table tbody td{display:block;min-width:0;width:auto;padding:0;border:0;white-space:normal;overflow-wrap:anywhere;word-break:normal}
.mission-control .visit-table tbody td::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--green);font:700 10px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace}
.mission-control .visit-table tbody td[data-label="IP OWNER / ORGANIZATION"],
.mission-control .visit-table tbody td[data-label="DEVICE / BROWSER / OS"]{grid-column:span 3}
.mission-control .visit-table tbody td.visit-device strong,
.mission-control .visit-table tbody td.visit-device span{display:block;white-space:normal;overflow-wrap:anywhere}
@media(max-width:650px){
 .mission-control .visit-table tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mission-control .visit-table tbody td[data-label="IP OWNER / ORGANIZATION"],
 .mission-control .visit-table tbody td[data-label="DEVICE / BROWSER / OS"]{grid-column:1 / -1}
}

/* Compact six-field visit cards: two rows on desktop, three on phones. */
@media(min-width:651px){
 .mission-control .visit-table tbody tr{
   grid-template-columns:1fr 1.1fr 1.35fr;
   gap:10px 16px;
   padding:12px 14px;
 }
 .mission-control .visit-table tbody td[data-label="IP OWNER / ORGANIZATION"],
 .mission-control .visit-table tbody td[data-label="DEVICE / BROWSER / OS"]{
   grid-column:auto;
 }
}
@media(max-width:650px){
 .mission-control .visit-table tbody tr{gap:10px 12px;padding:12px}
 .mission-control .visit-table tbody td[data-label="IP OWNER / ORGANIZATION"],
 .mission-control .visit-table tbody td[data-label="DEVICE / BROWSER / OS"]{grid-column:auto}
}
.mission-control .visit-table tbody td::before{margin-bottom:2px}
.mission-control .visit-table tbody td.visit-device span{margin-top:2px}
