
.ship-viewer-page{width:min(1560px,calc(100% - 48px));--control-accent:#a0edff;--holo-glass:linear-gradient(135deg,#80dfff10,#b7a4ff09 55%,#73eaff06)}
.ship-viewer-page .page-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 0}
.ship-viewer-page .page-intro h1{font-size:34px;font-weight:400}.ship-viewer-page .page-intro .eyebrow{color:#a9eaff;margin-bottom:9px;letter-spacing:.18em}
.ship-viewer-page .page-intro p:last-child{font-size:13px;margin-top:10px}
.build-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.build-actions .mono{font-size:10px;min-height:16px;color:var(--cyan)}
.ship-workspace{display:grid;grid-template-columns:300px minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:18px;height:clamp(520px,calc(100dvh - 235px),920px)}
.ship-workspace .control-panel{min-width:0;min-height:0;border:1px solid #b2ecff25;border-radius:18px;background:var(--holo-glass);backdrop-filter:blur(22px);box-shadow:inset 0 1px #e0faff16,0 0 36px #6ecbff07;overflow:hidden}
.ship-workspace .panel-scroll{height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:#87ddff40 transparent}
.ship-workspace .panel-section{padding:20px;border-bottom:1px solid #b2ecff12}.ship-workspace .filter-field{width:100%}
.select-label{display:block;font:10px var(--mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:10px;color:#a4dce9}
.ship-workspace .section-copy{font-size:12px;margin-top:12px;color:#a4b8cc}
.ship-workspace .section-heading{display:block;margin-bottom:22px}.ship-workspace .section-heading h2{font-size:22px;font-weight:400}.ship-workspace .eyebrow{font-size:9px;margin-bottom:8px;color:#b4acdf}
.heading-actions{display:flex;gap:8px;margin-top:14px}
.ship-viewer-page .button,.ship-viewer-page .filter-field select{
 border:1px solid #b2ecff28;border-radius:9px;background:linear-gradient(125deg,#a0ecff10,#b5a3ff08);color:#deeff8;
 box-shadow:inset 0 1px #e8faff0c,0 0 14px #8ddfff04;backdrop-filter:blur(12px);
 font-family:inherit;letter-spacing:0;font-size:12px;font-weight:400;transition:background .2s,border-color .2s,box-shadow .2s;
}
.ship-workspace .button{padding:8px 12px;min-height:38px;gap:7px}
.ship-viewer-page .button:hover,.ship-viewer-page .filter-field select:hover{background:linear-gradient(115deg,#9aeaff24,#b9a5ff16);border-color:#b2ecff70;box-shadow:0 0 18px #8ddfff12,inset 0 0 14px #8ddfff08}
.ship-viewer-page .button:focus-visible,.ship-viewer-page .filter-field select:focus-visible{outline:2px solid #b2ecff;outline-offset:3px}
.ship-viewer-page .button:disabled{opacity:.35;cursor:wait}
.ship-viewer-page .button::after{display:none}
.part-controls,.child-groups{display:grid;gap:20px}.child-groups{margin-top:18px}
.part-group.nested{border-left:1px solid #bcaaff22;padding-left:12px}.part-group-header{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px}
.part-group-title{font-size:12px;color:#d4eafb}.part-group-count{font:9px var(--mono);color:#91a3bd}
.part-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ship-workspace .part-option{justify-content:flex-start;text-align:left;min-width:0}
.option-label{overflow-wrap:anywhere;line-height:1.5}.option-indicator{flex:none;width:5px;height:5px;border:1px solid #95d8eb77;border-radius:50%}
.ship-workspace .button[aria-pressed="true"]{border-color:#a3ecff88;background:linear-gradient(125deg,#8aeaff22,#b5a3ff14);box-shadow:0 0 16px #8aeaff0d,inset 0 0 16px #8aeaff09;color:#ecfbff}
.part-option[aria-pressed="true"] .option-indicator{background:#b8f3ff;box-shadow:0 0 9px #8aeaff}
.viewer-panel{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-areas:"tools tools" "stage camera" "summary summary" "help help";gap:12px;min-width:0;min-height:0;padding:14px;border:1px solid #b2ecff20;border-radius:20px;background:radial-gradient(ellipse at 50% 48%,#75dcff10,transparent 68%),var(--holo-glass);box-shadow:inset 0 1px #e0faff12,0 0 50px #85aaff06}
.viewer{grid-area:stage;position:relative;min-width:0;min-height:0;border-radius:50%;background:radial-gradient(ellipse at 50% 70%,#8bddff0c,transparent 65%)}
.viewer::before{content:"";position:absolute;inset:16% 14%;border:1px solid #a0eaff10;border-radius:50%;box-shadow:0 0 26px #8aeaff06;pointer-events:none}
.viewer canvas{position:relative;display:block;width:100%;height:100%;touch-action:none}.viewer canvas:focus-visible{outline:2px solid #b2ecff;outline-offset:-2px}
.viewer-toolbar{grid-area:tools;display:flex;flex-wrap:wrap;gap:7px}
.camera-toolbar{grid-area:camera;align-self:start;display:flex;flex-direction:column;gap:8px;padding:7px;border:1px solid #b2ecff25;border-radius:12px;background:linear-gradient(135deg,#a0ecff0d,#b5a3ff08);backdrop-filter:blur(14px);box-shadow:inset 0 1px #e0faff12,0 0 20px #8aeaff06}
.preset-group{display:flex;flex-direction:column;gap:5px}.nudge-row{display:grid;grid-template-columns:1fr 1fr;gap:5px}.camera-divider{height:1px;background:#b2ecff22;margin:0 4px}
.ship-workspace .camera-toolbar .button{min-height:32px;padding:6px 12px;font-size:11px}.nudge-row .button{min-width:32px}
.viewer-help{grid-area:help;display:flex;flex-wrap:wrap;justify-content:center;gap:16px;font:9px var(--mono);color:#8ca9bd;pointer-events:none;padding:3px}.viewer-help b{color:#c6e3ed;font-weight:400}
.selection-summary{grid-area:summary;display:flex;flex-wrap:wrap;gap:5px;max-height:65px;overflow:auto;scrollbar-width:thin}
.summary-chip{background:#96dfff06;border:1px solid #b2ecff12;border-radius:20px;padding:5px 9px;font-size:10px;color:#9fb6ca}.summary-chip b{color:#c1e4ed;font-weight:400}
.loading-screen{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:#091525bb;backdrop-filter:blur(18px);border-radius:inherit}.loading-screen.hidden{display:none}
.loading-card{width:min(320px,80%);text-align:center}.loading-card .eyebrow{justify-content:center}.loading-card strong{display:block;margin:14px 0;font:13px var(--mono)}
.progress-track{height:2px;background:#8adcec16;margin-top:20px}.progress-fill{height:100%;background:linear-gradient(90deg,#9eeaff,#c5b4ff);box-shadow:0 0 16px #9eeaff;transition:width .15s}
#progress-label{font:10px var(--mono);display:block;margin-top:12px;color:var(--muted)}
.loader-orbit{width:48px;height:48px;border:1px solid #b5aaff26;border-top-color:#b2edff;border-radius:50%;box-shadow:0 0 28px #9eeaff10;margin:0 auto 24px;animation:viewer-loading 1.4s linear infinite}
.error-card{padding:14px;border:1px solid #e9a08560;border-radius:12px;color:#f5c1a8;font-size:12px}
@supports(appearance:base-select){.ship-viewer-page .filter-field select::picker(select){border:1px solid #b2ecff45;border-radius:12px;background:linear-gradient(125deg,#163346ed,#181e35f2);box-shadow:0 12px 40px #0005,0 0 24px #9eeaff12}.ship-viewer-page .filter-field option{font-family:inherit;font-size:12px}.ship-viewer-page .filter-field option:is(:hover,:focus){background:#9eeaff14;border-left-color:transparent}.ship-viewer-page .filter-field option:checked{border-left-color:transparent;color:#ccf6ff;background:#9eeaff0c}}
@keyframes viewer-loading{to{transform:rotate(360deg)}}
@media(max-width:1050px){.ship-workspace{grid-template-columns:250px minmax(0,1fr);gap:12px}.ship-workspace .panel-section{padding:16px}.ship-workspace .button{font-size:11px;padding:7px 9px}}
@media(max-width:760px){.ship-viewer-page{width:calc(100% - 28px)}.ship-viewer-page .page-intro{align-items:flex-start;flex-wrap:wrap;gap:14px}.build-actions{align-items:flex-start}.ship-workspace{display:flex;flex-direction:column-reverse;height:auto}.viewer-panel{height:clamp(440px,75dvh,700px);flex:none}.ship-workspace .panel-scroll{max-height:60dvh}.ship-viewer-page .page-intro h1{font-size:30px}.ship-viewer-page .page-intro p:last-child{max-width:40ch}.viewer-help{gap:10px;font-size:8px}}
.motion-paused .loader-orbit{animation:none}
@media(prefers-reduced-motion:reduce){.loader-orbit{animation:none}.progress-fill,.ship-viewer-page .button,.ship-viewer-page select{transition:none}}

/* Saving belongs with the configuration controls, not the page heading. */
.ship-workspace .build-actions{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.ship-workspace .build-actions .select-label{margin:0}
.ship-workspace .build-actions input{box-sizing:border-box;width:100%;max-width:none;min-width:0;min-height:40px;padding:10px 12px;font-family:inherit;font-size:12px;color:#deeff8;border:1px solid #b2ecff28;border-radius:9px;background:linear-gradient(125deg,#a0ecff0a,#b5a3ff06);box-shadow:inset 0 1px #e8faff0c;transition:border-color .2s,box-shadow .2s}
.ship-workspace .build-actions input::placeholder{color:#8ca9bd}
.ship-workspace .build-actions input:focus-visible{outline:2px solid #a0edff;outline-offset:2px;border-color:#a0edff88;box-shadow:0 0 16px #8aeaff15}
.build-action-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ship-workspace .build-action-buttons .button{min-width:0;min-height:36px;justify-content:center;padding:8px;font-size:11px}
.ship-workspace .build-actions #build-status{font:10px/1.6 var(--mono);overflow-wrap:anywhere;min-height:0}
.ship-workspace .build-actions #build-status:empty{display:none}
