.fpv{max-width:980px;margin:1.5rem auto;font-family:inherit}.fpv-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem;margin-bottom:1rem}.fpv-controls label{display:flex;flex-direction:column;gap:.4rem;font-weight:600}.fpv-controls select,.fpv-controls input{max-width:100%;padding:.55rem;border:1px solid #aaa;border-radius:5px;background:#fff;color:#222}.fpv-hint,.fpv-status{font-size:.9rem;color:inherit}.fpv-preview{background:#eee;border:1px solid #ccc;border-radius:6px;overflow:hidden}.fpv-canvas{display:block;width:100%;height:auto}.fpv-actions{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-bottom:1rem}.fpv-actions button{padding:.55rem .8rem;border:1px solid #aaa;border-radius:5px;cursor:pointer}.fpv-size-info{font-size:.9rem}.fpv-warning{padding:.7rem 1rem;border-left:4px solid #b86e00;background:#fff5de;color:#533800;font-weight:600}.fpv-warning[hidden]{display:none}.fpv-preview{display:flex;justify-content:center;padding:1rem}.fpv-canvas{width:auto;max-width:100%;max-height:75vh;object-fit:contain;box-shadow:0 1px 6px #0002}.fpv-controls input[type=range]{width:100%;padding:.3rem 0}

.fpv-effects{border:1px solid #ccc;border-radius:6px;padding:.8rem 1rem;margin:0 0 1rem;display:flex;gap:.6rem 1.5rem;flex-wrap:wrap;align-items:center}.fpv-effects legend{font-weight:700;padding:0 .3rem}.fpv-effects label{display:inline-flex;gap:.4rem;align-items:center;cursor:pointer;font-weight:500}.fpv-effects input[type=radio]{accent-color:#294a75;margin:0}.fpv-effects label:focus-within{outline:2px solid #4779bd;outline-offset:3px;border-radius:2px}

.fpv-blind-note{font-size:.9rem;margin:-.35rem 0 1rem;color:inherit}.fpv-blind-note[hidden]{display:none}.fpv-foil-control select:disabled{opacity:.55;cursor:not-allowed}


/* v0.4.0: desktop controls beside the live preview; stacked on small screens. */
.fpv{max-width:1200px;width:100%;box-sizing:border-box}
.fpv-layout{display:grid;grid-template-columns:minmax(0,0.95fr) minmax(0,1.05fr);gap:clamp(1rem,2.5vw,2rem);align-items:start}
.fpv-settings,.fpv-result{min-width:0}
.fpv-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem .8rem}
.fpv-controls label{min-width:0}
.fpv-controls select,.fpv-controls input{box-sizing:border-box;width:100%;min-width:0}
.fpv-controls input[type=file]{font-size:.85rem}
.fpv-effects{gap:.65rem 1rem}
.fpv-effects label{font-size:.92rem}
.fpv-preview{box-sizing:border-box;width:100%;margin:0}
.fpv-canvas{max-height:80vh}
.fpv-status{margin:.6rem 0}
@media(max-width:760px){
  .fpv-layout{grid-template-columns:minmax(0,1fr)}
  .fpv-canvas{max-height:none}
}
@media(max-width:430px){
  .fpv-controls{grid-template-columns:minmax(0,1fr)}
}

/* v0.4.1: upload first; finishing options stacked for readability. */
.fpv-controls .fpv-upload-control{grid-column:1/-1}
.fpv-controls .fpv-upload-control input[type=file]{width:100%}
.fpv-controls .fpv-scale-control{grid-column:1/-1}
.fpv-effects{display:flex;flex-direction:column;align-items:stretch;gap:.75rem}
.fpv-effects label{display:flex;align-items:center;width:fit-content;gap:.55rem}

/* v0.4.3: approved photographic desktop surfaces and restrained contact shadow. */
.fpv-preview{background:#d8b18c url('desktop-light-oak.png') center center / cover no-repeat;min-height:320px;align-items:center}
.fpv-preview[data-desktop="walnut"]{background-image:url('desktop-light-walnut.png')}
.fpv-canvas{box-shadow:3px 7px 12px rgba(0,0,0,.20),1px 2px 3px rgba(0,0,0,.14);border-radius:1px}

/* v0.4.4: give the folder breathing room on roomy desktop displays only.
   Do not reduce its prior displayed width to make room for the desktop. */
@media (min-width: 1280px) {
  .fpv { max-width: 1480px; }
  .fpv-layout { grid-template-columns: minmax(410px, 0.75fr) minmax(0, 1.25fr); gap: clamp(24px, 2.5vw, 38px); }
  .fpv-preview { padding: clamp(64px, 5.5vw, 92px); }
  .fpv-canvas { width: min(100%, 560px); max-height: 80vh; }
}
/* A broader, diffuse resting shadow, without a dark hard outline. */
.fpv-canvas { box-shadow: 4px 11px 25px rgba(0,0,0,.15), 2px 5px 12px rgba(0,0,0,.12), 1px 2px 4px rgba(0,0,0,.11); }
/* Pricing advisory sits directly beneath the preview, never over the folder. */
.fpv-warning { display:flex; align-items:flex-start; gap:12px; margin:12px 0 4px; padding:12px 14px; border:1px solid #d9bf85; border-left:4px solid #ae833a; border-radius:6px; background:#fcf8ee; color:#4e3e25; font-size:.94rem; font-weight:400; line-height:1.45; }
.fpv-warning[hidden] { display:none; }
.fpv-warning-icon { display:inline-flex; flex:0 0 23px; width:23px; height:23px; justify-content:center; align-items:center; border:1.5px solid #a87a30; border-radius:50%; color:#88601f; font-weight:700; font-family:Georgia,serif; }
.fpv-warning strong { display:block; font-size:1rem; font-weight:700; margin-bottom:3px; }
.fpv-warning p { margin:0 0 4px; }
.fpv-warning small { display:block; font-size:.85rem; }

/* v0.4.5: preview-only zoom; keep original canvas drawing and responsive layout. */
.fpv-preview { position:relative; overflow:hidden; touch-action:pan-y; }
.fpv-canvas { transform-origin:center center; transform:translate(0px,0px) scale(1); will-change:transform; }
.fpv-preview.fpv-can-pan { cursor:grab; touch-action:none; }
.fpv-preview.fpv-is-panning { cursor:grabbing; }
.fpv-zoom-controls { margin:12px 0 8px; }
.fpv-zoom-controls > label { display:flex; justify-content:space-between; align-items:center; gap:12px; font-weight:600; font-size:.93rem; }
.fpv-zoom-value { font-variant-numeric:tabular-nums; font-weight:600; }
.fpv-zoom-row { display:flex; align-items:center; gap:12px; margin-top:5px; }
.fpv-zoom { flex:1; min-width:0; accent-color:#28659b; }
.fpv-zoom-reset { flex:0 0 auto; font-size:.85rem; padding:6px 10px; border:1px solid #aaa; border-radius:5px; background:#fff; color:#222; cursor:pointer; }
.fpv-zoom-reset:focus-visible,.fpv-zoom:focus-visible { outline:2px solid #28659b; outline-offset:2px; }
.fpv-zoom-help { font-size:.8rem; color:#555; margin:5px 0 0; line-height:1.4; }

/* v0.4.6: artwork measurements and dedicated reset. */
.fpv-artwork-control{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;min-width:0}
.fpv-artwork-metrics{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px;border:1px solid #d7dce2;background:#f5f7f9;border-radius:6px}
.fpv-artwork-metrics>div{display:flex;flex-direction:column;gap:3px}
.fpv-artwork-metrics small{font-size:.76rem;color:#555}
.fpv-artwork-metrics strong{font-size:1.16rem;font-variant-numeric:tabular-nums}
.fpv-scale-row{display:flex;align-items:center;gap:12px}
.fpv-scale-row input[type=range]{flex:1;min-width:0;accent-color:#28659b}
.fpv-scale-reset{flex:0 0 auto;padding:6px 10px;border:1px solid #aaa;border-radius:5px;background:#fff;color:#222;cursor:pointer;font-size:.85rem}
.fpv-placement-metrics{font-size:.83rem;line-height:1.5;color:#424b55;font-variant-numeric:tabular-nums}
.fpv-custom-help{font-size:.8rem;color:#555}
.fpv-preview.fpv-is-moving-artwork{cursor:move;touch-action:none}
.fpv-safe-guide{position:absolute;box-sizing:border-box;border:2px dashed rgba(255,225,145,.95);box-shadow:0 0 0 1px rgba(40,40,40,.25);z-index:2;pointer-events:none}
.fpv-safe-guide[hidden]{display:none}

/* v0.4.7: subtle visual polish without changing the established layout. */
.fpv-preview-heading{font-size:.9rem;font-weight:650;letter-spacing:.015em;color:#39424d;margin:0 0 8px}
.fpv-placement-panel{border:1px solid #d7dce2;background:#f5f7f9;border-radius:6px;padding:10px 12px}
.fpv-placement-title{display:flex;justify-content:space-between;gap:8px;align-items:baseline;font-weight:650;font-size:.87rem;margin-bottom:7px}
.fpv-placement-title span{font-size:.76rem;color:#59616a;font-weight:400}
.fpv-placement-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px}
.fpv-placement-item{display:flex;justify-content:space-between;gap:8px;align-items:baseline;min-width:0}
.fpv-placement-item span{color:#555;font-size:.83rem}
.fpv-placement-item strong{font-size:.88rem;font-weight:650;color:#29323c;font-variant-numeric:tabular-nums}
.fpv-preview.fpv-artwork-hover{cursor:grab;touch-action:pan-y}
.fpv-preview.fpv-is-moving-artwork{cursor:grabbing;touch-action:none}
.fpv-scale-reset,.fpv-zoom-reset,.fpv-reset{border:1px solid #aeb7c1!important;border-radius:5px!important;background:#fff!important;color:#25354a!important;font-weight:550;cursor:pointer}
.fpv-scale-reset:hover,.fpv-zoom-reset:hover,.fpv-reset:hover{background:#f0f4f8!important}
.fpv-scale-reset:focus-visible,.fpv-zoom-reset:focus-visible,.fpv-reset:focus-visible{outline:2px solid #28659b;outline-offset:2px}
@media(max-width:430px){.fpv-placement-metrics{gap:6px 10px}.fpv-placement-panel{padding:9px 10px}}

/* v0.4.8: spacing, adjacent artwork controls, and live specification summary. */
.fpv-settings{box-sizing:border-box;padding:clamp(16px,2vw,26px);background:#f1f2f4;border:1px solid #dce0e5;border-radius:12px}
.fpv-upload-row{grid-column:1/-1;display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.fpv-upload-row .fpv-upload-control{flex:1 1 230px;min-width:0}
.fpv-upload-row .fpv-reset{flex:0 0 auto;padding:10px 14px;min-height:42px}
.fpv-specifications{margin:20px 0 10px;padding:16px;background:#fff;border:1px solid #d7dce2;border-radius:8px}
.fpv-specifications h3{font-size:1.08rem;line-height:1.3;margin:0 0 12px;font-weight:700;color:#29323c}
.fpv-spec-list{margin:0}
.fpv-spec-list>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:12px;padding:8px 0;border-bottom:1px solid #e8ebef;font-size:.87rem;line-height:1.4}
.fpv-spec-list>div:last-child{border-bottom:0}
.fpv-spec-list dt{color:#53606d;font-weight:500}
.fpv-spec-list dd{margin:0;color:#27323d;font-weight:650;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.fpv-spec-note{font-size:.78rem;color:#59616a;margin:12px 0 0}
@media(max-width:430px){.fpv-settings{padding:14px}.fpv-upload-row .fpv-reset{width:100%}.fpv-specifications{padding:12px}}

/* v0.4.9: grouped foil/finish, right-column summary, and balanced preview surround. */
.fpv-foil-finish{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:14px;align-items:start;padding:14px;border:1px solid #d7dce2;border-radius:8px;background:#fff}
.fpv-foil-finish .fpv-foil-control{display:block;min-width:0}
.fpv-foil-finish .fpv-effects{margin:0;min-width:0}
.fpv-result{box-sizing:border-box;padding-right:clamp(16px,2vw,28px)}
.fpv-result .fpv-specifications{margin:22px 0 14px}
@media(max-width:760px){.fpv-result{padding-right:0}}
@media(max-width:480px){.fpv-foil-finish{grid-template-columns:minmax(0,1fr)}}

/* Version 0.5.0: artwork sizing follows foil/finish controls */
.fpv-artwork-control{grid-column:1/-1}

/* v0.5.1: compact, left-aligned finishing choices. */
.fpv-foil-finish .fpv-effects{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px 12px}
.fpv-foil-finish .fpv-effects label{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center!important;gap:9px!important;width:100%;margin:0!important;padding:2px 0!important;text-align:left;font-size:.87rem;line-height:1.35}
.fpv-foil-finish .fpv-effects input[type=radio]{appearance:auto!important;-webkit-appearance:radio!important;width:17px!important;height:17px!important;min-width:17px!important;flex:0 0 17px!important;margin:0!important;padding:0!important}
.fpv-controls>.fpv-position{grid-column:1/-1}
/* 4x9 preview: eliminate CSS canvas halo without altering the paper image. */
.fpv-preview.fpv-size-4x9 .fpv-canvas{box-shadow:none!important;filter:none!important}

/* v0.5.2: full-width artwork position directly above artwork sizing. */
.fpv-controls > label:has(> .fpv-position){grid-column:1 / -1;min-width:0}
.fpv-controls > label > .fpv-position{display:block;width:100%;max-width:none;min-width:0;box-sizing:border-box}

/* v0.5.3: compact, accessible, collapsible specifications beneath preview. */
.fpv-result details.fpv-specifications{padding:0;overflow:hidden}
.fpv-specifications>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;padding:15px 17px;font-size:1.08rem;font-weight:700;color:#29323c;line-height:1.3}
.fpv-specifications>summary::-webkit-details-marker{display:none}
.fpv-specifications>summary:focus-visible{outline:2px solid #315b8a;outline-offset:-3px;border-radius:7px}
.fpv-spec-toggle{font-size:.78rem;color:#4d5c6b;font-weight:600;white-space:nowrap}
.fpv-spec-toggle:after{content:'Hide details ▴'}
.fpv-specifications:not([open]) .fpv-spec-toggle:after{content:'Show details ▾'}
.fpv-spec-body{padding:0 17px 16px}
.fpv-spec-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.fpv-spec-list>div{display:flex;flex-direction:column;gap:4px;min-width:0;padding:9px 0;border-bottom:1px solid #e8ebef}
.fpv-spec-list dt{font-size:.78rem;line-height:1.35}
.fpv-spec-list dd{font-size:.9rem;text-align:left;line-height:1.35}
.fpv-spec-list>div.fpv-spec-wide{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start;gap:12px}
.fpv-spec-list>div.fpv-spec-wide dd{text-align:right}
.fpv-spec-edge-heading{font-size:.82rem;font-weight:700;color:#364553;margin:14px 0 9px}
.fpv-spec-edge-heading small{font-size:.75rem;font-weight:400;color:#697582;margin-left:5px}
.fpv-spec-edges{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:0}
.fpv-spec-edges>div{min-width:0;border:1px solid #e2e7ec;background:#f7f9fb;border-radius:6px;padding:8px 6px;text-align:center}
.fpv-spec-edges dt{font-size:.72rem;color:#53606d}
.fpv-spec-edges dd{margin:4px 0 0;font-size:.83rem;font-weight:650;color:#27323d;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
@media(max-width:520px){.fpv-spec-list{grid-template-columns:minmax(0,1fr)}.fpv-spec-list>div.fpv-spec-wide{grid-column:auto}.fpv-spec-edges{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.5.4: desktop background selector occupies a full controls row. */
.fpv-controls > label:has(> .fpv-background){grid-column:1 / -1;min-width:0}
.fpv-controls > label > .fpv-background{display:block;width:100%;max-width:none;min-width:0;box-sizing:border-box}

/* v0.5.5: author CSS must not override native closed-details hiding. */
.fpv-result details.fpv-specifications:not([open]) > .fpv-spec-body{display:none !important}

/* v0.5.8: upload acknowledgment before choosing artwork. */
.fpv-upload-row{grid-column:1/-1;display:flex;flex-direction:column;gap:9px}
.fpv-upload-policy{font-size:.85rem;line-height:1.45;margin:0;color:#364152}
.fpv-controls .fpv-policy-check{display:flex;flex-direction:row;align-items:flex-start;gap:8px;font-size:.85rem;font-weight:500;line-height:1.4;cursor:pointer}
.fpv-controls .fpv-policy-check input[type=checkbox]{width:auto;flex:none;margin-top:3px;accent-color:#28659b}
.fpv-upload-control input:disabled{opacity:.55;cursor:not-allowed}

/* v0.5.9: remove inherited 230px flex basis that creates blank space under upload. */
.fpv-upload-row{align-items:stretch}
.fpv-upload-row .fpv-upload-control{flex:0 0 auto;width:100%;margin:0}

.fpv-print-actions{margin:16px 0 10px;padding:13px;border:1px solid #d5dce5;border-radius:8px;background:#f8fafc}.fpv-print-design{background:#234c75;color:white;border:0;border-radius:5px;padding:11px 16px;font-weight:600;cursor:pointer;width:100%}.fpv-print-actions p{font-size:12px;line-height:1.45;margin:8px 0 0;color:#53606b}

/* Phase 2 Lite inquiry handoff */
.fpv-inquiry-link{display:block;box-sizing:border-box;width:100%;margin-top:12px;padding:11px 16px;border:1px solid #234c75;border-radius:5px;background:#fff;color:#234c75;text-align:center;text-decoration:none;font-weight:600;line-height:1.4}
.fpv-inquiry-link:hover,.fpv-inquiry-link:focus{background:#eaf1f8;color:#173753;text-decoration:none}
.fpv-print-actions .fpv-inquiry-note{margin-top:7px}

.fpv-reference-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px;font-size:13px;color:#243e5c}
.fpv-design-reference{font-size:16px;letter-spacing:.04em}
.fpv-copy-reference{border:1px solid #b9c7d6;border-radius:5px;background:#fff;color:#234c75;padding:6px 9px;cursor:pointer}

/* v0.6.4: keep the reference visible without the redundant copy control. */
.fpv-reference-row{justify-content:flex-start}
