@charset "UTF-8";
:root{color-scheme:dark;--bg:#101124;--panel:#191b35;--panel-soft:#20223e;--text:#f5f0e9;--muted:#aaabc3;--quiet:#777a9a;--line:rgba(190,183,230,.12);--purple:#c5b4ff;--purple-dark:#2e2850;--mint:#94d9c3;--orange:#f0b78f;--dock-height:190px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{scroll-padding-top:185px;scroll-padding-bottom:230px}body{margin:0;background:radial-gradient(ellipse at 85% -10%,rgba(111,74,178,.19),transparent 50rem),var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,select{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.38}button,input,select{-webkit-tap-highlight-color:transparent}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--purple);outline-offset:4px}button{border:0}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}[hidden]{display:none!important}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-shell{max-width:1160px;margin:auto;padding:0 44px calc(var(--dock-height) + env(safe-area-inset-bottom) + 24px)}.masthead{min-height:94px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;font-size:13px;letter-spacing:.02em;color:var(--muted)}.brand strong{font-weight:650;color:var(--text)}.brand-divider{margin:0 9px;color:var(--quiet)}.brand-fish{width:40px;height:30px;color:var(--purple);stroke-width:1.4}.connection{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);white-space:nowrap}.connection-dot{height:7px;width:7px;border-radius:50%;background:var(--quiet);box-shadow:0 0 0 4px rgba(120,120,150,.07)}.is-connected .connection-dot{background:var(--mint);box-shadow:0 0 0 4px rgba(148,217,195,.07)}.is-offline .connection-dot{background:var(--orange)}.is-offline{color:var(--orange)}.intro{display:flex;align-items:center;justify-content:space-between;min-height:221px;gap:30px}.eyebrow{margin:0 0 12px;font-size:10px;font-weight:700;letter-spacing:.17em;color:var(--purple)}h1{font-size:clamp(40px,5.5vw,62px);letter-spacing:-.055em;font-weight:650;line-height:1.08;margin:0 0 16px}.intro-copy{font-size:16px;color:var(--muted);margin:0;line-height:1.5}.intro-art{position:relative;width:176px;height:150px;display:grid;place-items:center;margin-right:30px}.record{width:136px;height:136px;display:grid;place-items:center;border-radius:50%;background:repeating-radial-gradient(circle,#22203b 0 2px,#17182e 3px 5px);border:1px solid rgba(193,167,247,.14);box-shadow:14px 14px 45px rgba(0,0,0,.2);transform:rotate(-18deg)}.record-label{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:#9380c2;color:#17182e}.record-label svg{width:36px;height:28px;stroke-width:1.8}.record-spark{position:absolute;right:0;top:10px;font-size:35px;color:var(--orange)}.library-tools{position:sticky;top:0;z-index:5;background:rgba(16,17,36,.97);padding:12px 0 8px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.search-box{display:flex;align-items:center;min-height:62px;gap:14px;padding:0 19px;border:1px solid #3b3756;border-radius:14px;background:#1c1d35;box-shadow:0 4px 25px rgba(0,0,0,.08)}.search-box>svg{color:var(--purple);width:22px;height:22px}.search-box:focus-within{border-color:var(--purple);box-shadow:0 0 0 2px rgba(197,180,255,.12)}#search{width:100%;min-width:0;background:none;border:0;color:var(--text);height:60px;outline:none!important;font-size:18px;letter-spacing:-.015em}#search::placeholder{color:#a8a5bc}#search::-webkit-search-cancel-button{display:none}.icon-button{min-width:48px;min-height:48px;display:inline-grid;place-items:center;border-radius:10px;background:transparent;color:var(--muted)}.clear-search{margin-right:-11px}.filter-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:9px}.filter-controls{display:flex;align-items:center;gap:19px;min-width:0}.select-wrap{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--quiet);min-width:0}.select-wrap select{max-width:100%;min-height:48px;background:transparent;border:0;border-radius:7px;color:var(--muted);font-size:13px;font-weight:550;padding:0 22px 0 4px;cursor:pointer}.refresh-button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;padding:0 7px;background:transparent;color:var(--muted);font-size:12px;flex-shrink:0}.refresh-button svg{width:17px;height:17px}.library-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12px;line-height:1.5;min-height:35px}.library-meta p{margin:3px 0 8px;color:var(--muted)}#catalog-note{font-size:11px;text-align:right;color:var(--orange)}.list-heading{display:flex;justify-content:space-between;padding:20px 18px 14px;font-size:9px;letter-spacing:.14em;font-weight:650;color:var(--quiet);border-top:1px solid var(--line)}.song-list{padding:0;margin:0;list-style:none}.song-row{display:flex;align-items:center;gap:17px;min-height:91px;border-bottom:1px solid var(--line);padding:14px 15px 14px 18px;position:relative;border-radius:10px}.song-row.is-current{background:rgba(174,141,241,.075);border-color:rgba(197,180,255,.15)}.song-row.is-current:before{content:"";position:absolute;left:0;top:21px;bottom:21px;width:3px;background:var(--purple);border-radius:3px}.song-number{min-width:24px;color:var(--quiet);font-size:11px;font-variant-numeric:tabular-nums;text-align:center}.song-row.is-current .song-number{color:var(--purple)}.song-number svg{width:20px;height:20px}.song-info{flex:1;min-width:0}.song-title{margin:0;font-size:17px;font-weight:600;letter-spacing:-.02em;line-height:1.4;overflow-wrap:anywhere}.song-artist{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.4;overflow-wrap:anywhere}.song-flags{display:flex;align-items:center;gap:7px;flex-shrink:0}.song-badge{border:1px solid var(--line);border-radius:5px;color:var(--quiet);font-size:10px;padding:4px 6px;white-space:nowrap}.song-badge.is-audio{color:var(--orange);border-color:rgba(240,183,143,.2)}.song-play{display:flex;align-items:center;justify-content:center;gap:7px;border-radius:11px;min-width:94px;min-height:50px;padding:0 14px;background:#2a2748;color:#d5c7fa;font-size:13px;font-weight:650;flex-shrink:0}.song-play svg{width:19px;height:19px}.song-row.is-current .song-play{background:#3c335c}.notice{display:flex;gap:12px;align-items:center;justify-content:space-between;background:#362b38;border:1px solid #624657;border-radius:12px;margin:8px 0 16px;padding:9px 10px 9px 18px}.notice p{font-size:13px;line-height:1.6;color:#f4c7b1;margin:0}.notice .icon-button{color:#efc3b4;flex-shrink:0}.empty-state{text-align:center;padding:75px 20px 90px;color:var(--muted)}.empty-state>svg{width:36px;height:36px;color:var(--purple);margin-bottom:18px}.empty-state h2{font-size:22px;letter-spacing:-.025em;color:var(--text);font-weight:600;margin:0 0 9px}.empty-state p{font-size:14px;line-height:1.6;margin:0;max-width:380px;margin-inline:auto}.text-button{background:var(--purple-dark);color:var(--purple);border-radius:10px;min-height:48px;padding:0 20px;margin-top:22px;font-size:14px}.loading-state>div{height:90px;border-bottom:1px solid var(--line);position:relative}.loading-state>div:after{content:"";position:absolute;top:24px;left:60px;width:44%;height:11px;border-radius:6px;background:#26253e;box-shadow:0 24px 0 -2px #202138}.list-end{text-align:center;font-size:12px;color:var(--quiet);margin:33px 0}.page-footer{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--quiet);font-size:11px;padding:24px 0 15px}.page-footer svg{width:27px;height:20px;opacity:.65}.player{position:fixed;z-index:10;bottom:0;left:0;right:0;background:rgba(27,27,50,.97);border-top:1px solid #39364f;padding:20px 44px calc(15px + env(safe-area-inset-bottom));box-shadow:0 -16px 55px rgba(7,9,24,.35);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}.player-inner{max-width:1072px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 32px}.now-playing{display:flex;align-items:center;gap:16px;min-width:0}.player-art{width:62px;height:62px;flex-shrink:0;display:grid;place-items:center;border-radius:13px;background:linear-gradient(140deg,#4e3f70,#2e2b4f);border:1px solid rgba(197,180,255,.13);color:var(--purple)}.player-art svg{width:27px;height:27px}.player-art.is-playing{background:linear-gradient(140deg,#756194,#3b325e);color:#eee3ff}.now-text{min-width:0}.now-text .eyebrow{font-size:9px;letter-spacing:.14em;margin-bottom:7px}.now-text h2{font-size:17px;font-weight:600;letter-spacing:-.015em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0 0 5px;line-height:1.35}.now-text>p:last-child{font-size:12px;color:var(--muted);margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.4}.player-controls{display:flex;align-items:center;gap:8px}.control-button{min-width:61px;min-height:61px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:12px;background:transparent;color:var(--muted);font-size:10px;font-weight:550}.control-button svg{width:20px;height:20px}.primary-control{background:var(--purple);color:#211c39;min-width:78px;font-weight:750;box-shadow:0 3px 15px rgba(12,9,23,.2)}.loop-control{margin-left:9px}.loop-control[aria-pressed=true]{background:#38314f;color:var(--purple)}.timeline{grid-column:1/-1;display:flex;align-items:center;gap:11px;color:var(--quiet);font-size:10px;font-variant-numeric:tabular-nums}.timeline span{min-width:29px}.timeline span:last-child{text-align:right}.progress{height:3px;border-radius:3px;background:#35344c;flex:1;overflow:hidden}.progress>div{height:100%;width:0;background:var(--purple);border-radius:3px;transition:width .7s linear}.noscript{position:fixed;inset:0;z-index:100;background:var(--bg);padding:30px;font-size:20px}
@media(hover:hover){.song-play:not(:disabled):hover{background:#3c335c;color:#efe6ff}.control-button:not(:disabled):hover,.icon-button:hover{background:#36304d;color:var(--text)}.primary-control:not(:disabled):hover{background:#d5c7ff;color:#211c39}.refresh-button:not(:disabled):hover{color:var(--text)}.song-row:hover{background-color:rgba(197,180,255,.025)}}
@media(min-width:1100px){.song-title{font-size:18px}.song-row{min-height:96px}}
@media(max-width:850px){.page-shell{padding-inline:30px}.brand{font-size:12px}.intro-art{margin-right:10px}.player{padding-inline:30px}.player-inner{gap:19px}.player-controls{gap:3px}.control-button{min-width:54px}.primary-control{min-width:68px}.loop-control{margin-left:5px}.player-art{width:54px;height:54px}.now-playing{gap:12px}.song-flags{display:none}.filter-controls{gap:11px}}
@media(max-width:650px){:root{--dock-height:218px}.page-shell{padding-inline:20px}.masthead{align-items:flex-start;flex-direction:column;justify-content:center;gap:14px;min-height:106px}.brand-fish{width:32px;height:25px}.brand{gap:10px;font-size:12px}.connection{font-size:11px;margin-left:42px}.intro{min-height:187px;gap:5px}.intro h1{font-size:41px}.intro-copy{font-size:14px}.intro-art{width:93px;height:112px;margin-right:2px}.record{width:90px;height:90px}.record-label{width:37px;height:37px}.record-label svg{width:27px}.record-spark{font-size:23px;right:-4px;top:0}.eyebrow{font-size:9px}.search-box{min-height:58px;padding-inline:14px;gap:10px}#search{font-size:16px;height:56px}.select-wrap>span{display:none}.select-wrap select{font-size:12px;padding-left:0;max-width:155px}.filter-controls{gap:4px}.refresh-button{font-size:11px;padding:0 1px;gap:4px}.refresh-button svg{width:15px}.library-meta{font-size:11px}.library-tools{padding-top:9px}.list-heading{padding:17px 4px 10px;font-size:8px}.song-row{min-height:90px;gap:9px;padding:14px 2px}.song-number{display:none}.song-info{padding-right:2px}.song-title{font-size:16px}.song-artist{font-size:12px}.song-play{min-width:68px;padding-inline:10px;min-height:50px;font-size:11px;gap:3px}.song-play svg{width:16px}.song-row.is-current{padding-left:12px}.player{padding:14px 20px calc(12px + env(safe-area-inset-bottom))}.player-inner{grid-template-columns:1fr;gap:10px}.player-art{height:43px;width:43px;border-radius:10px}.player-art svg{width:22px}.now-text .eyebrow{font-size:8px;margin-bottom:4px}.now-text h2{font-size:15px;margin-bottom:3px}.now-text>p:last-child{font-size:11px}.player-controls{justify-content:center;gap:9px}.control-button{min-width:62px;min-height:55px;font-size:9px;gap:4px}.primary-control{min-width:100px}.control-button svg{width:19px;height:19px}.loop-control{margin-left:4px}.timeline{gap:8px;font-size:9px}.now-playing{gap:11px}.list-end{font-size:11px}#catalog-note{font-size:10px;max-width:48%}}
@media(max-width:370px){.page-shell{padding-inline:14px}.intro-art{display:none}.player{padding-inline:14px}.select-wrap select{max-width:130px}.control-button{min-width:53px}.primary-control{min-width:85px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.singa-picker{margin:0 0 2rem;background:#18192d;border:1px solid rgba(255,255,255,.12);border-radius:22px;padding:clamp(16px,3vw,28px)}
.singa-head,.queue-heading{display:flex;justify-content:space-between;gap:16px;align-items:center}.singa-head h2,.queue-heading h3{margin:.2rem 0}.singa-head p{margin:.25rem 0;color:#b8b9c9}.queue-heading{margin-top:22px;border-top:1px solid rgba(255,255,255,.12);padding-top:15px}
.queue-list .song-row{grid-template-columns:minmax(0,1fr) auto;gap:12px}.queue-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.queue-actions button{min-height:42px;padding:8px 11px;border-radius:9px}.singer-input{max-width:150px;min-height:42px;border-radius:9px;padding:7px;background:#101124;color:#fff;border:1px solid rgba(255,255,255,.2)}.pdf-label{font-size:.72rem;color:#f0c778;text-transform:uppercase;letter-spacing:.06em}.queue-status{color:#76e3a2;font-weight:700;text-transform:uppercase;font-size:.75rem}
@media(max-width:620px){.singa-head{align-items:flex-start}.queue-list .song-row{grid-template-columns:1fr}.queue-actions{justify-content:flex-start}.singer-input{max-width:none;width:100%}}
/* Private host and guest songbook. */
.header-actions{display:flex;align-items:center;gap:10px}.role-pill{font-size:11px;color:var(--purple);padding:7px 11px;border-radius:20px;background:#2a2442}.quiet-button{min-height:48px;padding:0 15px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--muted);font-size:12px;font-weight:550}.quiet-button:hover{color:var(--text);background:#2a2748}.view-tabs{display:flex;gap:8px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:19px}.view-tab{display:flex;align-items:center;justify-content:center;gap:9px;min-height:52px;padding:0 20px;border-radius:12px;background:transparent;color:var(--muted);font-size:14px;font-weight:600}.view-tab[aria-pressed=true]{background:var(--purple-dark);color:#e0d2ff}.view-tab span{font-size:10px;background:#3e345d;border-radius:9px;padding:3px 6px}.request-bar{display:flex;align-items:center;gap:10px;margin-top:10px;min-height:57px}.request-bar label{font-size:12px;color:var(--muted);white-space:nowrap}.request-bar label span{color:var(--quiet)}.request-bar input{min-height:48px;background:#1c1d35;border:1px solid var(--line);border-radius:9px;color:var(--text);width:180px;min-width:0;padding:0 12px;font-size:16px}.request-bar p{margin:0 0 0 auto;font-size:12px;color:var(--muted);text-align:right}.provenance{display:flex;align-items:center;gap:15px;margin:12px 0 18px;line-height:1.5}.source-chip{font-size:10px;color:var(--purple);border:1px solid #49405e;border-radius:5px;padding:5px 7px;white-space:nowrap}.provenance p{margin:0;font-size:11px;color:var(--quiet);max-width:560px}.wide-button{min-height:54px;padding:13px 20px;border-radius:12px;background:#2e2850;color:var(--purple);font-size:14px;font-weight:600;display:block;width:100%;margin-top:24px}.accent-button{background:var(--purple);color:#211c39}.section-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0}.section-header h2{font-size:32px;letter-spacing:-.04em;margin:0 0 10px}.section-header p:not(.eyebrow),.section-copy{color:var(--muted);font-size:13px;line-height:1.6;margin:0}.section-copy{margin:0 0 24px;max-width:610px}.queue-card{border:1px solid var(--line);background:#191a31;border-radius:16px;padding:20px;margin-bottom:14px;list-style:none}.queue-card.is-current{border-color:#7d67a5;background:#211d39}.queue-card.is-done{opacity:.65}.queue-card-heading{display:flex;align-items:center;gap:16px}.queue-number{font-size:12px;color:var(--quiet);font-variant-numeric:tabular-nums;min-width:25px}.queue-state{font-size:10px;letter-spacing:.02em;color:var(--purple);padding:6px 9px;border:1px solid var(--line);border-radius:7px;white-space:nowrap}.queue-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 0 41px}.find-singa{min-width:126px}.queue-more{position:relative}.queue-more>summary{list-style:none;min-height:48px;display:flex;align-items:center;padding:0 15px;border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:12px;cursor:pointer}.queue-more>summary::-webkit-details-marker{display:none}.queue-more>summary:after{content:'⌄';margin-left:10px}.queue-more[open]{flex-basis:100%}.queue-more[open]>summary{display:inline-flex}.queue-more-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.danger-button{color:#e2acaa}.guest-view .page-shell{padding-bottom:25px}.guest-view .queue-card{padding-block:22px}.guest-view .intro{min-height:211px}dialog{background:#1b1b32;color:var(--text);border:1px solid #4b3d68;border-radius:21px;width:min(680px,calc(100% - 32px));padding:28px;max-height:85dvh;overflow:auto;box-shadow:0 25px 100px rgba(0,0,0,.45)}dialog::backdrop{background:rgba(7,8,24,.8);backdrop-filter:blur(8px)}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.dialog-heading h2{font-size:28px;letter-spacing:-.035em;margin:0 0 17px}.dialog-heading .icon-button{margin-top:-9px;margin-right:-10px}dialog>p{font-size:14px;line-height:1.65;color:var(--muted)}#host-form label{display:block;color:var(--muted);font-size:13px;margin:24px 0 10px}#host-secret{width:100%;min-height:54px;border:1px solid #4b3d68;background:#101124;border-radius:10px;padding:0 14px;font-size:16px;color:var(--text)}.dialog-help{font-size:12px!important;color:var(--quiet)!important}.inline-error{color:#f4b598!important;font-size:13px;line-height:1.6}.match-row{display:flex;gap:20px;align-items:center;border-bottom:1px solid var(--line);padding:18px 0}.match-row .song-title{font-size:15px}.toast{position:fixed;z-index:35;left:50%;transform:translateX(-50%);bottom:calc(240px + env(safe-area-inset-bottom));max-width:calc(100% - 36px);width:max-content;background:#403557;border:1px solid #7d67a5;border-radius:13px;box-shadow:0 8px 35px #0006;padding:15px 20px;color:var(--text);font-size:13px;line-height:1.5}.guest-view .toast{bottom:30px}.player-detail{grid-column:1/-1;margin:0;color:var(--orange);font-size:11px;line-height:1.4;max-width:100%;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.player-inner{gap:12px 24px}.now-text select{background:transparent;border:0;color:var(--muted);font-size:11px;border-radius:6px;padding:0 20px 0 0;height:30px;max-width:100%;margin-bottom:4px}.now-text .eyebrow{margin-bottom:5px}.player-art{width:53px;height:53px}.player-controls .primary-control{min-width:95px;min-height:67px}.player .timeline{margin-top:2px}#local-search,#singa-search{height:59px;flex:1;min-width:0;border:0;background:transparent;color:var(--text);font-size:17px;outline:none}#local-panel .library-meta{margin:6px 0}.page-shell{padding-bottom:calc(230px + env(safe-area-inset-bottom))}#songbook-panel .song-row{min-height:91px}#songbook-panel .song-play{min-width:115px}.queue-list{margin:0;padding:0}.queue-more>summary:focus-visible{outline:3px solid var(--purple);outline-offset:3px}
@media(max-width:650px){.masthead{min-height:120px;gap:11px}.header-actions{width:100%;justify-content:space-between}.role-pill{font-size:10px}.header-actions .quiet-button{min-height:40px;font-size:11px}.intro{min-height:181px}.view-tabs{gap:3px;margin-bottom:12px}.view-tab{font-size:12px;padding:0 12px;min-height:50px}.view-tab span{font-size:9px}.request-bar{flex-wrap:wrap;gap:7px}.request-bar label{font-size:11px}.request-bar input{width:145px;flex:1}.request-bar p{font-size:10px;flex-basis:100%;text-align:left;margin:2px 0 4px}.provenance{align-items:flex-start;gap:8px;flex-direction:column}.provenance p{font-size:10px}.source-chip{font-size:9px}.section-header h2{font-size:28px}.queue-card{padding:15px}.queue-card-heading{gap:10px;align-items:flex-start;flex-wrap:wrap}.queue-number{min-width:17px;font-size:10px;margin-top:5px}.queue-state{margin-left:27px;font-size:9px}.queue-card-heading .song-info{flex-basis:calc(100% - 27px)}.queue-card-actions{margin:14px 0 0;gap:7px}.queue-card-actions .quiet-button{font-size:11px;padding-inline:11px}.find-singa{min-width:117px}.queue-more-actions .quiet-button{flex:1;white-space:nowrap}.queue-more>summary{font-size:11px}.player-inner{gap:8px}.player-controls{gap:10px}.player-controls .primary-control{min-width:105px;min-height:55px}.player-detail{font-size:10px}.now-text select{height:26px;font-size:10px;margin-bottom:1px}.now-text h2{font-size:14px}.player-art{height:43px;width:43px}.page-shell{padding-bottom:calc(265px + env(safe-area-inset-bottom))}.toast{bottom:calc(265px + env(safe-area-inset-bottom))}dialog{padding:22px}.dialog-heading h2{font-size:25px}.match-row{gap:12px}.match-row .song-play{min-width:63px}.match-row .song-title{font-size:14px}#songbook-panel .song-play{min-width:79px}#singa-search,#local-search{font-size:16px}.guest-view .intro{min-height:180px}}
.now-text select{min-height:48px;height:48px}.header-actions .quiet-button{min-height:48px}@media(max-width:650px){.now-text select{height:48px;min-height:48px}.page-shell{padding-bottom:calc(285px + env(safe-area-inset-bottom))}.guest-view .page-shell{padding-bottom:25px}.toast{bottom:calc(285px + env(safe-area-inset-bottom))}.guest-view .toast{bottom:30px}}
/* Personal guest hub and host night controls. */
a{color:var(--purple)}.onboarding-card{padding:24px 28px;margin:0 0 24px;background:linear-gradient(120deg,#292545,#1b2039);border:1px solid #565079;border-radius:19px}.onboarding-card h2{font-size:26px;letter-spacing:-.03em;margin:0 0 8px}.onboarding-card p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.6}.onboarding-card form{display:flex;gap:12px;align-items:end;margin-top:18px}.onboarding-card label{display:grid;gap:8px;font-size:12px;color:var(--muted);flex:1}.onboarding-card input{height:54px;border:1px solid #65607d;border-radius:10px;background:#12152b;color:var(--text);padding:0 14px;width:100%;min-width:0;font-size:17px}.onboarding-card button{height:54px;padding:0 23px}.hub-section-title{font-size:18px;letter-spacing:-.02em;margin:34px 0 16px}.hub-request{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:22px 24px;background:var(--panel);border:1px solid var(--line);border-radius:16px;margin-bottom:12px}.hub-request .song-info{flex:1;min-width:160px}.hub-request .privacy-badge{flex-basis:100%;margin:0}.turn-badge{color:var(--mint);padding:11px 15px;border:1px solid #426254;border-radius:30px;font-size:13px;font-weight:650;background:#1d3433}.suggestion-reason{font-size:11px;color:var(--mint);margin:8px 0 0}.catalog-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:52%;flex-shrink:0}.catalog-actions .quiet-button{font-size:12px;max-width:100%;white-space:normal;line-height:1.5}.check-label{display:flex;gap:12px;align-items:center;min-height:48px;font-size:14px;line-height:1.5;cursor:pointer}.check-label input[type=checkbox]{appearance:auto;width:23px;height:23px;min-width:23px;margin:0;accent-color:var(--purple);cursor:pointer}.request-bar #singa-count{flex:1;text-align:left;margin:0;font-size:12px}.request-bar .check-label{margin-left:auto;font-size:12px}.host-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:22px 0}.host-toolbar .song-play{padding-inline:23px;min-height:54px}.event-settings{border:1px solid var(--line);border-radius:15px;background:var(--panel);margin-bottom:24px}.event-settings>summary{cursor:pointer;min-height:56px;padding:18px 22px;font-size:13px;color:var(--muted)}.event-settings-inner{padding:0 22px 22px;display:grid;grid-template-columns:1fr 1fr;gap:30px}.event-settings-inner h3{font-size:17px}.guest-qr{display:block;width:156px;height:156px;padding:10px;border-radius:10px;background:white;margin-top:16px}.event-settings .section-copy{font-size:12px}.privacy-badge{color:#ffe2b4;background:#413123;border:1px solid #815c37;padding:12px 15px;border-radius:9px;font-size:12px;line-height:1.6;margin:14px 0 0}.privacy-badge.is-quiet{color:var(--muted);background:#282a3e;border-color:#48475e}.consent-badge{color:var(--mint);font-size:11px;margin:15px 0 0}.consent-notice{border:1px solid #746283;border-radius:12px;padding:15px;background:#29233d;margin:23px 0 10px}.consent-notice p{font-size:14px;line-height:1.65;color:var(--text);margin-top:0}.opt-out-label{padding:16px 0}.wide-button+.wide-button{margin-top:12px}#my-history:empty{display:none}#hub-panel>.section-header p{line-height:1.5}#my-suggestions .song-row{min-height:104px}
@media(max-width:650px){.view-tabs{overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap}.view-tab{flex-shrink:0}.onboarding-card{padding:21px}.onboarding-card form{align-items:stretch;flex-direction:column}.onboarding-card button{width:100%}.hub-request{padding:18px;gap:12px}.hub-request .song-info{min-width:145px}.turn-badge{font-size:12px;padding:9px 12px}.event-settings-inner{grid-template-columns:1fr;gap:12px}.host-toolbar{align-items:stretch}.host-toolbar button{flex:1;font-size:12px;min-width:140px}.catalog-actions{max-width:45%}.catalog-actions .quiet-button{padding:9px 10px;font-size:11px}.check-label{font-size:13px}.request-bar .check-label{margin-left:0}.request-bar{align-items:center}.request-bar #singa-count{flex-basis:auto}.privacy-badge{font-size:11px}.hub-section-title{margin-top:28px}.event-settings>summary{padding-inline:18px}#my-suggestions .song-play{min-width:80px}}

body{min-height:100svh}input[type=search]::-webkit-search-cancel-button{display:none}.connection-message{padding:14px 18px;border:1px solid #775137;background:#392c26;border-radius:10px;font-size:13px;color:#ffd2a9;line-height:1.5}

.night-name-label{display:grid;gap:9px;color:var(--muted);font-size:13px;margin:22px 0}.night-name-label input{min-height:52px;background:#15162c;border:1px solid #55516d;border-radius:9px;color:var(--text);padding:0 13px;font-size:16px}#new-night{margin-top:18px}

/* Host-only Smashy OBS scene controls; independent of karaoke controls. */
.obs-panel{margin:0 0 18px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(120deg,#1c2037,#1d1c34)}.obs-panel>summary{display:flex;gap:16px;align-items:center;justify-content:space-between;cursor:pointer;min-height:60px;padding:17px 22px;font-size:14px;font-weight:600;list-style:none}.obs-panel>summary::before{content:'›';font-size:23px;color:var(--purple);transform:rotate(0);transition:transform .15s}.obs-panel[open]>summary::before{transform:rotate(90deg)}.obs-panel>summary>span:first-of-type{flex:1}.obs-panel>summary::-webkit-details-marker{display:none}.obs-connection{font-size:11px;font-weight:500;border:1px solid #58566e;padding:6px 9px;border-radius:20px;color:var(--muted)}.obs-connection.is-connected{color:var(--mint);border-color:#42665d}.obs-inner{padding:5px 22px 22px}.obs-heading{display:flex;gap:18px;align-items:center;justify-content:space-between}.obs-heading h3{font-size:21px;margin:0;line-height:1.35;overflow-wrap:anywhere}.obs-heading .eyebrow{margin-bottom:8px}.obs-state-row{display:flex;gap:10px 24px;flex-wrap:wrap;margin:18px 0;color:var(--muted);font-size:12px}.obs-state-row .is-live{color:#ffb78d}.obs-scenes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.obs-scene{min-height:88px;border:1px solid #4e4967;border-radius:12px;padding:15px 10px;background:#25213d;color:var(--text);text-align:left;display:grid;gap:8px}.obs-scene[aria-pressed=true]{border-color:var(--mint);background:#1c3936;box-shadow:0 0 0 1px var(--mint)}.obs-scene-label{font-weight:600;font-size:14px}.obs-scene-note{font-size:11px;color:var(--muted)}.obs-scene[aria-pressed=true] .obs-scene-note{color:var(--mint)}.obs-inner .section-copy{font-size:12px;line-height:1.6;margin:15px 0 0}.obs-heading .quiet-button{flex-shrink:0}.obs-panel>summary:focus-visible{outline:3px solid var(--purple);outline-offset:3px}
@media(max-width:650px){.obs-panel>summary{padding-inline:18px}.obs-inner{padding:3px 18px 18px}.obs-heading{align-items:start;flex-wrap:wrap;gap:12px}.obs-heading h3{font-size:19px}.obs-heading .quiet-button{font-size:12px}.obs-scenes{grid-template-columns:1fr;gap:9px}.obs-scene{min-height:64px;grid-template-columns:1fr auto;align-items:center;padding:15px}.obs-state-row{font-size:11px;gap:8px 16px}.obs-scene-label{font-size:13px}.obs-scene-note{font-size:10px}}

/* Deliberate host-only gong; audience overlay lives in gong-overlay.html. */
.gong-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 26px;align-items:center;padding:24px;margin:22px 0;border:1px solid #786043;border-radius:16px;background:linear-gradient(120deg,#292135,#242238)}.gong-copy .eyebrow{color:#e9c494;margin-bottom:8px}.gong-copy h3{font-size:22px;letter-spacing:-.025em;margin:0 0 8px}.gong-copy>p:last-child{font-size:13px;line-height:1.65;color:var(--muted);max-width:560px;margin:0}.gong-button{display:flex;align-items:center;justify-content:center;gap:12px;min-height:74px;min-width:200px;border:1px solid #edc28e;border-radius:13px;padding:17px 23px;background:#efd0a8;color:#241b2a;font-size:18px;font-weight:750;box-shadow:0 4px 20px #0002;touch-action:manipulation}.gong-button>span:first-child{font-size:26px;font-weight:400}.gong-button:not(:disabled):active{transform:translateY(1px);background:#ffe0b8}.gong-button:disabled{opacity:.5}.gong-feedback{grid-column:1/-1;display:flex;align-items:center;gap:16px;border-top:1px solid #78604355;padding-top:16px}.gong-feedback p{margin:0;flex:1;font-size:12px;line-height:1.65;color:var(--muted)}.gong-feedback .quiet-button{font-size:12px;flex-shrink:0}.gong-panel.is-active{border-color:#dabb90}.gong-panel.is-active .gong-feedback p{color:#f3d7b4}.gong-button:focus-visible{outline:3px solid #fff4e9;outline-offset:4px}
@media(max-width:650px){.gong-panel{grid-template-columns:1fr;padding:20px;gap:18px}.gong-copy h3{font-size:20px}.gong-button{width:100%;min-height:72px}.gong-feedback{align-items:flex-start;flex-wrap:wrap;gap:12px}.gong-feedback p{flex-basis:100%}.gong-feedback .quiet-button{width:100%}}

/* Tonight's manual request desk. Existing player integrations remain dormant. */
.manual-queue-mode .page-shell{padding-bottom:28px}.manual-queue-mode .toast{bottom:calc(24px + env(safe-area-inset-bottom))}.manual-queue-mode:not(.guest-view) .intro{min-height:145px;padding-block:28px}.manual-queue-mode:not(.guest-view) .intro h1{font-size:44px}.manual-queue-mode:not(.guest-view) .intro-art{display:none}.manual-queue-mode .singer-name{margin:0 0 7px;font-weight:700;font-size:20px;letter-spacing:-.02em;color:#f0cfa5}.manual-queue-mode .manual-request .song-title{font-size:19px;line-height:1.4}.manual-queue-mode .manual-request .song-artist{font-size:14px;line-height:1.5}.manual-queue-mode .manual-request .queue-state{font-size:12px;padding:9px 11px}.manual-queue-mode .manual-request .song-play{min-height:54px;padding:0 22px;font-size:14px}.manual-queue-mode .manual-request .quiet-button{min-height:50px;font-size:12px}.manual-queue-mode .manual-request.is-current{border-color:#bf9f76;background:linear-gradient(110deg,#302539,#241f37)}.manual-queue-mode .manual-request.is-current .queue-state{color:#f0cfa5;border-color:#8a6f50}.manual-queue-mode .personal-request{display:flex;align-items:center;flex-wrap:wrap;gap:16px;padding:22px;margin:12px 0;background:var(--panel);border:1px solid var(--line);border-radius:15px}.manual-queue-mode .personal-request .song-info{flex:1;min-width:160px}.manual-queue-mode .personal-request .privacy-badge{flex-basis:100%}
@media(max-width:650px){.manual-queue-mode:not(.guest-view) .intro{min-height:132px;padding-block:23px}.manual-queue-mode:not(.guest-view) .intro h1{font-size:34px}.manual-queue-mode .manual-request .song-title{font-size:17px}.manual-queue-mode .singer-name{font-size:19px}.manual-queue-mode .queue-card-actions{gap:9px}.manual-queue-mode .manual-request .song-play{width:100%}.manual-queue-mode .manual-request .quiet-button{flex:1;min-width:110px}.manual-queue-mode .manual-request .queue-state{margin-left:27px}.manual-queue-mode .host-toolbar{margin-block:16px}}
.audience-panel{padding:22px;margin:20px 0;border:1px solid #4a455f;background:linear-gradient(120deg,#25213a,#1b2035);border-radius:16px}.audience-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.audience-heading h3{margin:0 0 8px;font-size:23px;letter-spacing:-.025em}.audience-heading .eyebrow{margin-bottom:8px}.audience-heading p:last-child{margin:0;color:var(--muted);font-size:12px}.audience-views{display:grid;grid-template-columns:1fr 1fr;gap:12px}.audience-view{min-height:85px;display:grid;align-content:center;gap:8px;text-align:left;padding:16px 20px;background:#2e2745;color:var(--text);border:1px solid #625477;border-radius:12px}.audience-view span{font-size:16px;font-weight:700}.audience-view small{font-size:12px;color:var(--muted)}.audience-view[aria-pressed=true]{background:#243d38;border-color:#99cabc;box-shadow:0 0 0 1px #99cabc}.audience-panel .section-copy{margin:16px 0 0;font-size:12px}.audience-panel .inline-error{margin-bottom:0}@media(max-width:650px){.audience-panel{padding:18px}.audience-heading{align-items:start;gap:12px;flex-wrap:wrap}.audience-views{grid-template-columns:1fr}.audience-view{min-height:72px}.audience-view span{font-size:15px}}
