:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#efefef;background:#141516;letter-spacing:0;color-scheme:dark;font-size:15px}*{box-sizing:border-box}body{margin:0}button,input,summary{cursor:pointer}button{font:inherit;border:1px solid #454649;border-radius:6px;background:#26282b;color:#eee;padding:9px 14px}html:not([data-input="touch"]) button:hover:not(:disabled){background:#373a3e}button:disabled,input:disabled{opacity:.35;cursor:not-allowed}button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #9fd7ff;outline-offset:4px}header{min-height:68px;border-bottom:1px solid #343638;display:flex;align-items:center;gap:16px;padding:14px max(20px,calc((100% - 1000px)/2))}header strong{font-size:23px;white-space:nowrap}.badge{font-size:11px;font-weight:700;color:#f0c876;border:1px solid #6b592e;border-radius:4px;padding:4px 6px;white-space:nowrap}#connection{margin-left:auto;font-size:13px;color:#bbb}#logout{font-size:12px;white-space:nowrap}main{max-width:1000px;padding:24px 20px 32px;margin:auto}#notice{font-size:14px;color:#cacaca;min-height:22px;margin:0 0 22px;overflow-wrap:anywhere}#notice.error{color:#ffb1a8}.pairing{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #444;margin-bottom:18px;padding-bottom:18px}.player{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:40px;align-items:center}#artwork{width:100%;aspect-ratio:1;object-fit:contain;background:#1c1d1f;border-radius:6px}.eyebrow{font-size:13px;color:#ccc;display:flex;gap:18px;align-items:center}#phase{font-size:12px;color:#a3d9b8}h1{font-size:28px;line-height:1.35;margin:14px 0 8px;overflow-wrap:anywhere}#artist{color:#bfc1c4;line-height:1.6;margin:0 0 24px;overflow-wrap:anywhere}.context{display:flex;gap:20px;font-size:13px;color:#a9abad;flex-wrap:wrap}progress{display:block;width:100%;height:4px;border:0;border-radius:3px;accent-color:#c3ddd2;margin-top:28px}progress::-webkit-progress-bar{background:#393b3e}progress::-webkit-progress-value{background:#c3ddd2}.time{display:flex;justify-content:space-between;color:#aaa;font-variant-numeric:tabular-nums;font-size:12px;margin-top:8px}.transport{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:26px}.icon{width:48px;height:48px;padding:10px;border:0;background:transparent}.icon img{width:100%;height:100%;object-fit:contain}.icon.primary{width:58px;height:58px;padding:16px;border-radius:50%;background:#3d6556}.primary{background:#3d6556}html:not([data-input="touch"]) .primary:hover:not(:disabled){background:#527d6c}.keys{display:flex;align-items:center;justify-content:space-between;margin-top:32px;padding:20px 0;border-top:1px solid #343638;border-bottom:1px solid #343638}.keys p{font-size:12px;color:#aaa;margin:5px 0 0}.keys input{appearance:none;width:40px;height:24px;background:#444;border-radius:20px;position:relative;flex-shrink:0}.keys input:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#eee}.keys input:checked{background:#4b8066}.keys input:checked:before{left:19px}details{padding:14px 0;font-size:12px;color:#aeb1b5}dl{display:grid;grid-template-columns:150px 1fr;gap:10px}dd{margin:0;color:#e8e8e8;overflow-wrap:anywhere}.queue{margin-top:22px}.queue-heading{display:flex;justify-content:space-between;align-items:center}h2{font-size:17px;margin:0}.queue-heading span{font-size:13px;color:#bbb}ol{list-style:none;counter-reset:song;margin:14px 0 0;padding:0}li{counter-increment:song;display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:14px;padding:13px 0;border-top:1px solid #2c2e30;align-items:center}li:before{content:counter(song);color:#84888c;font-size:12px}li strong{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}li small{font-size:12px;color:#9b9fa3;display:block;margin-top:4px;overflow-wrap:anywhere}li time{font-size:12px;color:#aaa}#empty{color:#999;font-size:14px}footer{border-top:1px solid #343638;max-width:960px;margin:auto;padding:18px 0;display:flex;justify-content:space-between;gap:20px;color:#aaa;font-size:12px}footer span{overflow-wrap:anywhere}dialog{max-width:440px;width:calc(100% - 32px);background:#242629;color:#eee;border:1px solid #505357;border-radius:8px;padding:24px}dialog::backdrop{background:#0009}dialog p{font-size:14px;line-height:1.65;color:#ccc}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}[hidden]{display:none!important}@media(max-width:650px){header{padding:14px 18px;gap:10px;flex-wrap:wrap}header strong{font-size:21px}#connection{max-width:42%;overflow-wrap:anywhere}main{padding:20px 20px 24px}.player{grid-template-columns:1fr;gap:22px}#artwork{max-width:320px;justify-self:center}h1{font-size:23px}.player-detail{min-width:0}.transport{margin-top:16px}#artist{margin-bottom:16px}progress{margin-top:22px}.keys{margin-top:24px}footer{margin:0 20px}dl{grid-template-columns:120px 1fr}}
.login-link{color:#c4e3ff;text-decoration:none;border:1px solid #62676e;border-radius:6px;padding:9px 14px;white-space:nowrap}.server-picker{display:flex;align-items:center;gap:12px;margin:0 0 20px}.server-picker select{flex:1;min-width:0;background:#26282b;color:#eee;border:1px solid #62676e;border-radius:6px;padding:10px;font:inherit}.server-picker label{white-space:nowrap;font-size:13px}.login-link:focus-visible,.server-picker select:focus-visible{outline:2px solid #9fd7ff;outline-offset:3px}
#notice:empty{display:none}
.select-frame{flex:1;min-width:0;display:flex;padding-right:12px;background:#26282b;border:1px solid #62676e;border-radius:6px}
.select-frame:focus-within{outline:2px solid #9fd7ff;outline-offset:3px}
.select-frame select{width:100%;border:0;background:transparent}
.select-frame select:focus-visible{outline:none}
#artwork{aspect-ratio:auto;height:auto;max-height:360px;align-self:start}
.player{align-items:start}
.eyebrow{margin-top:4px}
details p{line-height:1.6;max-width:64ch}
.transport{gap:6px;justify-content:space-between}.transport .icon{flex:0 0 40px;width:40px;height:44px;padding:8px}.transport #toggle{flex:0 0 52px;width:52px;height:52px;aspect-ratio:1;border-radius:50%;padding:14px}.icon.active{background:#3d6556}.request-row{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;align-items:center;gap:12px;margin-top:24px}.request-row label{font-size:13px;white-space:nowrap}.request-row input{min-width:0;width:100%;font:inherit;color:#eee;background:#26282b;border:1px solid #62676e;border-radius:6px;padding:12px;cursor:text}.request-row .icon{width:44px;height:44px;padding:10px;border-radius:6px}#request-status{font-size:13px;line-height:1.6;overflow-wrap:anywhere;white-space:pre-wrap;color:#cacaca}#request-status:empty{display:none}@media(max-width:380px){.transport{gap:2px}.transport .icon{flex-basis:38px;width:38px}.request-row{gap:8px}.request-row label{grid-column:1/-1}.request-row input{grid-column:1/3}}
@media(max-width:650px){#artwork{max-height:320px}.select-frame{padding-right:10px}}
.player>.transport{grid-column:1/-1;justify-content:center;margin-top:0;gap:16px}.player{row-gap:24px}#progress{display:block;width:100%;height:24px;margin:18px 0 0;padding:0;accent-color:#c3ddd2;cursor:pointer}#progress:disabled{cursor:not-allowed}.time{margin-top:2px}@media(max-width:380px){.player>.transport{gap:4px}}
#progress{appearance:none;background:transparent;border:0}
#progress::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:linear-gradient(to right,#c3ddd2 var(--progress-fill,0%),#393b3e var(--progress-fill,0%))}
#progress::-webkit-slider-thumb{appearance:none;width:14px;height:14px;margin-top:-5.5px;border:0;border-radius:50%;background:#c3ddd2}
#progress::-moz-range-track{height:3px;border:0;border-radius:2px;background:#393b3e}
#progress::-moz-range-progress{height:3px;border-radius:2px;background:#c3ddd2}
#progress::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:#c3ddd2}
#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);max-height:30vh;overflow:auto;padding:10px 14px;border:1px solid #454649;border-radius:6px;background:#242629;box-shadow:0 4px 16px #0005;z-index:30;pointer-events:none;margin:0}
.eyebrow{min-height:20px;flex-wrap:nowrap}#phase{min-width:7.5em;line-height:20px;white-space:nowrap;flex-shrink:0;color:#a3d9b8}footer{flex-wrap:wrap}#video-link{color:#c4e3ff;text-decoration:none}html:not([data-input="touch"]) #video-link:hover{text-decoration:underline}#video-link:focus-visible{outline:2px solid #9fd7ff;outline-offset:3px}

/* Compact account header; touch gestures must not become page scrolling. */
#progress{touch-action:none}
header{padding:14px max(16px,calc((100% - 960px)/2));gap:12px;flex-wrap:wrap}
header .keys{display:flex;align-items:center;gap:8px;margin:0;padding:0;border:0}
header .keys label{font-size:13px;white-space:nowrap}
header .keys input{margin:0}
header .keys p{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
header .account{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-left:auto;min-width:0}
header strong{font-size:23px}
html[data-input="touch"] button,html[data-input="touch"] a,html[data-input="touch"] input{-webkit-tap-highlight-color:transparent}
html[data-input="touch"] button:focus,html[data-input="touch"] a:focus{outline:none}
header #connection{margin-left:0;font-size:12px;max-width:240px;overflow-wrap:anywhere}
.queue{margin-top:20px;padding-top:0;border-top:0}
footer{flex-wrap:nowrap;gap:16px}footer span{min-width:0}footer a{flex-shrink:0;margin-left:auto}
header,header.site-header{min-height:60px;align-items:center;padding:10px max(16px,calc((100% - 960px)/2));gap:8px 10px;line-height:20px}
header .brand,header strong{display:inline-flex;align-items:center;font-size:23px;line-height:28px}
header .badge{line-height:16px;padding:3px 6px}
header .brand{border:1px solid #577d6e;border-radius:4px;color:#a3d9b8;background:#1d2b25;padding:1px 7px;font-size:20px;line-height:28px;text-decoration:none;white-space:nowrap;flex-shrink:0}
header .keys label,header #connection{line-height:20px}
header button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 10px;font-size:12px;line-height:20px}
/* Inset visual surfaces preserve the existing hit areas. */
header #logout{position:relative;isolation:isolate;height:34px;min-height:34px;border:0;background:transparent;padding:6px 10px}
header #logout::before{content:"";position:absolute;z-index:-1;inset:2px 0;border:1px solid #454649;border-radius:6px;background:#26282b;pointer-events:none}html:not([data-input="touch"]) header #logout:hover:not(:disabled){background:transparent}html:not([data-input="touch"]) header #logout:hover:not(:disabled)::before{background:#373a3e}
.server-picker .select-frame{position:relative;height:42px;background:transparent;border:0}
.server-picker .select-frame::before{content:"";position:absolute;inset:4px 0;border:1px solid #62676e;border-radius:6px;background:#26282b;pointer-events:none}
.server-picker .select-frame select{position:relative;z-index:1;height:42px;background:transparent;padding-top:10px;padding-bottom:10px}
.server-picker #refresh,.server-picker #server-refresh{position:relative;display:inline-flex;align-items:center;justify-content:center;align-self:center;flex:0 0 42px;width:42px;height:42px;min-width:42px;padding:10px;border:0;border-radius:6px;background:transparent;color:#eee}
.server-picker #refresh::before,.server-picker #server-refresh::before{content:"";position:absolute;inset:4px;border:1px solid #454649;border-radius:6px;background:#26282b;pointer-events:none}html:not([data-input="touch"]) .server-picker #refresh:hover:not(:disabled),html:not([data-input="touch"]) .server-picker #server-refresh:hover:not(:disabled){background:transparent}html:not([data-input="touch"]) .server-picker #refresh:hover:not(:disabled)::before,html:not([data-input="touch"]) .server-picker #server-refresh:hover:not(:disabled)::before{background:#373a3e}
.server-picker #refresh svg,.server-picker #server-refresh svg{position:relative;display:block;width:18px;height:18px;flex-shrink:0}
@media(max-width:650px){header,header.site-header{padding:10px 16px;gap:8px 10px}header .account{flex:1 1 0;max-width:calc(100% - 164px)}header #connection{margin-left:0;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}header #logout{flex-shrink:0}}
@media(hover:none){
  button,a,input[type=range]{-webkit-tap-highlight-color:transparent}
}

main{max-width:992px;padding-left:16px;padding-right:16px}
@media(max-width:650px){footer{margin:0 16px}}

/* Shared request-field sizing with the video controller. */
.request-row input{height:44px;padding:10px 12px;background:#26282b}
.request-row input::placeholder{color:#a3a7ab}

/* Balanced text padding keeps box dimensions and hit areas unchanged. */
.login-link{display:inline-flex;align-items:center;justify-content:center;line-height:21px;padding:9px 14px;border:1px solid #577d6e;border-radius:6px;background:#3d6556;color:#eee;text-decoration:none;white-space:nowrap}html:not([data-input="touch"]) .login-link:hover{background:#527d6c}

/* Touch feedback lasts only for the active gesture, never for lingering focus. */
html[data-input="touch"] button[data-touch-pressed]:not(:disabled){background:#373a3e}
html[data-input="touch"] .primary[data-touch-pressed]:not(:disabled){background:#527d6c}
html[data-input="touch"] #video-link[data-touch-pressed]{text-decoration:underline}
html[data-input="touch"] header #logout[data-touch-pressed]:not(:disabled){background:transparent}
html[data-input="touch"] header #logout[data-touch-pressed]:not(:disabled)::before{background:#373a3e}
html[data-input="touch"] .server-picker #refresh[data-touch-pressed]:not(:disabled),html[data-input="touch"] .server-picker #server-refresh[data-touch-pressed]:not(:disabled){background:transparent}
html[data-input="touch"] .server-picker #refresh[data-touch-pressed]:not(:disabled)::before,html[data-input="touch"] .server-picker #server-refresh[data-touch-pressed]:not(:disabled)::before{background:#373a3e}
html[data-input="touch"] .login-link[data-touch-pressed]{background:#527d6c}
