:root{color-scheme:dark;--bg:#09101e;--surface:#151f32;--surface2:#1b2b40;--outline:#354a61;--text:#f5f7ff;--muted:#a9b9ca;--cyan:#7fe8df;--gold:#fcd099;font:16px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 12%,#183948 0,transparent 48%),radial-gradient(ellipse at 85% 60%,#182444 0,transparent 56%),var(--bg);color:var(--text)}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.hidden{display:none!important}.brand{display:flex;gap:12px;align-items:center;font-size:1.04rem;font-weight:900;letter-spacing:.1em;white-space:nowrap}.brand b{color:var(--gold)}.brand small{display:block;color:#91abba;font-size:.56rem;letter-spacing:.23em;font-weight:700;margin-top:2px}.brand-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(145deg,#64e7df,#29a0bb);color:#08313b;font-size:2rem;font-weight:500}.btn{border-radius:12px;padding:11px 16px;min-height:42px;border:1px solid transparent;font-weight:750;line-height:1.2;white-space:nowrap}.btn.primary{background:linear-gradient(120deg,#92f2dd,#66cedd);color:#082a33}.btn.secondary{background:#273d54;color:#f3f8ff;border-color:#38556b}.btn.subtle{background:#162338;color:#d7e5ed;border-color:#2b3f57}.btn.textlink{padding-left:0;padding-right:0;color:var(--cyan);background:transparent}.btn.lg{padding:15px 20px}.btn.sm{font-size:.8rem;padding:8px 11px;min-height:37px}.btn.full{width:100%}.topbar{padding:16px max(25px,3vw);min-height:81px;border-bottom:1px solid #ffffff1b;display:flex;align-items:center;justify-content:space-between;gap:18px}.top-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.status{font-size:.8rem;color:#dfb77a;white-space:nowrap}.status:before{content:'●';margin-right:7px}.status.good{color:#82f5bc}.main{min-height:calc(100vh - 128px);padding:3vw max(25px,4vw);display:flex;align-items:center}.home-grid{max-width:1500px;width:100%;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(295px,365px);gap:min(6vw,95px);align-items:center}.eyebrow{font-size:.73rem;color:var(--cyan);font-weight:850;letter-spacing:.2em}.hero h1{font-size:clamp(3rem,6.3vw,6.5rem);line-height:1.01;letter-spacing:-.075em;margin:13px 0 25px}.hero h1 em{font-style:normal;color:var(--gold)}.hero p{color:var(--muted);font-size:clamp(1rem,1.28vw,1.26rem);max-width:630px}.stats{display:flex;gap:30px;margin:26px 0 24px}.stat{display:flex;flex-direction:column;gap:2px}.stat strong{font-size:2rem;line-height:1.05}.stat small{color:var(--muted);font-size:.78rem}.hero-buttons{display:flex;flex-wrap:wrap;gap:11px}.hero .hint{max-width:570px;font-size:.83rem;line-height:1.6}.hint,.small{color:var(--muted);font-size:.88rem}.tiny{color:#9fb0bf;font-size:.76rem;line-height:1.55}.connect-card{padding:26px;background:linear-gradient(150deg,#192a42,#142134);border:1px solid #37556a;border-radius:22px;text-align:center;box-shadow:0 18px 50px #0003}.qr{display:grid;place-items:center;max-width:294px;min-height:290px;padding:12px;margin:18px auto;background:#fff;color:#13273c;border-radius:17px;overflow:hidden;overflow-wrap:anywhere;font-size:.85rem}.qr canvas{width:100%;height:auto;max-width:264px;display:block}.connect-card .btn{margin:17px 0 2px}.footer{border-top:1px solid #ffffff19;display:flex;justify-content:space-between;gap:12px;padding:13px 4%;font-size:.72rem;letter-spacing:.09em;color:#b8cbda}.stage{height:calc(100vh - 171px);min-height:390px;width:100%;background:#030507;position:relative;overflow:hidden;border-radius:15px;display:grid;place-items:center}.stage video{width:100%;height:100%;object-fit:contain}.stage-empty{position:absolute;inset:0;background:radial-gradient(ellipse at center,#183048,#08121e 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}.stage-note{font-size:5rem;line-height:1;color:var(--gold)}.stage-empty h2{font-size:clamp(1.6rem,3vw,2.7rem);margin:14px 0 0}.stage-empty p{color:var(--muted)}.stage-bar{position:absolute;bottom:0;inset-inline:0;padding:24px 19px 11px;display:flex;gap:10px;align-items:center;justify-content:space-between;background:linear-gradient(transparent,#061020d8);font-size:.87rem}.song-banner{position:absolute;top:20px;left:20px;background:#10243bd9;padding:11px 17px;border-radius:12px;max-width:75%;font-size:1.05rem}.library{width:100%;max-width:1450px;margin:0 auto;align-self:stretch}.section-header{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.section-header h2{font-size:clamp(1.6rem,3vw,2.5rem);margin:8px 0}.section-header p{margin:0 0 20px}.section-actions{display:flex;gap:9px;flex-wrap:wrap}.cols{display:grid;grid-template-columns:1fr minmax(265px,.4fr);gap:24px;align-items:start}.upcoming{background:#142033;border-radius:18px;padding:16px;border:1px solid #30465f}.upcoming h3{margin:0 0 16px}.upcoming h3 span{float:right;color:var(--cyan)}input[type=search],input[type=text],input[type=url]{border:1px solid #3d536a;background:#111e31;color:#fff;border-radius:11px;padding:13px 14px;width:100%;min-height:45px}input::placeholder{color:#92a7b7}.song-list,.results{display:flex;flex-direction:column;gap:8px;margin-top:13px;max-height:61vh;overflow:auto;color:var(--muted)}.song-item{padding:11px 12px;border:1px solid #304962;background:#19283c;border-radius:11px;display:flex;align-items:center;gap:12px;color:#f4f8fd}.song-info{flex:1;min-width:0}.song-info strong{display:block;overflow-wrap:anywhere;font-size:.92rem}.song-info small{color:#adc1cf;font-size:.75rem}.overlay{position:fixed;inset:0;z-index:10;background:#050b12df;display:grid;place-items:center;padding:20px}.modal{position:relative;background:#17273b;border:1px solid #3c5971;padding:26px;border-radius:22px;width:min(540px,100%)}.modal h2{margin:2px 0 10px}.modal p{color:#c4d0df}.modal .qr{min-height:260px}.close{float:right;border:0;background:#2b3c53;color:#fff;font-size:1.5rem;border-radius:50%;height:35px;width:35px}.url-line{overflow-wrap:anywhere;font-size:.72rem!important}.toast{position:fixed;z-index:20;left:50%;bottom:16px;transform:translateX(-50%);border:1px solid #45746f;background:#22444b;padding:12px 20px;color:#fff;border-radius:14px;text-align:center;max-width:94vw;box-shadow:0 12px 30px #0005}.phone-body{min-height:100vh}.phone-head{padding:14px 17px;border-bottom:1px solid #ffffff1c;display:flex;align-items:center;justify-content:space-between;gap:10px}.phone-head .brand{font-size:.85rem}.phone-head .brand-icon{width:37px;height:37px}.phone-main{max-width:510px;margin:0 auto;padding:17px 14px 55px}.phone-main h1{font-size:2rem;line-height:1.05;letter-spacing:-.04em}.panel,.now-card{background:#152239;border-radius:18px;border:1px solid #2a415b;padding:19px;margin-bottom:14px}.now-card h2{font-size:1.35rem;line-height:1.25;margin:10px 0 5px;overflow-wrap:anywhere}.panel h3{font-size:1.13rem;margin:1px 0 14px}.panel label{display:block;margin:13px 0 6px;color:#cad9e4;font-size:.84rem;font-weight:700}.panel input{margin:0 0 9px}.controls{display:flex;gap:6px;justify-content:space-between;margin-top:17px}.controls .btn{flex:1;min-width:0;padding:9px 7px;font-size:.76rem}.volume{display:flex;gap:10px;align-items:center;margin-top:17px;color:#b6c8d7;font-size:.8rem}.volume input{flex:1;min-width:40px;accent-color:#6fe2d4}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:5px;background:#152337;border-radius:13px;margin:14px 0}.tabs button{border:0;background:transparent;color:#b6cbd7;padding:12px 3px;border-radius:10px;font-weight:750}.tabs button.active{background:#6bdccd;color:#083038}.key-display{background:#0e192a;border:1px solid #2b425b;border-radius:12px;padding:12px;text-align:center;font-size:1.55rem;letter-spacing:.19em;font-weight:800;margin:13px 0}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.keypad button{background:#21364e;color:#fff;border:1px solid #47617b;border-radius:12px;min-height:49px;font-size:1.2rem;font-weight:700}.results{max-height:50vh}.row-head{display:flex;align-items:center;justify-content:space-between}.row-head h3{margin:0}.panel .full{margin-top:11px}@media(max-width:1000px){.home-grid{gap:24px;grid-template-columns:1fr 310px}.hero h1{font-size:clamp(2.9rem,6.5vw,5rem)}}@media(max-width:760px){.topbar{flex-wrap:wrap;padding:13px}.top-actions{gap:5px}.home-grid{grid-template-columns:1fr}.main{padding:20px}.hero h1{font-size:3.5rem}.stats{gap:23px}.connect-card{max-width:380px;width:100%;margin:0 auto}.footer{flex-wrap:wrap}.cols{grid-template-columns:1fr}.stage{height:calc(100vh - 208px)}.stage-bar{flex-wrap:wrap}.section-header{display:block}}@media(max-width:410px){.hero h1{font-size:3rem}.hero-buttons .btn{width:100%}.phone-head .brand{font-size:.72rem}.controls .btn{font-size:.72rem}.panel,.now-card{padding:14px}}

/* v3.1: Theater stage with permanent song queue + QR in a separate side rail. */
.stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,22%);align-items:stretch;place-items:initial;gap:0;border:1px solid #284056;background:#060c15}
.stage-screen{position:relative;min-width:0;min-height:0;background:#020406;display:flex;align-items:center;justify-content:center;overflow:hidden}
.stage-screen video{display:block;width:100%;height:100%;object-fit:contain}
.stage-side{display:flex;min-width:0;flex-direction:column;justify-content:space-between;gap:9px;padding:17px 14px 14px;background:linear-gradient(155deg,#17263c,#0b192c);border-left:1px solid #30485e;overflow:hidden}
.stage-side-top{min-height:0;display:flex;flex-direction:column;flex:1}
.side-heading{display:flex;align-items:center;gap:10px;justify-content:space-between;padding-bottom:11px;border-bottom:1px solid #ffffff22}
.side-heading .eyebrow{font-size:.7rem;letter-spacing:.13em}
.side-count{font-size:.7rem;color:#b4cadd;white-space:nowrap}
.stage-next-songs{overflow-y:auto;min-height:0;flex:1;scrollbar-width:thin;scrollbar-color:#547188 transparent}
.side-empty{color:#aebfcf;font-size:.78rem;line-height:1.55;margin:16px 0}
.side-song{display:flex;gap:9px;padding:11px 0;border-bottom:1px solid #ffffff16;align-items:flex-start}
.side-song-rank{color:#84e2da;font-size:.75rem;font-weight:800;flex-shrink:0;line-height:1.4}
.side-song-info{min-width:0}
.side-song-info strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;font-size:.78rem;line-height:1.32;overflow-wrap:anywhere}
.side-song-info small{display:block;margin-top:4px;color:#a6c0d0;font-size:.68rem;overflow-wrap:anywhere}
.side-more{font-size:.72rem;color:#7fe8df;margin:11px 0 4px}
.stage-remote{border-top:1px solid #38566d;padding-top:12px;text-align:center;flex:none}
.stage-remote .eyebrow{font-size:.68rem;letter-spacing:.1em}
.stage-qr{background:#fff;color:#14283a;padding:7px;border-radius:10px;width:min(162px,95%);aspect-ratio:1;display:grid;place-items:center;margin:8px auto 6px;overflow-wrap:anywhere;font-size:.68rem}
.stage-qr canvas{width:100%;height:auto;display:block}
.stage-qr-caption{color:#c0d1dd;font-size:.69rem;line-height:1.42;max-width:200px;margin:7px auto}
.stage-pair-state{color:#f2cb8c;font-size:.67rem;font-weight:700}
.stage-pair-state.good{color:#7fe9ba}
.search-head{gap:9px;align-items:center;margin-bottom:10px}
.search-head h3{margin:0}
.shuffle-box{display:flex;gap:9px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:13px;margin:13px 0 6px;border:1px solid #446079;background:#10263b;border-radius:13px}
.shuffle-box strong{font-size:.91rem;display:block}
.shuffle-box small{font-size:.72rem;color:#aac1d3;display:block;margin-top:3px}
.shuffle-buttons{display:flex;gap:7px;flex-wrap:wrap}
.shuffle-buttons .btn{white-space:normal;min-height:42px}
@media (max-width:940px){.stage{grid-template-columns:minmax(0,1fr) minmax(190px,25%)}.stage-side{padding:12px}.stage-qr{width:min(138px,95%)}.stage-qr-caption{font-size:.65rem}.side-song{padding:8px 0}}
@media (max-width:760px){.stage{height:auto;min-height:0;display:flex;flex-direction:column}.stage-screen{width:100%;height:auto;min-height:265px;aspect-ratio:16/9}.stage-side{width:100%;max-height:300px;display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,175px);gap:14px;border-left:none;border-top:1px solid #30485e}.stage-side-top{max-height:275px}.stage-remote{border-top:none;border-left:1px solid #38566d;padding:0 0 0 12px}.stage-qr{width:min(112px,95%);padding:5px}.stage-qr-caption{font-size:.63rem}.stage-bar{padding:18px 10px 8px;font-size:.73rem;gap:6px}.stage-bar .btn{padding:6px}.song-banner{max-width:85%}.shuffle-box{display:block}.shuffle-buttons{margin-top:11px}}

/* v3.2 — Complete alphabetical songbook on phones. */
.tabs{grid-template-columns:repeat(4,minmax(0,1fr))}.tabs button{font-size:.86rem;white-space:nowrap;padding:12px 1px}
.songbook-summary{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:9px 0 6px}.songbook-summary strong{font-size:.9rem;color:#e7f8fb}.songbook-summary span{color:#afc2d4;font-size:.75rem;text-align:right}
.alphabet-help{color:#afc2d4;font-size:.71rem;margin:10px 0 5px}.alphabet{display:flex;gap:5px;overflow-x:auto;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:thin;padding:3px 1px 9px;position:relative}.alpha-letter{min-width:40px;min-height:42px;padding:8px 9px;border:1px solid #3f5c74;border-radius:10px;background:#1e354c;color:#e0f5f6;font-weight:800;font-size:.86rem;scroll-snap-align:start}.alpha-letter.selected{background:#6be3d2;border-color:#6be3d2;color:#0c2836}.alpha-letter:disabled{opacity:.28;cursor:default}
.songbook-list{max-height:min(65vh,760px);padding-right:2px;scrollbar-width:thin;overscroll-behavior:contain}.songbook-list .song-item{background:#172a40;padding:13px 12px}.songbook-list .song-info strong,.reference-list .song-info strong{font-size:1.06rem;font-weight:850;line-height:1.22;letter-spacing:-.012em;color:#f5fafc}.songbook-list .song-info small,.reference-list .song-info small{display:block;margin-top:6px;font-size:.74rem;color:#9fbbcf;font-weight:500}.song-letter-heading{margin:17px 0 1px;position:sticky;top:0;z-index:1;background:#0d2537;color:#8defdf;font-size:1.15rem;padding:7px 12px;border-radius:7px;letter-spacing:.14em}.songbook-list .btn{flex:none;min-height:42px}.empty-songbook{color:#b8cbd9;font-size:.88rem;line-height:1.6;padding:8px 2px}.reference-list .song-info strong{font-size:.97rem}.reference-list a.btn{text-decoration:none;display:inline-grid;place-items:center}
@media(max-width:390px){.tabs button{font-size:.78rem}.songbook-list .song-info strong{font-size:1rem}.songbook-list .song-item{gap:7px;padding:11px 9px}.songbook-list .btn{padding:7px 8px;font-size:.74rem}}

/* v3.3: Real, bounded pagination on TV AND phone. Complete catalog stays searchable. */
.catalog-panel{min-width:0}.catalog-stats{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 7px;color:#b5cddd;font-size:.79rem}
.catalog-stats strong{color:#e7f8fb;font-size:.9rem}.tv-alphabet{margin:10px 0 6px}
.tv-alphabet .alpha-letter{min-width:39px;min-height:40px}.pagination{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin:12px 0 8px;padding:5px 0;min-height:43px}
.pagination[hidden]{display:none}.page-btn{font:inherit;font-size:.83rem;min-height:42px;min-width:42px;padding:8px 11px;background:#22394f;border:1px solid #4a637b;border-radius:10px;color:#f1f8ff;font-weight:760;cursor:pointer}
.page-btn.current{background:#76e4d4;color:#0b2935;border-color:#76e4d4}.page-btn:disabled{opacity:.33;cursor:default}.page-ellipsis{color:#97bbce;font-weight:800;padding:0 3px}.page-btn:focus-visible,.alpha-letter:focus-visible{outline:3px solid #ffda96;outline-offset:2px}
#tvSongs{max-height:min(50vh,575px)}#tvSongs .song-info strong{font-size:1.03rem;line-height:1.27}#tvSongs .song-info small{font-size:.76rem;display:block;margin-top:5px}
.songbook-list{max-height:min(53vh,560px)}#referenceResults{max-height:min(53vh,560px)}
@media(max-width:440px){.page-btn{min-width:38px;min-height:42px;padding:7px 8px;font-size:.76rem}.pagination{gap:4px}.catalog-stats{font-size:.72rem}.songbook-summary{flex-wrap:wrap}}
