body:has(.great-lakes-game){margin:0;background:#142c36;overflow:hidden;color:#eef8f6;--paper:#102833;--ink:#eef8f6;--ink-soft:#c4d9df;--rule:#40616e}
.great-lakes-game{width:100%;height:100dvh;position:relative;font-family:'Outfit',sans-serif;color:#eef8f6;--category-area:#74b9ff;--category-water:#64e2d1;--category-cut:#d4a0ff;--category-port:#ffbd69}
.great-lakes-game .area,.great-lakes-game [data-kind=area]{--category-color:var(--category-area)}
.great-lakes-game .water,.great-lakes-game [data-kind=water]{--category-color:var(--category-water)}
.great-lakes-game .cut,.great-lakes-game [data-kind=cut]{--category-color:var(--category-cut)}
.great-lakes-game .port,.great-lakes-game [data-kind=port]{--category-color:var(--category-port)}
.great-lakes-game *{box-sizing:border-box}.great-lakes-game [hidden]{display:none!important}
.great-lakes-game ::selection{background:#bdf468;color:#123442}
#satellite-map{position:fixed;inset:0;z-index:0;background:#152d34}
.gl-float{background:rgba(8,29,40,.95);box-shadow:0 5px 22px #0005;border-radius:10px;z-index:500}
.great-lakes-game button,.great-lakes-game select{font:inherit;font-size:13px;font-weight:650;min-height:40px;cursor:pointer;border:0;border-radius:6px;background:#264754;color:#eef8f6;padding:8px 12px}
.great-lakes-game button:hover{background:#3a5d69}.great-lakes-game button:disabled{opacity:.4;cursor:default}
.great-lakes-game :is(button,a,input,select,summary,[tabindex]):focus-visible{outline:3px solid #fbc465;outline-offset:3px}
.gl-topbar{position:fixed;top:16px;left:16px;display:flex;align-items:center;gap:12px;padding:6px 8px}

.gl-topbar h1{margin:0;font-size:19px;line-height:1;letter-spacing:-.02em;white-space:nowrap}
.gl-modes{display:flex;gap:3px;margin-left:6px}.gl-modes button{background:transparent}.gl-modes button[aria-pressed=true]{background:#bdf468;color:#173620}
.gl-map-controls{position:fixed;right:16px;top:16px;display:flex;align-items:center;gap:6px;padding:6px 8px}
#sound-toggle{display:flex;gap:6px;align-items:center;background:transparent}#sound-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gl-zoom{display:flex;align-items:center;gap:2px}.gl-zoom button{background:transparent}.gl-zoom button:not(#zoom-reset){font-size:21px;min-width:40px}.gl-map-controls select{max-width:110px;background:#264754;font-size:12px}.gl-view-label{display:none}
.gl-panel{position:fixed;left:50%;right:auto;transform:translateX(-50%);top:88px;bottom:auto;width:292px;padding:11px 12px}
.gl-round-row{display:flex;gap:10px;align-items:center;margin:0 0 7px;font-size:11px;color:#c1d6de}.gl-scoreboard{margin-left:auto;display:flex;gap:10px;white-space:nowrap}.gl-scoreboard strong{color:#bdf468;font-size:14px;font-variant-numeric:tabular-nums;font-weight:700}
#round-progress{display:block;width:100%;height:4px;border:0;border-radius:3px;margin:9px 0 15px;background:#30515f;color:#bdf468;overflow:hidden}#round-progress::-webkit-progress-bar{background:#30515f}#round-progress::-webkit-progress-value{background:#bdf468}#round-progress::-moz-progress-bar{background:#bdf468}
.gl-question-row{display:flex;align-items:center;gap:10px}
#place-name{flex:1;min-width:0;font-size:20px;line-height:1.15;letter-spacing:-.025em;margin:0;overflow-wrap:break-word}
.great-lakes-game #reveal{flex-shrink:0;min-height:30px;font-size:11px;padding:6px 8px}
.gl-category{margin:6px 0 0;font-size:12px;color:var(--category-color,#bfd5de)}.gl-feedback{font-size:12px;line-height:1.35;margin:7px 0;min-height:0}.gl-feedback[data-tone=correct]{color:#bdf468}.gl-feedback[data-tone=wrong]{color:#ffd4de}
.gl-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:8px}.gl-actions button{min-height:34px;font-size:12px;padding:6px 10px}#next,#retry{background:#bdf468;color:#173620}
.gl-score{color:#bdd0d8;font-size:11px;margin:9px 0 0}.gl-score:empty{display:none}.gl-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.gl-pin{background:transparent;border:0;display:flex;align-items:center;justify-content:center}
.great-lakes-game .gl-pin.leaflet-marker-icon{pointer-events:none}
.great-lakes-game .gl-marker{pointer-events:auto}
.great-lakes-game .gl-marker{position:relative;display:grid;place-items:center;width:28px;height:28px;min-height:0;padding:0;line-height:1;text-align:center;border:1px solid #082634;border-radius:50%;background:var(--category-color);color:#082634;font-size:16px;font-weight:750;box-shadow:0 1px 4px #0008;touch-action:manipulation}
.great-lakes-game .gl-marker.water{border-radius:7px}.great-lakes-game .gl-marker.port{border-radius:3px}.great-lakes-game .gl-marker.cut{border:3px double #082634}
.great-lakes-game .gl-marker.is-compact{width:18px;height:18px;font-size:10px}.great-lakes-game .gl-marker.water.is-compact{border-radius:4px}
.great-lakes-game .gl-marker:hover{background:#fff;color:#123442}.great-lakes-game .gl-marker.is-correct,.great-lakes-game .gl-marker.is-selected{background:#bdf468;color:#163f19;border-color:#163f19}.great-lakes-game .gl-marker.is-wrong{background:#ffd4de;color:#701a30;border-color:#701a30}
.great-lakes-game .gl-marker.is-tried{background:#ffd4de;color:#701a30;border-color:#701a30;cursor:default;text-decoration:line-through;text-decoration-thickness:1px}
.gl-legend{position:fixed;left:16px;bottom:58px;display:grid;grid-template-columns:auto auto;gap:6px 14px;padding:9px 11px;font-size:11px;line-height:1.2}
.gl-key-item{display:flex;align-items:center;gap:6px;white-space:nowrap;color:var(--category-color)}.gl-key-item i{display:block;width:12px;height:12px;flex-shrink:0;border:1px solid var(--category-color);border-radius:50%;background:var(--category-color)}.gl-key-item.water i{border-radius:4px}.gl-key-item.port i{border-radius:1px}.gl-key-item.cut i{border:3px double #082634}
.gl-map-details{position:fixed;right:16px;bottom:58px;max-width:310px;max-height:calc(100dvh - 140px);overflow:auto;font-size:12px;padding:0 11px;color:#c9dde2;line-height:1.5;scrollbar-width:thin;scrollbar-color:#73969e #173946}.gl-map-details summary{cursor:pointer;padding:8px 0}.gl-map-details a{color:#e2f0f2;text-decoration:underline}
.gl-history h2{font-size:15px;margin:18px 0 6px}.gl-history p{margin:6px 0 10px}.gl-history-actions{display:flex;flex-wrap:wrap;gap:7px}.gl-history-actions button{font-size:11px;min-height:34px;padding:6px 8px}
#tile-status{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#102d3aea;color:#eef8f6;font-size:13px;padding:9px 14px;border-radius:6px;z-index:550;max-width:80vw;text-align:center}
#retry-tiles{display:block;margin:8px auto 0;min-height:32px;font-size:12px}
/* Keep imagery notices beside the centered question on laptop and desktop. */
@media(min-width:701px){#tile-status{left:auto;right:16px;top:88px;transform:none;max-width:min(310px,calc((100vw - 292px)/2 - 32px))}}
#map-celebration{display:none;background:#bdf468;color:#14351a;border-radius:6px;padding:6px 9px;margin-top:7px;font-size:15px;font-weight:750;pointer-events:none}#map-celebration.show{display:block}
.gl-study-index{position:fixed;left:16px;top:82px;max-height:calc(100dvh - 390px);width:340px;overflow-y:auto;padding:15px;scrollbar-width:thin;scrollbar-color:#73969e #173946}
.gl-study-header{display:flex;align-items:center;justify-content:space-between}.gl-study-header h2{font-size:20px;margin:0}.gl-study-header button{font-size:22px;background:transparent;padding:3px 9px}.gl-study-index>p{margin:5px 0 12px;color:#c0d6de;font-size:12px}.gl-study-group h3{color:#bdf468;font-size:13px;margin:16px 0 7px}.gl-study-group button{display:flex;align-items:center;text-align:left;gap:10px;width:100%;min-height:38px;padding:7px;background:transparent;font-size:13px}.gl-study-group button span{color:#c0d6de;flex-shrink:0;width:20px;font-variant-numeric:tabular-nums}#show-study{position:fixed;left:16px;top:82px;z-index:500;background:#102d3aea}
.gl-noscript{position:fixed;left:16px;bottom:24px;padding:18px;max-width:340px}
.leaflet-container{font-family:inherit}.leaflet-container .leaflet-control-attribution{font-size:10px;background:#071c26df;color:#d4e1e5;max-width:calc(100vw - 20px);padding:3px 6px}.leaflet-container .leaflet-control-attribution a{color:#d4e1e5}.leaflet-control-scale-line{background:#092531d9;color:#eef8f6;border-color:#eef8f6;text-shadow:none;font-size:11px}.leaflet-bottom.leaflet-right{max-width:calc(100vw - 20px)}
@media(max-width:900px){.gl-topbar h1{font-size:17px}.gl-topbar{gap:6px}.gl-map-controls #sound-toggle span{display:none}.gl-map-controls{gap:0}.gl-map-controls select{max-width:96px}.gl-map-controls button{padding-inline:8px}}
@media(max-width:700px){.gl-topbar{left:10px;top:10px;right:10px;padding:5px 7px;gap:8px}.gl-topbar h1{font-size:18px}.gl-modes{margin-left:auto}.gl-map-controls{top:71px;left:10px;right:auto;padding:3px 6px}.gl-map-controls button{min-height:36px}.gl-map-controls select{min-height:36px}.gl-panel{left:50%;right:auto;transform:translateX(-50%);top:133px;bottom:auto;width:min(292px,calc(100vw - 20px));padding:10px 12px}.gl-round-row{font-size:11px}.gl-scoreboard strong{font-size:14px}#round-progress{margin:7px 0 10px}#place-name{font-size:20px}.gl-category{font-size:11px}.gl-feedback{font-size:12px;margin:7px 0}.gl-score{font-size:10px;margin-top:7px}.gl-actions button{min-height:36px}.gl-map-details{right:10px;top:auto;bottom:45px;max-width:calc(100vw - 20px);font-size:11px;padding:0 9px}.gl-map-details p{max-height:25vh}.gl-map-details[open]{width:310px}.gl-study-index{top:330px;left:10px;right:10px;width:auto;max-height:calc(100dvh - 380px)}#show-study{left:10px;top:auto;bottom:45px;font-size:12px}.leaflet-container .leaflet-control-attribution{font-size:9px;line-height:1.3}.leaflet-control-scale{display:none}#tile-status{top:165px}}
@media(max-height:550px){.gl-panel{padding:9px 11px;width:270px;top:82px;bottom:auto}.gl-feedback{margin:7px 0}#place-name{font-size:19px}.gl-study-index{max-height:calc(100dvh - 100px);left:340px;top:80px}.gl-map-details{bottom:auto;top:75px}}
@media(prefers-reduced-motion:no-preference){#map-celebration.show{animation:gl-pop 850ms cubic-bezier(.16,1,.3,1) both}@keyframes gl-pop{0%{opacity:0;translate:0 8px;scale:.94}18%,75%{opacity:1;translate:0 0;scale:1}100%{opacity:0;translate:0 -8px;scale:1}}}

.gl-icon{width:20px;height:20px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Keep the prompt focused; supporting context remains available to assistive technology. */
#round-label,#round-progress,.gl-score,
.gl-panel:has(#reveal:not([hidden])) .gl-category,
.gl-panel:has(#reveal:not([hidden])) #feedback[data-tone="neutral"]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.gl-panel .gl-actions:has(>button:not([hidden])){margin-top:8px}
.gl-panel .gl-actions:not(:has(>button:not([hidden]))){margin:0}
.gl-study-group h3,.gl-study-group button span{color:var(--category-color)}
.great-lakes-game:has(#study-index:not([hidden]),.gl-map-details[open]) .gl-legend{display:none}
@media(max-width:700px){.gl-legend{left:10px;bottom:85px;gap:5px 12px;padding:8px 10px;font-size:11px}}
.gl-map-details{font-size:12px}.gl-map-details p{max-height:none}

@media(min-width:701px) and (max-width:1100px){.gl-panel{width:270px}.gl-study-index{top:300px;max-height:calc(100dvh - 325px)}}
@media(max-width:700px) and (max-height:550px){.gl-panel{top:133px;left:auto;right:10px;transform:none;width:240px}}

/* The map stays quiet during play; completing the whole map earns the stage. */
#finish-fireworks{position:fixed;inset:0;width:100%;height:100%;z-index:900;pointer-events:none}
#show-bests{display:flex;align-items:center;gap:5px;background:transparent;font-size:12px;padding:6px 8px;color:#ffbd69}
#race-start{white-space:nowrap;color:#bdf468}
#race-time{font-variant-numeric:tabular-nums;white-space:nowrap;color:#74b9ff}
#race-countdown{position:fixed;inset:0;z-index:700;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#071c2666;pointer-events:none;color:#bdf468;text-shadow:0 4px 24px #000b}
#countdown-number{font-size:clamp(100px,22vw,190px);font-weight:800;line-height:1}
#race-countdown p{font-size:19px;font-weight:650;color:#fff;margin:12px 0}
#best-times{background:#081d28;position:fixed;right:16px;top:88px;width:360px;max-height:calc(100dvh - 150px);overflow:auto;padding:16px;z-index:950;scrollbar-width:thin;scrollbar-color:#73969e #173946}
#best-times h2{font-size:22px}#best-times p{font-size:12px;line-height:1.5;color:#c4d9df;margin:8px 0 14px}
#best-times table{border-collapse:collapse;width:100%;font-size:13px;font-variant-numeric:tabular-nums;margin:14px 0}
#best-times th,#best-times td{padding:8px 4px;text-align:right;border-bottom:1px solid #35515d}#best-times th{color:#c4d9df;font-size:11px;font-weight:500}#best-times th:first-child,#best-times td:first-child{text-align:left}#best-times tbody tr:first-child{color:#bdf468}
#best-times-status{min-height:18px}#race-from-bests{background:#bdf468;color:#173620}
.gl-panel.is-finish{background:#081d28;left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(550px,calc(100vw - 32px));max-height:calc(100dvh - 150px);overflow:auto;padding:28px 32px;text-align:center;z-index:750;scrollbar-width:thin;scrollbar-color:#73969e #173946}
.gl-panel.is-finish .gl-round-row{display:none}.gl-panel.is-finish #place-name{font-size:clamp(32px,5vw,52px);line-height:1.04;letter-spacing:-.03em;color:#bdf468}
#finish-emblem{width:70px;height:70px;fill:none;stroke:#ffbd69;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;margin:0 auto 12px;display:block}
.gl-panel.is-finish .gl-category{font-size:16px;margin:12px 0 0;color:#eef8f6}
#finish-stats{display:flex;justify-content:center;gap:32px;margin:22px 0;font-variant-numeric:tabular-nums}#finish-stats strong{display:block;font-size:29px;line-height:1.1;color:#eef8f6}#finish-stats span{font-size:12px;color:#c4d9df}
#finish-record{color:#ffbd69;font-size:15px;font-weight:650;margin:14px 0}
.gl-panel.is-finish .gl-feedback{font-size:14px;line-height:1.45;color:#c4d9df;margin:14px 0 20px}.gl-panel.is-finish .gl-actions{justify-content:center;gap:9px}.gl-panel.is-finish .gl-actions button{min-height:42px;font-size:14px;padding:9px 14px}.gl-panel.is-finish #restart{background:#bdf468;color:#173620}
@media(prefers-reduced-motion:no-preference){.gl-panel.is-finish{animation:gl-win 500ms cubic-bezier(.16,1,.3,1) both}@keyframes gl-win{from{opacity:.6;scale:.94}to{opacity:1;scale:1}}}
@media(max-width:700px){.bests-label{display:none}#show-bests{padding:6px;min-width:32px}.gl-topbar{gap:5px}.gl-modes{margin-left:auto}.gl-map-controls{max-width:calc(100vw - 20px);flex-wrap:wrap}.gl-map-controls #race-start{font-size:11px;padding-inline:8px}.gl-zoom button:not(#zoom-reset){min-width:32px;padding-inline:6px}#best-times{left:10px;right:10px;top:133px;width:auto;max-height:calc(100dvh - 185px)}.gl-panel.is-finish{padding:22px 20px}.gl-panel.is-finish #place-name{font-size:36px}#finish-stats{gap:24px;margin:18px 0}#finish-emblem{width:58px;height:58px}}
@media(max-width:360px){.gl-panel:not(.is-finish),#best-times{top:172px}.gl-topbar h1{font-size:16px}.gl-modes button{padding-inline:9px}}
@media(max-height:550px){.gl-panel.is-finish{max-height:calc(100dvh - 90px);padding:16px 24px}#finish-emblem{display:none}.gl-panel.is-finish #place-name{font-size:32px}#finish-stats{margin:12px 0}}

/* Shared results extend the existing board; personal records keep their own view. */
.gl-board-switch{display:flex;gap:4px;margin:14px 0 12px;padding-bottom:12px;border-bottom:1px solid #35515d}
.gl-board-switch button{flex:1;background:transparent;color:#c4d9df;font-size:14px;min-height:40px}
.gl-board-switch button[aria-pressed="true"]{background:#bdf468;color:#173620}
#online-board-status:empty,#online-share-status:empty{display:none}
#best-times #online-board-status{margin:16px 0;color:#eef8f6}
#best-times #online-board-status[data-error="true"],#online-share-status[data-error="true"]{color:#ffd4de}
#online-board-list table{table-layout:fixed}#online-board-list th:first-child{width:26px}
#online-board-list th:nth-child(3){width:55px}#online-board-list th:nth-child(4){width:75px}
#online-board-list td:nth-child(2),#online-board-list th:nth-child(2){text-align:left;overflow-wrap:anywhere}
#online-board-list td:nth-child(2){font-size:14px;line-height:1.3}#online-board-list td:last-child{white-space:nowrap}
#best-times #online-mine{color:#ffbd69;border-top:1px solid #35515d;padding-top:12px}
#online-race{background:#bdf468;color:#173620}#online-live-note a{color:#74b9ff;text-underline-offset:3px}
#online-finish-share{text-align:left;margin-top:20px;padding-top:16px;border-top:1px solid #35515d}
#online-share-summary{font-size:14px;line-height:1.45;color:#c4d9df;margin:0 0 12px}
#online-share-form label{display:block;font-size:14px;font-weight:650;margin-bottom:6px;color:#eef8f6}
#online-share-form label span{font-weight:400;color:#c4d9df}
.gl-share-fields{display:flex;gap:8px;align-items:stretch}.gl-share-fields input{min-width:0;flex:1;width:100%;background:#173946;color:#eef8f6;border:1px solid #73969e;border-radius:6px;padding:9px 10px;font:inherit;font-size:16px;caret-color:#bdf468}
#online-submit{flex-shrink:0;background:#bdf468;color:#173620;font-size:14px;min-height:42px;padding:8px 12px}
#online-share-form #online-nickname-hint{font-size:12px;line-height:1.4;color:#c4d9df;margin:7px 0 0}
#online-share-status{font-size:14px;line-height:1.45;color:#bdf468;margin:10px 0 0;overflow-wrap:anywhere}
#online-view-board{font-size:14px;min-height:40px;margin-top:10px;background:#234854}
#online-race-status{position:fixed;right:16px;top:88px;max-width:290px;margin:0;padding:9px 12px;font-size:12px;line-height:1.4;color:#ffd4de;z-index:550;pointer-events:none}
.great-lakes-game:has(#best-times:not([hidden]),.gl-map-details[open]) #online-race-status{display:none}
@media(min-width:701px) and (min-height:551px){#online-race-status{max-width:min(290px,calc((100vw - 292px)/2 - 32px))}.great-lakes-game:has(#tile-status:not([hidden])) #online-race-status{top:190px}}
@media(max-width:700px){#online-race-status{top:auto;bottom:160px;left:10px;right:10px;max-width:none}.gl-share-fields{flex-wrap:wrap}.gl-share-fields input{flex-basis:160px}#online-submit{flex-grow:1}.gl-panel.is-finish #online-finish-share{margin-top:16px;padding-top:14px}}
@media(max-height:550px){#best-times{top:80px;max-height:calc(100dvh - 100px)}#online-race-status{top:auto;bottom:48px;left:16px;right:auto;max-width:290px}}
