/* /assets/v20/industrial-v20.css */
/* BoothbysWorkShop V20 - Industrial Wave: responsive visual system for all pages */
:root{--v20-bg:#050509;--v20-floor:#0d0e16;--v20-panel:#0d101a;--v20-purple:#df49ff;--v20-magenta:#9f3bff;--v20-cyan:#46effe;--v20-text:#f6f4ff;--v20-silver:#a3a6b6;--v20-border:#505269;--v20-glow:0 0 24px #b032e24d;--v20-metal:linear-gradient(152deg,#2f3240 0%,#11131c 15%,#090a12 50%,#252432 100%)}
html{scroll-behavior:smooth}body{background-color:var(--v20-bg)!important;color:var(--v20-text);background-image:radial-gradient(circle at 72% 15%,#49145628,transparent 36%),radial-gradient(circle at 11% 78%,#03476624,transparent 39%)}
*:focus-visible{outline:2px solid var(--v20-cyan)!important;outline-offset:3px}
.v20-metal{border:1px solid #77718777;background:var(--v20-metal);box-shadow:inset 0 1px 0 #ffffff21,inset 0 -3px 8px #0009,0 10px 22px #0008}
.v20-label{font:800 11px/1.35 ui-monospace,monospace;letter-spacing:.16em;color:#a8a6b6;text-transform:uppercase}.v20-glow{color:var(--v20-purple);text-shadow:0 0 15px #c44eff80}
.v20-credit{font:600 11px system-ui;color:#b6acc6;letter-spacing:.015em}
.v20-face{border:1px solid #625673;background:linear-gradient(145deg,#1d1927,#090c14);box-shadow:inset 0 1px #d6d0f322,inset 0 -3px #0009,0 0 0 4px #08090e,0 5px 17px #000b}
.v20-face::before{content:'';pointer-events:none;position:absolute;inset:0;border-top:2px solid #e767ff79;border-bottom:2px solid #5ae8ff33}
/* full-bleed shared shell; inner controls use fluid width */
#promoter-header,.epk-immersive .site-header,.mast,body>footer,.epk-immersive .site-footer,footer#tools-taskbar{width:100%!important;max-width:none!important;margin-inline:0!important;box-sizing:border-box!important;border-radius:0!important}
#promoter-header,.mast,.epk-immersive .site-header{background:linear-gradient(180deg,#1c1a26 0%,#090a10 74%,#10091a 100%)!important;border-bottom:2px solid #8139ad!important;box-shadow:0 5px 24px #000b,0 2px 14px #ae23d43b!important}
footer#tools-taskbar,body>footer,.epk-immersive .site-footer{background:linear-gradient(0deg,#090a10,#211726 65%,#111018)!important;border-top:2px solid #9839bc!important;box-shadow:0 -4px 24px #000b,0 -1px 13px #a12dce33!important}
#promoter-header .header-logo{filter:drop-shadow(0 0 11px #c146f7)!important}
#promoter-header h1,#promoter-header .header-text h1{background:linear-gradient(100deg,#fefbff,#dc72f4);-webkit-background-clip:text;background-clip:text;color:transparent!important;text-shadow:none!important}
#promoter-header nav a,#promoter-header nav button,.epk-immersive .site-header a,.mast a{transition:background .18s,color .18s,box-shadow .18s}
#promoter-header nav a:hover,#promoter-header nav button:hover,.epk-immersive .site-header a:hover,.mast a:hover{color:#f1cbff!important;text-shadow:0 0 11px #b625f888}
/* Site homepage is still the real desktop tools UI: no false tool-count or status counters */
#desktop-area{background:transparent!important}#desktop-area .v10-hero{isolation:isolate;position:relative;overflow:hidden;border:2px solid #8d52a7!important;border-radius:17px!important;box-shadow:0 0 0 5px #090a10,0 24px 60px #000d,0 0 22px #a232c82c!important;background:linear-gradient(110deg,#100a19bb,#070a13aa)!important}
#desktop-area .v10-hero::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(90deg,#05050be8 0%,#0b0617bf 48%,#05050b44),repeating-linear-gradient(0deg,#ffffff04 0px,#ffffff04 1px,transparent 2px,transparent 5px)}
#desktop-area .v10-hero-art{opacity:.26!important;filter:saturate(.95)!important}
#desktop-area .v10-hero-content{z-index:2!important;position:relative}
#desktop-area .v10-hero h2{color:#fff!important;text-shadow:0 3px 15px #000,0 0 22px #6c1aa655!important}
#desktop-area .v10-hero h2 em{color:#ed73ff!important;text-shadow:0 0 24px #ba36e877!important}
#desktop-area .v10-main-actions a,.v20-launch{border-radius:8px!important;border:1px solid #b951e4!important;background:linear-gradient(142deg,#501168,#1a112f)!important;color:#fff!important;box-shadow:inset 0 1px #ffddff39,0 4px 20px #bf37ff29!important;text-decoration:none!important}
#desktop-area .v10-main-actions a:hover,.v20-launch:hover{box-shadow:0 0 19px #db4dff68!important;transform:translateY(-2px)}
#desktop-area .v10-journey-card,#desktop-area .app-icon,#desktop-area .v10-story,#desktop-area .v10-closing{border:1px solid #70558d!important;background:linear-gradient(135deg,#292030ed,#090d16ef 49%,#1b1529ed)!important;box-shadow:inset 0 2px #cfa5e72e,inset 0 -3px #0009,0 6px 25px #0009!important;border-radius:9px!important}
#desktop-area .v10-journey-card:hover,#desktop-area .app-icon:hover{border-color:#e566ff!important;box-shadow:0 0 19px #b444f844,inset 0 2px #d8a1eb39!important}
#desktop-area .app-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important;gap:clamp(10px,1.4vw,19px)!important}
#desktop-area .app-icon{min-height:125px!important;position:relative!important;padding:17px 9px!important}
#desktop-area .app-icon-img{filter:drop-shadow(0 0 13px #ae48ff90)!important}
#desktop-area .app-icon-label{color:#e9e4fa!important;font-weight:750!important}
#desktop-area .sl-section-heading h2{color:#f4eaff!important}
#desktop-area .sl-section-heading h2::first-letter{color:#f1b1ff}
#tools-wrapper .window,#tools-wrapper .dialog,#tools-wrapper .modal-content{border-color:#704a87!important;box-shadow:0 20px 60px #000c,0 0 20px #ac3efa19!important}
#tools-wrapper .window-header{background:linear-gradient(110deg,#25132f,#0b1520)!important;border-bottom:1px solid #ab51e55e!important}
#tools-taskbar{padding-inline:clamp(10px,2vw,28px)!important}
/* standalone apps retain existing file inputs / processing UI */
body.v20-tool-page{background:radial-gradient(circle at 90% 0,#38154a35,transparent 37%),#070912!important}
.v20-tool-banner{background:linear-gradient(125deg,#272133,#080c18 70%,#2c1039);border:1px solid #7845a3;border-bottom:2px solid #c448f4;margin:12px auto;padding:12px clamp(12px,2vw,26px);width:min(1200px,calc(100% - 20px));display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;box-shadow:0 5px 24px #0009;color:#f2dcff;font:900 12px system-ui}
.v20-tool-banner a{color:#95f0ff;text-decoration:none;padding:5px 9px;border:1px solid #53788b;border-radius:4px}.v20-tool-banner span{color:#c46cff;letter-spacing:.07em}
@media(max-width:680px){#desktop-area .v10-hero{min-height:420px!important}#desktop-area .v10-home-intro{padding:12px}#desktop-area .app-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}#promoter-header .header-text h1{font-size:clamp(16px,4vw,25px)!important}.v20-tool-banner{font-size:10px}}
@media(prefers-reduced-motion:reduce){.v20-launch,.v20-home-intro a{transition:none!important}}

/* v20 Command Deck: live route cards and full-width page chrome */
.v20-command-panel{margin:0 0 28px;padding:18px;background:linear-gradient(155deg,#211626,#0b0a11 45%,#201227);border:2px solid #754684;border-top:3px solid #d45afa;border-radius:10px;box-shadow:0 0 0 4px #07070c,0 18px 38px #000a;position:relative}
.v20-command-heading{text-align:center;margin:4px auto 18px}.v20-command-heading h2{font-size:clamp(18px,2.2vw,29px);color:#fbf0ff;margin:8px 0;text-shadow:0 0 20px #b64bdc50;letter-spacing:.035em}.v20-command-heading p{color:#c0b4c9;font-size:13px;line-height:1.45}
.v20-command-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(9px,1.3vw,18px)}.v20-command-card{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;text-align:center;min-height:193px;border:2px solid #6a4378;border-radius:8px;background:linear-gradient(145deg,#25152e,#090a12 67%,#1b1226);box-shadow:inset 0 2px #ffdcff29,0 9px 20px #000a;color:#fbeeff;text-decoration:none;padding:14px 8px;transition:transform .2s,box-shadow .2s,border-color .2s}
.v20-command-card:hover,.v20-command-card:focus-visible{transform:translateY(-3px);border-color:#db74f7;box-shadow:inset 0 2px #ffdcff33,0 0 16px #c74cea55,0 9px 23px #000a}
.v20-command-art{font-size:54px;line-height:1;color:#e067fb;text-shadow:0 0 15px #bc34d4;display:flex;justify-content:center;align-items:center;height:58px}.v20-command-mix{color:#65edff;text-shadow:0 0 15px #33ceff}.v20-command-epk svg{filter:drop-shadow(0 0 8px #ab3adf)}.v20-command-card strong{font-size:clamp(12px,1.35vw,17px);letter-spacing:.045em}.v20-command-card small{color:#c9b9d1;font-size:11px;line-height:1.4}.v20-command-enter{color:#76deef;font:900 10px monospace;letter-spacing:.06em;margin-top:3px}
.v20-desktop-credit{font-size:10px;opacity:.77;flex:none;padding:2px 6px}
.v20-tool-banner{width:100%!important;max-width:none!important;margin:0!important;border-inline:0!important;border-radius:0!important;box-shadow:0 6px 21px #0008!important}
body.v20-tool-page>header,body.v20-tool-page>footer{width:100%!important;max-width:none!important;box-sizing:border-box!important}
@media(max-width:850px){.v20-command-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v20-desktop-credit{display:none}}
@media(max-width:460px){.v20-command-grid{gap:9px}.v20-command-card{min-height:156px}.v20-command-art{font-size:37px;height:43px}.v20-command-card small{font-size:10px}.v20-command-panel{padding:10px}}

/* /assets/shared/unified-footer-v2023.css */
/* BoothbysWorkShop v20.2.3: slim EPK footer used throughout normal site pages. */
.site-footer.bws-unified-footer{display:block!important;position:static!important;inset:auto!important;z-index:1;clear:both;width:100%!important;max-width:none!important;min-height:0!important;box-sizing:border-box!important;margin:0!important;padding:8px clamp(10px,2vw,28px) max(8px,env(safe-area-inset-bottom,0px))!important;background:linear-gradient(0deg,#090a10,#211726 65%,#111018)!important;border:0!important;border-top:1px solid #83469c!important;border-radius:0!important;box-shadow:0 -2px 13px #0008!important;color:#dbe3e9;font-family:inherit!important;line-height:1.3!important}
.site-footer.bws-unified-footer .shell.footer-inner{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px 18px!important;flex-wrap:wrap!important;box-sizing:border-box!important;width:100%!important;max-width:1360px!important;min-height:0!important;margin:0 auto!important;padding:0!important}
.site-footer.bws-unified-footer strong{font-size:11px!important;letter-spacing:.075em!important;line-height:1.5!important;color:#eff6fb!important;margin:0!important}
.site-footer.bws-unified-footer nav{display:flex!important;gap:clamp(8px,1.7vw,20px)!important;flex-wrap:wrap!important;align-items:center!important;margin:0!important}
.site-footer.bws-unified-footer nav a{font-size:11px!important;line-height:1.5!important;color:#d8c8e7!important;text-decoration:none!important}
.site-footer.bws-unified-footer nav a:hover,.site-footer.bws-unified-footer nav a:focus-visible{color:#fff!important;text-decoration:underline!important}
.site-footer.bws-unified-footer small{font-size:11px!important;white-space:nowrap!important;color:#aab5c4!important;margin:0!important}
/* Keep the existing homepage Apps / Share / Clock / Visitors bar intact. */
footer#tools-taskbar{display:flex!important}
/* Standalone tool pages receive the slim footer. Embedded Apps windows do not. */
body.v20-tool-page > footer.bws-unified-footer{display:block!important}
html.bw-embedded body > footer.bws-unified-footer,html.bw-tool-embedded body > footer.bws-unified-footer{display:none!important}
@media(max-width:670px){.site-footer.bws-unified-footer .footer-inner{justify-content:center!important;text-align:center!important}.site-footer.bws-unified-footer nav{justify-content:center!important}.site-footer.bws-unified-footer{padding:8px 10px max(8px,env(safe-area-inset-bottom,0px))!important}}

/* /assets/shared/homepage-footer-v2025.css */
/* BoothbysWorkShop v20.2.5 shared homepage-style footer. Normal document flow, no overlay. */
:root{--bw-footer-bg:#0c1728;--bw-footer-edge:#3a728c;--bw-footer-text:#d9f5ff}
html{min-height:100%}body{min-height:100vh;min-height:100dvh;box-sizing:border-box}
body:not(.bw-iframe-app){display:flex;flex-direction:column}
body:not(.bw-iframe-app)>main,body:not(.bw-iframe-app)>#tools-wrapper{flex:1 0 auto;min-height:0}
body>.bws-homebar-footer,body>.bws-homebar-footer.site-footer{display:flex!important;position:fixed!important;top:auto!important;bottom:0!important;left:0!important;right:0!important;flex:0 0 auto;clear:both;width:100%!important;max-width:none!important;min-height:50px!important;margin-top:auto!important;padding:7px clamp(10px,1.6vw,22px) max(7px,env(safe-area-inset-bottom,0px))!important;align-items:center;justify-content:space-between;gap:8px 18px;box-sizing:border-box!important;border:0!important;border-top:1px solid var(--bw-footer-edge)!important;border-radius:0!important;background:linear-gradient(135deg,#142c42,#0b1527 55%,#171727)!important;color:var(--bw-footer-text)!important;box-shadow:0 -3px 18px #0006;font:inherit;z-index:2}
.bws-homebar-footer .bws-footer-links,.bws-homebar-footer .bws-footer-status{display:flex;gap:clamp(7px,1vw,15px);align-items:center;flex-wrap:wrap;min-width:0}
.bws-homebar-footer .bws-footer-links a,.bws-homebar-footer .bws-footer-status button{color:#d9f5ff;text-decoration:none;font-size:12px;font-weight:650;border:1px solid #345c79;background:linear-gradient(125deg,#152f46,#0d1c2e);border-radius:9px;padding:7px 10px;line-height:1.25;cursor:pointer}
.bws-homebar-footer .bws-footer-links a:hover,.bws-homebar-footer .bws-footer-links a:focus-visible,.bws-homebar-footer .bws-footer-status button:hover,.bws-homebar-footer .bws-footer-status button:focus-visible{color:white;border-color:#67dff3;outline-offset:2px}
.bws-homebar-footer .bws-footer-status .bws-footer-clock{padding:3px 10px;border:1px solid #365d72;border-radius:9px;background:#0f2438;display:flex;gap:8px;align-items:center;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px;color:#bcdbe9}
.bws-homebar-footer .bws-footer-status .bws-visits{color:#8deafa}
/* Homepage keeps its functional Apps/taskbar; there is no separate second footer. */
body:has(>#tools-wrapper)>#tools-taskbar{margin-top:auto}
/* Embedded tools must not display site chrome or footers. */
html.bw-embedded .bws-homebar-footer,html.bw-tool-embedded .bws-homebar-footer,html.bw-embedded body>.bws-homebar-footer,html.bw-tool-embedded body>.bws-homebar-footer{display:none!important}
@media(max-width:620px){body>.bws-homebar-footer{gap:6px 10px;flex-wrap:wrap;padding:6px 8px max(6px,env(safe-area-inset-bottom,0px))!important}.bws-homebar-footer .bws-footer-links a,.bws-homebar-footer .bws-footer-status button{font-size:11px;padding:6px 7px}.bws-homebar-footer .bws-footer-clock{font-size:10px!important;padding:3px 6px!important}}

/* /assets/shared/layout-stability-v2026.css */
/* v20.2.6 Layout stability: reserve the rendered geometry before asynchronous data arrives.
   Does not animate layout properties or change playback controls. */
html { scrollbar-gutter: stable; }
img { height: auto; }
/* The homepage header keeps its measured width when visit counts populate. */
#promoter-header { box-sizing: border-box; }
#promoter-header .header-title-box { min-width:0; }
#promoter-header .bw-header-actions { min-width:0; }
#promoter-header .visitor-pill, #bw-task-visitors { font-variant-numeric: tabular-nums; }
#promoter-header .visitor-pill { min-width: 114px; justify-content: center; white-space:nowrap; }
#bw-visits-value, [data-bws-visits] { display: inline-block; min-width: 6ch; text-align: right; font-variant-numeric: tabular-nums; }
#clock-time { display:block; min-width: 11ch; text-align:right; font-variant-numeric:tabular-nums; }
#bw-task-date { display:block; min-height: 12px; min-width: 7ch; text-align:right; }
/* The footer is in document flow, but its text is replaced asynchronously. */
.bws-homebar-footer .bws-footer-clock { min-height: 32px; }
.bws-homebar-footer [data-bws-clock] { display:inline-block; min-width: 11ch; text-align:right; font-variant-numeric:tabular-nums; }
.bws-homebar-footer [data-bws-date] { display:inline-block; min-width: 7ch; text-align:center; }
.bws-homebar-footer .bws-footer-status { flex:0 0 auto; }
/* Keep the hero image region fixed as its high priority artwork decodes. */
#desktop-area .v10-hero-art { min-width:0; overflow:hidden; }
#desktop-area .v10-hero-art picture { display:block; width:100%;height:100%; }
#desktop-area .v10-hero-art img { display:block;width:100%;height:100%;object-fit:cover; }
#desktop-area .v10-hero-content { min-width:0; }
#desktop-area .v10-hero { overflow:hidden; }
/* On Air: artwork and timing updates must not stretch the now-playing console. */
.cdj-track { min-width:0; }
.cdj-track #cdjCover { width:clamp(64px,8vw,108px);height:clamp(64px,8vw,108px);aspect-ratio:1;flex:0 0 auto;object-fit:cover; }
.cdj-track .cdj-ident { min-width:0; }
.cdj-track #cdjTitle { overflow-wrap:anywhere; }
.cdj-time, .cdj-time-row, #cdjElapsed, #cdjRemaining, #cdjDuration, #cdjTime { font-variant-numeric: tabular-nums; }
#playlist { overflow-anchor:none; }
#playlist li[data-track] { box-sizing:border-box; min-height:56px; }
#playlist img.track-art { width:42px; height:42px; aspect-ratio:1;object-fit:cover;flex:0 0 42px; }
.cdj-console>.setlist { min-width:0; }
/* Embedded tools keep the original window geometry and do not acquire a footer. */
html.bw-embedded body, html.bw-tool-embedded body { min-height:0; }
@media(max-width:700px){
 #promoter-header .visitor-pill { min-width:92px; }
 #desktop-area .v10-hero-art { min-height:0; aspect-ratio:16/8; }
 #desktop-area .v10-hero-art picture { position:absolute; inset:0; }
 .cdj-track #cdjCover { width:64px;height:64px; }
}
@media(max-width:420px){
 #promoter-header .visitor-pill{min-width:81px;}
 .bws-homebar-footer .bws-footer-status{flex:1 1 100%;justify-content:flex-end;}
}

/* /assets/shared/performance-v2027.css */
/* v20.2.7: maintain mobile/desktop geometry while track/artwork/app data hydrates. */
html{scrollbar-gutter:stable}body{overflow-anchor:none}
/* Explicit image sizing avoids native image dimension inference during decode. */
#desktop-area .v10-hero-art{align-self:stretch;min-width:0;contain:layout}
#desktop-area .v10-hero-art img{display:block;object-position:center}
#desktop-area .v10-hero-content{min-width:0}
#desktop-area .v10-hero-content h1,#desktop-area .v10-hero-content h2{overflow-wrap:break-word}
#promoter-header .header-logo{aspect-ratio:1}
.bws-homebar-footer [data-bws-clock],.bws-homebar-footer [data-bws-visits]{font-variant-numeric:tabular-nums;white-space:nowrap}
/* Panels below the first screen may skip costly paint; their layout size is reserved. */
@supports (content-visibility:auto){
 #desktop-area .v20-tools-showcase{content-visibility:auto;contain-intrinsic-size:auto 420px}
}
@media(max-width:700px){
 #desktop-area .v10-hero{min-width:0;}
 #desktop-area .v10-hero-art{aspect-ratio:16 / 8;}
 #desktop-area .v10-hero-art img{width:100%;height:100%;object-fit:cover}
 .bws-homebar-footer .bws-footer-clock{font-variant-numeric:tabular-nums}
}

/* /assets/shared/return-home-v2029.css */
/* v20.2.9: consistent industrial return-home navigation, across site headers. */
a.mast-home,a.back-link,a[href="/"][class*="back"],a[href="/index.html"][class*="back"],
header a[href="/"][aria-label*="Back"],header a[href="/"][title*="Back"]{
 display:inline-flex!important;align-items:center;justify-content:center;gap:8px;
 min-height:38px;padding:9px 15px!important;border-radius:8px!important;
 border:1px solid #aa59d1!important;background:linear-gradient(150deg,#302039,#11121d)!important;
 box-shadow:inset 0 1px #ffffff1f,0 4px 14px #0007!important;
 color:#f7e7ff!important;text-decoration:none!important;font-size:clamp(11px,1vw,13px)!important;
 font-weight:750!important;letter-spacing:.025em;white-space:nowrap;
}
a.mast-home:hover,a.back-link:hover,a[href="/"][class*="back"]:hover,
header a[href="/"][aria-label*="Back"]:hover{border-color:#df97fa!important;background:#44204f!important;color:#fff!important}
a.mast-home:focus-visible,a.back-link:focus-visible,a[href="/"][class*="back"]:focus-visible,
header a[href="/"][aria-label*="Back"]:focus-visible{outline:2px solid #75e4ef!important;outline-offset:3px!important}
@media(max-width:520px){a.mast-home,a.back-link,header a[href="/"][aria-label*="Back"]{padding:8px 10px!important;min-height:34px}}
