* { box-sizing: border-box; }
:root { color-scheme: dark; --bg: #10191f; --ink: #e6e8e2; --muted: #b2bfbe; --line: #45575e; --accent: #bbd0d0; }
body { margin: 0; font: 16px/1.55 'DM Sans', sans-serif; background: var(--bg); color: var(--ink); }
a { color: inherit; text-underline-offset: .25em; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.viewer-header, .viewer-main { width: min(1220px, calc(100% - 64px)); margin-inline: auto; }
.viewer-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 24px; font-size: 14px; }
.viewer-brand { display: inline-block; font: 600 27px/1 Outfit, sans-serif; letter-spacing: -.04em; text-decoration: none; }
.viewer-brand small { display: block; color: var(--muted); font: 700 10px/1.3 'DM Sans', sans-serif; letter-spacing: .03em; margin-top: 2px; }
.viewer-main { padding-block: 48px 56px; }
h1 { margin: 0 0 26px; font: 400 clamp(36px, 6vw, 62px)/1.05 Outfit, sans-serif; letter-spacing: -.04em; }
.viewer-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 310px); column-gap: clamp(24px, 4vw, 54px); align-items: start; grid-template-rows: auto 1fr; }
.viewport { grid-row: 1 / 3; position: relative; display: grid; place-items: center; min-height: 380px; height: min(62vh, 640px); background: #15232b; border: 1px solid var(--line); border-radius: 12px; }
.viewport[data-dragging] { border-color: var(--accent); background: #203139; }
.viewport canvas { position: absolute; inset: 0; display: block; width: 100%; height: 100%; border-radius: inherit; touch-action: none; cursor: grab; }
.viewport canvas:active { cursor: grabbing; }
.viewport canvas:focus-visible { outline-offset: -4px; }
.drop-hint { padding: 22px; text-align: center; color: var(--muted); }
.drop-hint p { margin: 0 0 4px; color: var(--ink); }
.viewer-controls { min-width: 0; padding-top: 4px; }
.model-picker, .reset-view { min-height: 44px; border: 0; padding: 10px 14px; border-radius: 5px; background: var(--ink); color: var(--bg); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.model-picker { display: inline-flex; align-items: center; position: relative; }
.model-picker input { opacity: 0; position: absolute; inset: 0; width: 100%; cursor: pointer; }
.model-picker:focus-within { outline: 2px solid var(--accent); outline-offset: 4px; }
.model-measures { min-width: 0; }
.reset-view { position: absolute; right: 12px; bottom: 12px; z-index: 1; background: #263841; color: var(--ink); border: 1px solid #71858b; }
.viewer-note { color: var(--muted); font-size: 13px; }
#viewer-status:empty { display: none; }
#viewer-status { margin-bottom: 0; overflow-wrap: anywhere; font-size: 14px; }
dl { margin: 24px 0 0; border-top: 1px solid var(--line); }
dt { color: var(--muted); font-size: 13px; margin-top: 14px; }
dd { margin: 2px 0 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
@media (max-width: 700px) {
  .viewer-header, .viewer-main { width: calc(100% - 36px); }
  .viewer-main { padding-top: 32px; }
  .viewer-layout { display: flex; flex-direction: column; gap: 20px; }
  .viewport, .viewer-controls, .model-measures { width: 100%; }
  .model-measures dl { margin-top: 0; }
  .viewport { height: 44svh; min-height: 260px; }
  .viewer-controls { order: -1; }
}
[hidden] { display: none !important; }