/* The van designer: a stage and a column of controls. Mobile first: the stage square, the controls under it; from 900 px
   the stage sits left and the controls right. Turfrig's tokens (site.css :root); no inline styles anywhere (the CSP). */
.vd-intro{max-width:60ch}
.vd{display:grid;gap:14px;margin:16px 0 48px}
.vd-left{display:grid;gap:8px}
.vd-stage{position:relative;aspect-ratio:1/1;background:var(--paper);border:1.5px solid var(--line);border-radius:var(--r);overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) auto}
.vd-stage canvas{display:block;width:100%;height:100%;min-height:0;touch-action:none;cursor:grab}
.vd-stage canvas:active{cursor:grabbing}
.vd-nogl[hidden]{display:none}
.vd-nogl{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:16px;margin:0}
.vd-hud{padding:8px 10px 10px;display:flex;flex-direction:column;gap:8px}
.vd-views{display:flex;flex-wrap:wrap;gap:6px;pointer-events:auto}
.vd-views button{min-height:30px;padding:3px 10px;border-radius:999px;border:1.5px solid var(--line);background:rgba(255,253,248,.92);color:var(--ink);font:600 12px/1.2 var(--sans);cursor:pointer}
.vd-views button[aria-pressed="true"]{background:var(--forest);border-color:var(--forest);color:var(--cream)}
.vd-flash{position:absolute;top:10px;left:50%;transform:translateX(-50%);margin:0;padding:6px 14px;border-radius:999px;background:var(--forest);color:var(--cream);font-size:13px;font-weight:600;box-shadow:var(--shadow)}
.vd-controls{display:grid;gap:14px;align-content:start}
.vd-controls section{background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:12px 14px}
.vd-controls .k{margin:0 0 8px;font:600 12px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--forest)}
.vd-controls p{margin:6px 0 0}
.vd-sel{display:grid;gap:4px;font-size:13px;font-weight:600}
.vd-sel select{width:100%;min-height:36px;padding:4px 8px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);font:500 14px var(--sans);color:var(--ink)}
.vd-row{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center;margin:0 0 6px;font-size:13px}
.vd-row span{font-weight:600}
.vd-row output{font-variant-numeric:tabular-nums;color:var(--ink-soft);justify-self:end}
.vd-row input[type=range]{grid-column:1/-1;width:100%;accent-color:var(--forest);margin:0}
.vd-check{display:flex;align-items:center;gap:8px;font-size:14px}
.vd-check input{accent-color:var(--forest);width:18px;height:18px}
.vd-readout{display:grid;gap:6px 14px;margin:0}
.vd-readout div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:baseline;border-bottom:1px solid var(--line);padding:0 0 5px}
.vd-readout dt{font-size:13px;color:var(--ink-soft);white-space:nowrap}
.vd-readout dd{margin:0;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}
.vd-readout dd.vd-bad{color:var(--rust)}
.vd-readout dd.vd-ok{color:var(--meadow)}
.vd-actions{display:flex;flex-wrap:wrap;gap:8px}
@media (min-width:900px){
  .vd{grid-template-columns:minmax(0,1fr) 360px;align-items:start}
  .vd-left{position:sticky;top:12px}
  .vd-stage{aspect-ratio:16/10;display:block;max-height:calc(100vh - 160px);min-height:320px}   /* once the page scrolls past the heading, the stuck stage and the numbers under it fit one screen */
  .vd-stage canvas{height:100%}
  .vd-hud{position:absolute;left:0;right:0;bottom:0;pointer-events:none}
}
/* phase 2: presets, segmented choices, notes */
.vd-presets{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.vd-preset{display:grid;gap:2px;text-align:left;padding:8px 10px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font:500 12px/1.3 var(--sans);cursor:pointer}
.vd-preset b{font-size:13px}
.vd-preset span{color:var(--ink-soft)}
.vd-preset[aria-pressed="true"]{border-color:var(--forest);background:var(--meadow-pale)}
.vd-seg{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 8px}
.vd-seg button{min-height:28px;padding:3px 10px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:600 12px/1.2 var(--sans);cursor:pointer}
.vd-seg button[aria-pressed="true"]{background:var(--forest);border-color:var(--forest);color:var(--cream)}
.vd-two{display:flex;gap:16px;margin:4px 0 6px}
.vd-label{margin:6px 0 4px!important}
.vd-notes{margin:8px 0 0;padding-left:18px;color:var(--rust)}
.vd-notes:empty{display:none}
.vd-row[hidden]{display:none}
/* phase 3: the parts panel */
.vd-parts{display:grid;gap:10px}
.vd-part h3{margin:0 0 4px;font:600 13px/1.3 var(--sans);color:var(--forest)}
.vd-part ul{margin:0;padding-left:16px;font-size:13px}
.vd-part li{margin:0 0 3px}
.vd-part a{color:var(--ink)}
.vd-part .vd-amz{margin:6px 0 0}
.vd-part .vd-amz .btn{background:var(--paper);color:var(--forest);border:1.5px solid var(--forest);box-shadow:none;padding:5px 12px;font-size:13px}
.vd-part .vd-amz .btn:hover{background:var(--meadow-pale)}
.vd-disclose{margin:6px 0 8px}
.vd-seg button[disabled]{opacity:.45;cursor:default}
/* phase 4: paint swatches; the colours are the palette in turf/vandesigner.py */
.vd-swatches{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.vd-swatch{width:34px;height:34px;padding:0;border-radius:50%;border:2px solid var(--line);cursor:pointer;position:relative;background:var(--paper)}
.vd-swatch span{position:absolute;left:-9999px}
.vd-swatch::before{content:"";position:absolute;inset:3px;border-radius:50%}
.vd-swatch[aria-pressed="true"]{border-color:var(--forest);box-shadow:0 0 0 2px var(--meadow-pale)}
.vd-swatch[data-paint="chalk"]::before{background:#e8e3d5}.vd-swatch[data-paint="cream"]::before{background:#e9dfc4}.vd-swatch[data-paint="sage"]::before{background:#a9c4a3}.vd-swatch[data-paint="meadow"]::before{background:#3f7d4e}
.vd-swatch[data-paint="ochre"]::before{background:#c9963a}.vd-swatch[data-paint="slate"]::before{background:#4b5d7a}.vd-swatch[data-paint="graphite"]::before{background:#2b2d2a}.vd-swatch[data-paint="rust"]::before{background:#a8402f}
/* phase 5: saving, the gallery, design pages, the sheet */
.vd-inline{display:flex;gap:6px;flex-wrap:wrap}
.vd-inline input{flex:1 1 160px;min-height:36px;padding:4px 10px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);font:500 14px var(--sans);color:var(--ink)}
.vd-mine{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:4px;font-size:13px}
.vd-mine li{display:flex;align-items:center;gap:6px}
.vd-mine li>a:first-child{font-weight:600;color:var(--ink)}
.vd-x{margin-left:auto;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line);background:var(--paper);color:var(--rust);font:700 14px/1 var(--sans);cursor:pointer}
.vd-gallery{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin:16px 0 48px}
.vd-card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--r);overflow:hidden}
.vd-card-img{display:block;aspect-ratio:16/10;background:var(--paper)}
.vd-card-img img{display:block;width:100%;height:100%;object-fit:cover}
.vd-card-ph{width:100%;height:100%}
.vd-card-body{padding:10px 14px 12px}
.vd-card-body h3{margin:0 0 2px;font:600 16px/1.3 var(--sans)}
.vd-card-body h3 a{color:var(--ink);text-decoration:none}
.vd-card-body p{margin:0}
.vd-sheet{width:100%;border-collapse:collapse;font-size:13px}
.vd-sheet th{text-align:left;font-weight:500;color:var(--ink-soft);padding:4px 8px 4px 0;vertical-align:top;width:34%}
.vd-sheet td{padding:4px 0;border-bottom:1px solid var(--line)}
.vd-sheet .vd-sheet-h th{padding-top:12px;font:600 11px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--forest);border:0}
.vd-still{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vd-sheet-preview{position:fixed;inset:0;width:100vw;height:auto;z-index:99;background:#000}
.vd-viewer .vd-stage{cursor:grab}

/* design pass, 28 Oct: the five numbers under the stage, the actions bar, tabs and panels, the folded build-up */
.vd-numbers{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.vd-num{background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:7px 9px 8px;min-width:0}
.vd-num-l{display:block;font:600 10px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 3px}
.vd-num b{display:block;font:600 13px/1.25 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink);overflow-wrap:anywhere}
.vd-num b.vd-ok{color:var(--meadow)}.vd-num b.vd-bad{color:var(--rust)}
.vd-bar{display:grid;gap:8px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:10px 12px}
.vd-bar-save{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}
.vd-bar-save[hidden],.vd-signin[hidden]{display:none}
.vd-bar-save input{min-height:34px;padding:4px 10px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);font:500 14px var(--sans);color:var(--ink)}
.vd-bar-save .vd-mine-box{grid-column:1/-1}
.vd-bar-acts{display:flex;flex-wrap:wrap;gap:6px}
.vd-bar-acts .btn{background:var(--paper);color:var(--forest);border:1.5px solid var(--forest);box-shadow:none}
.vd-bar-acts .btn:hover{background:var(--meadow-pale)}
.vd-signin summary{display:inline-block;list-style:none;cursor:pointer}
.vd-signin summary::-webkit-details-marker{display:none}
.vd-signin[open] summary{margin-bottom:6px}
.vd-mine-box summary{cursor:pointer;color:var(--ink-soft)}
.vd-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:2px 0}
.vd-tabs button{flex:0 0 auto;min-height:34px;padding:4px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font:600 13px/1.2 var(--sans);cursor:pointer}
.vd-tabs button[aria-selected="true"]{background:var(--forest);border-color:var(--forest);color:var(--cream)}
.vd-panel[hidden]{display:none}
.vd-sub{margin:14px 0 6px;font:600 12px/1.2 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--forest)}
.vd-sub:first-child{margin-top:0}
.vd-fine{margin:10px 0 0;border-top:1px solid var(--line);padding-top:8px}
.vd-fine summary{cursor:pointer;font-size:13px;font-weight:600}
.vd-fine[open] summary{margin-bottom:6px}
.vd-partsbox{margin:12px 0 0;border-top:1px solid var(--line);padding-top:8px}
.vd-partsbox summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--forest)}
.vd-hint{margin:4px 0 0}
@media (max-width:899px){
  .vd-left{display:contents}                     /* so the numbers stick to the top of the page, not to the end of their own box */
  .vd-numbers{position:sticky;top:0;z-index:2;background:var(--paper);padding:6px 0;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
  .vd-num{padding:5px 6px 6px}.vd-num b{font-size:12px}.vd-num-l{font-size:9px}
}
/* 4x4s and pickups: controls scoped by body */
[data-body][hidden],[data-pickup][hidden]{display:none}
