/* Shared semantic palette. Components use roles, never a separate light layout. */
:root {
  color-scheme:light;
  --canvas:#f6f7f9; --panel:#edf0f4; --raised:#e6eaf0; --inset:#fff;
  --ink:#18191f; --secondary:#545b68; --rule:#c8ced8; --control:#7a8391;
  --metal-light:#424b59; --metal-mid:#5e6878; --metal-dark:#282f39;
  --brand-ink:#005f70; --focus:#005f70; --success:#236144; --warning:#80520b; --error:#a52b37;
  --hover:#e5e8ee; --brand-wash:#e5eef1; --disabled-bg:#dce0e7; --disabled-ink:#5b6370;
  --film-fold:#d2d8e2; --film-edge:#8f99a8; --film-glint:#fff;
  --action:#171b22; --action-hover:#2b333f; --on-action:#fff;
  --brand-cyan:#00dffc; --brand-magenta:#fd30fd; --brand-orange:#fd7a34; --brand-yellow:#fffc02; --brand-green:#30fc07;
  --brand-gradient:linear-gradient(90deg,var(--brand-cyan),var(--brand-magenta) 34%,var(--brand-orange) 57%,var(--brand-yellow) 76%,var(--brand-green));
  --bg-primary:var(--canvas); --bg-secondary:var(--panel); --text-primary:var(--ink); --text-secondary:var(--secondary); --border:var(--rule);
  --chrome-light:var(--metal-light); --chrome-mid:var(--metal-mid); --chrome-dark:var(--metal-dark);
  --nesting-ink:var(--metal-light); --nesting-ink-alt:var(--secondary);
  --nesting-accent-cyan:var(--brand-ink); --nesting-accent-magenta:#982598;
  --bg:var(--canvas); --surface:var(--panel); --surface-raised:var(--raised);
  --text:var(--ink); --muted:var(--secondary); --line:var(--rule);
  --silver:var(--metal-light); --steel:var(--secondary);
}
:root[data-theme=dark] {
  color-scheme:dark;
  --nesting-accent-magenta:var(--brand-magenta);
  --canvas:var(--brand-dark-bg,#09090b); --panel:#111318; --raised:#1c2027; --inset:#0c0e12;
  --ink:#f4f5f8; --secondary:#a7afbd; --rule:#353c48; --control:#7f899b;
  --metal-light:#f1f4fa; --metal-mid:#b1bac9; --metal-dark:#d2d9e4;
  --brand-ink:#00dffc; --focus:#00dffc; --success:#a2d7b7; --warning:#edbf73; --error:#ff9b9b;
  --hover:#242934; --brand-wash:#13242b; --disabled-bg:#303442; --disabled-ink:#b0b8c8;
  --film-fold:#3c4657; --film-edge:#6d788a; --film-glint:#bfc9d9;
}
@media(prefers-color-scheme:dark) {
  :root:not([data-theme]) {
    color-scheme:dark;
    --nesting-accent-magenta:var(--brand-magenta);
    --canvas:var(--brand-dark-bg,#09090b); --panel:#111318; --raised:#1c2027; --inset:#0c0e12;
    --ink:#f4f5f8; --secondary:#a7afbd; --rule:#353c48; --control:#7f899b;
    --metal-light:#f1f4fa; --metal-mid:#b1bac9; --metal-dark:#d2d9e4;
    --brand-ink:#00dffc; --focus:#00dffc; --success:#a2d7b7; --warning:#edbf73; --error:#ff9b9b;
    --hover:#242934; --brand-wash:#13242b; --disabled-bg:#303442; --disabled-ink:#b0b8c8;
    --film-fold:#3c4657; --film-edge:#6d788a; --film-glint:#bfc9d9;
  }
}
body{background:var(--canvas);color:var(--ink)}
/* Palette switches are immediate; only geometry animates, avoiding mixed-theme frames. */
.button{transition:transform .18s ease}
.drop-zone{transition:min-height .4s ease,padding .4s ease}
::selection{background:var(--action);color:var(--on-action)}
.chrome{color:var(--ink);background-image:linear-gradient(170deg,var(--metal-light) 8%,var(--metal-mid) 60%,var(--metal-dark));background-clip:text}
.primary{background:var(--action);color:var(--on-action);border-color:var(--action);box-shadow:none}
.primary:hover:not(:disabled){background:var(--action-hover);border-color:var(--action-hover);filter:none}
.secondary{background:transparent;color:var(--ink);border-color:var(--control)}
.secondary:hover:not(:disabled){background:var(--hover);border-color:var(--ink)}
.text-link{color:var(--ink);text-decoration-color:var(--control)}
.text-link:hover,.desktop-nav a:hover,.footer-bottom a:hover,.header-actions a:hover{color:var(--brand-ink)}
button:disabled,.button:disabled{opacity:1;color:var(--disabled-ink);background:var(--disabled-bg);border-color:var(--rule);box-shadow:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:5px}
.skip-link{background:var(--ink);color:var(--canvas)}
.announcement,.spec-strip{background:var(--panel);color:var(--ink);border-color:var(--rule)}
.announcement span,.preview-banner,.hero .eyebrow,.hero .micro,.hero-description,.specs>div>span,.card-number,.micro,.panel-label{color:var(--secondary)}
.preview-banner{background:var(--inset);border-color:var(--rule)}
.site-header,.cart-link span,.art-bottom{border-color:var(--rule)}
.mobile-nav{background:var(--canvas)}
.menu-toggle span{background:var(--ink)}
.header-actions{gap:18px}.cart-label{font-weight:inherit}
.theme-toggle{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;border:1px solid var(--control);border-radius:50%;color:var(--ink);padding:11px}
.theme-toggle:hover{background:var(--hover);border-color:var(--ink)}
.theme-toggle svg{width:21px;height:21px;flex-shrink:0}
.theme-sun{display:none}.theme-moon{display:block}
[data-theme=dark] .theme-sun{display:block}[data-theme=dark] .theme-moon{display:none}
.dash,.art-top:before{background:var(--metal-mid)}
.hero:after,.order-card:before,.upload-workspace .quote-panel:before{background:linear-gradient(90deg,transparent,var(--metal-mid),transparent);opacity:.45}
.hero-art:after{background:none}
.art-top,.art-bottom,.art-bottom span:last-child{color:var(--secondary)}
.order-card,.upload-example,.upload-main{background:var(--panel);border-color:var(--rule)}
.mini-layout span:first-child,.process-grid>div>span,.builder-summary li,.faq-list summary span{color:var(--brand-ink)}
.mini-layout b,.mini-receipt small,.example-file small,.dimension-readout small,.readout-bottom small{color:var(--secondary)}
.mini-receipt,.process-grid>div,.builder-summary,.production-placeholder{border-color:var(--rule)}
.nesting-section,.process-section,.site-footer{background:var(--panel);border-color:var(--rule)}
.nesting-panel,.production-placeholder,.build-workspace .builder-launch,.quote-panel,.upload-workspace .quote-panel{background:linear-gradient(135deg,var(--raised),var(--panel));border-color:var(--rule)}
.nesting-panel .panel-label,.production-placeholder span,.production-placeholder small,.footer-bottom{color:var(--secondary)}
.dimension-readout>span,.production-placeholder strong,.footer-top p{color:var(--ink)}
.measure-line{border-color:var(--control);background:repeating-linear-gradient(90deg,transparent 0,transparent 11px,var(--rule) 11px,var(--rule) 12px)}
.upload-example:before,.drop-zone:before{background:linear-gradient(45deg,var(--film-fold),var(--film-glint) 49%,var(--panel) 50%);border-color:var(--film-edge)}
.pill{color:var(--secondary);border-color:var(--control)}
.upload-icon{color:var(--metal-light)}
.drop-zone{background:var(--inset);border-color:var(--control)}
.drop-zone:hover,.drop-zone.dragging{background:var(--brand-wash);border-color:var(--brand-ink)}
.drop-zone .upload-icon{color:var(--ink);border-color:var(--control)}
.drop-zone.dragging .upload-icon{border-color:var(--brand-ink)}
.drop-zone>span:not(.upload-icon),.drop-zone small,.status,.upload-main .status{color:var(--secondary)}
.drop-zone u{text-decoration-color:var(--brand-ink)}
.status[data-tone=success],.upload-main .status[data-tone=success]{color:var(--success)}
.status[data-tone=warning],.upload-main .status[data-tone=warning]{color:var(--warning)}
.status[data-tone=error],.upload-main .status[data-tone=error],#cart-error,.errors{color:var(--error)}
.upload-main[data-visual-state=error]{border-color:var(--error)}
.upload-main[data-visual-state=warning]{border-color:var(--warning)}
.file-metadata,.file-metadata>div:nth-child(2n),.file-metadata>div:nth-child(-n+2),.upload-workspace .quote-details,.sample-controls{border-color:var(--rule)}
.file-metadata{background:transparent}
.file-metadata dt,.upload-main #edit-size,.upload-workspace .quote-panel>.eyebrow,.upload-workspace .quote-panel h2,.upload-workspace .quote-total>span,.quote-total>span,.quote-details dt,.upload-workspace .quantity-field,.upload-workspace .quote-panel .small,.upload-workspace .quote-panel .small.muted,.sample-controls p,.size-fields>span,.mobile-order-bar small,.connection-status{color:var(--secondary)}
.file-metadata>div:nth-child(3) dd,.file-metadata>div:nth-child(4) dd,.upload-workspace .quote-total strong,.quote-details dd{color:var(--ink)}
input,textarea,select,.quantity-field input,.size-fields input{background:var(--inset);color:var(--ink);border-color:var(--control);accent-color:var(--action)}
input::placeholder,textarea::placeholder{color:var(--secondary);opacity:1}
input:disabled,textarea:disabled,select:disabled{background:var(--disabled-bg);color:var(--disabled-ink);opacity:1}
[aria-invalid=true],input:user-invalid,textarea:user-invalid{border-color:var(--error)}
.sample-controls .button{background:transparent;color:var(--secondary);border-color:var(--control)}
.sample-controls .button:hover{background:var(--hover);color:var(--ink)}
#size-form,.upload-main #size-form{background:var(--raised);border-color:var(--warning)}
progress{accent-color:var(--action);background:var(--rule)}
progress::-webkit-progress-bar{background:var(--rule)}progress::-webkit-progress-value{background:var(--action)}progress::-moz-progress-bar{background:var(--action)}
.mobile-order-bar{background:var(--panel);border-color:var(--control);box-shadow:none}
.empty-cart,.notice{background:var(--panel);border-color:var(--rule)}
/* Crop only the empty canvas around the provisional mark. Source artwork is untouched. */
/* Merchant-supplied replacement logos are not cropped. */
.brand img.custom-logo,.hero-art img.custom-logo{clip-path:none;mix-blend-mode:normal}
@media(max-width:1100px){.header-actions{gap:12px}}
@media(max-width:760px){.site-header{gap:12px}.header-actions{gap:8px}.brand{width:168px;max-width:calc(100% - 148px)}.menu-toggle{width:44px;height:44px;padding:8px}.menu-toggle span{margin-inline:3px}.cart-link{min-height:44px;display:flex;align-items:center;gap:0}.cart-label{display:none}.cart-link span{width:28px;height:28px;margin-left:0}.theme-toggle{width:40px;height:40px;padding:9px}.brand img{width:100%}}
@media(forced-colors:active){.chrome{background:none;-webkit-text-fill-color:currentColor}.theme-toggle,.button{border:1px solid ButtonText}.menu-toggle span{background:ButtonText}.brand img,.hero-art img{mix-blend-mode:normal;clip-path:none}}
@media(max-width:760px){.cart-label{display:initial;position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}
