/* V102: narrow Pro-compatible shell. Existing Pro tokens/styles are reused;
   unsupported legacy controls are deliberately NOT copied. */
.pro-native-v102{background:#0d0d0e;color:#ededee;--v102-red:#ef4e46;font-family:Inter,ui-sans-serif,system-ui,sans-serif}
.v102-shell{min-height:100vh;display:grid;grid-template-columns:210px minmax(0,1fr);padding-bottom:110px}
.v102-shell[hidden],.v102-login[hidden],.v102-toolbar[hidden],#nowCover[hidden]{display:none!important}
.v102-shell .side-rail{position:sticky;top:0;height:calc(100vh - 105px);width:auto;min-width:0;display:flex;flex-direction:column;padding:24px 13px 14px;background:#101011;border-right:1px solid #2b2b2d;z-index:1}
.v102-shell .rail-brand{padding:8px 10px 25px}.v102-shell .brand-logo{font-size:19px;font-weight:800;letter-spacing:0.04em}.v102-shell .rail-brand .eyebrow{margin-top:8px;font-size:9px;color:#a6a6aa}
.v102-shell .rail-nav{display:grid;gap:5px}.v102-shell .nav{display:flex;gap:16px;align-items:center;width:100%;text-align:left;border:0;border-radius:5px;background:transparent;color:#bcbcc0;padding:12px 15px;font-size:14px;cursor:pointer}
.v102-shell .nav.active,.v102-shell .nav:hover{color:white;background:#242426}.v102-shell .rail-status{margin-top:auto;font-size:12px;color:#94949b;padding:12px}.v102-online-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5cbb8a;margin-right:6px}.v102-shell .rail-status a{display:inline-block;margin-top:12px;color:#c5c5c5;text-decoration:underline}
.v102-main{padding:0 42px 30px;min-width:0}.v102-main .app-topbar{position:sticky;top:0;z-index:2;background:rgba(13,13,14,.96);border-bottom:1px solid #29292c;backdrop-filter:blur(16px);margin:0 -42px;padding:18px 42px}.v102-main .topbar-inner{display:flex;align-items:center;gap:20px;justify-content:space-between}.v102-main #viewTitle{font-size:22px;margin:4px 0 0;font-weight:600}.v102-main .topbar-search{flex:1;max-width:380px}.v102-main input[type=search],.v102-main .v102-toolbar input{width:100%;background:#1c1c1e;border:1px solid #37373a;color:#fff;padding:11px 13px;border-radius:5px}
.v102-intro{padding:40px 0 20px;border-bottom:1px solid #27272a}.v102-intro h2{font-size:32px;font-weight:600;letter-spacing:-.04em;margin:6px 0 8px}.v102-intro p{color:#9999a2;font-size:14px}.v102-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:22px 0}.v102-toolbar nav{display:flex;gap:8px}.v102-toolbar button,.v102-results button,.v102-pagination button,.v102-player button,#logoutBtn{border:1px solid #3c3c3f;background:#222225;color:#f4f4f6;padding:8px 12px;border-radius:5px;cursor:pointer}.v102-toolbar button:hover,.v102-results button:hover,.v102-player button:hover{background:#39393e}.v102-toolbar button.active{border-color:#ef655f}.v102-toolbar input{max-width:235px}.v102-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;margin:20px 0 15px}.v102-card{min-width:0;background:#171719;border:1px solid #27272a;border-radius:7px;padding:12px;display:flex;flex-direction:column;gap:8px}.v102-card img,.v102-card .v102-cover{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px;background:linear-gradient(135deg,#2c2c30,#151518);display:block}.v102-card h3{margin:4px 0 0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.v102-card p{font-size:12px;color:#96969e;margin:0;overflow-wrap:anywhere}.v102-actions{margin-top:auto;display:flex;gap:6px;flex-wrap:wrap}.v102-actions button{font-size:11px;padding:6px 9px}.v102-pagination{display:flex;align-items:center;gap:15px;color:#b9b9bf;font-size:12px}.v102-pagination:has(#previousPage[hidden]){display:none}.v102-message{margin:15px 0 25px;color:#ababaf;font-size:13px;min-height:20px}.v102-player{position:fixed;bottom:0;left:0;right:0;min-height:101px;z-index:20;background:#151516;border-top:1px solid #3b3b3e;display:grid;grid-template-columns:minmax(150px,1fr) minmax(320px,2.1fr) minmax(115px,.8fr);align-items:center;gap:22px;padding:12px 28px}.v102-now{display:flex;gap:12px;align-items:center;min-width:0}.v102-now img{width:60px;height:60px;object-fit:cover;border-radius:4px}.v102-now div{display:grid;gap:5px;min-width:0}.v102-now b,.v102-now small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v102-now small,#ownerStatus,.v102-volume label{font-size:11px;color:#a8a8af}.v102-controls{display:flex;align-items:center;gap:10px}.v102-controls #seek{flex:1;min-width:65px}.v102-volume{display:flex;align-items:center;gap:6px}.v102-volume input{min-width:35px;max-width:100px;width:100%}.v102-player #ownerStatus{grid-column:2;white-space:nowrap}.v102-login{display:grid;place-items:center;min-height:100vh;padding:24px;background:#0c0c0d}.v102-login-form{background:#1b1b1d;border:1px solid #37373a;max-width:420px;width:100%;padding:36px;display:grid;gap:16px}.v102-login-form h1{font-size:26px}.v102-login-form p{color:#a6a6ad;font-size:14px}.v102-login-form input{width:100%;padding:12px;background:#121214;border:1px solid #444;color:#fff}.v102-login-form button{padding:12px;background:#eaeaea;color:#121212;border:0;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed!important}
@media(max-width:850px){.v102-shell{grid-template-columns:1fr}.v102-shell .side-rail{position:static;width:auto;height:auto;min-height:0;padding:12px}.v102-shell .rail-brand{padding:4px}.v102-shell .rail-nav{display:flex;overflow-x:auto;gap:2px}.v102-shell .nav{width:auto;white-space:nowrap;padding:10px}.v102-shell .rail-status{display:none}.v102-main{padding:0 16px 25px}.v102-main .app-topbar{margin:0 -16px;padding:12px 16px}.v102-player{grid-template-columns:1fr;gap:7px;padding:9px 14px}.v102-player #ownerStatus,.v102-volume{display:none}.v102-results{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.v102-card{padding:8px}.v102-main .topbar-search{max-width:230px}.v102-shell{padding-bottom:155px}}

/* V103: opt-in browser-local DSP panel — no extra audio element. */
.v103-dsp-panel[hidden]{display:none!important}
.v103-dsp-panel{position:fixed;right:18px;bottom:146px;max-height:calc(100dvh - 175px);overflow-y:auto;z-index:50;box-sizing:border-box;width:min(380px,calc(100vw - 36px));background:#171717;color:#f1f1f1;border:1px solid #494949;border-radius:14px;box-shadow:0 10px 36px #0009;padding:18px;font-size:13px}
.v103-dsp-head,.v103-dsp-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px}
.v103-dsp-head label{display:flex;align-items:center;gap:8px}.v103-dsp-panel p{color:#aaa;line-height:1.4;margin:12px 0}
.v103-dsp-bands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.v103-dsp-bands label{display:grid;gap:8px;color:#ddd}.v103-dsp-bands input{width:100%;accent-color:#ccae88}
.v103-dsp-bottom{margin-top:14px}.v103-dsp-bottom small{color:#bbb}.v103-dsp-panel button{cursor:pointer}
@media(max-width:650px){.v103-dsp-panel{bottom:155px;right:10px;width:calc(100vw - 20px)}}

.v102-player .v103-eq-toggle{flex:0 0 auto;border:1px solid #494949;color:#e6e6e6;background:#292929;border-radius:8px;padding:7px 11px;cursor:pointer}
.v102-player .v103-eq-toggle:focus-visible{outline:2px solid #ccae88;outline-offset:3px}

/* V104: local output chooser in the existing EQ panel; one audio element. */
.v104-outputs{margin-top:16px;padding-top:14px;border-top:1px solid #383838;display:grid;gap:8px}
.v104-outputs label{font-weight:650;color:#e3e3e5}
.v104-outputs select{background:#242426;color:#f1f1f1;border:1px solid #515155;border-radius:7px;padding:10px;width:100%;min-width:0}
.v104-output-actions{display:flex;gap:8px;flex-wrap:wrap}
.v104-outputs button{padding:7px 10px}
.v104-outputs small{color:#b5b5b9;line-height:1.4;overflow-wrap:anywhere}
.v104-outputs p{margin:0;color:#999;font-size:11px}
.v104-outputs :focus-visible{outline:2px solid #ccae88;outline-offset:2px}

/* V109: Native Taste feedback, explicitly reflected for keyboard and touch. */
.v102-actions button[aria-pressed="true"]{background:#3b292d;border-color:#d57378;color:#ffdddd}
.v102-actions button[aria-pressed="true"]:hover{background:#513037}
.v102-actions button:focus-visible{outline:2px solid #ccae88;outline-offset:3px}

/* V110: active discovery mode is visible to keyboard and pointer users. */
#discoverTools [aria-pressed="true"]{border-color:#ed756e;background:#383036;color:#fff}
#discoverTools button:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}

/* V114: choose the exact Native semantic vector space. */
#discoverTools label{font-size:12px;color:#c7c7cd}
#discoverVectorModel{min-width:0;max-width:100%;border:1px solid #515155;background:#242426;color:#f4f4f6;padding:9px 10px;border-radius:5px}
#discoverVectorModel:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}

/* V115: compact, explicitly controlled local indexing job. */
.v115-index-panel:not([hidden]){display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:14px 16px;margin:4px 0 14px;background:#1b1b1e;border:1px solid #38383d;border-radius:8px}
.v115-index-panel strong{font-size:13px}.v115-index-panel p{font-size:12px;color:#c5c5cc;margin:7px 0}
.v115-index-panel progress{width:min(380px,100%);height:8px;accent-color:#dd817c}
.v115-index-actions{display:flex;gap:8px;flex-wrap:wrap}
.v115-index-actions button{background:#29292d;color:#fff;border:1px solid #55555a;border-radius:5px;padding:9px 13px;cursor:pointer}
.v115-index-actions button:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}
.v115-index-actions button:disabled{opacity:.5}

/* V118: self-contained, readable Smart rule editor; never overlays playback. */
.v118-smart-tools:not([hidden]){display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:15px;background:#18181a;border:1px solid #333338;border-radius:7px}
.v118-smart-tools label{display:grid;gap:6px;color:#c6c6cc;font-size:12px;min-width:0}
.v118-smart-tools label:has(input[type=checkbox]){display:flex;align-items:center;gap:8px;align-self:center}
.v118-smart-tools input:not([type=checkbox]),.v118-smart-tools select{background:#202023;color:#fff;border:1px solid #4a4a50;border-radius:5px;padding:9px;max-width:180px;min-width:0}
.v118-smart-tools input:focus-visible,.v118-smart-tools select:focus-visible,.v118-smart-tools button:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}
.v118-smart-tools button{min-height:37px}
@media(max-width:550px){.v118-smart-tools label{flex:1 1 42%}.v118-smart-tools label:has(input[type=checkbox]){flex:1 1 45%}.v118-smart-tools input:not([type=checkbox]){width:100%}}


/* V119: offline copies stay local to this browser; actions never cover the dock. */
.v119-offline-intro{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:13px 15px;background:#19191c;border:1px solid #343438;border-radius:7px}
.v119-offline-intro p{color:#c3c3c9;font-size:12px;line-height:1.55;max-width:75ch;margin:0}
.v119-offline-intro button{flex-shrink:0}
.v119-offline-meta{font-size:11px;color:#aeb0b6}
.v102-card audio[controls]{display:block;width:100%;max-width:100%;margin-top:8px}
.v119-offline-intro button:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}

/* V120: browser-session management with clear, honest scope. */
.v120-session-note{grid-column:1/-1;padding:15px 18px;border:1px solid #3b3b3f;border-radius:8px;background:#1a1a1d}
.v120-session-note h3{margin:0 0 7px;font-size:16px}
.v120-session-note p{max-width:75ch;margin:0;color:#babac2;font-size:13px;line-height:1.5}
.v120-session-card .v102-actions{margin-top:auto}
.v120-session-card button:focus-visible{outline:2px solid #e7aaa5;outline-offset:3px}

/* V121: form is separate from music cards and player dock. */
.v121-settings:not([hidden]){display:block;margin:20px 0 32px;max-width:650px}
.v121-settings form{display:grid;gap:16px;padding:25px;background:#18181b;border:1px solid #37373c;border-radius:10px}
.v121-settings h3{font-size:18px;margin:0}.v121-settings p,.v121-settings small{line-height:1.55;color:#bdbdc5;margin:0}
.v121-settings label{display:grid;gap:7px;font-size:13px;color:#eeeeef}
.v121-settings select{background:#252528;border:1px solid #5a5a62;border-radius:6px;color:#fff;padding:12px;min-width:0;max-width:100%}
.v121-settings-actions{display:flex;gap:10px;flex-wrap:wrap}
.v121-settings button{background:#29292d;color:#fff;border:1px solid #69696f;border-radius:6px;padding:10px 14px;cursor:pointer}
.v121-settings :focus-visible{outline:2px solid #e7aaa5;outline-offset:3px}
@media(max-width:600px){.v121-settings form{padding:17px}}

/* V122 scoped browser pairing, QR never injected as HTML. */
.v122-pair-panel{display:grid;gap:12px;justify-items:start}.v122-qr{width:min(250px,100%);height:auto;background:white;border:8px solid white;border-radius:5px}.v122-link{overflow-wrap:anywhere}.v122-pair-panel button:focus-visible{outline:2px solid #e7aaa5;outline-offset:3px}

/* Native single-server music folder management. */
.v128-roots:not([hidden]){display:grid;gap:16px;margin:16px 0 25px;padding:22px;border:1px solid #393940;border-radius:10px;background:#19191c}
.v128-roots h3{font-size:20px;margin:4px 0 8px}.v128-roots p{color:#bcbcc4;font-size:13px;line-height:1.6;margin:0}
.v128-roots form{display:grid;gap:8px}.v128-roots label{font-size:13px}.v128-roots-input,.v128-root-item,.v128-root-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.v128-roots-input input{flex:1 1 260px;min-width:0;padding:12px;color:#fff;background:#121216;border:1px solid #555;border-radius:6px;font-family:monospace}
.v128-roots button{background:#303035;color:#fff;border:1px solid #666;border-radius:6px;padding:10px 14px;cursor:pointer}
.v128-roots button:focus-visible,.v128-roots input:focus-visible{outline:2px solid #e7aaa5;outline-offset:2px}
.v128-root-list{display:grid;gap:8px}.v128-root-item{padding:12px;background:#151519;border:1px solid #38383e;border-radius:7px}
.v128-root-path{flex:1 1 260px;min-width:0;overflow-wrap:anywhere;font-size:12px;font-family:monospace;color:#ddd}
.v128-root-actions span{font-size:12px;color:#c5c5ca}
@media(max-width:640px){.v128-roots:not([hidden]){padding:14px}}

/* Unified demo experience — visual refinement; no new framework or remote assets. */
.pro-native-v102{
 --demo-bg:#101113;--demo-surface:#1c1d20;--demo-line:#343338;
 --demo-gold:#dfb98b;--demo-red:#df6b61;
 background:radial-gradient(ellipse 900px 700px at 88% 2%,#292024 0%,transparent 70%),#101113;
 color:#f7f5f2;color-scheme:dark;
 font-family:Inter,"Segoe UI",system-ui,-apple-system,sans-serif;
 -webkit-font-smoothing:antialiased;
}
.pro-native-v102 button,.pro-native-v102 input,.pro-native-v102 select{font:inherit}
.v102-shell{grid-template-columns:226px minmax(0,1fr);padding-bottom:120px}
.v102-shell .side-rail{
 background:linear-gradient(180deg,#1a191c,#121315 70%);border-right:1px solid #373137;
 height:calc(100dvh - 105px);padding:24px 13px 12px;overflow-y:auto;
}
.v102-shell .rail-brand{padding:9px 13px 24px}
.v102-shell .brand-logo{font-size:20px;letter-spacing:.10em;font-weight:800;color:#faf8f6}
.v102-shell .brand-logo .muted{color:var(--demo-gold);font-weight:500}
.v102-shell .rail-nav{gap:2px}
.v102-shell .nav{border-radius:9px;min-height:37px;padding:8px 13px;transition:background .13s,color .13s;font-size:13px;color:#bdb8b9}
.v102-shell .nav.active{background:linear-gradient(90deg,rgba(223,107,97,.19),rgba(223,107,97,.035));border-left:3px solid #e88d83;color:#fff;padding-left:10px}
.v102-shell .nav:hover{background:#322b30;color:#fff}
.v102-shell .rail-status{padding:16px 12px 8px;border-top:1px solid #383239;color:#a39c9f}
.v102-online-dot{box-shadow:0 0 0 3px #5cbb8a22}
.v102-main{padding:0 clamp(20px,3.4vw,60px) 42px}
.v102-main .app-topbar{margin:0 calc(-1*clamp(20px,3.4vw,60px));padding:16px clamp(20px,3.4vw,60px);background:rgba(19,19,22,.94);border-bottom:1px solid #ffffff16}
.v102-main .topbar-title .eyebrow{color:var(--demo-gold);letter-spacing:.17em}
.v102-main #viewTitle{font-size:21px;letter-spacing:-.025em}
.v102-main .topbar-search{max-width:420px;position:relative}
.v102-main input[type=search]{border-radius:10px;padding:12px 17px;border:1px solid #494048;background:#ffffff0a}
.v102-main input[type=search]:focus{outline:none;border-color:var(--demo-gold);box-shadow:0 0 0 3px #dfb98b13}
.v102-intro{padding:35px 0 17px;border-bottom:0}
.v102-intro .eyebrow{font-size:10px;color:var(--demo-gold);letter-spacing:.20em}
.v102-intro h2{font-size:clamp(26px,3vw,39px);font-weight:630;letter-spacing:-.045em}
.v102-intro p{max-width:620px;color:#b3aeb0}
.v102-toolbar button,.v102-results button,.v102-pagination button,.v102-player button,#logoutBtn,.v-demo-section-heading button,.v-demo-feature-actions button{
 background:#28262a;border:1px solid #494249;border-radius:9px;color:#f2eeef;
 transition:background .15s,border-color .15s,transform .15s;
}
.v102-toolbar button:hover,.v102-results button:hover,.v102-player button:hover,.v-demo-section-heading button:hover,.v-demo-feature-actions button:hover{background:#44333c;border-color:#966c70}
.v102-toolbar button:focus-visible,.v102-results button:focus-visible,.v102-player button:focus-visible,.v-demo-feature-actions button:focus-visible{outline:2px solid var(--demo-gold);outline-offset:3px}
.v102-results{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:18px}
.v102-card{background:#1c1b1e;border:1px solid #ffffff17;padding:11px;border-radius:12px;gap:8px;transition:transform .18s,border-color .18s,background .18s;overflow:hidden}
.v102-card:hover{transform:translateY(-2px);border-color:#745b60;background:#222025}
.v102-card img,.v102-card .v102-cover{border-radius:8px;background:linear-gradient(140deg,#483a44,#28232a)}
.v102-card h3{font-size:14px;font-weight:650;color:#f5f1ee;line-height:1.3;margin-top:7px;letter-spacing:-.01em}
.v102-card p{font-size:12px;color:#a8a2a5}
.v102-actions{gap:5px;padding-top:8px}
.v102-actions button{font-size:11px;padding:7px 9px;white-space:nowrap}
.v102-actions button:first-child{background:#5c3337;border-color:#945254}
.v102-actions button:first-child:hover{background:#86464a}
.v102-player{background:rgba(24,23,27,.97);border-top:1px solid #6d4b53;backdrop-filter:blur(20px);box-shadow:0 -6px 35px #0004}
.v102-player #playPause{background:#e7d5c2;color:#18171a;border:0;border-radius:28px;min-width:68px;font-weight:700}
.v102-player #playPause:hover{background:#fff4e6}
.v102-now img{border-radius:8px}
.v102-player input[type=range]{accent-color:#deaa89}
.v102-message{color:#d1c0ba;font-size:12px;min-height:18px}
.v102-login{background:radial-gradient(circle at 65% 28%,#3c2c31,#121114 50%,#0a0a0c)}
.v102-login-form{border-radius:18px;border-color:#70535a;background:#1b191de8;box-shadow:0 18px 75px #0008}
.v102-login-form .eyebrow{color:var(--demo-gold);letter-spacing:.14em}
.v102-login-form h1{font-size:clamp(27px,4vw,40px);letter-spacing:-.035em}
.v102-login-form button{background:#ecd5c0;border-radius:10px;font-weight:700}

/* Home: artwork comes exclusively from the user's indexed, authenticated music. */
.v-demo-showcase[hidden]{display:none!important}
.v-demo-feature{display:grid;grid-template-columns:minmax(160px,34%) minmax(0,1fr);min-height:240px;overflow:hidden;background:radial-gradient(circle at 5% 100%,#563b43,#322831 45%,#1c1d21 100%);border:1px solid #67515b;border-radius:17px;box-shadow:0 20px 60px #0003}
.v-demo-feature-art{min-height:240px;display:grid;place-items:center;padding:20px;position:relative}
.v-demo-feature-art:before{content:"";position:absolute;inset:0;background:radial-gradient(circle,#e6ab842d,transparent 75%);pointer-events:none}
.v-demo-feature-art img,.v-demo-art-placeholder{position:relative;width:min(100%,260px);aspect-ratio:1;object-fit:cover;border-radius:10px;box-shadow:0 18px 48px #0907088a}
.v-demo-art-placeholder{background:linear-gradient(130deg,#7e4f54,#342a39)}
.v-demo-feature-info{padding:clamp(26px,4vw,52px) clamp(22px,4vw,54px) clamp(24px,3vw,40px) 10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0}
.v-demo-feature-info>.eyebrow{font-size:10px;color:var(--demo-gold);letter-spacing:.20em}
.v-demo-feature-info h2{font-size:clamp(27px,3.5vw,52px);letter-spacing:-.055em;line-height:1.07;margin:13px 0 10px;overflow-wrap:anywhere}
.v-demo-feature-info p{margin:0;color:#dacacf;font-size:15px;line-height:1.5}
.v-demo-feature-actions{display:flex;gap:10px;margin-top:29px;flex-wrap:wrap}
.v-demo-feature-actions button{padding:11px 17px;font-size:13px;cursor:pointer}
.v-demo-feature-actions button:first-child{background:#e6c5ae;color:#1d1317;font-weight:800;border:0}
.v-demo-feature-actions button:first-child:hover{background:#fff0da}
.v-demo-section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin:36px 0 18px}
.v-demo-section-heading .eyebrow{font-size:9px;letter-spacing:.16em;color:#d4ab93}
.v-demo-section-heading h3{margin:7px 0 0;font-size:22px;letter-spacing:-.025em}
.v-demo-section-heading button{font-size:12px;padding:9px 11px;cursor:pointer}
.v-demo-albums{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:13px}
.v-demo-albums .v102-card{padding:9px}
.v-demo-albums .v102-card h3{font-size:13px}
.v-demo-albums .v102-card .v102-actions button{font-size:10px}
.v-demo-showcase + .v102-results{margin-top:0}
@media(max-width:850px){
 .v102-shell{grid-template-columns:1fr}
 .v102-shell .side-rail{height:auto;max-height:none;overflow:visible}
 .v102-shell .rail-nav{flex-wrap:nowrap;overflow-x:auto}
 .v102-main{padding-left:17px;padding-right:17px}
 .v102-main .app-topbar{margin-left:-17px;margin-right:-17px;padding-left:17px;padding-right:17px}
 .v-demo-feature{grid-template-columns:minmax(100px,36%) minmax(0,1fr);min-height:180px}
 .v-demo-feature-art{min-height:180px;padding:12px}
 .v-demo-feature-info{padding:19px 13px 18px 0}
 .v-demo-feature-info h2{font-size:clamp(22px,4vw,33px)}
 .v-demo-feature-actions{margin-top:15px;gap:5px}
 .v-demo-feature-actions button{font-size:11px;padding:9px 10px}
 .v-demo-albums{grid-template-columns:repeat(auto-fill,minmax(135px,1fr))}
}
@media(max-width:480px){
 .v102-main .topbar-inner{flex-wrap:wrap}
 .v102-main .topbar-search{order:3;flex-basis:100%;max-width:100%}
 .v-demo-feature{grid-template-columns:1fr}
 .v-demo-feature-art{min-height:150px;padding:15px 55px 0}
 .v-demo-feature-art img,.v-demo-art-placeholder{width:160px}
 .v-demo-feature-info{padding:15px 24px 26px}
 .v-demo-albums{grid-template-columns:repeat(2,minmax(0,1fr))}
 .v-demo-section-heading h3{font-size:18px}
}
@media(prefers-reduced-motion:reduce){.v102-card,.v102-shell .nav,.v102-toolbar button,.v102-results button{transition:none}}
/* Prevent inherited legacy layout rules from stretching the demo header/dock. */
.v102-main .topbar-inner{display:grid!important;grid-template-columns:minmax(120px,1fr) minmax(230px,420px) auto;justify-content:initial;gap:22px;align-items:center}
.v102-main #logoutBtn{width:auto;min-width:82px;min-height:36px;justify-self:end;font-size:12px;padding:8px 13px;background:#ffffff08}
.v102-main #logoutBtn:hover{background:#44333c}
.v102-main .topbar-search{width:100%;max-width:none}
.v102-player{grid-template-columns:minmax(180px,1fr) minmax(320px,2fr) minmax(100px,.65fr) 54px;min-height:86px;gap:13px;padding:13px 25px 19px}
.v102-player .v103-eq-toggle{width:54px;padding:7px}
.v102-player #ownerStatus{position:absolute;right:25px;bottom:3px;grid-column:auto;font-size:9px}
.v102-player .v102-volume{grid-column:3}
.v102-player .v102-controls{grid-column:2}
.v102-player .v102-now{grid-column:1}
@media(max-width:850px){
 .v102-main .topbar-inner{grid-template-columns:minmax(80px,1fr) minmax(130px,260px) auto;gap:8px}
 .v102-player{grid-template-columns:minmax(0,1fr) 50px;gap:7px;padding:8px 15px 16px}
 .v102-player .v102-now{grid-column:1}
 .v102-player .v102-controls{grid-column:1 / -1;grid-row:2}
 .v102-player .v103-eq-toggle{grid-column:2;grid-row:1}
 .v102-player .v102-volume,.v102-player #ownerStatus{display:none}
}
@media(max-width:480px){.v102-main .topbar-inner{grid-template-columns:minmax(0,1fr) auto}.v102-main .topbar-search{grid-column:1/-1;grid-row:2}}

/* Legacy Pro queue migrated onto Native shared playback (single server). */
.v102-queue-panel[hidden]{display:none!important}
.v102-queue-panel{margin:12px 0 24px;background:#1b1b20;border:1px solid #51424a;border-radius:14px;padding:24px;max-width:1050px}
.v102-queue-header{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.v102-queue-header h3{font-size:24px;margin:7px 0}.v102-queue-header p{font-size:12px;color:#bdadb1;margin:0}
.v102-queue-header button,.v102-queue-row button{padding:9px 15px;border-radius:8px;border:1px solid #6a5058;background:#343038;color:#fff;cursor:pointer}
.v102-queue-header button:focus-visible,.v102-queue-row button:focus-visible{outline:2px solid #dfb98b;outline-offset:2px}
.v102-queue-list{padding:0;display:grid;gap:5px;list-style:none;margin:18px 0 0}
.v102-queue-row{display:flex;align-items:center;gap:14px;padding:12px;border-bottom:1px solid #ffffff14;min-width:0}
.v102-queue-row.is-current{background:#57404445;border-radius:8px}
.v102-queue-position{min-width:27px;color:#c9ada5;text-align:center;font-size:12px;font-variant-numeric:tabular-nums}
.v102-queue-track{flex:1;min-width:0;display:grid;gap:3px}
.v102-queue-track strong,.v102-queue-track small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v102-queue-track strong{font-size:13px}.v102-queue-track small,.v102-queue-current{font-size:11px;color:#b8abb1}
@media(max-width:600px){.v102-queue-panel{padding:14px}.v102-queue-row{padding:9px 3px;gap:8px}}

/* V129: Pro visual continuity on the single Plex-free server. */
.v129-mark{display:inline-grid;place-items:center;margin-right:8px;width:34px;height:34px;
 background:#e26c64;color:#111;font-size:24px;font-weight:900;letter-spacing:-.1em;border-radius:6px}
.v129-shelf-empty{grid-column:1/-1;color:#b9b2b6;padding:20px;border:1px dashed #514348;
 border-radius:10px;margin:0;background:#211d20}
.v-demo-showcase #homeHistoryGrid,.v-demo-showcase #homeFavoritesGrid{margin:12px 0 25px}

.v129-search-heading{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;
 gap:12px;border-top:1px solid #484247;padding-top:19px;margin-top:8px}
.v129-search-heading h2{font-size:20px;color:#f8f3ee;margin:0}
.v129-search-heading button{background:#342b2c;color:#f9ddd2;border:1px solid #6b4947;
 border-radius:8px;padding:8px 12px;cursor:pointer}

/* V130 — clear, keyboard-accessible playlist editing controls. */
.v130-playlist-row { display:flex; flex-direction:column; gap:0.5rem; min-width:0; }
.v130-playlist-row > .v102-actions { display:flex; align-items:center; gap:0.45rem; flex-wrap:wrap; padding-bottom:0.6rem; }
.v130-playlist-row > .v102-actions button:disabled { opacity:0.4; cursor:not-allowed; }

/* V131: editing an occurrence in the single shared playback queue. */
.v102-queue-header-actions,.v102-queue-actions{display:flex;align-items:center;gap:0.35rem;flex-wrap:wrap}
.v102-queue-actions{margin-left:auto}
.v102-queue-actions button{padding:0.35rem 0.55rem;white-space:nowrap}
@media (max-width:680px){.v102-queue-actions{width:100%;margin-left:0}.v102-queue-row{flex-wrap:wrap}}

/* V133: album property sort and full album display modes. */
.v133-album-controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-left:auto}
.v133-album-controls[hidden],.v133-album-detail-toolbar[hidden]{display:none!important}
.v133-album-controls label,.v133-album-detail-toolbar label{display:flex;align-items:center;gap:8px;font-size:12px;color:#bbb5b8}
.v133-album-controls select,.v133-album-detail-toolbar select{color:#f5f1ee;background:#221f24;border:1px solid #62535a;padding:9px 10px;border-radius:5px;max-width:235px}
.v133-album-detail-toolbar{display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:19px 0 13px;border-bottom:1px solid #393439}
.v133-album-detail-toolbar h3{font-size:24px;letter-spacing:-.035em;margin:3px 0}
.v133-album-detail-toolbar p{font-size:12px;color:#b3adb1;margin:0}
.v133-album-detail-toolbar button{border:1px solid #88595e;background:#60383d;color:white;padding:9px 13px;border-radius:5px;cursor:pointer}
.v102-results.v133-album-detail-list,.v102-results.v133-album-library-list{display:flex;flex-direction:column;gap:6px}
.v102-results.v133-album-detail-list .v133-album-track-row{display:grid;grid-template-columns:34px 52px minmax(150px,1fr) minmax(180px,auto);grid-template-rows:auto auto;gap:2px 14px;align-items:center;padding:9px 13px;overflow:visible;border-radius:6px;min-height:76px}
.v133-album-track-row .v133-track-index{grid-column:1;grid-row:1 / 3;font-size:13px;color:#afa4aa;font-variant-numeric:tabular-nums;text-align:center}
.v102-results.v133-album-detail-list .v133-album-track-row img,.v102-results.v133-album-detail-list .v133-album-track-row .v102-cover{grid-column:2;grid-row:1 / 3;width:48px;height:48px;aspect-ratio:1}
.v102-results.v133-album-detail-list .v133-album-track-row h3{grid-column:3;grid-row:1;margin:0;font-size:14px}
.v102-results.v133-album-detail-list .v133-album-track-row p{grid-column:3;grid-row:2;font-size:12px}
.v102-results.v133-album-detail-list .v133-album-track-row .v102-actions{grid-column:4;grid-row:1 / 3;margin:0;align-items:center;padding:0;justify-content:flex-end}
.v102-results.v133-album-detail-compact .v133-album-track-row{grid-template-columns:34px minmax(150px,1fr) minmax(150px,auto);min-height:52px;padding:6px 12px}
.v102-results.v133-album-detail-compact .v133-album-track-row img,.v102-results.v133-album-detail-compact .v133-album-track-row .v102-cover{display:none}
.v102-results.v133-album-detail-compact .v133-album-track-row h3,.v102-results.v133-album-detail-compact .v133-album-track-row p{grid-column:2}
.v102-results.v133-album-detail-compact .v133-album-track-row .v102-actions{grid-column:3}
.v102-results.v133-album-library-list .v133-album-list-card{display:grid;grid-template-columns:68px minmax(150px,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:3px 16px;padding:9px;min-height:89px;border-radius:6px}
.v133-album-list-card img,.v133-album-list-card .v102-cover{grid-column:1;grid-row:1/3;width:68px;height:68px}
.v133-album-list-card h3{grid-column:2;grid-row:1;margin:0}
.v133-album-list-card p{grid-column:2;grid-row:2}
.v133-album-list-card .v102-actions{grid-column:3;grid-row:1/3;margin:0;padding:0}
@media(max-width:950px){.v102-results.v133-album-detail-list .v133-album-track-row{grid-template-columns:24px 44px minmax(0,1fr)}.v102-results.v133-album-detail-list .v133-album-track-row .v102-actions{grid-column:2 / 4;grid-row:3;justify-content:flex-start;padding-top:7px}.v102-results.v133-album-detail-compact .v133-album-track-row{grid-template-columns:24px minmax(0,1fr)}.v102-results.v133-album-detail-compact .v133-album-track-row .v102-actions{grid-column:2;grid-row:3}.v133-album-list-card .v102-actions{grid-column:2 / 4;grid-row:3}}

.v133-row-more{position:relative;font-size:11px;color:#f0e9eb} .v133-row-more summary{border:1px solid #55434c;border-radius:5px;padding:7px 9px;cursor:pointer;user-select:none;list-style:none} .v133-row-more summary::-webkit-details-marker{display:none} .v133-row-more[open]{z-index:5} .v133-row-more[open] button{display:block;margin:3px 0;white-space:nowrap;width:100%;text-align:left}.v133-row-more:not([open]) > button{display:none}.v133-row-more[open]{background:#201c20;border-radius:5px;padding:3px}.v102-results.v133-album-detail-compact .v133-album-track-row p{display:none}.v133-row-more summary:focus-visible{outline:2px solid #e5b49b;outline-offset:2px}

/* V134: full metadata radio studio; no external stream, no legacy gateway. */
.v134-radio-studio{display:grid;gap:20px;background:#201d21;border:1px solid #50454c;border-radius:9px;padding:23px;margin:12px 0 25px;max-width:1160px}
.v134-radio-studio[hidden]{display:none!important}
.v134-radio-head h3{font-size:24px;margin:8px 0}.v134-radio-head p{font-size:12px;color:#b4aeb4;line-height:1.5;margin:0}
.v134-radio-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:13px}
.v134-radio-grid label,.v134-radio-saved label{font-size:11px;color:#c0b8bd;display:grid;gap:6px;min-width:0}
.v134-radio-grid input,.v134-radio-saved input,.v134-radio-saved select{width:100%;min-width:0;background:#17161a;border:1px solid #62575e;border-radius:5px;padding:10px 11px;color:#f4eded}
.v134-radio-switches{display:flex;gap:20px;flex-wrap:wrap;color:#d3c7cd;font-size:12px}
.v134-radio-switches label{display:flex;align-items:center;gap:8px}
.v134-radio-actions,.v134-radio-saved{display:flex;align-items:end;gap:8px;flex-wrap:wrap}
.v134-radio-saved{border-top:1px solid #494148;padding-top:16px}.v134-radio-saved label{min-width:165px;flex:1}
.v134-radio-actions button,.v134-radio-saved button,.v134-radio-meta button{padding:10px 13px;border:1px solid #67585d;background:#32292d;color:#f6eeed;border-radius:5px;cursor:pointer}
.v134-radio-actions #startRadio{background:#a45354;border-color:#c67673;color:#fff}
.v134-radio-actions button:focus-visible,.v134-radio-saved button:focus-visible,.v134-radio-meta button:focus-visible{outline:2px solid #eed3be;outline-offset:2px}
.v134-radio-meta{display:flex;gap:15px;align-items:center;flex-wrap:wrap;color:#b9acb4;font-size:12px}
.v134-radio-queue{border-top:1px solid #494148;padding-top:14px}.v134-radio-queue h4{margin:0 0 8px;font-size:15px}.v134-radio-queue p,.v134-radio-queue li{font-size:12px;color:#c2b8bf}
.v134-radio-queue ol{margin:6px 0;padding-left:22px;display:grid;gap:5px;max-height:230px;overflow:auto}
@media(max-width:920px){.v134-radio-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}}
@media(max-width:560px){.v134-radio-studio{padding:14px}.v134-radio-grid{grid-template-columns:1fr}.v134-radio-actions button{flex:1}}

/* V135 — fast playlist picker from Album / List (also Compact and Grid) */
.v135-album-playlist-actions{display:flex;align-items:center;flex-wrap:wrap;gap:9px}
.v135-album-playlist-actions button{padding:8px 12px}
.v135-select-page{display:flex;gap:7px;align-items:center;font-size:12px;white-space:nowrap}
.v135-track-select{display:inline-flex;align-self:center;margin-right:4px}
.v135-track-select input{width:16px;height:16px;accent-color:#e2ba94;cursor:pointer}
.v135-playlist-picker{position:fixed;inset:0;margin:auto;max-width:min(520px,calc(100vw - 24px));width:100%;max-height:calc(100dvh - 32px);overflow-y:auto;background:#1b1a1d;color:#f2efed;border:1px solid #5c5057;border-radius:14px;padding:23px;z-index:60;box-shadow:0 26px 85px #000b}
.v135-playlist-picker::backdrop{background:#000b;backdrop-filter:blur(5px)}
.v135-playlist-picker[open]{display:block}
.v135-picker-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.v135-picker-heading h2{margin:4px 0 6px;font-size:22px}
.v135-picker-heading p{margin:0 0 14px;color:#bcb6b7;font-size:13px}
.v135-playlist-picker button,.v135-playlist-picker input,.v135-playlist-picker select{font:inherit}
.v135-playlist-picker button{background:#343036;color:#f9f5f3;border:1px solid #5f525a;border-radius:8px;padding:9px 14px;cursor:pointer}
.v135-playlist-picker button:disabled{opacity:.5;cursor:wait}
.v135-playlist-picker label{display:block;color:#dad3d4;font-size:12px;margin:11px 0 7px}
.v135-picker-options{display:flex;gap:18px;border-bottom:1px solid #ffffff22;padding-bottom:11px}
.v135-picker-options label{display:flex;align-items:center;gap:8px;cursor:pointer}
.v135-playlist-picker input[type=search],.v135-playlist-picker input:not([type]),.v135-playlist-picker select{box-sizing:border-box;width:100%;border:1px solid #5b5158;border-radius:8px;background:#252329;color:#f9f5f3;padding:10px}
.v135-playlist-picker select{min-height:175px;max-height:220px}
.v135-playlist-picker select option{padding:7px}
.v135-picker-buttons{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}
.v135-picker-buttons #playlistPickerSubmit{background:#6a454a;border-color:#aa7076}
.v135-playlist-picker :focus-visible{outline:2px solid #e2ba94;outline-offset:3px}
#playlistPickerStatus{font-size:12px;color:#e2ba94;min-height:18px}
@media(max-width:680px){.v135-playlist-picker{padding:16px}.v135-album-playlist-actions{width:100%}}

/* V136 - Radio tag cloud, compact black-and-white styling, keyboard-accessible. */
.v136-genre-panel{border-top:1px solid #514950;border-bottom:1px solid #514950;padding:17px 0 20px;display:grid;gap:12px;min-width:0}
.v136-genre-header{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.v136-genre-header h4{font-size:18px;font-weight:600;margin:4px 0}.v136-genre-header p{color:#c2bac0;font-size:12px;margin:0}
.v136-genre-header button,.v136-genre-manual button{background:transparent;border:1px solid #72666b;border-radius:5px;color:#eae5e5;padding:9px 12px;cursor:pointer}
.v136-genre-tools{display:flex;align-items:end;gap:15px;flex-wrap:wrap}.v136-genre-tools>label,.v136-genre-manual label{display:grid;gap:6px;min-width:180px;flex:1;color:#d5cfd2;font-size:11px}
.v136-genre-tools input[type=search],.v136-genre-tools select,.v136-genre-manual input{background:#17161a;color:#faf7f8;border:1px solid #655d60;border-radius:5px;padding:9px;min-height:38px;width:100%}
.v136-genre-intent{border:1px solid #60555c;display:flex;gap:12px;align-items:center;border-radius:5px;padding:6px 12px;font-size:12px}
.v136-genre-intent legend{color:#bcb5ba;font-size:11px}.v136-genre-intent label{display:flex;gap:5px;align-items:center;cursor:pointer}
.v136-genre-manual{display:flex;gap:10px;align-items:end;max-width:470px}
.v136-genre-cloud,.v136-genre-selected{display:flex;flex-wrap:wrap;align-items:center;gap:7px;max-height:270px;overflow-y:auto}
.v136-genre-selected{min-height:35px;max-height:120px;color:#bbb0b6;font-size:12px}
.v136-genre-chip{font:inherit;font-size:12px;color:#e8e2e5;background:#2c292e;border:1px solid #565057;border-radius:20px;padding:8px 11px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:background .12s}
.v136-genre-chip small{font-size:10px;color:#b3aaaf;font-variant-numeric:tabular-nums}
.v136-genre-chip.is-included{background:#e9e2dd;border-color:#fff;color:#151417}.v136-genre-chip.is-included small{color:#514a4d}
.v136-genre-chip.is-excluded{border-style:dashed;border-color:#cdb1ad;color:#f4ccc5;text-decoration:line-through}
.v136-genre-chip:focus-visible,.v136-genre-selected button:focus-visible,.v136-genre-header button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.v136-genre-selected button{font-size:12px;border:1px solid #e5ddd8;border-radius:15px;background:#383338;color:#f7f1ec;cursor:pointer;padding:6px 10px}
.v136-genre-selected .v136-selected-exclude{border-style:dashed;color:#f2c4be}
.v136-genre-panel>small{font-size:11px;color:#b5a9b2}
@media(max-width:560px){.v136-genre-tools{display:grid;grid-template-columns:1fr}.v136-genre-manual{flex-wrap:wrap}.v136-genre-header button{margin-top:5px}}

.v136-legacy-filter{font-size:11px;color:#c6bfc3}
.v136-legacy-filter summary{cursor:pointer;padding:4px 0}
.v136-legacy-filter label{display:grid;gap:5px;margin-top:8px;max-width:340px}
.v136-legacy-filter input{padding:10px;background:#17161a;border:1px solid #655d60;border-radius:5px;color:#fff}

.v136-genre-chip.is-major{font-size:15px;font-weight:600;padding:9px 14px}
.v136-genre-chip.is-medium{font-size:13px;font-weight:500}

/* Last.fm – scoped to Settings; responsive and keyboard accessible. */
.v-lastfm-panel{margin:22px 0 0;padding:20px;background:#18181b;border:1px solid #37373c;border-radius:10px;display:grid;gap:12px}
.v-lastfm-panel h3{margin:0;font-size:18px}.v-lastfm-panel p,.v-lastfm-panel small{font-size:13px;color:#bdbdc5;line-height:1.5;margin:0;overflow-wrap:anywhere}
.v-lastfm-panel form{display:grid;gap:10px;max-width:500px}.v-lastfm-panel label{display:grid;gap:5px;font-size:13px;color:#eee}
.v-lastfm-panel input{width:100%;min-width:0;padding:11px;background:#222225;border:1px solid #55555a;border-radius:6px;color:#fff}
.v-lastfm-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.v-lastfm-panel button,.v-lastfm-panel a{background:#29292d;color:#fff;border:1px solid #69696f;border-radius:6px;padding:10px 14px;cursor:pointer;text-decoration:none;font-size:13px}
.v-lastfm-panel :focus-visible{outline:2px solid #e7aaa5;outline-offset:3px}.v-lastfm-panel [hidden]{display:none!important}
@media(max-width:550px){.v-lastfm-panel{padding:14px}.v-lastfm-actions button{flex:1 1 45%}}
