:root {
  color-scheme: dark;
  --ink:#eff9ff;
  --muted:#9ec9e3;
  --blue:#083c72;
  --blue-deep:#052c56;
  --blue-mid:#0b4d8c;
  --panel:rgba(5,52,101,.84);
  --panel-strong:#073d73;
  --line:rgba(171,222,255,.3);
  --line-soft:rgba(171,222,255,.14);
  --paper:#dff5ff;
  --required:#ffd279;
  --optional:#98c8e6;
  --success:#93e5bd;
  --danger:#ff9b94;
  --shadow:0 24px 70px rgba(0,15,35,.25);
  --mono:"IBM Plex Mono",Consolas,"Courier New",monospace;
  --body:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --display:"Arial Narrow","Roboto Condensed",Impact,sans-serif;
}

* { box-sizing:border-box; }
html { min-width:320px; background:var(--blue-deep); scroll-behavior:smooth; }
body { margin:0; min-width:320px; color:var(--ink); font-family:var(--body); line-height:1.45; }
body::before { content:""; position:fixed; z-index:-2; inset:0; background-color:var(--blue); background-image:linear-gradient(rgba(144,210,246,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(144,210,246,.08) 1px,transparent 1px),linear-gradient(rgba(144,210,246,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(144,210,246,.035) 1px,transparent 1px); background-size:80px 80px,80px 80px,16px 16px,16px 16px; }
button,input,select { font:inherit; }
button,a,label,select { -webkit-tap-highlight-color:transparent; }
a { color:inherit; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible { outline:3px solid var(--paper); outline-offset:3px; }
.skip-link { position:fixed; z-index:100; top:8px; left:8px; padding:12px 18px; background:var(--paper); color:var(--blue-deep); transform:translateY(-150%); }
.skip-link:focus { transform:translateY(0); }
[hidden] { display:none !important; }
.mono,.cost,.summary-card>strong,.line-total strong { font-family:var(--mono); font-variant-numeric:tabular-nums; }

.brand { display:flex; align-items:center; gap:12px; text-decoration:none; }
.brand-mark { display:grid; width:40px; height:40px; place-items:center; border:1px solid var(--line); border-radius:50%; color:var(--paper); }
.brand strong,.brand small { display:block; text-transform:uppercase; }
.brand strong { font-size:13px; letter-spacing:.18em; }
.brand small { margin-top:2px; color:var(--muted); font-size:8px; letter-spacing:.13em; }
.button { display:inline-flex; min-height:42px; align-items:center; justify-content:center; gap:9px; padding:0 18px; border:1px solid transparent; border-radius:999px; color:var(--ink); cursor:pointer; font-weight:850; text-decoration:none; }
.button-primary { border-radius:2px; border-color:var(--paper); background:transparent; box-shadow:inset 0 0 0 1px var(--paper); letter-spacing:.06em; text-transform:uppercase; }
.button-primary:hover { background:var(--paper); color:var(--blue-deep); }
.button-ghost { border-color:var(--line); background:rgba(4,38,75,.24); }
.eyebrow,.card-kicker { color:var(--paper); font-size:10px; font-weight:900; letter-spacing:.18em; text-transform:uppercase; }

/* Landing */
.landing-page { min-height:100vh; overflow-x:hidden; }
.landing-shell { min-height:100vh; }
.masthead,.app-header { display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:70px; padding:14px clamp(20px,4vw,48px); border-bottom:1px solid var(--line); background:rgba(5,48,92,.88); backdrop-filter:blur(16px); }
.header-menu { display:flex; align-items:center; flex-wrap:wrap; gap:8px; min-width:0; }
.header-menu .button { white-space:nowrap; }
.header-menu [aria-current="page"] { border-color:var(--paper); color:var(--paper); }
.landing-hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,.9fr); gap:clamp(35px,7vw,100px); align-items:center; min-height:calc(100vh - 70px); width:min(1480px,100%); margin:auto; padding:70px clamp(22px,7vw,110px); }
.landing-copy h1 { margin:14px 0 24px; font:900 clamp(56px,7.6vw,118px)/.84 var(--display); letter-spacing:-.05em; text-transform:uppercase; }
.landing-copy h1 em { color:var(--paper); font-style:normal; -webkit-text-stroke:1px var(--paper); text-shadow:5px 5px 0 rgba(1,31,63,.7); }
.landing-copy>p:not(.eyebrow) { max-width:650px; color:var(--muted); font-size:clamp(16px,1.4vw,20px); }
.landing-tools { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; max-width:1100px; margin-top:30px; }
.landing-tool-card { position:relative; display:flex; min-height:158px; flex-direction:column; padding:18px; border:1px solid var(--line); background:linear-gradient(145deg,rgba(16,85,145,.62),rgba(3,46,90,.8)); color:inherit; text-decoration:none; overflow:hidden; transition:border-color .18s ease,transform .18s ease,background .18s ease; }
.landing-tool-card::after { content:""; position:absolute; right:-42px; bottom:-62px; width:115px; height:115px; border:1px solid var(--line); border-radius:50%; }
.landing-tool-card:hover { border-color:var(--paper); background:linear-gradient(145deg,rgba(21,99,163,.78),rgba(3,46,90,.9)); transform:translateY(-2px); }
.landing-tool-card strong { position:relative; z-index:1; margin:7px 0; font:900 22px/1 var(--display); letter-spacing:.01em; text-transform:uppercase; }
.landing-tool-card small { position:relative; z-index:1; color:var(--muted); font-size:10px; line-height:1.45; }
.landing-tool-card em { position:relative; z-index:1; margin-top:auto; padding-top:14px; color:var(--paper); font:normal 900 9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }
.text-link { color:var(--muted); font-size:12px; font-weight:800; text-underline-offset:4px; }
.feature-list { display:flex; flex-wrap:wrap; gap:12px 25px; margin:26px 0 0; padding:0; color:var(--muted); font-size:11px; list-style:none; }
.feature-list li::before { content:"✓"; margin-right:7px; color:var(--paper); }
.blueprint-plate { position:relative; min-height:500px; padding:28px; border:1px solid var(--line); background:linear-gradient(145deg,rgba(16,85,145,.68),rgba(3,46,90,.88)); box-shadow:var(--shadow),inset 0 0 0 5px rgba(4,44,85,.65); overflow:hidden; }
.blueprint-plate::before,.blueprint-plate::after { content:""; position:absolute; border:1px solid var(--line); border-radius:50%; }
.blueprint-plate::before { width:440px; height:440px; right:-190px; top:-140px; }
.blueprint-plate::after { width:220px; height:220px; left:-100px; bottom:-60px; }
.blueprint-plate img { position:absolute; z-index:2; width:115%; max-width:700px; top:35%; right:-14%; filter:brightness(0) invert(1) drop-shadow(0 22px 24px rgba(0,22,45,.46)); opacity:.86; }
.blueprint-plate>div { position:absolute; z-index:3; left:30px; bottom:30px; }
.blueprint-plate>div span,.blueprint-plate>div small,.plate-no { display:block; color:var(--muted); font:800 9px var(--mono); letter-spacing:.09em; text-transform:uppercase; }
.blueprint-plate>div strong { display:block; margin:5px 0; font:900 34px var(--display); text-transform:uppercase; }
.plate-no { position:absolute; right:20px; top:20px; writing-mode:vertical-rl; }

/* App shell */
.app-header { position:sticky; z-index:50; top:0; }
.header-status { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; min-width:0; gap:14px; color:var(--muted); font-size:10px; }
.header-status>span { display:flex; align-items:center; gap:7px; }
.header-status i { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--success); box-shadow:0 0 0 4px rgba(147,229,189,.12); }
.app-shell { width:min(1500px,100%); margin:auto; padding:28px clamp(18px,3vw,42px) 90px; }
.tracker-intro { display:grid; grid-template-columns:minmax(300px,.62fr) minmax(620px,1.38fr); gap:24px; align-items:stretch; }
.intro-copy { padding:10px 0; }
.intro-copy h1 { margin:8px 0 10px; font:900 clamp(48px,5.5vw,78px)/.83 var(--display); letter-spacing:-.045em; text-transform:uppercase; }
.intro-copy>p:last-child { max-width:470px; margin:0; color:var(--muted); }
.top-workspace { display:grid; grid-template-columns:minmax(400px,1.28fr) minmax(260px,.72fr); gap:12px; min-width:0; }
.command-card,.read-card,.summary-card,.filter-bar,.line-panel { border:1px solid var(--line); background:linear-gradient(135deg,rgba(8,67,124,.88),rgba(4,50,96,.92)); box-shadow:var(--shadow); }
.command-card { position:relative; min-width:0; padding:18px; overflow:hidden; }
.command-card::after,.summary-card::after { content:""; position:absolute; right:-50px; bottom:-70px; width:130px; height:130px; border:1px solid var(--line); border-radius:50%; }
.command-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:15px; margin-bottom:13px; }
.command-card h2 { margin:2px 0 0; font:900 22px var(--display); letter-spacing:.02em; text-transform:uppercase; }
.source-stamp { padding:5px 7px; border:1px solid var(--line); color:var(--muted); font:800 8px var(--mono); letter-spacing:.09em; }
.auth-controls { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:7px; }
.button-wg,.button-quiet { min-height:31px; padding:0 11px; border-radius:2px; font-size:8px; letter-spacing:.07em; text-transform:uppercase; }
.button-wg { border-color:var(--paper); background:var(--paper); color:var(--blue-deep); }
.button-quiet { border-color:var(--line); background:transparent; }
.source-stamp.connected { border-color:rgba(147,229,189,.6); color:var(--success); }
.search-panel { display:grid; grid-template-columns:115px minmax(190px,1fr) auto; gap:9px; }
.field { position:relative; min-width:0; }
.field>span,.compact-field>span { position:absolute; z-index:2; left:13px; top:6px; color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.field select,.field input,.compact-field select { width:100%; min-width:0; height:52px; padding:18px 13px 4px; border:1px solid var(--line); border-radius:10px; background:rgba(5,50,96,.75); color:var(--ink); }
.search-panel .button { min-height:52px; }
.search-results { position:absolute; z-index:20; top:132px; right:18px; left:142px; padding:7px; border:1px solid var(--line); background:#063665; box-shadow:var(--shadow); }
.search-result { display:flex; width:100%; justify-content:space-between; gap:12px; padding:10px 12px; border:0; background:transparent; color:var(--ink); cursor:pointer; text-align:left; }
.search-result:hover { background:rgba(216,244,255,.1); }
.search-result span { color:var(--muted); font-size:10px; }
.account-alert { position:relative; z-index:2; display:grid; gap:3px; margin-top:10px; padding:10px 12px; border:1px solid rgba(255,155,148,.65); background:rgba(119,25,35,.34); color:var(--danger); font-size:9px; line-height:1.45; }
.account-alert[hidden] { display:none; }
.account-alert strong { font-size:10px; text-transform:uppercase; }
.read-card { min-width:0; padding:18px; }
.read-card h2 { margin:3px 0 2px; font:900 17px var(--display); text-transform:uppercase; }
.read-card>p { margin:0; color:var(--muted); font-size:8px; }
.read-guide { display:grid; gap:7px; margin-top:13px; padding-top:12px; border-top:1px dashed var(--line); }
.guide-item strong,.guide-item small { display:block; }
.guide-item small { margin-top:2px; color:var(--muted); font-size:8px; }
.guide-item { display:flex; align-items:center; gap:8px; }
.guide-item>b { display:grid; width:25px; height:25px; flex:0 0 auto; place-items:center; background:rgba(28,126,194,.42); color:var(--paper); font:900 9px var(--mono); }
.guide-item strong { font-size:9px; }

.summary-grid { display:grid; grid-template-columns:1.45fr repeat(5,minmax(120px,.7fr)); gap:12px; margin:20px 0; }
.summary-card { position:relative; min-height:116px; padding:20px; overflow:hidden; }
.summary-card.player-card { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:14px; }
.avatar { display:grid; width:50px; height:50px; place-items:center; border-radius:50%; background:var(--paper); color:var(--blue-deep); font:900 13px var(--mono); }
.player-card h2 { margin:0; font-size:15px; }
.player-card h2 span { color:var(--muted); font-size:9px; }
.player-card p { margin:4px 0 0; color:var(--muted); font-size:9px; }
.completion { text-align:right; }
.completion strong,.completion span { display:block; }
.completion strong { font:900 28px var(--mono); }
.completion span,.summary-card>span:last-child { color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.metric-icon { display:block; color:var(--paper); font-size:15px; }
.summary-card>strong { display:block; margin:9px 0 2px; font-size:clamp(20px,2vw,29px); }
.summary-card.required-card>strong { color:var(--required); }
.summary-card.optional-card>strong { color:var(--optional); }

.filter-bar { display:grid; grid-template-columns:minmax(230px,.8fr) minmax(210px,.65fr) minmax(280px,1.35fr); align-items:start; gap:10px; margin-bottom:12px; padding:12px 14px; box-shadow:none; }
.nation-filter { display:flex; grid-column:1/-1; min-width:0; max-width:100%; gap:6px; margin:0; padding:0 0 3px; border:0; overflow-x:auto; }
.nation-filter legend { margin-bottom:5px; color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.nation-option { position:relative; display:flex; min-height:36px; align-items:center; gap:5px; padding:0 11px; border:1px solid var(--line); border-radius:999px; color:var(--muted); cursor:pointer; font-size:10px; font-weight:800; }
.nation-option input { position:absolute; opacity:0; pointer-events:none; }
.nation-option:has(input:checked) { border-color:var(--paper); background:var(--paper); color:var(--blue-deep); }
.multi-filter { display:flex; align-content:flex-start; flex-wrap:wrap; gap:6px; min-width:0; max-height:92px; margin:0; padding:0 0 3px; border:0; overflow:auto; }
.multi-filter legend { width:100%; margin-bottom:5px; color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.multi-filter label { position:relative; display:inline-flex; min-height:32px; align-items:center; gap:5px; padding:0 9px; border:1px solid var(--line); border-radius:999px; color:var(--muted); cursor:pointer; font-size:8px; font-weight:850; white-space:nowrap; }
.multi-filter label:has(input:checked) { border-color:var(--paper); background:rgba(223,245,255,.12); color:var(--paper); }
.multi-filter input { margin:0; accent-color:var(--paper); }
.filter-empty { color:var(--muted); font-size:9px; }
.compact-field { position:relative; display:block; width:165px; }
.compact-field select { height:44px; padding-top:16px; }
.filter-meta { display:flex; grid-column:1/-1; align-items:center; justify-content:space-between; gap:14px; padding-top:4px; color:var(--muted); font-size:9px; }
.filter-meta a { color:var(--paper); text-underline-offset:3px; }

.line-panel { overflow:hidden; }
.line-head { display:grid; grid-template-columns:1fr repeat(4,auto); gap:25px; align-items:center; padding:18px 20px; border-bottom:1px solid var(--line); }
.overview-head { grid-template-columns:1fr repeat(3,auto); }
.nation-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; padding:14px; }
.nation-summary { display:grid; grid-template-columns:1fr auto; gap:13px; min-width:0; padding:16px; border:1px solid var(--line-soft); background:rgba(3,43,84,.42); }
.nation-summary-head { display:flex; align-items:center; gap:10px; min-width:0; }
.nation-summary-head .flag { flex:0 0 auto; }
.nation-summary h3 { margin:0; font-size:12px; }
.nation-summary p { margin:2px 0 0; color:var(--muted); font-size:8px; }
.nation-progress { text-align:right; }
.nation-progress strong,.nation-progress span { display:block; }
.nation-progress strong { font:900 16px var(--mono); }
.nation-progress span { color:var(--muted); font-size:7px; text-transform:uppercase; }
.nation-metrics { display:grid; grid-template-columns:repeat(3,1fr); grid-column:1/-1; gap:7px; }
.nation-metric { padding:8px; border-top:1px solid var(--line-soft); }
.nation-metric strong,.nation-metric span { display:block; }
.nation-metric strong { font:900 10px var(--mono); }
.nation-metric.required strong { color:var(--required); }
.nation-metric span { margin-top:2px; color:var(--muted); font-size:7px; text-transform:uppercase; }
.nation-open { grid-column:1/-1; justify-self:start; padding:0; border:0; border-bottom:1px dashed var(--line); background:transparent; color:var(--paper); cursor:pointer; font-size:8px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.ship-roster-panel { margin-top:12px; }
.roster-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:16px 20px; border-bottom:1px solid var(--line); }
.roster-total { text-align:right; }
.roster-total strong,.roster-total span { display:block; }
.roster-total strong { font:900 20px var(--mono); }
.roster-total span { color:var(--muted); font-size:7px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.ship-roster { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; padding:14px; }
.roster-ship { display:grid; grid-template-columns:88px minmax(0,1fr); min-height:74px; align-items:center; gap:10px; padding:9px; border:1px solid var(--line-soft); background:rgba(3,43,84,.42); }
.roster-ship.is-owned { border-color:rgba(147,229,189,.42); background:rgba(147,229,189,.045); }
.roster-ship.is-researched:not(.is-owned) { border-color:rgba(223,245,255,.35); }
.roster-image { position:relative; width:88px; height:48px; border-radius:6px; background:rgba(16,104,169,.38); overflow:hidden; }
.roster-image img { width:100%; height:100%; object-fit:contain; filter:brightness(0) invert(1); opacity:.58; }
.roster-copy { min-width:0; }
.roster-copy strong,.roster-copy small { display:block; }
.roster-copy strong { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.roster-copy small { margin-top:3px; color:var(--muted); font-size:7px; line-height:1.4; }
.roster-status { display:inline-block; margin-top:5px; padding:2px 5px; border:1px solid var(--line); border-radius:999px; color:var(--muted); font-size:6px; font-weight:900; letter-spacing:.05em; text-transform:uppercase; }
.roster-ship.is-owned .roster-status { border-color:rgba(147,229,189,.5); color:var(--success); }
.roster-ship.is-researched:not(.is-owned) .roster-status { color:var(--paper); }
.line-title { display:flex; align-items:center; gap:12px; }
.flag { display:grid; width:34px; height:34px; place-items:center; border:1px solid var(--line); border-radius:8px; font-size:18px; }
.line-title h2 { margin:0; font-size:14px; }
.line-title p { margin:3px 0 0; color:var(--muted); font-size:9px; }
.line-total { text-align:right; }
.line-total strong,.line-total span { display:block; }
.line-total strong { font-size:13px; }
.line-total span { margin-top:2px; color:var(--muted); font-size:7px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.line-total.required strong { color:var(--required); }
.line-total.optional strong { color:var(--optional); }
.table-scroll { overflow-x:auto; }
.ship-table { width:100%; min-width:1050px; border-collapse:collapse; }
.ship-table th { padding:11px 14px; color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.1em; text-align:left; text-transform:uppercase; }
.ship-table th:not(:first-child),.ship-table td:not(:first-child) { text-align:right; }
.ship-table td { padding:11px 14px; border-top:1px solid var(--line-soft); vertical-align:middle; }
.route-divider td { padding:9px 14px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:rgba(223,245,255,.07); color:var(--paper); font-size:9px; font-weight:900; letter-spacing:.07em; text-align:left !important; text-transform:uppercase; }
.route-divider strong { margin-right:10px; }
.route-divider span { color:var(--muted); font-size:8px; }
.required-heading { color:var(--required) !important; }
.ship-row.is-next { background:rgba(221,246,255,.055); }
.ship-row.is-complete { opacity:.62; }
.ship-cell { display:flex; min-width:280px; align-items:center; gap:12px; }
.ship-image { position:relative; width:112px; min-width:112px; height:45px; border-radius:8px; background:rgba(16,104,169,.4); overflow:hidden; }
.ship-image img { width:100%; height:100%; object-fit:contain; filter:brightness(0) invert(1); opacity:.55; }
.tier { position:absolute; top:4px; left:5px; padding:1px 5px; border-radius:3px; background:rgba(1,39,77,.86); color:var(--paper); font:900 8px var(--mono); }
.ship-copy strong,.ship-copy small { display:block; }
.ship-copy strong { font-size:12px; }
.ship-copy small { margin-top:2px; color:var(--muted); font-size:8px; }
.module-toggle { display:inline-flex; align-items:center; gap:6px; margin-top:5px; padding:0 0 2px; border:0; border-bottom:1px dashed var(--line); background:transparent; color:var(--paper); cursor:pointer; font:800 8px var(--mono); text-transform:uppercase; }
.status-stack { display:inline-flex; gap:5px; }
.status-pill { position:relative; display:inline-flex; align-items:center; gap:4px; padding:5px 7px; border:1px solid var(--line); border-radius:999px; color:var(--muted); cursor:pointer; font-size:8px; font-weight:800; white-space:nowrap; }
.status-pill input,.module-item input { accent-color:var(--paper); }
.status-pill:has(input:checked) { border-color:rgba(147,229,189,.55); color:var(--success); background:rgba(147,229,189,.06); }
.cost { font-size:10px; white-space:nowrap; }
.cost.zero { color:var(--muted); }
.cost.required { color:var(--required); font-weight:900; }
.cost.optional { color:var(--optional); }
.module-row td { padding:0 14px 12px !important; border-top:0; text-align:left !important; }
.module-drawer { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:12px; border:1px dashed var(--line); background:rgba(2,39,75,.48); }
.module-group { padding:10px; border:1px solid var(--line-soft); }
.module-group.required { border-color:rgba(255,210,121,.5); background:rgba(255,210,121,.04); }
.module-group header { display:flex; justify-content:space-between; gap:12px; margin-bottom:6px; font:900 8px var(--mono); letter-spacing:.07em; text-transform:uppercase; }
.module-group.required header { color:var(--required); }
.module-group.optional header { color:var(--optional); }
.module-item { display:grid; grid-template-columns:17px 80px minmax(150px,1fr) auto; gap:8px; align-items:center; min-height:29px; border-top:1px solid var(--line-soft); cursor:pointer; font-size:8px; }
.module-item .type { color:var(--muted); text-transform:uppercase; }
.module-item b { font-family:var(--mono); white-space:nowrap; }
.line-note { display:flex; justify-content:space-between; gap:20px; padding:10px 16px; border-top:1px solid var(--line); color:var(--muted); font-size:8px; }
.line-note a { color:var(--paper); text-underline-offset:2px; }
.toast { position:fixed; z-index:100; right:20px; bottom:20px; max-width:360px; padding:13px 16px; border:1px solid var(--line); background:#052f5b; box-shadow:var(--shadow); font-size:11px; }
.toast.error { border-color:rgba(255,155,148,.6); color:var(--danger); }

/* Collapsible planner sections */
.panel-disclosure { min-width:0; }
.panel-summary { position:relative; display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:48px; padding:14px 50px 14px 18px; border-bottom:1px solid var(--line); cursor:pointer; list-style:none; }
.panel-summary::-webkit-details-marker { display:none; }
.panel-summary::after { content:""; position:absolute; top:50%; right:21px; width:8px; height:8px; border-right:2px solid var(--muted); border-bottom:2px solid var(--muted); transform:translateY(-70%) rotate(45deg); }
.panel-disclosure[open]>.panel-summary::after { transform:translateY(-25%) rotate(225deg); }
.panel-disclosure:not([open])>.panel-summary { margin-bottom:0; border-bottom:0; }
.panel-summary:hover { background:rgba(223,245,255,.04); }
.panel-summary:focus-visible { outline:3px solid var(--paper); outline-offset:-4px; }
.panel-summary h2 { margin:0; font-size:14px; }
.panel-meta { color:var(--muted); font-size:9px; text-align:right; }
.panel-summary.line-head { display:grid; }
.top-workspace:has(>.panel-disclosure) { align-items:start; }
.command-card.panel-disclosure::after { pointer-events:none; }
.command-card>.panel-summary,.read-card>.panel-summary { min-height:0; padding:0 25px 0 0; border:0; }
.command-card>.panel-summary::after,.read-card>.panel-summary::after { right:3px; }
.command-card>.panel-summary h2 { margin:2px 0 0; font-size:22px; }
.read-card>.panel-summary h2 { margin:3px 0 2px; font-size:17px; }
.read-card[open]>.panel-summary { margin-bottom:6px; }
.command-card.panel-disclosure>.auth-controls { justify-content:flex-start; max-width:none; margin-bottom:12px; }
.command-card.panel-disclosure>.search-results { position:relative; inset:auto; margin-top:10px; }
.fleet-totals-panel { margin:20px 0 12px; }
.fleet-totals-panel>.summary-grid { margin:0; padding:12px; }
.filter-panel,.routes-panel { margin-bottom:12px; }
.filter-panel>.filter-bar { grid-template-columns:1fr 1fr; margin:0; padding:14px 18px; border:0; background:none; box-shadow:none; }
.filter-panel .multi-filter { max-height:none; }
.routes-panel>.route-multi { display:block; width:auto; max-height:none; margin:18px; padding:0; overflow:visible; }
.routes-panel .route-multi label { max-width:100%; min-width:0; min-height:36px; padding:7px 11px; font-size:10px; white-space:normal; overflow-wrap:anywhere; }
.routes-panel .route-multi input { flex-shrink:0; }
.route-nation-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr)); align-items:start; gap:14px; margin-top:14px; }
.route-nation { min-width:0; padding:12px; border:1px solid var(--line); background:rgba(4,38,75,.24); }
.route-nation>header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid var(--line-soft); }
.route-nation h3 { margin:0; font-size:13px; }
.route-nation h3>span { margin-right:4px; }
.route-nation>header>span { flex-shrink:0; color:var(--muted); font-size:10px; }
.route-nation-options { display:grid; gap:5px; }
.route-nation:only-child .route-nation-options { grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr)); }
.routes-panel .route-nation-options label { width:100%; justify-content:flex-start; gap:9px; border-radius:3px; font-size:11px; }
.route-nation-options label:hover { background:rgba(223,245,255,.08); }
.route-arrow { color:var(--muted); }
.panel-disclosure[id] { scroll-margin-top:150px; }

@media (max-width:1150px) {
  .header-status>span { display:none; }
  .tracker-intro { grid-template-columns:minmax(0,1fr); }
  .intro-copy { min-width:0; }
  .summary-grid { grid-template-columns:repeat(5,1fr); }
  .summary-card.player-card { grid-column:1/-1; }
  .line-head { gap:14px; }
  .nation-overview { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .filter-bar { grid-template-columns:1fr 1fr; }
  .route-multi { grid-column:1/-1; }
  .ship-roster { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:820px) {
  .masthead,.app-header { flex-wrap:wrap; }
  .header-status,.header-menu { width:100%; }
  .header-menu { flex-wrap:nowrap; overflow-x:auto; padding-bottom:2px; }
  .header-menu .button { flex:0 0 auto; }
  .landing-hero { grid-template-columns:1fr; padding-top:50px; }
  .blueprint-plate { min-height:340px; }
  .blueprint-plate img { top:30%; }
  .header-status>span { display:none; }
  .top-workspace { grid-template-columns:1fr; }
  .summary-grid { grid-template-columns:1fr 1fr; }
  .summary-card.player-card { grid-column:1/-1; }
  .filter-bar { grid-template-columns:1fr; }
  .nation-filter { width:100%; min-width:0; max-width:100%; overflow-x:auto; padding-bottom:3px; }
  .nation-filter,.filter-meta { grid-column:1; }
  .multi-filter { width:100%; max-height:112px; }
  .compact-field { flex:1; min-width:145px; }
  .filter-meta { width:100%; justify-content:space-between; padding:4px 0 0; }
  .line-head { grid-template-columns:1fr 1fr; }
  .line-title { grid-column:1/-1; }
  .line-total { text-align:left; }
  .line-total.optional,.line-total:last-child { display:none; }
  .overview-head .line-total { display:block; }
  .overview-head .line-total:last-child { display:none; }
  .ship-roster { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:560px) {
  .filter-panel>.filter-bar { grid-template-columns:1fr; padding:12px; }
  .routes-panel>.route-multi { margin:12px; }
  .routes-panel .route-nation-options label { min-height:44px; }
  .routes-panel>.panel-summary { align-items:flex-start; flex-direction:column; gap:4px; }
  .panel-meta { text-align:left; }
  .fleet-totals-panel>.summary-grid { padding:8px; }
  .masthead,.app-header { padding:12px 15px; }
  .brand small { display:none; }
  .landing-hero { padding:42px 18px 70px; }
  .landing-copy h1 { font-size:clamp(48px,17vw,72px); }
  .landing-tools { grid-template-columns:1fr; }
  .landing-tool-card { min-height:145px; }
  .blueprint-plate { min-height:290px; }
  .app-shell { padding:22px 13px 80px; }
  .intro-copy h1 { font-size:42px; }
  .command-card { padding:14px; }
  .command-card-head { align-items:flex-start; }
  .auth-controls { max-width:165px; }
  .search-panel { grid-template-columns:88px 1fr; }
  .search-panel .button { grid-column:1/-1; }
  .search-results { top:182px; left:14px; right:14px; }
  .read-guide { grid-template-columns:1fr 1fr 1fr; }
  .summary-grid { gap:8px; }
  .summary-card { min-height:104px; padding:15px; }
  .summary-card.player-card { grid-template-columns:auto 1fr; }
  .completion { grid-column:1/-1; display:flex; align-items:center; justify-content:space-between; text-align:left; }
  .summary-card>strong { font-size:20px; }
  .module-drawer { grid-template-columns:1fr; }
  .nation-overview { grid-template-columns:1fr; }
  .ship-roster { grid-template-columns:1fr; }
  .roster-head { align-items:flex-start; }
  .line-note { display:block; }
  .line-note span { display:block; margin:2px 0; }
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto !important; transition:none !important; }
}
