:root{color-scheme:light;--ink:#173f36;--deep:#123b33;--muted:#4c6b5d;--cream:#faf6e9;--paper:#fffcf1;--edge:#d9dbbf;--yellow:#f3cd69;--shadow:0 5px 18px #163e3225,0 2px 1px #163e321a;--mono:ui-monospace,Consolas,monospace;font-family:system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--ink);background:var(--cream)}
*{box-sizing:border-box}
body{margin:0;height:100vh;height:100dvh;overflow:hidden}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #387d66;outline-offset:3px}
canvas:focus-visible{outline-offset:-4px}
[hidden]{display:none!important}
svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.masthead{position:absolute;inset:13px 15px auto;min-height:58px;padding:6px 9px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #849c7780;border-radius:12px;background:#faf6e9f7;box-shadow:var(--shadow);z-index:2}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;white-space:nowrap}
.brand strong{display:block;font:700 27px/.98 Georgia,serif;letter-spacing:-.65px}
.brand small{display:block;font:700 8px/1.25 var(--mono);letter-spacing:.12em;margin-bottom:3px;color:var(--muted)}
.hud-status{display:flex;align-items:center;gap:8px}
.nav{display:flex;gap:8px}
.btn{border:1px solid var(--edge);display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--paper);font-weight:730;font-size:13px;min-height:38px;border-radius:8px;padding:7px 12px}
.btn:hover,.icon-btn:hover{background:#eeefd8;border-color:#b8c5aa}
.primary{background:var(--deep);color:var(--paper);border-color:var(--deep)}
.primary:hover{background:#245447;color:var(--paper);border-color:#245447}
.nav-btn:last-child{margin-left:4px}
.shell{height:100%}
.eyebrow{font:800 9px/1.4 var(--mono);letter-spacing:.13em;color:#537163}
.stops{display:flex;gap:4px;padding:4px;background:#fbf7e8f2;border:1px solid #4d6d584d;border-radius:8px;box-shadow:var(--shadow);pointer-events:auto}
.stops .btn{font-size:11px;min-height:27px;padding:4px 8px;background:#edf0dc;border-color:transparent;border-radius:5px}
.stops .btn:hover,.stops .btn[aria-current=true]{background:#dce7cc;border-color:#a6ba9b}
.about{position:absolute;bottom:7px;left:15px;display:flex;align-items:center;gap:4px;background:#fbf7e8e8;border:1px solid #7a98736b;border-radius:5px;padding:3px 6px;font-size:10px;color:var(--muted)}
.about svg{width:13px;height:13px}
.map-attribution{position:absolute;left:15px;bottom:6px;display:flex;align-items:center;gap:5px;font-size:9px;background:#faf6e9c9;border-radius:4px;padding:1px 4px}
.map-attribution .about{position:static;padding:1px 3px;border:0;background:none}
.map-attribution a{color:#406655;text-decoration-thickness:1px;text-underline-offset:2px}
.atlas{position:relative;isolation:isolate;height:100%;overflow:hidden;background:#94bbb7}
#map{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}
#map:active{cursor:grabbing}
#map.pointing:not(:active){cursor:pointer}
.atlas-top{position:absolute;top:84px;left:15px;display:grid;justify-items:start;gap:7px;pointer-events:none}
.map-caption,.clock,.map-key,.roster-shortcut,.badge{display:flex;align-items:center;gap:6px;min-height:30px;background:#fbf7e8f2;border:1px solid #4d6d584d;border-radius:7px;padding:5px 8px;box-shadow:0 2px 1px #315a4921;font-weight:750;font-size:11px}
.map-caption svg,.clock svg,.roster-shortcut svg,.badge svg{width:15px;height:15px}
.map-caption{min-height:41px;padding:5px 8px}
.map-caption strong,.map-caption small{display:block}
.map-caption small{font-size:10px;color:var(--muted);font-weight:500;margin-top:2px}
.clock{font-family:var(--mono);font-size:11px;white-space:nowrap;background:none;border:0;box-shadow:none;padding:2px 0}
.clock svg{color:#83611b}
.clock.is-night svg{color:#476384}
#phase{font-family:system-ui;font-size:10px;color:var(--muted);border-left:1px solid #aab79688;padding-left:6px}
.compass{position:absolute;top:86px;right:20px;display:grid;justify-items:center;color:#245b4d;pointer-events:none}
.compass span{font:800 9px var(--mono)}
.compass svg{width:43px;height:43px;stroke-width:1;opacity:.77}
.compass .needle{fill:currentColor}
.atlas.is-night .compass{color:#b3d4c6}
.zoom{position:absolute;right:15px;bottom:22px;display:grid;justify-items:end;gap:3px}
.zoom button{display:flex;align-items:center;justify-content:center;gap:5px;background:var(--paper);border:1px solid #4d6d5866;border-radius:7px;box-shadow:var(--shadow);padding:0;width:40px;height:35px}
.zoom #overview{width:auto;padding:0 8px;font-size:10px;font-weight:750;margin-top:4px}
.zoom #overview svg{width:15px;height:15px}
.zoom button:hover{background:#e8edd2}
.zoom button:focus-visible{outline-offset:-3px}
.map-key{position:absolute;left:15px;bottom:32px;pointer-events:none;font-size:10px;gap:11px;min-height:26px}
.map-key span{display:flex;align-items:center;gap:4px}
.map-key i{display:block;flex:none}
.scale-key i{width:13px;height:5px;border:1px solid #557263;border-top:0}
.key-road{width:13px;border-bottom:2px dashed #9b7d44}
.key-river{width:13px;border-bottom:2px solid #559da5}
.roster-shortcut{min-height:31px;font-size:11px;background:#e8eed6;border-color:#cdd7b8}
.roster-shortcut:hover{background:#fff5d3}
.search{display:flex;align-items:center;gap:8px;position:absolute;left:50%;bottom:20px;translate:-50% 0;width:min(480px,calc(100% - 265px));background:var(--paper);border:1px solid #4d6d5880;border-radius:10px;box-shadow:var(--shadow);padding:4px 4px 4px 11px}
.search>svg{color:#5c796c}
.search input{border:0;background:transparent;min-width:0;flex:1;padding:5px 1px;font-size:14px}
.search input:focus-visible{outline-offset:1px}
.search button{min-height:34px}
.search button svg{width:14px;height:14px}
.search-feedback{position:absolute;bottom:calc(100% + 6px);left:0;right:0;margin:0;padding:8px 10px;font-size:12px;background:#fdf4d4;border:1px solid #c4a86d;border-radius:8px;box-shadow:var(--shadow)}
.map-badges{position:absolute;top:172px;left:15px;right:75px;display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;pointer-events:none}
.badge{min-height:26px;padding-block:2px;pointer-events:auto}
.badge button{padding:1px 0;background:none;border:0;font-size:inherit;font-weight:inherit;min-height:23px}
.badge button:hover{text-decoration:underline}
.badge button svg{width:13px}
.match-badge{background:#ffefb6}
.match-badge i,.now i{display:inline-block;width:7px;height:7px;background:#4e845c;border-radius:50%;flex:none}
.detail{position:absolute;top:135px;right:15px;width:min(285px,calc(100% - 80px));max-height:calc(100% - 230px);overflow:auto;scrollbar-width:thin;border:1px solid #59726373;background:var(--paper);border-radius:11px;padding:12px;box-shadow:var(--shadow)}
.detail-head,.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}
.detail h2,.dialog-head h2{font:700 23px/1.02 Georgia,serif;margin:4px 0 0;overflow-wrap:anywhere;letter-spacing:-.025em}
.dialog-head h2{font-size:30px}
.detail p,.lead{font-size:13px;line-height:1.47;color:var(--muted);margin:8px 0 10px}
.icon-btn{display:grid;place-items:center;width:32px;height:32px;flex:none;background:#f7f3e4;border:1px solid var(--edge);border-radius:7px;padding:0}
.icon-btn svg{width:16px}
.detail .btn{min-height:32px;font-size:11px;padding:5px 8px;gap:5px}
.detail .btn svg{width:14px}
.detail-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}
.detail-team{display:flex;gap:5px;align-items:center;color:#325e50;font-size:12px;font-weight:700;margin-top:5px}
.detail-team+.detail-team{margin-top:4px}
.subhead{font:800 9px/1.4 var(--mono);letter-spacing:.1em;color:var(--muted);margin:10px 0 4px}
.now{margin:10px 0 7px;background:#eaf0db;border:1px solid #e1e7cb;border-radius:7px;padding:7px 8px;display:flex;align-items:center;gap:7px;font-size:12px}
.now strong{font-weight:750}
.now .eyebrow{display:block;margin-bottom:3px}
.now small{display:block;color:var(--muted)}
.fan-facts{margin:8px 0;display:grid;gap:4px;font-size:11px}
.fan-facts div{display:flex;justify-content:space-between;gap:8px}
.fan-facts dt{color:var(--muted)}
.fan-facts dd{margin:0;text-align:right;font-weight:750}
.kit{width:28px;height:28px;stroke:none;flex:none;vertical-align:middle}
.kit.tile{width:37px;height:37px;padding:4px;background:#edf0dd;border-radius:7px}
.fan-title{display:flex;gap:7px;align-items:center;min-width:0}
.fan-title h2{font-size:17px;margin:3px 0 0}
.fan-title>div{min-width:0}
dialog{border:1px solid #63806c;border-radius:13px;background:var(--paper);color:var(--ink);width:min(514px,calc(100% - 24px));max-height:calc(100dvh - 28px);padding:17px;box-shadow:0 12px 60px #15332f70;overflow:auto}
dialog::backdrop{background:#102f2d76}
.dialog-head{margin-bottom:10px}
dialog .lead{margin:0 0 12px}
.rows{display:grid;gap:5px;margin:0;padding:0;list-style:none}
.row{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:5px 8px;text-align:left;border:1px solid var(--edge);border-radius:7px;background:#fbf8ea;font-size:13px}
button.row:hover,.row[aria-pressed=true]{background:#e9eed6;border-color:#a9be9f}
.row .identity{flex:1;min-width:0;overflow-wrap:anywhere}
.row strong,.row small{display:block}
.row small{color:var(--muted);margin-top:2px;font-size:10px}
.row .quantity{font:800 12px var(--mono);font-variant-numeric:tabular-nums}
.row .rank{width:24px;color:#3e6959;font:800 11px var(--mono);text-align:center}
.row .rank.podium{padding:4px 0;border-radius:4px;background:#f3dfa5}
.places-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px}
.places-row button{overflow-wrap:anywhere;justify-content:flex-start;line-height:1.2}
.places-row button:nth-child(2){font-size:11px}
.fields{display:grid;gap:6px}
.fields label{font-size:12px;font-weight:760;margin-top:3px}
.fields input,.fields textarea,.fields select{background:#fffdf5;border:1px solid #cbd5bc;border-radius:7px;padding:8px 9px;width:100%;font-size:14px}
.fields textarea{resize:vertical}
.form-buttons{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}
.form-buttons small{color:var(--muted);font-size:11px}
.notice{border:1px solid #d5c486;background:#faf0c8;border-radius:7px;padding:8px 9px;font-size:12px;margin:0 0 8px}
.notice.good{background:#e7efd5;border-color:#aabd98}
.code-sheet{margin-top:12px;border-top:1px solid var(--edge);padding-top:10px;font-size:12px}
.code-sheet summary{font-weight:760;cursor:pointer}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:8px}
.codes button{min-width:0;display:flex;align-items:center;gap:4px;text-align:left;padding:5px 6px;background:#f7f4e6;border:1px solid var(--edge);border-radius:6px;font-size:10px;font-weight:700}
.codes button:hover{background:#e9efd7}
.codes code{font:800 10px var(--mono);background:#e7ecd4;border-radius:3px;padding:3px}
.flag{width:19px;height:13px;stroke:none;flex:none;box-shadow:0 0 0 1px #39564940;border-radius:2px}
.place-legend{display:flex;align-items:center;gap:6px;margin:0 0 9px}
.about-copy a{text-decoration-color:#628673;text-underline-offset:2px}

@media(max-width:920px){.nav{gap:4px}.nav .btn{padding-inline:7px}.masthead{gap:6px}}
@media(max-width:710px){.wide{display:none}.brand strong{font-size:23px}#phase{display:none}}
@media(max-width:610px){
  .masthead{inset:7px 8px auto;min-height:0;display:grid;grid-template-columns:1fr auto;gap:5px;justify-content:stretch;padding:5px 6px}
  .brand{width:max-content;gap:5px}.brand img{width:28px;height:30px}.brand strong{font-size:21px}.brand small{font-size:6px;margin-bottom:2px}
  .hud-status{gap:4px}.roster-shortcut{padding:3px 5px;font-size:10px;min-height:25px}.roster-shortcut svg{width:12px}
  .nav{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1fr 1.23fr;gap:4px}
  .nav .btn{font-size:10px;padding:4px 2px;gap:3px;min-height:27px}.nav-btn svg{width:13px;height:13px}
  .nav-btn:last-child{margin:0}.wide{display:none}
  .atlas-top{top:83px;left:8px;gap:4px}
  .map-caption,.clock{padding:3px 5px;font-size:10px;min-height:26px}
  .map-caption small{font-size:9px}
  .clock svg,.map-caption svg{width:13px;height:13px}
  .stops{padding:3px;gap:3px}.stops .btn{min-height:22px;padding:3px 6px;font-size:10px}
  .compass{top:86px;right:9px}.compass svg{width:29px;height:29px}
  .map-badges{top:150px;left:8px;right:45px}
  .zoom{bottom:66px;right:8px}.zoom button,.zoom #overview{width:35px;height:33px;padding:0}.zoom #overview span{display:none}
  .map-key{bottom:60px;left:8px;gap:6px;padding:3px 5px;font-size:9px;min-height:23px}
  .about{left:8px;bottom:3px;padding:1px 4px;font-size:8px}.about svg{width:11px;height:11px}
  .map-attribution{left:8px;bottom:2px;font-size:7px;gap:3px;padding:0}
  .search{bottom:20px;width:calc(100% - 16px);padding-left:8px}.search input{font-size:16px}.search input::placeholder{font-size:13px}
  .search button{min-height:33px;font-size:12px;padding-inline:8px}
  .detail{top:auto;right:auto;left:8px;bottom:66px;width:min(309px,calc(100% - 58px));max-height:calc(100% - 219px);padding:9px}
  .detail.city-detail{max-height:32dvh}
  .detail h2{font-size:20px}.fan-title h2{font-size:16px}.detail p{font-size:11px;margin:5px 0 7px}
  .detail-actions{margin-top:7px}.detail .subhead{margin-top:7px}
  .atlas:has(.detail:not([hidden])) .map-key{display:none}
  dialog{padding:13px}.dialog-head h2{font-size:25px}
}
@media(max-width:355px){.roster-shortcut span:last-child{display:none}.map-key{gap:4px}.codes{grid-template-columns:1fr}}
@media(max-height:535px) and (min-width:611px){.detail{top:95px;max-height:calc(100% - 166px)}.compass{display:none}}
 .support-button{background:#f5e9c7;border-color:#d8c48d}
 .support-hero{text-align:center;padding:10px 10px 18px}
 .support-hero>img{margin:0 auto 14px;display:block}
 .support-hero>.btn{margin:14px 0;display:inline-flex}
 .support-note{font-size:.8rem;line-height:1.5;color:var(--muted,#53665d);max-width:380px;margin:8px auto}
