@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800;900&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{--ink:#142e2b;--paper:#f5f3e9;--yellow:#f3ce3e;--line:#d9ddcf}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c88500;outline-offset:3px}header{display:flex;align-items:center;justify-content:space-between;padding:22px 5%;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;gap:10px;text-decoration:none;color:var(--ink);font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-weight:800;font-size:20px;line-height:.95;letter-spacing:1px}.brand-mark{background:var(--yellow);border:2px solid var(--ink);font-size:35px;width:49px;text-align:center;transform:rotate(-7deg)}nav{display:flex;gap:28px}.nav{border:0;background:none;padding:10px 0;font-size:13px;font-weight:700;color:#60736a}.nav.active{color:var(--ink);border-bottom:3px solid var(--ink)}.button{border:1px solid var(--ink);padding:12px 18px;background:var(--ink);color:white;border-radius:3px;font-weight:700;font-size:13px}.light{background:transparent;color:var(--ink)}main{max-width:1500px;margin:auto;padding:0 5%}.intro{display:flex;justify-content:space-between;align-items:center;padding:46px 0 32px;gap:30px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:800}h1{font-family:'Barlow Condensed','Arial Narrow',Impact,sans-serif;font-size:clamp(60px,7vw,100px);font-weight:800;text-transform:uppercase;line-height:.9;letter-spacing:-1px;margin:18px 0}h1 em{font-style:normal;color:#367c60}p{font-size:14px;line-height:1.65;color:#627268}.intro p{margin:18px 0 0}.trip-ticket{width:275px;background:var(--yellow);padding:25px 28px;transform:rotate(4deg);border:1px solid #dfb928;box-shadow:6px 7px 0 #142e2b0e;position:relative}.trip-ticket:before,.trip-ticket:after{content:'';position:absolute;width:20px;height:20px;background:var(--paper);border-radius:50%;top:72%}.trip-ticket:before{left:-10px}.trip-ticket:after{right:-10px}.trip-ticket span{display:block;font-size:10px;letter-spacing:1.7px;font-weight:800}.trip-ticket strong{display:block;font-family:'Barlow Condensed',Impact,sans-serif;font-size:94px;line-height:1.05}.trip-ticket small{font-size:8px;font-weight:700;letter-spacing:1px}.ticket-line{border-top:1px dashed var(--ink);margin:20px -10px 16px}.status-strip{display:flex;align-items:center;gap:18px;border-top:1px solid var(--line);padding:15px 0;font-size:11px;color:#53685c}.status-strip>span{flex:1}.status-strip label{display:flex;gap:5px;align-items:center}.status-strip button,.map-heading button{border:0;background:none;color:var(--ink);font-size:11px;font-weight:700}.scorebar{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin:0 0 20px}.score{padding:16px 22px;border:1px solid var(--line);background:#fffdf5;display:flex;align-items:center;gap:14px;border-top:3px solid var(--team,var(--ink))}.score .dot{width:9px;height:9px;background:var(--team,#b4baaa);border-radius:50%}.score strong{font-size:12px}.score .number{font-family:'Barlow Condensed',Impact,sans-serif;font-size:34px;margin-left:auto;line-height:1}.score small{font-size:10px;color:#66776b;display:block;margin-top:3px}.board-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px}.map-shell{border:1px solid #cbd3c5;background:#fffdf5;border-radius:4px;overflow:hidden}.map-heading{padding:15px 19px;display:flex;align-items:center;justify-content:space-between}.map-heading>span{font-size:10px;letter-spacing:1.6px;font-weight:800}#map{height:530px;background:#dde5df}.leaflet-container{font-family:'DM Sans',sans-serif}.leaflet-tooltip{font-size:11px;border:0;font-weight:700}.legend{display:flex;gap:24px;padding:15px 19px;font-size:10px}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:12px;height:12px;border:1px solid #819c8e}.neutral{background:#c7d0bc}.claimed{background:#a5c5f6;border-style:dashed!important}.locked{background:#2273e5}aside{padding:25px;background:#e9eddf;border:1px solid #d7dfcc;border-radius:4px}h2{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:38px;line-height:1.05;margin:12px 0}aside label{font-size:10px;font-weight:700;display:block;margin:20px 0 7px}input[type=search],select{width:100%;padding:12px;border:1px solid #c4cebd;background:#fffdf7;border-radius:3px;font-size:12px}#territory-list{max-height:310px;overflow:auto;margin-top:14px}.territory-row{width:100%;text-align:left;border:0;border-bottom:1px solid #d2dacb;padding:12px 3px;display:flex;align-items:center;justify-content:space-between;background:none;font-size:12px;color:var(--ink)}.territory-row:hover{background:#dce4d2}.territory-row small{font-size:9px;color:#738373}.map-note{font-size:10px;margin:12px 0 25px}.selected-name{margin:15px 0}.chip{display:inline-block;font-size:10px;padding:5px 8px;background:#fffdf5;border:1px solid #cdd6c5;border-radius:3px;margin:4px 0}.panel-actions{display:grid;gap:9px;margin-top:20px}.panel-actions a{text-align:center;text-decoration:none}.back{background:none;border:0;padding:0;font-size:10px;font-weight:700}.detail-note{font-size:10px}.section-heading{padding:25px 0}#territory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:35px}.territory-card{background:#fffdf5;border:1px solid var(--line);padding:20px;text-align:left;color:var(--ink);min-height:130px}.territory-card:hover{border-color:#367c60;transform:translateY(-2px)}.territory-card h3{font-family:'Barlow Condensed',sans-serif;font-size:26px;margin:10px 0}.territory-card small{font-size:9px;letter-spacing:1px}.rules-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;padding:20px 0}.rules-grid article{border-top:3px solid var(--ink);padding:20px 0}.rules-grid b{font-family:'Barlow Condensed',sans-serif;font-size:45px;color:#a4b397}.rules-grid h3{font-size:16px}#rules-view{padding-top:30px}footer{display:flex;justify-content:space-between;padding:27px 5%;border-top:1px solid var(--line);font-size:9px;letter-spacing:1px;margin-top:20px;color:#64796a;gap:12px}dialog{width:min(520px,calc(100% - 28px));border:0;padding:0;background:var(--paper);color:var(--ink);box-shadow:0 25px 100px #0004}dialog::backdrop{background:#142e2bcc}.close{position:absolute;right:13px;top:9px;z-index:2;border:0;background:none;font-size:27px;color:var(--ink)}.reveal-gate{padding:35px}.reveal-gate label{display:flex;align-items:flex-start;gap:9px;font-size:12px;line-height:1.6;margin:15px 0}.reveal-gate input{margin-top:4px}.reveal-gate .button{width:100%;margin-top:15px}.button:disabled{opacity:.4;cursor:default}.challenge-banner{background:var(--yellow);padding:30px; border-bottom:2px dashed var(--ink)}.challenge-banner span{font-size:10px;letter-spacing:2px;font-weight:800}.challenge-banner h2{font-size:44px;margin:10px 0 0}.challenge-body{padding:25px 30px}.challenge-body h3{font-family:'Barlow Condensed',sans-serif;font-size:27px}.challenge-body p{color:var(--ink);white-space:pre-wrap}.challenge-body .demo{color:#8e5613;font-size:11px;background:#f5dfae;padding:10px}.challenge-body a{color:var(--ink)}.inline-error{font-size:12px;color:#9b291f}.leaflet-control-attribution{font-size:9px!important} [hidden]{display:none!important}@media(max-width:900px){.board-layout{grid-template-columns:1fr 260px}.trip-ticket{width:235px}#territory-grid,.rules-grid{grid-template-columns:repeat(2,1fr)}nav{gap:15px}header{flex-wrap:wrap}.status-strip{flex-wrap:wrap}.status-strip>span{min-width:65%}}@media(max-width:650px){header{padding:18px 5%;gap:15px}nav{order:3;width:100%;justify-content:space-between}.intro{padding-top:30px;gap:12px}.trip-ticket{width:150px;padding:20px 14px}.trip-ticket strong{font-size:65px}.trip-ticket span{font-size:8px;letter-spacing:.8px}.trip-ticket small{font-size:7px}h1{font-size:59px}.intro p{font-size:12px}.scorebar{gap:7px}.score{padding:12px 9px;gap:7px;flex-wrap:wrap}.score .number{font-size:28px}.score strong{font-size:10px}.score small{font-size:8px}.board-layout{grid-template-columns:1fr}#map{height:430px}#territory-list{max-height:230px}.status-strip label{font-size:10px}.rules-grid{gap:15px}footer{flex-direction:column}#territory-grid{gap:9px}.territory-card{padding:14px}.legend{gap:16px}}
/* Basemap filters affect background tiles only; team colors stay vivid. */
.brand{align-items:center}.brand-ticket{width:49px;height:58px;flex:none;transform:rotate(4deg);filter:drop-shadow(3px 3px 0 #142e2b0e);overflow:visible}.brand-ticket text{fill:currentColor;text-anchor:middle;letter-spacing:.3px}.brand-ticket .ticket-kicker{font-family:'DM Sans',Arial,sans-serif;font-size:3.5px;font-weight:800}.brand-ticket .ticket-count{font-family:'Barlow Condensed',Impact,sans-serif;font-size:32px;font-weight:800;letter-spacing:0}.brand-ticket .ticket-footer{font-family:'DM Sans',Arial,sans-serif;font-size:5px;font-weight:800;letter-spacing:.6px}
.muted-basemap{filter:saturate(.55) brightness(1.04) contrast(.92)}
.map-tools{display:flex;align-items:center;gap:15px}.map-switch{display:flex;border:1px solid #cbd3c5;border-radius:4px;padding:3px;background:#f1f2e9;gap:3px}.map-heading .map-switch button{padding:8px 12px;border-radius:2px;font-size:11px}.map-switch button[aria-pressed=true]{background:var(--ink);color:white}.map-caption{margin:0;padding:0 19px 12px;font-size:10px;color:#657468}
#map{background:#dce0e0}.territory-map-marker{display:none!important}.clean-map .territory-map-marker{display:block!important;color:var(--ink)}.territory-map-dot{display:block;width:12px;height:12px;border-radius:50%;border:2px solid #fff;background:var(--marker-color,#657b61);box-shadow:0 0 0 1px #142e2b80}.territory-map-name{position:absolute;left:7px;top:19px;transform:translateX(-50%);white-space:nowrap;font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:18px;font-weight:800;line-height:1.05;letter-spacing:.3px;text-transform:uppercase;color:#18302d;text-shadow:0 1px 2px white,0 -1px 2px white,1px 0 2px white,-1px 0 2px white;padding:1px 3px;pointer-events:auto}.territory-map-marker.selected{z-index:1000!important}.clean-map .leaflet-tooltip{display:none}.clean-map .leaflet-tile-pane{filter:grayscale(1) brightness(1.04)}
@media(max-width:900px){.map-heading{align-items:flex-start;gap:12px;flex-wrap:wrap}.map-tools{flex-wrap:wrap;gap:10px}.territory-map-name{font-size:17px}}
.scorebar{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}@media(max-width:650px){.scorebar{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
.territory-map-lock{display:none;overflow:visible;position:absolute;left:-3px;top:-6px;width:20px;height:23px;color:var(--marker-color);filter:drop-shadow(0 0 1px #fff) drop-shadow(0 1px 1px #142e2b80)}.is-locked .territory-map-dot{display:none}.is-locked .territory-map-lock{display:block}
/* Compact board opening for quick reference in the field. */
#map .territory-boundary:focus,#map .territory-map-marker:focus{outline:none}#map .territory-map-marker:focus-visible .territory-map-dot{box-shadow:0 0 0 3px #c88500}#map .territory-map-marker:focus-visible .territory-map-lock{filter:drop-shadow(0 0 2px #c88500)}
.mbta-station-dot{display:grid;place-items:center;background:transparent;border:0}.mbta-station-dot svg{display:block;width:var(--station-size,14px);height:var(--station-size,14px);filter:drop-shadow(0 0 1px #142e2b90)}
.clean-map .transit-tooltip{display:block}
#transit-toggle,#icons-toggle{padding:8px 12px;border:1px solid #cbd3c5;border-radius:4px;background:#f1f2e9;white-space:nowrap}#transit-toggle[aria-pressed=true]{background:var(--ink);color:white}#transit-toggle:disabled{opacity:.6}.transit-legend{display:flex;flex-wrap:wrap;gap:10px 16px;padding:12px 19px;border-top:1px solid #dce0d7;font-size:10px}.transit-legend span{display:inline-flex;align-items:center;gap:6px}.transit-legend span:before{content:'';width:18px;height:3px;background:var(--line);border-radius:2px}.transit-legend small{width:100%;color:#657468}.transit-legend a{color:var(--ink)}.transit-status{margin:0;padding:0 19px;color:#982B22;font-size:11px}.transit-status:not(:empty){padding-bottom:12px}
#board-view{padding-top:22px}.map-heading .board-title{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:28px;font-weight:800;line-height:1;margin:0;letter-spacing:.4px;white-space:nowrap}.map-heading{padding:16px 19px;gap:15px}#map{height:clamp(480px,calc(100svh - 210px),760px)}#board-view>.scorebar{margin:20px 0 0}#board-view>.status-strip{margin-top:16px}.map-note{margin-top:8px}
@media(max-width:650px){#board-view{padding-top:12px}header{padding-top:12px;padding-bottom:12px;gap:10px}.nav{padding:7px 0}.map-heading .board-title{font-size:26px}.map-heading{padding:12px 14px;gap:12px}.map-tools{gap:10px}.map-caption{padding:0 14px 10px}#map{height:clamp(350px,calc(100svh - 275px),620px)}}

#map.hide-territory-icons .leaflet-territoryLabels-pane,#map.hide-territory-icons .leaflet-tooltip:not(.transit-tooltip){display:none!important}#icons-toggle[aria-pressed=true]{background:var(--ink);color:white}
.territory-status{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:5px;font-weight:700;line-height:1.2;color:#000}.territory-status.owned{background:var(--badge-fill);border:2px solid var(--badge-color);color:#000;box-shadow:0 1px 2px #142e2b20}.status-lock{width:14px;height:16px;flex:none}

.territory-status-row{display:inline-flex;align-items:center;gap:7px;color:#000}
.territory-filters{display:flex;flex-wrap:wrap;gap:10px;border:0;padding:0;margin:0}.territory-filters legend{font-size:11px;font-weight:700;margin-bottom:10px}.territory-filters label{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--line);border-radius:4px;background:#fffdf5;cursor:pointer;font-size:12px;font-weight:700}.territory-filters label:has(input:checked){background:var(--ink);border-color:var(--ink);color:white}.territory-filters input{margin:0;accent-color:var(--yellow);width:15px;height:15px;cursor:pointer}#territory-filter-summary{font-size:11px;margin:12px 0 18px}
.territory-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:25px 0 10px}.territory-heading h2{margin:0}.territory-heading .territory-filters{min-width:0;gap:8px}.territory-heading .territory-filters legend{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.territory-heading .territory-filters label{padding:9px 12px}#territory-filter-summary{margin:0 0 16px}
#map.clean-map{background:#fff}
#map.clean-map{background:#d9dde1}
.brand-logo{display:block;width:250px;height:auto;overflow:visible;transform:rotate(-2deg);filter:drop-shadow(2px 3px 0 #142e2b12)}@media(max-width:650px){.brand-logo{width:220px}}
.reveal-gate label:has(input[type=checkbox]){font-size:18px;font-weight:600;line-height:1.5;gap:14px;padding:14px;background:#fffdf7;border:1px solid var(--line);border-radius:5px;cursor:pointer}.reveal-gate input[type=checkbox]{width:28px;height:28px;flex:none;margin:2px 0 0;accent-color:var(--ink)}.reveal-gate label[for=team]{font-size:15px;font-weight:700;margin-bottom:8px}.reveal-gate #team{font-size:17px;font-weight:700;color:#000;border:2px solid var(--selected-team-color,var(--line));background:var(--selected-team-fill,#fffdf7);min-height:48px}.reveal-gate #team option{color:#000;background:#fffdf7}#challenge-dialog{max-height:calc(100dvh - 28px);overflow:auto}@media(max-width:650px){.reveal-gate{padding:30px 22px}.reveal-gate label:has(input[type=checkbox]){padding:12px;font-size:17px}}
.reveal-gate #open-envelope{font-size:18px;font-weight:800;min-height:56px;padding:15px 18px}
.reveal-gate #gate-warning{font-size:18px;font-weight:700;line-height:1.5}
.territory-directory{align-self:start;background:#e9eddf;border:1px solid #d7dfcc;border-radius:4px;overflow:hidden}.territory-directory summary{cursor:pointer;padding:14px 20px;font-size:14px;font-weight:700;min-height:48px}.territory-directory summary:focus-visible{outline:3px solid #c88500;outline-offset:-3px}.territory-directory .directory-open{display:none}.territory-directory[open] .directory-open{display:inline}.territory-directory[open] .directory-closed{display:none}.territory-directory aside{border:0;border-top:1px solid #d7dfcc;border-radius:0;padding-top:14px}.score strong,.score small{font-size:18px;line-height:1.4}.score small{margin-top:4px}.score strong{font-weight:700}@media(max-width:650px){.score strong,.score small{font-size:18px}.score{padding:14px 12px;gap:9px}.scorebar{grid-template-columns:repeat(2,minmax(0,1fr))}.scorebar .score:last-child{grid-column:1/-1}}
.territory-directory summary{display:flex;align-items:center;justify-content:space-between;gap:14px;list-style:none}.territory-directory summary::-webkit-details-marker{display:none}.territory-directory summary h2{font-size:32px;margin:0;overflow-wrap:anywhere}.directory-arrow{margin-left:auto;flex:none;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:7px solid currentColor}.territory-directory[open] .directory-arrow{transform:rotate(90deg)}.territory-directory[open] summary{padding-top:20px;padding-bottom:16px}
.score .score-name{display:flex;align-items:center;gap:9px}.score .score-name .dot{flex:none}

.sheet-error{border:2px solid #b63829;border-radius:4px;background:#fff1ec;padding:16px 20px;margin-bottom:16px;color:#53231b;overflow-wrap:anywhere}.sheet-error[hidden]{display:none}.sheet-error strong{font-size:20px}.sheet-error p{margin:8px 0;font-size:16px;line-height:1.5}.sheet-error a{font-weight:700;text-decoration:underline}
.directory-separator{display:inline-block;margin-inline:12px}
#sheet-button{background:var(--yellow);color:var(--ink);border:2px solid var(--ink)}
@media(max-width:650px){#sheet-button{border-width:1.875px}}
