:root {
  color-scheme: dark;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: #07090a;
  color: #f3f6f0;
  font-synthesis: none;
}


html { height:100%; overflow:hidden; }
* { box-sizing: border-box; }

body {
  min-width: 320px;
  height: 100%;
  min-height: 100%;
  overflow: hidden;
  margin: 0;
  background:
    radial-gradient(circle at 69% 12%, rgba(166, 255, 84, .11), transparent 30rem),
    radial-gradient(circle at 25% 100%, rgba(48, 104, 73, .18), transparent 36rem),
    #07090a;
}

#app { height:100%; min-height:0; }
button, select { font: inherit; }
button { cursor: pointer; }

/* Native option popups belong to the operating system. KURU uses this shared
   component instead so every open dropdown stays readable in the app theme. */
.app-select { position:relative; min-width:0; width:100%; }
.app-select__native { display:none; }
.app-select__trigger { width:100%; min-width:0; min-height:39px; display:flex; align-items:center; justify-content:space-between; gap:9px; border:1px solid var(--traxion-line); border-radius:8px; padding:0 11px; background:var(--traxion-panel); color:var(--traxion-text); font-size:12px; font-weight:800; text-align:left; }
.app-select__trigger > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.app-select__trigger > i { flex:0 0 auto; margin-top:-2px; color:var(--traxion-accent-soft); font-size:17px; font-style:normal; line-height:1; }
.app-select__trigger:hover:not(:disabled) { border-color:rgba(var(--traxion-accent-rgb),.72); background:rgba(var(--traxion-accent-rgb),.08); }
.app-select__trigger:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }
.app-select__trigger:disabled { color:var(--traxion-muted); cursor:default; opacity:.62; }
.app-select__menu { position:absolute; z-index:100; box-sizing:border-box; top:calc(100% + 6px); left:0; width:100%; max-height:min(300px,calc(100dvh - 16px)); overflow:auto; overscroll-behavior:contain; border:1px solid rgba(var(--traxion-accent-rgb),.56); border-radius:8px; padding:4px; background:var(--traxion-panel-strong); box-shadow:0 18px 46px rgba(0,0,0,.52),0 0 0 1px rgba(0,0,0,.34); }
.app-select__menu--upward { top:auto; bottom:calc(100% + 6px); }
.app-select__option { width:100%; min-height:34px; display:flex; align-items:center; border:0; border-radius:5px; padding:7px 9px; background:transparent; color:var(--traxion-text); font:750 12px/1.2 inherit; text-align:left; }
.app-select__option:hover,.app-select__option:focus-visible,.app-select__option.is-selected { outline:0; background:rgba(var(--traxion-accent-rgb),.16); color:var(--traxion-text); }
.app-select__option.is-selected { box-shadow:inset 2px 0 0 var(--traxion-accent); }
.app-select__option:disabled { color:var(--traxion-muted); cursor:default; }
.setlist-picker .app-select__trigger { min-height:43px; }
.setlist-picker--collection .app-select__trigger { min-height:52px; border-color:rgba(var(--traxion-accent-rgb),.44); border-width:2px; border-radius:10px; padding:0 13px; background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.17),var(--traxion-panel) 58%); color:var(--traxion-text); font-size:14px; font-weight:850; box-shadow:inset 3px 0 0 var(--traxion-accent),0 0 0 1px rgba(var(--traxion-accent-rgb),.09); }
.setlist-picker--collection .app-select__trigger:hover:not(:disabled) { border-color:var(--traxion-accent); background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.25),var(--traxion-panel) 62%); }
.setlist-picker--collection .app-select__trigger:focus-visible { outline:0; border-color:var(--traxion-accent); box-shadow:inset 3px 0 0 var(--traxion-accent),0 0 0 3px rgba(var(--traxion-accent-rgb),.18); }
.dialog-routing-map .app-select__trigger { min-height:36px; border-radius:7px; padding:0 9px; font-size:12px; font-weight:700; }
.setlist-editor-field .app-select__trigger { min-height:39px; border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font:750 13px inherit; letter-spacing:0; text-transform:none; }
.setlist-editor-field .app-select__trigger:focus-visible { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.11); }
.outputs-device-select .app-select__trigger { min-height:35px; border-radius:7px; padding:0 9px; background:var(--traxion-card-soft); color:var(--traxion-text); font-size:11px; font-weight:750; letter-spacing:0; text-transform:none; }
.song-editor-details .app-select__trigger,.song-stem-map .app-select__trigger { min-height:38px; border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font-size:13px; font-weight:750; letter-spacing:0; text-transform:none; }
.songbook-editor__tools .app-select__trigger { min-height:35px; border-radius:7px; padding:0 9px; background:var(--traxion-panel); color:var(--traxion-text); font:750 11px/1 inherit; letter-spacing:0; text-transform:none; }
.settings-plain__row > .app-select { width:144px; }.settings-plain__row > .app-select .app-select__trigger { min-height:34px; border-radius:6px; padding:0 10px; background:var(--traxion-card-soft); font:800 12px inherit; }
.mixer-connection-form { min-width:0; display:grid; grid-template-columns:minmax(135px,.72fr) minmax(145px,.82fr) minmax(190px,1.12fr) auto auto; align-items:end; gap:9px; }
.mixer-connection-form label { min-width:0; display:grid; gap:5px; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.075em; text-transform:uppercase; }
.mixer-connection-form .app-select,.mixer-connection-form input { width:100%; min-width:0; }
.mixer-connection-form .app-select__trigger,.mixer-connection-form input { min-height:36px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font:750 12px/1 inherit; letter-spacing:0; text-transform:none; }
.mixer-connection-form input { outline:0; }
.mixer-connection-form input[data-mixer-ip]::placeholder { color:color-mix(in srgb, var(--traxion-muted) 48%, transparent); opacity:1; }
.mixer-connection-form input:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.11); }
.mixer-connection-form .outline-button { min-height:36px; white-space:nowrap; }
.mixer-connection-form--native { grid-template-columns:minmax(170px,.8fr) minmax(180px,1fr) auto; }
.mixer-connection-form--native .mixer-discovery-panel { order:2; }
.mixer-discovery-panel { min-width:0; grid-column:1 / -1; display:grid; gap:8px; width:100%; border-top:1px solid var(--traxion-line); padding-top:11px; }
.mixer-discovery { display:grid; gap:10px; }
.mixer-discovery__heading { display:flex; align-items:center; gap:12px; }
.mixer-discovery__heading .quiet-button { flex:0 0 auto; min-height:48px; padding:0 16px; }
.mixer-discovery__status { display:block; color:var(--traxion-muted); font-size:12px; line-height:1.4; }
.mixer-discovery__status.is-ready { color:var(--traxion-accent-soft); font-weight:750; }
.mixer-discovery__status.is-error { color:#ef938b; }
.mixer-discovery__results { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr)); gap:9px; max-height:270px; overflow:auto; overscroll-behavior:contain; padding:1px; }
.mixer-discovery__result { width:100%; min-height:72px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:14px; border:1px solid rgba(var(--traxion-accent-rgb),.38); border-radius:10px; padding:11px 14px; background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.13),var(--traxion-card-soft) 68%); color:var(--traxion-text); text-align:left; cursor:pointer; touch-action:manipulation; box-shadow:inset 3px 0 0 var(--traxion-accent); }
.mixer-discovery__result:hover,.mixer-discovery__result:focus-visible,.mixer-discovery__result:active { border-color:var(--traxion-accent); background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.24),var(--traxion-card-soft) 72%); outline:0; }
.mixer-discovery__result:focus-visible { box-shadow:inset 3px 0 0 var(--traxion-accent),0 0 0 3px rgba(var(--traxion-accent-rgb),.18); }
.mixer-discovery__result-copy { min-width:0; display:grid; gap:6px; }
.mixer-discovery__result-copy strong,.mixer-discovery__result-copy small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mixer-discovery__result-copy strong { color:var(--traxion-text); font-size:15px; letter-spacing:-.015em; }
.mixer-discovery__result-copy small { color:var(--traxion-muted); font:750 12px/1 var(--traxion-mono); }
.mixer-discovery__result b { min-height:42px; display:inline-flex; align-items:center; gap:8px; border-radius:7px; padding:0 13px; background:var(--traxion-accent); color:var(--traxion-accent-text); font-size:12px; white-space:nowrap; }
.mixer-discovery__result b i { font:900 17px/1 inherit; }

.access-gate { min-height:100vh; display:grid; place-items:center; padding:24px; background:radial-gradient(circle at 68% 23%,rgba(185,255,88,.14),transparent 23rem),radial-gradient(circle at 10% 84%,rgba(64,119,255,.1),transparent 26rem),#07090a; }
.access-card { width:min(100%, 540px); border:1px solid rgba(255,255,255,.12); border-radius:22px; padding:38px; background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.018)); box-shadow:0 30px 100px rgba(0,0,0,.48); }
.access-card .brand { padding:0; margin-bottom:56px; }
.access-eyebrow { display:inline-flex; padding:7px 10px; border:1px solid rgba(185,255,88,.24); color:#d4ff99; background:rgba(185,255,88,.08); border-radius:999px; font-size:10px; letter-spacing:.1em; font-weight:900; }
.access-card h1 { margin:17px 0 14px; font-size:clamp(36px,7vw,58px); line-height:.94; letter-spacing:-.07em; }
.access-card p { max-width:410px; margin:0; color:#aab4ab; font-size:15px; line-height:1.55; }
.access-button { display:inline-flex; align-items:center; justify-content:center; min-height:44px; margin-top:27px; padding:0 17px; border-radius:10px; background:#b9ff58; color:#14200d; text-decoration:none; font-size:13px; font-weight:900; box-shadow:0 0 30px rgba(185,255,88,.2); }
.access-button:hover { background:#cdff88; }
.access-login-form { display:grid; gap:14px; margin-top:24px; }
.access-login-field { display:grid; gap:7px; color:#aab4ab; font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.access-login-field input { box-sizing:border-box; width:100%; min-height:45px; border:1px solid rgba(255,255,255,.14); border-radius:10px; outline:none; padding:0 12px; background:rgba(0,0,0,.2); color:#f3f6f0; font:inherit; font-size:14px; font-weight:600; letter-spacing:normal; text-transform:none; }
.access-login-field input:focus { border-color:rgba(185,255,88,.75); box-shadow:0 0 0 3px rgba(185,255,88,.12); }
.access-login-error { min-height:18px; margin:0 !important; color:#ffb4b4 !important; font-size:12px !important; line-height:1.4 !important; }
.access-login-submit { width:100%; margin-top:0; border:0; }
.access-login-submit:disabled { cursor:wait; opacity:.7; }
.access-note { display:block; max-width:390px; margin-top:25px; color:#727d73; font-size:11px; line-height:1.5; }
.access-card-loading { min-height:420px; }
.access-loader { display:block; width:30px; height:30px; margin-top:32px; border:3px solid rgba(185,255,88,.17); border-top-color:#b9ff58; border-radius:99px; animation:traxion-spin .75s linear infinite; }
@keyframes traxion-spin { to { transform:rotate(360deg); } }

.app-shell { position:relative; isolation:isolate; height:100dvh; max-height:100dvh; overflow:hidden; }.app-shell::after { content:""; position:fixed; z-index:0; inset:0; pointer-events:none; opacity:0; background:rgba(var(--traxion-accent-rgb),.20); }.app-shell--songbook-fullscreen::after { inset:0; }#app.is-click-background-pulse .app-shell::after { opacity:1; }#app.is-click-background-downbeat .app-shell::after { opacity:1; background:rgba(var(--traxion-accent-rgb),.34); }
.sidebar { position:fixed; z-index:3; inset:0 auto 0 0; width:204px; height:100dvh; min-height:0; display:flex; flex-direction:column; overflow:hidden; border-right:1px solid rgba(255,255,255,.08); padding:20px 10px; background:rgba(7,9,10,.76); backdrop-filter:blur(24px); }
.brand { padding:0 8px 22px; }
.traxion-brand { display:inline-flex; align-items:center; line-height:1; }
.traxion-brand--stacked { flex-direction:column; align-items:center; gap:12px; width:236px; }
.traxion-brand--stacked .kuru-wordmark { display:block; width:216px; height:auto; object-fit:contain; }
.traxion-brand--stacked .kuru-tracks-lockup { display:block; width:104px; height:auto; object-fit:contain; }
.workspace-switcher { width:100%; min-height:44px; display:flex; align-items:center; gap:8px; border:1px solid rgba(255,255,255,.1); border-radius:9px; padding:5px 9px; color:#e7ede4; background:rgba(255,255,255,.045); text-align:left; }
.workspace-switcher small, .eyebrow, .nav-label, .stem-kind, .label, .transport-label { display: block; color: #8c968e; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; font-size: 10px; }
.workspace-switcher__copy { min-width:0; flex:1; }.workspace-switcher strong { display:block; overflow:hidden; margin-top:2px; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }.workspace-switcher__chevron { flex:0 0 auto; color:#b9ff58; font-size:17px; line-height:1; }
.workspace-avatar { position:relative; flex:0 0 30px; width:30px; height:30px; display:grid; place-items:center; overflow:hidden; border-radius:7px; background:rgba(255,255,255,.1); color:#e7ede4; }.workspace-avatar b { font-size:9px; font-weight:900; letter-spacing:.04em; }.workspace-avatar img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:inherit; }.workspace-picker { position:relative; }.workspace-menu { position:absolute; z-index:8; top:calc(100% + 6px); right:0; left:0; max-height:min(270px,calc(100dvh - 215px)); overflow-y:auto; border:1px solid rgba(255,255,255,.14); border-radius:12px; padding:5px; background:#101715; box-shadow:0 18px 42px rgba(0,0,0,.42); }.workspace-menu-label { display:block; padding:7px 8px 5px; color:#8c968e; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }.workspace-option { width:100%; min-height:46px; display:flex; align-items:center; gap:9px; border:0; border-radius:8px; padding:6px 8px; background:transparent; color:#e7ede4; text-align:left; }.workspace-option:hover,.workspace-option.active { background:rgba(255,255,255,.07); }.workspace-option.active { box-shadow:inset 2px 0 0 #b9ff58; }.workspace-option > .workspace-avatar { display:grid; flex:0 0 30px; }.workspace-option__copy { min-width:0; flex:1; }.workspace-option__copy strong,.workspace-option__copy > span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.workspace-option__copy strong { font-size:12px; }.workspace-option__copy > span { margin-top:2px; color:#8c968e; font-size:10px; }.workspace-manage { display:flex; align-items:center; justify-content:space-between; gap:7px; margin-top:5px; border-top:1px solid rgba(255,255,255,.09); padding:10px 8px 4px; color:#b9ff58; font-size:11px; font-weight:800; text-decoration:none; }.workspace-manage:hover { color:#e7ede4; }
.nav { display:grid; gap:2px; margin-top:20px; }.nav button { width:100%; min-height:34px; border:0; border-radius:7px; padding:8px 9px; background:transparent; color:#aab3aa; text-align:left; font-size:12px; font-weight:700; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }.setlist-picker { display:block; min-width:260px; }.setlist-picker select { width:100%; min-height:39px; border:1px solid var(--traxion-line); border-radius:8px; padding:0 34px 0 11px; background:var(--traxion-panel); color:var(--traxion-text); font-size:12px; font-weight:800; }.setlist-picker select:disabled { color:var(--traxion-muted); cursor:default; }
.setlist-picker select { min-height:43px; }.setlist-picker--collection { display:grid; gap:5px; }.setlist-picker__label { display:block; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.085em; text-transform:uppercase; }.setlist-picker--collection select { min-height:52px; border-color:rgba(var(--traxion-accent-rgb),.44); border-width:2px; border-radius:10px; padding:0 38px 0 13px; background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.17),var(--traxion-panel) 58%); color:var(--traxion-text); font-size:14px; font-weight:850; box-shadow:inset 3px 0 0 var(--traxion-accent),0 0 0 1px rgba(var(--traxion-accent-rgb),.09); }.setlist-picker--collection select:hover { border-color:var(--traxion-accent); background:linear-gradient(100deg,rgba(var(--traxion-accent-rgb),.25),var(--traxion-panel) 62%); }.setlist-picker--collection select:focus { outline:0; border-color:var(--traxion-accent); box-shadow:inset 3px 0 0 var(--traxion-accent),0 0 0 3px rgba(var(--traxion-accent-rgb),.18); }.outputs-map-tools { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }.outputs-map-tools .setlist-picker { min-width:300px; }.outputs-map-tools .outline-button { border-color:transparent; background:var(--traxion-accent); color:var(--traxion-accent-text); }
.nav button.active { color:#f5f9f2; background:rgba(185,255,88,.11); }.nav button:hover { color:#f5f9f2; background:rgba(255,255,255,.06); }.nav-divider { height:1px; margin:7px 8px; background:rgba(255,255,255,.1); }
.sidebar-backstage { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding:9px 8px; color:#aab3aa; font-size:11px; font-weight:800; text-decoration:none; }.sidebar-backstage:hover { color:#f5f9f2; }.sidebar-backstage span { color:#b9ff58; font-size:14px; }

.main { min-width:0; min-height:0; height:100dvh; width:calc(100% - 204px); margin-left:204px; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; padding:30px 38px 112px; }.topbar { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:34px; }.topbar-compact { min-height:39px; margin-bottom:20px; }.topbar h1 { margin:3px 0 0; font-size:26px; letter-spacing:-.045em; }.topbar-page-title { margin:0; color:var(--traxion-text); font-size:17px; letter-spacing:-.03em; }.topbar-actions { display:flex; align-items:center; gap:10px; }.more-menu-wrap { position:relative; }.more-menu { position:absolute; z-index:10; top:calc(100% + 7px); right:0; min-width:154px; border:1px solid var(--traxion-line); border-radius:8px; padding:4px; background:var(--traxion-panel-strong); box-shadow:0 16px 36px rgba(0,0,0,.3); }.more-menu button,.more-menu__link { width:100%; border:0; border-radius:5px; padding:9px 8px; background:transparent; color:var(--traxion-text); text-align:left; font-size:11px; font-weight:800; }.more-menu__link { display:block; text-decoration:none; }.more-menu button:hover,.more-menu__link:hover { background:rgba(var(--traxion-accent-rgb),.1); }.more-menu button:disabled { cursor:default; opacity:.4; }.icon-button { width:39px; height:39px; display:grid; place-items:center; border-radius:10px; border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04); color:#e9eee6; }
.section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; margin-bottom:16px; }.section-heading h2 { margin:0; font-size:18px; letter-spacing:-.03em; }.section-heading p { margin:5px 0 0; color:#929b93; font-size:13px; }.outline-button, .quiet-button { border: 1px solid rgba(255,255,255,.13); border-radius:9px; padding:9px 11px; background:rgba(255,255,255,.035); color:#dfe6db; font-size:12px; font-weight:800; }.outline-button:hover, .quiet-button:hover { background:rgba(255,255,255,.09); }
.setlist { overflow:hidden; border:1px solid var(--traxion-line); border-radius:10px; background:var(--traxion-panel); }.setlist-row { width:100%; min-height:72px; display:grid; grid-template-columns:64px minmax(0,1fr) minmax(130px,auto) 64px 42px; align-items:center; gap:14px; border:0; border-bottom:1px solid var(--traxion-line); padding:10px 15px; background:transparent; color:var(--traxion-text); text-align:left; transition:background .15s ease; }.setlist-row:last-child { border-bottom:0; }.setlist-row:hover { background:rgba(var(--traxion-accent-rgb),.055); }.setlist-row.selected { box-shadow:inset 3px 0 0 var(--traxion-accent); background:rgba(var(--traxion-accent-rgb),.11); }.setlist-index { color:var(--traxion-muted); font-size:14px; font-weight:800; font-variant-numeric:tabular-nums; }.setlist-song { min-width:0; }.setlist-song strong,.setlist-song span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.setlist-song strong { font-size:16px; letter-spacing:-.025em; }.setlist-song span { margin-top:4px; color:var(--traxion-muted); font-size:11px; }.setlist-stems { display:flex; align-items:center; justify-content:flex-end; gap:8px; }.setlist-stems i { width:7px; height:21px; border-radius:99px; background:var(--stem-color); box-shadow:0 0 10px color-mix(in srgb, var(--stem-color) 35%, transparent); }.setlist-stems em { min-width:42px; color:var(--traxion-muted); font-size:10px; font-style:normal; text-align:right; }.setlist-duration { color:var(--traxion-muted); font-size:12px; font-variant-numeric:tabular-nums; text-align:right; }.setlist-more { color:var(--traxion-muted); font-size:13px; letter-spacing:2px; text-align:right; }.setlist-empty { min-height:210px; display:grid; place-items:center; }
.tracks-view { display:grid; gap:15px; }.list-switcher { display:inline-flex; justify-self:start; gap:2px; border:1px solid var(--traxion-line); border-radius:8px; padding:3px; background:var(--traxion-panel); }.list-switcher button { min-height:31px; border:0; border-radius:5px; padding:0 11px; background:transparent; color:var(--traxion-muted); font-size:11px; font-weight:800; }.list-switcher button.active { background:rgba(var(--traxion-accent-rgb),.13); color:var(--traxion-text); }.library-add-button { border-color:transparent; background:var(--traxion-accent); color:var(--traxion-accent-text); }.setlist-collection-row { grid-template-columns:64px minmax(0,1fr) auto 26px; }.setlist-collection-row .setlist-more { font-size:22px; letter-spacing:0; }
.outputs-page { max-width:1180px; }.outputs-intro { display:flex; align-items:end; justify-content:space-between; gap:18px; margin-bottom:17px; }.outputs-intro h2 { margin:0; color:var(--traxion-text); font-size:18px; letter-spacing:-.03em; }.outputs-intro p { margin:5px 0 0; color:var(--traxion-muted); font-size:13px; }.outputs-actions { display:flex; gap:8px; }.outputs-actions button:disabled { cursor:default; opacity:.42; }.routing-matrix-wrap { overflow-x:auto; border:1px solid var(--traxion-line); border-radius:10px; background:var(--traxion-panel); }.routing-matrix { min-width:max-content; display:grid; }.matrix-head { min-height:69px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; border-bottom:1px solid var(--traxion-line); border-left:1px solid var(--traxion-line); padding:9px; color:var(--traxion-text); text-align:center; }.matrix-head strong { font-size:11px; }.matrix-head span { color:var(--traxion-muted); font-size:9px; font-weight:800; letter-spacing:.05em; }.matrix-track-head { align-items:flex-start; border-left:0; padding-left:16px; color:var(--traxion-muted); font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.matrix-track { min-height:72px; display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--traxion-line); padding:9px 12px; background:rgba(0,0,0,.06); }.matrix-track-color { width:3px; align-self:stretch; border-radius:99px; background:var(--track-color); }.matrix-track-copy { min-width:0; flex:1; }.matrix-track-copy strong,.matrix-track-copy small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.matrix-track-copy strong { color:var(--traxion-text); font-size:13px; }.matrix-track-copy small { margin-top:4px; color:var(--traxion-muted); font-size:10px; }.matrix-channel-mode,.matrix-channel-fixed,.matrix-rename { border:0; border-radius:5px; padding:6px 7px; background:transparent; color:var(--traxion-muted); font-size:10px; font-weight:800; }.matrix-channel-mode,.matrix-channel-fixed { color:var(--traxion-accent-soft); }.matrix-channel-mode:hover,.matrix-rename:hover { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.1); }.matrix-route-cell { min-height:72px; display:flex; align-items:center; justify-content:center; gap:7px; border-bottom:1px solid var(--traxion-line); border-left:1px solid var(--traxion-line); padding:8px; }.matrix-toggle { display:grid; place-items:center; width:27px; height:27px; border:0; border-radius:6px; background:transparent; }.matrix-toggle:hover { background:rgba(var(--traxion-accent-rgb),.06); }.matrix-toggle span { display:grid; place-items:center; width:19px; height:19px; border:2px solid var(--traxion-muted); border-radius:99px; background:var(--traxion-panel); color:var(--traxion-accent-text); font-size:8px; font-weight:900; }.matrix-toggle.selected span { border-color:var(--traxion-accent); background:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.16),0 0 16px rgba(var(--traxion-accent-rgb),.5); }.matrix-toggle.selected span::after { content:''; display:block; width:5px; height:9px; margin:2px auto; border:solid var(--traxion-accent-text); border-width:0 2px 2px 0; transform:rotate(45deg); }.matrix-toggle span:not(:empty) { width:23px; height:23px; border-radius:6px; }.matrix-toggle.selected span:not(:empty)::after { display:none; }.matrix-no-tracks { min-height:140px; display:grid; place-items:center; border-bottom:1px solid var(--traxion-line); color:var(--traxion-muted); font-size:12px; }.outputs-empty { min-height:210px; display:grid; place-items:center; align-content:center; gap:7px; border:1px dashed var(--traxion-line); border-radius:10px; padding:24px; color:var(--traxion-muted); text-align:center; }.outputs-empty strong { color:var(--traxion-text); font-size:14px; }.outputs-empty span { max-width:440px; font-size:12px; line-height:1.5; }.outputs-note { margin:11px 0 0; color:var(--traxion-muted); font-size:11px; }
.outputs-intro { display:grid; justify-items:start; gap:13px; }.outputs-intro p { margin:0; }.outputs-configuration { display:grid; justify-items:start; gap:10px; }.outputs-device-row { display:flex; align-items:end; flex-wrap:wrap; gap:8px; }.outputs-add-track { justify-self:start; }.outputs-add-track:disabled { cursor:default; opacity:.42; }
.devices-page { max-width:1120px; }.devices-intro { display:flex; align-items:end; justify-content:space-between; gap:18px; margin-bottom:17px; }.devices-intro h2,.device-channel-panel h3 { margin:0; color:var(--traxion-text); font-size:18px; letter-spacing:-.03em; }.devices-intro p,.device-channel-panel p { margin:5px 0 0; color:var(--traxion-muted); font-size:13px; }.device-status { display:inline-flex; align-items:center; gap:7px; color:var(--traxion-muted); font-size:11px; font-weight:800; white-space:nowrap; }.device-status i { width:7px; height:7px; border-radius:99px; background:var(--traxion-accent); box-shadow:0 0 10px var(--traxion-accent); }.device-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:12px; }.device-card { min-height:198px; display:flex; flex-direction:column; align-items:flex-start; border:1px solid var(--traxion-line); border-radius:10px; padding:17px; background:var(--traxion-card-soft); }.device-card-primary { background:linear-gradient(145deg,rgba(var(--traxion-accent-rgb),.13),var(--traxion-card-soft)); }.device-kicker { color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }.device-card h3 { margin:10px 0 6px; color:var(--traxion-text); font-size:16px; letter-spacing:-.025em; }.device-card p { margin:0; color:var(--traxion-muted); font-size:12px; line-height:1.5; }.device-select-row { width:100%; display:flex; gap:8px; margin-top:auto; padding-top:16px; }.device-select-row select { min-width:0; flex:1; border:1px solid var(--traxion-line); border-radius:7px; padding:8px; background:var(--traxion-panel-strong); color:var(--traxion-text); font-size:11px; }.device-select-row .quiet-button { white-space:nowrap; }.device-state { margin-top:auto; color:var(--traxion-muted); font-size:10px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }.device-channel-panel { display:grid; grid-template-columns:minmax(0,1fr) minmax(380px,1.25fr); gap:24px; align-items:center; margin-top:13px; border:1px solid var(--traxion-line); border-radius:10px; padding:18px; background:var(--traxion-panel); }.device-channel-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 16px; }.device-channel-list div { display:flex; align-items:center; justify-content:space-between; gap:9px; border-bottom:1px solid var(--traxion-line); padding:7px 0; }.device-channel-list span { display:flex; align-items:center; gap:7px; color:var(--traxion-text); font-size:11px; font-weight:800; }.device-channel-list i { width:7px; height:7px; border-radius:99px; background:var(--channel-color); box-shadow:0 0 9px var(--channel-color); }.device-channel-list strong { color:var(--traxion-muted); font-size:10px; }
.content-grid { display:grid; grid-template-columns:minmax(0, 1fr) 310px; gap:25px; align-items:start; }.songs { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:11px; }.song-card { position:relative; min-height:137px; overflow:hidden; border:1px solid rgba(255,255,255,.1); border-radius:14px; background:linear-gradient(145deg, rgba(255,255,255,.075), rgba(255,255,255,.018)); padding:16px; color:#eaf0e7; text-align:left; transition:transform .18s ease, border-color .18s ease, background .18s ease; }.song-card::after { content:""; position:absolute; inset:auto -20px -45px auto; width:120px; height:120px; border-radius:50%; background:radial-gradient(circle, var(--song-color, #b9ff58), transparent 68%); opacity:.14; }.song-card:hover { transform:translateY(-2px); border-color:rgba(255,255,255,.24); }.song-card.selected { border-color:rgba(185,255,88,.72); background:linear-gradient(145deg, rgba(185,255,88,.17), rgba(255,255,255,.025)); box-shadow:0 8px 38px rgba(0,0,0,.22), inset 0 0 28px rgba(185,255,88,.04); }.song-index { color:#849084; font-size:11px; font-weight:800; }.song-card h3 { position:relative; z-index:1; max-width:88%; margin:30px 0 6px; letter-spacing:-.035em; font-size:16px; }.song-meta { color:#a7b0a7; font-size:12px; }.song-state { position:absolute; right:14px; top:15px; width:8px; height:8px; border-radius:99px; background:rgba(255,255,255,.18); }.song-card.selected .song-state { background:#b9ff58; box-shadow:0 0 15px #b9ff58; }
.inspector { border:1px solid rgba(255,255,255,.1); border-radius:15px; overflow:hidden; background:rgba(13,16,15,.72); }.inspector-top { padding:18px 18px 15px; border-bottom:1px solid rgba(255,255,255,.08); }.inspector-top h2 { margin:5px 0 3px; letter-spacing:-.035em; font-size:20px; }.inspector-top p { margin:0; color:#919a92; font-size:12px; }.stem-list { padding:9px; }.stem { display:grid; grid-template-columns:minmax(0,1fr) 86px; gap:9px; padding:11px 9px; border-radius:10px; }.stem:hover { background:rgba(255,255,255,.04); }.stem-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:750; margin:3px 0 0; }.stem select { width:100%; align-self:center; appearance:none; padding:7px 22px 7px 8px; color:#dbebd7; border:1px solid rgba(255,255,255,.12); border-radius:7px; background:#1a201b; font-size:11px; font-weight:800; }.inspector-footer { display:flex; gap:8px; padding:12px 17px 17px; }.inspector-footer button { flex:1; }
.routing-panel { margin-top:29px; border:1px solid rgba(255,255,255,.09); border-radius:14px; padding:18px; background:rgba(255,255,255,.023); }.routing-panel h2 { margin:0; font-size:15px; }.routing-panel > p { margin:5px 0 15px; color:#8e998f; font-size:12px; }.bus-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; }.bus { border:1px solid rgba(255,255,255,.1); border-radius:10px; padding:12px; background:rgba(0,0,0,.15); }.bus-dot { display:block; width:7px; height:7px; border-radius:99px; background:var(--bus-color); box-shadow:0 0 13px var(--bus-color); margin-bottom:10px; }.bus strong { display:block; font-size:12px; }.bus span { color:#8f998f; font-size:11px; }
.transport { position:fixed; z-index:4; right:0; bottom:0; left:204px; width:auto; min-height:82px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:24px; border-top:1px solid rgba(255,255,255,.15); background:rgba(15,18,16,.94); box-shadow:0 -13px 38px rgba(0,0,0,.22); padding:12px 38px; backdrop-filter:blur(22px); }.transport-song { min-width:0; }.transport-song strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }.transport-song span { color:#8f998f; font-size:11px; }.transport-controls { display:flex; align-items:center; gap:12px; }.transport button { border:0; color:#e9f1e7; background:transparent; font-size:17px; }.transport button:hover { background:rgba(255,255,255,.09); }.transport-skip { display:inline-flex; align-items:center; gap:6px; min-height:35px; padding:0 9px; border-radius:7px; color:#cbd7df !important; font-size:11px !important; font-weight:800; letter-spacing:.02em; }.transport-skip svg { width:18px; height:18px; fill:currentColor; }.transport .play { width:48px; height:48px; border-radius:99px; background:#b9ff58; color:#15200e; font-size:19px; box-shadow:0 0 30px rgba(185,255,88,.26); }.transport-right { display:flex; justify-content:flex-end; align-items:center; gap:11px; }.timer { font-variant-numeric:tabular-nums; color:#e7eee2; font-size:15px; font-weight:800; }.panic { border:1px solid rgba(255,109,95,.32) !important; color:#ff9c91 !important; font-size:11px !important; font-weight:900; width:auto !important; padding:0 10px; border-radius:8px !important; }
.empty { border:1px dashed rgba(255,255,255,.17); color:#97a198; border-radius:10px; padding:17px; text-align:center; font-size:12px; }.status-live { color:#c8ff78 !important; }.hidden { display:none !important; }
.tracks-empty { grid-column:1 / -1; min-height:137px; display:grid; place-items:center; line-height:1.5; }.inspector-empty { min-height:196px; }.empty-inspector-copy { margin:0; padding:15px 18px 19px; color:#97a198; font-size:12px; line-height:1.55; }.transport button:disabled { cursor:default; opacity:.38; }.transport button:disabled:hover { background:transparent; }

@media (max-width: 1040px) { .content-grid { grid-template-columns:1fr; }.inspector { max-width:none; }.songs { grid-template-columns:repeat(2,minmax(0,1fr)); }.bus-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 760px) { .sidebar { display:none; }.main { width:100%; margin-left:0; padding:20px 16px 102px; }.topbar { margin-bottom:27px; }.topbar h1 { font-size:22px; }.icon-button { display:none; }.setlist-row { min-height:64px; grid-template-columns:37px minmax(0,1fr) auto; gap:9px; padding:8px 10px; }.setlist-song strong { font-size:14px; }.setlist-stems,.setlist-more { display:none; }.setlist-duration { font-size:11px; }.setlist-collection-row { grid-template-columns:37px minmax(0,1fr) auto; }.outputs-intro,.devices-intro { display:block; }.outputs-actions { margin-top:12px; }.device-status { display:block; margin-top:9px; }.routing-matrix { min-width:max-content; grid-template-columns:250px repeat(var(--output-count),100px); }.device-grid,.device-channel-panel { grid-template-columns:1fr; }.device-card { min-height:0; }.device-channel-list { grid-template-columns:1fr; }.songs { grid-template-columns:1fr 1fr; gap:9px; }.song-card { min-height:117px; padding:13px; }.song-card h3 { margin-top:21px; font-size:14px; }.routing-panel { margin-top:20px; }.transport { right:0; left:0; min-height:82px; grid-template-columns:1fr auto; gap:8px; padding:9px 14px; }.transport-controls { grid-column:2; grid-row:1 / span 2; gap:4px; }.transport-skip { padding:0 4px; }.transport-skip span { display:none; }.transport-right { grid-column:1; grid-row:2; justify-content:space-between; }.transport .panic { height:29px; }.timer { font-size:12px; } }
@media (max-width: 430px) { .topbar-actions { gap:6px; }.section-heading { align-items:center; }.section-heading p { display:none; }.outline-button { padding:8px; }.songs { grid-template-columns:1fr; }.song-card { min-height:103px; }.bus-grid { grid-template-columns:1fr 1fr; } }
@media (max-width: 520px) { .access-gate { padding:14px; }.access-card { padding:25px; border-radius:17px; }.access-card .brand { margin-bottom:44px; }.access-card h1 { font-size:41px; } }

/* Theme system: Midnight and Neon are TRAXION palettes; Dark and White match Backstage. */
:root {
  --traxion-bg: #0a0a11;
  --traxion-deep: #0f0f16;
  --traxion-panel: #0f0f16;
  --traxion-panel-strong: #171720;
  --traxion-card: #0f0f16;
  --traxion-card-soft: #171720;
  --traxion-songbook-reader: #0a0b10;
  --traxion-text: #f7f7fb;
  --traxion-muted: #9b9ba6;
  --traxion-line: #282837;
  --traxion-accent: #7a4dff;
  --traxion-accent-rgb: 122, 77, 255;
  --traxion-accent-text: #ffffff;
  --traxion-accent-soft: #b7a1ff;
}

:root[data-traxion-theme="midnight"] {
  --traxion-bg: #03070e;
  --traxion-deep: #050d18;
  --traxion-panel: rgba(10, 22, 38, .8);
  --traxion-panel-strong: #0c1828;
  --traxion-card: rgba(18, 35, 57, .76);
  --traxion-card-soft: rgba(14, 29, 48, .66);
  --traxion-songbook-reader: #070c12;
  --traxion-text: #edf7ff;
  --traxion-muted: #8fa2b6;
  --traxion-line: rgba(164, 205, 248, .16);
  --traxion-accent: #27ccff;
  --traxion-accent-rgb: 39, 204, 255;
  --traxion-accent-text: #031620;
  --traxion-accent-soft: #8ae7ff;
}

:root[data-traxion-theme="neon"] {
  --traxion-bg: #07090a;
  --traxion-deep: #0d1510;
  --traxion-panel: rgba(7, 9, 10, .76);
  --traxion-panel-strong: #1a201b;
  --traxion-card: rgba(18, 22, 19, .82);
  --traxion-card-soft: rgba(18, 24, 18, .7);
  --traxion-songbook-reader: #090d0b;
  --traxion-text: #f3f6f0;
  --traxion-muted: #9aa69d;
  --traxion-line: rgba(255, 255, 255, .11);
  --traxion-accent: #b9ff58;
  --traxion-accent-rgb: 185, 255, 88;
  --traxion-accent-text: #14200d;
  --traxion-accent-soft: #d8ff9e;
}

/* Stage Console is KURU's high-contrast live-console palette. This is a local,
   personal appearance choice and never changes shared band content. */
:root[data-traxion-theme="stage-console"] {
  color-scheme:dark;
  --traxion-bg:#080a0b;
  --traxion-deep:#030404;
  --traxion-panel:#111416;
  --traxion-panel-strong:#1a1e21;
  --traxion-card:#15191c;
  --traxion-card-soft:#202428;
  --traxion-songbook-reader:#040505;
  --traxion-text:#dcdfdf;
  --traxion-muted:#878d90;
  --traxion-line:rgba(38,103,111,.62);
  --traxion-accent:#2b8a3f;
  --traxion-accent-rgb:43,138,63;
  --traxion-accent-text:#e8eee9;
  --traxion-accent-soft:#9eaaa1;
}

:root[data-traxion-theme="dark"] {
  --traxion-bg: #0a0a11;
  --traxion-deep: #0f0f16;
  --traxion-panel: #0f0f16;
  --traxion-panel-strong: #171720;
  --traxion-card: #0f0f16;
  --traxion-card-soft: #171720;
  --traxion-songbook-reader: #0a0b10;
  --traxion-text: #f7f7fb;
  --traxion-muted: #9b9ba6;
  --traxion-line: #282837;
  --traxion-accent: #7a4dff;
  --traxion-accent-rgb: 122, 77, 255;
  --traxion-accent-text: #ffffff;
  --traxion-accent-soft: #b7a1ff;
}

:root[data-traxion-theme="white"] {
  color-scheme: light;
  --traxion-bg: #f5f7fb;
  --traxion-deep: #ffffff;
  --traxion-panel: #ffffff;
  --traxion-panel-strong: #ffffff;
  --traxion-card: #ffffff;
  --traxion-card-soft: #ffffff;
  --traxion-songbook-reader: #f4f7fb;
  --traxion-text: #111827;
  --traxion-muted: #667085;
  --traxion-line: #e0e6ef;
  --traxion-accent: #2457a6;
  --traxion-accent-rgb: 36, 87, 166;
  --traxion-accent-text: #ffffff;
  --traxion-accent-soft: #2457a6;
}

body { color:var(--traxion-text); background:var(--traxion-bg); }
:root[data-traxion-theme="midnight"] body { background:radial-gradient(circle at 69% 12%, rgba(39, 204, 255, .15), transparent 30rem),radial-gradient(circle at 25% 100%, rgba(46, 93, 184, .2), transparent 36rem),var(--traxion-bg); }
:root[data-traxion-theme="neon"] body { background:radial-gradient(circle at 69% 12%, rgba(185, 255, 88, .11), transparent 30rem),radial-gradient(circle at 25% 100%, rgba(48, 104, 73, .18), transparent 36rem),var(--traxion-bg); }
:root[data-traxion-theme="stage-console"] body { background:radial-gradient(circle at 72% 8%, rgba(0, 205, 198, .1), transparent 32rem),radial-gradient(circle at 8% 92%, rgba(0, 227, 76, .08), transparent 27rem),var(--traxion-bg); }

.access-gate { background:radial-gradient(circle at 68% 23%,rgba(var(--traxion-accent-rgb),.14),transparent 23rem),radial-gradient(circle at 10% 84%,rgba(64,119,255,.12),transparent 26rem),var(--traxion-bg); }
.access-card { border-color:var(--traxion-line); background:linear-gradient(145deg,var(--traxion-card),rgba(255,255,255,.018)); }
.access-eyebrow { border-color:rgba(var(--traxion-accent-rgb),.3); color:var(--traxion-accent-soft); background:rgba(var(--traxion-accent-rgb),.09); }
.access-card p,.access-note { color:var(--traxion-muted); }
.access-button { background:var(--traxion-accent); color:var(--traxion-accent-text); box-shadow:0 0 30px rgba(var(--traxion-accent-rgb),.24); }
.access-button:hover { background:var(--traxion-accent-soft); }
.access-login-field { color:var(--traxion-muted); }
.access-login-field input { border-color:var(--traxion-line); background:var(--traxion-panel); color:var(--traxion-text); }
.access-login-field input:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.12); }
.access-loader { border-color:rgba(var(--traxion-accent-rgb),.18); border-top-color:var(--traxion-accent); }

.sidebar { border-color:var(--traxion-line); background:var(--traxion-panel); }
.workspace-switcher { border-color:var(--traxion-line); background:var(--traxion-card-soft); color:var(--traxion-text); }
.workspace-switcher small,.eyebrow,.nav-label,.stem-kind,.label,.transport-label { color:var(--traxion-muted); }
.workspace-switcher__chevron { color:var(--traxion-accent); }
.workspace-avatar { background:rgba(var(--traxion-accent-rgb),.14); color:var(--traxion-accent-soft); }.workspace-menu { border-color:var(--traxion-line); background:var(--traxion-panel-strong); }.workspace-menu-label,.workspace-option__copy > span { color:var(--traxion-muted); }.workspace-option { color:var(--traxion-text); }.workspace-option:hover,.workspace-option.active { background:rgba(var(--traxion-accent-rgb),.09); }.workspace-option.active { box-shadow:inset 2px 0 0 var(--traxion-accent); }.workspace-manage { border-color:var(--traxion-line); color:var(--traxion-accent-soft); }.workspace-manage:hover { color:var(--traxion-text); }
.nav button { color:var(--traxion-muted); }
.nav button.active { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.13); box-shadow:inset 2px 0 0 var(--traxion-accent); }
.nav button:hover { color:var(--traxion-text); background:rgba(255,255,255,.06); }
.nav-divider { background:var(--traxion-line); }
.sidebar-backstage { color:var(--traxion-muted); }.sidebar-backstage:hover { color:var(--traxion-text); }.sidebar-backstage span { color:var(--traxion-accent); }

.topbar h1,.section-heading h2,.inspector-top h2,.routing-panel h2,.transport-song strong,.timer { color:var(--traxion-text); }
.icon-button,.outline-button,.quiet-button { border-color:var(--traxion-line); background:var(--traxion-card-soft); color:var(--traxion-text); }
.outline-button:hover,.quiet-button:hover { background:rgba(255,255,255,.09); }
.section-heading p,.inspector-top p,.routing-panel > p,.song-meta,.bus span,.transport-song span { color:var(--traxion-muted); }
.song-card { border-color:var(--traxion-line); background:linear-gradient(145deg,var(--traxion-card),var(--traxion-card-soft)); color:var(--traxion-text); }
.song-card:hover { border-color:rgba(var(--traxion-accent-rgb),.45); }
.song-card.selected { border-color:rgba(var(--traxion-accent-rgb),.85); background:linear-gradient(145deg,rgba(var(--traxion-accent-rgb),.16),var(--traxion-card-soft)); box-shadow:0 8px 38px rgba(0,0,0,.22),inset 0 0 28px rgba(var(--traxion-accent-rgb),.08); }
.song-index { color:var(--traxion-muted); }.song-card.selected .song-state { background:var(--traxion-accent); box-shadow:0 0 15px var(--traxion-accent); }
.inspector { border-color:var(--traxion-line); background:var(--traxion-card-soft); }.inspector-top { border-color:var(--traxion-line); }
.stem:hover { background:rgba(var(--traxion-accent-rgb),.055); }.stem select { border-color:var(--traxion-line); color:var(--traxion-text); background:var(--traxion-panel-strong); }
.routing-panel { border-color:var(--traxion-line); background:var(--traxion-card-soft); }.bus { border-color:var(--traxion-line); background:rgba(0,0,0,.14); }
.transport { border-color:var(--traxion-line); background:var(--traxion-panel); }.transport button { color:var(--traxion-text); }.transport .play { background:var(--traxion-accent); color:var(--traxion-accent-text); box-shadow:0 0 30px rgba(var(--traxion-accent-rgb),.28); }.status-live { color:var(--traxion-accent-soft) !important; }
:root[data-traxion-theme="midnight"] .bus:nth-child(1) { --bus-color:#27ccff !important; }:root[data-traxion-theme="midnight"] .bus:nth-child(2) { --bus-color:#3a8fff !important; }:root[data-traxion-theme="midnight"] .bus:nth-child(3) { --bus-color:#6e9cff !important; }:root[data-traxion-theme="midnight"] .bus:nth-child(4) { --bus-color:#35d7ca !important; }

.main:has(.settings-workspace) { padding-top:76px; }
.settings-workspace { width:100%; max-width:1400px; margin:0 auto; display:grid; gap:12px; padding-bottom:28px; }.settings-workspace-header { min-height:58px; display:flex; align-items:end; justify-content:space-between; gap:18px; border-bottom:1px solid var(--traxion-line); padding:0 4px 11px; }.settings-workspace-header > div > span,.settings-zone > header span,.settings-connection-list span,.settings-output-row > div > span { display:block; color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }.settings-workspace-header h1 { margin:4px 0 0; color:var(--traxion-text); font-size:25px; letter-spacing:-.05em; }.settings-workspace-header p { max-width:380px; margin:0; color:var(--traxion-muted); font-size:12px; text-align:right; }.settings-workspace-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch; gap:12px; }.settings-zone { min-width:0; border:1px solid var(--traxion-line); border-radius:8px; background:var(--traxion-panel); overflow:hidden; }.settings-zone > header { min-height:70px; display:flex; align-items:center; justify-content:space-between; gap:16px; border-bottom:1px solid var(--traxion-line); padding:12px 15px; background:linear-gradient(90deg,var(--traxion-card-soft),transparent); }.settings-zone > header h2 { margin:4px 0 0; color:var(--traxion-text); font-size:17px; letter-spacing:-.04em; }.settings-zone > header p { max-width:265px; margin:0; color:var(--traxion-muted); font-size:11px; line-height:1.4; text-align:right; }.settings-zone--appearance,.settings-zone--connections { grid-column:1 / -1; }.theme-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }.theme-card { min-width:0; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:10px; min-height:66px; border:0; border-right:1px solid var(--traxion-line); padding:11px 14px; background:transparent; color:var(--traxion-text); text-align:left; }.theme-card:last-child { border-right:0; }.theme-card:hover { background:rgba(var(--traxion-accent-rgb),.06); }.theme-card.selected { background:rgba(var(--traxion-accent-rgb),.12); box-shadow:inset 0 3px 0 var(--traxion-accent); }.theme-preview { display:flex; align-items:flex-end; gap:3px; width:25px; height:27px; }.theme-preview i { width:6px; border-radius:4px; }.theme-preview i:nth-child(1) { height:12px; }.theme-preview i:nth-child(2) { height:26px; }.theme-preview i:nth-child(3) { height:18px; }.theme-preview-midnight i { background:linear-gradient(#59dcff,#2789ff); box-shadow:0 0 13px rgba(39,204,255,.42); }.theme-preview-neon i { background:linear-gradient(#ddff9a,#a4ec4e); box-shadow:0 0 13px rgba(185,255,88,.42); }.theme-preview-dark i { background:linear-gradient(#b7a1ff,#7a4dff); box-shadow:0 0 13px rgba(122,77,255,.42); }.theme-preview-white i { background:linear-gradient(#4c78c3,#2457a6); box-shadow:0 0 13px rgba(36,87,166,.26); }.theme-card-copy { min-width:0; }.theme-card-copy strong,.theme-card-copy span { display:block; }.theme-card-copy strong { font-size:13px; }.theme-card-copy span { margin-top:3px; overflow:hidden; color:var(--traxion-muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.settings-control-line { min-height:76px; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 15px; }.settings-control-line > div:first-child { min-width:0; display:grid; gap:4px; }.settings-control-line strong { color:var(--traxion-text); font-size:13px; }.settings-control-line span { color:var(--traxion-muted); font-size:11px; line-height:1.4; }.settings-control-line--density { border-top:1px solid var(--traxion-line); }.settings-control-line--stage-flash { border-top:1px solid var(--traxion-line); }.settings-segmented { flex:0 0 auto; display:inline-flex !important; gap:0 !important; overflow:hidden; border:1px solid var(--traxion-line); border-radius:6px; background:var(--traxion-card-soft); }.settings-segmented button { min-height:34px; border:0; padding:0 13px; background:transparent; color:var(--traxion-muted); font-size:11px; font-weight:850; }.settings-segmented button + button { border-left:1px solid var(--traxion-line); }.settings-segmented button:hover { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.07); }.settings-segmented button.is-active { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.17); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.2); }.settings-segmented button:disabled { cursor:default; opacity:.4; }.settings-segmented button:disabled:hover { color:var(--traxion-muted); background:transparent; }.offline-stage-actions { flex:0 0 auto; display:flex !important; flex-wrap:wrap; justify-content:flex-end; gap:7px; }.offline-stage-actions button:disabled { cursor:default; opacity:.45; }.settings-kaamos-status,.settings-kaamos-note,.settings-offline-status,.settings-offline-note { margin:0 15px 13px; color:var(--traxion-muted); font-size:11px; line-height:1.45; }.settings-kaamos-status,.settings-offline-status { display:flex; align-items:center; gap:7px; }.settings-kaamos-status::before,.settings-offline-status::before { content:''; flex:0 0 auto; width:7px; height:7px; border-radius:50%; background:var(--traxion-muted); }.settings-kaamos-status.is-following::before,.settings-offline-status.is-offline::before { background:var(--traxion-accent); box-shadow:0 0 10px rgba(var(--traxion-accent-rgb),.7); }.settings-kaamos-status.is-publishing::before,.settings-kaamos-status.is-waiting::before,.settings-offline-status::before { background:#e4b34c; }.settings-kaamos-status.is-error { color:#eb938b; }.settings-kaamos-status.is-error::before { background:#ef756b; }.settings-kaamos-note,.settings-offline-note { padding-top:9px; border-top:1px solid var(--traxion-line); }.settings-offline-status.is-offline { color:var(--traxion-accent-soft); }
.settings-connection-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }.settings-connection-list article { min-width:0; min-height:110px; display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:15px; }.settings-connection-list article + article { border-left:1px solid var(--traxion-line); }.settings-connection-list strong { display:block; margin-top:6px; color:var(--traxion-text); font-size:15px; letter-spacing:-.03em; }.settings-connection-list p { max-width:470px; margin:5px 0 0; color:var(--traxion-muted); font-size:11px; line-height:1.45; }.settings-connection-list em { flex:0 0 auto; padding-top:2px; color:var(--traxion-muted); font-size:9px; font-style:normal; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }.settings-output-row { display:grid; grid-template-columns:minmax(190px,.7fr) minmax(0,1.3fr); align-items:center; gap:20px; border-top:1px solid var(--traxion-line); padding:14px 15px; }.settings-output-row p { margin:5px 0 0; color:var(--traxion-muted); font-size:11px; line-height:1.4; }.settings-output-row .device-channel-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px 15px; }.settings-output-row .device-channel-list div { min-width:0; display:flex; align-items:center; justify-content:space-between; gap:9px; border-bottom:1px solid var(--traxion-line); padding:6px 0; }.settings-output-row .device-channel-list span { min-width:0; display:flex; align-items:center; gap:7px; overflow:hidden; color:var(--traxion-text); font-size:11px; font-weight:800; text-overflow:ellipsis; white-space:nowrap; }.settings-output-row .device-channel-list i { width:7px; height:7px; flex:0 0 auto; border-radius:99px; background:var(--channel-color); box-shadow:0 0 9px var(--channel-color); }.settings-output-row .device-channel-list strong { color:var(--traxion-muted); font-size:10px; }
.workspace-switcher:disabled { cursor:default; opacity:.72; }
.transport-label { display:inline-flex !important; align-items:center; gap:6px; }.transport-kaamos { display:inline-grid !important; place-items:center; width:17px; height:17px; border:1px solid var(--traxion-line); border-radius:50%; color:var(--traxion-muted) !important; font-size:9px !important; font-weight:900; letter-spacing:0 !important; }.transport-kaamos--master.is-idle,.transport-kaamos--slave.is-following { border-color:rgba(var(--traxion-accent-rgb),.68); background:rgba(var(--traxion-accent-rgb),.16); color:var(--traxion-accent-soft) !important; box-shadow:0 0 10px rgba(var(--traxion-accent-rgb),.26); }.transport-kaamos.is-error { border-color:rgba(239,117,107,.7); color:#ef8e84 !important; }

.help-page { width:100%; max-width:1180px; margin:0 auto; padding:20px 0 38px; }.help-page__intro { padding:4px 0 18px; border-bottom:1px solid var(--traxion-line); }.help-page__intro-row { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }.help-page__eyebrow,.help-section-heading > span { display:block; color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }.help-page__intro h1 { margin:7px 0 7px; color:var(--traxion-text); font-size:34px; letter-spacing:-.05em; }.help-page__intro p { max-width:610px; margin:0; color:var(--traxion-muted); font-size:14px; line-height:1.5; }.help-language-switcher { flex:0 0 auto; display:inline-flex; overflow:hidden; border:1px solid var(--traxion-line); border-radius:8px; background:var(--traxion-card-soft); }.help-language-switcher button { min-height:32px; border:0; padding:0 12px; background:transparent; color:var(--traxion-muted); font-size:11px; font-weight:850; }.help-language-switcher button + button { border-left:1px solid var(--traxion-line); }.help-language-switcher button:hover { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.07); }.help-language-switcher button.is-active { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.17); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.2); }.help-quickstart { padding:18px 0; border-bottom:1px solid var(--traxion-line); }.help-section-heading { margin-bottom:12px; }.help-section-heading h2 { margin:4px 0 0; color:var(--traxion-text); font-size:18px; letter-spacing:-.035em; }.help-steps { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; margin:0; padding:0; list-style:none; }.help-steps li { min-width:0; display:grid; grid-template-columns:25px minmax(0,1fr); gap:8px; padding:11px; border:1px solid var(--traxion-line); border-radius:10px; background:var(--traxion-card-soft); }.help-steps li > span { display:grid; place-items:center; width:25px; height:25px; border-radius:50%; background:rgba(var(--traxion-accent-rgb),.17); color:var(--traxion-accent-soft); font-size:11px; font-weight:900; }.help-steps strong { display:block; color:var(--traxion-text); font-size:12px; }.help-steps p { margin:4px 0 0; color:var(--traxion-muted); font-size:11px; line-height:1.38; }.help-steps b,.help-card b { color:var(--traxion-text); font-weight:800; }.help-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding-top:18px; }.help-card { min-width:0; padding:15px; border:1px solid var(--traxion-line); border-radius:11px; background:linear-gradient(145deg,var(--traxion-card),var(--traxion-card-soft)); }.help-card h2 { margin:0 0 7px; color:var(--traxion-text); font-size:15px; letter-spacing:-.025em; }.help-card p { margin:0; color:var(--traxion-muted); font-size:12px; line-height:1.52; }.help-card p + p { margin-top:8px; }

.help-card ul { margin:9px 0 0; padding-left:18px; color:var(--traxion-muted); font-size:12px; line-height:1.5; }
.help-card li + li { margin-top:5px; }
.help-card code { display:inline-block; padding:1px 5px; border:1px solid rgba(var(--traxion-accent-rgb),.28); border-radius:4px; background:rgba(var(--traxion-accent-rgb),.1); color:var(--traxion-accent-soft); font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.94em; font-weight:800; }

html[data-traxion-density="compact"] .help-page { max-width:none; padding:8px 0 16px; } html[data-traxion-density="compact"] .help-page__intro { padding:0 0 10px; } html[data-traxion-density="compact"] .help-page__intro h1 { margin:4px 0; font-size:26px; } html[data-traxion-density="compact"] .help-language-switcher button { min-height:28px; padding:0 10px; } html[data-traxion-density="compact"] .help-quickstart { padding:10px 0; } html[data-traxion-density="compact"] .help-steps { gap:5px; } html[data-traxion-density="compact"] .help-steps li { padding:8px; border-radius:4px; } html[data-traxion-density="compact"] .help-grid { gap:5px; padding-top:10px; } html[data-traxion-density="compact"] .help-card { padding:10px; border-radius:4px; }

@media (max-width:980px) { .settings-workspace-grid { grid-template-columns:1fr; } }
@media (max-width:760px) { .main:has(.settings-workspace) { padding-top:68px; }.settings-workspace { gap:8px; padding-bottom:16px; }.settings-workspace-header { min-height:45px; align-items:center; padding-bottom:8px; }.settings-workspace-header h1 { font-size:22px; }.settings-workspace-header p { display:none; }.settings-zone > header { min-height:62px; align-items:center; padding:10px 12px; }.settings-zone > header p { display:none; }.theme-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.theme-card:nth-child(2) { border-right:0; }.theme-card:nth-child(-n+2) { border-bottom:1px solid var(--traxion-line); }.settings-control-line { min-height:0; display:grid; gap:12px; padding:12px; }.settings-segmented { width:100%; }.settings-segmented button { flex:1 1 0; padding:0 7px; }.offline-stage-actions { justify-content:stretch; }.offline-stage-actions button { flex:1; }.settings-kaamos-status,.settings-kaamos-note,.settings-offline-status,.settings-offline-note { margin-right:12px; margin-left:12px; }.settings-connection-list,.settings-output-row { grid-template-columns:1fr; }.settings-connection-list article + article { border-top:1px solid var(--traxion-line); border-left:0; }.settings-output-row { gap:12px; padding:12px; }.settings-output-row .device-channel-list { grid-template-columns:1fr; } }
@media (max-width:980px) { .help-steps { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .help-page { padding-top:12px; }.help-page__intro-row { display:block; }.help-language-switcher { margin-top:12px; }.help-steps,.help-grid { grid-template-columns:1fr; }.help-page__intro h1 { font-size:27px; } }

/* Routing matrix is a semantic table so every output remains aligned with its track row. */
.routing-matrix-wrap { width:max-content; max-width:100%; }
.routing-matrix { display:table; width:max-content; min-width:0; border-collapse:collapse; table-layout:fixed; }
.routing-matrix .matrix-head { display:table-cell; height:69px; vertical-align:middle; }
.routing-matrix .matrix-head strong,.routing-matrix .matrix-head span { display:block; }
.routing-matrix .matrix-track-head { width:278px; }
.routing-matrix .matrix-head:not(.matrix-track-head),.routing-matrix .matrix-route-cell { width:142px; }
.routing-matrix .matrix-track { display:table-cell; padding:0; vertical-align:middle; text-align:left; }
.routing-matrix .matrix-track-inner { min-height:72px; display:flex; align-items:center; gap:8px; padding:9px 12px; }
.routing-matrix .matrix-track-actions { display:flex; align-items:center; gap:2px; margin-left:auto; }
.routing-matrix .matrix-delete { display:grid; place-items:center; width:27px; height:27px; border:0; border-radius:5px; padding:0; background:transparent; color:var(--traxion-muted); }
.routing-matrix .matrix-delete:hover { background:rgba(226,91,91,.12); color:#f08e8e; }
.routing-matrix .matrix-delete svg { width:15px; height:15px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; }
.routing-matrix .matrix-route-cell { display:table-cell; min-height:0; height:72px; vertical-align:middle; text-align:center; }
.routing-matrix .matrix-toggle { display:inline-grid; }
.routing-matrix .matrix-no-tracks { min-height:140px; height:140px; }

.dialog-backdrop { position:fixed; z-index:30; inset:0; display:grid; place-items:center; padding:22px; background:rgba(0,0,0,.62); backdrop-filter:blur(4px); }
.setlist-song-dialog { width:min(100%,520px); max-height:min(680px,calc(100dvh - 44px)); display:flex; flex-direction:column; border:1px solid var(--traxion-line); border-radius:14px; padding:18px; background:var(--traxion-panel-strong); box-shadow:0 24px 70px rgba(0,0,0,.55); }
.dialog-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }.dialog-heading h2 { margin:4px 0 0; color:var(--traxion-text); font-size:20px; letter-spacing:-.04em; }.setlist-song-dialog > p { margin:8px 0 15px; color:var(--traxion-muted); font-size:12px; line-height:1.45; }
.kaamos-note-dialog__field { display:grid; gap:7px; }.kaamos-note-dialog__field > span { color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.1em; text-transform:uppercase; }.kaamos-note-dialog__field textarea { width:100%; min-height:112px; resize:vertical; border:1px solid var(--traxion-line); border-radius:9px; padding:10px 11px; background:var(--traxion-card); color:var(--traxion-text); font:inherit; line-height:1.45; }.kaamos-note-dialog__field textarea:focus { outline:0; border-color:var(--traxion-accent); box-shadow:0 0 0 2px rgba(var(--traxion-accent-rgb),.15); }.kaamos-note-dialog__field small { color:var(--traxion-muted); font-size:10px; text-align:right; }
.kaamos-note-popup { position:fixed; z-index:35; top:76px; right:20px; width:min(360px,calc(100vw - 32px)); display:grid; gap:6px; border:1px solid rgba(var(--traxion-accent-rgb),.62); border-radius:11px; padding:14px 16px; background:var(--traxion-panel-strong); box-shadow:0 18px 46px rgba(0,0,0,.48); color:var(--traxion-text); text-align:left; }.kaamos-note-popup:hover { border-color:var(--traxion-accent); background:var(--traxion-card-soft); }.kaamos-note-popup .eyebrow { color:var(--traxion-accent-soft); }.kaamos-note-popup strong { overflow-wrap:anywhere; white-space:pre-wrap; font-size:15px; line-height:1.38; }.kaamos-note-popup small { color:var(--traxion-muted); font-size:10px; font-weight:700; }
.setlist-song-options { display:grid; gap:5px; min-height:0; overflow:auto; padding-right:3px; }.setlist-song-options label { display:flex; align-items:center; gap:10px; border:1px solid transparent; border-radius:8px; padding:10px; color:var(--traxion-text); cursor:pointer; }.setlist-song-options label:hover { border-color:var(--traxion-line); background:rgba(var(--traxion-accent-rgb),.07); }.setlist-song-options input { width:16px; height:16px; accent-color:var(--traxion-accent); }.setlist-song-options span { min-width:0; }.setlist-song-options strong,.setlist-song-options small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.setlist-song-options strong { font-size:12px; }.setlist-song-options small,.dialog-empty { margin-top:3px; color:var(--traxion-muted); font-size:10px; }.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:17px; }.dialog-actions .outline-button { background:var(--traxion-accent); color:var(--traxion-accent-text); border-color:transparent; }
.dialog-routing-map { display:grid; gap:6px; margin:0 0 12px; color:var(--traxion-muted); font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.dialog-routing-map select { min-height:36px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 9px; background:var(--traxion-panel); color:var(--traxion-text); font-size:12px; font-weight:700; letter-spacing:0; text-transform:none; }

/* The setlist editor is a workspace view, not a modal. */
.setlist-editor { width:100%; display:grid; gap:14px; }
.setlist-editor-top { display:grid; grid-template-columns:minmax(280px,1fr) minmax(210px,.45fr) auto; align-items:end; gap:12px; border:1px solid var(--traxion-line); border-radius:12px; padding:14px; background:var(--traxion-panel); }
.setlist-editor-name-wrap { min-width:0; display:flex; align-items:end; gap:8px; }.setlist-editor-name-wrap .setlist-editor-name { min-width:0; flex:1; }.setlist-editor-back { flex:0 0 auto; }
.setlist-editor-field { display:grid; gap:6px; min-width:0; color:var(--traxion-muted); font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.setlist-editor-field input,.setlist-editor-field select { width:100%; min-height:39px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; outline:none; background:var(--traxion-card-soft); color:var(--traxion-text); font:inherit; font-size:13px; font-weight:750; letter-spacing:0; text-transform:none; }
.setlist-editor-field input:focus,.setlist-editor-field select:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.11); }
.setlist-editor-actions { display:flex; justify-content:flex-end; gap:7px; }.setlist-editor-actions .outline-button { border-color:transparent; background:var(--traxion-accent); color:var(--traxion-accent-text); }
.setlist-editor-recovery { margin:-6px 0 0; border:1px solid rgba(100,191,119,.35); border-radius:8px; padding:8px 11px; background:rgba(100,191,119,.08); color:#9cdaa7; font-size:12px; font-weight:700; }
.setlist-editor-columns { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(230px,.72fr); gap:14px; min-height:460px; }
.setlist-editor-column { min-width:0; min-height:460px; display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--traxion-line); border-radius:12px; background:var(--traxion-panel); }
.setlist-editor-column > header { min-height:73px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-bottom:1px solid var(--traxion-line); padding:13px 15px; background:var(--traxion-card-soft); }
.setlist-editor-column > header span { display:block; margin-bottom:4px; color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }.setlist-editor-column h2 { margin:0; color:var(--traxion-text); font-size:17px; letter-spacing:-.035em; }.setlist-editor-column > header > strong { display:grid; place-items:center; min-width:26px; height:26px; border-radius:99px; background:rgba(var(--traxion-accent-rgb),.12); color:var(--traxion-accent-soft); font-size:11px; }
.setlist-editor-column > header.setlist-editor-library-header { min-height:112px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px 12px; }.setlist-editor-library-header > div { min-width:0; }.setlist-editor-library-header > strong { justify-self:end; }.setlist-editor-search { grid-column:1 / -1; }.setlist-editor-search input { width:100%; min-height:37px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; outline:none; background:var(--traxion-panel); color:var(--traxion-text); font:inherit; font-size:13px; font-weight:650; }.setlist-editor-search input::placeholder { color:var(--traxion-muted); }.setlist-editor-search input:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.11); }
.setlist-editor-list { flex:1; min-height:310px; display:grid; align-content:start; gap:5px; padding:9px; transition:background .15s ease, box-shadow .15s ease; }.setlist-editor-list.is-drop-target { background:rgba(var(--traxion-accent-rgb),.08); box-shadow:inset 0 0 0 2px rgba(var(--traxion-accent-rgb),.46); }
.setlist-editor-column--encore > header { background:rgba(255,190,87,.07); }.setlist-editor-column--encore > header > strong,.setlist-editor-state--encore { color:#f4c85a; }
.setlist-editor-song { min-width:0; min-height:53px; display:flex; align-items:center; gap:9px; border:1px solid transparent; border-radius:8px; padding:8px 10px; background:transparent; color:var(--traxion-text); cursor:grab; user-select:none; }.setlist-editor-song:hover { border-color:var(--traxion-line); background:rgba(var(--traxion-accent-rgb),.055); }.setlist-editor-song.dragging { opacity:.38; }.setlist-editor-song.is-selected { border-color:rgba(var(--traxion-accent-rgb),.17); background:rgba(var(--traxion-accent-rgb),.045); }
.setlist-editor-drag { color:var(--traxion-muted); font-size:17px; line-height:1; }.setlist-editor-song-copy { min-width:0; flex:1; }.setlist-editor-song-copy strong,.setlist-editor-song-copy small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.setlist-editor-song-copy strong { font-size:13px; letter-spacing:-.015em; }.setlist-editor-song-copy small { margin-top:3px; color:var(--traxion-muted); font-size:10px; }.setlist-editor-state { color:var(--traxion-accent-soft); font-size:9px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }.setlist-editor-empty { min-height:250px; display:grid; place-items:center; padding:20px; color:var(--traxion-muted); font-size:12px; text-align:center; }

@media (max-width:760px) { .setlist-editor-top { grid-template-columns:1fr; }.setlist-editor-actions { justify-content:stretch; }.setlist-editor-actions button { flex:1; }.setlist-editor-columns { grid-template-columns:1fr; min-height:0; }.setlist-editor-column { min-height:290px; }.setlist-editor-list { min-height:210px; } }

/* Global navigation lives in the compact top banner. */
.app-header { position:fixed; z-index:20; top:0; right:0; left:0; height:64px; display:grid; grid-template-columns:minmax(0,1fr) minmax(190px,280px) minmax(0,1fr); align-items:center; gap:16px; border-bottom:1px solid var(--traxion-line); padding:0 22px; background:color-mix(in srgb,var(--traxion-panel) 91%,transparent); backdrop-filter:blur(24px); }
.app-header-side { min-width:0; display:flex; align-items:center; }.app-header-brand { justify-content:flex-start; gap:22px; }.app-header-wordmark { gap:12px; }.app-header-wordmark img { display:block; object-fit:contain; }.app-header-wordmark .kuru-wordmark { width:80px; height:auto; }.app-header-wordmark .kuru-tracks-lockup { width:116px; height:23px; }.header-offline-toggle { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-width:112px; min-height:34px; border:1px solid var(--traxion-line); border-radius:8px; padding:0 11px; background:var(--traxion-card-soft); color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }.header-offline-toggle i { width:7px; height:7px; border-radius:50%; background:var(--traxion-muted); }.header-offline-toggle:hover { border-color:rgba(var(--traxion-accent-rgb),.5); color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.08); }.header-offline-toggle.is-ready i { background:#c9a34e; box-shadow:0 0 6px rgba(201,163,78,.25); }.header-offline-toggle.is-online { color:#91d99e; }.header-offline-toggle.is-online i { background:#64bf77; box-shadow:0 0 6px rgba(100,191,119,.38); }.header-offline-toggle.is-downloading { pointer-events:none; color:#d8bc72; }.header-offline-toggle.is-downloading i { background:#ccad5b; box-shadow:0 0 6px rgba(204,173,91,.36); animation:offline-download-pulse .9s ease-in-out infinite; }.header-offline-toggle.is-active { color:#dfa77e; }.header-offline-toggle.is-active i { background:#cc8452; box-shadow:0 0 6px rgba(204,132,82,.4); }.app-header-workspace { width:100%; }.app-header-menu { justify-content:space-between; gap:14px; }.header-clock { color:var(--traxion-accent-soft); font-size:28px; font-weight:800; letter-spacing:-.055em; line-height:1; font-variant-numeric:tabular-nums; white-space:nowrap; }.app-header-menu .more-menu { min-width:194px; }.app-menu .more-menu-divider { display:block; height:1px; margin:5px 4px; background:var(--traxion-line); }.app-menu button.current { color:var(--traxion-accent-soft); background:rgba(var(--traxion-accent-rgb),.1); }
.app-sync-progress { position:absolute; top:100%; right:0; left:0; height:5px; overflow:hidden; background:rgba(var(--traxion-accent-rgb),.14); box-shadow:0 1px 0 rgba(0,0,0,.28); pointer-events:none; }
.app-sync-progress > span { display:block; width:var(--app-sync-progress,0%); height:100%; background:linear-gradient(90deg,var(--traxion-accent),var(--traxion-accent-soft)); box-shadow:0 0 12px rgba(var(--traxion-accent-rgb),.72); transition:width .22s ease; }
.app-sync-progress.is-indeterminate > span { width:28%; animation:app-sync-progress-slide 1.15s ease-in-out infinite; }
@keyframes offline-download-pulse { 50% { opacity:.35; transform:scale(.72); } }
@keyframes app-sync-progress-slide { from { transform:translateX(-110%); } to { transform:translateX(460%); } }
@media (prefers-reduced-motion:reduce) { .app-sync-progress.is-indeterminate > span { width:100%; animation:offline-download-pulse 1.4s ease-in-out infinite; } }
.main { width:100%; height:100dvh; margin-left:0; overflow-x:hidden; padding:84px 38px 112px; }
.topbar--setlist-editor { display:none; }
.transport { left:0; }

@media (max-width:760px) { .app-header { height:58px; grid-template-columns:minmax(0,1fr) minmax(150px,200px) minmax(0,1fr); gap:8px; padding:0 14px; }.app-header-brand { gap:10px; }.app-header-wordmark { gap:7px; }.app-header-wordmark img { object-fit:contain; }.app-header-wordmark .kuru-wordmark { width:64px; height:auto; }.app-header-wordmark .kuru-tracks-lockup { width:86px; height:18px; }.header-offline-toggle { min-width:76px; padding:0 8px; font-size:9px; }.workspace-switcher { min-height:38px; padding:4px 7px; }.workspace-switcher small { display:none; }.workspace-switcher strong { margin-top:0; font-size:11px; }.workspace-avatar { flex-basis:25px; width:25px; height:25px; border-radius:6px; }.workspace-avatar b { font-size:8px; }.app-header .icon-button { display:grid; width:35px; height:35px; }.main { padding:74px 16px 102px; }.app-header-menu .more-menu { min-width:180px; }.kaamos-note-popup { top:68px; right:12px; width:min(360px,calc(100vw - 24px)); } }

.outputs-tools { display:flex; align-items:end; justify-content:flex-end; flex-wrap:wrap; gap:9px; }.outputs-device-select { display:grid; gap:5px; min-width:190px; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.outputs-device-select select { width:100%; min-height:35px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 29px 0 9px; background:var(--traxion-card-soft); color:var(--traxion-text); font-size:11px; font-weight:750; letter-spacing:0; text-transform:none; }.outputs-actions { align-items:end; }.device-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:760px) { .outputs-tools { width:100%; justify-content:flex-start; }.outputs-device-select { flex:1 1 100%; }.outputs-actions { flex-wrap:wrap; }.device-grid { grid-template-columns:1fr; } }

.transport { grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:28px; }.transport-left { min-width:0; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:20px; }.transport-time { display:grid; gap:4px; font-variant-numeric:tabular-nums; white-space:nowrap; }.transport-time > span { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }.transport-time .timer { color:var(--traxion-text); font-size:19px; font-weight:850; letter-spacing:-.035em; }.transport-song strong { margin-top:2px; color:var(--traxion-text); font-size:20px; font-weight:800; letter-spacing:.025em; text-transform:uppercase; }.transport-right { gap:18px; }.transport-remaining { text-align:right; }.transport-remaining .timer { font-size:22px; }.transport .panic { min-height:32px; }.transport-stop { display:inline-flex; align-items:center; gap:6px; min-height:34px; border:1px solid var(--traxion-line) !important; border-radius:7px !important; padding:0 9px; background:var(--traxion-card-soft) !important; color:var(--traxion-muted) !important; font-size:11px !important; font-weight:850; letter-spacing:.02em; }.transport-stop:hover { color:var(--traxion-text) !important; background:rgba(var(--traxion-accent-rgb),.12) !important; }.transport-stop > span:first-child { font-size:11px; }
@media (max-width:760px) { .transport { grid-template-columns:minmax(0,1fr) auto; gap:8px; }.transport-left { grid-template-columns:1fr; gap:2px; }.transport-elapsed { display:none; }.transport-song strong { font-size:14px; }.transport-controls { grid-column:2; grid-row:1 / span 2; }.transport-stop { min-height:32px; padding:0 6px; }.transport-stop > span:last-child { display:none; }.transport-right { grid-column:1; grid-row:2; justify-content:space-between; }.transport-time { display:flex; align-items:baseline; gap:7px; }.transport-remaining { text-align:left; }.transport-remaining .timer { font-size:14px; } }

.setlist-row.has-playback-progress { background:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.24) 0 var(--playback-progress),rgba(var(--traxion-accent-rgb),.055) var(--playback-progress) 100%); box-shadow:inset 3px 0 0 var(--traxion-accent),inset 0 -2px 0 rgba(var(--traxion-accent-rgb),.35); transition:background .25s linear; }

/* Pausing retains the selected-song state. Playback progress is only a live
   transport treatment; it must not make the chosen row look deselected. */
.player-setlist .setlist-row.selected.has-playback-progress:not(.playing) {
  background:rgba(var(--traxion-accent-rgb),.11);
  box-shadow:inset 3px 0 0 var(--traxion-accent),inset 0 -2px 0 rgba(var(--traxion-accent-rgb),.35);
}

.player-setlist .setlist-row-select { grid-template-columns:64px 38px minmax(0,1fr) minmax(130px,auto) 92px; }
.player-setlist .setlist-duration { color:var(--traxion-text); font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace; font-size:26px; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.075em; line-height:1; text-align:right; }
.player-setlist .setlist-row.has-playback-progress .setlist-duration { color:var(--traxion-accent-soft); font-size:29px; font-weight:850; letter-spacing:-.095em; }

.player-setlist .setlist-row { position:relative; grid-template-columns:minmax(0,1fr) 44px; gap:0; padding:0; }.player-setlist .setlist-row-select { min-width:0; min-height:72px; display:grid; grid-template-columns:64px 38px minmax(0,1fr) minmax(130px,auto) 78px; align-items:center; gap:10px; border:0; padding:10px 8px 10px 15px; background:transparent; color:var(--traxion-text); text-align:left; }.player-setlist .setlist-play-spacer { display:block; width:38px; height:38px; }.player-setlist .setlist-duration { color:var(--traxion-text); font-size:22px; font-weight:850; letter-spacing:-.045em; }.player-setlist .setlist-song-play { position:absolute; z-index:1; top:50%; left:89px; width:38px; min-height:38px; transform:translateY(-50%); border:1px solid var(--traxion-line); border-radius:6px; padding:0; background:var(--traxion-card-soft); color:var(--traxion-accent-soft); font-size:14px; font-weight:900; }.player-setlist .setlist-song-play:hover { background:rgba(var(--traxion-accent-rgb),.14); color:var(--traxion-text); }.player-setlist .setlist-song-menu { width:44px; min-height:72px; border:0; background:transparent; color:var(--traxion-muted); font-size:15px; letter-spacing:2px; }.player-setlist .setlist-song-menu:hover { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.1); }.player-setlist .setlist-row-select:focus-visible,.player-setlist .setlist-song-play:focus-visible,.player-setlist .setlist-song-menu:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:-2px; }
.song-editor { width:100%; display:grid; gap:14px; }.song-editor-top { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; border-bottom:1px solid var(--traxion-line); padding:0 0 14px; }.song-editor-top h2 { margin:4px 0 0; color:var(--traxion-text); font-size:26px; letter-spacing:-.05em; }.song-editor-top p { max-width:600px; margin:7px 0 0; color:var(--traxion-muted); font-size:13px; line-height:1.5; }.song-editor-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.song-editor-actions .outline-button,.song-audio-map-heading .outline-button { border-color:transparent; background:var(--traxion-accent); color:var(--traxion-accent-text); }
.song-editor-details { display:grid; grid-template-columns:minmax(0,1fr) 170px 150px; gap:11px; }.song-editor-details label { display:grid; gap:6px; color:var(--traxion-muted); font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.song-editor-details input,.song-stem-map select,.audio-lane header input { min-height:38px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font-size:13px; font-weight:750; letter-spacing:0; text-transform:none; }.song-audio-map { border:1px solid var(--traxion-line); border-radius:12px; overflow:hidden; background:var(--traxion-panel); }.song-audio-map-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; padding:16px; border-bottom:1px solid var(--traxion-line); background:var(--traxion-card-soft); }.song-audio-map-heading h3 { margin:4px 0 0; color:var(--traxion-text); font-size:18px; letter-spacing:-.035em; }.song-audio-map-heading p { margin:5px 0 0; color:var(--traxion-muted); font-size:12px; }.song-audio-map-heading > div:last-child { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.song-stem-list { display:grid; }.song-stem-row { min-height:78px; display:grid; grid-template-columns:minmax(180px,1fr) minmax(165px,.42fr); align-items:center; gap:16px; border-bottom:1px solid var(--traxion-line); padding:12px 16px; }.song-stem-row:last-child { border-bottom:0; }.song-stem-name strong,.song-stem-name span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.song-stem-name strong { color:var(--traxion-text); font-size:14px; }.song-stem-name span { margin-top:4px; color:var(--traxion-muted); font-size:10px; }.song-stem-map { display:grid; gap:5px; }.song-stem-map > span { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.song-audio-empty { min-height:170px; display:grid; place-items:center; color:var(--traxion-muted); font-size:13px; }
.audio-editor-toolbar { position:relative; z-index:40; isolation:isolate; display:flex; align-items:end; flex-wrap:wrap; gap:10px; }.audio-editor-toolbar label { display:grid; gap:4px; min-width:112px; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.audio-editor-toolbar strong { color:var(--traxion-text); font-size:13px; letter-spacing:0; }.audio-editor-toolbar .quiet-button { margin-left:auto; }.audio-editor-song-fields { display:flex; flex:0 1 450px; gap:10px; }.audio-editor-song-fields label { flex:1 1 190px; min-width:0 !important; }.audio-editor-song-fields input { width:100%; min-height:30px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 8px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 12px/1 inherit; letter-spacing:0; text-transform:none; }.audio-zoom-control { min-width:190px !important; grid-template-columns:minmax(110px,1fr) auto; align-items:center; }.audio-zoom-control > span { grid-column:1 / -1; }.audio-zoom-control input { width:100%; accent-color:var(--traxion-accent); }.audio-zoom-control strong { color:var(--traxion-accent-soft); font-size:10px; }.audio-timeline { overflow:auto; border:1px solid var(--traxion-line); border-radius:12px; background:var(--traxion-panel); }.audio-timeline-content { position:relative; min-width:100%; }.audio-ruler { position:relative; height:58px; border-bottom:1px solid var(--traxion-line); background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.46) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.15) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; background-position:0 0; }.audio-ruler span { position:absolute; top:8px; color:var(--traxion-muted); font-size:9px; font-weight:800; transform:translateX(5px); }.audio-ruler .audio-ruler-caption { left:8px; top:auto; bottom:7px; transform:none; color:var(--traxion-accent-soft); font-size:9px; letter-spacing:.06em; text-transform:uppercase; }.audio-lanes { display:grid; gap:8px; padding:10px; }.audio-lane { display:grid; grid-template-columns:190px minmax(0,1fr); gap:12px; align-items:center; }.audio-lane header { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:5px 8px; }.audio-lane header strong,.audio-lane header span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.audio-lane header strong { color:var(--traxion-text); font-size:12px; }.audio-lane header span { grid-column:1 / -1; color:var(--traxion-muted); font-size:10px; }.audio-lane header label { display:flex; align-items:center; gap:4px; color:var(--traxion-muted); font-size:9px; font-weight:800; }.audio-lane header input { width:66px; min-height:28px; padding:0 5px; font-size:10px; }.audio-lane-track { position:relative; min-height:80px; overflow:hidden; border-radius:8px; background-color:rgba(var(--traxion-accent-rgb),.05); background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.34) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; }.audio-lane-track::before { content:""; position:absolute; inset:50% 0 auto; border-top:1px dashed rgba(var(--traxion-accent-rgb),.34); }.audio-clip { position:absolute; top:9px; bottom:9px; left:var(--clip-left); width:var(--clip-width); min-width:74px; overflow:hidden; border:1px solid rgba(var(--traxion-accent-rgb),.66); border-radius:7px; padding:0; background:linear-gradient(105deg,rgba(var(--traxion-accent-rgb),.28),rgba(21,115,255,.27)); color:var(--traxion-text); cursor:grab; touch-action:none; }.audio-clip:active { cursor:grabbing; }.audio-clip canvas { position:absolute; inset:0; width:100%; height:100%; opacity:.9; }.audio-clip span { position:absolute; z-index:1; inset:auto 7px 5px; overflow:hidden; color:#fff; font-size:9px; font-weight:800; text-align:left; text-overflow:ellipsis; white-space:nowrap; }.audio-timeline-end { position:absolute; z-index:4; top:58px; right:-7px; bottom:0; width:14px; border:0; border-left:2px solid var(--traxion-accent); border-radius:0; padding:0; background:transparent; color:var(--traxion-accent-soft); cursor:ew-resize; touch-action:none; }.audio-timeline-end::before { content:""; position:absolute; top:8px; left:-5px; width:8px; height:20px; border-radius:4px; background:var(--traxion-accent); box-shadow:0 0 14px rgba(var(--traxion-accent-rgb),.6); }.audio-timeline-end span { position:absolute; top:4px; right:12px; width:max-content; color:var(--traxion-accent-soft); font-size:9px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }.audio-editor-empty { min-height:240px; display:grid; place-items:center; color:var(--traxion-muted); font-size:13px; }
.audio-original-artist-control { min-width:184px !important; }.audio-original-artist-control input { width:100%; min-height:30px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 8px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 12px/1 inherit; letter-spacing:0; text-transform:none; }
.audio-ruler { margin-left:202px; }

/* Keep player-list counters legible and within their own column at every width. */
.player-setlist .setlist-duration {
  min-width:5ch;
  color:var(--traxion-text);
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  font-size:clamp(20px,1.5vw,27px);
  font-weight:750;
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1,"zero" 1;
  letter-spacing:0;
  line-height:1;
  text-align:right;
  white-space:nowrap;
}
.player-setlist .setlist-row.has-playback-progress .setlist-duration {
  color:var(--traxion-accent-soft);
  font-size:clamp(22px,1.7vw,30px);
  font-weight:800;
  letter-spacing:0;
}
@media (max-width:760px) {
  .player-setlist .setlist-row-select {
    grid-template-columns:38px 34px minmax(0,1fr) minmax(5ch,auto);
    gap:7px;
    padding-right:10px;
  }
  .player-setlist .setlist-song-play {
    left:53px;
    width:32px;
    min-height:32px;
  }
  .player-setlist .setlist-duration,
  .player-setlist .setlist-row.has-playback-progress .setlist-duration {
    min-width:5ch;
    font-size:20px;
    font-weight:800;
    letter-spacing:0;
  }
}
.audio-song-length-control { min-width:205px !important; }.audio-song-length-control > div { display:flex; align-items:center; gap:6px; }.audio-song-length-control input { width:102px; min-height:30px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 8px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 12px/1 inherit; }.audio-song-length-control .quiet-button { min-height:30px; margin:0; padding:0 9px; font-size:10px; }
.audio-ruler { width:var(--grid-width); }.audio-lanes { padding:10px 0; }.audio-lane-track { background:none; }.audio-track-grid { position:absolute; inset:0 auto 0 0; width:var(--grid-width); pointer-events:none; background-color:rgba(var(--traxion-accent-rgb),.05); background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.34) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; }.audio-timeline-end { left:calc(202px + var(--grid-width)); right:auto; }
.audio-tempo-grid { position:absolute; z-index:0; top:0; bottom:0; left:202px; width:var(--grid-width); pointer-events:none; background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.46) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.15) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; }.audio-ruler,.audio-lanes { position:relative; z-index:1; }.audio-ruler,.audio-lane-track { background:none; }.audio-track-grid { display:none; }
.audio-lane header { align-self:stretch; align-content:center; padding-left:12px; background:var(--traxion-panel); }.audio-clip { border-color:color-mix(in srgb,var(--clip-color, var(--traxion-accent)) 75%,white); background:linear-gradient(105deg,color-mix(in srgb,var(--clip-color, var(--traxion-accent)) 34%,transparent),rgba(21,115,255,.27)); }
.audio-lane-actions { grid-column:2; grid-row:1; display:flex; align-items:center; gap:5px; }.audio-lane-add,.audio-lane-delete { display:grid; width:28px; height:28px; place-items:center; border:1px solid var(--traxion-line); border-radius:7px; padding:0; background:rgba(var(--traxion-accent-rgb),.1); color:var(--traxion-accent-soft); font:800 20px/1 inherit; cursor:pointer; }.audio-lane-delete { color:var(--traxion-muted); font-size:16px; }.audio-lane-add:hover { border-color:var(--traxion-accent); background:rgba(var(--traxion-accent-rgb),.2); color:var(--traxion-text); }.audio-lane-delete:hover { border-color:rgba(255,124,116,.72); background:rgba(255,124,116,.1); color:#ff9c95; }.audio-new-track-row { display:flex; align-items:center; gap:10px; padding:4px 0 2px 12px; }.audio-new-track-row .quiet-button { min-height:32px; margin:0; }.audio-new-track-row span { color:var(--traxion-muted); font-size:10px; }
.audio-editor-heading { min-width:min(100%,520px); }.audio-editor-heading label { display:grid; gap:5px; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.audio-editor-heading input { width:100%; min-height:42px; border:0; border-bottom:1px solid var(--traxion-line); padding:0; background:transparent; color:var(--traxion-text); font:800 26px/1.1 inherit; letter-spacing:-.05em; text-transform:none; }.audio-editor-heading input:focus { outline:0; border-bottom-color:var(--traxion-accent); }.audio-tempo-control { min-width:178px !important; }.audio-tempo-control > div { display:flex; align-items:center; gap:8px; }.audio-tempo-control input { width:74px; min-height:30px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 7px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 12px/1 inherit; }.audio-tempo-control strong { color:var(--traxion-text); font-size:12px; }.audio-lane-title { min-width:0; display:grid; gap:4px; }.audio-lane-title strong,.audio-lane-title span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.audio-lane-clip-settings { grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,1fr) 88px; gap:6px 8px; border-top:1px solid var(--traxion-line); padding-top:8px; }.audio-lane-clip-settings > strong { grid-column:1 / -1; color:var(--traxion-text); font-size:10px; }.audio-lane-clip-settings label { display:grid; gap:3px; min-width:0; color:var(--traxion-muted); font-size:8px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }.audio-lane-clip-settings select { min-width:0; min-height:27px; border:1px solid var(--traxion-line); border-radius:6px; padding:0 22px 0 6px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 10px/1 inherit; letter-spacing:0; text-transform:none; }.audio-lane-clip-settings .audio-lane-gain { grid-column:1 / -1; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; }.audio-lane-gain input { width:100%; accent-color:var(--traxion-accent); }.audio-lane-gain output { min-width:38px; color:var(--traxion-accent-soft); font-size:9px; letter-spacing:0; text-align:right; text-transform:none; }.audio-timeline-end { top:0; bottom:auto; height:58px; }.audio-timeline-end::before { top:15px; }.audio-timeline-end span { top:7px; }
.audio-ruler .audio-timeline-end { position:absolute; z-index:4; top:0; bottom:auto; left:calc(100% - 1px); right:auto; width:28px; height:58px; }.audio-ruler .audio-timeline-end::before { top:15px; left:1px; }.audio-ruler .audio-timeline-end span { top:7px; right:22px; }
.audio-editor-topbar { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:24px; margin-bottom:28px; }.audio-editor-topbar > .quiet-button { justify-self:start; }.audio-editor-top-actions { display:flex; align-items:end; justify-self:end; gap:10px; }.audio-editor-top-actions > .outline-button { border-color:transparent; background:var(--traxion-accent); color:var(--traxion-accent-text); }.audio-editor-top-actions .audio-editor-file-actions { margin-left:0; }.audio-editor-top-fields { width:min(100%,1280px); display:grid; grid-template-columns:minmax(180px,1.15fr) minmax(160px,1fr) minmax(82px,.35fr) auto minmax(202px,.8fr); align-items:end; justify-self:center; gap:14px; }.audio-editor-top-fields label { display:grid; gap:4px; min-width:0; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.audio-editor-top-fields input { width:100%; min-height:38px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 13px/1 inherit; letter-spacing:0; text-transform:none; }.audio-editor-top-fields .audio-original-artist-control { min-width:160px !important; }.audio-editor-top-fields .audio-key-control { min-width:82px !important; }.audio-editor-top-fields .audio-tempo-control { min-width:174px !important; }.audio-editor-top-fields .audio-tempo-control > div { display:flex; align-items:center; gap:8px; }.audio-editor-top-fields .audio-tempo-control input { width:112px; }.audio-editor-top-fields .audio-tempo-control strong { color:var(--traxion-text); font-size:12px; letter-spacing:0; white-space:nowrap; }.audio-editor-top-fields .audio-song-click-accent-control { min-width:202px !important; }.audio-editor-top-fields .audio-song-click-accent-control .settings-segmented { width:100%; min-height:38px; }.audio-editor-top-fields .audio-song-click-accent-control .settings-segmented button { flex:1; min-height:38px; padding:0 8px; font-size:11px; letter-spacing:0; text-transform:none; }.audio-editor-top-title { min-width:0; width:100%; justify-self:center; }.audio-editor-top-title input { width:100%; border:0; padding:0; background:transparent; color:var(--traxion-text); font:800 29px/1.15 inherit; letter-spacing:-.055em; text-align:center; }.audio-editor-top-title input:focus { outline:0; }.audio-editor-top-title input::selection { background:rgba(var(--traxion-accent-rgb),.35); }
.audio-clip-dragging { opacity:.26; }.audio-clip-ghost { position:fixed !important; z-index:1000; margin:0; pointer-events:none; opacity:.92; box-shadow:0 10px 24px rgba(0,0,0,.4),0 0 0 2px rgba(var(--traxion-accent-rgb),.6); transform:none; cursor:grabbing; }.audio-lane-drop-target .audio-lane-track { background:rgba(var(--traxion-accent-rgb),.11); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.7); }
.audio-zoom-control > div { display:flex; align-items:center; gap:6px; }.audio-zoom-control input { min-width:118px; }.audio-zoom-button { width:28px; min-height:28px; padding:0; font-size:18px; line-height:1; }.audio-timeline-end { right:auto; width:28px; }.audio-timeline-end::before { left:1px; width:10px; height:28px; }.audio-timeline-end span { right:22px; }
.audio-timeline { width:100%; }.audio-timeline-content { min-width:100%; }

/* Audio editor: one shared DAW-style time axis. These classes deliberately do
   not reuse the legacy audio-timeline layout so ruler, lanes and clips cannot
   acquire different horizontal origins. */
.audio-editor { min-width:0; }
.audio-grid-timeline { width:100%; min-width:0; max-width:100%; overflow:auto; border:1px solid var(--traxion-line); border-radius:12px; background:var(--traxion-panel); }
.audio-grid-timeline-wrap { --audio-label-width:286px; display:grid; gap:7px; min-width:0; }
.audio-grid-timeline { -ms-overflow-style:none; scrollbar-width:none; }
.audio-grid-timeline::-webkit-scrollbar { width:0; height:0; display:none; }
.audio-grid-horizontal-scroll { display:block; min-width:0; padding:0 8px 0 calc(var(--audio-label-width) + 8px); touch-action:none; user-select:none; }
.audio-grid-overview-track { position:relative; height:15px; overflow:hidden; border:1px solid color-mix(in srgb,var(--traxion-line) 86%,transparent); border-radius:999px; background:color-mix(in srgb,var(--traxion-card-soft) 78%,black); box-shadow:inset 0 1px 2px rgba(0,0,0,.34); }
.audio-grid-overview-window { --audio-overview-left:0%; --audio-overview-width:100%; position:absolute; top:2px; bottom:2px; left:var(--audio-overview-left); width:var(--audio-overview-width); min-width:12px; border:1px solid color-mix(in srgb,var(--traxion-accent) 82%,white); border-radius:999px; background:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.86),rgba(var(--traxion-accent-rgb),.54)); box-shadow:0 0 9px rgba(var(--traxion-accent-rgb),.32); cursor:grab; touch-action:none; }
.audio-grid-overview-window:focus-visible { outline:2px solid var(--traxion-accent-soft); outline-offset:3px; }
.audio-grid-overview-window:active { cursor:grabbing; }
.audio-grid-overview-handle { position:absolute; z-index:1; top:50%; width:12px; height:20px; border:1px solid color-mix(in srgb,var(--traxion-accent-soft) 70%,white); border-radius:7px; background:var(--traxion-panel); box-shadow:0 1px 5px rgba(0,0,0,.48); transform:translateY(-50%); cursor:ew-resize; touch-action:none; }
.audio-grid-overview-handle::after { content:""; position:absolute; top:5px; bottom:5px; left:5px; width:1px; background:var(--traxion-muted); box-shadow:2px 0 0 var(--traxion-muted); }
.audio-grid-overview-handle--start { left:-1px; }
.audio-grid-overview-handle--end { right:-1px; }
.audio-grid-horizontal-scroll.is-disabled { opacity:.38; pointer-events:none; }
.audio-grid-content { --audio-label-width:286px; --timeline-px:720px; --beat-px:44px; width:max-content; min-width:calc(var(--audio-label-width) + var(--timeline-px)); }
.audio-grid-ruler-row,.audio-grid-lane { display:grid; grid-template-columns:var(--audio-label-width) var(--timeline-px); width:calc(var(--audio-label-width) + var(--timeline-px)); }
.audio-grid-ruler-row { min-height:64px; border-bottom:1px solid var(--traxion-line); }
.audio-grid-ruler-meta { display:grid; align-content:end; padding:0 16px 10px; border-right:1px solid var(--traxion-line); color:var(--traxion-accent-soft); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.audio-grid-ruler-meta { align-content:center; gap:7px; padding-top:8px; padding-bottom:8px; }
.audio-grid-ruler-meta > span { color:var(--traxion-accent-soft); }
.audio-grid-click-gain { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:7px; color:var(--traxion-muted); font-size:8px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.audio-grid-click-gain input { width:100%; min-width:0; accent-color:var(--traxion-accent); }
.audio-grid-click-gain output { min-width:36px; color:var(--traxion-accent-soft); font-size:9px; letter-spacing:0; text-align:right; text-transform:none; }
.audio-grid-ruler { position:relative; width:var(--timeline-px); min-width:var(--timeline-px); overflow:visible; background-color:rgba(var(--traxion-accent-rgb),.035); background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.52) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; background-position:0 0; }
.audio-grid-ruler > span { position:absolute; top:9px; color:var(--traxion-muted); font-size:10px; font-weight:800; transform:translateX(5px); }
.audio-grid-song-end { position:absolute; z-index:8; top:0; left:auto; right:-26px; width:27px; height:64px; border:0; border-left:2px solid var(--traxion-accent); padding:0; background:transparent; color:var(--traxion-accent-soft); cursor:ew-resize; touch-action:none; }
.audio-grid-song-end::before { content:""; position:absolute; top:15px; left:1px; width:10px; height:28px; border-radius:5px; background:var(--traxion-accent); box-shadow:0 0 14px rgba(var(--traxion-accent-rgb),.62); }
.audio-grid-song-end span { position:absolute; top:7px; right:21px; width:max-content; color:var(--traxion-accent-soft); font-size:9px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.audio-grid-lanes { display:grid; }
.audio-grid-lane { min-height:134px; border-bottom:1px solid var(--traxion-line); }
.audio-grid-lane:last-child { border-bottom:0; }
.audio-grid-lane-meta { position:relative; min-width:0; display:grid; align-content:center; gap:8px; border-right:1px solid var(--traxion-line); padding:13px 14px; background:var(--traxion-panel); }
.audio-grid-lane-title { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:3px 8px; align-items:start; }
.audio-grid-lane-title strong,.audio-grid-lane-title span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.audio-grid-lane-title strong { color:var(--traxion-text); font-size:14px; }
.audio-grid-lane-title span { grid-column:1 / -1; color:var(--traxion-muted); font-size:10px; }
.audio-grid-lane-actions { position:absolute; top:13px; right:14px; display:flex; gap:5px; }
.audio-grid-lane-actions button { display:grid; width:30px; height:30px; place-items:center; border:1px solid var(--traxion-line); border-radius:7px; padding:0; background:rgba(var(--traxion-accent-rgb),.1); color:var(--traxion-accent-soft); font:800 20px/1 inherit; cursor:pointer; }
.audio-grid-lane-actions .delete-track { color:var(--traxion-muted); font-size:16px; }
.audio-grid-lane-actions button:hover { border-color:var(--traxion-accent); background:rgba(var(--traxion-accent-rgb),.2); color:var(--traxion-text); }
.audio-grid-track-gain { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:8px; min-width:0; border-top:1px solid var(--traxion-line); padding-top:8px; color:var(--traxion-muted); font-size:8px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.audio-grid-track-gain input { width:100%; accent-color:var(--traxion-accent); }.audio-grid-track-gain output { min-width:38px; color:var(--traxion-accent-soft); font-size:9px; letter-spacing:0; text-align:right; text-transform:none; }
.audio-grid-gain { grid-column:1 / -1; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; }
.audio-grid-gain input { width:100%; accent-color:var(--traxion-accent); }
.audio-grid-gain output { min-width:38px; color:var(--traxion-accent-soft); font-size:9px; letter-spacing:0; text-align:right; text-transform:none; }
.audio-grid-lane-track { position:relative; min-width:var(--timeline-px); min-height:134px; overflow:visible; background-color:rgba(var(--traxion-accent-rgb),.035); background-image:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.42) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.13) 1px,transparent 1px); background-size:calc(var(--beat-px) * 4) 100%,var(--beat-px) 100%; background-position:0 0; }
.audio-grid-lane-track::before { content:""; position:absolute; inset:50% 0 auto; border-top:1px dashed rgba(var(--traxion-accent-rgb),.34); pointer-events:none; }
.audio-grid-clip { position:absolute; box-sizing:border-box; top:13px; bottom:13px; left:var(--clip-left,0px); width:var(--clip-width,56px); min-width:var(--clip-min-width,56px); overflow:hidden; border:1px solid color-mix(in srgb,var(--clip-color,var(--traxion-accent)) 75%,white); border-radius:7px; padding:0; background:linear-gradient(105deg,color-mix(in srgb,var(--clip-color,var(--traxion-accent)) 34%,transparent),rgba(21,115,255,.27)); color:var(--traxion-text); cursor:grab; touch-action:none; user-select:none; -webkit-user-drag:none; }
.audio-grid-content[data-audio-overview="true"] .audio-grid-clip,.audio-grid-clip.is-proportional { border-radius:1px; }.audio-grid-content[data-audio-overview="true"] .audio-grid-clip > .audio-grid-clip-trim,.audio-grid-content[data-audio-overview="true"] .audio-grid-clip > span:not(.audio-grid-clip-trim),.audio-grid-clip.is-proportional > .audio-grid-clip-trim,.audio-grid-clip.is-proportional > span:not(.audio-grid-clip-trim) { display:none; }
.audio-grid-clip.is-selected { border-color:#fff; box-shadow:0 0 0 2px var(--traxion-accent),0 0 20px rgba(var(--traxion-accent-rgb),.5); }
.audio-grid-selection-marquee { position:absolute; z-index:10; top:7px; bottom:7px; border:1px solid rgba(255,255,255,.82); border-radius:4px; background:rgba(var(--traxion-accent-rgb),.18); pointer-events:none; }
.audio-editor-clip-actions { display:flex; align-items:end; gap:5px; min-height:36px; }.audio-editor-clip-actions .quiet-button { min-height:32px; margin-left:0; }.audio-editor-clip-actions .quiet-button:disabled { opacity:.42; cursor:not-allowed; }
.audio-editor-file-actions { display:flex; align-items:end; gap:10px; margin-left:auto; min-height:36px; }.audio-editor-file-actions .quiet-button,.audio-editor-preview .quiet-button { margin-left:0; }
.audio-grid-clip > .audio-grid-clip-trim { position:absolute; z-index:3; top:0; bottom:0; left:0; width:16px; border:0; padding:0; background:linear-gradient(90deg,rgba(255,255,255,.18),transparent); cursor:ew-resize; touch-action:none; opacity:.78; }.audio-grid-clip > .audio-grid-clip-trim::after { content:""; position:absolute; top:50%; width:3px; height:32px; border-radius:3px; background:rgba(255,255,255,.86); box-shadow:0 0 10px rgba(var(--traxion-accent-rgb),.72); transform:translateY(-50%); }.audio-grid-clip > .audio-grid-clip-trim--start::after { left:4px; }.audio-grid-clip > .audio-grid-clip-trim--end { right:0; left:auto; background:linear-gradient(270deg,rgba(255,255,255,.18),transparent); }.audio-grid-clip > .audio-grid-clip-trim--end::after { right:4px; }.audio-grid-clip:hover > .audio-grid-clip-trim,.audio-grid-clip:focus-visible > .audio-grid-clip-trim,.audio-grid-clip.is-trimming > .audio-grid-clip-trim { opacity:1; background-color:rgba(var(--traxion-accent-rgb),.32); }
.audio-grid-clip:active { cursor:grabbing; }
.audio-grid-clip canvas { position:absolute; inset:0; width:100%; height:100%; opacity:.9; }
.audio-grid-clip > span:not(.audio-grid-clip-trim) { position:absolute; z-index:1; right:20px; bottom:5px; left:20px; overflow:hidden; color:#fff; font-size:9px; font-weight:800; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
.audio-grid-new-track { display:flex; align-items:center; gap:10px; min-height:58px; padding:10px 16px; color:var(--traxion-muted); font-size:10px; }
.audio-grid-new-track .quiet-button { min-height:32px; margin:0; }
.audio-grid-clip-dragging { opacity:.22; }
.audio-grid-clip-ghost { position:fixed !important; right:auto !important; bottom:auto !important; z-index:1000; min-width:0; max-width:none; margin:0; pointer-events:none; opacity:.94; transform:none !important; box-shadow:0 10px 24px rgba(0,0,0,.42),0 0 0 2px rgba(var(--traxion-accent-rgb),.6); }
.audio-grid-drop-target .audio-grid-lane-track { background-color:rgba(var(--traxion-accent-rgb),.12); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.7); }
.audio-cue-menu-wrap { position:relative; z-index:20; }.audio-cue-menu-wrap .quiet-button { margin-left:0; }
.audio-cue-menu { position:absolute; top:calc(100% + 7px); left:0; right:auto; display:grid; gap:10px; width:290px; border:1px solid var(--traxion-line); border-radius:9px; padding:11px; background:var(--traxion-card); box-shadow:0 16px 38px rgba(0,0,0,.4); }.audio-cue-menu > div { display:grid; gap:7px; }.audio-cue-menu > div > span { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }.audio-cue-menu > div > small { margin-top:-4px; color:var(--traxion-muted); font-size:9px; }.audio-cue-menu button { min-height:30px; border:1px solid var(--traxion-line); border-radius:6px; padding:0 8px; background:var(--traxion-card-soft); color:var(--traxion-text); font:750 10px/1 inherit; cursor:grab; text-align:left; touch-action:none; }.audio-cue-menu button:active { cursor:grabbing; }.audio-cue-menu button:hover { border-color:var(--traxion-accent); color:var(--traxion-accent-soft); }.audio-cue-menu-buttons { display:flex; flex-wrap:wrap; gap:5px; }.audio-cue-menu-buttons button { width:auto; }.audio-cue-drag-ghost { position:fixed; z-index:1001; max-width:260px; overflow:hidden; border:1px solid var(--traxion-accent); border-radius:6px; padding:7px 10px; background:var(--traxion-card); color:var(--traxion-accent-soft); box-shadow:0 10px 24px rgba(0,0,0,.42),0 0 0 2px rgba(var(--traxion-accent-rgb),.24); font-size:11px; font-weight:800; pointer-events:none; text-overflow:ellipsis; white-space:nowrap; }.audio-grid-lane-track.is-cue-drop-target,.audio-grid-ruler.is-cue-drop-target { background-color:rgba(var(--traxion-accent-rgb),.16); box-shadow:inset 0 0 0 2px rgba(var(--traxion-accent-rgb),.74); }
.audio-grid-timeline-cue { position:absolute; z-index:7; top:30px; left:var(--cue-left,0px); display:flex; align-items:center; gap:4px; max-width:150px; min-height:24px; overflow:hidden; border:1px solid color-mix(in srgb,var(--traxion-accent) 62%,white); border-radius:5px; padding:0 3px 0 7px; background:rgba(var(--traxion-accent-rgb),.18); color:var(--traxion-accent-soft); cursor:grab; font:800 9px/1 inherit; letter-spacing:.04em; white-space:nowrap; touch-action:none; }.audio-grid-timeline-cue > span { overflow:hidden; text-overflow:ellipsis; }.audio-grid-timeline-cue:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:2px; }.audio-grid-timeline-cue__delete { flex:0 0 auto; display:grid; width:18px; height:18px; place-items:center; border:0; border-radius:4px; padding:0; background:transparent; color:var(--traxion-accent-soft); cursor:pointer; font:900 15px/1 sans-serif; }.audio-grid-timeline-cue__delete:hover,.audio-grid-timeline-cue__delete:focus-visible { background:rgba(255,255,255,.16); color:#fff; }.audio-grid-timeline-cue.is-dragging { cursor:grabbing; opacity:.72; box-shadow:0 0 0 2px rgba(var(--traxion-accent-rgb),.25); }

/* The audio editor has a single, explicit two-column coordinate system:
   fixed lane controls at left and one shared, horizontally scrolling ruler at
   right. Explicit grid placement prevents older generic lane styles from
   ever placing a clip in the controls column. */
.audio-grid-timeline { isolation:isolate; overscroll-behavior-x:contain; }
.audio-grid-content { display:block; width:calc(var(--audio-label-width) + var(--timeline-px)); min-width:calc(var(--audio-label-width) + var(--timeline-px)); }
.audio-grid-content { position:relative; }
.audio-grid-playhead { position:absolute; z-index:12; top:0; bottom:0; left:calc(var(--audio-label-width) + var(--playhead-left,0px)); width:18px; background:transparent; cursor:ew-resize; touch-action:none; transform:translateX(-9px); opacity:.76; }.audio-grid-playhead::after { content:""; position:absolute; top:0; bottom:0; left:50%; width:2px; background:#ffb2ae; box-shadow:0 0 0 1px rgba(47,10,12,.48),0 0 14px rgba(255,117,108,.88); transform:translateX(-1px); }.audio-grid-playhead::before { content:""; position:absolute; top:0; left:50%; width:12px; height:8px; border-radius:0 0 5px 5px; background:#ffb2ae; box-shadow:0 0 12px rgba(255,117,108,.75); transform:translateX(-50%); }.audio-grid-playhead:hover,.audio-grid-playhead:focus-visible,.audio-grid-playhead.is-active { opacity:1; }.audio-grid-playhead:focus-visible { outline:2px solid #ffb2ae; outline-offset:2px; }
.audio-editor-preview { position:relative; z-index:30; isolation:isolate; display:flex; align-items:end; gap:5px; min-height:36px; }.audio-editor-preview button { position:relative; z-index:1; min-height:32px; pointer-events:auto; touch-action:manipulation; white-space:nowrap; }.audio-editor-preview .outline-button { border-color:var(--traxion-accent); background:rgba(var(--traxion-accent-rgb),.17); color:var(--traxion-accent-soft); }.audio-editor-preview span { min-width:76px; padding-bottom:8px; color:var(--traxion-muted); font-size:9px; font-weight:800; letter-spacing:.04em; white-space:nowrap; }
.audio-grid-ruler-row,.audio-grid-lane { grid-template-columns:var(--audio-label-width) var(--timeline-px); width:calc(var(--audio-label-width) + var(--timeline-px)); }
.audio-grid-ruler-meta,.audio-grid-lane-meta { position:sticky; z-index:20; left:0; grid-column:1; min-width:0; box-shadow:10px 0 14px rgba(0,0,0,.14); }
.audio-grid-ruler-meta { background:var(--traxion-panel); }
.audio-grid-ruler { grid-column:2; width:var(--timeline-px); min-width:var(--timeline-px); }
.audio-grid-lane-track { grid-column:2; grid-row:1; min-width:var(--timeline-px); width:var(--timeline-px); box-sizing:border-box; }
@media (max-width:760px) { .player-setlist .setlist-row-select { grid-template-columns:37px 34px minmax(0,1fr) auto; gap:8px; padding:8px 6px 8px 10px; }.player-setlist .setlist-play-spacer { width:34px; height:34px; }.player-setlist .setlist-song-play { left:55px; width:34px; min-height:34px; font-size:12px; }.player-setlist .setlist-song-menu { min-height:64px; }.song-editor-top,.song-audio-map-heading { align-items:flex-start; flex-direction:column; }.song-editor-actions,.song-audio-map-heading > div:last-child { justify-content:flex-start; }.song-editor-details,.song-stem-row { grid-template-columns:1fr; }.song-stem-row { gap:10px; }.audio-editor-toolbar .quiet-button { margin-left:0; }.audio-lane { grid-template-columns:1fr; gap:7px; }.audio-lane header { grid-template-columns:minmax(0,1fr) auto; }.audio-lane-track { min-height:58px; }.audio-ruler { margin-left:0; }.audio-tempo-grid { left:0; }.audio-timeline-end { left:var(--grid-width); }.audio-timeline-content { min-width:760px; }.audio-editor-topbar { grid-template-columns:auto minmax(0,1fr) auto; align-items:start; gap:8px; margin-bottom:20px; }.audio-editor-topbar .quiet-button,.audio-editor-topbar .outline-button { padding:8px 9px; font-size:11px; }.audio-editor-top-fields { grid-column:1 / -1; grid-row:2; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; gap:8px; }.audio-editor-top-actions { grid-column:1 / -1; grid-row:3; flex-wrap:wrap; justify-content:flex-end; width:100%; }.audio-editor-top-fields .audio-original-artist-control,.audio-editor-top-fields .audio-tempo-control { min-width:0 !important; }.audio-editor-top-fields .audio-tempo-control input { width:76px; }.audio-editor-top-fields .audio-tempo-control strong { display:none; }.audio-editor-top-title input { font-size:18px; } }

/* Library item actions: editing and destructive actions belong in the same explicit menu. */
.tracks-view > .setlist { overflow:visible; }
.tracks-view > .setlist .setlist-row { position:relative; }
.tracks-view > .setlist .setlist-row:has(.library-row-menu.is-open) { z-index:20; }
.library-row-menu { position:relative; min-width:42px; min-height:72px; display:grid; place-items:center; }
.library-row-menu.is-open { z-index:20; }
.library-row-menu .setlist-song-menu { width:100%; min-height:72px; border:0; background:transparent; cursor:pointer; }
.library-row-menu .more-menu { z-index:21; top:calc(100% - 5px); right:0; }
.library-item-menu { min-width:142px; }
.more-menu button.danger { color:#ff9c91; }
.more-menu button.danger:hover { background:rgba(255,112,100,.12); color:#ffc1bb; }
.library-song-list .library-song-row { min-height:40px; grid-template-columns:minmax(0,1fr) 42px; gap:0; padding:0; }
.library-song-open { width:100%; min-width:0; min-height:40px; display:grid; grid-template-columns:64px minmax(0,1fr) minmax(130px,auto) 64px; align-items:center; gap:14px; border:0; border-right:1px solid var(--traxion-line); padding:4px 15px; background:transparent; color:var(--traxion-text); font:inherit; text-align:left; cursor:pointer; }
.library-song-open:hover { background:rgba(var(--traxion-accent-rgb),.055); }
.library-song-open:focus-visible { position:relative; z-index:1; outline:2px solid var(--traxion-accent); outline-offset:-2px; }
.library-song-list .setlist-song strong { font-size:14px; line-height:1.15; }
.library-song-list .setlist-song span { margin-top:1px; font-size:10px; line-height:1.1; }
.library-song-list .setlist-stems em,.library-song-list .setlist-duration { font-size:10px; }
.library-song-list .library-row-menu,.library-song-list .library-row-menu .setlist-song-menu { min-height:40px; }
.library-song-open .setlist-song { min-width:0; }
.setlist-collection-row { grid-template-columns:minmax(0,1fr) 42px; gap:0; padding:0; }
.setlist-collection-select { width:100%; min-width:0; min-height:72px; display:grid; grid-template-columns:64px minmax(0,1fr) auto; align-items:center; gap:14px; border:0; border-right:1px solid var(--traxion-line); padding:10px 15px; background:transparent; color:var(--traxion-text); text-align:left; font:inherit; cursor:pointer; }
.setlist-collection-select:hover { background:rgba(var(--traxion-accent-rgb),.055); }
.setlist-collection-row.selected .setlist-collection-select { background:rgba(var(--traxion-accent-rgb),.08); }
@media (max-width:760px) { .library-row-menu { min-width:38px; min-height:64px; }.library-row-menu .setlist-more { display:grid; place-items:center; }.library-row-menu .setlist-song-menu { min-height:64px; }.library-song-list .library-song-row { grid-template-columns:minmax(0,1fr) 38px; }.library-song-open { grid-template-columns:37px minmax(0,1fr) auto; gap:9px; padding:4px 10px; }.setlist-collection-row { grid-template-columns:minmax(0,1fr) 38px; }.setlist-collection-select { min-height:64px; grid-template-columns:37px minmax(0,1fr) auto; gap:9px; padding:8px 10px; } }
.setlist-collection .setlist-collection-row { min-height:40px; }
.setlist-collection .setlist-collection-select { min-height:40px; padding:4px 15px; }
.setlist-collection .setlist-song strong { font-size:14px; line-height:1.15; }
.setlist-collection .setlist-song span { margin-top:1px; font-size:10px; line-height:1.1; }
.setlist-collection .setlist-duration { font-size:10px; }
.setlist-collection .library-row-menu,.setlist-collection .library-row-menu .setlist-song-menu { min-height:40px; }
@media (max-width:760px) { .setlist-collection .setlist-collection-select { min-height:40px; padding:4px 10px; }.setlist-collection .library-row-menu,.setlist-collection .library-row-menu .setlist-song-menu { min-height:40px; } }
.outputs-device-select select { min-height:43px; }.outputs-intro { display:grid; justify-items:start; gap:13px; }.outputs-intro p { margin:0; }.outputs-configuration { display:grid; justify-items:start; gap:10px; }.outputs-device-row { display:flex; align-items:end; flex-wrap:wrap; gap:8px; }.outputs-add-track { justify-self:start; }.outputs-add-track:disabled { cursor:default; opacity:.42; }

/* Songbook mode ----------------------------------------------------------
   The page itself stays locked between the global header and transport.
   Only the song list and the document/editor surfaces are scrollable. */
.app-header { grid-template-columns:minmax(120px,1fr) minmax(490px,720px) minmax(52px,1fr); }
.app-header-center { min-width:0; width:100%; display:grid; grid-template-columns:minmax(190px,280px) auto auto auto; align-items:center; justify-content:center; gap:10px; }
.app-header-center .app-header-workspace { min-width:0; }
.mode-switcher { min-width:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:center; overflow:hidden; border:1px solid var(--traxion-line); border-radius:9px; padding:3px; background:var(--traxion-card-soft); box-shadow:inset 0 1px 0 rgba(255,255,255,.025); }
.mode-switcher__button { min-width:78px; min-height:34px; border:0; border-radius:6px; padding:0 11px; background:transparent; color:var(--traxion-muted); font-size:11px; font-weight:850; letter-spacing:-.01em; white-space:nowrap; }
.mode-switcher__button:hover { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.07); }
.mode-switcher__button.active,.mode-switcher__button.is-active,.mode-switcher__button[aria-pressed="true"] { color:var(--traxion-text); background:rgba(var(--traxion-accent-rgb),.15); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.22); }
.mode-switcher__button:focus-visible { position:relative; z-index:1; outline:2px solid var(--traxion-accent); outline-offset:1px; }
.header-click-toggle { min-width:58px; min-height:34px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.01em; }.header-click-toggle:hover { color:var(--traxion-text); border-color:rgba(var(--traxion-accent-rgb),.45); background:rgba(var(--traxion-accent-rgb),.08); }.header-click-toggle.is-active { border-color:rgba(var(--traxion-accent-rgb),.55); background:rgba(var(--traxion-accent-rgb),.18); color:var(--traxion-accent-soft); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.14); }.header-click-toggle.is-beat-pulse { border-color:var(--traxion-text); background:var(--traxion-accent); color:var(--traxion-bg); box-shadow:0 0 0 2px rgba(var(--traxion-accent-rgb),.24),0 0 20px rgba(var(--traxion-accent-rgb),.48); }.header-click-toggle.is-downbeat-pulse { box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.34),0 0 28px rgba(var(--traxion-accent-rgb),.7); }.header-click-toggle:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }
.header-mixer-toggle { min-width:58px; min-height:34px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.01em; }.header-mixer-toggle:hover { color:var(--traxion-text); border-color:rgba(var(--traxion-accent-rgb),.45); background:rgba(var(--traxion-accent-rgb),.08); }.header-mixer-toggle.is-active { border-color:rgba(var(--traxion-accent-rgb),.55); background:rgba(var(--traxion-accent-rgb),.18); color:var(--traxion-accent-soft); box-shadow:inset 0 0 0 1px rgba(var(--traxion-accent-rgb),.14); }.header-mixer-toggle:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }

.main--songbook,.main:has(.songbook-view) { display:flex; flex-direction:column; overflow:hidden; scrollbar-gutter:auto; }
.songbook-view { min-width:0; min-height:220px; width:100%; flex:1 1 auto; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:14px; overflow:hidden; }
.songbook-view--compact-list { grid-template-columns:minmax(190px,.5fr) minmax(0,2.5fr); }
.songbook-view--list-hidden { grid-template-columns:minmax(0,1fr); }
.songbook-view--list-hidden .songbook-list { display:none; }
.songbook-list,.songbook-sheet { min-width:0; min-height:0; overflow:hidden; border:1px solid var(--traxion-line); border-radius:14px; background:color-mix(in srgb,var(--traxion-panel) 96%,var(--traxion-bg)); box-shadow:0 14px 38px rgba(0,0,0,.12); }
.songbook-list { display:flex; flex-direction:column; }
.songbook-list__header { flex:0 0 auto; display:grid; gap:10px; border-bottom:1px solid var(--traxion-line); padding:15px; background:var(--traxion-card-soft); }
.songbook-list__collection-tools { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) 38px; align-items:end; gap:8px; }
.songbook-list__collection-tools .setlist-picker { min-width:0; }
.songbook-list__collection-tools .songbook-search { min-width:0; }
.songbook-list-compact-toggle { min-width:38px; min-height:39px; display:grid; place-items:center; border:1px solid var(--traxion-line); border-radius:8px; padding:0; background:var(--traxion-panel); color:var(--traxion-muted); font-size:18px; font-weight:800; line-height:1; }
.songbook-list-compact-toggle:hover { border-color:rgba(var(--traxion-accent-rgb),.62); background:rgba(var(--traxion-accent-rgb),.1); color:var(--traxion-text); }
.songbook-list-compact-toggle.is-active { border-color:rgba(var(--traxion-accent-rgb),.58); background:rgba(var(--traxion-accent-rgb),.17); color:var(--traxion-accent-soft); }
.songbook-list-compact-toggle:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }
.songbook-list__header h1,.songbook-list__header h2 { margin:0; color:var(--traxion-text); font-size:18px; letter-spacing:-.035em; }
.songbook-list__header p { margin:0; color:var(--traxion-muted); font-size:10px; line-height:1.45; }
.songbook-search { width:100%; min-height:39px; display:flex; align-items:center; border:1px solid var(--traxion-line); border-radius:8px; outline:0; padding:0 12px; background:var(--traxion-panel); color:var(--traxion-text); font:700 12px/1 inherit; }
.songbook-search input { width:100%; min-height:39px; border:0; outline:0; padding:0; background:transparent; color:inherit; font:inherit; }
.songbook-search::placeholder,.songbook-search input::placeholder { color:var(--traxion-muted); opacity:.78; }
.songbook-search:focus,.songbook-search:focus-within { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.1); }
.songbook-song-list { min-height:0; flex:1; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; padding:7px; }
.songbook-song-row { --songbook-row-progress:var(--playback-progress,0%); position:relative; isolation:isolate; width:100%; min-height:64px; display:grid; grid-template-columns:minmax(0,1fr) 38px; align-items:stretch; overflow:hidden; border:1px solid transparent; border-radius:9px; background:transparent; color:var(--traxion-text); text-align:left; }
.songbook-song-row[hidden] { display:none !important; }
.songbook-song-row + .songbook-song-row { margin-top:3px; }
.songbook-song-row::before { content:""; position:absolute; z-index:-1; inset:0; background:transparent; pointer-events:none; }
.songbook-song-row:hover { border-color:var(--traxion-line); background:rgba(var(--traxion-accent-rgb),.055); }
.songbook-song-row.is-selected { border-color:rgba(var(--traxion-accent-rgb),.32); background:rgba(var(--traxion-accent-rgb),.1); box-shadow:inset 3px 0 0 var(--traxion-accent); }
.songbook-song-row.has-playback-progress::before { background:linear-gradient(90deg,rgba(var(--traxion-accent-rgb),.23) 0 var(--songbook-row-progress),rgba(var(--traxion-accent-rgb),.035) var(--songbook-row-progress) 100%); transition:background .2s linear; }
.songbook-song-row.is-playing { grid-template-columns:minmax(0,1fr) 76px; border-color:rgba(var(--traxion-accent-rgb),.48); box-shadow:inset 3px 0 0 var(--traxion-accent); }
.songbook-song-select { min-width:0; display:grid; grid-template-columns:36px minmax(0,1fr); align-items:center; gap:8px; border:0; padding:9px 10px; background:transparent; color:inherit; text-align:left; }.songbook-song-play { border:0; border-left:1px solid var(--traxion-line); background:transparent; color:var(--traxion-accent-soft); font-size:14px; font-weight:900; }.songbook-song-play:hover { background:rgba(var(--traxion-accent-rgb),.14); color:var(--traxion-text); }.songbook-song-select:focus-visible,.songbook-song-play:focus-visible { position:relative; z-index:1; outline:2px solid var(--traxion-accent); outline-offset:-2px; }
.songbook-song-transport { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border-left:1px solid var(--traxion-line); }
.songbook-song-transport__button { min-width:0; border:0; background:transparent; color:var(--traxion-accent-soft); font-size:13px; font-weight:900; cursor:pointer; }
.songbook-song-transport__button + .songbook-song-transport__button { border-left:1px solid var(--traxion-line); }
.songbook-song-transport__button:hover { background:rgba(var(--traxion-accent-rgb),.14); color:var(--traxion-text); }
.songbook-song-transport__button--stop { color:#ffaaa6; }
.songbook-song-select:focus-visible,.songbook-song-play:focus-visible,.songbook-song-transport__button:focus-visible { position:relative; z-index:1; outline:2px solid var(--traxion-accent); outline-offset:-2px; }
.songbook-song-index { align-self:start; padding-top:2px; color:var(--traxion-muted); font-size:10px; font-weight:900; font-variant-numeric:tabular-nums; letter-spacing:.07em; }
.songbook-song-copy { min-width:0; }.songbook-song-title-line { min-width:0; display:flex; align-items:center; gap:6px; }.songbook-song-title { min-width:0; flex:1 1 auto; overflow:hidden; color:var(--traxion-text); font-size:13px; font-weight:800; letter-spacing:.025em; text-overflow:ellipsis; text-transform:uppercase; white-space:nowrap; }.songbook-encore-label { flex:0 0 auto; margin:0; padding:2px 4px; border:1px solid rgba(var(--traxion-accent-rgb),.58); border-radius:3px; color:var(--traxion-accent-soft); font-size:7px; font-weight:900; letter-spacing:.1em; line-height:1; text-transform:uppercase; }.songbook-song-title__artist { min-width:0; max-width:11ch; overflow:hidden; color:var(--traxion-muted); font-size:9px; font-weight:700; letter-spacing:0; text-overflow:ellipsis; text-transform:none; white-space:nowrap; }
.songbook-song-meta { display:block; overflow:hidden; margin-top:4px; color:var(--traxion-muted); font-size:9px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
.songbook-song-row--compact,.songbook-song-row--compact.is-playing { min-height:38px; grid-template-columns:28px 28px minmax(0,1fr); border-radius:5px; }
.songbook-song-row--compact > .songbook-song-index { align-self:center; padding:0 0 0 8px; font-size:9px; }
.songbook-song-play--compact { min-width:28px; border-left:0; border-right:0; border-radius:4px; font-size:11px; }
.songbook-song-select--compact { display:flex; align-items:center; padding:4px 8px 4px 2px; }
.songbook-song-select--compact .songbook-song-copy { width:100%; }

.songbook-sheet { display:flex; flex-direction:column; }
.songbook-sheet__toolbar { flex:0 0 auto; min-width:0; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; border-bottom:1px solid var(--traxion-line); padding:12px 20px 10px; background:var(--traxion-card-soft); }
.songbook-sheet__list-toggle { flex:0 0 auto; width:35px; min-height:35px; display:grid; place-items:center; border:1px solid var(--traxion-line); border-radius:7px; padding:0; background:var(--traxion-panel); color:var(--traxion-muted); }
.songbook-sheet__list-toggle svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-width:2; }
.songbook-sheet__list-toggle:hover,.songbook-sheet__list-toggle.is-active { border-color:rgba(var(--traxion-accent-rgb),.58); background:rgba(var(--traxion-accent-rgb),.15); color:var(--traxion-accent-soft); }
.songbook-sheet__list-toggle:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }
.songbook-sheet__identity { min-width:0; flex:1 1 auto; }
.songbook-sheet__actions { min-width:0; flex:1 1 540px; display:grid; justify-items:end; gap:8px; }
.songbook-sheet__title-line { min-width:0; display:flex; align-items:center; gap:10px; }.songbook-sheet__title { min-width:0; overflow:hidden; margin:0; color:var(--traxion-text); font-size:clamp(22px,2.25vw,34px); line-height:1.03; letter-spacing:.025em; text-overflow:ellipsis; text-transform:uppercase; white-space:nowrap; }.songbook-sheet__key { flex:0 0 auto; border:1px solid rgba(var(--traxion-accent-rgb),.48); border-radius:6px; padding:5px 8px; color:var(--traxion-accent-soft); font-size:12px; font-weight:900; line-height:1; letter-spacing:.04em; }
.songbook-sheet__artist { overflow:hidden; margin:3px 0 0; color:var(--traxion-muted); font-size:12px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.songbook-edit-song-fields { width:min(100%,740px); display:grid; grid-template-columns:minmax(220px,1.15fr) minmax(180px,.85fr) minmax(74px,.3fr); gap:10px; }.songbook-edit-song-fields label { min-width:0; display:grid; gap:5px; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.075em; text-transform:uppercase; }.songbook-edit-song-fields input { width:100%; min-height:38px; border:1px solid var(--traxion-line); border-radius:7px; outline:0; padding:0 10px; background:var(--traxion-panel); color:var(--traxion-text); font:800 14px/1 inherit; letter-spacing:0; text-transform:none; }.songbook-edit-song-fields input:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.1); }.songbook-edit-song-key input { text-transform:uppercase; }
.songbook-sheet__meta { display:flex; align-items:center; flex-wrap:wrap; gap:5px 10px; margin-top:5px; color:var(--traxion-accent-soft); font-size:9px; font-weight:850; letter-spacing:.055em; text-transform:uppercase; }
.songbook-sheet__controls { flex:0 0 auto; display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:7px; }
.songbook-sheet__actions .songbook-sheet__controls { width:100%; }
.songbook-sheet__controls button,.songbook-sheet__controls select,.songbook-editor button { min-height:35px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-panel); color:var(--traxion-text); font-size:10px; font-weight:800; }
.songbook-sheet__controls button:hover,.songbook-editor button:hover { border-color:rgba(var(--traxion-accent-rgb),.5); background:rgba(var(--traxion-accent-rgb),.09); }
.songbook-sheet__controls button:focus-visible,.songbook-sheet__controls select:focus-visible,.songbook-editor button:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:1px; }
.songbook-display-switcher { display:inline-flex; overflow:hidden; border:1px solid var(--traxion-line); border-radius:7px; background:var(--traxion-panel); }
.songbook-display-switcher .quiet-button { border:0; border-radius:0; }
.songbook-display-switcher .quiet-button + .quiet-button { border-left:1px solid var(--traxion-line); }
.songbook-display-switcher .quiet-button.is-active { background:rgba(var(--traxion-accent-rgb),.17); color:var(--traxion-accent-soft); }
.songbook-sheet__controls > .quiet-button.is-active { border-color:rgba(var(--traxion-accent-rgb),.48); background:rgba(var(--traxion-accent-rgb),.17); color:var(--traxion-accent-soft); }
.songbook-appearance { display:grid; gap:12px; border-bottom:1px solid var(--traxion-line); padding:14px 20px 16px; background:linear-gradient(180deg,rgba(var(--traxion-accent-rgb),.07),transparent),var(--traxion-card-soft); }
.songbook-appearance > header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.songbook-appearance .eyebrow { display:block; color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.12em; text-transform:uppercase; }
.songbook-appearance p { max-width:680px; margin:4px 0 0; color:var(--traxion-muted); font-size:11px; line-height:1.4; }
.songbook-appearance__grid { display:grid; grid-template-columns:repeat(5,minmax(130px,max-content)); gap:10px; align-items:end; }
.songbook-appearance__grid > div { display:grid; gap:6px; }
.songbook-appearance__grid strong { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.songbook-appearance .songbook-display-switcher { width:max-content; }
@media (max-width:1100px) { .songbook-appearance__grid { grid-template-columns:repeat(3,minmax(130px,max-content)); } }
.songbook-autoscroll-controls { flex:0 0 auto; display:flex; align-items:end; flex-wrap:wrap; gap:10px 14px; }
.songbook-autoscroll-controls--header { margin-top:8px; }
.songbook-autoscroll-controls label { min-width:118px; display:grid; grid-template-columns:auto auto; align-items:center; gap:4px 7px; color:var(--traxion-muted); font-size:9px; font-weight:850; letter-spacing:.065em; text-transform:uppercase; }
.songbook-autoscroll-controls label > span { grid-column:1 / -1; }
.songbook-autoscroll-controls input { min-width:0; width:92px; min-height:32px; border:1px solid var(--traxion-line); border-radius:7px; outline:0; padding:0 8px; background:var(--traxion-panel); color:var(--traxion-text); font:750 12px/1 inherit; letter-spacing:0; text-transform:none; }
.songbook-autoscroll-controls input:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.1); }
.songbook-autoscroll-controls small { grid-column:1 / -1; color:var(--traxion-muted); font-size:9px; font-weight:650; letter-spacing:0; text-transform:none; }
.songbook-autoscroll-controls .quiet-button { min-height:32px; margin-left:0; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-panel); color:var(--traxion-text); font-size:10px; font-weight:800; }
.songbook-document { --songbook-chord-color:var(--traxion-accent-soft); --songbook-lyric-color:var(--traxion-text); --songbook-line-height:1.62; min-width:0; min-height:0; flex:1; overflow:auto; overscroll-behavior:contain; overscroll-behavior-x:none; scrollbar-gutter:stable; touch-action:pan-y; padding:clamp(24px,4vw,58px) clamp(24px,6vw,86px) 70px; background:var(--traxion-songbook-reader); color:var(--songbook-lyric-color); font-size:19px; line-height:var(--songbook-line-height); white-space:pre-wrap; tab-size:4; }
.songbook-scroll-hold,
.songbook-scroll-jump { display:block; height:0; margin:0; padding:0; overflow:hidden; }
.songbook-document--chord-color-green { --songbook-chord-color:#35d95b; }
.songbook-document--background-dark { background:var(--traxion-songbook-reader); }
.songbook-document--background-black { background:#000; }
.songbook-document--background-white,.songbook-sheet--paper .songbook-document { --songbook-chord-color:#125a83; --songbook-lyric-color:#111216; background:#fff; }
.songbook-sheet--paper .songbook-document { background:#fff; color:#111216; }
.songbook-document--background-white.songbook-document--chord-color-green,.songbook-sheet--paper .songbook-document--chord-color-green { --songbook-chord-color:#168a3a; }
.songbook-document--background-white .songbook-section,.songbook-sheet--paper .songbook-document .songbook-section { color:#125a83; }
.songbook-document--background-white .songbook-empty,.songbook-document--background-white .songbook-empty strong,.songbook-document--background-white .songbook-empty h2,.songbook-document--background-white .songbook-empty h3,.songbook-sheet--paper .songbook-document .songbook-empty,.songbook-sheet--paper .songbook-document .songbook-empty strong,.songbook-sheet--paper .songbook-document .songbook-empty h2,.songbook-sheet--paper .songbook-document .songbook-empty h3 { color:#1f2933; }
.songbook-document--text-color-white { --songbook-lyric-color:#f6f7fb; }
.songbook-document--text-color-yellow { --songbook-lyric-color:#ffe36a; }
.songbook-document--background-white.songbook-document--text-color-white,.songbook-document--background-white.songbook-document--text-color-yellow { --songbook-lyric-color:#111216; }
.songbook-document--line-spacing-compact { --songbook-line-height:1.06; }
.songbook-line:has([data-songbook-timing-line]) { transition:color .12s ease,background-color .12s ease,transform .12s ease,opacity .12s ease; }
.songbook-line [data-songbook-timing-line] { display:none; }
.songbook-line:has([data-songbook-timing-line]).is-karaoke-active { color:#ffe36a; opacity:1; font-weight:800; text-shadow:0 0 18px rgba(255,227,106,.23); transform:translateX(3px); }
.songbook-document--background-white .songbook-line:has([data-songbook-timing-line]).is-karaoke-active { color:#9b6400; text-shadow:none; }
.songbook-document--font-1 { font-size:16px; }
.songbook-document--font-2 { font-size:20px; }
.songbook-document--font-3 { font-size:26px; }
.songbook-document--font-4 { font-size:32px; }
.songbook-document--font-5 { font-size:42px; }
.songbook-document--font-6 { font-size:54px; }
.songbook-document--chord-font-1 { --songbook-chord-scale:.65; }
.songbook-document--chord-font-2 { --songbook-chord-scale:.82; }
.songbook-document--chord-font-3 { --songbook-chord-scale:1; }
.songbook-document--chord-font-4 { --songbook-chord-scale:1.22; }
.songbook-document--chord-font-5 { --songbook-chord-scale:1.46; }
.songbook-document--chord-font-6 { --songbook-chord-scale:1.72; }
.songbook-section { margin:1.75em 0 .65em; color:var(--traxion-accent-soft); font-size:.68em; font-weight:900; letter-spacing:.105em; text-transform:uppercase; }
.songbook-section:first-child { margin-top:0; }
.songbook-line { min-height:var(--songbook-line-height); margin:0; white-space:pre-wrap; overflow-wrap:anywhere; }
.songbook-document--line-spacing-compact .songbook-line--blank { min-height:.14em; height:.14em; line-height:.14; overflow:hidden; }
.songbook-document--line-spacing-compact .songbook-section { margin:1.05em 0 .28em; }
.songbook-document--line-spacing-compact .songbook-chord-line { margin:.24em 0 -.08em; }
.songbook-document--text-case-uppercase .songbook-line:not(.songbook-chord-line),.songbook-document--text-case-uppercase .songbook-lyric { text-transform:uppercase; }
.songbook-chord-line { min-height:.94em; margin:.46em 0 -.12em; color:var(--songbook-chord-color); font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace; font-size:calc(.72em * var(--songbook-chord-scale,1)); font-weight:800; letter-spacing:.015em; line-height:1; white-space:pre-wrap; }
.songbook-chord-unit { display:inline-grid; grid-template-rows:minmax(.9em,auto) auto; align-items:end; row-gap:0; vertical-align:bottom; }
.songbook-chord { grid-row:1; min-height:1em; padding-right:.4em; color:var(--songbook-chord-color); font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace; font-size:calc(.68em * var(--songbook-chord-scale,1)); font-weight:850; line-height:1.1; transform:translateY(.1em); white-space:nowrap; }
.songbook-lyric { grid-row:2; min-width:.25em; white-space:pre; }
.songbook-chord-only-inline { display:flex; flex-wrap:wrap; align-items:baseline; gap:.6em; min-height:1.5em; margin:.2em 0; }.songbook-chord-only-inline .songbook-chord { padding-right:0; font-size:1em; }
.songbook-chord-size-switcher { display:inline-flex; gap:2px; }

@media (max-width:760px) { .songbook-edit-song-fields { grid-template-columns:1fr; } }

.songbook-editor { min-width:0; min-height:0; flex:1; display:flex; flex-direction:column; gap:10px; overflow:hidden; padding:16px 18px 18px; }
.songbook-editor__tools { flex:0 0 auto; display:flex; align-items:end; justify-content:flex-end; flex-wrap:wrap; gap:7px; }
.songbook-editor__tools--header { width:100%; }
.songbook-editor__tools label { min-width:140px; display:grid; gap:5px; margin-right:0; color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.075em; text-transform:uppercase; }
.songbook-editor__tools .songbook-key-entry { min-width:82px; }
.songbook-editor__tools .songbook-chord-entry { min-width:112px; margin-right:0; }
.songbook-editor__tools select { width:100%; min-height:35px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 28px 0 9px; background:var(--traxion-panel); color:var(--traxion-text); font:750 11px/1 inherit; letter-spacing:0; text-transform:none; }
.songbook-editor__tools input:not(.sr-only) { width:100%; min-height:35px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 9px; background:var(--traxion-panel); color:var(--traxion-text); font:750 12px/1 inherit; letter-spacing:0; text-transform:none; }
.songbook-editor__hint { flex:0 0 auto; margin:0; color:var(--traxion-muted); font-size:11px; line-height:1.45; }
.songbook-editor__hint--header { width:100%; text-align:right; }
.songbook-editor-help { position:relative; display:grid; flex:0 0 auto; place-items:center; width:28px; min-height:35px; border:1px solid var(--traxion-line); border-radius:7px; background:var(--traxion-panel); color:var(--traxion-muted); font-size:15px; line-height:1; cursor:help; outline:0; }.songbook-editor-help:hover,.songbook-editor-help:focus-visible { border-color:var(--traxion-accent); color:var(--traxion-accent-soft); }.songbook-editor-help:focus-visible { box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.12); }.songbook-editor-help__tooltip { position:absolute; z-index:30; top:calc(100% + 8px); right:0; width:min(390px,calc(100vw - 44px)); border:1px solid var(--traxion-line); border-radius:8px; padding:10px 12px; background:var(--traxion-card); color:var(--traxion-text); box-shadow:0 14px 30px rgba(0,0,0,.34); font-size:11px; font-weight:650; letter-spacing:0; line-height:1.45; text-align:left; text-transform:none; opacity:0; pointer-events:none; transform:translateY(-4px); transition:opacity .14s ease,transform .14s ease; }.songbook-editor-help:hover .songbook-editor-help__tooltip,.songbook-editor-help:focus-visible .songbook-editor-help__tooltip { opacity:1; transform:translateY(0); }
.songbook-editor textarea { min-width:0; min-height:120px; width:100%; flex:1 1 45%; resize:vertical; border:1px solid var(--traxion-line); border-radius:10px; outline:0; padding:18px 20px; background:var(--traxion-panel); color:var(--traxion-text); caret-color:var(--traxion-accent); font:500 15px/1.65 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace; tab-size:4; white-space:pre-wrap; }
.songbook-editor textarea:focus { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.11); }
.songbook-editor__preview { min-height:120px; flex:1 1 45%; overflow:auto; padding:18px 20px; border:1px solid var(--traxion-line); border-radius:10px; background:rgba(var(--traxion-panel-rgb),.56); }
.songbook-editor--timing { overflow:auto; }
.songbook-timing { min-width:0; display:grid; gap:12px; padding:2px 0; }
.songbook-timing > header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:4px 2px 10px; border-bottom:1px solid var(--traxion-line); }
.songbook-timing h2 { margin:3px 0 5px; font-size:19px; }
.songbook-timing p { margin:0; color:var(--traxion-muted); font-size:12px; line-height:1.45; }
.songbook-timing__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }
.songbook-timing__status { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:9px 12px; border:1px solid var(--traxion-line); border-radius:9px; background:rgba(var(--traxion-card-rgb),.66); color:var(--traxion-muted); font-size:12px; }
.songbook-timing__status strong { color:var(--traxion-accent-soft); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:23px; letter-spacing:.02em; }
.songbook-timing__lines { display:grid; gap:6px; }
.songbook-timing-line { width:100%; display:grid; grid-template-columns:32px minmax(0,1fr) auto; align-items:center; gap:10px; min-height:46px; border:1px solid var(--traxion-line); border-radius:8px; padding:7px 10px; background:var(--traxion-panel); color:var(--traxion-text); text-align:left; touch-action:manipulation; user-select:none; }
.songbook-timing-line:hover,.songbook-timing-line:focus-visible { border-color:rgba(var(--traxion-accent-rgb),.65); outline:0; }
.songbook-timing-line.is-timed { border-color:rgba(var(--traxion-accent-rgb),.46); }
.songbook-timing-line.is-recording { border-color:#ff927f; background:rgba(255,116,92,.12); box-shadow:0 0 0 3px rgba(255,116,92,.14); }
.songbook-timing-line__number { color:var(--traxion-accent-soft); font:800 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace; }
.songbook-timing-line__text { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; font-weight:720; }
.songbook-timing-line__range { color:var(--traxion-muted); font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace; white-space:nowrap; }
.songbook-timing__empty { padding:18px; border:1px dashed var(--traxion-line); border-radius:8px; }
.songbook-empty { min-height:0; flex:1; display:grid; align-content:center; justify-items:center; gap:7px; overflow:auto; padding:32px; color:var(--traxion-muted); font-size:13px; line-height:1.6; text-align:center; }
.songbook-empty[hidden] { display:none !important; }
.songbook-empty > div { max-width:430px; }
.songbook-empty h2,.songbook-empty h3 { margin:0 0 8px; color:var(--traxion-text); font-size:22px; letter-spacing:-.04em; }
.songbook-empty p { margin:0; }
.songbook-empty strong { color:var(--traxion-text); font-size:16px; }
.songbook-view > .songbook-empty:only-child { grid-column:1 / -1; border:1px solid var(--traxion-line); border-radius:14px; background:var(--traxion-panel); }
.songbook-song-list > .songbook-empty { min-height:110px; }
.app-shell { --transport-dock-height:104px; --app-mixer-height:clamp(420px,58dvh,600px); }
.songbook-mixer { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--traxion-line); border-radius:14px; background:color-mix(in srgb,var(--traxion-panel) 96%,var(--traxion-bg)); box-shadow:0 -14px 38px rgba(0,0,0,.22); }
.app-mixer--dock { position:fixed; z-index:3; right:0; bottom:var(--transport-dock-height); left:0; height:var(--app-mixer-height); margin:0; border-right:0; border-bottom:0; border-left:0; border-radius:14px 14px 0 0; }
/* A themed select lives inside the mixer dock. While it is open, let its
   complete option list escape the dock and layer above the fixed Player bar. */
.app-mixer--dock:has(.app-select__menu) { z-index:5; overflow:visible; }
.app-shell--mixer-open .main { padding-bottom:calc(var(--transport-dock-height) + var(--app-mixer-height) + 10px); }
.songbook-mixer__header { flex:0 0 auto; min-width:0; min-height:58px; display:flex; align-items:center; justify-content:space-between; gap:14px; border-bottom:1px solid var(--traxion-line); padding:10px 15px; background:var(--traxion-card-soft); }
.songbook-mixer__header > div { min-width:0; }.songbook-mixer__header small { display:block; overflow:hidden; color:var(--traxion-muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.songbook-mixer__header h2 { margin:2px 0 0; color:var(--traxion-text); font-size:17px; line-height:1.1; letter-spacing:-.035em; }
.songbook-mixer__body { min-width:0; min-height:0; flex:1; display:grid; grid-template-columns:clamp(140px,14vw,180px) minmax(0,1fr); }
.songbook-mixer__groups { min-width:0; min-height:0; overflow:auto; border-right:1px solid var(--traxion-line); }
.songbook-mixer__groups-heading { display:grid; gap:3px; padding:14px 15px 10px; color:var(--traxion-muted); font-size:10px; line-height:1.35; }
.songbook-mixer__groups-heading strong { color:var(--traxion-text); font-size:12px; }
.songbook-mixer__group-list { display:grid; gap:5px; padding:0 8px 10px; }
.songbook-mixer__group { --mixer-group-colour:#363b43; position:relative; width:100%; min-height:66px; display:grid; align-content:center; gap:4px; overflow:hidden; border:1px solid color-mix(in srgb,var(--mixer-group-colour) 52%,transparent); border-radius:8px; padding:10px 12px 11px 16px; background:linear-gradient(90deg,color-mix(in srgb,var(--mixer-group-colour) 13%,transparent),transparent 55%); color:var(--traxion-text); text-align:left; }
.songbook-mixer__group::before { position:absolute; inset:0 auto 0 0; width:5px; background:var(--mixer-group-colour); content:""; }
.songbook-mixer__group:hover { border-color:var(--traxion-line); background:rgba(var(--traxion-accent-rgb),.06); }
.songbook-mixer__group.is-selected { border-color:var(--mixer-group-colour); background:linear-gradient(90deg,color-mix(in srgb,var(--mixer-group-colour) 24%,transparent),rgba(var(--traxion-accent-rgb),.07)); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--mixer-group-colour) 28%,transparent); }
.songbook-mixer__group strong { overflow:hidden; color:var(--traxion-text); font-size:15px; line-height:1.15; text-overflow:ellipsis; white-space:nowrap; }
.songbook-mixer__group small { overflow:hidden; color:var(--mixer-group-colour); font:850 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; text-overflow:ellipsis; text-transform:uppercase; white-space:nowrap; }
.songbook-mixer__surface { min-width:0; min-height:0; display:flex; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; }
.songbook-mixer__channels { --mixer-channel-gap:9px; width:100%; min-width:100%; display:flex; flex-wrap:nowrap; align-items:stretch; gap:var(--mixer-channel-gap); padding:14px; }
.songbook-mixer__channel { --mixer-channel-colour:#363b43; position:relative; min-width:0; flex:0 0 max(96px,calc((100% - 63px) / 8)); display:grid; grid-template-rows:auto minmax(218px,1fr) auto; gap:8px; overflow:hidden; border:1px solid color-mix(in srgb,var(--mixer-channel-colour) 58%,var(--traxion-line)); border-radius:8px; padding:10px; background:linear-gradient(180deg,color-mix(in srgb,var(--mixer-channel-colour) 12%,transparent),rgba(0,0,0,.13)),var(--traxion-card-soft); box-shadow:inset 0 3px 0 var(--mixer-channel-colour),inset 0 1px 0 rgba(255,255,255,.025); }
.songbook-mixer__channel.is-inverse-colour { background:linear-gradient(180deg,color-mix(in srgb,var(--mixer-channel-colour) 24%,transparent),rgba(0,0,0,.13)),var(--traxion-card-soft); }.songbook-mixer__channel.is-muted { opacity:.72; }.songbook-mixer__channel header { display:flex; align-items:center; justify-content:space-between; gap:6px; min-width:0; }.songbook-mixer__channel-identity { min-width:0; display:grid; gap:2px; border:0; padding:0; background:transparent; text-align:left; cursor:pointer; }.songbook-mixer__channel-identity:hover strong,.songbook-mixer__channel-identity:focus-visible strong { color:var(--mixer-channel-colour); text-decoration:underline; text-underline-offset:3px; }.songbook-mixer__channel-identity small { overflow:hidden; color:color-mix(in srgb,var(--mixer-channel-colour) 42%,#f4fbfb); font:800 8px/1 ui-monospace,SFMono-Regular,Menlo,monospace; letter-spacing:.08em; text-overflow:ellipsis; white-space:nowrap; text-shadow:0 1px 2px rgba(0,0,0,.5); }.songbook-mixer__channel strong { min-width:0; overflow:hidden; color:#f5f9f9; font-size:13px; line-height:1.1; letter-spacing:.035em; text-overflow:ellipsis; white-space:nowrap; text-shadow:0 1px 2px rgba(0,0,0,.58); }
.songbook-mixer__fader { min-height:238px; display:grid; grid-template-columns:22px minmax(34px,1fr) 10px; justify-content:center; gap:6px; border-radius:5px; padding:8px 4px; background:repeating-linear-gradient(to bottom,transparent 0,transparent 20px,rgba(158,176,181,.13) 21px,transparent 22px),rgba(0,0,0,.2); }
.songbook-mixer__fader-scale { position:relative; display:block; color:#779098; font-size:8px; font-weight:800; font-variant-numeric:tabular-nums; line-height:1; text-align:right; }.songbook-mixer__fader-scale i { position:absolute; right:0; font-style:normal; transform:translateY(-50%); }.songbook-mixer__fader-scale i:nth-child(1) { top:0; transform:none; }.songbook-mixer__fader-scale i:nth-child(2) { top:25%; }.songbook-mixer__fader-scale i:nth-child(3) { top:52.5%; }.songbook-mixer__fader-scale i:nth-child(4) { top:67.5%; }.songbook-mixer__fader-scale i:nth-child(5) { top:78.75%; }.songbook-mixer__fader-scale i:nth-child(6) { top:86.25%; }.songbook-mixer__fader-scale i:nth-child(7) { right:0; bottom:0; transform:none; }
.songbook-mixer__fader-control { position:relative; display:block; min-width:34px; min-height:218px; height:100%; touch-action:none; }
.songbook-mixer__fader-rail { position:absolute; top:3px; bottom:3px; left:50%; width:8px; transform:translateX(-50%); overflow:hidden; border:1px solid #0b1012; border-radius:5px; background:linear-gradient(90deg,#11181a,#2d3738 47%,#0e1415); box-shadow:inset 1px 0 rgba(255,255,255,.08),inset -1px 0 rgba(0,0,0,.8),0 0 0 1px rgba(149,179,183,.08); }
.songbook-mixer__fader-fill { position:absolute; right:calc(50% - 3px); bottom:4px; left:calc(50% - 3px); height:var(--fader-position); min-height:0; border-radius:3px; background:linear-gradient(to top,#4e8c79,#91e6b9 74%,#d9fff0); box-shadow:0 0 8px rgba(120,225,173,.26); pointer-events:none; }
.songbook-mixer__fader-knob { position:absolute; top:calc(var(--fader-top-position) - 11px); left:50%; width:32px; height:22px; transform:translateX(-50%); border:1px solid #070c0d; border-radius:4px; background:linear-gradient(90deg,#1a2426,#3f4b4d 46%,#161e20); box-shadow:inset 1px 1px rgba(255,255,255,.17),inset -1px -1px rgba(0,0,0,.55),0 2px 5px rgba(0,0,0,.56); pointer-events:none; }
.songbook-mixer__fader-knob::before { position:absolute; top:5px; right:5px; left:5px; height:2px; border-radius:1px; background:#b6d0ce; box-shadow:0 4px 0 rgba(182,208,206,.62),0 8px 0 rgba(182,208,206,.38); content:""; }
.songbook-mixer__fader-control input { position:absolute; inset:0; z-index:1; width:100%; height:100%; margin:0; appearance:none; -webkit-appearance:none; opacity:0; cursor:ns-resize; touch-action:none; }
.songbook-mixer__signal-meter { position:relative; align-self:stretch; min-height:218px; overflow:hidden; border:1px solid #0a1012; border-radius:3px; background:repeating-linear-gradient(to bottom,rgba(136,168,166,.2) 0 1px,transparent 1px 18px),#12191a; box-shadow:inset 1px 0 rgba(255,255,255,.05),inset -1px 0 rgba(0,0,0,.72); }
.songbook-mixer__signal-meter > span { position:absolute; right:1px; bottom:1px; left:1px; height:var(--signal-level); min-height:0; border-radius:1px 1px 2px 2px; background:linear-gradient(to top,#72e1aa 0 74%,#f7ed8a 74% 90%,#ff7870 90%); box-shadow:0 0 6px rgba(117,227,173,.33); transition:height 100ms linear; }
.songbook-mixer__channel.is-muted .songbook-mixer__signal-meter { opacity:.28; }
.songbook-mixer__channel-level { justify-self:center; border:1px solid color-mix(in srgb,var(--mixer-channel-colour) 58%,var(--traxion-line)); border-radius:4px; padding:3px 6px; background:rgba(0,0,0,.28); color:color-mix(in srgb,var(--mixer-channel-colour) 44%,#fff); font-size:10px; font-weight:850; font-variant-numeric:tabular-nums; cursor:pointer; text-shadow:0 1px 2px rgba(0,0,0,.65); }.songbook-mixer__channel-level:hover,.songbook-mixer__channel-level:focus-visible { border-color:var(--mixer-channel-colour); background:color-mix(in srgb,var(--mixer-channel-colour) 16%,rgba(0,0,0,.18)); }
.songbook-mixer__channel-on { min-width:26px; border:1px solid var(--traxion-line); border-radius:4px; padding:4px 7px; background:transparent; color:var(--traxion-muted); font:900 10px/1 inherit; cursor:pointer; }.songbook-mixer__channel.is-muted .songbook-mixer__channel-on { border-color:rgba(255,88,88,.72); background:rgba(215,35,35,.82); color:#fff; box-shadow:0 0 0 1px rgba(255,88,88,.15),0 0 10px rgba(215,35,35,.18); }
.songbook-mixer__master-backdrop { position:absolute; z-index:8; inset:0; display:grid; place-items:center; padding:18px; background:rgba(2,5,7,.68); backdrop-filter:blur(3px); }
.songbook-mixer__master-dialog { --mixer-channel-colour:#363b43; width:min(310px,calc(100vw - 36px)); max-height:calc(var(--app-mixer-height) - 28px); display:grid; grid-template-rows:auto minmax(0,1fr); overflow:hidden; border:1px solid color-mix(in srgb,var(--mixer-channel-colour) 72%,var(--traxion-line)); border-radius:11px; background:linear-gradient(180deg,color-mix(in srgb,var(--mixer-channel-colour) 18%,transparent),rgba(0,0,0,.14)),var(--traxion-panel); box-shadow:0 22px 54px rgba(0,0,0,.55),inset 0 3px 0 var(--mixer-channel-colour); }
.songbook-mixer__master-dialog > header { min-width:0; display:flex; align-items:flex-start; justify-content:space-between; gap:10px; border-bottom:1px solid var(--traxion-line); padding:13px 14px 11px; }
.songbook-mixer__master-dialog h3 { overflow:hidden; margin:3px 0 0; color:var(--traxion-text); font-size:18px; letter-spacing:-.035em; text-overflow:ellipsis; white-space:nowrap; }.songbook-mixer__master-dialog header small { display:block; overflow:hidden; margin-top:4px; color:var(--traxion-muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.songbook-mixer__master-body { min-height:0; display:grid; justify-items:center; gap:9px; padding:13px 22px 15px; overflow:auto; }.songbook-mixer__master-body > .songbook-mixer__empty { min-height:180px; padding:12px; }
.songbook-mixer__master-fader { width:118px; min-height:270px; grid-template-columns:25px minmax(48px,1fr); padding:10px 6px; }.songbook-mixer__master-fader .songbook-mixer__fader-control { min-width:48px; min-height:248px; }.songbook-mixer__master-dialog output { border:1px solid color-mix(in srgb,var(--mixer-channel-colour) 55%,var(--traxion-line)); border-radius:5px; padding:4px 8px; background:rgba(0,0,0,.2); color:var(--mixer-channel-colour); font-size:11px; font-variant-numeric:tabular-nums; }.songbook-mixer__master-dialog p { margin:0; color:var(--traxion-muted); font-size:10px; line-height:1.4; text-align:center; }
.songbook-mixer__eq-backdrop { position:absolute; z-index:9; inset:0; display:grid; place-items:center; padding:18px; background:rgba(2,5,7,.76); backdrop-filter:blur(4px); }.songbook-mixer__eq-dialog { --mixer-channel-colour:#31c9d0; width:min(960px,calc(100vw - 40px)); max-height:calc(var(--app-mixer-height) - 24px); display:grid; grid-template-rows:auto minmax(0,1fr); overflow:hidden; border:1px solid color-mix(in srgb,var(--mixer-channel-colour) 65%,var(--traxion-line)); border-radius:11px; background:#0b141d; box-shadow:0 24px 68px rgba(0,0,0,.68),inset 0 2px 0 color-mix(in srgb,var(--mixer-channel-colour) 72%,#fff); }.songbook-mixer__eq-dialog > header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:13px 16px 11px; border-bottom:1px solid #31414b; background:linear-gradient(90deg,color-mix(in srgb,var(--mixer-channel-colour) 18%,transparent),transparent 48%); }.songbook-mixer__eq-dialog h3 { margin:3px 0 0; color:#e7edf0; font-size:20px; letter-spacing:-.035em; }.songbook-mixer__eq-dialog header small { display:block; margin-top:4px; color:#8fa2ac; font-size:11px; }.songbook-mixer__eq-header-actions { display:flex; align-items:center; gap:8px; }.songbook-mixer__eq-on { min-width:60px; border:1px solid #3b5960; border-radius:5px; padding:8px 10px; background:#1b252d; color:#b9c5cb; font-weight:800; cursor:pointer; }.songbook-mixer__eq-on.is-active { border-color:#2acb32; background:#173f1c; color:#8dfa93; box-shadow:inset 0 0 0 1px rgba(42,203,50,.24); }.songbook-mixer__eq-body { min-height:0; display:grid; grid-template-rows:minmax(230px,1fr) auto auto; gap:11px; padding:14px 16px 12px; overflow:auto; }.songbook-mixer__eq-body > .songbook-mixer__empty { min-height:240px; }.songbook-mixer__eq-graph { width:100%; min-height:230px; border:1px solid #4d5e66; border-radius:6px; background:#0e1b25; touch-action:none; }.songbook-mixer__eq-grid path { stroke:#52616a; stroke-width:1; opacity:.74; }.songbook-mixer__eq-grid path.is-zero { stroke:#d4bf3f; stroke-width:2; opacity:1; }.songbook-mixer__eq-axis text { fill:#93a0a8; font:12px ui-monospace,SFMono-Regular,Menlo,monospace; text-anchor:middle; }.songbook-mixer__eq-axis text:nth-of-type(n+12) { text-anchor:end; }.songbook-mixer__eq-curve { fill:none; stroke:#e4cf48; stroke-width:3; filter:drop-shadow(0 0 3px rgba(228,207,72,.36)); }.songbook-mixer__eq-curve.is-bypassed { stroke:#6e7a80; stroke-dasharray:8 7; filter:none; }.songbook-mixer__eq-point { stroke:#e8ecec; stroke-width:4; cursor:grab; touch-action:none; filter:drop-shadow(0 2px 3px rgba(0,0,0,.6)); }.songbook-mixer__eq-point:active { cursor:grabbing; }.songbook-mixer__eq-point:focus-visible { outline:none; stroke:#fff; stroke-width:6; }.songbook-mixer__eq-bands { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; }.songbook-mixer__eq-band { --eq-band-colour:#31c9d0; display:grid; grid-template-columns:1fr; gap:5px; border:1px solid color-mix(in srgb,var(--eq-band-colour) 48%,#40505b); border-radius:6px; padding:8px; background:linear-gradient(145deg,color-mix(in srgb,var(--eq-band-colour) 13%,#101922),#121a20); }.songbook-mixer__eq-band > strong { color:var(--eq-band-colour); font-size:11px; letter-spacing:.08em; text-transform:uppercase; }.songbook-mixer__eq-band label { display:grid; grid-template-columns:32px minmax(0,1fr) auto; align-items:center; gap:6px; color:#a7b3b9; font-size:10px; }.songbook-mixer__eq-band input { width:100%; accent-color:var(--eq-band-colour); }.songbook-mixer__eq-band output { min-width:52px; color:#e0e7e9; font:10px ui-monospace,SFMono-Regular,Menlo,monospace; text-align:right; }.songbook-mixer__eq-hint { margin:0; color:#96a3aa; font-size:11px; text-align:center; }
@media (max-width:760px) { .songbook-mixer__eq-dialog { width:calc(100vw - 20px); max-height:calc(100dvh - 20px); }.songbook-mixer__eq-bands { grid-template-columns:repeat(2,minmax(0,1fr)); }.songbook-mixer__eq-body { padding:10px; }.songbook-mixer__eq-graph { min-height:190px; } }
.songbook-mixer__empty { min-width:0; min-height:0; flex:1; display:grid; align-content:center; justify-items:center; gap:7px; padding:24px; color:var(--traxion-muted); font-size:11px; line-height:1.5; text-align:center; }
.songbook-mixer__empty strong { color:var(--traxion-text); font-size:14px; }
.songbook-mixer__empty .quiet-button { margin-top:6px; }
.songbook-mixer__setup { min-width:0; min-height:0; flex:1; display:grid; grid-template-columns:minmax(0,.9fr) minmax(360px,1.1fr); align-items:center; gap:28px; padding:24px; }
.songbook-mixer__setup-copy { min-width:0; }.songbook-mixer__setup-copy h3 { margin:4px 0 8px; color:var(--traxion-text); font-size:22px; letter-spacing:-.04em; }.songbook-mixer__setup-copy p,.mixer-connection-note { margin:0; color:var(--traxion-muted); font-size:12px; line-height:1.5; }
.songbook-mixer__setup-controls { min-width:0; display:grid; gap:10px; border:1px solid var(--traxion-line); border-radius:10px; padding:16px; background:var(--traxion-card-soft); }.mixer-connection-error { margin:0; color:#ef938b; font-size:11px; font-weight:750; }

/* Compact density is deliberately edge-to-edge: the content owns the viewport. */
:root[data-traxion-density="compact"] .app-header { height:52px; }
:root[data-traxion-density="compact"] .workspace-switcher { min-height:38px; padding-top:3px; padding-bottom:3px; }
:root[data-traxion-density="compact"] .app-header-wordmark .kuru-wordmark { width:70px; height:auto; }
:root[data-traxion-density="compact"] .app-header-wordmark .kuru-tracks-lockup { height:20px; }
:root[data-traxion-density="compact"] .main { padding-top:64px; padding-right:24px; padding-bottom:82px; padding-left:24px; }
:root[data-traxion-density="compact"] .main.main--library { padding-top:72px; }
:root[data-traxion-density="compact"] .main--songbook,
:root[data-traxion-density="compact"] .main:has(.songbook-view) { padding:58px 0 66px; }
:root[data-traxion-density="compact"] .transport { min-height:66px; gap:18px; padding-top:7px; padding-bottom:7px; }
:root[data-traxion-density="compact"] .transport-left { gap:15px; }
:root[data-traxion-density="compact"] .transport-time { gap:2px; }
:root[data-traxion-density="compact"] .transport-time .timer { font-size:17px; }
:root[data-traxion-density="compact"] .transport-song strong { font-size:18px; }
:root[data-traxion-density="compact"] .transport-remaining .timer { font-size:20px; }
:root[data-traxion-density="compact"] .transport .play { width:44px; height:44px; font-size:17px; }
:root[data-traxion-density="compact"] .player-setlist .setlist-row-select,
:root[data-traxion-density="compact"] .player-setlist .setlist-song-menu { min-height:64px; }
:root[data-traxion-density="compact"] .player-setlist .setlist-song-play { min-height:34px; }
:root[data-traxion-density="compact"] .main:has(.settings-workspace) { padding-top:58px; }
:root[data-traxion-density="compact"] .settings-workspace { gap:8px; padding-bottom:16px; }
:root[data-traxion-density="compact"] .settings-workspace-header { min-height:42px; padding-bottom:7px; }
:root[data-traxion-density="compact"] .settings-workspace-header h1 { font-size:21px; }
:root[data-traxion-density="compact"] .settings-zone > header { min-height:58px; padding:9px 12px; }
:root[data-traxion-density="compact"] .settings-control-line { min-height:64px; padding:10px 12px; }
:root[data-traxion-density="compact"] .songbook-view { gap:0; }
:root[data-traxion-density="compact"] .songbook-list,
:root[data-traxion-density="compact"] .songbook-sheet,
:root[data-traxion-density="compact"] .songbook-mixer,
:root[data-traxion-density="compact"] .songbook-view > .songbook-empty:only-child { border-radius:0; box-shadow:none; }
:root[data-traxion-density="compact"] .songbook-list { border-left:0; }
:root[data-traxion-density="compact"] .songbook-sheet { border-right:0; border-left:0; }
:root[data-traxion-density="compact"] .songbook-list__header { gap:5px; padding:7px 10px; }
:root[data-traxion-density="compact"] .songbook-list__collection-tools { grid-template-columns:minmax(0,1fr) minmax(0,1fr) 32px; gap:5px; }
:root[data-traxion-density="compact"] .songbook-list-compact-toggle { min-width:32px; min-height:32px; border-radius:4px; font-size:15px; }
:root[data-traxion-density="compact"] .songbook-list .setlist-picker select { min-height:32px; border-radius:4px; }
:root[data-traxion-density="compact"] .songbook-search,
:root[data-traxion-density="compact"] .songbook-search input { min-height:32px; border-radius:4px; }
:root[data-traxion-density="compact"] .songbook-song-list { padding:0; }
:root[data-traxion-density="compact"] .songbook-song-row { min-height:48px; border-radius:0; }
:root[data-traxion-density="compact"] .songbook-song-select { padding:5px 9px; }
:root[data-traxion-density="compact"] .songbook-song-row--compact,
:root[data-traxion-density="compact"] .songbook-song-row--compact.is-playing { min-height:34px; }
:root[data-traxion-density="compact"] .songbook-song-row--compact { grid-template-columns:26px 26px minmax(0,1fr); }
:root[data-traxion-density="compact"] .songbook-song-row--compact > .songbook-song-index { padding-left:8px; }
:root[data-traxion-density="compact"] .songbook-song-play--compact { min-width:26px; font-size:10px; }
:root[data-traxion-density="compact"] .songbook-song-select--compact { padding:3px 8px 3px 2px; }
:root[data-traxion-density="compact"] .songbook-song-row + .songbook-song-row { margin-top:0; }
:root[data-traxion-density="compact"] .songbook-sheet__toolbar { gap:8px; padding:8px 12px 7px; }
:root[data-traxion-density="compact"] .songbook-sheet__title { font-size:clamp(22px,2.1vw,30px); }
:root[data-traxion-density="compact"] .songbook-sheet__artist { margin-top:2px; font-size:11px; }
:root[data-traxion-density="compact"] .songbook-sheet__meta { gap:4px 9px; margin-top:4px; }
:root[data-traxion-density="compact"] .songbook-sheet__controls { gap:4px; }
:root[data-traxion-density="compact"] .songbook-sheet__controls button,
:root[data-traxion-density="compact"] .songbook-sheet__controls select { min-height:29px; border-radius:4px; padding:0 8px; font-size:9px; }
:root[data-traxion-density="compact"] .songbook-display-switcher { border-radius:4px; }
:root[data-traxion-density="compact"] .songbook-sheet__actions { gap:5px; }
:root[data-traxion-density="compact"] .songbook-editor__tools { gap:4px; }
:root[data-traxion-density="compact"] .songbook-editor__tools label { min-width:118px; gap:3px; font-size:8px; }
:root[data-traxion-density="compact"] .songbook-editor__tools select,
:root[data-traxion-density="compact"] .songbook-editor__tools input:not(.sr-only) { min-height:29px; border-radius:4px; font-size:10px; }
:root[data-traxion-density="compact"] .songbook-editor__hint { font-size:9px; line-height:1.35; }
:root[data-traxion-density="compact"] .songbook-autoscroll-controls { gap:5px 8px; }
:root[data-traxion-density="compact"] .songbook-autoscroll-controls--header { margin-top:5px; }
:root[data-traxion-density="compact"] .songbook-autoscroll-controls label { min-width:102px; gap:2px 5px; font-size:8px; }
:root[data-traxion-density="compact"] .songbook-autoscroll-controls small { font-size:8px; }
:root[data-traxion-density="compact"] .songbook-autoscroll-controls input,
:root[data-traxion-density="compact"] .songbook-autoscroll-controls .quiet-button { min-height:28px; border-radius:4px; }
:root[data-traxion-density="compact"] .songbook-document { padding:16px 28px 34px; }
:root[data-traxion-density="compact"] .app-shell { --transport-dock-height:84px; --app-mixer-height:clamp(400px,58dvh,560px); }
:root[data-traxion-density="compact"] .app-mixer--dock { border-radius:10px 10px 0 0; }
:root[data-traxion-density="compact"] .songbook-mixer__header { min-height:42px; padding:6px 12px; }
:root[data-traxion-density="compact"] .songbook-mixer__header h2 { margin-top:0; font-size:14px; }
:root[data-traxion-density="compact"] .songbook-mixer__groups-heading { gap:2px; padding:8px 12px 5px; }
:root[data-traxion-density="compact"] .songbook-mixer__group-list { gap:2px; padding:0 2px 2px; }
:root[data-traxion-density="compact"] .songbook-mixer__group { min-height:60px; border-radius:2px; padding:9px 11px 10px 15px; }
:root[data-traxion-density="compact"] .songbook-mixer__group strong { font-size:15px; }
:root[data-traxion-density="compact"] .songbook-mixer__group small { font-size:9px; }
:root[data-traxion-density="compact"] .songbook-mixer__empty { padding:14px; }
:root[data-traxion-density="compact"] .songbook-mixer__setup { gap:16px; padding:14px; }.mixer-connection-form--setup .app-select__trigger,.mixer-connection-form--setup input,.mixer-connection-form--setup .outline-button { min-height:32px; border-radius:5px; }
:root[data-traxion-density="compact"] .main:has(.setlist-editor) { padding:66px 0 66px; }
:root[data-traxion-density="compact"] .setlist-editor { min-height:100%; grid-template-rows:auto minmax(0,1fr); gap:0; }
:root[data-traxion-density="compact"] .setlist-editor-top { grid-template-columns:minmax(250px,1fr) minmax(190px,.42fr) auto; gap:8px; border-right:0; border-left:0; border-radius:0; padding:7px 16px; }
:root[data-traxion-density="compact"] .setlist-editor-name-wrap { gap:6px; }
:root[data-traxion-density="compact"] .setlist-editor-field { gap:3px; }
:root[data-traxion-density="compact"] .setlist-editor-field input,
:root[data-traxion-density="compact"] .setlist-editor-field select { min-height:32px; border-radius:3px; padding:0 8px; font-size:12px; }
:root[data-traxion-density="compact"] .setlist-editor-back,
:root[data-traxion-density="compact"] .setlist-editor-actions button { min-height:32px; border-radius:3px; padding:0 9px; font-size:11px; }
:root[data-traxion-density="compact"] .setlist-editor-columns { min-height:0; gap:0; }
:root[data-traxion-density="compact"] .setlist-editor-column { min-height:0; border-radius:0; border-top:0; border-bottom:0; }
:root[data-traxion-density="compact"] .setlist-editor-column:first-child { border-left:0; }
:root[data-traxion-density="compact"] .setlist-editor-column:last-child { border-right:0; }
:root[data-traxion-density="compact"] .setlist-editor-column > header { min-height:50px; padding:6px 12px; }
:root[data-traxion-density="compact"] .setlist-editor-column > header span { margin-bottom:2px; font-size:9px; }
:root[data-traxion-density="compact"] .setlist-editor-column h2 { font-size:15px; }
:root[data-traxion-density="compact"] .setlist-editor-column > header > strong { min-width:22px; height:22px; border-radius:3px; font-size:10px; }
:root[data-traxion-density="compact"] .setlist-editor-column > header.setlist-editor-library-header { min-height:80px; gap:4px 8px; }:root[data-traxion-density="compact"] .setlist-editor-search input { min-height:28px; border-radius:3px; padding:0 8px; font-size:12px; }
:root[data-traxion-density="compact"] .setlist-editor-list { min-height:0; gap:0; padding:0; }
:root[data-traxion-density="compact"] .setlist-editor-song { min-height:44px; border-radius:0; padding:5px 10px; }
:root[data-traxion-density="compact"] .setlist-editor-song + .setlist-editor-song { border-top-color:var(--traxion-line); }

@media (max-width:850px) {
  .header-clock { display:none; }
  .app-header { grid-template-columns:auto minmax(0,1fr) auto; gap:8px; padding-right:14px; padding-left:14px; }
  .app-header-center { grid-template-columns:minmax(120px,1fr) auto auto auto; justify-content:stretch; gap:7px; }
  .mode-switcher__button { min-width:64px; padding:0 8px; font-size:10px; }
  .main--songbook,.main:has(.songbook-view) { padding-right:16px; padding-left:16px; }
  .songbook-view { grid-template-columns:1fr; grid-template-rows:minmax(160px,34%) minmax(0,66%); gap:10px; }
  .songbook-view--compact-list { grid-template-columns:1fr; }
  .songbook-view--list-hidden { grid-template-rows:minmax(0,1fr); }
  .songbook-mixer__body { grid-template-columns:clamp(120px,26vw,160px) minmax(0,1fr); }
  .songbook-list__header { grid-template-columns:minmax(0,1fr) minmax(150px,.85fr); align-items:center; gap:9px; padding:10px 12px; }
  .songbook-list__header h1,.songbook-list__header h2 { font-size:15px; }
  .songbook-list__header p { display:none; }
  .songbook-song-list { padding:5px; }
  .songbook-song-row { min-height:55px; }
  .songbook-sheet__toolbar { padding:13px 15px; }
  .songbook-appearance { padding:13px 15px 15px; }
  .songbook-sheet__title { font-size:24px; }
  .songbook-document { padding:24px 25px 48px; }
}

@media (max-width:620px) {
  .app-header { gap:5px; padding-right:8px; padding-left:8px; }
  .app-header-brand .kuru-tracks-lockup { display:none; }
  .app-header-wordmark .kuru-wordmark { width:56px; height:auto; }
  .app-header-brand { gap:6px; }
  .header-offline-toggle { min-width:32px; width:32px; padding:0; }
  .header-offline-toggle span { display:none; }
  .app-header-center { grid-template-columns:minmax(74px,1fr) auto auto auto; gap:4px; }
  .app-header-center .workspace-switcher { min-width:0; padding-right:6px; padding-left:6px; }
  .app-header-center .workspace-switcher strong { font-size:9px; }
  .mode-switcher { padding:2px; }
  .mode-switcher__button { min-width:45px; min-height:30px; padding:0 5px; font-size:9px; }
  .header-click-toggle { min-width:42px; min-height:30px; border-radius:5px; padding:0 6px; font-size:9px; }
  .header-mixer-toggle { min-width:42px; min-height:30px; border-radius:5px; padding:0 6px; font-size:9px; }
  .app-shell { --transport-dock-height:96px; --app-mixer-height:min(510px,64dvh); }
  .app-mixer--dock { border-radius:8px 8px 0 0; }
  .songbook-list__header { grid-template-columns:1fr; }
  .songbook-mixer__body { grid-template-columns:1fr; grid-template-rows:minmax(118px,.38fr) minmax(0,1fr); }
  .songbook-mixer__setup { grid-template-columns:1fr; gap:14px; overflow:auto; padding:14px; }
  .songbook-mixer__groups { border-right:0; border-bottom:1px solid var(--traxion-line); }
  .songbook-mixer__groups-heading { padding:10px 12px 6px; }
  .songbook-mixer__group-list { grid-template-columns:repeat(2,minmax(0,1fr)); overflow:auto; padding:0 7px 8px; }
  .songbook-search { min-height:34px; }
  .songbook-sheet__toolbar { align-items:stretch; flex-direction:column; gap:10px; }
  .songbook-appearance__grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .songbook-appearance .songbook-display-switcher { max-width:100%; }
  .songbook-sheet__actions { justify-items:start; }
  .songbook-sheet__controls { justify-content:flex-start; }
  .songbook-editor__tools { justify-content:flex-start; }
  .songbook-editor__hint--header { text-align:left; }
  .songbook-autoscroll-controls { align-items:stretch; }
  .songbook-autoscroll-controls .quiet-button { margin-left:0; }
  .mixer-connection-form { grid-template-columns:1fr; align-items:stretch; }.mixer-connection-form .outline-button { width:100%; }
  .songbook-sheet__title { font-size:21px; }
  .songbook-sheet__artist { font-size:11px; }
  .songbook-document { padding:20px 18px 42px; }
  .songbook-document--font-4 { font-size:24px; }
  .songbook-editor__tools label { min-width:100%; }
}

/* Phones use the browser page as the scroll surface.  The desktop Songbook is
   intentionally a locked two-pane workspace, but keeping that model on iOS
   leaves no scrollable ancestor when the set list and reader stack vertically.
   Let the page flow on phones while retaining a dedicated, touch-friendly
   lyrics reader for long charts and for automatic scrolling. */
@media (max-width:760px) {
  html,
  body,
  #app {
    height:auto;
    min-height:100%;
    overflow-x:hidden;
    overflow-y:auto;
  }

  .app-shell {
    height:auto;
    min-height:100dvh;
    max-height:none;
    overflow:visible;
  }

  .app-shell::after {
    inset:58px 0 calc(184px + env(safe-area-inset-bottom));
  }

  .main {
    height:auto;
    min-height:100dvh;
    overflow:visible;
    overscroll-behavior:auto;
    padding-bottom:calc(190px + env(safe-area-inset-bottom));
  }

  .main--songbook,
  .main:has(.songbook-view) {
    display:block;
    overflow:visible;
    padding-bottom:calc(190px + env(safe-area-inset-bottom));
  }

  .songbook-view {
    min-height:0;
    height:auto;
    display:grid;
    grid-template-rows:none;
    overflow:visible;
  }

  .songbook-list,
  .songbook-sheet {
    overflow:visible;
  }

  .songbook-song-list {
    flex:0 0 auto;
    overflow:visible;
  }

  .songbook-document {
    flex:0 0 auto;
    height:min(54dvh,520px);
    min-height:260px;
    overflow:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
}

/* Keep the stage end behaviour visible alongside the other song settings. */
.song-editor-details { grid-template-columns:minmax(220px,1fr) 145px 90px 125px minmax(175px,.8fr) 150px; }
.song-editor-details select { min-height:38px; border:1px solid var(--traxion-line); border-radius:7px; padding:0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font-size:13px; font-weight:750; letter-spacing:0; text-transform:none; }
.song-editor-end-delay > div { display:flex; align-items:center; gap:7px; }
.song-editor-end-delay input { min-width:0; flex:1; }
.song-editor-end-delay small { color:var(--traxion-muted); font-size:10px; font-weight:800; letter-spacing:0; text-transform:none; }
@media (max-width:1100px) { .song-editor-details { grid-template-columns:minmax(220px,1fr) repeat(2,minmax(130px,1fr)); } }
@media (max-width:760px) { .song-editor-details { grid-template-columns:1fr; } }

/* Songbook reading mode removes all global chrome while retaining the setlist and lyrics. */
.app-shell--songbook-fullscreen .app-header,
.transport--songbook-fullscreen {
  display: none;
}

#app .app-shell--songbook-fullscreen .main.main--songbook {
  /* This must beat Compact mode's padded Songbook rule too. Hiding the
     header and transport alone leaves their old breathing room behind. */
  width: 100%;
  min-height: 100dvh;
  height: 100dvh;
  max-height: 100dvh;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

.app-shell--songbook-fullscreen .songbook-view {
  min-height: 0;
  height: 100%;
  gap: 0;
}

.app-shell--songbook-fullscreen .songbook-list,
.app-shell--songbook-fullscreen .songbook-sheet {
  border-radius: 0;
  box-shadow: none;
}

.app-shell--songbook-fullscreen .songbook-list {
  border-left: 0;
}

.app-shell--songbook-fullscreen .songbook-sheet {
  border-right: 0;
  border-left: 0;
}

/* A KAAMOS slave can hand the reader to the singer without exposing song
   selection or transport controls. The close target is the only chrome. */
.app-shell--songbook-prompter .app-header,
.transport--songbook-prompter {
  display:none;
}

#app .app-shell--songbook-prompter .main.main--songbook {
  width:100%;
  min-height:100dvh;
  height:100dvh;
  max-height:100dvh;
  margin:0;
  padding:0;
  overflow:hidden;
}

.songbook-prompter { position:relative; width:100%; height:100%; overflow:hidden; background:var(--traxion-songbook-reader); }
.songbook-prompter__close { position:absolute; z-index:2; top:14px; right:16px; display:grid; place-items:center; width:34px; height:34px; border:1px solid color-mix(in srgb,var(--traxion-text) 24%,transparent); border-radius:50%; padding:0; background:color-mix(in srgb,var(--traxion-panel) 82%,transparent); color:var(--traxion-text); font-size:22px; line-height:1; opacity:.72; }
.songbook-prompter__close:hover { opacity:1; background:var(--traxion-card-soft); }
.songbook-prompter__close:focus-visible { outline:2px solid var(--traxion-accent); outline-offset:2px; }
.songbook-prompter__document { height:100%; padding:clamp(54px,8vh,92px) clamp(26px,11vw,190px) clamp(46px,8vh,100px); border:0; border-radius:0; box-shadow:none; }
@media (max-width:760px) { .app-shell--songbook-prompter { height:100dvh !important; max-height:100dvh !important; overflow:hidden !important; }.songbook-prompter__close { top:10px; right:10px; width:32px; height:32px; }.songbook-prompter__document { min-height:0; height:100%; padding:50px 24px 54px; } }
@media (max-width:760px) { :root[data-traxion-density="compact"] .app-shell { --transport-dock-height:64px; --app-mixer-height:min(320px,52dvh); } }

/* Player list counters stay readable and inside their own column. */
.player-setlist .setlist-duration {
  min-width: 5ch;
  color: var(--traxion-text);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: clamp(20px, 1.5vw, 27px);
  font-weight: 750;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1, "zero" 1;
  letter-spacing: 0;
  line-height: 1;
  text-align: right;
  white-space: nowrap;
}

.player-setlist .setlist-row.has-playback-progress .setlist-duration {
  color: var(--traxion-accent-soft);
  font-size: clamp(22px, 1.7vw, 30px);
  font-weight: 800;
  letter-spacing: 0;
}

.player-setlist .setlist-row.playing {
  grid-template-columns: minmax(0, 1fr) 76px 44px;
}

.player-song-transport {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-self: stretch;
  border-left: 1px solid var(--traxion-line);
}

.player-song-transport__button {
  min-width: 0;
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--traxion-accent-soft);
  font-size: 13px;
  font-weight: 900;
  cursor: pointer;
}

.player-song-transport__button + .player-song-transport__button {
  border-left: 1px solid var(--traxion-line);
}

.player-song-transport__button:hover {
  background: rgba(var(--traxion-accent-rgb), .14);
  color: var(--traxion-text);
}

.player-song-transport__button--stop {
  color: #ffaaa6;
}

.player-song-transport__button:focus-visible {
  position: relative;
  z-index: 1;
  outline: 2px solid var(--traxion-accent);
  outline-offset: -2px;
}

@media (max-width: 760px) {
  .player-setlist .setlist-row.playing {
    grid-template-columns: minmax(0, 1fr) 68px 38px;
  }

  .player-setlist .setlist-row-select {
    grid-template-columns: 38px 34px minmax(0, 1fr) minmax(5ch, auto);
    gap: 7px;
    padding-right: 10px;
  }

  .player-setlist .setlist-song-play {
    left: 53px;
    width: 32px;
    min-height: 32px;
  }

  .player-setlist .setlist-duration,
  .player-setlist .setlist-row.has-playback-progress .setlist-duration {
    min-width: 5ch;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: 0;
  }
}

/* Reserve one stable left-side transport slot for every row. When playback
   starts, Pause/Stop replace Play in that slot instead of jumping to the
   duration column on the far right. */
.player-setlist .setlist-row,
.player-setlist .setlist-row.playing {
  grid-template-columns: minmax(0, 1fr) 44px;
}

.player-setlist .setlist-row-select {
  grid-template-columns: 64px 78px minmax(0, 1fr) minmax(130px, auto) 78px;
}

.player-setlist .setlist-play-spacer {
  width: 78px;
}

.player-song-transport {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 89px;
  width: 76px;
  min-height: 38px;
  transform: translateY(-50%);
  overflow: hidden;
  border: 1px solid var(--traxion-line);
  border-radius: 6px;
  background: var(--traxion-card-soft);
}

@media (max-width: 760px) {
  .player-setlist .setlist-row,
  .player-setlist .setlist-row.playing {
    grid-template-columns: minmax(0, 1fr) 38px;
  }

  .player-setlist .setlist-row-select {
    grid-template-columns: 38px 68px minmax(0, 1fr) minmax(5ch, auto);
  }

  .player-setlist .setlist-play-spacer {
    width: 68px;
  }

  .player-song-transport {
    left: 53px;
    width: 68px;
    min-height: 32px;
  }
}

/* Setlist editor: keep navigation at the left, use a compact name field and
   give every right-side action the same stage-friendly target size. */
.setlist-editor-top {
  grid-template-columns: auto minmax(220px, 410px) minmax(180px, 300px) auto;
  justify-content: start;
  align-items: end;
}

.setlist-editor-name-wrap {
  display: contents;
}

.setlist-editor-back {
  justify-self: start;
}

.setlist-editor-name {
  width: min(100%, 410px);
}

.setlist-editor-actions {
  display: grid;
  grid-template-columns: repeat(4, 88px);
  justify-content: end;
  gap: 6px;
}

.setlist-editor-actions button {
  width: 88px;
  min-height: 34px;
  padding: 0 7px;
  font-size: 11px;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .setlist-editor-top {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: end;
  }

  .setlist-editor-top > .setlist-editor-field:not(.setlist-editor-name),
  .setlist-editor-actions {
    grid-column: 1 / -1;
  }

  .setlist-editor-name {
    width: 100%;
  }

  .setlist-editor-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .setlist-editor-actions button {
    width: auto;
  }
}
.audio-ready-status { min-width:68px; color:var(--traxion-muted); font-size:9px; font-weight:800; letter-spacing:.03em; text-align:right; text-transform:uppercase; }
.audio-ready-status.is-ready { color:#67e88a; }
.audio-ready-status.is-loading { color:#f4c85a; }
.player-setlist .setlist-stems { gap:9px; white-space:nowrap; }
.player-setlist .setlist-song strong { font-size:18px; letter-spacing:.025em; text-transform:uppercase; }
.player-setlist .setlist-tempo { min-width:auto; color:var(--traxion-accent-soft); font-size:23px; font-weight:900; letter-spacing:-.045em; line-height:1; }
.player-setlist .setlist-row.has-timeline-labels .setlist-row-select,.player-setlist .setlist-row.has-timeline-labels .setlist-song-menu { min-height:88px; }
.player-timeline-labels { position:absolute; z-index:3; right:0; bottom:0; left:0; height:14px; pointer-events:none; }
.player-timeline-label { position:absolute; bottom:0; left:var(--cue-position); display:flex; align-items:end; gap:4px; max-width:160px; color:var(--traxion-muted); font-size:9px; font-weight:700; letter-spacing:.02em; line-height:1; text-shadow:0 1px 2px rgba(0,0,0,.72); white-space:nowrap; }
.player-timeline-label i { flex:0 0 auto; width:2px; height:10px; border-radius:1px 1px 0 0; background:var(--traxion-accent); box-shadow:0 0 5px rgba(var(--traxion-accent-rgb),.52); }
.player-timeline-label b { overflow:hidden; font:inherit; text-overflow:ellipsis; }
.setlist-encore-label { display:inline-block; vertical-align:middle; margin-left:8px; border:1px solid rgba(244,200,90,.5); border-radius:4px; padding:2px 5px; color:#f4c85a; font-size:9px; font-weight:900; letter-spacing:.08em; line-height:1; text-transform:uppercase; }
.songbook-audio-ready-status { display:inline; min-width:0; text-align:inherit; }
.main { position:relative; z-index:1; }
.player-setlist-toolbar { width:100%; display:flex; align-items:end; justify-content:space-between; gap:22px; min-width:0; }
.player-setlist-selection { display:flex; flex:1 1 auto; align-items:end; gap:12px; min-width:0; }
.player-setlist-toolbar .setlist-picker--collection { flex:0 1 50%; width:50%; min-width:260px; max-width:390px; }
.player-all-songs-search { display:flex; flex:0 1 340px; align-self:end; min-width:220px; min-height:52px; align-items:center; border:1px solid var(--traxion-line); border-radius:10px; padding:0 13px; background:var(--traxion-panel); color:var(--traxion-text); font:800 13px/1 inherit; }
.player-all-songs-search input { width:100%; min-width:0; min-height:50px; border:0; outline:0; padding:0; background:transparent; color:inherit; font:inherit; }
.player-all-songs-search::placeholder,.player-all-songs-search input::placeholder { color:var(--traxion-muted); opacity:.78; }
.player-all-songs-search:focus,.player-all-songs-search:focus-within { border-color:var(--traxion-accent); box-shadow:0 0 0 3px rgba(var(--traxion-accent-rgb),.1); }
.player-all-songs-no-results { padding:36px 18px; color:var(--traxion-muted); font-size:13px; font-weight:750; text-align:center; }
.player-setlist-summary { display:flex; align-items:center; gap:15px; min-height:52px; color:var(--traxion-muted); }
.player-setlist-summary span { display:grid; gap:4px; min-width:52px; }
.player-setlist-summary small { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.085em; line-height:1; text-transform:uppercase; white-space:nowrap; }
.player-setlist-summary strong { color:var(--traxion-text); font-size:17px; font-weight:900; letter-spacing:-.025em; line-height:1; white-space:nowrap; }
.player-setlist-summary i { width:1px; height:28px; background:var(--traxion-line); }
@media (max-width:760px) { .app-shell::after { inset:0; }.player-setlist .setlist-row.has-timeline-labels .setlist-row-select,.player-setlist .setlist-row.has-timeline-labels .setlist-song-menu { min-height:79px; }.player-timeline-labels { right:0; bottom:0; left:0; }.player-timeline-label { max-width:92px; font-size:8px; } }
@media (max-width:760px) { .player-setlist-toolbar { width:100%; align-items:end; justify-content:space-between; gap:10px; flex-wrap:wrap; }.player-setlist-selection { flex:1 1 100%; gap:8px; }.player-setlist-toolbar .setlist-picker--collection { flex:1 1 130px; width:auto; min-width:0; }.player-all-songs-search { flex:1 1 150px; min-width:0; min-height:43px; border-radius:7px; }.player-all-songs-search input { min-height:41px; }.player-setlist-summary { gap:9px; }.player-setlist-summary span { min-width:0; }.player-setlist-summary strong { font-size:14px; }.player-setlist-summary small { font-size:8px; }.player-setlist-summary i { height:23px; } }
@media (min-width:621px) { .header-offline-toggle { min-width:104px; } }

/* A phone in landscape can be wider than the usual 760px phone breakpoint.
   Treat its short viewport as a phone stage surface, not as a compressed
   desktop: the Player uses the whole width and its collection menu gets a
   dedicated layer above the fixed header. */
@media (max-width:760px), (max-height:500px) and (orientation:landscape) {
  .main { padding-right:0; padding-left:0; }
  .main:has(.player-setlist-toolbar .app-select__menu) { z-index:30; overflow:visible; }
  .player-setlist-toolbar .setlist-picker--collection { max-width:none; }
}
@media (max-height:500px) and (orientation:landscape) {
  .app-header { height:52px; gap:5px; padding-right:8px; padding-left:8px; }
  .app-header-brand .kuru-tracks-lockup { display:none; }
  .app-header-wordmark .kuru-wordmark { width:56px; height:auto; }
  .app-header-brand { gap:6px; }
  .header-offline-toggle { min-width:32px; width:32px; padding:0; }
  .header-offline-toggle span { display:none; }
  .app-header-center { grid-template-columns:minmax(74px,1fr) auto auto auto; gap:4px; }
  .app-header-center .workspace-switcher { min-width:0; padding-right:6px; padding-left:6px; }
  .app-header-center .workspace-switcher strong { font-size:9px; }
  .mode-switcher { padding:2px; }
  .mode-switcher__button { min-width:45px; min-height:30px; padding:0 5px; font-size:9px; }
  .header-click-toggle,.header-mixer-toggle { min-width:42px; min-height:30px; border-radius:5px; padding:0 6px; font-size:9px; }
  .main { padding-top:62px; padding-bottom:76px; }
  .topbar-compact { min-height:52px; margin-bottom:10px; }
  .player-setlist-toolbar { gap:7px; }
  .player-setlist-toolbar .setlist-picker--collection { flex:1 1 100%; width:100%; min-width:0; }
  .player-setlist-toolbar .app-select__menu { max-height:calc(100dvh - 140px); }
  .transport { min-height:64px; padding-top:5px; padding-bottom:5px; }
}

/* Stage transport: every Player control has a generous, deliberate hit area.
   Play remains the visual primary action, while Previous, Stop and Next are
   equally usable without precise pointer work during a performance. */
.transport { min-height:104px; padding-top:14px; padding-bottom:14px; }
.transport-song { min-height:62px; display:flex; align-items:center; gap:9px; border:1px solid var(--traxion-line); border-radius:9px; padding:9px 13px; background:var(--traxion-card-soft); }
.transport-song__copy { min-width:0; display:grid; gap:3px; flex:1; }
.transport-song strong { min-width:0; margin:0; overflow:hidden; color:var(--traxion-text); font-size:19px; font-weight:850; letter-spacing:-.025em; line-height:1.08; text-overflow:ellipsis; text-transform:none; white-space:nowrap; }
.transport-song__artist { min-width:0; overflow:hidden; color:var(--traxion-muted); font-size:11px; font-weight:700; letter-spacing:.01em; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.transport-right { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:20px; }
.transport-song-details { width:100%; min-height:62px; display:flex; align-items:center; gap:15px; border:1px solid var(--traxion-line); border-radius:9px; padding:9px 13px; background:var(--traxion-card-soft); }
.transport-song-detail { min-width:0; display:grid; gap:3px; }.transport-song-detail small { color:var(--traxion-muted); font-size:9px; font-weight:900; letter-spacing:.09em; line-height:1; text-transform:uppercase; }.transport-song-detail strong { min-width:0; overflow:hidden; color:var(--traxion-text); font-size:15px; font-weight:800; line-height:1.15; text-overflow:ellipsis; white-space:nowrap; }.transport-song-detail--key { flex:0 0 auto; }.transport-song-detail--note { flex:1 1 auto; }
.transport-controls { gap:16px; }
.transport-skip { min-height:48px; padding:0 14px; border-radius:9px; font-size:15px !important; }
.transport-skip svg { width:21px; height:21px; }
.transport .play { width:64px; height:64px; font-size:24px; }
.transport-stop { min-height:48px; padding:0 14px; border-radius:9px !important; font-size:15px !important; }
.transport-stop > span:first-child { font-size:14px; }
@media (max-width:760px) { .transport { min-height:96px; }.transport-song { min-height:42px; padding:6px 9px; }.transport-song strong { font-size:14px; }.transport-song__artist { font-size:9px; }.transport-right { grid-template-columns:minmax(0,1fr) auto; gap:9px; }.transport-song-details { min-height:38px; gap:9px; padding:6px 9px; }.transport-song-detail { gap:2px; }.transport-song-detail small { font-size:7px; }.transport-song-detail strong { font-size:11px; }.transport-song-detail--note { display:none; }.transport-remaining .timer { font-size:14px; }.transport-controls { gap:5px; }.transport-skip { width:44px; min-height:48px; justify-content:center; padding:0; }.transport .play { width:58px; height:58px; font-size:22px; }.transport-stop { width:44px; min-height:48px; justify-content:center; padding:0; }.transport-stop > span:first-child { font-size:13px; } }
:root[data-traxion-density="compact"] .transport { min-height:84px; }
:root[data-traxion-density="compact"] .transport-song { min-height:50px; padding-top:6px; padding-bottom:6px; }
:root[data-traxion-density="compact"] .transport-song strong { font-size:16px; }
:root[data-traxion-density="compact"] .transport-song-details { min-height:50px; padding-top:6px; padding-bottom:6px; }
:root[data-traxion-density="compact"] .transport-skip,:root[data-traxion-density="compact"] .transport-stop { min-height:42px; }
:root[data-traxion-density="compact"] .transport .play { width:56px; height:56px; font-size:21px; }

/* Personal song notes belong to the signed-in person, not the band. Keep the
   field calm until it contains a reminder, while still making it easy to hit
   on a stage-sized Player row. */
.player-setlist .setlist-row-select { grid-template-columns:64px 54px minmax(220px,1.05fr) 74px minmax(150px,.95fr) 130px 78px; }
.player-setlist .setlist-song { min-width:0; display:grid; grid-template-rows:auto auto; align-items:center; }.player-setlist .setlist-song strong { min-width:0; }.player-setlist .setlist-song .setlist-song-artist { min-width:0; }
.player-song-meta { min-width:0; display:grid; grid-template-rows:minmax(16px,auto) minmax(16px,auto); align-content:center; gap:2px; }
.player-song-key { min-width:0; min-height:16px; overflow:hidden; color:var(--traxion-muted); font-size:16px; font-weight:800; letter-spacing:.02em; text-overflow:ellipsis; white-space:nowrap; }
.player-song-meta .setlist-encore-label,.player-song-encore-placeholder { display:block; width:max-content; min-height:16px; margin:0; }
.player-song-encore-placeholder { visibility:hidden; }
.player-song-stage { min-width:0; display:grid; grid-template-rows:minmax(21px,auto) minmax(14px,auto); align-content:center; gap:2px; }
.player-song-tempo { min-width:0; min-height:21px; display:flex; align-items:baseline; gap:4px; overflow:hidden; white-space:nowrap; }
.player-song-tempo strong { color:var(--traxion-accent-soft); font-size:23px; font-weight:900; letter-spacing:-.045em; line-height:1; }
.player-song-tempo small { color:var(--traxion-muted); font-size:8px; font-weight:900; letter-spacing:.08em; line-height:1; text-transform:uppercase; }
.player-song-stage .audio-ready-status { min-width:0; overflow:hidden; font-size:9px; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
.player-personal-note { display:block; min-width:0; padding-left:32px; }
.player-personal-note input { width:100%; min-height:36px; border:1px solid transparent; border-radius:6px; padding:7px 9px; background:transparent; color:var(--traxion-text); font:650 16px/1.25 inherit; letter-spacing:.01em; outline:0; }
.player-personal-note input::placeholder { color:color-mix(in srgb, var(--traxion-muted) 48%, transparent); }
.player-setlist .setlist-row:hover .player-personal-note input { background:rgba(var(--traxion-accent-rgb),.035); border-color:var(--traxion-line); }
.player-personal-note input:focus { border-color:rgba(var(--traxion-accent-rgb),.82); background:rgba(var(--traxion-accent-rgb),.09); box-shadow:0 0 0 2px rgba(var(--traxion-accent-rgb),.13); }
.player-personal-note input:disabled { cursor:not-allowed; opacity:.55; }
@media (max-width:1100px) and (min-width:761px) { .player-setlist .setlist-row-select { grid-template-columns:52px 54px minmax(150px,1fr) 62px minmax(120px,.9fr) 110px 70px; gap:7px; } .player-setlist .setlist-song-play,.player-song-transport { left:74px; } .player-personal-note { padding-left:18px; } .player-personal-note input { padding-right:5px; padding-left:5px; font-size:15px; } .player-song-key { font-size:14px; } }
@media (max-width:760px) { .player-setlist .setlist-row-select { min-height:110px; grid-template-columns:38px 54px minmax(0,1fr) minmax(5ch,auto); grid-template-rows:minmax(26px,auto) minmax(32px,auto) minmax(24px,auto); align-content:center; } .player-setlist .setlist-index,.player-setlist .setlist-play-spacer { grid-row:1 / span 3; } .player-setlist .setlist-song { grid-column:3; grid-row:1; } .player-song-meta { grid-column:3; grid-row:2; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:1fr; align-items:center; gap:8px; } .player-song-meta .setlist-encore-label,.player-song-encore-placeholder { min-height:0; }.player-song-key { align-self:end; font-size:13px; } .player-personal-note { grid-column:3; grid-row:3; padding-left:0; } .player-song-stage { display:none; } .player-personal-note input { min-height:23px; padding:2px 0; border-radius:0; font-size:14px; } .player-setlist .setlist-row:hover .player-personal-note input { background:transparent; border-color:transparent; } .player-setlist .setlist-duration { grid-column:4; grid-row:1 / span 3; } .player-setlist .setlist-row.has-timeline-labels .setlist-row-select,.player-setlist .setlist-row.has-timeline-labels .setlist-song-menu { min-height:120px; } }

/* Compact Player rows reserve only the narrow strip the section markers need.
   The actual song controls are shifted upward instead of being vertically
   centred in the full row, which removes the empty band above them. */
@media (min-width:761px) {
  /* On desktop Compact mode uses one shared chrome height: the transport
     feels like the lower counterpart to the global header instead of a
     heavier second bar. The 56px Play target still fits inside this 64px row. */
  :root[data-traxion-density="compact"] .app-header,
  :root[data-traxion-density="compact"] .transport { height:64px; min-height:64px; }
  /* Keep every Songbook surface below the same fixed header. The compact
     Songbook inset used to be 58px while the desktop header is 64px, which
     left the top six pixels of its controls behind the header after a view
     change (most noticeably from Settings). */
  :root[data-traxion-density="compact"] .main--songbook,
  :root[data-traxion-density="compact"] .main:has(.songbook-view) { padding-top:64px; }
  :root[data-traxion-density="compact"] .transport { padding-top:4px; padding-bottom:4px; }
  :root[data-traxion-density="compact"] .player-setlist .setlist-row-select,
  :root[data-traxion-density="compact"] .player-setlist .setlist-song-menu { min-height:58px; }
  :root[data-traxion-density="compact"] .player-setlist .setlist-row.has-timeline-labels .setlist-row-select,
  :root[data-traxion-density="compact"] .player-setlist .setlist-row.has-timeline-labels .setlist-song-menu { min-height:70px; }
  :root[data-traxion-density="compact"] .player-setlist .setlist-row-select { padding-top:4px; padding-bottom:12px; }
  :root[data-traxion-density="compact"] .player-setlist .setlist-song-play,
  :root[data-traxion-density="compact"] .player-song-transport { transform:translateY(calc(-50% - 5px)); }
  :root[data-traxion-density="compact"] .player-timeline-labels { height:12px; }
  :root[data-traxion-density="compact"] .player-timeline-label { font-size:8px; }
  :root[data-traxion-density="compact"] .player-timeline-label i { height:8px; }
}

/* Settings is deliberately a two-column control surface, not a dashboard of
   cards. The same sparse, row-based rhythm as the setlist editor keeps it
   readable during a fast stage setup. */
.main.main--settings { padding-top:18px; }
:root[data-traxion-density="compact"] .main.main--settings { padding-top:14px; }
.settings-plain { width:100%; max-width:1400px; margin:0 auto; padding-bottom:24px; }
.settings-plain__header { display:flex; align-items:baseline; justify-content:space-between; gap:16px; min-height:42px; border-bottom:1px solid var(--traxion-line); padding:0 0 9px; }
.settings-plain__header h1 { margin:0; color:var(--traxion-text); font-size:23px; letter-spacing:-.05em; }
.settings-plain__header span { color:var(--traxion-muted); font-size:12px; }
.settings-plain__columns { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.08fr); gap:32px; margin-top:14px; }
.settings-plain__column { min-width:0; }
.settings-plain__midi { margin-top:24px; }
.settings-plain__column > header { min-height:31px; border-bottom:1px solid var(--traxion-line); padding:0 0 9px; }
.settings-plain__column > header span { color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
.settings-plain__row { display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:68px; border-bottom:1px solid var(--traxion-line); padding:10px 0; }
.settings-plain__row > div:first-child { min-width:0; display:grid; gap:3px; }
.settings-plain__row strong { color:var(--traxion-text); font-size:14px; letter-spacing:-.02em; }
.settings-plain__row small,.settings-plain__notice { color:var(--traxion-muted); font-size:11px; line-height:1.4; }
.settings-plain__row em { flex:0 0 auto; color:var(--traxion-muted); font-size:9px; font-style:normal; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.settings-plain__row select { width:144px; min-height:34px; border:1px solid var(--traxion-line); border-radius:6px; padding:0 30px 0 10px; background:var(--traxion-card-soft); color:var(--traxion-text); font:800 12px inherit; }
.settings-plain__row--offline { align-items:center; }
.settings-plain__row--offline em { margin-top:3px; color:var(--traxion-accent-soft); font-size:10px; font-style:normal; font-weight:800; letter-spacing:0; text-transform:none; }
.settings-sign-out-button { border-color:rgba(255,138,129,.45); color:#ffaaa3; }
.settings-sign-out-button:hover { border-color:rgba(255,138,129,.8); background:rgba(255,112,100,.12); color:#ffd0cc; }
.settings-plain__row--cloud-server { min-height:72px; }
.settings-cloud-server-download { flex:0 0 auto; text-decoration:none; white-space:nowrap; }
.settings-plain__row--kaamos { min-height:78px; }
.settings-plain__row--mixer { display:grid; grid-template-columns:minmax(0,1fr); align-items:stretch; gap:11px; }
.settings-plain__row--mixer > .mixer-connection-form { width:100%; }
.settings-plain__row--mixer-channels { align-items:flex-start; }
.mixer-channel-groups { flex:0 0 min(58%,390px); display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; }
.mixer-channel-group { min-width:0; min-height:44px; display:flex; align-items:center; gap:9px; border:1px solid var(--traxion-line); border-radius:7px; padding:8px 10px; background:var(--traxion-card-soft); color:var(--traxion-muted); font-size:11px; font-weight:850; cursor:pointer; user-select:none; }
.mixer-channel-group:hover { border-color:rgba(var(--traxion-accent-rgb),.48); color:var(--traxion-text); }
.mixer-channel-group.is-selected { border-color:rgba(var(--traxion-accent-rgb),.58); background:rgba(var(--traxion-accent-rgb),.14); color:var(--traxion-text); }
.mixer-channel-group input { width:18px; height:18px; flex:0 0 18px; margin:0; accent-color:var(--traxion-accent); }
.mixer-channel-group span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-plain__status { margin:8px 0 0 !important; color:var(--traxion-muted); font-size:11px; line-height:1.4; }
.settings-backstage-actions { flex:0 0 auto; display:flex !important; align-items:center; justify-content:flex-end; gap:7px !important; }
.settings-native-sign-in { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; align-items:end; gap:9px; border-bottom:1px solid var(--traxion-line); padding:11px 0 13px; }
.settings-native-sign-in label { display:grid; gap:5px; color:var(--traxion-muted); font-size:11px; }
.settings-native-sign-in input { width:100%; min-height:36px; border:1px solid var(--traxion-line); border-radius:6px; padding:7px 9px; background:var(--traxion-deep); color:var(--traxion-text); font:700 13px inherit; }
.settings-native-sign-in > div { display:flex; gap:7px; }
.settings-native-sign-in .access-login-error { grid-column:1 / -1; margin:0; }
.settings-native-cloud-choice { display:grid; gap:8px; border-bottom:1px solid var(--traxion-line); padding:11px 0 13px; }
.settings-native-cloud-choice p { margin:0; color:var(--traxion-text); font-size:12px; line-height:1.45; }
.settings-native-cloud-choice small { color:var(--traxion-muted); font-size:10px; line-height:1.4; }
.settings-native-cloud-choice__actions { display:flex; flex-wrap:wrap; gap:7px; }
.settings-native-cloud-choice.is-error p { color:#ffaaa3; }
.settings-plain__notice { margin:8px 0 0; }
.settings-plain__outputs { display:flex !important; flex-wrap:wrap; justify-content:flex-end; gap:6px 10px !important; }
.settings-plain__outputs span { display:inline-flex; align-items:center; gap:6px; color:var(--traxion-text); font-size:11px; font-weight:750; }
.settings-plain__outputs span.is-empty { color:var(--traxion-muted); font-weight:600; }
.settings-plain__outputs i { width:6px; height:6px; border-radius:50%; background:var(--channel-color); box-shadow:0 0 8px var(--channel-color); }
.settings-plain .offline-stage-actions { justify-content:flex-end; }
.settings-plain .settings-segmented { width:auto; }
.settings-midi-map { border-bottom:1px solid var(--traxion-line); padding:12px 0; }
.settings-midi-map__header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.settings-midi-map__header > div:first-child { min-width:0; display:grid; gap:3px; }
.settings-midi-map__header strong,.settings-midi-map__row strong { color:var(--traxion-text); font-size:14px; letter-spacing:-.02em; }
.settings-midi-map__header small,.settings-midi-map__row small { color:var(--traxion-muted); font-size:11px; line-height:1.4; }
.settings-midi-map__actions,.settings-midi-map__row-actions { display:flex; align-items:center; gap:6px; }
.settings-midi-map__actions { flex:0 0 auto; }
.settings-midi-map__status { margin-top:9px !important; }
.settings-midi-map__status.is-learning { color:var(--traxion-accent-soft); }
.settings-midi-map__list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-top:10px; }
.settings-midi-map__row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:8px; min-height:61px; border:1px solid var(--traxion-line); border-radius:7px; padding:8px; background:var(--traxion-card-soft); }
.settings-midi-map__row > div:first-child { min-width:0; display:grid; gap:2px; }
.settings-midi-map__row.is-mapped { border-color:rgba(var(--traxion-accent-rgb),.42); }
.settings-midi-map__row.is-learning { box-shadow:0 0 0 1px var(--traxion-accent),0 0 18px rgba(var(--traxion-accent-rgb),.16); }
.settings-midi-map__row output { min-width:76px; color:var(--traxion-muted); font-size:10px; font-weight:850; letter-spacing:.02em; text-align:right; white-space:nowrap; }
.settings-midi-map__row.is-mapped output { color:var(--traxion-accent-soft); }
.settings-midi-map__row-actions { justify-content:flex-end; }
.settings-midi-map__clear { width:28px; min-width:28px; min-height:30px; border:1px solid var(--traxion-line); border-radius:5px; padding:0; background:transparent; color:var(--traxion-muted); font:800 19px/1 inherit; }
.settings-midi-map__clear:hover { border-color:rgba(239,117,107,.72); color:#ef9d95; }

/* Wide tablets keep the two-column overview. Only genuinely narrow viewports
   collapse to one column, regardless of whether the device uses touch. */
@media (max-width:1180px) {
  .settings-plain__columns { grid-template-columns:1fr; gap:24px; }
}
@media (max-width:760px) {
  .main.main--settings { padding-top:12px; }
  .settings-plain { padding-bottom:16px; }
  .settings-plain__header { min-height:34px; padding-bottom:7px; }
  .settings-plain__header h1 { font-size:21px; }
  .settings-plain__header span { display:none; }
  .settings-plain__columns { gap:20px; margin-top:10px; }
  .settings-plain__row { display:grid; grid-template-columns:minmax(0,1fr); gap:9px; min-height:0; padding:11px 0; }
  .settings-plain__row select,.settings-plain__row > .app-select,.settings-plain .settings-segmented,.settings-plain .offline-stage-actions { width:100%; }
  .mixer-channel-groups { width:100%; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .settings-plain .settings-segmented button,.settings-plain .offline-stage-actions button { flex:1; }
  .settings-plain__outputs { justify-content:flex-start; }
  .settings-midi-map__header { display:grid; gap:10px; }
  .settings-midi-map__actions { width:100%; }
  .settings-midi-map__actions button { flex:1; }
  .settings-midi-map__list { grid-template-columns:1fr; }
}

:root[data-traxion-density="compact"] .songbook-list .setlist-picker .app-select__trigger { min-height:32px; border-radius:4px; }
:root[data-traxion-density="compact"] .songbook-editor__tools .app-select__trigger,
:root[data-traxion-density="compact"] .setlist-editor-field .app-select__trigger { min-height:32px; border-radius:3px; padding:0 8px; font-size:12px; }

/* Pause and Stop need twice the width of the idle Play target. Position the
   pair so its Stop half exactly replaces Play, while Pause uses the space to
   its left and never reaches the song title. */
@media (min-width:1101px) {
  .player-setlist .player-song-transport { left:51px; }
}
@media (min-width:761px) and (max-width:1100px) {
  .player-setlist .player-song-transport { left:36px; }
}

/* A KAAMOS Slave follows the Master's selection and transport; without local
   controls its workspace can use the complete height. */
.app-shell--kaamos-slave .main { padding-bottom:30px; }
:root[data-traxion-density="compact"] .app-shell--kaamos-slave .main { padding-bottom:24px; }
.kaamos-audio-gate {
  position:fixed;
  z-index:160;
  top:104px;
  left:50%;
  width:min(720px,calc(100vw - 32px));
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  border:1px solid rgba(var(--traxion-accent-rgb),.62);
  border-radius:12px;
  padding:14px 16px;
  background:var(--traxion-panel);
  box-shadow:0 18px 48px rgba(0,0,0,.42),0 0 24px rgba(var(--traxion-accent-rgb),.13);
}
.kaamos-audio-gate > div { min-width:0; display:grid; gap:3px; }
.kaamos-audio-gate span { color:var(--traxion-accent-soft); font-size:10px; font-weight:900; letter-spacing:.13em; }
.kaamos-audio-gate strong { color:var(--traxion-text); font-size:16px; }
.kaamos-audio-gate small { color:var(--traxion-muted); font-size:11px; line-height:1.4; }
.kaamos-audio-gate button { flex:0 0 auto; min-width:128px; min-height:44px; pointer-events:auto; touch-action:manipulation; }
.kaamos-audio-gate.is-error { border-color:rgba(239,117,107,.72); }
.kaamos-audio-gate.is-error small { color:#ef9d95; }
:root[data-traxion-density="compact"] .kaamos-audio-gate { top:76px; }
.app-shell--songbook-fullscreen .kaamos-audio-gate,.app-shell--songbook-prompter .kaamos-audio-gate { top:18px; }
@media (max-width:760px) {
  .app-shell--kaamos-slave .main { padding-bottom:calc(24px + env(safe-area-inset-bottom)); }
  .kaamos-audio-gate { top:76px; display:grid; gap:10px; padding:12px; }
  .kaamos-audio-gate button { width:100%; }
  .app-shell--songbook-fullscreen .kaamos-audio-gate,.app-shell--songbook-prompter .kaamos-audio-gate { top:12px; }
}

/* Stage Console -----------------------------------------------------------
   A complete KURU live-desk skin: black frame, graphite modules, cyan panel
   outlines and strong functional colours. It deliberately changes component
   surfaces as well as tokens so it reads as a console, not a green tint. */
:root[data-traxion-theme="stage-console"] body {
  background:
    linear-gradient(rgba(43,104,111,.022) 1px,transparent 1px),
    linear-gradient(90deg,rgba(43,104,111,.018) 1px,transparent 1px),
    linear-gradient(180deg,#050607,#0d1012 45%,#070809);
  background-size:48px 48px,48px 48px,auto;
}
:root[data-traxion-theme="stage-console"] .app-header {
  border-bottom:2px solid #225960;
  background:#030404;
  box-shadow:0 4px 0 rgba(0,0,0,.68),0 9px 28px rgba(0,0,0,.36);
  backdrop-filter:none;
}
:root[data-traxion-theme="stage-console"] .workspace-switcher,
:root[data-traxion-theme="stage-console"] .icon-button,
:root[data-traxion-theme="stage-console"] .header-offline-toggle {
  border-color:#28575d;
  border-radius:4px;
  background:linear-gradient(180deg,#2b2f33,#202427 52%,#171a1d);
  box-shadow:inset 0 1px rgba(255,255,255,.08),inset 0 -1px rgba(0,0,0,.72);
}
:root[data-traxion-theme="stage-console"] .workspace-switcher {
  box-shadow:inset 5px 0 #2c7078,inset 0 1px rgba(255,255,255,.08),inset 0 -1px rgba(0,0,0,.72);
}
:root[data-traxion-theme="stage-console"] .header-offline-toggle.is-online {
  border-color:#286f39;
  background:linear-gradient(180deg,#173a20,#0c2111);
  color:#87b690;
}
:root[data-traxion-theme="stage-console"] .mode-switcher {
  border-color:#285a61;
  border-radius:4px;
  padding:2px;
  background:#0d1012;
  box-shadow:inset 0 0 0 1px #020303;
}
:root[data-traxion-theme="stage-console"] .mode-switcher__button,
:root[data-traxion-theme="stage-console"] .header-click-toggle,
:root[data-traxion-theme="stage-console"] .header-mixer-toggle {
  border-radius:3px;
  background:linear-gradient(180deg,#2a2e32,#1d2124);
  color:#b8bcbe;
  box-shadow:inset 0 1px rgba(255,255,255,.07),inset 0 -1px rgba(0,0,0,.68);
}
:root[data-traxion-theme="stage-console"] .mode-switcher__button.active,
:root[data-traxion-theme="stage-console"] .mode-switcher__button.is-active,
:root[data-traxion-theme="stage-console"] .mode-switcher__button[aria-pressed="true"] {
  background:linear-gradient(180deg,#347d43,#20582d);
  color:#edf1ee;
  box-shadow:inset 0 1px rgba(255,255,255,.12),inset 0 -2px rgba(0,35,8,.58);
}
:root[data-traxion-theme="stage-console"] .header-click-toggle.is-active {
  border-color:#6e3968;
  background:linear-gradient(180deg,#713466,#441d40);
  color:#e6d9e4;
  box-shadow:inset 0 1px rgba(255,255,255,.1);
}
:root[data-traxion-theme="stage-console"] .header-mixer-toggle.is-active {
  border-color:#326970;
  background:linear-gradient(180deg,#2b6268,#1b3f44);
  color:#d9e5e6;
  box-shadow:inset 0 1px rgba(255,255,255,.09);
}
:root[data-traxion-theme="stage-console"] .header-clock { color:#f4f4f0; text-shadow:0 1px #000; }
:root[data-traxion-theme="stage-console"] .main { background:rgba(11,14,16,.56); }
:root[data-traxion-theme="stage-console"] .setlist-picker--collection .app-select__trigger {
  border-color:#285c63;
  border-width:1px;
  border-radius:4px;
  background:linear-gradient(180deg,#2b3034,#202427 54%,#171a1d);
  box-shadow:inset 6px 0 #2b8a3f,inset 0 1px rgba(255,255,255,.08),inset 0 -1px rgba(0,0,0,.7);
}
:root[data-traxion-theme="stage-console"] .setlist-picker--collection .app-select__trigger:hover:not(:disabled) {
  border-color:#37727a;
  background:linear-gradient(180deg,#33383c,#25292d 54%,#1c2023);
}
:root[data-traxion-theme="stage-console"] .app-select__menu,
:root[data-traxion-theme="stage-console"] .more-menu,
:root[data-traxion-theme="stage-console"] .workspace-menu {
  border-color:#285c63;
  border-radius:3px;
  background:#15191c;
  box-shadow:0 12px 28px rgba(0,0,0,.72),inset 0 1px rgba(255,255,255,.08);
}
:root[data-traxion-theme="stage-console"] .app-select__option.is-selected,
:root[data-traxion-theme="stage-console"] .workspace-option.active {
  background:linear-gradient(90deg,#347d43,#20582d);
  color:#edf1ee;
  box-shadow:none;
}
:root[data-traxion-theme="stage-console"] .player-setlist {
  border-color:#28575e;
  border-radius:3px;
  background:#111416;
  box-shadow:0 0 0 1px #050607,0 9px 26px rgba(0,0,0,.28);
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row {
  border-bottom-color:#272d31;
  background:linear-gradient(180deg,#181c1f,#131618);
  box-shadow:inset 0 1px rgba(255,255,255,.02);
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row:nth-child(even) {
  background:linear-gradient(180deg,#15191c,#101315);
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row:hover {
  background:linear-gradient(180deg,#252a2e,#1b1f22);
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row.selected,
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row.selected.has-playback-progress:not(.playing) {
  background:linear-gradient(180deg,#2a2f33,#22262a 54%,#1a1e21);
  box-shadow:inset 6px 0 #2b8a3f,inset 0 1px rgba(255,255,255,.07),inset 0 -1px #050606;
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row.has-playback-progress {
  background:linear-gradient(90deg,rgba(43,120,60,.34) 0 var(--playback-progress),#1b1f22 var(--playback-progress) 100%);
  box-shadow:inset 6px 0 #2b8a3f,inset 0 -2px #285a61;
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-song-play {
  border-color:#2b5d63;
  border-radius:3px;
  background:linear-gradient(180deg,#2c3135,#1d2124);
  color:#75a67e;
  box-shadow:inset 0 1px rgba(255,255,255,.07),0 1px 2px #030404;
}
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-song-play:hover {
  border-color:#3d8d4e;
  background:linear-gradient(180deg,#347d43,#20582d);
  color:#edf1ee;
}
:root[data-traxion-theme="stage-console"] .player-song-tempo strong { color:#f4f4f0; }
:root[data-traxion-theme="stage-console"] .player-setlist .setlist-row.selected .player-song-tempo strong { color:#75a67e; }
:root[data-traxion-theme="stage-console"] .player-timeline-label:nth-child(4n+1) i { background:#347d43; box-shadow:none; }
:root[data-traxion-theme="stage-console"] .player-timeline-label:nth-child(4n+2) i { background:#326970; box-shadow:none; }
:root[data-traxion-theme="stage-console"] .player-timeline-label:nth-child(4n+3) i { background:#713466; box-shadow:none; }
:root[data-traxion-theme="stage-console"] .player-timeline-label:nth-child(4n) i { background:#9a873a; box-shadow:none; }
:root[data-traxion-theme="stage-console"] .transport {
  border-top:2px solid #285a61;
  background:#030404;
  box-shadow:0 -5px 0 rgba(0,0,0,.55),0 -16px 32px rgba(0,0,0,.36);
  backdrop-filter:none;
}
:root[data-traxion-theme="stage-console"] .transport-song-details {
  border-color:#28575d;
  border-radius:3px;
  background:linear-gradient(180deg,#262a2e,#181c1f);
  box-shadow:inset 0 1px rgba(255,255,255,.07);
}
:root[data-traxion-theme="stage-console"] .transport-skip {
  border:1px solid #30363a;
  border-radius:3px;
  background:linear-gradient(180deg,#292e32,#191d20);
  color:#c8cccd !important;
  box-shadow:inset 0 1px rgba(255,255,255,.07);
}
:root[data-traxion-theme="stage-console"] .transport .play {
  width:64px;
  height:52px;
  border:1px solid #3d7c49;
  border-radius:5px;
  background:linear-gradient(180deg,#347d43,#20582d);
  color:#edf1ee;
  box-shadow:inset 0 1px rgba(255,255,255,.13),inset 0 -3px rgba(0,35,8,.48);
}
:root[data-traxion-theme="stage-console"] .transport-stop:not(:disabled) {
  border-color:#824040 !important;
  background:linear-gradient(180deg,#762929,#431616) !important;
  color:#e6d8d8 !important;
  box-shadow:inset 0 1px rgba(255,255,255,.09);
}
:root[data-traxion-theme="stage-console"] .settings-plain__columns,
:root[data-traxion-theme="stage-console"] .settings-midi-map {
  border-color:#28575e;
  border-radius:3px;
  background:#111416;
}
:root[data-traxion-theme="stage-console"] .settings-plain__row {
  border-bottom-color:#272d31;
  padding-right:12px;
  padding-left:12px;
  background:linear-gradient(180deg,#191d20,#131618);
}
:root[data-traxion-theme="stage-console"] .settings-segmented {
  border-color:#28575e;
  border-radius:3px;
  background:#0d1012;
}
:root[data-traxion-theme="stage-console"] .settings-segmented button.is-active {
  background:linear-gradient(180deg,#347d43,#20582d);
  color:#edf1ee;
  box-shadow:inset 0 1px rgba(255,255,255,.1);
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__groups,
:root[data-traxion-theme="stage-console"] .songbook-mixer__surface {
  background:#090b0c;
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__group.is-selected {
  border-color:var(--mixer-group-colour);
  border-radius:3px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--mixer-group-colour) 15%,#2b3034),#1a1e21);
  box-shadow:inset 6px 0 var(--mixer-group-colour);
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__channel {
  border-radius:3px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--mixer-channel-colour) 11%,#24282c),#15191c 18%,#0f1214);
  box-shadow:inset 0 5px 0 var(--mixer-channel-colour),inset 1px 0 rgba(255,255,255,.07),inset -1px 0 rgba(0,0,0,.62);
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__fader-knob {
  border-radius:2px;
  background:repeating-linear-gradient(to bottom,#777b7e 0 2px,#4f5356 2px 4px,#868a8c 4px 6px);
  box-shadow:inset 1px 1px #a4a7a8,inset -1px -1px #292b2d,0 3px 6px #000;
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__fader-knob::before {
  top:9px;
  height:3px;
  background:#a6aaac;
  box-shadow:0 1px #343638;
}
:root[data-traxion-theme="stage-console"] .songbook-mixer__channel.is-muted .songbook-mixer__channel-on {
  border-color:#824040;
  background:linear-gradient(180deg,#762929,#431616);
}

/* Arrangement workspace: song metadata, transport, then timeline tools. */
.audio-grid-ruler,.audio-grid-lane-track { background-size:var(--major-grid-px,calc(var(--beat-px) * 4)) 100%,var(--minor-grid-px,var(--beat-px)) 100%; }
.audio-editor-topbar:has(.audio-editor-top-fields) { grid-template-columns:1fr auto; gap:12px; margin-bottom:12px; }
.audio-editor-topbar .audio-editor-top-fields { grid-row:2; grid-column:1 / -1; width:100%; grid-template-columns:minmax(160px,1.3fr) minmax(140px,1fr) 82px auto auto; gap:12px; }
.audio-editor-topbar .audio-editor-top-actions { grid-row:1; grid-column:2; }
.audio-editor-topbar .audio-editor-top-fields input { min-height:44px; }
.audio-editor .audio-editor-toolbar { display:grid; gap:0; width:100%; border:1px solid var(--traxion-line); border-radius:8px; background:var(--traxion-panel); }
.audio-editor-transport-row,.audio-editor-scale-row { display:flex; align-items:center; flex-wrap:wrap; gap:12px 18px; padding:10px 12px; min-width:0; }
.audio-editor-scale-row { border-top:1px solid var(--traxion-line); }
.audio-editor .audio-editor-toolbar .quiet-button { margin:0; }
.audio-editor .audio-editor-preview,.audio-editor .audio-editor-file-actions,.audio-editor .audio-editor-clip-actions { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:0; }
.audio-editor .audio-editor-clip-actions { margin-left:auto; padding-left:16px; border-left:1px solid var(--traxion-line); }
.audio-editor .audio-editor-preview { padding-right:16px; border-right:1px solid var(--traxion-line); }
.audio-editor .audio-editor-preview [data-editor-preview-time] { font-variant-numeric:tabular-nums; white-space:nowrap; min-width:100px; font-size:12px; }
.audio-editor .audio-editor-toolbar button { min-height:44px; padding:0 12px; font-size:12px; }
.audio-editor .audio-editor-toolbar .audio-zoom-button { width:44px; flex:none; font-size:20px; }
.audio-editor .audio-editor-toolbar .audio-song-length-control { min-width:90px; width:90px; }
.audio-editor .audio-song-length-control input { width:100%; min-height:36px; border:1px solid var(--traxion-line); border-radius:6px; padding:0 8px; background:var(--traxion-card-soft); color:var(--traxion-text); font:inherit; font-size:13px; }
.audio-editor-grid-summary { display:grid; gap:7px; }
.audio-editor-grid-summary > span,.outputs-startup label > span { color:var(--traxion-muted); font-size:10px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.audio-editor .audio-zoom-control { min-width:0 !important; flex:1 1 290px; max-width:390px; }
.audio-editor .audio-zoom-control input { min-width:60px; height:36px; }
.audio-editor [data-action="audio-track-height"][aria-pressed="true"] { border-color:var(--traxion-accent); background:rgba(var(--traxion-accent-rgb),.18); }
.audio-grid-lane-title { padding-right:86px; }
.audio-grid-lane-actions button { width:40px; height:40px; }
.audio-grid-lane-meta { min-height:134px; box-sizing:border-box; }
.audio-grid-track-gain input,.audio-grid-click-gain input { min-height:28px; }
.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-lane,.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-lane-track,.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-lane-meta { min-height:100px; }
.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-lane-meta { padding:8px 12px; gap:4px; }
.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-lane-actions { top:8px; right:12px; }
.audio-grid-timeline-wrap.is-compact-tracks .audio-grid-clip { top:6px; bottom:6px; border-radius:3px; }
.audio-grid-horizontal-scroll { padding-top:6px; padding-bottom:6px; }
.audio-grid-overview-track { height:32px; }
.audio-grid-overview-handle { width:20px; height:28px; }
.audio-grid-overview-handle::after { left:8px; }
.outputs-startup { display:flex; flex-wrap:wrap; align-items:center; gap:16px 24px; border:1px solid var(--traxion-line); border-radius:8px; padding:16px; margin-bottom:20px; background:var(--traxion-panel); }
.outputs-startup label { display:grid; gap:8px; flex:0 1 320px; min-width:0; }
.outputs-startup p { flex:1 1 280px; max-width:680px; margin:0; color:var(--traxion-muted); font-size:13px; line-height:1.5; }
@media (max-width:1100px) {
  .audio-editor-topbar .audio-editor-top-fields { grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) 82px auto; }
  .audio-editor-top-fields .audio-song-click-accent-control { grid-column:1 / -1; justify-self:start; }
  .audio-editor .audio-editor-clip-actions { margin-left:0; }
}
@media (max-width:700px) {
  .audio-editor-topbar .audio-editor-top-fields { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .audio-editor-topbar .audio-editor-top-fields label { min-width:0 !important; }
  .audio-editor .audio-editor-preview,.audio-editor .audio-editor-clip-actions { border:0; padding:0; }
  .audio-editor-scale-row { gap:12px; }
}
