:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:dark;--bg:#05070a;--panel:#080b10;--panel2:#0b0e14;--line:#29303b;--text:#f7f7fb;--muted:#9298a5;--purple:#7441ed;--pink:#ee326c;--green:#36dda0;--green2:#102a21;--gold:#ffc959;--danger:#3a111e;--danger-line:#682238}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#030405;color:var(--text);overflow:hidden}body{padding:calc(env(safe-area-inset-top) + 6px) 12px calc(env(safe-area-inset-bottom) + 8px);max-width:460px;margin:auto}button,input{font:inherit}button{border:0;color:inherit;-webkit-tap-highlight-color:transparent;cursor:pointer}.hidden{display:none!important}.grow{min-width:0;flex:1}.remote-shell{height:100%;display:flex;flex-direction:column;min-height:0}.topbar{display:grid;grid-template-columns:50px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:62px;padding:2px 4px 4px}.logo{width:48px;height:48px;border-radius:15px;object-fit:cover;border:1px solid #40244d;box-shadow:0 7px 24px #b92d6425}.brand .kicker,.sheet-kicker{font-size:9px;letter-spacing:.2em;font-weight:800;color:#a8a9b6}.brand h1{font-size:23px;line-height:1;margin:2px 0 4px}.room-label{font-size:11px;color:#737985;max-width:215px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conn{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.wifi-row{display:flex;align-items:center;gap:5px;background:#091410;border:1px solid #14533e;border-radius:999px;padding:5px 6px 5px 9px}.wifi-indicator{height:22px;display:flex;align-items:flex-end;gap:3px;padding:1px 2px;background:transparent}.wifi-indicator span{display:block;width:5px;border-radius:2px;background:#395047;transition:.2s}.wifi-indicator span:nth-child(1){height:8px}.wifi-indicator span:nth-child(2){height:13px}.wifi-indicator span:nth-child(3){height:19px}.conn.online .wifi-indicator span{background:var(--green)}.conn.warn .wifi-indicator span{background:var(--gold)}.conn.bad .wifi-indicator span{background:#e74d6e}.refresh{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#111820;border:1px solid #29363f;color:#cce9df}.refresh svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}.pill{font-size:10px;font-weight:800;border:1px solid #2d333e;background:#0b0e13;color:#8f95a0;border-radius:999px;padding:3px 9px;min-width:72px;text-align:center}.pill.online{color:#67efbc;border-color:#145b43;background:#071b14}.pill.warn{color:#ffd375;border-color:#604b1c;background:#191405}.pill.bad{color:#ff839a;border-color:#662137;background:#1d0810}
.controls{flex:1;min-height:0;display:grid;grid-template-rows:auto auto auto auto auto minmax(106px,1fr) auto;gap:6px}.start-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0}.power{width:72px;height:72px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#ff648a 0,#e72e69 50%,#9f1643 100%);border:6px solid #37101f;box-shadow:0 0 0 4px #771c3a55,0 10px 23px #9d154548,inset 0 2px 0 #ffffff55;display:grid;place-items:center}.power svg{width:34px;height:34px;fill:none;stroke:white;stroke-width:2.3;stroke-linecap:round}.power-label{text-align:center;margin-top:3px}.power-label b{display:block;font-size:13px;letter-spacing:.18em}.power-label span{font-size:10px;color:var(--muted)}
.now-card{border:1px solid var(--line);border-radius:15px;background:#070a0f;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:9px;padding:7px 9px;min-height:52px}.initial{width:38px;height:38px;border-radius:11px;background:linear-gradient(180deg,#7149f4,#38217e);display:grid;place-items:center;font-weight:900;font-size:18px}.now-meta{min-width:0}.now-song{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.now-artist{font-size:11px;color:#a2a7b2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.phase-pill{font-size:10px;font-weight:800;color:#68eab7;background:#071a14;border-radius:999px;padding:4px 7px;white-space:nowrap}.phase-pill.warn{color:#ffd270;background:#1c1506}.phase-pill.bad{color:#ff829a;background:#210a12}
.transport-zone{text-align:center}.transport{display:grid;grid-template-columns:64px minmax(0,1fr) 64px;gap:7px}.seek,.pause{height:47px;border-radius:14px;border:1px solid var(--line);font-weight:800}.seek{background:#080b10;font-size:14px}.pause{background:linear-gradient(180deg,#8258f4,#6535db);font-size:15px;box-shadow:0 6px 17px #6635db2e}.skip{height:28px;margin-top:5px;padding:0 30px;border-radius:999px;background:#141820;border:1px solid #3b424e;font-size:12px;font-weight:800}.action-state{height:12px;font-size:9px;color:#606774;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-state.good{color:#58dbaa}.action-state.bad{color:#ff718b}.action-state.wait{color:#ffc95e}
.compact-card{position:relative;background:#070a0f;border:1px solid var(--line);border-radius:15px;padding:8px 10px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-title{padding:0;background:transparent;font-size:14px;font-weight:850;text-align:left}.section-title span{color:#b1a2c8}.mode-button,.queue-badge{background:#121620;border:1px solid #333a47;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800;color:#e9e6f1}.helper{font-size:10px;line-height:1.25;color:var(--muted);margin:5px 0 0}.audience-copy{margin-bottom:5px}.audience-menu{position:absolute;right:8px;top:38px;width:270px;z-index:30;display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:7px;border-radius:14px;background:#05070a;border:1px solid #343946;box-shadow:0 18px 45px #000b}.audience-menu button{display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;column-gap:6px;text-align:left;padding:9px;border-radius:11px;background:#0d1118;border:1px solid #2d3440}.audience-menu button>span{grid-row:1/3;font-size:20px}.audience-menu b{font-size:11px}.audience-menu small{font-size:9px;color:var(--muted)}.audience-active,.slideshow-share{margin-top:5px}.qr-status-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.qr-status-row b{font-size:11px}.qr-status-row span{font-size:10px;color:var(--gold);font-weight:800}.two-buttons,.lineup-buttons,.finish-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.secondary,.primary,.danger-soft{height:34px;border-radius:11px;font-weight:800;font-size:11px}.secondary{background:#0d1117;border:1px solid #343a45}.primary{background:linear-gradient(180deg,#8250ef,#6135d7)}.danger-soft{background:#1d0911;border:1px solid #5d2033;color:#ffc2cf}.slideshow-share{padding-top:5px;border-top:1px solid #1f252e}.slideshow-buttons button{height:31px;font-size:10px}.slideshow-share .qr-status-row{margin-bottom:4px}
.photo-folder{padding-bottom:7px}.folder-title{display:flex;align-items:center;gap:6px}.folder-icon{font-size:16px!important;color:#ffc94e!important}.count-badge{font-size:9px;font-weight:800;color:#d9c6f2;background:#171021;border:1px solid #4d3270;padding:4px 7px;border-radius:999px;white-space:nowrap}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:7px;min-height:58px}.photo-thumb-card{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:#0e1117;border:1px solid #202630}.photo-thumb-card img{width:100%;height:100%;object-fit:cover;display:block}.photo-thumb-card.excluded img{filter:grayscale(.55);opacity:.6}.photo-corner{position:absolute;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:900;background:#10070dcb;border:1px solid #3b2630}.photo-corner.exclude{right:3px;top:3px}.photo-corner.include{left:3px;top:3px;background:#0b251bcc;border-color:#1f6148;color:#71f0bd}.photo-corner.delete{right:3px;top:3px;background:#2d0812dd;border-color:#6d263b;color:#ffb1c0;font-size:10px}.photo-check{position:absolute;left:4px;bottom:4px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#12a972;color:white;font-size:10px;font-weight:900}.photo-excluded-label{position:absolute;left:4px;bottom:4px;font-size:8px;font-weight:850;color:#ffd5df;background:#310b17d9;padding:3px 5px;border-radius:999px}.photo-empty{grid-column:1/-1;display:grid;place-items:center;height:58px;color:#747b87;font-size:10px;border:1px dashed #242b35;border-radius:10px}.photo-note{font-size:9px;color:#78818d;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-more-hint{color:#bda7dc}
.lineup-card{min-height:106px;align-self:stretch}.lineup-head h2{font-size:14px;margin:0}.queue-badge{cursor:pointer}.lineup-buttons{margin-top:7px}.lineup-buttons button{height:38px;font-size:12px}.catalog-status,.lineup-summary{font-size:10px;color:#8e95a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.catalog-status{margin-top:6px}.lineup-summary{margin-top:2px}.lineup-finished{margin-top:6px}.finish-title{font-size:11px;font-weight:850;margin-bottom:5px}.finish-actions button{height:35px}.finish-status{font-size:9px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.room-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.room-actions button{height:38px;border-radius:12px;font-size:11px}
.pair-card{margin:auto 0;background:#080b10;border:1px solid var(--line);border-radius:22px;padding:24px;text-align:center}.pair-logo{width:76px;height:76px;border-radius:20px}.pair-card h2{margin:12px 0 6px}.pair-card p{color:var(--muted);font-size:13px}.pair-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:15px}.pair-actions button{height:46px}
.sheet{position:fixed;inset:0;background:#000b;z-index:80;display:none;align-items:flex-end}.sheet.open{display:flex}.sheet-inner{width:100%;max-width:460px;margin:0 auto;max-height:90dvh;overflow:auto;background:#080b10;border:1px solid #333b47;border-bottom:0;border-radius:24px 24px 0 0;padding:16px 14px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px #0009}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.sheet-head h2{font-size:19px;margin:1px 0 0}.close{width:36px;height:36px;border-radius:50%;background:#151a22;border:1px solid #343b47;font-size:22px}.field{width:100%;height:45px;margin-top:8px;border-radius:12px;background:#0d1117;border:1px solid #333b47;color:white;padding:0 12px;outline:none}.songs{max-height:55dvh;overflow:auto;margin-top:6px}.song-pick{width:100%;text-align:left;background:#0d1117;border:1px solid #252c36;padding:11px;border-radius:11px;margin:5px 0}.song-pick b{display:block}.song-pick span{font-size:10px;color:var(--muted)}.photo-sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.photo-sheet-card{background:#0c1016;border:1px solid #262d38;border-radius:13px;overflow:hidden}.photo-sheet-image{position:relative;aspect-ratio:1.2/1;background:#11151b}.photo-sheet-image img{width:100%;height:100%;object-fit:cover}.photo-sheet-image.excluded img{filter:grayscale(.55);opacity:.65}.photo-sheet-info{padding:8px}.photo-sheet-meta{font-size:9px;color:#838b98;margin-bottom:6px}.photo-sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}.photo-sheet-actions.one{grid-template-columns:1fr}.photo-sheet-actions button{height:30px;border-radius:9px;font-size:10px;font-weight:800}.include-photo{background:#0c2c20;color:#80f2c3;border:1px solid #215842}.reject-photo{background:#34101b;color:#ffbfd0;border:1px solid #65263b}.delete-photo{background:#3b0b17;color:#ffc1cf;border:1px solid #76263e}.queue-item{padding:11px 2px;border-top:1px solid #20262f;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.queue-item:first-child{border-top:0}.queue-name{font-weight:800}.queue-song{font-size:10px;color:var(--muted);margin-top:2px}.queue-actions{display:flex;gap:5px}.mini{width:34px;height:32px;border-radius:9px;background:#121720;border:1px solid #313845}.mini.remove{background:#2f0b16;color:#ffb3c4}.diag-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.diag-grid>div{background:#0d1117;border:1px solid #252c36;border-radius:11px;padding:10px}.diag-grid span{display:block;color:#7e8692;font-size:9px}.diag-grid b{display:block;font-size:12px;margin-top:2px}
.scanner{position:fixed;inset:0;background:#020304f4;z-index:90;padding:calc(14px + env(safe-area-inset-top)) 14px calc(14px + env(safe-area-inset-bottom));display:none;flex-direction:column}.scanner.open{display:flex}.scan-title{font-size:22px;font-weight:850;margin:8px 0 12px}.scan-frame{position:relative}.scan-frame video{width:100%;max-height:65dvh;object-fit:cover;border-radius:20px;background:black}.scan-frame:after{content:"";position:absolute;inset:14%;border:2px solid white;border-radius:17px;box-shadow:0 0 0 999px #0003;pointer-events:none}.scanner-cancel{margin-top:12px}.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%,18px);opacity:0;pointer-events:none;z-index:120;background:#11161d;border:1px solid #333b46;color:white;padding:10px 14px;border-radius:999px;font-size:11px;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}button:disabled{opacity:.42;cursor:default}
@media(max-height:790px){body{padding-top:calc(env(safe-area-inset-top) + 2px);padding-bottom:calc(env(safe-area-inset-bottom) + 4px)}.topbar{min-height:54px}.logo{width:42px;height:42px}.brand h1{font-size:20px}.controls{gap:4px}.power{width:60px;height:60px}.power svg{width:28px;height:28px}.power-label b{font-size:11px}.now-card{min-height:46px;padding:5px 8px}.initial{width:34px;height:34px}.transport .seek,.transport .pause{height:42px}.skip{height:25px;margin-top:3px}.helper{margin-top:3px}.compact-card{padding:6px 8px}.photo-grid{margin-top:5px;min-height:49px}.photo-empty{height:49px}.lineup-card{min-height:94px}.lineup-buttons{margin-top:5px}.lineup-buttons button{height:34px}.room-actions button{height:34px}}
@media(max-height:760px){.audience-copy{display:none}.slideshow-buttons button{height:28px}.slideshow-share{padding-top:4px;margin-top:4px}}
@media(max-height:720px){.audience-copy{display:none}.power-label span{display:none}.action-state{display:none}.photo-note{display:none}.lineup-summary{display:none}.controls{grid-template-rows:auto auto auto auto auto minmax(84px,1fr) auto}.lineup-card{min-height:84px}}

/* 1.0.10 same-address fix: slideshow lives with the photo folder and is always visible. */
.slideshow-photo-controls{margin-top:6px;padding-top:6px;border-top:1px solid #242a33}
.slideshow-photo-controls .qr-status-row b{font-size:12px}
.slideshow-photo-controls .slideshow-buttons button{height:33px;font-size:10.5px}
@media(max-height:790px){.slideshow-photo-controls{margin-top:4px;padding-top:4px}.slideshow-photo-controls .slideshow-buttons button{height:29px}.slideshow-photo-controls .qr-status-row{margin-bottom:3px}}
@media(max-height:720px){.slideshow-photo-controls .qr-status-row{display:none}.slideshow-photo-controls{padding-top:3px;margin-top:3px}.slideshow-photo-controls .slideshow-buttons button{height:27px;font-size:9.5px}}
