:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#eff2f4;background:#101317;font-synthesis:none;--bg:#101317;--panel:#171c21;--panel2:#1e252b;--line:#303940;--text:#eff2f4;--muted:#9aa6ae;--accent:#ffad21;--accent2:#34d9ed;--danger:#ff566b;--good:#39dc91;--shadow:0 18px 44px #0006;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 12% -15%,#24313b 0,transparent 45%),var(--bg);min-height:100vh}.hidden{display:none!important}button,input,select,textarea{font:inherit}button,select,input,textarea{border-radius:12px}button{border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:12px 16px;min-height:46px;font-weight:760;letter-spacing:.03em;cursor:pointer;transition:transform .12s,border-color .12s,filter .12s}button:hover{border-color:var(--accent)}button:active{transform:translateY(1px);filter:brightness(1.16)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);color:#15191b;border-color:var(--accent);font-weight:900}.danger{background:#5b222b;border-color:#a23a48;color:#ffd8dc}.secondary{background:var(--panel2)}.listen{border-color:var(--accent2);color:var(--accent2);background:transparent}.round{min-width:84px;padding:8px 12px}.pair-screen{min-height:100vh;display:grid;place-items:center;padding:22px}.pair-card{width:min(420px,100%);padding:30px;background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.brand-mark{font-weight:950;font-size:26px;letter-spacing:.12em}.brand-mark span{color:var(--accent)}.pair-card h1{font-size:27px;margin:8px 0}.pair-card label{display:block;font-size:13px;font-weight:800;margin:24px 0 7px}.pair-card input{width:100%;padding:14px;border:1px solid var(--line);background:var(--bg);color:var(--text);font-size:20px;letter-spacing:.2em}.pair-card button{width:100%;margin-top:14px}.pair-card p{color:var(--muted);line-height:1.45}.pair-card .error{color:var(--danger);min-height:20px}.app-shell{max-width:1540px;margin:auto;padding:0 22px 16px}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:18px;padding:14px 0;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.brand{display:flex;flex-direction:column;font-weight:950;letter-spacing:.13em;font-size:18px}.brand small{color:var(--accent);font-size:10px;letter-spacing:.22em}.connection{display:flex;align-items:center;gap:9px;border:1px solid var(--line);padding:9px 12px;border-radius:30px;font-size:11px;font-weight:900;letter-spacing:.08em}.connection i{width:9px;height:9px;border-radius:50%;background:var(--danger);box-shadow:0 0 14px currentColor}.connection.online i{background:var(--good);color:var(--good)}.connection.offline i{color:var(--danger)}.header-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.header-actions select{max-width:190px}.header-actions select,select,textarea{color:var(--text);background:var(--panel);border:1px solid var(--line);padding:11px}.icon-button{padding:8px 12px;min-height:42px}.songbar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:23px 0 18px;border-bottom:1px solid var(--line)}.eyebrow{font-size:10px;font-weight:900;letter-spacing:.17em;color:var(--muted);margin:0 0 6px}.song-title-wrap h1{font-size:clamp(23px,3vw,35px);margin:0;letter-spacing:-.04em}.muted{color:var(--muted);font-size:13px;margin:6px 0 0}.song-controls{display:flex;gap:8px;align-items:center}.connection-panel{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:17px;margin:18px 0;background:var(--panel);border:1px solid var(--line);border-radius:18px}.connection-panel strong{display:block;margin-top:4px}.connect-controls{display:grid;grid-template-columns:170px auto auto;gap:9px;align-items:center}.connect-controls>input,textarea{background:var(--bg);color:var(--text);border:1px solid var(--line);padding:11px}.checkline{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px}.mix-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 0 13px}.member-picker{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.member-picker h2,.section-heading h2{font-size:24px;margin:0}.member-picker select{min-width:120px}.bus-badge{padding:8px 10px;border:1px solid var(--accent);border-radius:20px;color:var(--accent);font-size:11px;font-weight:900;letter-spacing:.05em}.profile-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.tools-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0 18px;border-bottom:1px solid var(--line)}.group-control,.mix-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.group-control strong{font-size:11px;color:var(--accent);letter-spacing:.08em}.group-control span{font-size:11px;color:var(--muted)}.mix-tools button{padding:10px 12px}.channel-grid{display:grid;grid-template-columns:repeat(4,minmax(185px,1fr));gap:12px;padding:18px 0}.channel-card{background:linear-gradient(155deg,var(--panel),color-mix(in srgb,var(--panel) 80%,var(--bg)));border:1px solid var(--line);border-radius:18px;padding:14px;min-width:0;box-shadow:0 8px 25px #0002}.channel-card.is-muted{opacity:.58}.channel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.channel-name{font-weight:850;font-size:14px;line-height:1.2}.channel-index{font-size:10px;color:var(--muted);letter-spacing:.08em}.db-value{font-variant-numeric:tabular-nums;color:var(--accent2);font-weight:850;margin-top:10px;font-size:14px}.level-range{width:100%;margin:14px 0 10px;accent-color:var(--accent);touch-action:pan-x}.control-line{display:flex;align-items:center;gap:7px}.pan-range{width:100%;accent-color:var(--accent2);touch-action:pan-x}.pan-label{display:flex;justify-content:space-between;color:var(--muted);font-size:9px;margin-top:2px}.mute-button{min-height:34px;padding:6px 9px;font-size:10px}.mute-button.active{border-color:var(--danger);color:var(--danger)}.notice{border:1px solid var(--accent2);background:color-mix(in srgb,var(--accent2) 12%,var(--panel));padding:12px 15px;border-radius:12px;margin:14px 0;font-size:13px}.notice.error{border-color:var(--danger);background:#4d1e27}.small-note{font-size:11px;color:var(--muted);line-height:1.5;margin:4px 0 20px}.basic-view{padding:24px 0}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.master-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.master-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px}.master-card strong{display:block}.master-card .bus-small{font-size:10px;color:var(--muted);margin:5px 0 14px}.master-card .master-value{color:var(--accent);font-weight:900;margin-bottom:8px}.master-card input{width:100%;accent-color:var(--accent)}.basic-actions{display:flex;align-items:center;justify-content:center;gap:14px;padding:22px 0}.basic-actions .primary{min-width:190px}.basic-song{display:flex;flex-direction:column;align-items:center;min-width:130px}.basic-song span{font-size:10px;color:var(--muted);letter-spacing:.12em}.basic-song strong{font-size:18px}.settings-panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:20px;margin:20px 0}.settings-panel p{color:var(--muted);font-size:13px;line-height:1.5}.settings-panel textarea{width:100%;resize:vertical}.settings-actions{display:flex;gap:8px;margin-top:10px}.scene-details{border-top:1px solid var(--line);margin-top:17px;padding-top:13px;font-size:12px;color:var(--muted);line-height:1.7}.scene-details strong{color:var(--text)}footer{display:flex;justify-content:space-between;gap:14px;border-top:1px solid var(--line);padding:14px 0;color:var(--muted);font-size:9px;letter-spacing:.09em}.ember{--accent:#ff5a47;--accent2:#ffd166;--bg:#160f12;--panel:#201719;--panel2:#2a1d1f;--line:#493237}.daylight{color-scheme:light;--bg:#f3f4f5;--panel:#fff;--panel2:#e9edf0;--line:#a9b2b9;--text:#152028;--muted:#45515b;--accent:#a94700;--accent2:#005a77;--danger:#aa1730;--good:#087440;--shadow:0 14px 30px #24313b18;background:var(--bg)}.daylight .topbar{background:color-mix(in srgb,var(--bg) 90%,transparent)}.daylight .channel-card{background:#fff;box-shadow:0 6px 18px #1b283012}.daylight .primary{color:#fff;background:#a94700}.daylight .danger{color:#fff}.stage .channel-card:nth-child(even){border-top-color:var(--accent2)}.ember .channel-card:nth-child(even){border-top-color:var(--accent)}@media(max-width:1050px){.channel-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}.connect-controls{grid-template-columns:1fr}.master-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.app-shell{padding:0 12px 12px}.topbar{gap:9px}.brand{font-size:15px}.connection{font-size:9px;padding:8px}.header-actions{gap:5px}.header-actions select{max-width:44px;font-size:0}.header-actions select option{font-size:14px}.header-actions select:focus{max-width:165px;font-size:12px}.songbar,.mix-heading,.tools-row,.connection-panel{align-items:stretch;flex-direction:column}.song-controls{display:grid;grid-template-columns:1fr 1fr}.song-controls .primary{grid-column:span 2}.profile-actions{display:grid;grid-template-columns:repeat(2,1fr)}.profile-actions button{padding:9px;font-size:11px}.tools-row{gap:13px}.mix-tools{display:grid;grid-template-columns:repeat(3,1fr)}.mix-tools button{font-size:10px;padding:9px 7px}.channel-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.channel-card{padding:11px;border-radius:14px}.channel-name{font-size:13px}.member-picker{gap:10px}.member-picker h2{font-size:21px}.master-grid{grid-template-columns:1fr}.basic-actions{display:grid;grid-template-columns:1fr 1fr}.basic-song{grid-column:span 2;grid-row:1}.basic-actions .primary{grid-column:span 2}.settings-actions{flex-direction:column}footer{font-size:8px}.bus-badge{font-size:9px}}

/* Touch mixer: five vertical strips on phones and tablets. */
:root{--accent:#ffb31b;--accent2:#cbd0d1;--bg:#0c1011;--panel:#171c1d;--panel2:#212728;--line:#343c3d}
body{background:radial-gradient(ellipse at 50% 0,#202728 0,transparent 60%),var(--bg)}
.app-shell{max-width:900px;padding:0 14px 14px}.topbar{padding:12px 0;gap:12px}.brand{font-size:22px;letter-spacing:.09em}.brand small{letter-spacing:.28em}.brand:after{content:'X32';color:var(--accent);font-style:italic;font-size:13px;position:absolute;margin-left:117px;margin-top:7px}.brand{margin-right:35px}.connection{margin-left:auto;border:0;padding:6px;font-size:10px;letter-spacing:.03em}.connection.offline i{background:var(--accent);color:var(--accent)}.header-actions{margin-left:0}.icon-button{min-width:48px;min-height:48px;font-size:18px}
.songbar{padding:12px 0;gap:10px}.song-title-wrap h1{font-size:24px}.song-controls{display:flex;gap:6px}.song-controls button{min-height:48px;min-width:48px;padding:6px 12px;font-size:16px}.song-controls #loadActive{display:none}#profileHint{display:none}.eyebrow{font-size:9px}.song-title-wrap .eyebrow{margin-bottom:2px}
.mix-heading{padding:14px 0 10px}.member-picker{gap:8px;width:100%;flex-wrap:nowrap}.member-picker>div{display:none}.member-picker select{min-height:48px;min-width:115px;border-color:var(--accent);color:var(--accent);font-weight:800;font-size:17px;background:linear-gradient(#26291f,#181c16)}.bus-badge{border:0;padding:4px;color:var(--muted);font-size:10px;letter-spacing:0}.member-picker:has(select.hidden)>div{display:block}.member-picker h2{color:var(--accent)}
.channel-groups{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.channel-groups button{padding:8px 2px;min-height:48px;font-size:13px;font-weight:650;letter-spacing:0;border-radius:8px;background:linear-gradient(#212728,#171c1d)}.channel-groups button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:linear-gradient(#353020,#1d1c15)}
.bank-nav{display:flex;align-items:center;justify-content:space-between;padding:7px 0;gap:8px}.bank-nav button{min-width:48px;min-height:48px;padding:0;font-size:26px;background:transparent;border-color:transparent}.bank-nav span{color:var(--muted);font-size:11px;letter-spacing:.1em}
.channel-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0 0 14px;align-items:start}.channel-card{padding:10px 7px 6px;border-radius:8px;background:linear-gradient(105deg,#1e2425,#121718 70%,#1c2223);box-shadow:inset 0 1px 0 #ffffff0b,0 5px 12px #0003;text-align:center}.stage .channel-card:nth-child(even){border-top-color:var(--line)}.channel-index{font-size:10px;color:#839093;line-height:14px}.strip-icon{height:32px;margin:5px auto 4px;color:#b8c0c1}.strip-icon svg{width:28px;height:28px}.channel-name{font-size:14px;font-weight:600;height:34px;min-height:34px;min-width:0;overflow:hidden;display:flex;align-items:center;justify-content:center;overflow-wrap:anywhere;line-height:1.1}.fader-well{position:relative;height:235px;display:flex;justify-content:center;margin:12px 0 8px;padding:8px 0}.fader-scale{position:absolute;inset:7px 1px 7px auto;display:flex;flex-direction:column;justify-content:space-between;font-size:9px;color:#7b8588;pointer-events:none}.fader-scale:before{content:'';position:absolute;inset:0 auto 0 -9px;width:5px;background:repeating-linear-gradient(to top,transparent 0 20px,#4c5556 20px 21px,transparent 21px 22px)}
.level-range{writing-mode:vertical-lr;direction:rtl;appearance:none;-webkit-appearance:none;width:48px;height:100%;margin:0;background:transparent;cursor:ns-resize;touch-action:none;border-radius:0;position:relative;z-index:1;accent-color:var(--accent)}
.level-range::-webkit-slider-runnable-track{width:9px;height:100%;border-radius:5px;background:linear-gradient(to top,var(--accent) 0 var(--fill),#050808 var(--fill) 100%);box-shadow:inset 0 1px 4px #000,0 0 0 1px #0008}
.level-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:42px;height:30px;margin-left:-16px;border-radius:4px;border:1px solid #aeb3b4;background:linear-gradient(to bottom,#a7adae 0,#e5e8e8 8%,#8d9495 40%,#555d5e 47%,#151a1b 49%,#eff2f2 53%,#a1a8a9 58%,#d5d9d9 92%,#757d7e 100%);box-shadow:0 3px 5px #000a}
.level-range::-moz-range-track{width:9px;border-radius:5px;background:#050808}.level-range::-moz-range-progress{background:var(--accent);width:9px}.level-range::-moz-range-thumb{width:42px;height:30px;border-radius:4px;background:linear-gradient(#ddd,#727a7b,#ddd);border:1px solid #aeb3b4}
.level-range:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.db-value{color:var(--text);font-size:16px;margin:0 0 8px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.db-value small{font-size:10px;color:var(--muted);font-weight:400}.step-button{display:block;width:100%;min-height:48px;padding:0;margin:4px 0;font-size:24px;line-height:1;border-radius:6px;background:linear-gradient(#262d2f,#1b2022);font-weight:400}.channel-card.is-muted{opacity:1}.channel-card.is-muted .level-range{filter:grayscale(1);opacity:.55}.channel-card.is-muted .channel-name{color:#f78b95}
.mix-extras{padding:0 0 12px}.mix-extras>summary{cursor:pointer;min-height:48px;display:flex;align-items:center;color:var(--muted);font-size:13px;gap:8px}.mix-extras>summary:before{content:'+';font-size:20px}.mix-extras[open]>summary:before{content:'−'}.profile-actions{justify-content:flex-start;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.profile-actions button{min-height:48px;font-size:12px}.tools-row{flex-direction:column;align-items:stretch;border-bottom:0;padding:12px 0 0}.group-control span{display:none}.group-control strong{flex:1}.mix-tools{display:flex;flex-wrap:wrap}.mix-tools button{min-height:48px;font-size:12px}.mix-view>.small-note,.basic-view>.small-note,footer{display:none}
.notice{position:fixed;bottom:14px;left:14px;right:14px;max-width:650px;margin:auto;z-index:20;box-shadow:0 5px 25px #0009;font-size:13px;background:var(--panel);border-color:var(--accent)}
.settings-panel{position:fixed;inset:12px;margin:0 auto;max-width:720px;z-index:12;overflow:auto;box-shadow:0 0 0 100vmax #000c;padding:20px}.connection-panel{flex-direction:column;margin-bottom:0;padding:14px}.connect-controls{grid-template-columns:1fr;width:100%}.connect-controls>input{min-height:48px;width:100%;font-size:16px}.checkline{min-height:48px;line-height:1.4}.checkline input{width:24px;height:24px;flex:none}.diagnostics{margin-top:12px;width:100%;font-size:12px;color:var(--muted)}.diagnostics summary{cursor:pointer;min-height:48px;display:flex;align-items:center}.diagnostics p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.7}.preferences{display:flex;gap:8px;flex-wrap:wrap;padding-top:16px}.preferences select{min-height:48px}.scene-details{display:none}.section-heading h2{font-size:20px}#simpleMessage{display:none}.basic-actions{display:none}.master-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.master-card{padding:12px 6px;border-radius:8px;text-align:center;background:linear-gradient(105deg,#1e2425,#121718)}.master-card strong{font-size:12px;min-height:34px;overflow-wrap:anywhere}.master-card .bus-small{font-size:9px}.master-card .master-value{font-size:13px}.master-card input{writing-mode:vertical-lr;direction:rtl;width:48px;height:240px;touch-action:none}.master-card input::-webkit-slider-thumb{width:36px;height:28px}.basic-view{padding-top:16px}
@media(max-width:700px){.app-shell{padding:0 8px 12px}.topbar{gap:6px;padding:8px 0}.brand{font-size:17px;margin-right:26px}.brand:after{margin-left:89px;font-size:11px;margin-top:5px}.connection{font-size:9px;padding:2px;gap:5px}.brand small{font-size:8px}.songbar{flex-direction:row;align-items:center;padding:10px 0}.song-title-wrap h1{font-size:22px}.song-controls button{padding:0}.mix-heading{flex-direction:row;padding:10px 0}.member-picker{gap:4px}.channel-groups{gap:4px}.channel-groups button{font-size:12px}.channel-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}.channel-card{padding:7px 3px 3px;border-radius:6px}.channel-name{font-size:11px;height:28px;min-height:28px;line-height:1.15}.strip-icon{height:24px;margin:4px 0}.strip-icon svg{width:23px;height:23px}.fader-well{height:200px;margin:10px 0 6px;justify-content:flex-start;padding-left:2px}.fader-scale{font-size:7px;right:0}.fader-scale:before{left:-5px;width:3px}.level-range{width:48px}.level-range::-webkit-slider-thumb{width:38px;height:30px;margin-left:-14px}.db-value{font-size:13px}.db-value small{display:none}.channel-index{font-size:8px}.bank-nav{padding:2px 0}.settings-panel{inset:8px;padding:14px}.master-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}.master-card .master-value{font-size:11px}.master-card input{width:44px;height:200px}.master-card strong{font-size:10px}.settings-actions{flex-direction:column}.song-controls{display:flex}.bus-badge{font-size:9px}.mix-tools{display:flex}.profile-actions{display:grid;grid-template-columns:repeat(2,1fr)}}
@media(max-width:350px){.brand:after{display:none}.brand{margin-right:0}.connection{font-size:8px}.channel-card{padding-left:2px;padding-right:2px}.fader-well{padding-left:0}.level-range{width:44px}.fader-scale{display:none}.level-range::-webkit-slider-thumb{width:36px;margin-left:-13px}}

.fader-slot{position:absolute;top:8px;bottom:8px;left:calc(50% - 4.5px);width:9px;border-radius:5px;background:#050808;box-shadow:inset 0 1px 4px #000,0 0 0 1px #0008;overflow:hidden;pointer-events:none}.fader-fill{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to right,#d88b04,#ffb31b 50%,#cc8303);box-shadow:0 0 7px #ffb31b44}.level-range::-webkit-slider-runnable-track{background:transparent;box-shadow:none}.fader-scale{display:block}.fader-scale>span{position:absolute;right:0;transform:translateY(-50%)}.fader-scale:before{background:repeating-linear-gradient(to bottom,#4c5556 0 1px,transparent 1px 22px)}.channel-card.is-muted .fader-fill{filter:grayscale(1);opacity:.5}
@media(max-width:700px){.fader-slot{left:21.5px}}@media(max-width:350px){.fader-slot{left:17.5px}}

.fader-scale>span:nth-child(1){top:0%}.fader-scale>span:nth-child(2){top:13.333333%}.fader-scale>span:nth-child(3){top:40%}.fader-scale>span:nth-child(4){top:66.666667%}.fader-scale>span:nth-child(5){top:80%}.fader-scale>span:nth-child(6){top:100%}

.notice details summary{cursor:pointer;min-height:48px;display:flex;align-items:center;color:var(--accent)}.notice details p{max-height:32vh;overflow:auto;white-space:pre-wrap;line-height:1.5}.channel-groups:has(button.hidden){grid-template-columns:repeat(4,minmax(0,1fr))}

body{color:var(--text)}.master-button{min-height:48px;padding:6px 10px;font-size:12px;font-weight:600;letter-spacing:0;white-space:nowrap;border-color:var(--accent);color:var(--accent)}.member-picker{min-width:0;flex:1}.quick-profiles{display:flex;align-items:center;gap:6px;padding-bottom:10px}.quick-profiles button{min-width:64px;min-height:48px;padding:8px;font-size:15px;border-radius:8px}.quick-profiles span{font-size:12px;color:var(--muted);margin-left:6px}.personal-master-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(280px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;z-index:15;padding:16px;border-radius:12px;background:var(--panel);border:1px solid var(--line);box-shadow:0 0 0 100vmax #000c}.personal-master-panel h2{font-size:18px}.personal-master-panel p{font-size:13px;color:var(--accent);text-align:center;margin:0}.personal-master-strip{max-width:100px;margin:auto;text-align:center}.personal-master-strip .fader-well{height:230px}.personal-master-strip strong{display:block;margin:12px 0;font-size:20px}.personal-master-panel .step-button{margin-top:8px}.master-grid:has(>.master-card:only-child){grid-template-columns:minmax(0,1fr);max-width:200px;margin:auto}.daylight .master-card{background:#fff}.fader-fill{background:var(--accent);background-image:linear-gradient(to right,color-mix(in srgb,var(--accent) 70%,#5b3600),var(--accent),color-mix(in srgb,var(--accent) 70%,#5b3600))}
@media(max-width:700px){.master-button{font-size:11px;max-width:145px;white-space:normal}.mix-heading{gap:6px;align-items:center}.member-picker .bus-badge{display:none}.personal-master-strip .fader-well{justify-content:center;padding-left:0;height:220px}.personal-master-strip .fader-slot{left:calc(50% - 4.5px)}}

.quick-profiles button.primary{background:var(--accent);color:#15191b;border-color:var(--accent)}.daylight .quick-profiles button.primary{color:#fff}.channel-grid{grid-template-columns:repeat(var(--strips,5),minmax(0,1fr))}.fader-slot{top:23px;bottom:23px}.fader-scale{top:23px;bottom:23px}.fader-scale:before{display:none}.fader-scale>span:before{content:"";position:absolute;left:-9px;top:50%;width:5px;height:1px;background:#4c5556}
@media(max-width:700px){.channel-grid{grid-template-columns:repeat(var(--strips,5),minmax(0,1fr))}.fader-well{justify-content:center;padding-left:0}.fader-slot{left:calc(50% - 4.5px)}.fader-scale{right:calc(50% - 32px)}}

.modal-backdrop{position:fixed;inset:0;z-index:11;background:#000b}.settings-panel,.personal-master-panel{box-shadow:0 18px 44px #0008}

.daylight .step-button,.daylight .channel-groups button,.daylight .mute-button,.daylight .member-picker select{background:linear-gradient(#fff,#e9edf0);color:var(--text);border-color:var(--line)}.daylight .channel-groups button[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}.daylight .member-picker select{color:var(--accent)}.daylight .strip-icon{color:#526167}.daylight .channel-index,.daylight .fader-scale{color:#46555e}
.master-card .level-range{appearance:none;-webkit-appearance:none;width:48px;height:100%;border-radius:0}.master-card .level-range::-webkit-slider-thumb{width:42px;height:30px;margin-left:-16px}.master-card .fader-well{height:240px}.master-card .level-range::-moz-range-thumb{width:42px;height:30px}
@media(max-width:700px){.master-card{padding:12px 3px}.master-card .fader-well{height:220px}.master-card .level-range::-webkit-slider-thumb{width:38px;height:30px;margin-left:-14px}}

.pair-card #pinInput{display:block;width:100%;min-height:52px;margin:14px 0 20px;font-size:18px;}
.startup-card{width:min(490px,100%);max-height:calc(100dvh - 24px);overflow:auto}.startup-card h1{font-size:26px}.startup-card p{line-height:1.5}.startup-card select{width:100%;min-height:48px;margin:8px 0}.startup-card .primary{width:100%;min-height:48px}.startup-actions{display:flex;gap:8px;margin-top:10px}.startup-actions button{flex:1;min-height:48px;font-size:12px;padding:10px}.startup-card .muted{font-size:12px}.offline-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin:8px 0;border:1px solid var(--accent);border-radius:10px;color:var(--text);background:var(--panel);font-size:12px}.offline-banner button{flex:none;min-height:44px;font-size:11px;padding:8px}@media(max-width:450px){.offline-banner{align-items:stretch;flex-direction:column;gap:6px}.offline-banner button{align-self:flex-start}}

.confirm-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#000b;padding:16px;}
.action-confirm{width:min(390px,100%);max-height:calc(100dvh - 32px);overflow:auto;border:1px solid var(--accent);border-radius:14px;background:var(--panel);padding:20px;box-shadow:0 16px 60px #0009;}
.action-confirm p{margin:0 0 20px;line-height:1.5;color:var(--text);font-size:16px;}
.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;}.confirm-actions button{min-height:48px;font-size:13px;padding:10px 8px;}

#bandCode{font-size:14px;font-family:monospace}
.connect-controls select,.connect-controls input:not([type=checkbox]){width:100%;min-width:0;max-width:100%;min-height:48px;font-size:16px;padding:10px;background:var(--bg);color:var(--text);border:1px solid var(--line)}.connect-controls label:not(.checkline){display:grid;gap:6px;font-size:14px}.connect-controls details{min-width:0}.connect-controls summary{cursor:pointer;min-height:44px;display:flex;align-items:center}#networkDiscoveryStatus{margin:0}
.notice{pointer-events:none}.notice details{pointer-events:auto}
.recovery-status{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.recovery-status.error{color:var(--danger)}
#bandhelperPanel{margin:16px 0;border:1px solid var(--line);border-radius:10px;padding:12px;min-width:0}#bandhelperPanel summary{min-height:48px;display:flex;align-items:center;cursor:pointer;overflow-wrap:anywhere}#bandhelperPanel label{display:block;margin:12px 0;font-size:14px}#bandhelperFeed{display:block;width:100%;min-width:0;min-height:48px;background:var(--bg);color:var(--text);border:1px solid var(--line);padding:10px;margin:6px 0;font-size:16px}#bandhelperPanel p,#feedPreview{font-size:13px;line-height:1.5;overflow-wrap:anywhere}#bandhelperPanel button{min-height:48px;margin:6px 0;max-width:100%;white-space:normal;overflow-wrap:anywhere}#feedPreview{max-height:220px;overflow:auto;padding-left:22px}#feedPreview:empty{display:none}#feedStatus.error{color:var(--danger)}
#recoveryPanel summary{min-height:48px;display:flex;align-items:center;cursor:pointer;overflow-wrap:anywhere}#recoveryPanel p{font-size:13px;line-height:1.5;overflow-wrap:anywhere}#recoveryPanel button{min-height:48px;max-width:100%;white-space:normal;overflow-wrap:anywhere;margin:6px 0}

/* One continuous bank. Five touch strips fit on a phone; extra strips scroll. */
.channel-grid{display:flex!important;overflow-x:auto;overflow-y:hidden;gap:8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:thin}
.channel-grid>.channel-card{flex:0 0 calc((100% - (var(--strips,5) - 1)*8px)/var(--strips,5));min-width:0;scroll-snap-align:start}
.channel-grid .level-range{touch-action:pan-x}
.channel-name{color:var(--strip-color,var(--text));font-weight:750}.strip-icon{color:var(--strip-color,var(--muted))}.channel-card{border-top:3px solid var(--strip-color,var(--line))!important}.group-hint{font-size:10px;line-height:1.3;color:var(--muted);padding:8px 0}
[data-xcolor=red]{--strip-color:#ff6571}[data-xcolor=green]{--strip-color:#55d997}[data-xcolor=yellow]{--strip-color:#ffdc48}[data-xcolor=blue]{--strip-color:#569aff}[data-xcolor=purple]{--strip-color:#d68cff}[data-xcolor=cyan]{--strip-color:#40dce9}[data-xcolor=white]{--strip-color:#eff2f4}
#memberTitle,.master-card>strong{color:var(--strip-color,var(--text))}
:root{--song-blue:#248fff;--song-orange:#ffb13b;--song-pink:#ff40a2;--song-purple:#a884ff}
.daylight{--song-blue:#005bd8;--song-orange:#994900;--song-pink:#c01373;--song-purple:#6630ca}.daylight [data-xcolor=white]{--strip-color:#343f49}.daylight [data-xcolor=yellow]{--strip-color:#866600}.daylight [data-xcolor=green]{--strip-color:#176c40}.daylight [data-xcolor=purple]{--strip-color:#8134a5}.daylight [data-xcolor=red]{--strip-color:#b82c3c}
[data-song-color=white]{color:var(--text,#eff2f4)!important}[data-song-color=blue]{color:var(--song-blue)!important}[data-song-color=orange]{color:var(--song-orange)!important}[data-song-color=pink]{color:var(--song-pink)!important}[data-song-color=purple]{color:var(--song-purple)!important}
.next-song{min-width:0;max-width:40%;display:flex;flex-direction:column;gap:3px}.next-song small{font-size:9px;color:var(--muted);letter-spacing:.08em}.next-song strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.song-navigation-enabled .song-title-wrap,.song-navigation-enabled .next-song{touch-action:pan-y}
.song-navigation-enabled #songTitle,.song-navigation-enabled #nextSongTitle{cursor:pointer;user-select:none;-webkit-user-select:none}
.song-navigation-enabled [role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}
.song-picker{width:min(94vw,620px);max-height:90vh;display:flex;flex-direction:column;gap:12px;min-width:0}
.song-picker h2,.song-picker p{margin:0}.song-picker p{font-size:14px;color:var(--muted)}
.song-picker input{width:100%;min-height:46px;font-size:16px;padding:10px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px}
.song-picker-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:6px;max-height:55vh}
.song-picker-list button{text-align:left;min-height:48px;flex-shrink:0;padding:10px 12px;white-space:normal;overflow-wrap:break-word}
.song-picker-list [aria-current=true]{border-color:var(--accent)}.song-picker-list .song-picker-focus{outline:1px solid var(--muted);outline-offset:-3px}
@media(max-width:700px){.channel-grid{gap:4px}.channel-grid>.channel-card{flex-basis:calc((100% - (var(--strips,5) - 1)*4px)/var(--strips,5))}.next-song strong{font-size:12px}.next-song{max-width:32%}}
/* Landscape is a performance view of the selected bank. Rotate back for setup. */
@media(orientation:landscape) and (max-height:650px), (orientation:landscape) and (any-pointer:coarse){
 body:not(.basic-mode) .app-shell>footer,body:not(.basic-mode) .topbar,body:not(.basic-mode) .song-controls,body:not(.basic-mode) .mix-heading,body:not(.basic-mode) .quick-profiles,body:not(.basic-mode) .channel-groups,body:not(.basic-mode) .bank-nav,body:not(.basic-mode) .mix-extras,body:not(.basic-mode) .small-note,body:not(.basic-mode) #profileHint,body:not(.basic-mode) .song-title-wrap>.eyebrow{display:none!important}
 body:not(.basic-mode) .app-shell{padding:0 10px;max-width:none;height:100vh;height:100dvh;display:flex;flex-direction:column}body:not(.basic-mode) main{padding:0;display:flex;flex-direction:column;flex:1;min-height:0}body:not(.basic-mode) .songbar{padding:5px 0;gap:16px;min-height:44px;display:flex;flex:none;flex-direction:row;align-items:center}body:not(.basic-mode) .song-title-wrap{flex:1;min-width:0}body:not(.basic-mode) #songTitle{font-size:19px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}
 body:not(.basic-mode) .next-song{max-width:45%}body:not(.basic-mode) .next-song strong{font-size:13px}body:not(.basic-mode) .next-song small{font-size:8px}
 body:not(.basic-mode) .mix-view{display:flex;flex-direction:column;flex:1;min-height:0}body:not(.basic-mode) .channel-grid{flex:1;min-height:0;align-items:stretch;padding-bottom:4px}body:not(.basic-mode) .channel-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:10px 44px 24px minmax(48px,1fr) 20px 32px;column-gap:4px;min-height:0;padding-top:3px;padding-bottom:2px}body:not(.basic-mode) .channel-card>div{grid-column:1/-1}body:not(.basic-mode) .strip-icon{display:block;margin:0 auto}body:not(.basic-mode) .channel-name{font-size:11px;height:24px;min-height:24px}body:not(.basic-mode) .channel-index{font-size:8px;line-height:10px}
 body:not(.basic-mode) .channel-card .fader-well{height:auto;min-height:48px;margin:2px 0}body:not(.basic-mode) .channel-card .step-button{display:block;width:100%;min-height:32px;margin:0;font-size:17px}body:not(.basic-mode) .channel-card .db-value{font-size:12px;margin:2px 0}body:not(.basic-mode) .channel-card .mute-button,body:not(.basic-mode) .channel-card .group-hint{display:none}
 body:not(.basic-mode) #notice:not(:empty){position:fixed;z-index:20;bottom:4px;left:10px;right:10px;background:var(--panel)}
}

#customTheme{display:grid;grid-template-columns:1fr 1fr;gap:10px}#customTheme label{display:grid;gap:6px;font-size:12px}#customTheme input{width:100%;min-height:44px}.custom-theme .channel-card,.custom-theme .master-card{background:var(--panel)}.daylight .channel-card{background:#ffffff}.custom-theme .step-button{background:var(--panel2)}

.scene-backup-card{padding:12px 0;border-top:1px solid var(--line)}.scene-backup-card p{margin:5px 0 9px}.scene-backup-card .editor-buttons{display:flex;flex-wrap:wrap;gap:6px}.scene-backup-card button{font-size:12px;padding:8px;min-height:40px}#sceneStatus{overflow-wrap:anywhere}#sceneBackups a{color:var(--accent)}

body.app-idle::after{content:"Gepauzeerd na zes uur · tik om verder te gaan";position:fixed;z-index:10000;top:12px;left:50%;transform:translateX(-50%);max-width:90vw;padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel,var(--subtle,#171c21));color:var(--text,var(--fg,#edf1f4));font:12px/1.4 system-ui;text-align:center;pointer-events:none}

/* Pan is always directly available inside the channel icon. Only the level
   fader participates in the bank's horizontal-swipe gesture. */
.strip-icon{height:44px;margin:4px auto;display:grid;place-items:center}.strip-icon svg{width:22px;height:22px}
.strip-icon.pan-control{display:block;position:relative;isolation:isolate;width:100%;max-width:76px;height:44px;border:1px solid var(--line);border-radius:7px;background:var(--panel2)}
.pan-symbol{position:absolute;top:0;left:0;right:0;height:20px;display:grid;place-items:center;opacity:1;z-index:2;pointer-events:none}.pan-symbol svg{width:20px;height:20px}
.pan-control:after{content:'';position:absolute;left:50%;top:24px;width:1px;height:8px;background:var(--text);opacity:.6;pointer-events:none}
.pan-directions{position:absolute;top:16px;left:3px;right:3px;display:flex;justify-content:space-between;color:var(--text);font-size:7px;line-height:8px;z-index:4;pointer-events:none}
.pan-position{position:absolute;bottom:1px;left:0;right:0;color:var(--text);font-size:7px;line-height:8px;z-index:4;pointer-events:none}
.pan-control .pan-range{appearance:none;-webkit-appearance:none;position:absolute;inset:0;width:100%;height:44px;min-height:44px;margin:0;padding:12px 3px 0;border:0;border-radius:7px;background:transparent;writing-mode:horizontal-tb;direction:ltr;touch-action:none;cursor:ew-resize;opacity:.28;z-index:1}
.pan-control .pan-range:enabled:active,.pan-control.is-panning .pan-range:enabled{opacity:1;z-index:3}
.pan-control .pan-range::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:var(--muted)}
.pan-control .pan-range::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:8px;height:14px;margin-top:-5.5px;border:1px solid var(--text);border-radius:3px;background:var(--accent2);box-shadow:0 1px 3px #0008}
.pan-control .pan-range::-moz-range-track{height:3px;border-radius:2px;background:var(--muted)}
.pan-control .pan-range::-moz-range-thumb{width:6px;height:12px;border:1px solid var(--text);border-radius:3px;background:var(--accent2);box-shadow:0 1px 3px #0008}
.pan-control .pan-range:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.mute-button{width:100%;min-height:44px;margin:3px 0 0;padding:4px;font-size:12px;letter-spacing:0}
@media(max-width:700px) and (orientation:portrait){.channel-card .fader-well{height:176px}}

/* Safari12 has no flex gap; explicit strip margins keep exactly five visible. */

.iem-banner{position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:110;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border:2px solid var(--accent);border-radius:12px;background:var(--panel,#182027);box-shadow:0 4px 24px #0008;font-weight:700}.iem-banner span{padding-right:12px}.iem-banner button{flex-shrink:0;min-height:44px;font-size:12px}.iem-help{font-size:.9em;color:var(--muted)}#iemChoices label{display:block;margin:10px 0}#iemChoices select{display:block;width:100%}@media(max-width:500px){.iem-banner{align-items:stretch;flex-direction:column;font-size:13px}.iem-banner button{margin-top:8px}}
.channel-grid{gap:0}.channel-grid>.channel-card{margin-right:8px}.channel-grid>.channel-card:last-child{margin-right:0}@media(max-width:700px){.channel-grid{gap:0}.channel-grid>.channel-card{margin-right:4px}.channel-grid>.channel-card:last-child{margin-right:0}}

/* Recorder status is separate from the mixer connection and theme accent. */
.record-button[hidden]{display:none!important}.record-button{display:flex;align-items:center;justify-content:center;gap:5px;flex:none;min-width:48px;min-height:44px;padding:5px 7px;font-size:10px;letter-spacing:.03em;border:1px solid var(--line);background:var(--panel);border-radius:10px;white-space:nowrap}.record-button i{display:block;width:9px;height:9px;flex:none;border-radius:50%;background:#4e272d;border:1px solid #c34959}.record-button.is-recording{color:#ff6776;border-color:#db354a}.record-button.is-recording i{background:#ff3048;border-color:#ff5265;box-shadow:0 0 9px #ff304888}.record-button.is-unavailable{color:var(--muted)}.record-button.is-unavailable i{background:#555c61;border-color:#737d83;box-shadow:none}.record-button.is-waiting{border-color:#da9d40}#recorderHost{display:block;width:100%;font-size:16px;background:var(--bg);color:var(--text);padding:10px;border:1px solid var(--line);margin:6px 0}#recorderHostSave{min-height:44px;font-size:12px}.songbar>.record-button{margin-left:6px} @media(max-width:350px){.record-button{font-size:9px;padding:4px;min-width:44px}.topbar{gap:4px}.topbar .brand{font-size:15px}}

/* Listening leaves every fader reachable; the return bar never covers it. */
.iem-banner{position:sticky;left:auto;right:auto;top:0;bottom:auto;margin:6px 0;padding:6px 8px;z-index:6}
@media(orientation:landscape) and (max-height:600px){
 .iem-banner{font-size:12px}.iem-banner span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* Fit the complete channel name inside its strip, without resizing controls. */
.channel-label{display:block;min-width:0;max-width:calc(100% - 2px);line-height:1.25;overflow-wrap:break-word;word-wrap:break-word}

/* Four distinct states; passive readiness is separate from the REC action. */
.status-lights{margin-left:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 8px;width:156px;flex:none;align-items:center}.status-lights>[hidden]{display:none!important}.status-lights .connection{margin:0;min-width:0;padding:0;font-size:8px;gap:4px;border:0;white-space:nowrap}.status-lights .connection>span{overflow:hidden;text-overflow:ellipsis}.status-lights .connection i,.status-lamp i{width:7px;height:7px;flex:none;border-radius:50%}.status-lamp{display:flex;align-items:center;gap:4px;min-width:0;font-size:8px;font-weight:850;letter-spacing:.02em;white-space:nowrap}.status-lamp i{background:#68747d}.status-lamp.is-ready i{background:#39dc91;box-shadow:0 0 7px #39dc9140}.status-lamp.is-recording i{background:#ff3048;box-shadow:0 0 9px #ff304888}.status-lamp.is-paused i{background:#ffad21}.status-lamp.is-offline{color:var(--muted)}#internetLamp.is-offline i{background:#ff3048;box-shadow:0 0 7px #ff304866}#internetLamp.is-mobile i{background:#00aaff;box-shadow:0 0 10px #00aaffaa}.status-lights .record-button{min-width:0;min-height:32px;padding:4px 5px;font-size:9px;gap:4px;position:relative}.status-lights .record-button:before{content:'';position:absolute;top:-6px;bottom:-6px;left:0;right:0}.status-lights .record-button i{width:7px;height:7px}.status-lights #reaperLamp,.status-lights #usbRecordLamp{min-height:32px}.status-lights .record-button:not(.is-recording):not(.is-unavailable) i{background:#39dc91;border-color:#39dc91}.songbar>.status-lights{margin-left:6px}@media(max-width:350px){.status-lights{width:128px;gap:3px 4px}.status-lights .connection,.status-lamp{font-size:7px}.status-lights .record-button{font-size:8px}}

/* Hold the channel name to rearrange the local display, never mixer routing. */
.channel-name[data-channel-drag]{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-x}.channel-name[data-channel-drag]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:3px}.channel-grid.is-ordering-channels{scroll-snap-type:none;cursor:grabbing}.channel-card.is-channel-moving{opacity:.35;outline:2px dashed var(--accent);outline-offset:-2px}.channel-drag-preview{position:fixed;z-index:10000;pointer-events:none;padding:12px 6px;border:2px solid var(--accent);border-radius:8px;background:var(--panel);color:var(--text);font-size:12px;font-weight:800;text-align:center;box-shadow:0 8px 22px #0008;overflow-wrap:break-word}.channel-order-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* Independent guitar palette; bass colours and levels are unchanged. */
:root{--song-red:#ff7777;--song-green:#80d4a0;--song-yellow:#f4d96b}
.daylight{--song-red:#b42336;--song-green:#176c40;--song-yellow:#806000}
[data-song-color=red]{color:var(--song-red)!important}[data-song-color=green]{color:var(--song-green)!important}[data-song-color=yellow]{color:var(--song-yellow)!important}

.guitar-setup{font-size:12px;line-height:1.4;margin:5px 0 0;color:var(--muted);overflow-wrap:break-word}.guitar-setup[hidden]{display:none}

/* Setup follows the current title and remains inside its tap/swipe surface. */
#songTitle.has-song-info,body:not(.basic-mode) #songTitle.has-song-info{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.3}
#songTitle .song-inline-info{font-size:max(12px,.67em);font-weight:650;letter-spacing:normal;white-space:normal;overflow-wrap:anywhere}
.song-drop-state{display:inline-flex;align-items:center;gap:0;margin:0 4px;vertical-align:middle;white-space:nowrap;overflow-wrap:normal;color:var(--text,#eff2f4)!important;pointer-events:none}
.song-drop-label,.song-drop-cue{font-size:.82em;font-weight:750;letter-spacing:.035em}
.song-drop-lamp{display:inline-flex;width:36px;height:36px;flex:0 0 36px;align-items:center;justify-content:center;margin:0 6px;border:2px solid #ffffffaa;border-radius:50%;box-shadow:inset 0 1px 4px #0008,0 1px 3px #0009;color:#fff!important;font-size:16px;font-weight:800;line-height:1;text-shadow:0 1px 2px #000b}
.song-drop-state.is-on .song-drop-lamp{background:#168344}
.song-drop-state.is-off .song-drop-lamp{background:#bd293b}
.song-drop-missing,.song-drop-value{color:var(--muted,#aab3ba);font-size:.9em;font-weight:600}
.song-info-controls{display:grid;gap:8px;margin-top:10px;width:100%;max-width:300px;box-sizing:border-box}
.song-info-controls>label{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin:0}
.song-info-controls>label[hidden]{display:none}
.song-info-controls select{min-width:0}
