/* SPDX-License-Identifier: GPL-3.0-only
   Presentation for the standalone firmware. Native instrument styles stay isolated. */
body[data-product="firmware"] { --brass: #c2a778; --brass-line: #766044; }
.instrument-showcase,.play-section,.install-section { padding-block: clamp(54px,6vw,94px); }
.instrument-showcase { position:relative; background:linear-gradient(180deg,#16101e,#100b18); }
.instrument-showcase::before { content:"";position:absolute;top:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent,var(--brass-line),transparent); }
.showcase-heading { display:grid;grid-template-columns:1.15fr 1fr;align-items:end;gap:40px;margin-bottom:40px; }
.showcase-heading h2 { font-size:clamp(3.3rem,5.9vw,6.3rem);line-height:.96;letter-spacing:-.02em;margin:16px 0 0; }
.showcase-heading > p,.demo-description p { font-size:1.05rem;line-height:1.75;color:#c8becf;margin:0;max-width:490px; }
.showcase-heading .eyebrow { color:var(--brass); }
.screen-gallery { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3.5vw,56px); }
.firmware-screen { margin:0;min-width:0; }
.screen-image { display:block;position:relative;margin-bottom:23px;padding:16px;background:#08060d;border:1px solid #47384d;box-shadow:0 12px 30px #0004;transition:border-color .2s; }
.screen-image::before,.screen-image::after { content:"";position:absolute;width:10px;height:10px;pointer-events:none;border-color:var(--brass);border-style:solid; }
.screen-image::before { left:-1px;top:-1px;border-width:1px 0 0 1px; }
.screen-image::after { bottom:-1px;right:-1px;border-width:0 1px 1px 0; }
.screen-image:hover { border-color:var(--brass); }
.screen-image img { display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:#000;image-rendering:pixelated; }
.screen-index { color:var(--brass);font-size:.68rem;letter-spacing:.16em;font-weight:700; }
.firmware-screen h3,.sound-signature h3 { font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(1.65rem,2.3vw,2.5rem);font-weight:600;line-height:1.1;letter-spacing:.01em;margin:9px 0 12px; }
.firmware-screen p,.sound-signature p { color:#b9afc2;line-height:1.7;font-size:.94rem;margin:0;max-width:480px; }
.gallery-footnote { display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin:27px 0 0;padding-bottom:30px;border-bottom:1px solid #392c40; }
.gallery-footnote p { color:#a89bad;font-size:.74rem;line-height:1.5;margin:0; }
.gallery-footnote a { color:var(--lime);font-size:.71rem;font-weight:700;letter-spacing:.08em;white-space:nowrap; }
.gallery-footnote a:hover { text-decoration:underline;text-underline-offset:5px; }
.sound-signature { display:grid;grid-template-columns:1.4fr 1fr;gap:50px;align-items:center;padding-top:30px; }
.sound-signature ul { list-style:none;padding:0;margin:0; }
.sound-signature li { padding:10px 0;border-bottom:1px solid #392c40;color:#d8b7f2;font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(1.3rem,2vw,1.9rem);font-weight:600;letter-spacing:.05em; }
.sound-signature li:last-child { border-bottom:0; }
.sound-signature li::before { content:"+";color:var(--brass);font:14px monospace;margin-right:20px; }
.sound-signature li span { display:none; }
.play-section { background:radial-gradient(ellipse at 50% 55%,#29143966,transparent 70%); }
.demo-heading { align-items:center; }
.demo-heading h2 { font-size:clamp(4.5rem,9vw,9.5rem); }
.demo-label { display:block;color:var(--brass);font-size:.65rem;font-weight:700;letter-spacing:.1em;line-height:1.7;margin-bottom:16px; }
.demo-description .demo-hint { margin-top:14px;color:#a699b3;font-size:.88rem; }
.firmware-sampler { border:1px solid #513a63;border-radius:3px;padding:clamp(15px,3vw,38px);background:radial-gradient(ellipse at 50% 30%,#30203e 0,#180f22 65%,#120d1a 100%);box-shadow:0 24px 60px #0003; }
.sampler-poster { max-width:1000px;margin:auto; }
.poster-instrument { position:relative;width:100%;aspect-ratio:1500/910;filter:drop-shadow(0 18px 14px #0008); }
.poster-case { display:block;width:100%;height:100%;object-fit:cover;object-position:center top;-webkit-mask:url('assets/purple-case-mask.svg') center/100% 100% no-repeat;mask:url('assets/purple-case-mask.svg') center/100% 100% no-repeat; }
.poster-screen { position:absolute;left:28.4%;top:12.96703%;width:18.8%;height:29.12088%;object-fit:contain;background:#000;border-radius:2%;image-rendering:pixelated;pointer-events:none; }
.poster-label { display:flex;justify-content:space-between;gap:16px;font-size:.63rem;font-weight:600;letter-spacing:.15em;color:#a28aac;margin:20px 0 24px; }
.sampler-launch { text-align:center; }
.sampler-launch .button { justify-content:center;gap:32px; }
.sampler-launch #sampler-status { color:#c0b0cc;font-size:.8rem;line-height:1.6;margin:15px 0 0; }
.firmware-sampler[data-state="ready"] .sampler-launch { text-align:left;margin-bottom:18px; }
.firmware-sampler[data-state="ready"] #sampler-status { margin:0; }
.firmware-sampler[aria-busy="true"] .poster-instrument { opacity:.5; }
.firmware-sampler iframe { border-radius:0; }
.demo-footnote { text-align:center;font-size:.75rem;letter-spacing:.02em;margin:22px auto 0;max-width:700px;line-height:1.7; }
.install-section { border-top:1px solid #3b2c43; }
.install-section .section-heading { display:grid;grid-template-columns:1.15fr 1fr;gap:0 40px;max-width:none;text-align:left;margin-bottom:32px; }
.install-section .section-heading .eyebrow { grid-column:1/-1;color:var(--brass); }
.install-section h2 { font-size:clamp(3.3rem,5.9vw,6.3rem);margin:16px 0 0; }
.install-section .section-heading > p:last-child { align-self:end;margin:20px 0 0;max-width:490px;font-size:1rem;line-height:1.75; }
.firmware-downloads .download-card { min-height:0;border-radius:3px;padding:25px; }
.firmware-downloads .download-card:first-child { border-color:#86a846;background:linear-gradient(135deg,#25301a,#191623 80%); }
.firmware-downloads .download-card strong { font-size:clamp(1.8rem,2.8vw,3rem); }
.firmware-downloads .download-card small { line-height:1.6; }
.source-downloads { line-height:1.7;font-size:.8rem; }
.instrument-showcase a:focus-visible,.firmware-sampler button:focus-visible { outline:2px solid var(--lime);outline-offset:6px; }
@media(max-width:800px) {
  .showcase-heading { grid-template-columns:1fr;gap:22px;margin-bottom:30px; }
  .showcase-heading > p { max-width:620px; }
  .screen-gallery { gap:18px; }
  .screen-image { padding:8px;margin-bottom:16px; }
  .firmware-screen h3 { font-size:1.65rem; }
  .firmware-screen p { font-size:.86rem; }
  .sound-signature { gap:26px; }
  .install-section .section-heading { grid-template-columns:1fr; }
  .demo-heading h2 br { display:none; }
  .demo-heading h2 em::before { content:" "; }
  .demo-heading h2 { font-size:clamp(3.7rem,10vw,6rem); }
}
@media(max-width:560px) {
  .instrument-showcase,.play-section,.install-section { padding-inline:22px;padding-block:48px; }
  .showcase-heading h2,.install-section h2 { font-size:clamp(2.7rem,10.7vw,3.7rem); }
  .showcase-heading > p,.demo-description p { font-size:.96rem; }
  .screen-gallery { grid-template-columns:1fr;gap:32px; }
  .firmware-screen { display:grid;grid-template-columns:1fr; }
  .screen-image { width:min(100%,288px);justify-self:center;padding:12px;box-sizing:border-box; }
  .firmware-screen h3 { font-size:1.9rem; }
  .firmware-screen p { font-size:.94rem; }
  .gallery-footnote { display:block; }
  .gallery-footnote a { display:inline-block;margin-top:14px;white-space:normal;line-height:1.6; }
  .sound-signature { grid-template-columns:1fr;gap:20px; }
  .sound-signature h3 { font-size:1.9rem; }
  .sound-signature li { font-size:1.65rem; }
  .demo-heading h2 { font-size:clamp(3rem,11vw,4rem); }
  .demo-label { font-size:.6rem; }
  .firmware-sampler { padding:12px; }
  .poster-label { font-size:.5rem;letter-spacing:.08em;margin:14px 0 20px; }
  .sampler-launch .button { width:100%;font-size:.73rem;padding:17px 12px;gap:12px; }
  .sampler-launch #sampler-status { font-size:.72rem;margin-bottom:3px; }
  .firmware-downloads .download-card { padding:22px; }
}
@media(prefers-reduced-motion:reduce) { .screen-image { transition:none; } }

/* Same-page screenshot viewer, including native focus trapping and Escape. */
button.screen-image { width:100%;box-sizing:border-box;cursor:zoom-in;color:inherit;font:inherit;text-align:inherit; }
button.screen-image:focus-visible { outline:2px solid var(--lime);outline-offset:5px; }
html.screen-viewer-open { overflow:hidden; }
.screen-viewer { box-sizing:border-box;width:min(680px,calc(100vw - 24px),calc(100dvh - 120px));max-height:calc(100dvh - 24px);margin:auto;padding:16px;border:1px solid #9275a6;border-radius:6px;background:#120d1b;color:#f5edf8;box-shadow:0 24px 100px #000a; }
.screen-viewer::backdrop { background:#07030de8; }
.screen-viewer-heading { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px; }
.screen-viewer-heading h2 { margin:0;font-family:'DM Sans',Arial,sans-serif;font-size:.85rem;line-height:1.3;letter-spacing:.12em;font-weight:700;color:#d8b7f2; }
.screen-viewer-heading button { min-width:86px;min-height:44px;padding:8px 12px;border:1px solid #806591;border-radius:4px;background:#291b38;color:#f5edf8;font:600 .85rem 'DM Sans',Arial,sans-serif;cursor:pointer; }
.screen-viewer-heading button span { font-size:1.2rem;margin-left:8px; }
.screen-viewer-heading button:hover { background:#3b2850; }
.screen-viewer-heading button:focus-visible { outline:2px solid var(--lime);outline-offset:3px; }
#screen-viewer-image { display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:#000;image-rendering:pixelated; }
.screen-viewer>p { margin:12px 0 0;font-size:.66rem;line-height:1.4;color:#b9a8c5; }
@media(max-width:560px) { button.screen-image { width:min(100%,288px); } }
