.gp2 { --gp2-ink:#202725; --gp2-muted:#5d6862; --gp2-paper:#fff; --gp2-line:#dce4de; --gp2-green:#176e4c; --gp2-wash:#edf6ef; --gp2-coral:#bd423a; color:var(--gp2-ink); background:var(--gp2-paper); font:16px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; max-width:1180px; margin:auto; padding:24px; }
.gp2,.gp2 * { box-sizing:border-box; letter-spacing:0; }
.gp2 h1,.gp2 h2,.gp2 h3,.gp2 p { color:inherit; font-family:inherit; margin:0 0 16px; }
.gp2 h1 { font-size:30px; line-height:1.2; font-weight:750; overflow-wrap:anywhere; }
.gp2 h2 { font-size:22px; line-height:1.3; font-weight:700; }
.gp2 h3 { font-size:18px; }
.gp2 p { line-height:1.6; }
.gp2 button,.gp2 input,.gp2 select { font:inherit; }
.gp2 button { cursor:pointer; }
.gp2 button:disabled { cursor:default; opacity:.5; }
.gp2 a { color:var(--gp2-green); text-decoration:none; }
.gp2 :focus-visible { outline:3px solid #db9830; outline-offset:3px; }
.gp2 svg { width:20px; height:20px; flex-shrink:0; stroke-width:2; }
.gp2-btn,.gp2-icon { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; border:1px solid var(--gp2-line); border-radius:6px; background:var(--gp2-paper); color:var(--gp2-ink); padding:10px 14px; text-decoration:none; font-weight:600; line-height:1.25; }
.gp2-btn:hover,.gp2-icon:hover { background:var(--gp2-wash); }
.gp2-primary { background:var(--gp2-green); border-color:var(--gp2-green); color:#fff; }
.gp2-primary:hover { background:#105539; color:#fff; }
.gp2-icon { width:44px; height:44px; flex-shrink:0; padding:10px; }
.gp2-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 0 16px; border-bottom:1px solid var(--gp2-line); }
.gp2-brand { display:flex; align-items:center; gap:12px; font-size:26px; font-weight:750; line-height:1.2; color:var(--gp2-ink)!important; min-width:0; }
.gp2-brand img { width:105px; height:48px; object-fit:contain; }
.gp2-brand small { display:block; color:var(--gp2-muted); font-size:14px; font-weight:500; margin-top:4px; }
.gp2-account { display:flex; align-items:center; gap:10px; min-width:0; }
.gp2-account>span { max-width:170px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }
.gp2-nav { display:flex; gap:24px; padding:12px 0 0; border-bottom:1px solid var(--gp2-line); }
.gp2-nav button,.gp2-nav a { display:flex; align-items:center; gap:8px; padding:12px 0; min-height:48px; border:0; border-bottom:3px solid transparent; border-radius:0; background:none; color:var(--gp2-muted); font-weight:600; }
.gp2-nav .is-active { color:var(--gp2-green); border-bottom-color:var(--gp2-green); }
.gp2-content { padding-top:24px; }
.gp2-home-grid { display:grid; grid-template-columns:1.1fr 1fr; gap:32px; }
.gp2-play-band,.gp2-daily-band { padding:8px 0 24px; }
.gp2-daily-band { padding-left:28px; border-left:1px solid var(--gp2-line); }
.gp2-daily-band h2 { font-size:28px; }
.gp2-home-actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:12px 0; }
.gp2-eyebrow { display:block; color:var(--gp2-muted); font-size:13px; font-weight:650; margin-bottom:8px; }
.gp2-meta { color:var(--gp2-muted); font-size:14px; line-height:1.5; }
.gp2-friends,.gp2-secondary,.gp2-teacher-band { border-top:1px solid var(--gp2-line); padding:22px 0; }
.gp2-friends h2 { font-size:20px; margin-bottom:12px; }
.gp2-resume { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-bottom:24px; border-bottom:1px solid var(--gp2-line); padding-bottom:18px; }
.gp2-resume>span { display:flex; align-items:center; gap:8px; margin-right:auto; }
.gp2-section-head,.gp2-school-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; }
.gp2-section-head h1,.gp2-section-head h2 { margin:0; }
.gp2-packages { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.gp2-package { border:1px solid var(--gp2-line); border-radius:8px; overflow:hidden; display:flex; flex-direction:column; }
.gp2-package>img { display:block; width:100%; height:180px; object-fit:cover; }
.gp2-package>div { display:flex; flex-direction:column; align-items:flex-start; padding:16px; flex:1; }
.gp2-package h2 { font-size:20px; }
.gp2-package p { color:var(--gp2-muted); font-size:14px; flex:1; }
.gp2-package .gp2-btn { margin-top:14px; }
.gp2-legacy-photo { display:block; max-width:100%; max-height:420px; object-fit:contain; margin:20px 0; }
.gp2-details { border-top:1px solid var(--gp2-line); padding:14px 0; }
.gp2-details summary { cursor:pointer; min-height:44px; display:flex; align-items:center; font-weight:650; }
.gp2-details[open] summary { margin-bottom:12px; }
.gp2-sponsors { display:flex; align-items:center; flex-wrap:wrap; gap:24px; }
.gp2-sponsors img { width:120px; height:65px; object-fit:contain; }
.gp2-table-wrap { overflow-x:auto; width:100%; margin:20px 0; }
.gp2 table { width:100%; border-collapse:collapse; font-size:14px; color:var(--gp2-ink); margin:0; }
.gp2 th,.gp2 td { text-align:left; padding:12px 10px; border:0; border-bottom:1px solid var(--gp2-line); vertical-align:middle; }
.gp2 th { background:var(--gp2-wash); font-weight:650; }
.gp2 table td:last-child { font-variant-numeric:tabular-nums; }
.gp2-form { display:flex; flex-direction:column; gap:16px; max-width:560px; margin:20px 0; }
.gp2-form label,.gp2-inline-form label,.gp2-class-select { display:flex; flex-direction:column; gap:6px; font-size:14px; font-weight:600; }
.gp2 input:not([type=checkbox]),.gp2 select { width:100%; min-height:44px; padding:10px 12px; border:1px solid #b9c9be; border-radius:5px; background:var(--gp2-paper); color:var(--gp2-ink); min-width:0; }
.gp2 input[type=checkbox] { width:20px; height:20px; flex-shrink:0; accent-color:var(--gp2-green); margin:0; }
.gp2 .gp2-check { display:flex; flex-direction:row; align-items:center; flex-wrap:wrap; gap:10px; min-height:44px; font-weight:400; }
.gp2-inline-form { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin:16px 0; }
.gp2-inline-form label { flex:1; min-width:100px; }
.gp2-class-select { max-width:440px; margin-top:24px; }
.gp2-field-row { display:grid; grid-template-columns:2fr 1fr; gap:16px; }
.gp2-location-picker { max-height:270px; overflow:auto; border:1px solid var(--gp2-line); padding:10px; }
.gp2-assignments { display:grid; gap:16px; }
.gp2-assignment { padding:20px; border:1px solid var(--gp2-line); border-radius:8px; display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px; }
.gp2-assignment h2 { font-size:20px; margin-bottom:8px; }
.gp2-assignment>.gp2-table-wrap { flex-basis:100%; }
.gp2-list { display:grid; gap:8px; margin:16px 0; }
.gp2-list>div { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--gp2-line); }
.gp2-list small { display:block; color:var(--gp2-muted); }
.gp2-list>div>span { flex:1; min-width:0; overflow-wrap:anywhere; }
.gp2-list progress { width:110px; max-width:30%; accent-color:var(--gp2-green); }
.gp2-stat-strip { display:flex; flex-wrap:wrap; gap:28px; padding:20px 0; border-bottom:1px solid var(--gp2-line); margin-bottom:16px; }
.gp2-stat-strip strong { display:block; font-size:26px; }
.gp2-badges { display:flex; flex-wrap:wrap; gap:18px; margin:24px 0; }
.gp2-badges>span { display:flex; align-items:center; gap:8px; color:var(--gp2-green); }
.gp2-article { display:flex; align-items:center; gap:10px; min-height:44px; padding:12px 0; border-bottom:1px solid var(--gp2-line); }
.gp2-article svg:last-child { margin-left:auto; }
.gp2-school-page { background:#f4f7f5; margin:0; }
.gp2-school-page>.gp2 { min-height:100vh; }
.gp2-dialog { width:min(420px,calc(100% - 32px)); border:1px solid var(--gp2-line); border-radius:8px; padding:24px; }
.gp2-dialog::backdrop { background:rgba(20,30,25,.6); }
.gp2-dialog dl { margin-bottom:24px; }
.gp2-dialog dt { color:var(--gp2-muted); font-size:14px; }
.gp2-dialog dd { margin:0 0 14px; font-size:24px; font-weight:650; font-variant-numeric:tabular-nums; }
.gp2-game-open { overflow:hidden!important; }
.gp2-stage { position:fixed; inset:0; width:100%; max-width:none; height:100vh; height:100dvh; margin:0; padding:0; z-index:2147482000; display:grid; grid-template-rows:auto minmax(0,1fr) auto; background:var(--gp2-paper); }
.gp2-round-header { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:64px; padding:8px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left)); padding-top:max(8px,env(safe-area-inset-top)); border-bottom:1px solid var(--gp2-line); }
.gp2-round-header>div { display:flex; align-items:center; gap:12px; font-size:14px; }
.gp2-round-header>div>strong { font-variant-numeric:tabular-nums; font-size:18px; }
.gp2-round-meta>span { color:var(--gp2-muted); }
.gp2-round-meta #gp2-clock { min-width:45px; text-align:center; }
.gp2 #gp2-clock.is-urgent { color:var(--gp2-coral); }
.gp2-round-body { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); min-height:0; overflow:hidden; }
.gp2-scene { position:relative; min-width:0; min-height:0; overflow:hidden; background:#e7ede8; display:flex; align-items:center; justify-content:center; touch-action:none; }
.gp2-scene>img { width:100%; height:100%; object-fit:contain; max-width:none; user-select:none; -webkit-user-drag:none; transform-origin:center; }
.gp2-scene-tools { position:absolute; top:12px; left:12px; display:flex; gap:6px; }
.gp2-scene-tools .gp2-icon,.gp2-map-tools .gp2-icon { background:#fff; color:#202725; border-color:#c4cec7; box-shadow:0 2px 8px #0002; }
.gp2-hint { position:absolute; bottom:14px; left:16px; max-width:calc(100% - 32px); padding:7px 12px; background:rgba(255,255,255,.94); color:#202725; border-radius:4px; font-size:14px; pointer-events:none; }
.gp2-guess-map { position:relative; min-height:0; min-width:0; border-left:1px solid var(--gp2-line); }
.gp2 #gp2-map,.gp2 #gp2-panorama { height:100%; width:100%; }
.gp2 #gp2-panorama { position:absolute; inset:0; }
.gp2-map-tools { position:absolute; right:12px; top:12px; z-index:800; display:flex; gap:8px; }
.gp2 #gp2-map-close,.gp2 #gp2-map-toggle { display:none; }
.gp2 .leaflet-control-zoom a { width:44px; height:44px; line-height:44px; }
.gp2 .leaflet-container { font:12px/1.4 system-ui,sans-serif; }
.gp2 .leaflet-control-attribution { max-width:calc(100% - 10px); font-size:10px; }
.gp2-pin-wrap { background:none; border:0; }
.gp2-pin { display:block; width:29px; height:29px; border:3px solid #fff; border-radius:50% 50% 50% 0; background:#bd423a; transform:rotate(-45deg); box-shadow:0 2px 5px #0006; }
.gp2-pin::after { content:''; display:block; width:9px; height:9px; margin:7px; background:#fff; border-radius:50%; }
.gp2-round-footer { display:grid; grid-template-columns:minmax(0,1fr) 44px; align-items:center; gap:10px; padding:10px max(16px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); border-top:1px solid var(--gp2-line); background:var(--gp2-paper); }
.gp2-round-footer .gp2-primary { height:48px; }
.gp2-round-footer #gp2-map-toggle { height:48px; }
.gp2 #gp2-map-toggle.has-guess { border-color:var(--gp2-green); color:var(--gp2-green); }
.gp2 #gp2-submit-state { grid-column:1/-1; font-size:13px; color:var(--gp2-coral); }
.gp2 #gp2-submit-state:empty { display:none; }
.gp2-result-scroll { padding:24px max(24px,env(safe-area-inset-right)) 24px max(24px,env(safe-area-inset-left)); overflow:auto; overscroll-behavior:contain; }
.gp2-result-scroll>h1 { font-size:25px; }
.gp2-reveal-summary { display:flex; align-items:center; flex-wrap:wrap; gap:32px; margin-bottom:20px; }
.gp2-reveal-summary>div { display:flex; align-items:baseline; gap:8px; }
.gp2-reveal-summary strong { font-size:30px; font-variant-numeric:tabular-nums; }
.gp2-reveal-summary span { color:var(--gp2-muted); }
.gp2-reveal-map { height:300px; max-height:42vh; min-height:180px; margin:16px 0 24px; }
.gp2-fact { max-width:850px; font-size:18px; }
.gp2-result-footer { display:flex; align-items:center; justify-content:flex-end; gap:12px; padding:12px 24px max(12px,env(safe-area-inset-bottom)); border-top:1px solid var(--gp2-line); }
.gp2-final-score { text-align:center; padding:4px 0 20px; }
.gp2-final-score h1 { font-size:42px; margin:0 0 4px; }
.gp2-final-score>span { color:var(--gp2-muted); }
.gp2-round-results details { border-bottom:1px solid var(--gp2-line); padding:12px 0; }
.gp2-round-results summary { display:flex; gap:16px; align-items:center; cursor:pointer; min-height:44px; }
.gp2-round-results summary>span:first-child { flex:1; }
.gp2-round-results summary>span:last-child { color:var(--gp2-muted); font-size:14px; }
.gp2-round-results details p { margin-top:16px; }
.gp2-waiting { display:flex; justify-content:center; align-items:center; padding:24px; overflow:auto; }
.gp2-waiting>div { width:100%; max-width:660px; text-align:center; }
.gp2-waiting>div>svg { width:48px; height:48px; color:var(--gp2-green); margin-bottom:16px; }
.gp2-scene-loading { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#202725; pointer-events:none; }
.gp2-toast { position:fixed; bottom:max(20px,env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); width:max-content; max-width:calc(100% - 32px); padding:12px 18px; background:#202725; color:#fff; border-radius:6px; box-shadow:0 4px 18px #0003; font:14px/1.5 system-ui,sans-serif; z-index:2147483000; }
.gp2-toast[hidden] { display:none; }
.gp2-toast-error { background:#9f342e; }
.gp2-report-detail { border-bottom:1px solid var(--gp2-line); }
.gp2-report-detail>summary { padding:12px 0; min-height:44px; cursor:pointer; font-weight:600; }
.gp2[data-theme=dark] { --gp2-ink:#e6eeea; --gp2-muted:#a6b9af; --gp2-paper:#202725; --gp2-line:#43564b; --gp2-green:#248961; --gp2-wash:#2d3932; --gp2-coral:#f0847a; }
@media(max-width:900px) { .gp2-packages { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:768px) {
  .gp2 { padding:16px; }
  .gp2-header { gap:8px; }
  .gp2-brand { font-size:22px; gap:8px; }
  .gp2-brand img { width:70px; height:36px; }
  .gp2-account>span { display:none; }
  .gp2-nav { gap:24px; justify-content:flex-start; }
  .gp2-home-grid { grid-template-columns:1fr; gap:0; }
  .gp2-daily-band { padding:20px 0; border-left:0; border-top:1px solid var(--gp2-line); }
  .gp2-play-band { padding-bottom:20px; }
  .gp2 h1 { font-size:26px; }
  .gp2-daily-band h2 { font-size:23px; }
  .gp2-section-head,.gp2-school-head { flex-wrap:wrap; gap:12px; }
  .gp2-stage { padding:0; }
  .gp2-round-header { min-height:60px; gap:8px; padding-left:max(12px,env(safe-area-inset-left)); padding-right:max(12px,env(safe-area-inset-right)); }
  .gp2-round-header>div { gap:8px; }
  .gp2-round-header>div>span { font-size:12px; }
  .gp2-round-meta>span { display:none; }
  .gp2-round-body { display:block; position:relative; }
  .gp2-scene { width:100%; height:100%; }
  .gp2-guess-map { position:absolute; inset:0; border:0; visibility:hidden; pointer-events:none; }
  .gp2-map-open .gp2-guess-map { visibility:visible; pointer-events:auto; }
  .gp2-map-open .gp2-scene { visibility:hidden; }
  .gp2 #gp2-map-close,.gp2 #gp2-map-toggle { display:inline-flex; }
  .gp2-round-footer { grid-template-columns:auto minmax(0,1fr) 44px; padding-left:max(12px,env(safe-area-inset-left)); padding-right:max(12px,env(safe-area-inset-right)); gap:8px; }
  .gp2-round-footer #gp2-map-toggle { max-width:138px; font-size:14px; padding:10px; }
  .gp2-result-scroll { padding:20px 16px; }
  .gp2-reveal-summary { gap:16px; }
  .gp2-reveal-summary strong { font-size:25px; }
  .gp2-reveal-summary span { font-size:13px; }
  .gp2-result-footer { padding-left:16px; padding-right:16px; flex-wrap:wrap; }
  .gp2-round-results summary { gap:10px; font-size:14px; }
  .gp2-round-results summary>span:last-child { font-size:12px; }
}
@media(max-width:480px) {
  .gp2-brand img { display:none; }
  .gp2-header .gp2-btn { padding:10px; font-size:14px; }
  .gp2-packages { grid-template-columns:1fr; }
  .gp2-package>img { height:190px; }
  .gp2-inline-form { align-items:stretch; }
  .gp2-inline-form label { flex-basis:100%; }
  .gp2-inline-form .gp2-btn { width:100%; }
  .gp2-field-row { grid-template-columns:1fr; }
  .gp2 th,.gp2 td { padding:10px 8px; font-size:13px; }
  .gp2-assignment { padding:16px; }
}
@media(prefers-reduced-motion:reduce) { .gp2 * { scroll-behavior:auto!important; } }
