/* Manager workspace rhythm: 16px page margin, 12px gaps, 9px panels, 34px controls. */
:root{--radius:9px;--workspace-header:80px;--workspace-selection:#22314b;--workspace-button:#242a34;--workspace-hover:#303744}
html[data-theme="light"]{--workspace-selection:#e6efff;--workspace-button:#eef2f7;--workspace-hover:#e1e8f2}
body{font-size:13px;line-height:1.45}
button{min-height:34px;padding:7px 11px;border-radius:6px;font-weight:600;background:var(--workspace-button)}
button:hover{background:var(--workspace-hover)}
button.primary{background:var(--accent2);border-color:var(--accent2);color:#fff}button.primary:hover{background:var(--accent)}
button.ghost{background:transparent}button.danger.ghost{color:var(--danger)}
button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input,select,textarea{border-radius:6px;padding:8px 10px}input:not([type=checkbox]):not([type=radio]),select{min-height:34px}
input[type=checkbox],input[type=radio]{accent-color:var(--accent2)}
.icon-button{width:36px;height:34px;min-width:36px;font-size:19px}
.topbar{height:var(--workspace-header);grid-template-columns:176px minmax(0,1fr) auto;gap:12px;padding:6px 16px;background:var(--panel)}
.topnav{align-self:center;gap:4px;overflow-x:auto;scrollbar-width:thin;min-width:0}
.topnav .nav-button{flex:0 0 78px;height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:7px 8px;border:1px solid var(--line);border-radius:6px;background:var(--workspace-button);color:var(--text);font-size:11px;white-space:nowrap}
.topnav .nav-button svg{width:22px;height:22px;flex:none}
.topnav .nav-button:hover{background:var(--workspace-hover)}
.topnav .nav-button.active{background:var(--accent2);border-color:var(--accent2);color:#fff}
html[data-theme="light"] .topbar .topnav .nav-button.active{background:var(--accent2);border-color:var(--accent2);color:#fff}
.server-state{gap:6px;min-width:0}.server-state strong{max-width:95px}.server-state .icon-button{flex:none}
#appMain{height:calc(100dvh - var(--workspace-header));padding:16px;min-height:0}
#appMain>.page.active{grid-template-columns:280px minmax(0,1fr);gap:12px}
#appMain>.single-page.active{display:block}
.list-pane,.detail-pane{background:var(--panel);border:1px solid var(--line);border-radius:9px;min-height:0}
.list-pane{padding:0;overflow:hidden}
.pane-head{padding:13px 11px;background:var(--panel2);border-bottom:1px solid var(--line);flex:none;min-height:59px}
.pane-head h1,.editor-head h2,.inspector-head h3{font-size:16px;font-weight:600}.pane-head p,.section-head p{font-size:11px;line-height:1.45}
.list-pane>.search{margin:10px;height:36px;flex:none}.search{border-radius:6px}
.entity-list{padding:6px;gap:3px;flex:1;min-height:60px;grid-auto-rows:max-content;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}
/* Automatic grid tracks can compress overflow:hidden text to zero when the list is full.
   Rows keep their content height; only the list viewport is allowed to shrink. */
.entity{padding:9px 10px;border-radius:5px;font-size:12px;min-width:0;grid-auto-rows:max-content;align-content:center;line-height:1.45}
.entity.song-entity{padding-right:38px}
.entity strong,.entity small{display:block;min-width:0;line-height:1.45}
.entity .meta{min-width:0;flex-wrap:nowrap;font-weight:400}
.entity .meta>small:first-child,.entity .meta>small:last-child,.entity .meta>.badge:first-child,.entity .meta>.badge:last-child{flex:none}
.entity .meta>small:not(:first-child):not(:last-child){flex:1}
.entity .meta .badge{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.entity.active,.entity.active:hover{background:var(--workspace-selection);border-color:transparent;box-shadow:inset 3px 0 var(--accent2)}
.entity small{font-size:11px}.entity:hover{background:var(--panel2)}
.editor{max-width:none;margin:0;padding:12px;min-height:100%}
.editor-head{margin:-12px -12px 12px;padding:13px;background:var(--panel2);min-height:60px;align-items:center}
.editor-head>div:first-child,.inspector-head>div:first-child{display:flex;flex-direction:column;min-width:0}
.editor-head h2,.inspector-head h3{order:-1;overflow-wrap:anywhere}
.eyebrow{font-size:11px;letter-spacing:0;color:var(--muted);font-weight:400;margin:4px 0 0;line-height:1.45}
.actions,.compact-actions,.row-actions{flex-wrap:wrap}.actions button{white-space:nowrap}
.subtabs,.conti-tabs,.lyrics-mode-switch{display:flex;gap:4px;padding:5px;background:var(--panel2);border:1px solid var(--line);border-radius:7px;margin:0 0 12px;overflow-x:auto;flex-wrap:nowrap}
.subtab,.conti-tabs button,.lyrics-mode-switch button{min-height:30px;border:1px solid transparent;border-radius:5px;padding:6px 12px;background:transparent;color:var(--muted);white-space:nowrap}
.subtab.active,.conti-tabs button.active,.lyrics-mode-switch button.active{background:var(--accent2);border-color:var(--accent2);color:#fff}
.workspace-song-panels{min-width:0}.workspace-panel-caption{display:none}
.form-grid{gap:12px}.form-grid label,.toolbar label,.upload-card label{font-weight:400;color:var(--text)}
.card{border-radius:8px;padding:12px}.card h3{font-size:14px}
.lyrics-structured{background:var(--panel);min-height:340px;height:calc(100dvh - 340px);border-radius:7px}
.lyrics-section-list button.active{background:var(--workspace-selection);border-color:var(--accent2)}
.lyrics-structured>aside,.lyrics-structured>section{padding:9px;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.lyrics-section-list,.lyrics-block-list{min-height:0;flex:1;grid-auto-rows:max-content;overflow-y:auto;overflow-x:hidden}
.lyrics-section-list button{grid-auto-rows:max-content;line-height:1.45}
.lyrics-section-list strong,.lyrics-section-list small{overflow-wrap:anywhere}
.mini-head{flex-wrap:wrap;flex:none}.mini-head button{min-height:27px;padding:3px 8px}
.toolbar label{min-width:160px}.upload-card{grid-template-columns:80px minmax(160px,1fr) minmax(120px,1fr) auto}
.score-row{grid-template-columns:65px minmax(0,1fr) minmax(120px,.8fr) auto}.score-row .filename{color:var(--text)}
.score-page-list{padding:12px;background:var(--bg);border-radius:6px}.empty-state h2{font-size:18px;color:var(--text)}.empty-state>span{font-size:42px}
/* Keep the manager's permanently visible order, selected-item settings and music list. */
#appMain #contisPage.page.active{grid-template-columns:280px minmax(0,1fr)}
#contisPage .list-pane{padding:0}
#contisPage>.detail-pane{gap:12px;border:0;background:transparent;grid-template-columns:minmax(0,1fr) 320px;overflow:hidden}
#contisPage .conti-layout{padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:9px;gap:12px;align-content:start}
#contisPage .conti-inspector{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:0;gap:0}
#contisPage .inspector-head{padding:13px 11px;background:var(--panel2);min-height:60px}
#contisPage .inspector-shell{padding:10px;min-height:0}
#contisPage .inspector-panel.active{padding:0;gap:10px;background:var(--panel);overflow:hidden}
#contisPage .inspector-section-title{padding:8px 10px;background:var(--panel2)}
#contisPage .inspector-panel .inspector-card{background:var(--panel);border:0;padding:10px}
#contisPage #contiInspectorEditor{padding:0 10px 10px}
#contisPage .conti-order-list{padding:0 5px 6px}
#contisPage .conti-info-card{border:0;padding:0;background:transparent}
#contisPage .conti-info-card .form-grid{grid-template-columns:minmax(0,1fr) 190px}
#contisPage .conti-items{min-height:340px}
#contisPage .conti-tabs{margin:0;border-width:0 0 1px;border-radius:0}
#contisPage .conti-items .section-head{padding:10px;background:var(--panel2)}
#contisPage .conti-song.selected,#contisPage .conti-media-item.selected,#contisPage .conti-order-item.selected{background:var(--workspace-selection)}
.conti-filters{padding:0 10px 10px;gap:6px;flex:none}
.workspace-scroll-hint{font-size:11px;color:var(--muted);padding:7px 10px;margin:0;background:var(--panel2);border-bottom:1px solid var(--line)}
#contiSongs{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
@media(min-width:1051px){#contiSongs>.conti-song{min-width:930px}}
.media-editor,.account-editor,.release-editor{max-width:none}.media-row,.account-row,.release-row{border-radius:7px;padding:12px}
.media-row{grid-template-columns:128px minmax(0,1fr) auto}.media-row>img{width:128px}
.media-row>.audio-thumb{width:128px;font-size:42px}
.media-folder-move{display:grid!important;grid-template-columns:auto minmax(0,1fr);min-width:0}
.media-folder-move select{width:min(240px,100%);min-width:0}
.list-pane>.folder-head{flex:none;margin:0 10px 8px}
.list-pane>.folder-list{flex:1;min-height:100px;max-height:none;margin:0 6px 10px;padding:0 4px;align-content:start;grid-auto-rows:max-content;overflow-x:hidden}
.folder-item{grid-auto-rows:max-content;line-height:1.45}.folder-item strong{min-width:0}
.list-pane>.help-box{flex:none;margin:0 10px 10px}
.media-row,.account-row,.release-row,.release-main,.permission-list,.account-main>label{min-width:0}
.permission-list{flex-wrap:wrap}.permission-list label{white-space:nowrap}
.release-main>span,.release-row pre{overflow-wrap:anywhere}
.release-upload{margin-top:12px}.release-row pre{color:var(--text)}
/* Statistics follows the manager's filters / summary / results-and-detail layout. */
#appMain #statisticsPage.active{display:grid;grid-template-columns:240px minmax(0,1fr)}
.workspace-stat-filters .v04-stat-filters{display:grid;border:0;background:transparent;margin:0;padding:12px;gap:12px}
.workspace-stat-filters label{display:grid;gap:6px;font-size:12px}
.workspace-stat-filters #statsStatus{margin:0 12px 12px;font-size:11px;line-height:1.6;color:var(--muted)}
.v04-stat-summary{gap:10px;margin:12px 0}.v04-stat-summary .card{background:var(--panel2)}.v04-stat-summary strong{font-size:24px;margin-top:5px;font-weight:600}
.v04-stat-body{gap:12px;grid-template-columns:minmax(0,3fr) minmax(220px,2fr)}
#statsRows{padding:0;min-height:220px}.v04-table th{background:var(--panel2);font-weight:600}.v04-table td,.v04-table th{padding:9px 10px}
#statsRows button{font-size:12px;text-align:left}#statsDetail{font-size:12px;line-height:1.6;min-height:220px}#statsDetail h3{font-size:15px}
/* Dialogs: fixed header/footer, a single scrolling content area, consistent controls. */
dialog{max-height:92dvh}dialog .dialog-card{max-height:92dvh;border-radius:9px;background:var(--panel)}
dialog:has(>.dialog-card.wide-dialog){width:min(960px,calc(100vw - 32px))}
.dialog-head{background:var(--panel2);padding:13px;gap:12px;flex-shrink:0;align-items:center}.dialog-head h2{font-size:16px;font-weight:600}.dialog-head p{font-size:11px;line-height:1.5}
.dialog-head>div{min-width:0}.dialog-head>.icon-button{flex:0 0 36px}
.dialog-head h2,.dialog-head p{overflow-wrap:anywhere}
.conti-score-card .dialog-head h2{font-size:16px}.conti-score-card .dialog-head{background:transparent}
.dialog-actions{background:var(--panel2);padding:10px 13px;flex:none;margin-top:0;flex-wrap:wrap}.dialog-actions button{min-width:80px}
.workspace-dialog-body{overflow:auto;min-height:0;padding:14px;flex:1;overscroll-behavior:contain}
.workspace-dialog-body>label{display:grid;gap:7px;font-size:12px}.workspace-dialog-body>.search{display:flex;margin:0 0 12px}
.workspace-dialog-body>.picker-list,.workspace-dialog-body>.setting-row-list{padding:0;max-height:none}
.workspace-dialog-body>.pdf-options,.workspace-dialog-body>.bible-picker-form{padding:0}
.workspace-dialog-body>.pdf-save-help{margin:12px 0 0}.workspace-dialog-body>.trigger-toolbar{padding:0 0 12px}
.picker-list,.setting-row-list,.cst-score-list,.cst-items,.score-edit-pages{grid-auto-rows:max-content;align-content:start}
.picker-item,.playlist-pick{line-height:1.45}.picker-item small{display:block;color:var(--muted)}
.playlist-pick span,.playlist-pick strong{min-width:0;overflow-wrap:anywhere}
.setting-row-actions input:focus-visible+span,.token-check input:focus-visible+span,.score-lyric-links input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.v04-memo-workspace{gap:12px}.v04-memo-workspace>section{border:1px solid var(--line);border-radius:7px;padding:10px;background:var(--panel2)}
.v04-memo-workspace h3{margin:0 0 10px;font-size:13px}.v04-memo-workspace small{display:block;color:var(--muted);font-size:11px;margin:8px 0;line-height:1.5}
#sectionMemos04>label{background:var(--panel);border:1px solid var(--line);padding:10px;border-radius:6px;display:grid;gap:8px}
#sectionMemos04>label>button{justify-self:end}
#webSlideDialog{width:min(1440px,calc(100vw - 32px))}.v04-slide-dialog{width:100%}
#webSlideDialog>.dialog-card{max-height:92dvh}#webSlideDialog .workspace-dialog-body{display:flex;flex-direction:column;gap:12px}
.v04-slide-layout{grid-template-columns:180px minmax(0,1fr) 280px;gap:12px;margin:0;max-height:none;min-height:0;overflow:visible;align-items:start}
.v04-slide-layout>aside{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--panel2);min-width:0}
.v04-slide-layout h3{font-size:13px;margin:0 0 12px}.v04-slide-layout>main{height:auto;min-width:0;padding:12px;background:var(--bg);border:1px solid var(--line);border-radius:8px}
#webSlideStage{border-radius:3px}#webSlideFields label{display:grid;gap:6px;font-size:12px}#webSlideFields .form-grid{gap:10px}
#webSlideDialog .compact-actions button{min-height:30px;font-size:11px}
/* Match the wide manager workspace without making laptop/mobile users squeeze four columns. */
@media(min-width:1700px){
 #appMain #songsPage.active{grid-template-columns:240px minmax(0,1fr)}
 #songEditor>.subtabs{display:none}
 .workspace-song-panels{display:grid;grid-template-columns:220px minmax(0,1fr) 280px;gap:12px}
 .workspace-song-panels>.tab-panel{display:block;border:1px solid var(--line);border-radius:8px;padding:12px;min-width:0;background:var(--panel)}
 .workspace-panel-caption{display:block;margin:-12px -12px 12px;padding:10px 12px;background:var(--panel2);border-bottom:1px solid var(--line);font-size:14px;border-radius:7px 7px 0 0}
 #songInfoTab .form-grid,#songScoresTab .upload-card,#songScoresTab .score-row{grid-template-columns:1fr}
 #songLyricsTab .toolbar{gap:6px}#songLyricsTab .toolbar label{min-width:150px;flex:1}#songLyricsTab .toolbar button{font-size:11px}
 .lyrics-structured{grid-template-columns:160px minmax(0,1fr)}
}
@media(max-width:1240px){
 .topbar{grid-template-columns:150px minmax(0,1fr) auto;gap:8px}.topnav .nav-button{flex-basis:66px}.server-state #healthText,.server-state #currentUser{display:none}
 #appMain>.page.active,#appMain #contisPage.page.active{grid-template-columns:240px minmax(0,1fr)}
 #contisPage>.detail-pane{display:block;overflow:auto}#contisPage .conti-layout{height:auto;overflow:visible}#contisPage .conti-inspector{height:auto;margin-top:12px}
 #contisPage .inspector-shell,#contisPage .inspector-content{height:auto;overflow:visible}
 .upload-card,.score-row{grid-template-columns:80px minmax(0,1fr)}.upload-card>button,.score-row>.row-actions{justify-self:end;grid-column:2}
 .account-main{grid-template-columns:1fr 1fr}.account-row{grid-template-columns:1fr}
 .v04-slide-layout{grid-template-columns:160px minmax(0,1fr)}.workspace-slide-properties{grid-column:1/-1}
 #webSlideFields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:12px}#webSlideFields>.compact-actions{grid-column:1}
 #webBoxFields{grid-column:2;grid-row:1/3}
}
@media(max-width:900px){
 :root{--workspace-header:124px}
 .topbar{grid-template-columns:1fr auto;grid-template-rows:38px 64px;padding:7px 12px;gap:4px 12px}.topbar>.brand{grid-column:1;grid-row:1}.server-state{grid-column:2;grid-row:1}.topnav{grid-column:1/-1;grid-row:2;justify-self:stretch}
 .topnav .nav-button{flex:1 0 66px}.brand small{display:none}.brand-logo{width:28px;height:28px}
 #appMain{padding:12px}#appMain>.page.active,#appMain #contisPage.page.active{grid-template-columns:220px minmax(0,1fr)}
 .editor-head{flex-wrap:wrap}.editor-head .actions{margin-left:auto}.media-row{grid-template-columns:90px minmax(0,1fr)}.media-row>img,.media-row>.audio-thumb{width:90px}.media-row>.row-actions{grid-column:2}
 .v04-stat-body{grid-template-columns:1fr}.v04-stat-filters label{min-width:0}.lyrics-structured{grid-template-columns:130px minmax(0,1fr)}
}
@media(max-width:720px){
 :root{--workspace-header:120px}
 .topbar{position:sticky;grid-template-rows:34px 64px;padding:6px 10px;gap:4px 8px}.topnav{position:static;height:64px;border:0;background:transparent!important;justify-content:flex-start}.topnav .nav-button{flex:0 0 62px;height:60px}
 #appMain{height:auto;min-height:calc(100dvh - var(--workspace-header));padding:10px}
 #appMain>.page.active,#appMain #contisPage.page.active,#appMain #statisticsPage.active{display:flex;flex-direction:column;gap:10px}
 .list-pane{max-height:340px;height:auto;flex:none}.entity-list{max-height:185px}.detail-pane{overflow:visible;min-height:300px}
 #mediaPage>.list-pane{max-height:none}#mediaFolderList{max-height:185px;flex:0 1 auto}
 .editor{padding:12px;min-height:0}.single-page .editor{padding-bottom:12px}.editor-head h2{font-size:16px}
 #contisPage>.detail-pane{display:block;min-height:0}.pane-head h1{font-size:15px}.pane-head{min-height:52px}
 .workspace-stat-filters{max-height:none}.workspace-stat-filters .v04-stat-filters{grid-template-columns:1fr 1fr;gap:10px}.workspace-stat-filters .v04-stat-filters label:nth-child(3){grid-column:1/-1}
 .v04-stat-summary{gap:6px}.v04-stat-summary .card{padding:9px}.v04-stat-summary strong{font-size:20px}
 .form-grid,.account-main,.release-upload,.release-row{grid-template-columns:1fr}.upload-card,.score-row{grid-template-columns:1fr}.upload-card>button,.score-row>.row-actions{grid-column:auto}
 #contisPage .conti-info-card .form-grid{grid-template-columns:1fr}.actions{gap:5px}.actions button{padding:6px 9px}
 .lyrics-structured{grid-template-columns:110px minmax(0,1fr);height:460px;min-height:0}.lyrics-block-row{grid-template-columns:20px minmax(0,1fr)}.lyrics-block-row>div{grid-column:2;display:flex}
 .lyrics-block-row>div{justify-content:flex-end}.lyrics-block-row>div>button{flex:none}
 .lyrics-editor{height:400px;min-height:0}.toolbar .push-right{margin-left:0}.toolbar label{min-width:0;width:100%}
 .toast{bottom:16px}.v04-slide-layout{grid-template-columns:1fr}.v04-slide-layout>aside:first-child{max-height:180px;overflow:auto}.workspace-slide-properties{grid-column:auto}
 #webSlideFields{display:block}#webBoxFields{grid-column:auto;grid-row:auto}.v04-memo-workspace{grid-template-columns:1fr}
 /* Small score editors keep a usable canvas: pages and tools scroll horizontally,
    settings follow the canvas in one scrolling body instead of competing for height. */
 .score-editor-toolbar{flex:none;flex-wrap:nowrap;overflow-x:auto;padding:9px 12px}.score-editor-toolbar button{flex:none;white-space:nowrap}
 .score-editor-body{display:block;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
 .score-editor-body>aside:first-child{display:flex;align-items:center;gap:10px;border-right:0;border-bottom:1px solid var(--line);padding:10px 12px}
 .score-editor-body>aside:first-child>strong{flex:none}.score-edit-pages{display:flex;min-width:0;overflow-x:auto;margin:0;padding:2px 0 4px;flex:1}
 .score-edit-pages button{flex:none;max-width:160px}
 .score-editor-body>main{height:45dvh;min-height:220px}.score-edit-viewport{padding:12px}
 .score-editor-body>aside:last-child{max-height:none;overflow:visible;border-left:0;border-top:1px solid var(--line)}
 .score-lyric-links{max-height:180px}.score-text-options{padding-bottom:10px}
 dialog,#webSlideDialog{width:calc(100vw - 16px);max-height:94dvh}dialog .dialog-card,#webSlideDialog>.dialog-card{max-height:94dvh}.workspace-dialog-body{padding:12px}.dialog-head{padding:12px}.dialog-head p{max-width:270px}.dialog-actions{padding:10px 12px}
}
@media(max-width:380px){.server-state{gap:4px}.brand{gap:6px}.brand strong{font-size:11px}.server-state .icon-button{width:32px;min-width:32px}.media-row{grid-template-columns:70px minmax(0,1fr);gap:10px}.media-row>img,.media-row>.audio-thumb{width:70px}.media-row>.row-actions{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{#appMain{height:auto;padding:0}.topbar,.workspace-stat-filters{display:none!important}.workspace-dialog-body{overflow:visible}}
