@font-face{font-family:'Public Sans';src:url('./assets/public-sans.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{color-scheme:dark;--foreground:#f3f4f4;--muted:#babfc2;--faint:#929a9f;--surface:rgba(110,113,114,.13);--border:rgba(255,255,255,.12);--field:rgba(14,20,24,.27);--primary:#addcff;--primary-bg:rgba(114,189,244,.16);--hover:rgba(255,255,255,.08);--rim:rgba(255,255,255,.1);--glass-blur:3px;--shadow:rgba(0,0,0,.06);--scene-overlay:rgba(15,20,21,.76);--radius:16px;font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif}
:root[data-theme='light']{color-scheme:light;--foreground:#262b30;--muted:#58616a;--faint:#737d87;--surface:rgba(255,255,255,.58);--border:rgba(40,60,80,.12);--field:rgba(255,255,255,.5);--primary:#246590;--primary-bg:rgba(68,155,214,.13);--hover:rgba(20,40,60,.06);--rim:rgba(255,255,255,.6);--shadow:rgba(40,50,60,.04);--scene-overlay:rgba(238,243,245,.88)}
*{box-sizing:border-box}body{margin:0;min-width:320px;color:var(--foreground);background:#1b2223}body::before{content:'';position:fixed;inset:0;z-index:-1;background:linear-gradient(var(--scene-overlay),var(--scene-overlay)),url('/api/site-background') center/cover no-repeat;pointer-events:none}button,input,textarea,select,a{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button{border:0;background:none}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:4px}h1,h2,h3,h4,p{margin:0}h2{font-size:15px;font-weight:550}h3{font-size:16px;font-weight:500}input,select,textarea{width:100%;min-width:0;border:1px solid transparent;color:var(--foreground);background:var(--field);border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.6;transition:background .15s,border-color .15s}input[readonly]{color:var(--faint)}textarea{resize:vertical;min-height:120px}select{min-height:46px}input:focus,textarea:focus,select:focus{border-color:color-mix(in srgb,var(--primary) 35%,transparent)}input::placeholder,textarea::placeholder{color:var(--faint)}input[type='checkbox']{width:15px;height:15px;accent-color:var(--primary);margin:0}input[type='range']{padding:0;accent-color:var(--primary)}
.studio-shell{min-height:100dvh}.rail{position:fixed;inset:0 auto 0 0;width:80px;z-index:20;display:flex;align-items:center;flex-direction:column;padding:30px 8px 110px;gap:30px;background:transparent}.brand{height:44px;width:44px;display:grid;place-items:center;color:#b8e0c4}.brand svg{width:25px;height:25px}.rail nav{display:flex;flex-direction:column;gap:12px}.rail-item{position:relative;display:grid;place-items:center;width:52px;height:44px;border-radius:12px;color:var(--muted)}.rail-item span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.rail-item.selected{color:var(--foreground)}.rail-item.selected::before{content:'';position:absolute;left:2px;top:20px;height:4px;width:4px;background:currentColor;border-radius:50%}.rail-item:hover{background:var(--hover)}.theme-toggle{margin-top:auto}main{margin-left:80px;padding:32px 40px 125px;max-width:1800px}.page-header{min-height:150px;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.page-header h1{font-size:clamp(48px,6vw,80px);font-weight:100;letter-spacing:-2px;line-height:1.2}.page-header p{color:var(--muted);font-size:13px;margin-top:14px}.header-actions{display:flex;align-items:center;gap:24px;font-size:12px}.connection-status{display:flex;align-items:center;gap:8px;white-space:nowrap;color:var(--muted)}.dot{width:5px;height:5px;display:inline-block;background:var(--faint);border-radius:50%}.dot.connected{background:#74c8a3}.quiet-link{color:var(--muted);white-space:nowrap}.quiet-link:hover{color:var(--foreground)}.glass{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);corner-shape:superellipse(1.585);box-shadow:inset 0 1px 0 var(--rim),0 3px 12px var(--shadow);backdrop-filter:blur(var(--glass-blur)) saturate(1.15);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.15)}.workspace{display:grid;grid-template-columns:minmax(320px,430px) minmax(0,1fr);gap:28px;align-items:start}.workspace.library-only{grid-template-columns:minmax(0,1fr)}.section-heading{display:flex;align-items:center;gap:10px}.section-heading>svg{width:18px;height:18px;color:var(--primary)}.section-heading .count{font-size:12px;font-weight:400;color:var(--faint);margin-left:1px}.composer{padding:24px}.composer>.section-heading{margin-bottom:24px}.mode-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:24px}.segmented{display:flex;padding:3px;gap:2px;border-radius:10px;background:var(--field)}.segmented button{border-radius:7px;font-size:12px;padding:7px 11px;color:var(--muted);white-space:nowrap}.segmented .chosen{color:var(--foreground);background:var(--hover)}.check-label{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);white-space:nowrap}.form-field{display:flex;flex-direction:column;gap:9px;min-width:0;margin-bottom:22px}.form-field label{font-size:13px;font-weight:500;display:flex;align-items:center;gap:9px}.optional{font-weight:400;color:var(--faint);font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.full{grid-column:1/-1}.lyric-tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:10px;padding:4px 8px;border-radius:6px;background:var(--hover);color:var(--muted)}.text-button{font-size:12px;color:var(--primary);padding:4px 0;line-height:1.7}.align-start{align-self:flex-start}.primary,.secondary{min-height:40px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 18px;font-size:13px;font-weight:500}.primary{color:var(--primary);background:var(--primary-bg);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}.primary:not(:disabled):hover{background:color-mix(in srgb,var(--primary-bg) 75%,var(--primary) 15%)}.secondary{background:var(--hover);color:var(--foreground)}.secondary:hover{background:var(--field)}.create-button{width:100%;min-height:45px}.compose-submit{border-top:1px solid var(--border);margin-top:24px;padding-top:20px;display:flex;flex-direction:column;align-items:center;gap:14px}.compose-submit p{font-size:11px;color:var(--faint);line-height:1.7}.templates{border-top:1px solid var(--border);padding-top:17px;color:var(--muted);font-size:12px}.templates summary{cursor:pointer}.template-list{margin-top:12px}.template-row{display:flex;align-items:center;justify-content:space-between}.template-save{display:flex;gap:8px;margin-top:12px}.template-save input{font-size:11px;padding:9px}.template-save .secondary{padding:6px 12px}.library-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:44px;margin-bottom:18px}.search-field{max-width:260px;display:flex;align-items:center;gap:8px;color:var(--faint)}.search-field input{background:transparent;font-size:12px;padding:8px 0;border-radius:0}.search-field svg{width:15px;flex-shrink:0}.empty-state{min-height:400px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px;text-align:center}.empty-state>svg{height:36px;width:36px;color:var(--faint);margin-bottom:22px;stroke-width:1}.empty-state h3{font-size:17px;font-weight:400}.empty-state p{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.8}.empty-state>span{font-size:11px;color:var(--faint);margin-top:45px}.track-list{display:flex;flex-direction:column;gap:14px}.track-row{display:flex;align-items:center;gap:16px;padding:18px;min-width:0}.track-row.active{border-color:color-mix(in srgb,var(--primary) 40%,transparent)}.track-art{width:60px;height:60px;border-radius:12px;flex-shrink:0;display:grid;place-items:center;color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}.track-art svg{width:24px;height:24px}.track-info{min-width:0;flex:1}.track-title{font-size:14px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:left;padding:0}.track-info>p{font-size:12px;color:var(--muted);margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-meta{display:flex;gap:12px;font-size:10px;color:var(--faint);margin-top:11px;flex-wrap:wrap}.track-info>p.track-error{color:#efb4b1;white-space:normal;line-height:1.6;overflow-wrap:anywhere}.track-actions{display:flex;gap:3px;align-items:center}.icon-button{height:32px;min-width:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}.icon-button svg{height:16px;width:16px}.icon-button:hover{background:var(--hover);color:var(--foreground)}.icon-button.danger:hover{color:#ffb5b0}.settings-layout{display:grid;grid-template-columns:minmax(0,700px) minmax(200px,320px);gap:50px;align-items:start}.settings-card{padding:28px}.section-description{font-size:12px;line-height:1.8;color:var(--muted);margin:12px 0 28px}.form-actions{display:flex;gap:10px;border-top:1px solid var(--border);padding-top:22px}.settings-help{padding-top:24px;font-size:12px;line-height:1.9;color:var(--muted)}.settings-help h3{font-size:13px;font-weight:500;color:var(--foreground);margin-bottom:10px}.settings-help hr{border:0;border-top:1px solid var(--border);margin:24px 0}.notice{font-size:12px;color:var(--primary);padding:12px 16px;margin-bottom:18px;background:var(--primary-bg);border-radius:10px;display:flex;justify-content:space-between;gap:12px;align-items:center;line-height:1.8;overflow-wrap:anywhere}.notice.error{color:#ffcfca;background:rgba(110,30,30,.24)}:root[data-theme='light'] .notice.error{color:#9f312c;background:rgba(180,40,30,.08)}.notice button{padding:0;display:flex}.loading-state{padding:70px 30px;text-align:center;color:var(--muted);font-size:13px}.page-note{font-size:10px;color:var(--faint);display:flex;gap:16px;justify-content:space-between;margin-top:28px;padding:0 2px}.player{position:fixed;bottom:14px;left:96px;right:20px;z-index:25;min-height:76px;padding:12px 18px;display:flex;align-items:center;gap:24px;background:color-mix(in srgb,var(--surface) 80%,var(--scene-overlay) 50%);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.player-track{display:flex;align-items:center;gap:12px;width:260px;min-width:0;flex-shrink:0}.player-art{height:42px;width:42px;display:grid;place-items:center;border-radius:10px;background:var(--hover);color:var(--muted);flex-shrink:0}.player-track>div:last-child{overflow:hidden}.player-track strong{font-weight:500;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.player-track span{display:block;color:var(--faint);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:5px}.player audio{flex:1;min-width:200px;height:38px;opacity:.85}.player-placeholder{flex:1;display:flex;align-items:center;gap:16px;color:var(--faint);font-size:10px}.player-placeholder>i{height:2px;flex:1;background:var(--border)}.play-placeholder{height:35px;width:35px;display:grid;place-items:center;border-radius:50%;background:var(--hover)}.play-placeholder svg{width:15px}.player-actions{display:flex;align-items:center;gap:6px}.detail-backdrop{position:fixed;inset:0;z-index:40;background:rgba(0,0,0,.3);display:flex;justify-content:flex-end;padding:16px}.detail{width:380px;padding:24px;overflow:auto;background:color-mix(in srgb,var(--surface) 60%,var(--scene-overlay) 80%);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px)}.detail>.section-heading{justify-content:space-between}.detail-art{height:190px;margin:24px 0;border-radius:12px;background:var(--hover);display:grid;place-items:center;color:var(--primary)}.detail-art svg{width:54px;height:54px;stroke-width:1}.detail h3{font-size:23px;font-weight:400;overflow-wrap:anywhere}.detail h4{font-size:12px;font-weight:500;margin:25px 0 10px}.detail p{font-size:12px;line-height:1.8}.detail pre{font:12px/1.9 inherit;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted)}.detail dl{font-size:11px;line-height:1.8;display:grid;grid-template-columns:auto 1fr;gap:8px 15px;margin:25px 0}.detail dd{margin:0;text-align:right;overflow-wrap:anywhere;color:var(--muted)}.muted{color:var(--muted)}.skip-link{position:fixed;top:-100px;left:100px;z-index:60;background:var(--primary-bg);padding:10px}.skip-link:focus{top:10px}
@media(min-width:1500px){.workspace{grid-template-columns:460px minmax(0,1fr);gap:32px}.composer{padding:28px}.track-actions{gap:8px}}
@media(max-width:1100px){main{padding:26px 24px 125px}.workspace{grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:20px}.header-actions{gap:12px}.quiet-link{display:none}.library-heading{flex-direction:column;align-items:stretch;gap:8px}.search-field{max-width:none}.track-row{padding:14px;gap:10px;flex-wrap:wrap}.track-art{width:48px;height:48px}.track-actions{margin-left:auto}.settings-layout{grid-template-columns:minmax(0,700px);gap:15px}.settings-help{max-width:700px;padding:10px 8px}.player-track{width:190px}}
@media(max-width:800px){.workspace{grid-template-columns:minmax(0,1fr)}.composer{padding:24px}.library-heading{flex-direction:row;align-items:center;flex-wrap:wrap;margin-top:8px}.search-field{max-width:240px}.empty-state{min-height:280px}.player-track{width:155px}.player{gap:12px}.player-actions{display:none}.page-header{min-height:120px}.header-actions .connection-status{font-size:10px}}
@media(max-width:540px){.rail{width:56px;padding:20px 3px 115px;gap:28px}.rail-item{width:44px;height:44px}.rail nav{gap:9px}.brand{width:40px}.brand svg{height:23px}main{margin-left:56px;padding:24px 16px 155px}.page-header{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:24px;min-height:0}.page-header h1{font-size:48px;letter-spacing:-1.8px}.page-header p{font-size:11px;margin-top:10px}.header-actions{align-self:flex-start}.composer,.settings-card{padding:18px}.workspace{gap:24px}.mode-row{flex-wrap:wrap;gap:13px}.segmented button{font-size:11px;padding:7px 9px}.form-grid{grid-template-columns:minmax(0,1fr)}.form-field.full{grid-column:auto}.section-heading h2{font-size:14px}.library-heading{gap:12px;align-items:flex-start}.search-field{max-width:none;width:100%}.empty-state{min-height:260px;padding:25px 12px}.empty-state h3{font-size:16px}.empty-state p{font-size:11px}.track-row{padding:14px;align-items:flex-start;gap:10px}.track-info{min-width:130px}.track-title{font-size:13px}.track-meta{gap:8px}.track-actions{margin-top:3px}.settings-layout{gap:20px}.settings-card .form-grid{gap:0}.form-actions{gap:8px;flex-wrap:wrap}.form-field label{font-size:12px}.settings-help{padding:0 2px}.player{left:64px;right:10px;bottom:10px;min-height:112px;padding:10px 12px;display:grid;grid-template-columns:minmax(0,1fr);gap:5px}.player-track{width:100%;gap:9px}.player-track strong{font-size:11px}.player-art{height:29px;width:29px}.player-art svg{width:16px}.player-track span{font-size:9px;margin-top:3px}.player audio{width:100%;min-width:0;height:32px}.player-placeholder{width:100%;gap:12px}.play-placeholder{width:28px;height:28px}.page-note{font-size:9px;flex-direction:column;gap:7px}.detail-backdrop{padding:10px}.detail{width:100%;max-width:380px;padding:20px}.notice{padding:12px;font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
@supports not ((backdrop-filter:blur(3px)) or (-webkit-backdrop-filter:blur(3px))){.glass{background:#303639}:root[data-theme='light'] .glass{background:#f6f7f8}}

dialog.detail{position:fixed;inset:16px 16px 16px auto;margin:0;height:calc(100dvh - 32px);max-height:none;color:var(--foreground)}dialog.detail::backdrop{background:rgba(0,0,0,.4)}@media(max-width:540px){dialog.detail{inset:10px;max-width:none;width:calc(100vw - 20px);height:calc(100dvh - 20px)}}

svg{width:20px;height:20px;flex-shrink:0}.brand img{display:block;width:20px;height:20px;object-fit:contain;border-radius:6px}
/* Selected controls stay flat; focus-visible outlines remain keyboard-only. */
.rail-item.selected,.rail-item[aria-current='page'],.segmented .chosen,.segmented [aria-pressed='true'],.track-row.active{box-shadow:none!important;filter:none}
/* The theme switch is anchored to the bottom of the fixed navigation rail. */
.rail{padding-bottom:20px}.theme-toggle{margin-top:auto}@media(max-width:540px){.rail{padding-bottom:14px}}
/* Keep the storage note centered below the player, independent of page length. */
.page-note{position:fixed;left:0;right:0;bottom:10px;z-index:26;display:flex;justify-content:center;align-items:center;text-align:center;margin:0;padding:0;pointer-events:none}.player{bottom:42px}main{padding-bottom:155px}@media(max-width:540px){.page-note{bottom:8px;flex-direction:row}.player{bottom:40px}main{padding-bottom:185px}}
/* Shared Rust combobox: the trigger owns its chevron; the popup uses the browser top layer. */
.select-control{position:relative;min-width:0}.select-trigger{width:100%;min-width:0;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid transparent;border-radius:12px;background:var(--field);color:var(--foreground);font-size:13px;line-height:20px;padding:12px 14px;text-align:left;box-shadow:none}.select-trigger>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-chevron{width:16px;height:20px;display:flex;align-items:center;justify-content:center;flex:0 0 16px;color:var(--muted)}.select-chevron svg{width:16px;height:16px;display:block}.select-trigger[aria-expanded='true'] .select-chevron{transform:rotate(180deg)}.select-trigger:hover{border-color:var(--border)}.select-popup[popover]{display:none;position:fixed;inset:auto;margin:0;padding:5px;overflow:hidden;border:1px solid var(--border);border-radius:14px;color:var(--foreground);background:rgba(34,36,38,.78);box-shadow:0 8px 24px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.06);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15);font:12px/1.6 'Public Sans',-apple-system,'PingFang SC',sans-serif;outline:none}.select-popup[popover]:popover-open{display:flex;flex-direction:column}.select-search{display:flex;align-items:center;gap:9px;flex-shrink:0;padding:3px 9px 7px;border-bottom:1px solid var(--border);color:var(--muted);margin-bottom:4px}.select-search svg{width:15px;height:15px}.select-search input{font-size:12px;line-height:20px;background:transparent;border:0;border-radius:0;padding:6px 0;outline:none}.select-options{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.select-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:37px;padding:8px 10px;border-radius:9px;cursor:pointer;box-shadow:none!important;user-select:none}.select-option>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-option>svg{width:14px;height:14px;color:var(--muted)}.select-option[aria-selected='true']{background:var(--hover)}.select-option:hover,.select-option[data-active='true']{background:var(--hover)}.select-no-results{padding:15px 10px;font-size:12px;color:var(--faint);text-align:center}:root[data-theme='light'] .select-popup[popover]{background:rgba(250,250,249,.88);box-shadow:0 8px 24px rgba(25,35,45,.12),inset 0 1px 0 rgba(255,255,255,.7)}
/* Search has a single pill-shaped input; focus never adds an outer rectangular frame. */
.search-field{border:0;outline:none;box-shadow:none;background:transparent}.search-field input{border-radius:999px;background:var(--field);padding:9px 14px;border:1px solid var(--border);outline:none;outline-offset:0;box-shadow:none}.search-field input:focus,.search-field input:focus-visible{outline:none;box-shadow:none;border-color:var(--primary)}
/* Keep the icon rail flat on pointer hover as well as selection. */
.rail-item:hover,.rail-item.selected:hover{background:transparent;box-shadow:none!important;filter:none}
/* One text-field treatment across settings, creation, templates, search and popup search. */
.studio-shell input:not([type='checkbox']):not([type='range']){border-radius:999px;border:1px solid var(--border);background:var(--field);padding:9px 14px;outline:none;outline-offset:0;box-shadow:none}.studio-shell textarea{border-radius:24px;border:1px solid var(--border);background:var(--field);padding:14px 16px;outline:none;outline-offset:0;box-shadow:none}.studio-shell input:not([type='checkbox']):not([type='range']):focus,.studio-shell input:not([type='checkbox']):not([type='range']):focus-visible,.studio-shell textarea:focus,.studio-shell textarea:focus-visible{outline:none;box-shadow:none;border-color:var(--primary)}.studio-shell .select-search{padding:2px 5px 5px}.studio-shell .select-search input{padding:5px 12px;line-height:20px}
/* A shared superellipse contour for every card, popup and artwork frame. */
:root{--card-corner-shape:superellipse(2)}
@supports(corner-shape:superellipse(2)){.glass,.select-popup[popover],.track-art,.player-art,.detail-art,.notice{corner-shape:var(--card-corner-shape)}}
/* Large glass backplates need a wider corner region for the superellipse to remain visible. */
:root{--backplate-radius:40px}.composer,.empty-state,.settings-card,.detail{border-radius:var(--backplate-radius)}@media(max-width:540px){:root{--backplate-radius:28px}}
