:root{
  --chrome:#e8e8e8;--chrome2:#f7f7f7;--line:#9c9c9c;--line-dark:#6f6f6f;--text:#111;--muted:#606060;
  --spl-blue:#0855c7;--spl-red:#e71825;--out:#ff6262;--vt:#00ef30;--in:#fff200;--select:#0587c8;
  --panel:#f4f4f4;--white:#fff;--shadow:0 6px 24px rgba(0,0,0,.14);--danger:#d5202d;--good:#07843c;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Segoe UI",Tahoma,Arial,sans-serif;background:#d7d7d7;color:var(--text);font-size:14px}button,input,select{font:inherit}.hidden{display:none!important}button{cursor:pointer}.app-shell{min-height:100vh}
.login-view{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(#efefef,#cfcfcf)}.spl-window{background:#eee;border:1px solid #767676;box-shadow:var(--shadow)}.window-title{min-height:30px;padding:5px 9px;background:linear-gradient(#fafafa,#d9d9d9);border-bottom:1px solid #9b9b9b;font-weight:600;display:flex;align-items:center;gap:7px}.mini-app-icon{width:18px;height:18px;display:grid;place-items:center;border:1px solid #176700;background:#29a31d;color:#fff;font-size:11px;font-weight:900}.login-window{width:min(430px,100%)}.login-body{padding:28px}.login-body>p{color:#5d5d5d;margin:8px 0 24px}.spl-brand{display:flex;align-items:baseline;font-style:italic;font-weight:800;letter-spacing:-1.3px;font-size:28px;text-shadow:0 1px #fff}.spl-brand.small{font-size:22px}.spl-brand strong{margin-left:8px;color:#222;font-style:normal;font-size:.72em;letter-spacing:0}.spl-blue{color:var(--spl-blue)}.spl-red{color:var(--spl-red)}.brand-lockup{display:flex;align-items:baseline;gap:9px;min-width:0}.app-version,.window-title-version{display:inline-flex;align-items:center;font-style:normal;font-weight:700;letter-spacing:0;color:#666;background:#f1f1f1;border:1px solid #bcbcbc;padding:1px 6px;font-size:11px;line-height:18px;white-space:nowrap}.window-title-version{margin-left:auto;line-height:16px;background:rgba(255,255,255,.55)}
.app-header{position:sticky;top:0;z-index:30;background:#f0f0f0;border-bottom:1px solid #878787}.brand-row{height:54px;display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#fff}.station-tools{display:flex;align-items:center;gap:16px}.compact-label{display:flex;align-items:center;gap:7px;font-weight:600}.vt-server-state{font-size:12px;color:#5f5f5f;white-space:nowrap}.menu-strip{display:flex;align-items:center;min-height:33px;padding:0 6px;background:linear-gradient(#f9f9f9,#dedede);border-top:1px solid #c5c5c5}.menu-btn{border:0;border-right:1px solid #c2c2c2;background:transparent;padding:7px 11px;color:#222}.menu-btn:hover,.menu-btn.active{background:#fff;color:#00579d}.menu-spacer{flex:1}
main{padding:8px}.app-view{max-width:1700px;margin:0 auto}.vt-status-stack{border:1px solid #818181;background:#fff;margin-bottom:7px}.status-row{height:28px;display:grid;grid-template-columns:145px 1fr;align-items:center;border-bottom:1px solid rgba(0,0,0,.12);font-weight:700}.status-row:last-child{border-bottom:0}.status-row span{padding:0 10px;font-size:12px}.status-row strong{padding:0 10px;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-out{background:var(--out)}.status-vt{background:var(--vt)}.status-in{background:var(--in)}
.toolbar-row,.page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:7px 0}.date-nav,.library-tools{display:flex;align-items:center;gap:5px}.toolbar-info{font-weight:600;color:#3f3f3f}.spl-btn{min-height:30px;border:1px solid #878787;border-radius:2px;padding:4px 12px;background:linear-gradient(#fff,#d9d9d9);box-shadow:inset 1px 1px #fff;color:#161616;font-weight:600}.spl-btn:hover:not(:disabled){background:linear-gradient(#fff,#ececec);border-color:#5b5b5b}.spl-btn:active:not(:disabled){background:#d6d6d6;box-shadow:inset 1px 1px 2px #8a8a8a}.spl-btn:disabled{opacity:.45;cursor:not-allowed}.spl-btn.primary{background:linear-gradient(#f8f8f8,#cfdbe8);border-color:#56738f}.spl-btn.record{background:linear-gradient(#fff,#e1e1e1);color:#b50812}.spl-btn.record.live{background:#ffb4b4}.spl-btn.start-next{color:#116916}.spl-btn.stop{color:#be0712}.spl-btn.square{width:34px;padding:0}.toolbar-row input,.compact-label select,.library-tools input,.device-row select,.form-grid input,.form-grid select,.library-form input{height:31px;border:1px solid #8d8d8d;background:#fff;color:#111;padding:4px 7px;border-radius:0}.compact-label select{min-width:190px}
.workspace-grid{display:grid;grid-template-columns:minmax(350px,.78fr) minmax(620px,1.5fr);gap:8px}.spl-panel{background:var(--panel);border:1px solid #8e8e8e;box-shadow:0 1px 3px rgba(0,0,0,.08);min-height:0}.panel-caption{height:27px;display:flex;align-items:center;padding:0 8px;background:linear-gradient(#fdfdfd,#d8d8d8);border-bottom:1px solid #8d8d8d;font-weight:700}.schedule-panel{height:calc(100vh - 185px);display:flex;flex-direction:column}.log-header{display:grid;grid-template-columns:74px 1fr 96px;background:#eee;border-bottom:1px solid #aaa;font-size:12px;font-weight:700}.log-header span{padding:5px 7px;border-right:1px solid #c8c8c8}.slot-list{overflow:auto;flex:1;background:#fff}.slot{display:grid;grid-template-columns:74px 1fr 96px;align-items:stretch;border-bottom:1px solid #e5e5e5;min-height:46px;cursor:pointer}.slot>div,.slot>span{padding:6px 7px;border-right:1px solid #ececec}.slot:hover{background:#eff7fd}.slot.slot-selected{background:var(--select);color:#fff}.slot-time{font-weight:800;font-variant-numeric:tabular-nums}.slot-copy{min-width:0}.slot-copy strong,.slot-copy span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-copy span{font-size:12px;color:#4f4f4f;margin-top:2px}.slot.slot-selected .slot-copy span{color:#e8f7ff}.slot-badge{font-size:11px;display:flex;align-items:center;justify-content:center;text-align:center}.slot-badge.recorded{color:#0069a8;font-weight:700}.slot-badge.delivered{color:#087a31;font-weight:700}.slot.slot-selected .slot-badge{color:#fff}.slot-badge.error{color:#c81420}.empty-list{padding:18px;color:#666;text-align:center}
.tracker-panel{min-height:calc(100vh - 185px);background:#efefef}.tracker-titlebar{height:33px;display:flex;align-items:center;justify-content:space-between;padding:0 9px;background:#fff;border-bottom:1px solid #a4a4a4}.tracker-titlebar strong{font-size:17px}.status-pill{padding:3px 8px;border:1px solid #8d8d8d;background:#eee;font-size:11px}.empty-state{height:calc(100vh - 215px);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#555}.empty-state h2{margin:8px 0 4px;color:#222}.empty-state p{margin:0;max-width:460px}.mic-symbol{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#d8d8d8;border:1px solid #8b8b8b;color:#d6131e;font-size:24px}
.wave-lane{margin:7px;border:1px solid #888;background:#fff}.lane-head{display:grid;grid-template-columns:140px 1fr 34px;align-items:center;min-height:29px;border-bottom:1px solid rgba(0,0,0,.2);font-weight:700}.lane-head span,.lane-head strong{padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lane-head span{font-size:11px}.lane-out .lane-head{background:var(--out)}.lane-vt .lane-head{background:var(--vt)}.lane-in .lane-head{background:var(--in)}.mini-media{width:28px;height:23px;padding:0;border:1px solid #727272;background:#f6f6f6;color:#111}.wave-canvas{width:100%;height:86px;display:block;background:#181818}.wave-meter-row{--wave-meter-height:86px;display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:stretch;height:var(--wave-meter-height);background:#181818}.wave-meter-row>.wave-canvas,.wave-meter-row>.wave-loading-wrap{min-width:0;height:100%}.wave-meter-row .wave-canvas{height:100%}.stereo-vu-wrap{height:100%;min-width:38px;border-left:1px solid #505050;background:#101010;overflow:hidden}.stereo-vu{display:block;width:100%;height:100%;background:#101010}.lane-meta{display:flex;justify-content:space-between;gap:12px;padding:4px 8px;background:#f5f5f5;border-top:1px solid #aaa;font-size:12px;color:#333}.record-status-line{display:flex;align-items:center;gap:8px;padding:4px 8px;background:#f5f5f5;border-top:1px solid #aaa;font-size:12px}.record-status-line span:last-child{margin-left:auto;font-variant-numeric:tabular-nums}.record-dot{width:10px;height:10px;border-radius:50%;background:#9e9e9e;border:1px solid #666}.record-dot.live{background:#ed101b;box-shadow:0 0 0 3px rgba(237,16,27,.17)}.recorder-controls{margin:7px;padding:8px;border:1px solid #969696;background:#dedede}.record-actions{display:flex;justify-content:center;gap:8px;margin-top:0;flex-wrap:wrap}.device-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px 18px;margin-top:8px}.device-selectors{display:grid;gap:7px;max-width:640px}.device-selectors label{display:grid;grid-template-columns:92px minmax(260px,1fr);align-items:center;gap:7px;font-size:12px}.device-selectors label span{text-align:left}.device-row select{min-width:0;width:100%}.device-extras{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.device-row .boost-control{display:flex;align-items:center;gap:6px;font-size:12px}.boost-control input[type=range]{width:130px;accent-color:#2b6fa8}.boost-control output{min-width:44px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.preview-card{margin:7px;padding:8px;border:1px solid #8c8c8c;background:#f7f7f7}.preview-actions{display:flex;justify-content:flex-end;gap:8px}.upload-message{margin-top:6px;font-size:12px;color:#444}
.page-toolbar{padding:5px 3px 8px}.page-toolbar h1{font-size:22px;margin:0}.page-toolbar p{margin:3px 0 0;color:#555}.library-tools input{width:min(340px,42vw)}.library-layout{display:grid;grid-template-columns:minmax(520px,1.2fr) minmax(410px,.8fr);gap:8px}.library-list-panel,.editor-panel{height:calc(100vh - 145px);display:flex;flex-direction:column}.library-meta{padding:7px 9px;background:#fff;border-bottom:1px solid #bbb;color:#555;font-size:12px}.library-list{flex:1;overflow:auto;background:#fff}.library-row{display:grid;grid-template-columns:48px minmax(150px,.8fr) minmax(180px,1fr) 80px 80px 76px;align-items:center;border-bottom:1px solid #e1e1e1;min-height:49px;cursor:pointer}.library-row:hover{background:#f1f8fd}.library-row.active{background:#0788c9;color:#fff}.library-row>div{padding:5px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-thumb{width:38px;height:38px;object-fit:cover;border:1px solid #aaa;background:#ddd}.library-row .muted{font-size:11px;color:#666}.library-row.active .muted{color:#e8f8ff}.edit-chip{font-size:10px;padding:2px 4px;border:1px solid #aaa;background:#eee;color:#333}.edit-chip.ready{background:#fff2a4}.edit-chip.error{background:#ffd4d4;color:#a30000}.pager{display:flex;align-items:center;justify-content:space-between;padding:6px;border-top:1px solid #aaa;background:#e5e5e5}.empty-editor{padding:30px;text-align:center;color:#666}.library-form{padding:12px;overflow:auto;display:grid;gap:10px}.library-form label{display:grid;gap:4px;font-size:12px;font-weight:600}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:8px}.art-editor{display:grid;grid-template-columns:132px 1fr;gap:12px;align-items:start}.art-editor img{width:132px;height:132px;object-fit:cover;background:#d7d7d7;border:1px solid #777}.art-editor small{display:block;margin-top:7px;color:#666}.edit-status{min-height:24px;padding:5px 7px;background:#fff;border:1px solid #bbb;color:#555;font-size:12px}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.admin-grid>.spl-panel{min-height:calc(100vh - 145px)}.admin-actions{padding:7px;border-bottom:1px solid #aaa}.admin-table{background:#fff}.admin-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:8px;border-bottom:1px solid #e1e1e1}.admin-row strong,.admin-row span{display:block}.admin-row span{font-size:12px;color:#5c5c5c;margin-top:2px}.admin-row .row-actions{display:flex;gap:5px}
.drawer{position:fixed;top:0;right:0;width:min(440px,94vw);height:100vh;background:#ececec;border-left:1px solid #777;z-index:70;box-shadow:-8px 0 30px rgba(0,0,0,.25)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:8px;background:linear-gradient(#fff,#dadada);border-bottom:1px solid #888}.saved-list{padding:8px;overflow:auto;height:calc(100vh - 48px)}.saved-item{padding:9px;background:#fff;border:1px solid #bbb;margin-bottom:6px}.saved-item strong,.saved-item span{display:block}.saved-item span{font-size:12px;color:#555;margin-top:3px}.saved-status{float:right;text-transform:uppercase;font-weight:700;color:#08752d!important}.shade,.modal-shade{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:60}.modal-shade{z-index:90;display:grid;place-items:center;padding:20px}.modal-card{width:min(520px,96vw);max-height:92vh;overflow:auto;background:#eee}.wide-modal{width:min(720px,96vw)}.form-grid{padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid.one-col{grid-template-columns:1fr}.form-grid label{display:grid;gap:4px;font-size:12px;font-weight:600}.form-error{color:#b1000a;min-height:18px}.form-message{color:#505050;min-height:18px}.full-field{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:7px}.field-title{font-size:12px;font-weight:700;display:block;margin-bottom:5px}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:#fff;border:1px solid #aaa;padding:8px;max-height:160px;overflow:auto}.check-line{display:flex!important;align-items:center;gap:6px!important}.check-line input{width:auto;height:auto}.token-box{padding:10px;margin:10px 14px;background:#fff;border:1px solid #777;word-break:break-all;font-family:Consolas,monospace;user-select:all}
@media(max-width:980px){.workspace-grid,.library-layout,.admin-grid{grid-template-columns:1fr}.schedule-panel{height:430px}.tracker-panel{min-height:auto}.library-list-panel{height:500px}.editor-panel{height:auto}.admin-grid>.spl-panel{min-height:auto}.brand-row{height:auto;min-height:54px;gap:8px;align-items:flex-start}.station-tools{flex-direction:column;align-items:flex-end;gap:4px}.menu-strip{overflow-x:auto}.menu-spacer{min-width:10px}.wave-canvas{height:76px}.wave-meter-row{--wave-meter-height:76px}}
@media(max-width:650px){main{padding:5px}.brand-row{flex-direction:column}.station-tools{width:100%;align-items:stretch}.compact-label{justify-content:space-between}.compact-label select{min-width:0;flex:1}.vt-server-state{white-space:normal}.status-row{grid-template-columns:105px 1fr}.status-row strong{font-size:13px}.toolbar-row,.page-toolbar{align-items:stretch;flex-direction:column}.library-tools{display:grid;grid-template-columns:1fr auto}.library-tools input{width:100%;grid-column:1/-1}.workspace-grid{display:block}.schedule-panel{height:360px;margin-bottom:6px}.lane-head{grid-template-columns:105px 1fr 32px}.lane-head strong{font-size:12px}.record-actions{display:grid;grid-template-columns:1fr 1fr}.record-actions .record{grid-column:1/-1}.device-row{display:block}.device-selectors{max-width:none}.device-selectors label{grid-template-columns:1fr;gap:3px}.device-row select{min-width:0;width:100%}.device-extras{display:grid;grid-template-columns:1fr;align-items:stretch;margin-top:8px}.device-row .boost-control{display:grid}.boost-control input[type=range]{width:100%}.boost-control output{text-align:left}.device-extras .spl-btn{width:100%}.library-row{grid-template-columns:42px 1fr 76px}.library-row .hide-mobile{display:none}.two-col,.art-editor,.form-grid{grid-template-columns:1fr}.full-field{grid-column:1}.check-grid{grid-template-columns:1fr}.menu-btn{padding:7px 9px;white-space:nowrap}.spl-brand.small{font-size:20px}.library-list-panel{height:440px}}

/* Library audio timing editor */
.library-audio-editor{border:1px solid #8f8f8f;background:#e9e9e9;padding:8px;display:grid;gap:6px}.library-audio-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}.library-audio-head span{color:#555;font-weight:400;text-align:right}.library-audio-editor canvas{display:block;width:100%;height:160px;background:#151515;border:1px solid #4c4c4c;cursor:crosshair}.library-wave-times{display:flex;justify-content:space-between;font-family:Consolas,monospace;font-size:11px;color:#555}.library-marker-values{display:flex;gap:8px;font-size:11px}.library-marker-values span{border:1px solid #aaa;background:#fff;padding:3px 7px}.library-marker-values .intro-value{border-left:4px solid #159447}.library-marker-values .segue-value{border-left:4px solid #c9262f}.library-audio-controls{display:flex;flex-wrap:wrap;gap:5px}.library-wave-help{font-size:11px;color:#666;line-height:1.35}.library-form .library-audio-editor button{font-size:11px}.library-preview-error{color:#a50008!important;font-weight:600!important}.library-preview-ready{color:#087a31!important;font-weight:600!important}
@media(max-width:650px){.library-audio-head{align-items:flex-start;flex-direction:column}.library-audio-head span{text-align:left}.library-audio-controls{display:grid;grid-template-columns:1fr 1fr}.library-audio-controls .spl-btn{width:100%;padding-left:4px;padding-right:4px}.library-audio-editor canvas{height:130px}}

/* v0.3.9 hour selectors + color-coded drag/drop log editor */
.hour-picker-label{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;margin-left:5px}.hour-select{height:31px;min-width:82px;border:1px solid #8d8d8d;background:#fff;color:#111;padding:4px 7px;border-radius:0}.log-page-toolbar{padding-left:3px;padding-right:3px}.log-date-nav input{height:31px;border:1px solid #8d8d8d;background:#fff;padding:4px 7px}.log-editor-layout{display:grid;grid-template-columns:minmax(700px,1.55fr) minmax(350px,.75fr);gap:8px}.log-editor-panel,.log-library-panel{height:calc(100vh - 145px);display:flex;flex-direction:column}.panel-caption{justify-content:space-between}.caption-meta{font-size:11px;font-weight:400;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62%}.log-editor-header{display:grid;grid-template-columns:124px 72px minmax(280px,1fr) 74px 130px;background:#eee;border-bottom:1px solid #aaa;font-size:12px;font-weight:700}.log-editor-header span{padding:5px 7px;border-right:1px solid #c8c8c8}.log-editor-list{flex:1;overflow:auto;background:#fff;position:relative}.log-editor-list.drop-at-end{box-shadow:inset 0 -4px #0587c8}.log-edit-row{display:grid;grid-template-columns:124px 72px minmax(280px,1fr) 74px 130px;align-items:center;min-height:47px;border-bottom:1px solid #dfdfdf;border-left:5px solid transparent;box-sizing:border-box;background:#fff;transition:background .08s ease}.log-edit-row.log-type-song{background:#eaf7ec;border-left-color:#3e9349}.log-edit-row.log-type-voicetrack{background:#e8f1ff;border-left-color:#3478c8}.log-edit-row.log-type-audio{background:#fff3df;border-left-color:#ca8522}.log-edit-row.log-type-marker{background:#f1edfb;border-left-color:#7754ac}.log-edit-row:hover{filter:brightness(.985)}.log-edit-row.selected{outline:2px solid #2f8fc4;outline-offset:-2px}.log-edit-row.dragging{opacity:.42}.log-edit-row.drop-before{box-shadow:inset 0 4px #0587c8}.log-edit-row.drop-after{box-shadow:inset 0 -4px #0587c8}.log-edit-cell{padding:5px 7px;min-width:0}.log-edit-time{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;display:flex;align-items:center;gap:4px}.log-edit-type{text-transform:uppercase;font-size:10px;font-weight:800;color:#555}.log-type-song .log-edit-type{color:#226d2d}.log-type-voicetrack .log-edit-type{color:#235fa5}.log-type-audio .log-edit-type{color:#9b5b08}.log-type-marker .log-edit-type{color:#60438d}.log-edit-copy strong,.log-edit-copy span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-edit-copy span{font-size:11px;color:#666;margin-top:2px}.log-edit-length{font-family:Consolas,monospace;font-size:12px}.log-edit-buttons{display:flex;justify-content:flex-end;gap:3px;padding-right:5px}.log-mini-btn{width:27px;height:27px;padding:0;border:1px solid #8a8a8a;background:linear-gradient(#fff,#ddd);font-weight:700}.log-mini-btn:hover{background:#fff}.log-button-spacer{width:27px;height:27px;display:inline-block;flex:0 0 27px}.log-drag{cursor:grab;color:#666;font-size:15px;flex:0 0 auto}.log-editor-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px;background:#e5e5e5;border-top:1px solid #aaa}.log-editor-status{font-size:12px;color:#555;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-editor-status.good{color:#087a31;font-weight:600}.log-editor-status.error{color:#a50008;font-weight:600}.log-editor-actions{display:flex;gap:5px;flex:0 0 auto}.log-library-search{display:flex;gap:5px;padding:7px;border-bottom:1px solid #aaa;background:#e8e8e8}.log-library-search input{height:31px;min-width:0;flex:1;border:1px solid #8d8d8d;padding:4px 7px;background:#fff}.log-library-help{padding:6px 8px;border-bottom:1px solid #ccc;background:#fffde0;color:#555;font-size:11px;line-height:1.3}.log-library-list{flex:1;overflow:auto;background:#fff}.log-library-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;min-height:48px;padding:5px 7px;border-bottom:1px solid #e4e4e4;border-left:4px solid #3e9349;background:#f6fcf7;cursor:grab}.log-library-row:hover{background:#eaf7ec}.log-library-row.dragging{opacity:.45;cursor:grabbing}.log-library-row strong,.log-library-row span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-library-row span{font-size:11px;color:#666;margin-top:2px}.log-library-row .spl-btn{min-height:27px;padding:2px 9px;font-size:11px;cursor:pointer}.log-empty{padding:24px;text-align:center;color:#666}.dirty-dot::before{content:'● ';color:#d18a00}
@media(max-width:1050px){.log-editor-layout{grid-template-columns:1fr}.log-editor-panel{height:560px}.log-library-panel{height:430px}}
@media(max-width:650px){.date-nav{flex-wrap:wrap}.hour-picker-label{margin-left:0}.hour-select{min-width:76px}.log-editor-header{grid-template-columns:110px 1fr 116px}.log-editor-header span:nth-child(2),.log-editor-header span:nth-child(4){display:none}.log-edit-row{grid-template-columns:110px minmax(0,1fr) 116px}.log-edit-type,.log-edit-length{display:none}.log-edit-buttons{padding-right:3px}.log-editor-panel{height:500px}.log-library-panel{height:390px}.caption-meta{max-width:55%}}
/* v0.3.10 persistent voice-track previews */
.saved-item-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.saved-item-top>div{min-width:0;flex:1}.saved-preview-btn{white-space:nowrap;flex:0 0 auto;padding:3px 8px;font-size:11px}.saved-item .saved-status{float:none;margin:0 0 2px}.preview-card .spl-btn:disabled{opacity:.55}

/* v0.4.0 subscriptions / licensing */
.login-plan-hint{font-size:11px;color:#666;line-height:1.35;text-align:center;min-height:16px}.billing-grid{display:grid;grid-template-columns:minmax(360px,.8fr) minmax(520px,1.2fr);gap:8px}.billing-plan-panel,.billing-stations-panel{min-height:330px}.billing-body{padding:12px}.billing-status-card{border:1px solid #aaa;background:#fff;padding:12px;display:grid;gap:8px}.billing-status-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eee;padding-bottom:6px}.billing-status-row:last-child{border-bottom:0}.billing-status-chip{display:inline-block;padding:2px 8px;border:1px solid #8b8b8b;background:#eee;font-size:11px;font-weight:800;text-transform:uppercase}.billing-status-chip.active,.billing-status-chip.trialing,.billing-status-chip.complimentary{background:#e7f6ea;border-color:#4c9659;color:#1e6a2b}.billing-status-chip.past_due,.billing-status-chip.unpaid{background:#fff2d8;border-color:#c48c2c;color:#875400}.billing-status-chip.inactive,.billing-status-chip.canceled{background:#fdeaea;border-color:#b45e5e;color:#8b1f1f}.billing-action-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.billing-email-row{display:grid;gap:4px}.billing-station-create{display:flex;gap:6px;padding:8px;border-bottom:1px solid #aaa;background:#e8e8e8}.billing-station-create input{flex:1;min-width:0}.billing-station-list{background:#fff}.billing-station-row{padding:9px;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;gap:10px}.billing-station-row strong,.billing-station-row span{display:block}.billing-station-row span{font-size:11px;color:#666;margin-top:2px}.billing-station-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.activation-code-box{margin:12px 14px;padding:16px;border:2px solid #656565;background:#fff;font:700 20px Consolas,monospace;text-align:center;letter-spacing:1px;user-select:all}.admin-billing-panel{grid-column:1/-1}.billing-settings-form{padding:10px;display:grid;gap:8px}.billing-settings-form>label{display:grid;gap:4px;font-size:12px;font-weight:600}.billing-settings-form .check-line{display:flex!important}.four-col{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.subcaption{border-top:1px solid #aaa;margin-top:6px}.subscriber-actions{display:flex;gap:4px;flex-wrap:wrap}.billing-note{font-size:11px;color:#666;line-height:1.4}.billing-error{color:#a50008;font-weight:600}.billing-good{color:#087a31;font-weight:600}
@media(max-width:980px){.billing-grid{grid-template-columns:1fr}.four-col{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.billing-station-row{align-items:flex-start;flex-direction:column}.billing-station-actions{justify-content:flex-start}.billing-station-create{flex-direction:column}.four-col{grid-template-columns:1fr}.billing-status-row{align-items:flex-start;flex-direction:column;gap:3px}}

/* v0.4.1 account team management + destructive admin controls */
.spl-btn.danger{color:#9b1018;border-color:#aa696d;background:linear-gradient(#fff,#f2d9db)}.spl-btn.danger:hover:not(:disabled){background:#ffe9ea;border-color:#963f44}.billing-users-panel{grid-column:1/-1;min-height:240px}.billing-team-toolbar{display:flex;align-items:end;gap:7px;padding:8px;border-bottom:1px solid #aaa;background:#e8e8e8}.billing-team-toolbar label{display:grid;gap:3px;font-size:11px;font-weight:700;flex:1;max-width:420px}.billing-team-toolbar select{height:31px;border:1px solid #8d8d8d;background:#fff;padding:4px 7px}.billing-user-list{background:#fff}.billing-user-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:9px;border-bottom:1px solid #ddd}.billing-user-row strong,.billing-user-row span{display:block}.billing-user-row span{font-size:11px;color:#666;margin-top:2px}.billing-user-row .inline-user{display:inline;font-size:11px}.owner-chip{display:inline!important;margin-left:5px!important;padding:1px 5px;border:1px solid #64886c;background:#e6f4e9;color:#286334!important;font-size:9px!important;font-weight:800}.billing-user-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:650px){.billing-team-toolbar{align-items:stretch;flex-direction:column}.billing-team-toolbar label{max-width:none}.billing-user-row{grid-template-columns:1fr}.billing-user-actions{justify-content:flex-start}}

/* v0.4.26 station plan access */
.menu-btn:disabled{opacity:.45;cursor:not-allowed;color:#777;background:#eee}.billing-status-chip.pending,.billing-status-chip.suspended,.billing-status-chip.expired{background:#eee;border-color:#aaa;color:#555}.billing-status-chip.active{background:#dff4e5;border-color:#78b98a;color:#14652d}.billing-status-chip.complimentary{background:#e5efff;border-color:#82a6df;color:#204d91}.billing-station-actions button:disabled{opacity:.5;cursor:not-allowed}

/* v0.4.35 - fast media loading feedback */
@keyframes spl-cloud-spin{to{transform:rotate(360deg)}}
.loading-indicator{min-height:58px;padding:18px 20px;display:flex;align-items:center;justify-content:center;gap:9px;color:#555;font-size:12px;text-align:center}
.loading-spinner,.log-mini-btn.is-loading::after,.spl-btn.is-loading::after{content:'';display:inline-block;width:14px;height:14px;border:2px solid rgba(60,60,60,.28);border-top-color:#333;border-radius:50%;animation:spl-cloud-spin .65s linear infinite;flex:0 0 auto}
.log-mini-btn.is-loading,.spl-btn.is-loading{position:relative}
.log-mini-btn.is-loading{color:transparent}
.log-mini-btn.is-loading::after{position:absolute;left:50%;top:50%;margin:-7px 0 0 -7px;width:12px;height:12px}
.spl-btn.is-loading{color:transparent;min-width:58px}
.spl-btn.is-loading::after{position:absolute;left:50%;top:50%;margin:-7px 0 0 -7px}


/* v0.4.36 - Voice Tracker outgoing/incoming loading feedback */
.wave-loading-wrap{position:relative;background:#181818}
.wave-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:9px;background:rgba(24,24,24,.78);color:#f2f2f2;font-size:12px;font-weight:600;z-index:2;pointer-events:none;backdrop-filter:blur(1px)}
.wave-loading .loading-spinner{width:16px;height:16px;border-color:rgba(255,255,255,.34);border-top-color:#fff}
.mini-media.is-loading{position:relative;color:transparent}
.mini-media.is-loading::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-7px 0 0 -7px;border:2px solid rgba(60,60,60,.28);border-top-color:#333;border-radius:50%;animation:spl-cloud-spin .65s linear infinite}

/* v0.4.37 - StationPlaylist upload progress feedback */
.upload-message.is-loading{display:flex;align-items:center;gap:8px;min-height:18px}
.upload-message.is-loading::before{content:'';display:inline-block;width:12px;height:12px;border:2px solid rgba(60,60,60,.28);border-top-color:#333;border-radius:50%;animation:spl-cloud-spin .65s linear infinite;flex:0 0 auto}


/* v0.4.40 - inline manual voice-track timing on the existing waveforms */
.wave-canvas.timing-editable{cursor:grab;touch-action:none;user-select:none;outline:none}.wave-canvas.timing-editable:focus{box-shadow:inset 0 0 0 2px #1687d9}.wave-canvas.timing-dragging{cursor:grabbing}.wave-canvas.timing-locked{cursor:default}

/* v0.4.42 - on-demand extended outgoing waveform */
.out-wave-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:27px;padding:3px 8px;background:#f5f5f5;border-top:1px solid #aaa}.in-wave-tools{display:flex;align-items:center;justify-content:flex-end;min-height:27px;padding:3px 8px;background:#f5f5f5;border-top:1px solid #aaa}.out-wave-tools .muted{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wave-more-btn{height:23px;padding:0 8px;border:1px solid #7f7f7f;background:#f8f8f8;color:#222;font-size:11px;font-weight:600;white-space:nowrap;flex:0 0 auto}.wave-more-btn:hover:not(:disabled){background:#fff}.wave-more-btn:disabled{opacity:.55}.wave-more-btn.is-loading{position:relative;color:transparent;min-width:112px}.wave-more-btn.is-loading::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-7px 0 0 -7px;border:2px solid rgba(60,60,60,.28);border-top-color:#333;border-radius:50%;animation:spl-cloud-spin .65s linear infinite}@media(max-width:700px){.out-wave-tools{align-items:flex-start;flex-direction:column}.out-wave-tools .muted{white-space:normal}.wave-more-btn{align-self:flex-end}}


/* v0.4.53 - VoiceTracker.net legal disclaimer */
#mainView{min-height:100vh;display:flex;flex-direction:column}
#mainView>main{flex:1 0 auto;width:100%}
.legal-disclaimer{color:#666;font-size:10px;line-height:1.45;text-align:center}
.legal-disclaimer>div:first-child{font-weight:600;color:#555}
.app-legal{flex:0 0 auto;margin-top:6px;padding:9px 12px 11px;border-top:1px solid #aaa;background:linear-gradient(#eeeeee,#dddddd)}
.login-view{position:relative;padding-bottom:78px}
.login-legal{position:absolute;left:14px;right:14px;bottom:14px}
@media(max-width:650px){.legal-disclaimer{font-size:9px}.login-view{padding-bottom:88px}.login-legal{bottom:10px}.app-legal{padding-left:8px;padding-right:8px}}

/* v0.4.53 - Log Editor integrated voice tracking */
.log-hour-caption{gap:8px}.log-hour-tools{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}.record-vt-btn{min-height:23px;height:23px;padding:1px 9px;color:#9b0811;font-size:11px;white-space:nowrap}.record-vt-btn:not(:disabled){font-weight:800}.log-right-workspace{min-width:0;height:calc(100vh - 145px)}.log-right-workspace>.spl-panel,.log-vt-workspace{height:100%}.log-vt-workspace{display:flex;flex-direction:column;min-height:0}.log-vt-caption{flex:0 0 27px}.log-vt-caption .spl-btn{min-height:21px;height:21px;padding:0 8px;font-size:10px}.log-vt-workspace #logVtPanelHost{flex:1;min-height:0;overflow:auto}.log-vt-workspace .tracker-panel{min-height:100%;height:auto;border-top:0;box-shadow:none}.log-vt-workspace .tracker-titlebar{position:sticky;top:0;z-index:3}.log-vt-workspace .empty-state{height:280px}.log-vt-workspace .wave-lane{margin:5px}.log-vt-workspace .wave-canvas{height:78px}.log-vt-workspace .wave-meter-row{--wave-meter-height:78px}.log-vt-workspace .recorder-controls,.log-vt-workspace .preview-card{margin:5px}.log-vt-status{display:inline-block!important;margin-left:6px!important;padding:1px 5px;border:1px solid #8f8f8f;background:#eee;font-size:9px!important;line-height:1.2;vertical-align:1px;font-weight:800;color:#555}.log-vt-status.open{background:#f1f1f1;color:#555}.log-vt-status.recorded{background:#e5f2ff;border-color:#6d9cc8;color:#165f9c}.log-vt-status.delivered{background:#e4f6e8;border-color:#68a975;color:#176b2d}
@media(min-width:1051px){.log-editor-layout{grid-template-columns:minmax(610px,1.25fr) minmax(500px,.95fr)}}
@media(max-width:1050px){.log-right-workspace{height:520px}.log-vt-workspace .tracker-panel{min-height:auto}.log-vt-workspace #logVtPanelHost{overflow:auto}}
@media(max-width:650px){.log-hour-caption{height:auto;min-height:31px;align-items:flex-start}.log-hour-tools{flex-direction:column-reverse;align-items:flex-end;gap:3px}.record-vt-btn{height:25px}.caption-meta{max-width:100%}.log-right-workspace{height:470px}.log-vt-workspace .wave-canvas{height:72px}}

/* v0.4.54 - Saved VTs navigation removed; outgoing Show 15s more can recover from short PLG duration metadata. */

/* v0.4.56 - multi-day Creator PLG support + missing-file fallback is server-side; no UI styling changes. */


/* v0.4.62 branding tweak for VT favicon/title badge */
.mini-app-icon{min-width:18px;padding:0 4px;font-size:10px;letter-spacing:-.2px}


/* v0.4.63 custom voicetracker.net image header */
.brand-image-lockup{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.brand-image{display:block;max-width:100%;height:auto;width:340px}
.brand-subtitle{font-size:12px;line-height:1.1;font-weight:700;color:#2b2b2b;letter-spacing:.2px;text-transform:none}
.login-brand-image-lockup{align-items:center;margin-bottom:6px}
.login-brand-image-lockup .brand-image{width:300px;max-width:100%}
.login-brand-image-lockup .brand-subtitle{text-align:center}
@media(max-width:700px){.brand-image{width:270px}.brand-subtitle{font-size:11px}.login-brand-image-lockup .brand-image{width:250px}}


/* v0.4.64 simplified VoiceTracker.net text branding */
.text-brand{font-size:24px;line-height:1;font-weight:800;font-style:italic;letter-spacing:-.5px;white-space:nowrap}.brand-voice{color:var(--spl-blue)}.brand-tracker{color:var(--spl-red)}
.login-text-brand{font-size:34px;text-align:left;margin-bottom:6px}
@media(max-width:700px){.text-brand{font-size:21px}.login-text-brand{font-size:30px}}


/* v0.4.66 main-header product descriptor */
.brand-descriptor{color:#111;font-size:13px;font-style:normal;font-weight:600;letter-spacing:0;white-space:nowrap}
@media(max-width:700px){.brand-lockup{flex-wrap:wrap;gap:4px 7px}.brand-descriptor{font-size:11px}.app-version{font-size:10px}}


/* v0.4.67 login wordmark alignment */
.login-body .login-text-brand{text-align:left}


/* v0.4.77 - station-user allowed hour controls */
.hour-access-toolbar{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}.hour-access-toolbar .spl-btn{min-height:25px;height:25px;padding:2px 9px;font-size:11px}.hour-access-summary{font-size:11px;color:#555;font-weight:600;margin-left:auto}.hour-check-grid{display:grid;grid-template-columns:repeat(6,minmax(72px,1fr));gap:4px;background:#fff;border:1px solid #aaa;padding:7px;max-height:180px;overflow:auto}.hour-check-grid label{display:flex;align-items:center;gap:5px!important;padding:4px 5px;border:1px solid #ddd;background:#f7f7f7;font-size:11px!important;font-weight:600!important}.hour-check-grid input{width:auto!important;height:auto!important;margin:0}.hours-chip{display:inline-block!important;margin-left:5px!important;padding:1px 5px;border:1px solid #9a9a9a;background:#f0f0f0;color:#555!important;font-size:9px!important;font-weight:800;vertical-align:1px}.hours-chip.restricted{background:#fff2d8;border-color:#c48c2c;color:#875400!important}.hours-chip.none{background:#fdeaea;border-color:#b45e5e;color:#8b1f1f!important}@media(max-width:650px){.hour-check-grid{grid-template-columns:repeat(3,1fr)}.hour-access-summary{width:100%;margin-left:0}}


/* v0.4.79 - compact searchable admin lists */
.admin-list-panel{min-height:0!important}
.admin-list-toolbar{display:flex;align-items:center;gap:7px;background:#e8e8e8}
.admin-list-toolbar .admin-search{flex:1;min-width:0;height:31px;border:1px solid #8d8d8d;background:#fff;padding:4px 8px;font:inherit}
.admin-list-toolbar.admin-search-only .admin-search{max-width:520px}
.admin-scroll-list{overflow-y:auto;overflow-x:hidden;max-height:300px;scrollbar-gutter:stable}
.admin-scroll-list .admin-row{box-sizing:border-box;min-height:60px}
.admin-scroll-list .admin-row>div:first-child{min-width:0}
.admin-scroll-list .admin-row>div:first-child>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:650px){.admin-list-toolbar{align-items:stretch;flex-direction:column}.admin-list-toolbar .admin-search,.admin-list-toolbar.admin-search-only .admin-search{width:100%;max-width:none}.admin-list-toolbar .spl-btn{width:100%}.admin-scroll-list{max-height:340px}.admin-scroll-list .admin-row{min-height:68px}.admin-scroll-list .admin-row>div:first-child>span{white-space:normal}}

/* v0.4.80 - all three Administration lists are capped at five visible rows */
#usersTable.admin-scroll-list,#stationsTable.admin-scroll-list,#subscriptionsTable.admin-scroll-list{max-height:300px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
#subscriptionsTable .admin-row:last-child{border-bottom:0}
@media(max-width:650px){#usersTable.admin-scroll-list,#stationsTable.admin-scroll-list,#subscriptionsTable.admin-scroll-list{max-height:340px}}

/* v0.4.85 - persistent light / dark appearance toggle */
.theme-toggle{width:31px;height:31px;min-width:31px;padding:0;display:inline-grid;place-items:center;border:1px solid #8d8d8d;background:linear-gradient(#fff,#dddddd);color:#252525;box-shadow:inset 1px 1px rgba(255,255,255,.8);font-size:17px;line-height:1;border-radius:2px;cursor:pointer}
.theme-toggle:hover{background:#fff;border-color:#626262}.theme-toggle:focus-visible{outline:2px solid var(--select);outline-offset:2px}.theme-toggle .theme-icon{display:block;transform:translateY(-1px)}

html[data-theme="dark"]{color-scheme:dark;--chrome:#292b2f;--chrome2:#33363b;--line:#5c6067;--line-dark:#777c84;--text:#f1f1f1;--muted:#b9bcc2;--panel:#282a2e;--white:#1e2023;--shadow:0 6px 24px rgba(0,0,0,.45)}
html[data-theme="dark"] body{background:#17191c;color:var(--text)}
html[data-theme="dark"] .login-view{background:linear-gradient(#2a2d31,#17191c)}
html[data-theme="dark"] .spl-window,html[data-theme="dark"] .spl-panel{background:#282a2e;border-color:#5b5f66}
html[data-theme="dark"] .window-title,html[data-theme="dark"] .panel-caption{background:linear-gradient(#3b3e43,#2a2d31);border-color:#5c6067;color:#f1f1f1}
html[data-theme="dark"] .app-header{background:#24262a;border-color:#555a61}
html[data-theme="dark"] .brand-row{background:#202225}
html[data-theme="dark"] .brand-descriptor{color:#e8e8e8}
html[data-theme="dark"] .app-version,html[data-theme="dark"] .window-title-version{color:#d6d6d6;background:#303338;border-color:#5f646b}
html[data-theme="dark"] .vt-server-state,html[data-theme="dark"] .toolbar-info,html[data-theme="dark"] .caption-meta,html[data-theme="dark"] .page-toolbar p,html[data-theme="dark"] .login-body>p,html[data-theme="dark"] .login-plan-hint,html[data-theme="dark"] .billing-note,html[data-theme="dark"] .empty-list,html[data-theme="dark"] .empty-state,html[data-theme="dark"] .log-empty,html[data-theme="dark"] .upload-message{color:#b8bcc2}
html[data-theme="dark"] .menu-strip{background:linear-gradient(#34373b,#292c30);border-color:#50545a}
html[data-theme="dark"] .menu-btn{color:#e6e6e6;border-color:#50545a}
html[data-theme="dark"] .menu-btn:hover,html[data-theme="dark"] .menu-btn.active{background:#3b3f44;color:#78bfff}
html[data-theme="dark"] .theme-toggle{background:linear-gradient(#3c4045,#292c30);border-color:#666b72;color:#f4f4f4;box-shadow:inset 1px 1px rgba(255,255,255,.08)}
html[data-theme="dark"] .theme-toggle:hover{background:#44484e;border-color:#858a92}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea,html[data-theme="dark"] .toolbar-row input,html[data-theme="dark"] .compact-label select,html[data-theme="dark"] .library-tools input,html[data-theme="dark"] .device-row select,html[data-theme="dark"] .form-grid input,html[data-theme="dark"] .form-grid select,html[data-theme="dark"] .library-form input,html[data-theme="dark"] .hour-select,html[data-theme="dark"] .log-date-nav input,html[data-theme="dark"] .log-library-search input,html[data-theme="dark"] .admin-list-toolbar .admin-search,html[data-theme="dark"] .billing-station-create input{background:#16181b;color:#f1f1f1;border-color:#666a70}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#8f949b}
html[data-theme="dark"] .spl-btn,html[data-theme="dark"] .log-mini-btn,html[data-theme="dark"] .wave-more-btn,html[data-theme="dark"] .mini-media{background:linear-gradient(#40444a,#2c2f33);border-color:#666b72;box-shadow:inset 1px 1px rgba(255,255,255,.07);color:#f0f0f0}
html[data-theme="dark"] .spl-btn:hover:not(:disabled),html[data-theme="dark"] .log-mini-btn:hover,html[data-theme="dark"] .wave-more-btn:hover:not(:disabled){background:#484c52;border-color:#858b93}
html[data-theme="dark"] .spl-btn:active:not(:disabled){background:#25282c;box-shadow:inset 1px 1px 2px #111}
html[data-theme="dark"] .spl-btn.primary{background:linear-gradient(#3f4d5b,#2d3944);border-color:#6584a3}
html[data-theme="dark"] .vt-status-stack,html[data-theme="dark"] .slot-list,html[data-theme="dark"] .library-list,html[data-theme="dark"] .log-editor-list,html[data-theme="dark"] .log-library-list,html[data-theme="dark"] .admin-table,html[data-theme="dark"] .billing-station-list,html[data-theme="dark"] .billing-user-list{background:#1d1f22;border-color:#55595f}
html[data-theme="dark"] .slot{border-color:#363a3f}
html[data-theme="dark"] .slot:hover{background:#273744}
html[data-theme="dark"] .slot-copy span,html[data-theme="dark"] .library-row .muted,html[data-theme="dark"] .admin-row span,html[data-theme="dark"] .billing-station-row span,html[data-theme="dark"] .billing-user-row span,html[data-theme="dark"] .log-edit-copy span,html[data-theme="dark"] .log-library-row span{color:#aeb2b8}
html[data-theme="dark"] .tracker-panel{background:#24262a}
html[data-theme="dark"] .tracker-titlebar{background:#202225;border-color:#55595f}
html[data-theme="dark"] .status-pill{background:#34373c;border-color:#63686f;color:#f0f0f0}
html[data-theme="dark"] .empty-state h2{color:#f2f2f2}
html[data-theme="dark"] .mic-symbol{background:#33363b;border-color:#62676e}
html[data-theme="dark"] .wave-lane{background:#1b1d20;border-color:#62666d}
html[data-theme="dark"] .lane-meta,html[data-theme="dark"] .record-status-line,html[data-theme="dark"] .out-wave-tools,html[data-theme="dark"] .in-wave-tools{background:#292c30;border-color:#55595f;color:#d7d9dc}
html[data-theme="dark"] .recorder-controls{background:#2c2f33;border-color:#5c6067}
html[data-theme="dark"] .preview-card{background:#292c30;border-color:#5b6066}
html[data-theme="dark"] .library-meta{background:#202225;border-color:#51555b;color:#b9bdc3}
html[data-theme="dark"] .library-row{border-color:#34383d}
html[data-theme="dark"] .library-row:hover{background:#273744}
html[data-theme="dark"] .library-row.active{background:#0b6c9d}
html[data-theme="dark"] .admin-actions,html[data-theme="dark"] .admin-list-toolbar,html[data-theme="dark"] .billing-station-create,html[data-theme="dark"] .log-library-search{background:#292c30;border-color:#55595f}
html[data-theme="dark"] .admin-row,html[data-theme="dark"] .billing-station-row,html[data-theme="dark"] .billing-user-row{border-color:#373b40}
html[data-theme="dark"] .billing-status-card,html[data-theme="dark"] .activation-code-box{background:#202225;border-color:#5a5f65}
html[data-theme="dark"] .billing-status-row{border-color:#383c41}
html[data-theme="dark"] .log-editor-header,html[data-theme="dark"] .log-header{background:#292c30;border-color:#55595f}
html[data-theme="dark"] .log-editor-header span,html[data-theme="dark"] .log-header span{border-color:#45494e}
html[data-theme="dark"] .log-edit-row{border-color:#34383d;color:#ececec}
html[data-theme="dark"] .log-edit-row.log-type-song{background:#203426;border-left-color:#4ea35a}
html[data-theme="dark"] .log-edit-row.log-type-voicetrack{background:#203044;border-left-color:#4388d8}
html[data-theme="dark"] .log-edit-row.log-type-audio{background:#3a2e1e;border-left-color:#d49539}
html[data-theme="dark"] .log-edit-row.log-type-marker{background:#302a3d;border-left-color:#8f70bf}
html[data-theme="dark"] .log-edit-type{color:#c7cacf}
html[data-theme="dark"] .log-type-song .log-edit-type{color:#88d794}
html[data-theme="dark"] .log-type-voicetrack .log-edit-type{color:#8ebdf3}
html[data-theme="dark"] .log-type-audio .log-edit-type{color:#edbd75}
html[data-theme="dark"] .log-type-marker .log-edit-type{color:#baa4df}
html[data-theme="dark"] .log-editor-footer{background:#292c30;border-color:#55595f}
html[data-theme="dark"] .log-editor-status{color:#b8bcc2}
html[data-theme="dark"] .log-library-help{background:#363321;color:#ddd7a6;border-color:#575237}
html[data-theme="dark"] .log-library-row{background:#213126;border-color:#34383d;border-left-color:#4ea35a}
html[data-theme="dark"] .log-library-row:hover{background:#29402f}
html[data-theme="dark"] .hour-check-grid{background:#1d1f22;border-color:#5d6168}
html[data-theme="dark"] .hour-check-grid label{background:#292c30;border-color:#41454b}
html[data-theme="dark"] .hours-chip{background:#303338;border-color:#61666d;color:#d9dce0!important}
html[data-theme="dark"] .legal-disclaimer{color:#9ea3aa}
html[data-theme="dark"] .legal-disclaimer>div:first-child{color:#c4c7cb}
html[data-theme="dark"] .app-legal{background:linear-gradient(#292c30,#23262a);border-color:#50545a}
html[data-theme="dark"] .modal-shade{background:rgba(0,0,0,.68)}
html[data-theme="dark"] .check-grid{background:#202225;border-color:#575b61}
html[data-theme="dark"] .check-line{color:#e3e3e3}
html[data-theme="dark"] .form-message{color:#c4c7cb}
html[data-theme="dark"] .loading-indicator{color:#d6d9dd}
@media(max-width:980px){.theme-toggle{align-self:flex-end}}
@media(max-width:650px){.station-tools{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:6px 8px}.station-tools .compact-label{grid-column:2}.station-tools .vt-server-state{grid-column:1/-1}.theme-toggle{grid-column:1;grid-row:1;align-self:center}.compact-label select{width:100%}}


/* v0.4.87 - aligned recorder device selectors + visible destructive actions in dark mode */
html[data-theme="dark"] .spl-btn.danger{color:#ffd9dc;background:linear-gradient(#7d2930,#531b20);border-color:#b84a52;box-shadow:inset 1px 1px rgba(255,255,255,.08)}
html[data-theme="dark"] .spl-btn.danger:hover:not(:disabled){color:#fff;background:linear-gradient(#96343d,#692229);border-color:#e06b73}
html[data-theme="dark"] .spl-btn.danger:active:not(:disabled){background:#47171b;border-color:#c95760}

/* v0.4.88 - prevent recorder device-control overlap in split/narrow workspaces */
.device-row{display:block;margin-top:8px}
.device-selectors{display:grid;gap:7px;max-width:640px}
.device-selectors label{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:7px;font-size:12px}
.device-row select{min-width:0;width:100%;max-width:100%}
.device-extras{display:flex;align-items:center;justify-content:flex-start;gap:12px;flex-wrap:wrap;max-width:640px;margin-top:8px;padding-left:99px;box-sizing:border-box}
.device-row .boost-control{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px}
.device-extras .spl-btn{flex:0 0 auto}
@media(max-width:650px){
  .device-selectors label{grid-template-columns:1fr;gap:3px}
  .device-extras{display:grid;grid-template-columns:1fr;align-items:stretch;max-width:none;margin-top:8px;padding-left:0}
  .device-row .boost-control{display:grid}
  .boost-control input[type=range]{width:100%}
  .boost-control output{text-align:left}
  .device-extras .spl-btn{width:100%}
}

/* v0.4.89 - keep yellow incoming-song surfaces readable in dark mode */
html[data-theme="dark"] .lane-in .lane-head,
html[data-theme="dark"] .lane-in .lane-head span,
html[data-theme="dark"] .lane-in .lane-head strong,
html[data-theme="dark"] .status-in,
html[data-theme="dark"] .status-in span,
html[data-theme="dark"] .status-in strong{color:#111}

/* v0.4.90 - match the light-mode Record VT warning/accent color in dark mode */
html[data-theme="dark"] .record-vt-btn,
html[data-theme="dark"] .record-vt-btn:not(:disabled){color:#ff5a63}
html[data-theme="dark"] .record-vt-btn:hover:not(:disabled){color:#ff7a81}

/* v0.4.91 - high-contrast white loading spinners in dark mode */
html[data-theme="dark"] .loading-spinner,
html[data-theme="dark"] .log-mini-btn.is-loading::after,
html[data-theme="dark"] .spl-btn.is-loading::after,
html[data-theme="dark"] .mini-media.is-loading::after,
html[data-theme="dark"] .upload-message.is-loading::before,
html[data-theme="dark"] .wave-more-btn.is-loading::after{
  border-color:rgba(255,255,255,.34);
  border-top-color:#fff;
}
html[data-theme="dark"] .wave-loading .loading-spinner{
  border-color:rgba(255,255,255,.34);
  border-top-color:#fff;
}

/* v0.4.92 - match the light-mode Voice Tracker Start button accent in dark mode */
html[data-theme="dark"] #recordBtn,
html[data-theme="dark"] #recordBtn:not(:disabled){color:#ff5a63}
html[data-theme="dark"] #recordBtn:hover:not(:disabled){color:#ff7a81}

/* v0.4.93/v0.4.94 - login uses the exact same theme-toggle button/icon styling as the main app */
.login-titlebar{display:flex;align-items:center}
.login-theme-toggle{margin:0}
.login-titlebar .window-title-version{margin-left:auto}

/* v0.4.99 - restore the original v0.4.85 theme toggle exactly; login reuses it too */
.login-titlebar{display:flex;align-items:center}
.login-theme-toggle{margin:0}
.login-titlebar .window-title-version{margin-left:auto}


/* v0.5.03 - explicit modal close controls; clicking the backdrop does not dismiss */
.modal-card>.modal-titlebar{position:sticky;top:0;z-index:5}
.modal-titlebar>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.window-close{
  margin-left:auto;
  width:23px;
  height:22px;
  min-width:23px;
  padding:0 0 2px;
  display:inline-grid;
  place-items:center;
  border:1px solid #8b8b8b;
  border-radius:2px;
  background:linear-gradient(#fff,#dedede);
  color:#222;
  font:700 18px/1 Arial,sans-serif;
  cursor:pointer;
  box-shadow:inset 1px 1px rgba(255,255,255,.8)
}
.window-close:hover{background:#fff;border-color:#666;color:#b0000b}
.window-close:focus-visible{outline:2px solid var(--select);outline-offset:1px}
html[data-theme="dark"] .window-close{
  background:linear-gradient(#45494f,#2d3035);
  border-color:#666b72;
  color:#f3f3f3;
  box-shadow:inset 1px 1px rgba(255,255,255,.08)
}
html[data-theme="dark"] .window-close:hover{background:#4d5157;border-color:#8a9098;color:#ff666d}


/* v0.5.05 - create and assign a station while creating an administrator user */
.user-new-station{border:1px solid #aaa;background:#f7f7f7;padding:9px}
.user-new-station-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1.2fr);gap:9px;align-items:center}
.user-new-station-row input{width:100%}
.field-help{font-size:11px;color:#626262;line-height:1.3}
html[data-theme="dark"] .user-new-station{background:#24272b;border-color:#575b61}
html[data-theme="dark"] .field-help{color:#c9c9c9}
@media(max-width:650px){.user-new-station-row{grid-template-columns:1fr}}

/* v0.5.07 - dark-mode Station Users toolbar should match the rest of the panel */
html[data-theme="dark"] .billing-team-toolbar{background:#292c30;border-color:#55595f}
html[data-theme="dark"] .billing-team-toolbar label{color:#d8dbe0}

/* v0.5.08 - site-styled alerts, confirmations, and prompts */
.site-dialog-card{width:min(460px,calc(100vw - 24px));max-width:460px}
.site-dialog-body{padding:14px;background:var(--chrome2);color:var(--text)}
.site-dialog-message{white-space:pre-line;line-height:1.45;min-height:22px}
.site-dialog-input-wrap{display:grid;gap:5px;margin-top:12px;font-size:11px;font-weight:700}
.site-dialog-input-wrap input{width:100%;box-sizing:border-box}
.site-dialog-actions{margin-top:16px;padding-top:10px;border-top:1px solid var(--line);justify-content:flex-end}
.site-dialog-actions .spl-btn{min-width:78px}
html[data-theme="dark"] .site-dialog-body{background:#282a2e;color:#f1f1f1}
html[data-theme="dark"] .site-dialog-actions{border-color:#55595f}

/* v0.5.09 - per-lane stereo vertical VU meters */
html[data-theme="dark"] .stereo-vu-wrap{background:#0e0f10;border-left-color:#484c51}

/* v0.5.10 - StationPlaylist Creator category selector in Insert From Library */
.log-library-category{padding:7px 7px 0;background:#e8e8e8}
.log-library-category label{display:grid;gap:3px;font-size:11px;font-weight:700}
.log-library-category select{height:31px;width:100%;border:1px solid #8d8d8d;background:#fff;color:#111;padding:4px 7px}
html[data-theme="dark"] .log-library-category{background:#292c30}
html[data-theme="dark"] .log-library-category label{color:#d8dbe0}
html[data-theme="dark"] .log-library-category select{background:#16181b;color:#f1f1f1;border-color:#666a70}

/* v0.5.11 - Creator library field selector */
.log-library-filters{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:7px}
@media(max-width:650px){.log-library-filters{grid-template-columns:1fr}}


/* v0.5.12 - category browser: category + search inline, instant narrowing, preview button */
.log-library-browser{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(180px,1.25fr) 110px;gap:7px;align-items:end;padding:7px;background:#e8e8e8;border-bottom:1px solid #aaa}
.log-library-browser label{display:grid;gap:3px;min-width:0;font-size:11px;font-weight:700}
.log-library-browser select,.log-library-browser input{height:31px;width:100%;min-width:0;border:1px solid #8d8d8d;background:#fff;color:#111;padding:4px 7px}
.log-library-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px}
.log-library-play{width:31px!important;min-width:31px!important;padding:0!important;font-weight:800}
.log-library-play.is-playing{color:#111}
html[data-theme="dark"] .log-library-browser{background:#292c30;border-color:#55595f}
html[data-theme="dark"] .log-library-browser label{color:#d8dbe0}
html[data-theme="dark"] .log-library-browser select,html[data-theme="dark"] .log-library-browser input{background:#16181b;color:#f1f1f1;border-color:#666a70}
html[data-theme="dark"] .log-library-play.is-playing{color:#fff}
@media(max-width:720px){.log-library-browser{grid-template-columns:1fr 1fr}.log-library-searchby-field{grid-column:1/-1}.log-library-row{grid-template-columns:minmax(0,1fr) auto}}

/* v0.5.13 - Library preview uses the exact Log Editor Play/Stop control */
.log-library-actions{display:flex;align-items:center;gap:5px}
.log-library-row .log-library-play{width:27px;height:27px;min-height:27px;min-width:27px;padding:0;font-size:14px;line-height:25px;flex:0 0 27px}
/* v0.5.15 - Creator Spot Groups in Library/Log Editor */
.log-edit-row.log-type-spot{background:#fff3df;border-left-color:#ca8522}
.log-type-spot .log-edit-type{color:#9b5b08}
html[data-theme="dark"] .log-edit-row.log-type-spot{background:#3a2e1e;border-left-color:#d49539}
html[data-theme="dark"] .log-type-spot .log-edit-type{color:#edbd75}

/* Station user schedule and library permissions (v0.5.3) */
.day-check-grid{display:grid;grid-template-columns:repeat(7,minmax(60px,1fr));gap:7px;margin-top:8px}
.day-check-grid label{display:flex;align-items:center;gap:5px;padding:9px 8px;border:1px solid var(--border,#98aabd);border-radius:6px;font-size:12px;white-space:nowrap}
.day-check-grid input{accent-color:#2c82c7}
@media(max-width:680px){.day-check-grid{grid-template-columns:repeat(4,minmax(64px,1fr))}}

/* v0.5.4: read-only VT Server 6.21 beta connection report */
.vt-diagnostics {width:100%;min-width:0;display:grid;gap:7px}
.vt-diagnostics.hidden {display:none}
.vt-diagnostics label {font-weight:600;font-size:12px}
.vt-diagnostics textarea {width:100%;min-height:145px;resize:vertical;box-sizing:border-box;font-family:ui-monospace,Consolas,monospace;font-size:12px;line-height:1.5}
.vt-diagnostics small {font-size:11px;opacity:.82}

/* v0.5.6 - original platform admin only, compact live server resource meters */
.server-metrics-panel{margin-bottom:12px}
.server-metrics-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:12px}
.server-meter{min-width:0;border:1px solid #bebebe;background:linear-gradient(#fff,#f4f4f4);border-radius:5px;padding:12px}
.server-meter-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;font-size:14px}
.server-meter-heading span{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}
.server-meter-track{height:15px;background:#dadde0;border-radius:9px;border:1px solid #aaa;overflow:hidden}
.server-meter-fill{height:100%;width:0%;border-radius:9px;transition:width .45s ease}
.server-meter-fill.cpu{background:linear-gradient(90deg,#1356a0,#348cda)}
.server-meter-fill.ram{background:linear-gradient(90deg,#3a7b35,#5dbd54)}
.server-meter small{display:block;color:#656565;margin-top:6px;font-size:11px}
[data-theme="dark"] .server-meter{background:#282b31;border-color:#484b54;color:#eee}
[data-theme="dark"] .server-meter small{color:#aaa}
[data-theme="dark"] .server-meter-track{background:#171a20;border-color:#444}
@media(max-width:580px){.server-metrics-body{grid-template-columns:1fr;gap:8px;padding:9px}}

/* v0.5.7: WHMCS API token management — matches compact administration panels. */
.whmcs-api-inner{padding:12px;display:grid;gap:12px}.whmcs-help{margin:0;color:var(--muted,#707881);font-size:12px;line-height:1.5}.whmcs-api-inner label{display:grid;gap:5px;font-size:12px}.whmcs-api-inner input,.whmcs-api-inner select{width:100%;min-width:0}.whmcs-form{display:grid;grid-template-columns:minmax(0,1fr) 140px auto;gap:8px;align-items:end}.whmcs-secret-row{display:flex;gap:6px}.whmcs-once{border:1px solid #c68b28;border-radius:6px;padding:10px;display:grid;gap:8px;background:rgba(214,158,57,.07)}.whmcs-once small{font-size:11px;opacity:.84}.whmcs-token-list{max-height:250px;overflow:auto}.whmcs-token-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid rgba(127,127,127,.22);padding:10px 0}.whmcs-token-row>div{min-width:0;display:flex;flex-direction:column;gap:3px}.whmcs-token-row strong{font-size:12px}.whmcs-token-row span{font-size:11px;color:var(--muted,#707881);overflow-wrap:anywhere}@media(max-width:760px){.whmcs-form{grid-template-columns:1fr}.whmcs-secret-row{flex-wrap:wrap}}

/* v0.5.11: Creator timed events are explicit, not ordinary spots. */
.log-edit-row.log-has-timed-event{background:#fff0cc;border-left-color:#e09a00}
.log-has-timed-event .log-edit-type{color:#985900;font-weight:900}
.log-timed-event-badge{display:inline-block!important;max-width:100%;padding:1px 5px!important;margin:2px 0 0!important;border:1px solid #d3a044;border-radius:3px;background:#fff6da;color:#784c00!important;font-weight:700;font-size:10px!important}
html[data-theme="dark"] .log-edit-row.log-has-timed-event{background:#403218;border-left-color:#d59a2b}
html[data-theme="dark"] .log-has-timed-event .log-edit-type{color:#f4c974}
html[data-theme="dark"] .log-timed-event-badge{background:#60451c;border-color:#956c28;color:#f9d988!important}

/* v0.5.13 — StationPlaylist-inspired Log Editor item icons.
   Presentation only: never infer/write timing or PLG row types from icon styling. */
.log-editor-header,.log-edit-row{grid-template-columns:124px 104px minmax(230px,1fr) 74px 130px}
.log-edit-type{display:flex;align-items:center;gap:5px;min-width:0}
.log-edit-type .log-type-text{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log-kind-icon{flex:0 0 19px;display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;color:#62707b}
.log-kind-icon svg{display:block;width:19px;height:19px}
.log-kind-song{color:#278546}
.log-kind-jingle{color:#3268c7}
.log-kind-timed{color:#d78b15}
.log-kind-voicetrack{color:#3879bf}
.log-kind-marker{color:#7860ab}
.log-kind-audio{color:#aa7430}
/* Spot red dot and commercial traffic light use fixed colors in both themes. */
.log-kind-commercial{color:#343a40}
.log-kind-spot{color:#b61a1d}
@media(max-width:650px){
  .log-editor-header{grid-template-columns:108px 1fr 116px}
  .log-edit-row{grid-template-columns:108px 23px minmax(0,1fr) 116px}
  .log-edit-type{display:flex;padding-left:2px;padding-right:1px}
  .log-edit-type .log-type-text{display:none}
  .log-edit-length{display:none}
  .log-kind-icon,.log-kind-icon svg{width:18px;height:18px;flex-basis:18px}
}

/* v0.5.17 Studio reporting monitor (read-only) */
.studio-monitor-panel{max-width:880px}
.studio-monitor-inner{padding:14px;display:grid;gap:12px}
.studio-monitor-tile{padding:14px;border:1px solid var(--border-color,#b4b9c2);border-radius:8px;display:flex;flex-direction:column;gap:5px;min-width:0}
.studio-monitor-tile strong{font-size:17px;overflow-wrap:anywhere}
.studio-monitor-statuses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.studio-monitor-config{border-top:1px solid var(--border-color,#999);padding-top:12px;display:grid;gap:12px}
.studio-monitor-actions{display:flex;flex-wrap:wrap;gap:8px}
.studio-reporter-field{display:flex;flex-direction:column;gap:6px}
#studioReporterUrl{width:100%;max-width:100%;box-sizing:border-box;font-family:monospace;font-size:12px;word-break:break-all}
@media(max-width:520px){.studio-monitor-statuses{grid-template-columns:1fr}}

/* v0.5.18 — compact inline Studio Monitor, above the hourly Log Editor. */
.studio-inline-monitor{margin:0 0 10px 0;padding:0;overflow:hidden}
.studio-inline-heading{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:6px 10px;background:var(--panel-head-bg,#e3e4e5);border-bottom:1px solid var(--border,#b9babd);font-size:13px}
.studio-inline-heading strong{font-weight:750}
.studio-inline-connection{font-size:11px;border-radius:3px;border:1px solid #999;padding:2px 6px;color:inherit;background:rgba(120,120,120,.12)}
.studio-inline-connection[data-status="reachable"]{border-color:#358d48;color:#1e853a}
.studio-inline-connection[data-status="unreachable"]{border-color:#c94d53;color:#b8323b}
.studio-inline-updated{font-size:11px;opacity:.65;margin-left:auto}
.studio-inline-content{display:grid;grid-template-columns:minmax(180px,1fr) 130px 130px;gap:0;align-items:stretch}
.studio-inline-song,.studio-inline-state{padding:8px 12px;display:flex;flex-direction:column;gap:2px;min-width:0;border-right:1px solid var(--border,#ccc)}
.studio-inline-state:last-child{border-right:0}
.studio-inline-label{font-size:10px;font-weight:800;color:var(--muted,#666)}
.studio-inline-song strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-inline-song #studioNowArtist{font-size:12px;opacity:.75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-inline-state strong{font-size:13px}
.studio-inline-hint{padding:5px 12px;border-top:1px solid var(--border,#ccc);font-size:11px;opacity:.72}
@media(max-width:600px){.studio-inline-content{grid-template-columns:minmax(150px,1fr) 90px 90px}.studio-inline-state,.studio-inline-song{padding:8px}.studio-inline-song strong{font-size:13px}.studio-inline-status{font-size:11px}}

/* v0.5.19 — native Studio Monitor status; keep the monitor compact above Log Editor. */
.studio-inline-connection[data-status="connected"]{border-color:#368c50;color:#238841}
.studio-inline-connection[data-status="auth_failed"],.studio-inline-connection[data-status="protocol_error"]{border-color:#c94d53;color:#bf333d}
.studio-inline-extra{display:flex;gap:15px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--border,#ddd);padding:5px 12px;font-size:11px;opacity:.82}
.studio-inline-extra > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:42%}
#studioDuration{margin-left:auto;font-variant-numeric:tabular-nums}
.studio-inline-progress{width:100%;height:3px;background:rgba(127,127,127,.18)}
.studio-inline-progress span{display:block;height:100%;background:#378dcb;transition:width .35s ease}
@media(max-width:650px){.studio-inline-extra > span{max-width:100%}#studioDuration{margin-left:0}}

/* v0.5.20 — low-profile Studio Monitor: two compact information rows.
   The live clock and progress advance every second on the client. */
.studio-inline-monitor{margin-bottom:7px}
.studio-inline-heading{padding:3px 9px;min-height:23px;gap:8px;font-size:12px}
.studio-inline-connection{padding:1px 5px;font-size:10px;line-height:16px}
.studio-inline-updated{font-size:10px;line-height:16px}
.studio-inline-content{grid-template-columns:minmax(0,1fr) 94px 102px}
.studio-inline-song,.studio-inline-state{padding:4px 9px;gap:0;justify-content:center}
.studio-inline-label{font-size:9px;line-height:12px;letter-spacing:.015em}
.studio-inline-song strong{font-size:13px;line-height:16px}
.studio-inline-song #studioNowArtist{font-size:11px;line-height:14px}
.studio-inline-state strong{font-size:12px;line-height:16px}
.studio-inline-extra{padding:3px 9px;gap:10px;font-size:10px;min-height:17px}
.studio-inline-extra > span{max-width:42%}
.studio-inline-hint{padding:3px 9px;font-size:10px}
.studio-inline-hint:empty{display:none}
.studio-inline-progress{height:3px}
.studio-inline-progress span{transition:width .9s linear}
@media(max-width:600px){
  .studio-inline-content{grid-template-columns:minmax(0,1fr) 72px 78px}
  .studio-inline-song,.studio-inline-state{padding:4px 6px}
  .studio-inline-song strong{font-size:12px}
  .studio-inline-state strong{font-size:11px}
  .studio-inline-extra{gap:6px}
  .studio-inline-extra > span{max-width:38%}
}

/* v0.5.21: station-owner Studio Monitor feature switch. */
.form-grid label.studio-feature-switch{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border,#c2c5c8);border-radius:4px;background:var(--panel-head-bg,#e9e9e9);cursor:pointer}
.form-grid .studio-feature-switch input[type="checkbox"]{width:17px;height:17px;padding:0;margin:2px 0 0;flex:0 0 auto}
.studio-feature-switch span{display:flex;flex-direction:column;gap:2px}
.studio-feature-switch small{font-size:11px;opacity:.75;line-height:1.4}

/* v0.5.22: compact, status-driven on-air AUTO control */
.studio-inline-auto-row{display:flex;align-items:center;gap:7px;min-width:0}
.studio-auto-toggle{font-weight:800;font-size:10px;line-height:16px;padding:1px 8px;min-height:23px;white-space:nowrap}
.studio-auto-toggle.is-on{background:#218149;color:#fff;border-color:#196e3c}
.studio-auto-toggle.is-off{background:#777;color:#fff;border-color:#666}
.studio-auto-toggle:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:650px){.studio-inline-auto-row{gap:4px}.studio-auto-toggle{padding:1px 5px;font-size:9px}}

/* v0.5.35 floating waveform window; existing Library panel layout remains untouched. */
.log-library-wave{display:inline-flex!important;align-items:center;justify-content:center;width:29px!important;min-width:29px!important;height:27px!important;padding:2px!important;color:#2461a0}
.log-library-wave svg{display:block;pointer-events:none}.log-library-wave:hover{color:#0854a3}
.library-wave-window{position:fixed;z-index:80;left:18%;top:12%;width:min(800px,calc(100vw - 24px));max-height:calc(100vh - 16px);display:flex;flex-direction:column;background:var(--panel,#f0f0f0);border:1px solid var(--line-dark,#666);box-shadow:0 14px 36px rgba(0,0,0,.32);border-radius:4px;overflow:hidden}
.library-wave-title{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;cursor:move;touch-action:none;user-select:none;gap:10px;padding-left:10px}
.library-wave-title .window-close{cursor:pointer;touch-action:auto;flex:0 0 auto}
.library-wave-inner{overflow:auto;padding:11px;background:var(--panel,#f3f3f3)}
.library-wave-source{color:var(--muted,#555);font-size:11px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-bottom:8px}
.library-wave-stage{position:relative;border:1px solid #343a43;background:#15191f;line-height:0}
.library-wave-stage canvas{width:100%;height:140px;display:block;cursor:crosshair;touch-action:none}
.library-wave-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px;background:rgba(21,25,31,.74);font:600 12px Segoe UI,sans-serif;color:#f2f2f2;line-height:1.3;pointer-events:none;z-index:3}.library-wave-loading .loading-spinner{width:17px;height:17px;border-color:rgba(255,255,255,.35);border-top-color:white}
.library-wave-loading{flex-direction:column;gap:9px}
.library-wave-loading-line{display:flex;align-items:center;justify-content:center;gap:9px;width:min(100%,430px);line-height:1.45}
.library-wave-loading-line #libraryWaveLoadingText{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.library-wave-percentage{color:#fff;min-width:36px;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
.library-wave-progress{width:min(86%,410px);height:7px;overflow:hidden;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.22);border-radius:9px}
.library-wave-progress>span{display:block;height:100%;border-radius:9px;background:#55c6ff;transition:width .12s linear}
.library-wave-transport{display:flex;gap:7px;align-items:center;margin:9px 0 10px}.library-wave-transport span{margin-left:auto;font:12px Consolas,monospace;color:var(--muted,#555)}
.library-wave-fields{display:grid;grid-template-columns:1fr 1fr;gap:9px}.library-wave-fields label{display:grid;gap:3px;font-size:11px;font-weight:700;min-width:0}
.library-wave-fields input{width:100%;height:31px;min-width:0;padding:4px 7px;border:1px solid #949494;background:var(--white,#fff);color:var(--text,#222);border-radius:2px}
.library-wave-set{display:flex;gap:5px;align-items:center}.library-wave-set input{flex:1}.library-wave-set button{min-width:45px;height:31px;flex:0 0 auto}
.library-wave-note{font-size:11px;color:var(--muted,#616161);line-height:1.45;margin:12px 0 6px}.library-wave-message{min-height:19px;font-size:12px;color:#24712a}.library-wave-message.error{color:#bd1e24}
.library-wave-footer{display:flex;justify-content:flex-end;gap:7px;margin-top:8px}
html[data-theme="dark"] .library-wave-inner{background:#24272b}html[data-theme="dark"] .library-wave-fields input{background:#16181b;border-color:#666a70;color:#f1f1f1}html[data-theme="dark"] .log-library-wave{color:#8bc9ff}
@media(max-width:640px){.library-wave-window{left:8px!important;top:8px!important;width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.library-wave-fields{grid-template-columns:1fr}.library-wave-stage canvas{height:110px}.library-wave-transport{flex-wrap:wrap}}

/* v0.5.39: small extra outro-detail strip. Library layout is unchanged. */
.library-wave-tail{margin-top:7px;background:#15191f;border:1px solid #343a43;border-radius:2px;overflow:hidden;color:#b8c9d6}
.library-wave-tail-head{padding:6px 9px 2px;display:flex;justify-content:space-between;gap:8px;align-items:center;font:11px Segoe UI,sans-serif;line-height:1.2;color:#b8c9d6}
.library-wave-tail-head strong{font-weight:700;color:#ebf4fa}.library-wave-tail-head span{color:#83a3b8}
.library-wave-tail canvas{width:100%;height:84px;display:block;cursor:crosshair;touch-action:none}
.library-wave-tail-times{display:flex;justify-content:space-between;padding:2px 8px 6px;font:10px Consolas,monospace;color:#a0adba}
@media(max-width:640px){.library-wave-tail canvas{height:75px}}

/* Display the quick overview while the true ending is still loading. */
.library-wave-loading.finishing{inset:auto 6px 6px auto;width:min(310px,calc(100% - 12px));padding:7px 9px;background:rgba(21,25,31,.92);border:1px solid #445464;border-radius:4px;box-shadow:0 3px 10px rgba(0,0,0,.2);gap:5px}
.library-wave-loading.finishing .library-wave-loading-line{width:100%;font-size:11px}
.library-wave-loading.finishing .library-wave-progress{width:100%}

/* v0.5.45: wider floating editor and viewport-only waveform zoom. */
.library-wave-zoom{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;font:11px Segoe UI,sans-serif;color:var(--text,#333)}
.library-wave-zoom-name{font-weight:700;margin-right:3px}
.library-wave-zoom button{min-width:32px;height:27px;padding:3px 9px;font-size:12px;line-height:1}
#libraryWaveZoomLabel{margin-left:auto;font-family:Consolas,monospace;font-size:11px;color:var(--muted,#555);font-variant-numeric:tabular-nums}
.library-wave-pan{display:flex;align-items:center;gap:10px;margin-top:7px;color:var(--muted,#555);font:11px Segoe UI,sans-serif}
.library-wave-pan.hidden{display:none!important}
.library-wave-pan input{width:100%;accent-color:#2788c0;cursor:pointer}
@media(max-width:640px){.library-wave-zoom-name{display:none}#libraryWaveZoomLabel{font-size:10px}}


/* v0.5.49: optional, locally mixed VT music bed and keyboard hint. */
.vt-bed-panel{padding:8px 9px;margin-top:8px;border:1px solid var(--line,#a0a0a0);background:var(--chrome2,#f2f2f2);font-size:12px}
.vt-bed-heading,.vt-bed-status{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vt-bed-heading strong{font-size:12px}.vt-bed-heading>span,.vt-bed-optional{font-weight:normal;color:var(--muted,#666);font-size:11px}
.vt-bed-controls{display:grid;grid-template-columns:minmax(120px,1fr) minmax(170px,2fr) minmax(145px,1.5fr) minmax(125px,1fr);gap:8px;margin-top:7px;align-items:end}
.vt-bed-controls label{display:grid;gap:4px;font-size:11px;font-weight:700;min-width:0}
.vt-bed-controls select,.vt-bed-file input{max-width:100%;width:100%;height:30px;box-sizing:border-box;min-width:0;border:1px solid var(--line,#8d8d8d);color:var(--text,#111);background:var(--input-bg,#fff)}
.vt-bed-file input{padding:4px;font-weight:normal;font-size:10px}
.vt-bed-volume{display:flex;align-items:center;gap:5px;height:30px}
.vt-bed-volume input{flex:1;min-width:35px;accent-color:#226cbb}.vt-bed-volume output{min-width:28px;text-align:right}
.vt-bed-status{font-size:11px;color:var(--muted,#666);margin-top:6px}
.vt-space-hint kbd{padding:1px 5px;border:1px solid var(--line,#999);border-radius:3px;background:var(--input-bg,#fff);color:var(--text,#222);font-family:inherit;font-weight:700}
html[data-theme="dark"] .vt-bed-panel{background:#25292e;border-color:#656971}
html[data-theme="dark"] .vt-bed-controls select,html[data-theme="dark"] .vt-bed-file input,html[data-theme="dark"] .vt-space-hint kbd{background:#171a20;color:#f3f3f3;border-color:#626a75}
@media(max-width:940px){.vt-bed-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){.vt-bed-controls{grid-template-columns:1fr}.vt-bed-heading>span{display:none}}

/* v0.5.50: Fit the in-log Voicetracker into the right workspace.
   The legacy free-standing tracker keeps its original waveform sizing. */
@media (min-width: 1051px) {
  .log-editor-layout { grid-template-columns: minmax(610px, 1.17fr) minmax(500px, 1fr); }
}
.log-vt-workspace, .log-vt-workspace #logVtPanelHost,
.log-vt-workspace .tracker-panel, .log-vt-workspace #tracker { min-width: 0; }
.log-vt-workspace #logVtPanelHost { overflow-x: hidden; }
.log-vt-workspace .tracker-panel { max-width: 100%; }
/* Use the pane's actual available height rather than its old minimum content height. */
@media (min-width: 1051px) and (min-height: 710px) {
  .log-vt-workspace #logVtPanelHost { overflow-y: auto; }
  .log-vt-workspace .tracker-panel { height: 100%; min-height: 0; }
  .log-vt-workspace #tracker:not(.hidden) { display: flex; flex-direction: column; min-height: 0; height: 100%; }
  .log-vt-workspace .tracker-titlebar { flex: 0 0 29px; height: 29px; }
  .log-vt-workspace .wave-lane { display: flex; flex: 1 1 0; flex-direction: column; min-height: 86px; margin: 3px 5px; }
  .log-vt-workspace .lane-head { flex: 0 0 25px; min-height: 25px; }
  .log-vt-workspace .wave-meter-row { flex: 1 1 0; min-height: 32px; height: auto; --wave-meter-height: auto; }
  .log-vt-workspace .wave-canvas { height: 100%; }
  .log-vt-workspace .out-wave-tools, .log-vt-workspace .in-wave-tools { flex: 0 0 auto; min-height: 21px; padding: 1px 6px; }
  .log-vt-workspace .lane-meta, .log-vt-workspace .record-status-line { flex: 0 0 auto; min-height: 21px; padding: 2px 7px; }
  .log-vt-workspace .wave-more-btn { height: 20px; padding: 0 6px; }
  .log-vt-workspace .recorder-controls { flex: 0 0 auto; margin: 3px 5px; padding: 5px 7px; }
  .log-vt-workspace .record-actions .spl-btn { min-height: 26px; padding: 2px 9px; }
  .log-vt-workspace .preview-card { flex: 0 0 auto; margin: 3px 5px; padding: 5px 7px; }
  .log-vt-workspace .preview-actions .spl-btn { min-height: 27px; padding: 3px 8px; }
  .log-vt-workspace .upload-message { margin-top: 3px; }
}
/* The music bed is optional but fully accessible, not a separate scrolled drawer. */
.log-vt-workspace .vt-bed-panel { margin-top: 5px; padding: 5px 7px; max-width: 100%; min-width: 0; }
.log-vt-workspace .vt-bed-heading, .log-vt-workspace .vt-bed-status { gap: 4px 8px; }
.log-vt-workspace .vt-bed-controls {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) minmax(0, 1.1fr) minmax(0, .9fr);
  margin-top: 4px; gap: 5px;
}
.log-vt-workspace .vt-bed-controls label { gap: 2px; }
.log-vt-workspace .vt-bed-controls select,
.log-vt-workspace .vt-bed-file input { height: 26px; }
.log-vt-workspace .vt-bed-file input { padding: 3px; }
.log-vt-workspace .vt-bed-volume { height: 26px; }
.log-vt-workspace .vt-bed-status { margin-top: 4px; }
/* Two rows of audio devices, without the 260px minimum that forced horizontal scrolling. */
.log-vt-workspace .device-row { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 7px; margin-top: 5px; min-width: 0; }
.log-vt-workspace .device-selectors { min-width: 0; max-width: none; gap: 4px; }
.log-vt-workspace .device-selectors label { grid-template-columns: 82px minmax(0, 1fr); gap: 4px; min-width: 0; }
.log-vt-workspace .device-row select { height: 26px; min-width: 0; }
.log-vt-workspace .device-extras { min-width: 0; gap: 4px; }
.log-vt-workspace .boost-control { min-width: 0; gap: 3px; }
.log-vt-workspace .boost-control input[type=range] { width: clamp(65px, 7vw, 95px); }
.log-vt-workspace .device-extras .spl-btn { min-height: 26px; padding: 3px 7px; font-size: 11px; }
/* Under narrower workstation widths, keep controls in-flow rather than overflowing sideways.
   Short screens are still allowed vertical scrolling so controls are never clipped. */
@media (max-width: 1240px) {
  .log-vt-workspace .vt-bed-heading > span { display: none; }
  .log-vt-workspace .device-row { grid-template-columns: minmax(0, 1fr); }
  .log-vt-workspace .device-extras { justify-content: flex-start; }
}
@media (max-width: 1050px) {
  .log-vt-workspace .vt-bed-controls { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .log-vt-workspace #logVtPanelHost { overflow-x: hidden; overflow-y: auto; }
}
@media (max-width: 580px) {
  .log-vt-workspace .vt-bed-controls { grid-template-columns: minmax(0, 1fr); }
}
/* Override the older v0.4.88 block layout only inside the Log Editor VT pane. */
.log-vt-workspace .device-row { display: grid; }
.log-vt-workspace .device-extras { padding-left: 0; margin-top: 0; max-width: none; }
.log-vt-workspace .vt-bed-volume { min-width: 0; width: 100%; }
.log-vt-workspace .vt-bed-volume input[type="range"] { width: 100%; min-width: 0; flex: 1 1 0; }
.log-vt-workspace .vt-bed-volume output { flex: 0 0 28px; }
@media (min-width: 1051px) and (min-height: 710px) {
  /* Canvas intrinsic dimensions must not force a grid row taller than its flex allocation. */
  .log-vt-workspace .wave-meter-row { grid-template-rows: minmax(0, 1fr); height: 1px; min-height: 34px; overflow: hidden; }
  .log-vt-workspace .wave-meter-row > .wave-canvas,
  .log-vt-workspace .wave-meter-row > .wave-loading-wrap { height: 100%; min-height: 0; }
  .log-vt-workspace .wave-lane { min-height: 110px; }
  .log-vt-workspace .lane-vt { min-height: 95px; }
}


/* v0.5.51: equal waveform BOX heights in every Log Editor VT lane. The
   outgoing, VT and incoming rows use one common viewport-aware height,
   independent of the extra cue/status/Show-more controls below each row. */
.log-vt-workspace #tracker { --vt-equal-wave-height:clamp(35px,calc((100dvh - 680px)/3),88px); }
.log-vt-workspace .wave-lane { flex:0 0 auto !important; min-height:0 !important; }
.log-vt-workspace .wave-meter-row {
  flex:0 0 var(--vt-equal-wave-height) !important;
  height:var(--vt-equal-wave-height) !important;
  min-height:0 !important;
  grid-template-rows:minmax(0,1fr);
  overflow:hidden;
}
.log-vt-workspace .wave-meter-row>.wave-canvas,
.log-vt-workspace .wave-meter-row>.wave-loading-wrap,
.log-vt-workspace .wave-meter-row .wave-canvas,
.log-vt-workspace .wave-meter-row .stereo-vu-wrap { height:100%;min-height:0; }
/* The original standalone tracker also keeps all three waveform boxes equal. */
#tracker:not(.hidden) .wave-meter-row { --wave-meter-height:86px; }
.log-vt-workspace #tracker .wave-meter-row { --wave-meter-height:var(--vt-equal-wave-height); }
/* One checkbox replaces the mic boost slider, with no horizontal overflow. */
.mic-enhance-control { display:inline-flex;align-items:center;gap:6px;min-width:0;cursor:pointer;font-size:12px;font-weight:600;white-space:normal; }
.mic-enhance-control input[type=checkbox] { width:16px;height:16px;flex:0 0 16px;accent-color:#0874c1;cursor:pointer; }
.mic-enhance-control input:disabled { cursor:not-allowed; }
.log-vt-workspace .device-extras { flex-wrap:wrap;justify-content:flex-start; }
.log-vt-workspace .mic-enhance-control { max-width:100%; }
@media(max-width:650px) { .device-extras .mic-enhance-control { display:flex; } }


/* v0.5.53: The Log Editor fills the *available* desktop viewport height, not
   100vh minus a guessed header height.  Keep the browser page stationary
   while the log and library lists scroll independently.  Leave account/admin,
   mobile/narrow layouts, and short windows at their natural document height. */
@media (min-width:1051px) and (min-height:660px) {
  #mainView:has(#logView:not(.hidden)) {
    display:flex;
    flex-direction:column;
    height:100vh;
    height:100dvh;
    min-height:0;
  }
  #mainView:has(#logView:not(.hidden)) > .app-header { flex:0 0 auto; }
  #mainView:has(#logView:not(.hidden)) > main {
    display:flex;
    flex-direction:column;
    flex:1 1 0;
    min-height:0;
    width:100%;
    overflow:hidden;
  }
  #mainView:has(#logView:not(.hidden)) > .app-legal {
    flex:0 0 auto;
    margin-top:0;
  }
  #logView:not(.hidden) {
    display:flex;
    flex-direction:column;
    flex:1 1 0;
    min-height:0;
    width:100%;
  }
  #logView .studio-inline-monitor,
  #logView .log-page-toolbar { flex:0 0 auto; }
  #logView .log-editor-layout {
    flex:1 1 0;
    min-height:0;
    grid-template-rows:minmax(0,1fr);
  }
  #logView .log-editor-panel,
  #logView .log-right-workspace,
  #logView .log-library-panel,
  #logView .log-vt-workspace {
    height:100%;
    min-height:0;
  }
  #logView .log-editor-list,
  #logView .log-library-list { min-height:0; }
  #logView .log-vt-workspace #logVtPanelHost {
    min-height:0;
    overflow-y:auto;
    overflow-x:hidden;
  }
}


/* v0.5.55 — Equal-width Log/VT layout, direct action buttons under the three
   matching-height waveforms, and a native modal for optional recorder settings. */
.vt-main-layout, .vt-wave-column { min-width:0; }
.vt-action-bar {
  display:flex; justify-content:center; align-items:center; gap:10px;
  padding:6px 8px; border-top:1px solid var(--line,#aaa);
  background:var(--chrome2,#f0f0f0); flex:0 0 auto; min-height:39px;
  box-sizing:border-box;
}
.vt-action-bar .record-actions { display:flex; gap:8px; margin:0; }
.vt-action-bar .spl-btn { min-width:110px; min-height:30px; }
.vt-settings-btn { font-weight:700; }
.vt-settings-dialog {
  position:fixed; inset:0; margin:auto;
  width:min(440px,calc(100vw - 28px)); max-width:440px;
  max-height:min(82dvh,720px); box-sizing:border-box;
  overflow:hidden; padding:0; border:1px solid #858b93;
  border-radius:6px; background:var(--chrome2,#f6f6f6);
  color:var(--text,#111); box-shadow:0 16px 44px rgba(0,0,0,.38);
}
.vt-settings-dialog[open] { display:flex; flex-direction:column; }
.vt-settings-dialog::backdrop { background:rgba(0,0,0,.52); }
/* Use the same window title, chrome, and close control as account/station dialogs. */
.vt-settings-dialog > .modal-titlebar { position:relative; flex:0 0 auto; min-height:30px; }
.vt-settings-dialog > .modal-titlebar > span { font-weight:700; }
.vt-settings-dialog-footer { flex:0 0 auto; padding:9px 11px; border-top:1px solid var(--line,#aaa); background:var(--chrome,#e7e7e7); }
.vt-settings-dialog-footer .spl-btn { min-height:28px; }
.vt-settings-dialog-content { padding:11px; overflow:auto; overscroll-behavior:contain; min-height:0; }
.vt-settings-dialog .vt-bed-panel { margin:0 0 12px; padding:9px; }
.vt-settings-dialog .vt-bed-heading { display:flex; align-items:start; }
.vt-settings-dialog .vt-bed-controls { display:grid; grid-template-columns:minmax(0,1fr); gap:9px; }
.vt-settings-dialog .vt-bed-controls label { font-size:12px; }
.vt-settings-dialog .vt-bed-controls select,
.vt-settings-dialog .vt-bed-file input { width:100%; height:30px; }
.vt-settings-dialog .vt-bed-status { display:flex; flex-direction:column; align-items:start; gap:5px; }
.vt-settings-dialog .device-row { display:grid; grid-template-columns:minmax(0,1fr); gap:10px; margin:0; }
.vt-settings-dialog .device-selectors { width:100%; max-width:none; gap:9px; }
.vt-settings-dialog .device-selectors label { display:grid; grid-template-columns:1fr; gap:4px; }
.vt-settings-dialog .device-selectors label span { font-weight:700; }
.vt-settings-dialog .device-row select { width:100%; max-width:100%; }
.vt-settings-dialog .device-extras { display:flex; flex-direction:column; align-items:stretch; gap:8px; padding:0; margin:0; max-width:none; }
.vt-settings-dialog .mic-enhance-control { margin-top:4px; }
.vt-settings-dialog #refreshMics { align-self:flex-start; }
html[data-theme="dark"] .vt-settings-dialog {
  background:#24272b; color:#ededed; border-color:#777e87;
}
html[data-theme="dark"] .vt-settings-dialog-footer { background:#2d3035; border-color:#60666f; }
html[data-theme="dark"] .vt-action-bar { background:#282c31; border-color:#55595f; }
@media (min-width:1051px) and (min-height:660px) {
  /* Retain the existing library split; use 50/50 specifically for Voicetracker. */
  #logView .log-editor-layout:has(#logVtWorkspace:not(.hidden)) {
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  }
  #logView .log-editor-layout:has(#logVtWorkspace:not(.hidden)) .log-editor-header,
  #logView .log-editor-layout:has(#logVtWorkspace:not(.hidden)) .log-edit-row {
    grid-template-columns:108px 61px minmax(0,1fr) 57px 122px;
  }
  .log-vt-workspace #logVtPanelHost { overflow-x:hidden; overflow-y:hidden; }
  .log-vt-workspace .tracker-panel { height:100%; min-height:0; }
  .log-vt-workspace #tracker:not(.hidden) {
    display:flex; flex-direction:column; height:100%; min-height:0;
  }
  .log-vt-workspace .tracker-titlebar { position:relative; flex:0 0 29px; height:29px; }
  .log-vt-workspace #tracker .vt-main-layout {
    display:flex; flex:1 1 0; flex-direction:column; min-height:0;
    padding:3px 5px; box-sizing:border-box; overflow:hidden;
  }
  .log-vt-workspace .vt-wave-column {
    display:grid; grid-template-rows:repeat(3,minmax(0,1fr));
    flex:1 1 0; min-height:0; overflow:hidden;
  }
  .log-vt-workspace .vt-wave-column .wave-lane {
    display:flex; flex:1 1 0 !important; flex-direction:column;
    margin:2px 0 !important; min-height:0 !important; height:auto; overflow:hidden;
  }
  .log-vt-workspace .vt-wave-column .lane-head {
    grid-template-columns:minmax(85px,104px) minmax(0,1fr) 30px;
    flex:0 0 24px; min-height:24px;
  }
  .log-vt-workspace .vt-wave-column .lane-head span,
  .log-vt-workspace .vt-wave-column .lane-head strong { padding:0 4px; }
  .log-vt-workspace .vt-wave-column .wave-meter-row {
    --wave-meter-height:auto;
    flex:1 1 0 !important; height:auto !important; min-height:24px !important;
    grid-template-rows:minmax(0,1fr); overflow:hidden;
  }
  .log-vt-workspace .vt-wave-column .wave-meter-row .wave-canvas,
  .log-vt-workspace .vt-wave-column .wave-meter-row .wave-loading-wrap,
  .log-vt-workspace .vt-wave-column .wave-meter-row .stereo-vu-wrap {
    min-height:0; height:100%;
  }
  /* Every lane has two same-sized information rows below its waveform. */
  .log-vt-workspace .vt-wave-column .out-wave-tools,
  .log-vt-workspace .vt-wave-column .in-wave-tools,
  .log-vt-workspace .vt-wave-column .vt-wave-tools,
  .log-vt-workspace .vt-wave-column .lane-meta,
  .log-vt-workspace .vt-wave-column .record-status-line {
    flex:0 0 19px !important; height:19px; min-height:19px !important;
    max-height:19px; box-sizing:border-box; overflow:hidden;
    padding:1px 5px; font-size:11px;
  }
  .log-vt-workspace .vt-wave-column .vt-wave-tools {
    display:flex; align-items:center; background:#f5f5f5; color:#555;
    border-top:1px solid #aaa; white-space:nowrap; font-size:10px;
  }
  html[data-theme="dark"] .log-vt-workspace .vt-wave-column .vt-wave-tools {
    background:#24262a; color:#bcc2cb; border-color:#565b61;
  }
  .log-vt-workspace .vt-wave-column .wave-more-btn { height:18px; padding:0 4px; }
  .log-vt-workspace .vt-action-bar { padding:4px 6px; min-height:36px; }
  .log-vt-workspace .vt-action-bar .spl-btn { min-height:28px; }
  .log-vt-workspace .preview-card { flex:0 0 auto; margin:2px 5px 4px; padding:4px 6px; }
  .log-vt-workspace .preview-actions { display:flex; flex-wrap:wrap; gap:5px; }
  .log-vt-workspace .preview-actions .spl-btn { min-height:25px; padding:2px 7px; font-size:11px; }
  .log-vt-workspace .upload-message { margin-top:3px; }
}
@media(max-width:1050px) {
  /* Standalone and narrow layouts use their normal heights and inner scrolling. */
  .log-vt-workspace #logVtPanelHost { overflow:auto; }
  .log-vt-workspace .vt-main-layout { display:block; }
  .log-vt-workspace .vt-wave-column { display:block; }
}

/* v0.5.57 — inline previous/next voice-track marker navigation. */
.log-vt-jump { display:inline-flex; align-items:center; gap:2px; flex:0 0 auto; }
.log-hour-tools .log-vt-jump-btn { width:23px; min-width:23px; height:23px; min-height:23px; padding:0; font:700 10px/1 Arial,sans-serif; }
.log-hour-tools .log-vt-jump-btn:focus-visible { outline:2px solid var(--select); outline-offset:1px; }
@media(max-width:650px) {
  .log-hour-tools { flex-direction:row; align-items:center; flex-wrap:wrap; }
  .log-hour-tools .caption-meta { flex-basis:100%; text-align:right; }
}


/* v0.5.58 — Uniform Log Editor / Library / Voicetracker split and readable
   log Type labels. This is display-only; song type and timed event data stay
   exactly as supplied by StationPlaylist. */
@media (min-width:1051px) {
  /* Applies both while browsing the Creator Library and while recording VT. */
  #logView .log-editor-layout {
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  }
  /* Keep the entire label alongside the 19px icon; use any spare space for
     song titles rather than sacrificing the Type column. */
  #logView .log-editor-layout .log-editor-header,
  #logView .log-editor-layout .log-edit-row,
  #logView .log-editor-layout:has(#logVtWorkspace:not(.hidden)) .log-editor-header,
  #logView .log-editor-layout:has(#logVtWorkspace:not(.hidden)) .log-edit-row {
    grid-template-columns:115px 120px minmax(0,1fr) 58px 122px;
  }
  #logView .log-edit-type .log-type-text {
    text-overflow:clip;
  }
}


/* v0.5.59 — Studio Monitor dark-mode chrome. Its older header depended on
   --panel-head-bg/--border light fallbacks, neither of which was defined in
   dark mode. Scope the fix strictly to the monitor; leave light mode alone. */
html[data-theme="dark"] #studioMonitorBar {
  background:#282a2e;
  border-color:#5b5f66;
  color:#f1f1f1;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-heading {
  background:linear-gradient(#3b3e43,#2a2d31);
  border-bottom-color:#5c6067;
  color:#f1f1f1;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection {
  background:#33373c;
  border-color:#656b73;
  color:#dce0e5;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection[data-status="connected"],
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection[data-status="reachable"] {
  background:#20392c;
  border-color:#448d61;
  color:#83e1a4;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection[data-status="unreachable"],
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection[data-status="auth_failed"],
html[data-theme="dark"] #studioMonitorBar .studio-inline-connection[data-status="protocol_error"] {
  background:#43282d;
  border-color:#ad505b;
  color:#ff9ea6;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-song,
html[data-theme="dark"] #studioMonitorBar .studio-inline-state {
  border-right-color:#50545b;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-label { color:#b9c0c9; }
html[data-theme="dark"] #studioMonitorBar .studio-inline-extra,
html[data-theme="dark"] #studioMonitorBar .studio-inline-hint {
  border-color:#50545b;
  color:#d5d9df;
}
html[data-theme="dark"] #studioMonitorBar .studio-inline-progress {
  background:#1b1d20;
}


/* v0.5.61: Neutral VT Server label; color only Online / Offline, no dot. */
.vt-server-state{display:inline-flex;align-items:center;gap:4px;font-weight:400}
.vt-server-availability{font-weight:700}
html .vt-server-availability.is-online{color:#087b3c}
html .vt-server-availability.is-offline{color:#b3212a}
html[data-theme="dark"] .vt-server-availability.is-online{color:#50de90}
html[data-theme="dark"] .vt-server-availability.is-offline{color:#ff7981}
