.app-shell > div,
.spaceport-main,
#spaceport-app,
#lodge-app,
#person-app,
.section-block,
.sp-grid > *,
.lodge-layout > *,
.person-layout > * { min-width: 0; }
.spaceport-main { width: 100%; max-width: 1700px; margin: 0 auto; padding: 26px 26px 80px; overflow-x: clip; }
.hidden { display: none !important; }
.eyebrow { color: var(--text-3); font: 700 10px/1.4 var(--mono); letter-spacing: .13em; }
.spaceport-loading { min-height: 60vh; display: grid; place-content: center; justify-items: center; gap: 10px; color: var(--text-2); }
.spaceport-loading h1 { margin-top: 8px; color: var(--text); }
.loading-orbit { width: 42px; height: 42px; border: 2px solid var(--line-strong); border-top-color: var(--text); border-radius: 50%; animation: orbit 1s linear infinite; }
@keyframes orbit { to { transform: rotate(360deg); } }

.sp-hero { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.sp-hero h1 { margin: 0; font-size: 30px; }
.hero-title-row { display: flex; align-items: center; gap: 9px; }
.public-brand { gap: 10px; color: inherit; text-decoration: none; }
.spaceport-mark { position: relative; width: 27px; height: 27px; flex: none; overflow: hidden; border: 1px solid rgba(155,170,255,.36); border-radius: 8px; background: radial-gradient(circle at 68% 28%, rgba(162,176,255,.22), transparent 36%), linear-gradient(145deg, #1c2130, #10131b); box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 5px 14px rgba(0,0,0,.22); }
.spaceport-mark::before { content: ''; position: absolute; top: 7px; left: 4px; width: 17px; height: 10px; border: 1.5px solid #aab6ff; border-radius: 50%; opacity: .9; transform: rotate(-28deg); }
.spaceport-mark::after { content: ''; position: absolute; top: 5px; right: 4px; width: 4px; height: 4px; border-radius: 50%; background: #dce2ff; box-shadow: 0 0 0 2px rgba(142,160,255,.2), 0 0 8px rgba(151,168,255,.72); }
.spaceport-mark i { position: absolute; top: 10px; left: 10px; width: 7px; height: 7px; border: 1.5px solid #d6dcff; border-radius: 2px; background: #242b3d; box-shadow: 0 0 8px rgba(142,160,255,.32); transform: rotate(45deg); }
.spaceport-wordmark { display: inline-flex; align-items: baseline; letter-spacing: -.025em; }
.spaceport-wordmark b { color: var(--text); font-weight: 720; }
.spaceport-wordmark span { color: #aab6ff; font-weight: 620; }
.public-brand:hover .spaceport-mark, .public-brand:focus-visible .spaceport-mark { border-color: rgba(178,188,255,.7); box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 0 0 3px rgba(109,131,245,.1), 0 7px 18px rgba(0,0,0,.28); }
.public-brand:focus-visible { border-radius: 8px; outline: 2px solid var(--focus); outline-offset: 2px; }

.term-help { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; margin-left: 3px; border: 1px solid var(--line-strong); border-radius: 50%; color: var(--text-3); font: 700 9px/1 var(--mono); letter-spacing: 0; text-transform: none; vertical-align: 1px; cursor: help; outline: none; }
.term-help-large { width: 18px; height: 18px; margin-left: 0; font-size: 11px; }
.term-help:hover, .term-help:focus-visible { border-color: rgba(178,188,255,.55); color: #c4ccff; background: var(--focus-soft); }
.term-help:focus-visible { box-shadow: 0 0 0 2px rgba(109,131,245,.3); }
.term-help::after { content: attr(data-definition); position: absolute; z-index: 30; top: calc(100% + 8px); left: -8px; width: min(290px, calc(100vw - 44px)); padding: 9px 10px; border: 1px solid var(--line-strong); border-radius: 7px; background: rgba(12,14,20,.98); box-shadow: 0 10px 28px rgba(0,0,0,.42); color: var(--text-2); font: 10px/1.5 Inter, sans-serif; letter-spacing: 0; text-align: left; text-transform: none; white-space: normal; pointer-events: none; opacity: 0; visibility: hidden; transition: opacity .12s ease, visibility 0s linear .12s; }
.term-help.align-right::after { right: -8px; left: auto; }
.term-help:hover::after { opacity: 1; visibility: visible; transition-delay: .55s; }
.term-help:focus-visible::after { opacity: 1; visibility: visible; transition-delay: 0s; }

.scorecard { display: grid; grid-template-columns: repeat(6, minmax(120px, 1fr)); gap: 10px; margin-bottom: 26px; }
.score { min-width: 0; padding: 15px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.score > span { color: var(--text-3); font-size: 10px; text-transform: uppercase; letter-spacing: .06em; }
.score strong { display: block; margin: 8px 0 4px; font: 650 20px/1.1 var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.score small { color: var(--text-3); font-size: 10px; line-height: 1.4; }
.score.signal strong { color: #9faeff; }

.sp-grid { display: grid; gap: 12px; }
.sp-grid-2 { grid-template-columns: minmax(0, 1.45fr) minmax(350px, .8fr); }
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 17px; min-width: 0; }
.panel-head, .section-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 13px; }
.panel-head h2, .section-heading h2 { margin-top: 3px; }
.panel-note, .section-note { color: var(--text-3); font: 10px var(--mono); }
.section-block { margin-top: 32px; }
.leaderboard-heading input, .leaderboard-heading select, .table-tools input, .table-tools select, .hygiene-toolbar input, .hygiene-toolbar select { min-width: 170px; }
.table-tools { display: flex; gap: 8px; }

.growth-chart { position: relative; min-height: 270px; outline: none; }
.growth-chart:focus-visible { border-radius: var(--radius-sm); box-shadow: 0 0 0 2px var(--focus); }
.growth-chart svg { display: block; width: 100%; height: auto; aspect-ratio: 760 / 250; overflow: visible; }
.growth-grid { stroke: rgba(255,255,255,.05); }
.growth-area { fill: rgba(109,131,245,.09); }
.growth-line { fill: none; stroke: #b2bcff; stroke-width: 2.5; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.growth-dot { fill: #eef0ff; transition: r .12s ease; }
.growth-dot.active { fill: #fff; r: 4px; }
.growth-label { fill: var(--text-3); font: 9px var(--mono); }
.growth-axis-label { fill: var(--text-3); font: 8px var(--mono); }
.growth-milestone line { stroke: rgba(152,168,255,.32); stroke-width: 1; stroke-dasharray: 2 3; vector-effect: non-scaling-stroke; }
.growth-milestone circle { fill: #8ea0ff; stroke: #161a24; stroke-width: 2; vector-effect: non-scaling-stroke; }
.growth-milestone.active line { stroke: rgba(214,220,255,.78); }
.growth-milestone.active circle { fill: #eef0ff; }
.growth-milestone-link { position: absolute; z-index: 2; top: calc(var(--milestone-lane) * 20px); left: var(--milestone-x); display: grid; justify-items: center; max-width: 118px; color: #dfe4ff; font-family: var(--mono); text-decoration: none; transform: translateX(-50%); }
.growth-milestone-link.edge-left { justify-items: start; transform: none; }
.growth-milestone-link.edge-right { justify-items: end; transform: translateX(-100%); }
.growth-milestone-link strong { max-width: 118px; overflow: hidden; color: inherit; font-size: 8.5px; line-height: 1.1; text-overflow: ellipsis; white-space: nowrap; }
.growth-milestone-link small { color: #8fa0ff; font-size: 7.5px; font-weight: 700; line-height: 1.25; text-transform: uppercase; }
.growth-milestone-link:hover strong, .growth-milestone-link:focus-visible strong, .growth-milestone-link.active strong { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.growth-milestone-link:focus-visible { border-radius: 3px; outline: 2px solid var(--focus); outline-offset: 3px; }
.growth-point { cursor: crosshair; }
.growth-hit { fill: transparent; pointer-events: all; }
.growth-cursor { stroke: rgba(216,211,255,.58); stroke-width: 1; stroke-dasharray: 2 3; opacity: 0; vector-effect: non-scaling-stroke; pointer-events: none; }
.growth-focus-dot { fill: #b9c4ff; stroke: #11141b; stroke-width: 1.5; opacity: 0; vector-effect: non-scaling-stroke; pointer-events: none; }
.growth-point.active .growth-cursor, .growth-point.active .growth-focus-dot { opacity: 1; }
.growth-chart:focus-visible .growth-point.active .growth-hit { fill: rgba(109,131,245,.08); stroke: rgba(178,188,255,.38); stroke-width: 1; vector-effect: non-scaling-stroke; }
.growth-tooltip { display: block; position: absolute; z-index: 3; top: 7px; width: min(210px, calc(100% - 12px)); padding: 9px 10px; border: 1px solid rgba(109,131,245,.36); border-radius: 7px; background: rgba(12,14,20,.96); box-shadow: 0 8px 22px rgba(0,0,0,.35); color: var(--text); pointer-events: none; transform: translateX(6px); white-space: normal; }
.growth-tooltip.align-right { transform: translateX(calc(-100% - 6px)); }
.growth-tooltip.align-bottom { top: auto; bottom: 35px; }
.growth-tooltip[aria-hidden="true"] { display: none; }
.growth-tooltip strong { display: block; margin-bottom: 5px; font: 650 10px/1.2 var(--mono); }
.growth-tooltip span { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-top: 3px; }
.growth-tooltip small { color: var(--text-3); font-size: 9px; }
.growth-tooltip b { max-width: 64%; font: 600 10px/1.2 var(--mono); text-align: right; overflow-wrap: anywhere; }
.growth-legend { display: flex; gap: 18px; margin-top: 8px; color: var(--text-3); font-size: 10px; }
.growth-legend i { width: 8px; height: 8px; display: inline-block; margin-right: 5px; border-radius: 2px; background: rgba(109,131,245,.65); }
.growth-legend i.line { height: 2px; background: #b2bcff; vertical-align: middle; }
.growth-legend i.milestone { border-radius: 50%; background: #8ea0ff; box-shadow: 0 0 0 2px #202636; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

.health-signals { display: grid; gap: 9px; }
.health-signal { padding: 12px; border-left: 2px solid var(--line-strong); background: var(--surface-2); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.health-signal.good { border-color: var(--pos); }
.health-signal.watch { border-color: var(--warn); }
.health-signal strong { display: block; font-size: 12px; margin-bottom: 3px; }
.health-signal span { color: var(--text-3); font-size: 11px; line-height: 1.45; }

.table-shell { width: 100%; max-width: 100%; min-width: 0; overflow-x: auto; overflow-y: hidden; border: 1px solid var(--line); border-radius: var(--radius); overscroll-behavior-x: contain; }
.data-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.data-table th { position: sticky; top: 0; z-index: 2; background: var(--surface-2); color: var(--text-3); text-align: left; font: 700 9px var(--mono); text-transform: uppercase; letter-spacing: .05em; white-space: nowrap; }
.data-table th, .data-table td { padding: 9px 10px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
.lodge-table .sort-header { border-radius: 3px; transition: color .12s ease; }
.lodge-table .sort-header:hover, .lodge-table .sort-header:focus-visible, .lodge-table .sort-header.active { color: #d9deff; }
.lodge-table .sort-header:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.lodge-table .sort-indicator { display: inline-block; width: 9px; color: #7784c7; font-size: 9px; text-align: center; }
.lodge-table .sort-header:not(.active) .sort-indicator { color: var(--text-3); opacity: .55; }
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover { background: rgba(255,255,255,.025); }
.data-table td:not(:first-child):not(:nth-child(2)) { font-family: var(--mono); white-space: nowrap; }
.rank-cell { display: flex; align-items: center; gap: 9px; min-width: 190px; }
.rank { color: var(--text-3); font: 10px var(--mono); width: 20px; text-align: right; }
.primary { display: block; color: var(--text); font-weight: 600; text-decoration: none; }
.lodge-detail-link:hover, .lodge-detail-link:focus-visible { color: #b9c3ff; text-decoration: underline; text-decoration-color: var(--focus); text-underline-offset: 3px; }
.secondary { display: block; color: var(--text-3); font-size: 9px; margin-top: 2px; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pill { display: inline-block; padding: 3px 7px; border: 1px solid var(--line-strong); border-radius: 99px; color: var(--text-2); font: 9px var(--mono); }
.pill.growing, .pill.network-hub { color: var(--pos); border-color: var(--pos-line); background: var(--pos-bg); }
.pill.quiet, .pill.seed { color: var(--warn); border-color: var(--warn-line); background: var(--warn-bg); }
.pill.test { color: #b5a8ff; border-color: rgba(141,123,255,.4); background: rgba(141,123,255,.1); }
.classification-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border: 1px solid var(--line); border-radius: 5px; color: var(--text-3); background: var(--surface-2); font: 700 8px var(--mono); letter-spacing: .04em; text-transform: uppercase; }
.classification-badge i { width: 6px; height: 6px; border-radius: 50%; background: #71807a; }
.classification-badge.is-production i { background: #75a38e; box-shadow: 0 0 0 2px rgba(117,163,142,.1); }
.classification-badge.is-test { color: #aaa2d5; border-color: rgba(141,123,255,.2); background: rgba(141,123,255,.05); }
.classification-badge.is-test i { background: #8d7bba; box-shadow: 0 0 0 2px rgba(141,123,186,.1); }
.classify-button { border: 0; background: transparent; color: var(--text-3); cursor: pointer; font: 9px var(--mono); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.classify-button:hover { color: var(--text); }
.classification-edit { display: inline-block; margin-left: 7px; color: var(--text-3); font: 9px var(--mono); text-underline-offset: 3px; }
.classification-edit:hover { color: var(--text); }

.overlap-list { display: grid; gap: 8px; }
.overlap-row { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: center; gap: 10px; padding: 11px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); }
.overlap-row .lodge-b { text-align: right; }
.overlap-count { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--focus-soft); color: #b9c3ff; font: 650 13px var(--mono); }
.overlap-members { grid-column: 1 / -1; color: var(--text-3); font-size: 9px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.overlap-members a { color: inherit; text-decoration: none; }
.overlap-members a:hover { color: #b9c3ff; }
.empty { padding: 24px; color: var(--text-3); text-align: center; border: 1px dashed var(--line); border-radius: var(--radius); }

/* Network map */
.network-main { max-width: 1680px; }
.network-hero { display: flex; align-items: end; justify-content: space-between; gap: 28px; padding-bottom: 20px; border-bottom: 1px solid var(--line); }
.network-hero h1 { margin-top: 5px; font-size: clamp(30px,4vw,48px); }
.network-hero p { max-width: 700px; margin-top: 8px; color: var(--text-2); font-size: 13px; line-height: 1.55; }
.network-legend { display: flex; flex-wrap: wrap; justify-content: end; gap: 14px; color: var(--text-3); font: 9px var(--mono); }
.network-legend span { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.legend-sphere { width: 18px; height: 18px; border: 1px solid rgba(181,194,255,.45); border-radius: 50%; background: radial-gradient(circle at 35% 28%,#bfc8ff 0,#6475ce 35%,#171e3a 100%); box-shadow: 0 0 10px rgba(93,112,211,.45); }
.legend-link { width: 26px; height: 4px; border-radius: 99px; background: #8395ed; box-shadow: 0 0 7px rgba(109,131,245,.55); }
.network-scorecard { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin: 20px 0 12px; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--line); }
.network-score { min-width: 0; padding: 14px 16px; background: var(--surface); }
.network-score > span { display: block; color: var(--text-3); font: 700 8px var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.network-score strong { display: block; margin: 6px 0 3px; color: #eef1ff; font: 650 22px var(--mono); }
.network-score small { display: block; color: var(--text-3); font-size: 9px; line-height: 1.45; }
.network-layout { display: grid; grid-template-columns: minmax(0,1fr) 310px; gap: 12px; align-items: start; }
.network-panel { min-width: 0; padding: 0; overflow: hidden; }
.network-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding: 15px 16px; border-bottom: 1px solid var(--line); }
.network-toolbar p { max-width: 620px; margin-top: 4px; color: var(--text-3); font-size: 10px; }
.network-controls { display: flex; align-items: center; justify-content: end; flex-wrap: wrap; gap: 10px; }
.network-controls label { color: var(--text-3); font: 9px var(--mono); }
.network-controls label:first-child { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; }
.network-controls label output { color: #c7cfff; }
.network-controls input[type=range] { grid-column: 1 / -1; width: 126px; accent-color: #8294ef; }
.network-toggle { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.network-toggle input { accent-color: #8294ef; }
.network-controls button { padding: 7px 9px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface-2); color: var(--text-2); cursor: pointer; font: 9px var(--mono); }
.network-controls button:hover,.network-controls button:focus-visible { border-color: rgba(130,148,239,.6); color: var(--text); }
.network-canvas-shell { position: relative; min-width: 0; background: radial-gradient(circle at 50% 48%,rgba(49,61,112,.18),transparent 52%),linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),#0c0f15; background-size: auto,28px 28px,28px 28px,auto; overflow: hidden; }
#network-canvas { display: block; width: 100%; outline: 0; touch-action: none; }
#network-canvas:focus-visible { box-shadow: inset 0 0 0 2px var(--focus); }
.network-tooltip { position: absolute; z-index: 4; width: 205px; padding: 10px 11px; border: 1px solid rgba(130,148,239,.4); border-radius: 8px; background: rgba(12,15,22,.96); box-shadow: 0 12px 30px rgba(0,0,0,.5); pointer-events: none; }
.network-tooltip[aria-hidden=true] { display: none; }
.network-tooltip strong,.network-tooltip span,.network-tooltip small { display: block; }
.network-tooltip strong { margin-bottom: 5px; color: #f1f3ff; font-size: 11px; }
.network-tooltip span { margin-top: 2px; color: var(--text-2); font-size: 9px; }
.network-tooltip small { margin-top: 6px; color: #9dabf4; font: 8px var(--mono); }
.network-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--text-3); }
.network-aside { display: grid; gap: 12px; }
.network-aside .panel { padding: 16px; }
.network-readout h2,.network-list-panel h2 { margin: 3px 0 14px; }
.network-readout > div:last-child { display: grid; gap: 9px; }
.readout-stat { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--line-soft); }
.readout-stat span { color: var(--text-3); font-size: 9px; }
.readout-stat strong { font: 650 12px var(--mono); }
.network-readout p { color: var(--text-3); font-size: 10px; line-height: 1.5; }
.network-readout p a { color: #b9c3ff; font-weight: 600; text-decoration: none; }
.network-link-list { display: grid; gap: 7px; }
.network-link-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 3px 9px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-2); }
.network-link-row > div { display: flex; align-items: center; min-width: 0; gap: 5px; font-size: 9px; }
.network-link-row > div a { min-width: 0; overflow: hidden; color: var(--text-2); font-weight: 600; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.network-link-row > div a:hover,.network-link-row small a:hover { color: #bdc7ff; }
.network-link-row > div span { color: var(--text-3); }
.network-link-row strong { color: #bdc7ff; font: 650 11px var(--mono); }
.network-link-row small { grid-column: 1 / -1; overflow: hidden; color: var(--text-3); font-size: 8px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.network-link-row small a { color: inherit; text-decoration: none; }
@media (max-width: 1180px) { .network-layout { grid-template-columns: 1fr; } .network-aside { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 900px) { .network-hero,.network-toolbar { align-items: start; flex-direction: column; } .network-legend,.network-controls { justify-content: start; } .network-scorecard { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 700px) { .network-aside { grid-template-columns: 1fr; } .network-controls { align-items: start; flex-direction: column; } .network-controls input[type=range] { width: min(260px,75vw); } }

.hygiene-hero { align-items: end; }
.hygiene-hero p { max-width: 680px; margin-top: 7px; color: var(--text-3); font-size: 11px; line-height: 1.55; }
.hygiene-toolbar { display: flex; gap: 8px; }
.hygiene-scorecard { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 26px; }
.hygiene-list-head { margin-bottom: 13px; }
.hygiene-list-head p { margin-top: 4px; color: var(--text-3); font-size: 11px; }
.test-lodge-list { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; }
.test-lodge { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; padding: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); }
.test-lodge .controls { display: flex; gap: 5px; align-items: start; }
.test-lodge button { padding: 5px 7px; border-radius: 5px; border: 1px solid var(--line); background: var(--surface-2); color: var(--text-2); cursor: pointer; font-size: 9px; }
.test-lodge button.active { border-color: var(--focus); color: var(--text); background: var(--focus-soft); }
.test-lodge button:hover { color: var(--text); }

.provenance-card { display: grid; grid-template-columns: 220px 1fr; gap: 28px; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.provenance-card dl { display: grid; grid-template-columns: 160px 1fr; gap: 8px 14px; }
.provenance-card dt { color: var(--text-3); font: 9px var(--mono); text-transform: uppercase; }
.provenance-card dd { color: var(--text-2); font-size: 11px; }

@media (min-width: 901px) { .score:nth-child(n+6) .term-help::after { right: -8px; left: auto; } }
@media (max-width: 1250px) { .scorecard { grid-template-columns: repeat(4,minmax(0,1fr)); } .test-lodge-list { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 900px) { .sp-hero, .panel-head, .section-heading { align-items: start; flex-direction: column; } .sp-grid-2 { grid-template-columns: 1fr; } .scorecard { grid-template-columns: repeat(2,1fr); } .hygiene-toolbar { width: 100%; flex-wrap: wrap; } .hygiene-toolbar input { flex: 1 1 220px; } .test-lodge-list { grid-template-columns: 1fr; } .provenance-card { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .score:nth-child(even) .term-help::after { right: -8px; left: auto; } }
@media (max-width: 700px) { .spaceport-main { padding: 18px 14px 60px; } .scorecard { grid-template-columns: repeat(2,minmax(0,1fr)); } .table-tools { width: 100%; min-width: 0; } .table-tools input, .table-tools select { min-width: 0; flex: 1; } }

/* Lodge profile */
.lodge-main { max-width: 1500px; }
.lodge-back { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 22px; color: var(--text-2); font-size: 11px; text-decoration: none; }
.lodge-back:hover, .lodge-back:focus-visible { color: var(--text); }
.lodge-hero { display: flex; align-items: end; justify-content: space-between; gap: 28px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.lodge-hero-copy { min-width: 0; }
.lodge-hero h1 { margin: 7px 0 8px; font-size: clamp(28px, 4vw, 46px); }
.lodge-description { max-width: 760px; color: var(--text-2); font-size: 14px; line-height: 1.6; }
.lodge-hero-meta { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 14px; }
.lodge-hero-actions { display: flex; flex-wrap: wrap; justify-content: end; gap: 8px; }
.lodge-hero-actions a { text-decoration: none; }
.lodge-scorecard { grid-template-columns: repeat(8, minmax(105px, 1fr)); margin: 20px 0 28px; }
.lodge-layout { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(320px, .75fr); gap: 12px; align-items: start; }
.lodge-stack { display: grid; gap: 12px; }
.lodge-panel { min-width: 0; padding: 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.lodge-panel h2 { margin-top: 3px; }
.lodge-panel-head { display: flex; justify-content: space-between; align-items: end; gap: 12px; margin-bottom: 14px; }
.origin-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1px; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--line); }
.origin-item { min-width: 0; padding: 13px; background: var(--surface-2); }
.origin-item dt { margin-bottom: 5px; color: var(--text-3); font: 700 9px var(--mono); text-transform: uppercase; letter-spacing: .05em; }
.origin-item dd { color: var(--text); font-size: 12px; overflow-wrap: anywhere; }
.origin-item dd small { display: block; margin-top: 3px; color: var(--text-3); font-size: 9px; }
.origin-item a { color: #b9c3ff; text-underline-offset: 3px; }
.origin-item code { white-space: normal; overflow-wrap: anywhere; }
.member-table td:first-child { min-width: 185px; }
.member-table td:nth-child(4) { width: 330px; min-width: 240px; max-width: 330px; white-space: normal; line-height: 1.45; }
.lodge-role-groups { display: grid; gap: 6px; min-width: 0; }
.lodge-role-group { display: grid; grid-template-columns: 46px minmax(0,1fr); align-items: baseline; gap: 8px; min-width: 0; padding: 5px 7px; border: 1px solid transparent; border-radius: 5px; }
.lodge-role-label { font: 700 8px var(--mono); text-transform: uppercase; letter-spacing: .05em; }
.lodge-role-group.role-leads { border-color: rgba(109,131,245,.16); background: rgba(109,131,245,.065); }
.lodge-role-group.role-leads .lodge-role-label, .lodge-role-group.role-leads a { color: #b4bfff; }
.lodge-role-group.role-member { border-color: rgba(126,157,177,.15); background: rgba(126,157,177,.055); }
.lodge-role-group.role-member .lodge-role-label, .lodge-role-group.role-member a { color: #a9c4d2; }
.lodge-role-links { display: flex; flex-wrap: wrap; gap: 2px 0; min-width: 0; }
.lodge-role-name { display: inline-flex; min-width: 0; }
.lodge-role-name + .lodge-role-name::before { content: '·'; margin: 0 6px; color: var(--text-3); }
.lodge-role-name a { min-width: 0; white-space: normal; overflow-wrap: anywhere; word-break: normal; }
.member-table .secondary { max-width: 230px; }
.member-table a { text-decoration: none; }
.member-table a:hover { color: #b9c3ff; }
.person-profile-link { text-decoration: none; }
.person-profile-link:hover, .person-profile-link:focus-visible { color: #b9c3ff; text-decoration: underline; text-decoration-color: var(--focus); text-underline-offset: 3px; }
.overlap-detail-list { display: grid; gap: 8px; }
.overlap-detail { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 5px 12px; padding: 11px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-2); }
.overlap-detail a { font-weight: 600; text-decoration: none; }
.overlap-detail a:hover { color: #b9c3ff; }
.overlap-detail strong { color: #b9c3ff; font: 650 12px var(--mono); }
.overlap-detail small { grid-column: 1 / -1; color: var(--text-3); font-size: 9px; line-height: 1.45; }
.ledger { display: grid; gap: 9px; }
.ledger-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 9px; border-bottom: 1px solid var(--line-soft); }
.ledger-row:last-child { padding-bottom: 0; border-bottom: 0; }
.ledger-row span { color: var(--text-3); font-size: 10px; }
.ledger-row strong { font: 650 12px var(--mono); }
.lodge-readout { display: grid; gap: 8px; }
.readout-item { padding: 11px 12px; border-left: 2px solid var(--line-strong); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; background: var(--surface-2); }
.readout-item.signal { border-color: var(--pos); }
.readout-item.watch { border-color: var(--warn); }
.readout-item strong { display: block; margin-bottom: 3px; font-size: 11px; }
.readout-item span { color: var(--text-3); font-size: 10px; line-height: 1.5; }
.lodge-note { color: var(--text-3); font-size: 10px; line-height: 1.55; }
.lodge-error { max-width: 700px; margin: 80px auto; }
.lodge-error h1 { margin: 8px 0; }
.lodge-error p { margin-bottom: 18px; color: var(--text-2); }
@media (max-width: 1250px) { .lodge-scorecard { grid-template-columns: repeat(4,1fr); } }
@media (max-width: 980px) { .lodge-hero { align-items: start; flex-direction: column; } .lodge-hero-actions { justify-content: start; } .lodge-layout { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .lodge-scorecard { grid-template-columns: repeat(2,1fr); } .origin-grid { grid-template-columns: 1fr; } .lodge-panel { padding: 14px; } }

/* Ship profile */
.person-main { max-width: 1500px; }
.person-hero { display: flex; align-items: end; justify-content: space-between; gap: 28px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.person-hero h1 { margin: 6px 0 7px; font-size: clamp(30px,4vw,46px); }
.person-summary { max-width: 720px; color: var(--text-2); font-size: 13px; }
.person-ship-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.person-ship-list code { color: #b9c3ff; background: rgba(109,131,245,.08); border-color: rgba(109,131,245,.2); }
.person-scorecard { grid-template-columns: repeat(6,minmax(120px,1fr)); margin: 20px 0 28px; }
.person-layout { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(320px,.72fr); gap: 12px; align-items: start; }
.person-lodge-list { display: grid; min-width: 0; gap: 7px; }
.person-lodge-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(125px,auto) 62px; align-items: center; gap: 12px; padding: 11px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-2); color: inherit; text-decoration: none; }
.person-lodge-row:hover { border-color: var(--line-strong); background: var(--surface-3); }
.person-lodge-row strong { display: block; font-size: 11px; }
.person-lodge-row span > small { display: block; max-width: 440px; margin-top: 2px; color: var(--text-3); font-size: 9px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.person-lodge-roles { display: flex; flex-wrap: wrap; justify-content: end; gap: 4px; }
.person-lodge-roles em { padding: 3px 6px; border: 1px solid var(--line); border-radius: 99px; font: normal 8px var(--mono); text-transform: uppercase; }
.person-lodge-roles .role-leader { color: #b4bfff; border-color: rgba(109,131,245,.2); background: rgba(109,131,245,.07); }
.person-lodge-roles .role-member { color: #a9c4d2; border-color: rgba(126,157,177,.18); background: rgba(126,157,177,.06); }
.person-lodge-roles .role-former-member { color: var(--text-3); }
.person-lodge-stats { text-align: right; }
.person-lodge-stats b { display: block; font: 650 12px var(--mono); }
.person-lodge-stats small { color: var(--text-3); font-size: 8px; }
.person-history-table a { text-decoration: none; }
.person-history-table a:hover { color: #b9c3ff; }
.person-accounts, .person-connections { display: grid; gap: 7px; }
.person-account-row, .person-connection { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; padding: 10px 11px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-2); }
.person-account-row span, .person-connection span { min-width: 0; }
.person-account-row strong, .person-connection strong { display: block; font-size: 10px; }
.person-account-row small, .person-connection small { display: block; margin-top: 3px; color: var(--text-3); font: 8px/1.5 var(--mono); overflow-wrap: anywhere; }
.person-account-row a { color: #b9c3ff; font: 10px var(--mono); text-decoration: none; }
.person-account-row em { color: var(--text-3); font: normal 9px var(--mono); white-space: nowrap; }
.person-connection { color: inherit; text-decoration: none; }
.person-connection:hover { border-color: var(--line-strong); background: var(--surface-3); }
.person-connection em { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--focus-soft); color: #b9c3ff; font: normal 10px var(--mono); }
@media (max-width: 1200px) { .person-scorecard { grid-template-columns: repeat(3,1fr); } }
@media (max-width: 980px) { .person-hero { align-items: start; flex-direction: column; } .person-layout { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .person-scorecard { grid-template-columns: repeat(2,1fr); } .person-lodge-row { grid-template-columns: minmax(0,1fr) auto; } .person-lodge-roles { justify-content: start; grid-column: 1 / -1; grid-row: 2; } }
