:root{--ink:#19363d;--petrol:#2a6265;--mist:#e9f0ec;--paper:#f8faf7;--copper:#c9764b;--muted:#64777a;--line:#d6e1dd;--white:#fff;--danger:#9b4038;font-family:"Avenir Next","Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}.hidden{display:none!important}:focus-visible{outline:3px solid var(--copper);outline-offset:3px}
.brand{display:flex;align-items:center;gap:.6rem;font-size:1.28rem;font-weight:800;letter-spacing:-.035em}.brand-icon{display:inline-grid;place-items:center;width:2rem;height:2rem;border-radius:50%;color:#e6f0ec;background:var(--petrol);font-size:1.45rem}
.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1fr);background:var(--paper)}.login-art{position:relative;overflow:hidden;background:linear-gradient(130deg,#174248 0%,#2e6969 65%,#9ab3a6 100%);display:grid;place-items:center}.login-art:before{content:"";position:absolute;inset:8%;border:1px solid #ffffff24;border-radius:50%;transform:scale(1.25)}.record{display:block;width:min(60vw,520px);aspect-ratio:1;border-radius:50%;background:repeating-radial-gradient(circle at center,#16373a 0 4px,#22484a 5px 6px,#173a3e 7px 10px);box-shadow:0 20px 60px #081d1f60,inset 0 0 0 3px #1b4145;position:relative}.record:before{content:"";position:absolute;inset:36%;border-radius:50%;background:var(--copper);box-shadow:inset 0 0 0 12px #cf875f,inset 0 0 0 13px #e5a17c}.record:after{content:"";position:absolute;inset:48%;border-radius:50%;background:#dce9e2}.needle{position:absolute;width:35%;height:8px;background:#d6dbcf;top:24%;right:-5%;transform:rotate(-25deg);transform-origin:right center;box-shadow:0 3px 8px #112a2c80}.login-panel{align-self:center;justify-self:center;width:min(380px,calc(100% - 48px));display:flex;flex-direction:column}.login-panel h1{font-size:clamp(2.2rem,4vw,3.4rem);line-height:1.04;letter-spacing:-.055em;margin:3.2rem 0 1rem}.login-panel p{color:var(--muted);line-height:1.5;margin:0 0 2.1rem}.login-panel label,.surface-form label,.dialog-form label{font-weight:700;font-size:.9rem;margin:.7rem 0 .4rem}.login-panel input,.surface-form input:not([type=checkbox]),.dialog-form input,.dialog-form select{width:100%;min-height:44px;padding:.65rem .8rem;border:1px solid #c4d3cf;border-radius:7px;background:#fff;color:var(--ink)}.login-panel .button{margin-top:1.5rem}.login-panel .form-error{color:var(--danger);min-height:1.4rem;margin:1rem 0 0}
.button{border:1px solid transparent;min-height:38px;padding:.55rem .95rem;border-radius:7px;font-weight:700;transition:background-color .14s,color .14s,transform .14s}.button:hover:not(:disabled){transform:translateY(-1px)}.button.primary{background:var(--petrol);color:#fff}.button.primary:hover:not(:disabled){background:#205154}.button.subtle{background:#fff;color:var(--ink);border-color:var(--line)}.button.subtle:hover:not(:disabled){background:var(--mist)}.button.full{width:100%}.text-button{padding:0;border:0;background:transparent;color:var(--muted);text-align:left}.text-button:hover{text-decoration:underline}
.app-shell{display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 96px;min-height:100vh;max-height:100vh}.sidebar{grid-row:1;display:flex;flex-direction:column;gap:2.4rem;background:var(--ink);color:#e9f0ec;padding:30px 19px 22px}.sidebar .brand{padding-left:10px}.sidebar .brand-icon{background:#3b7979;color:#fff}.primary-nav{display:flex;flex-direction:column;gap:3px}.nav-link{width:100%;display:flex;align-items:center;gap:.8rem;background:transparent;border:0;border-radius:7px;color:#bfd1cd;text-align:left;padding:.7rem .8rem;font-size:.96rem;font-weight:650}.nav-link span{font-size:1.2rem;width:1.2rem;text-align:center}.nav-link:hover,.nav-link.active{color:#fff;background:#ffffff20}.sidebar-bottom{margin-top:auto;padding:0 10px;display:flex;flex-direction:column;gap:.65rem}.account-line{display:flex;align-items:center;gap:.65rem;min-width:0;font-weight:700}.account-line span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:var(--copper);color:#fff;font-size:.8rem}.sidebar .text-button{color:#c7d6d2}
.main-area{min-width:0;overflow-y:auto;padding:36px clamp(24px,4vw,70px) 100px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:28px}.topbar h1{font-size:clamp(2rem,3vw,2.8rem);line-height:1;letter-spacing:-.055em;margin:.25rem 0 0}.small-label{font-size:.9rem;color:var(--muted);margin:0}.topbar-actions{display:flex;gap:.55rem;flex-wrap:wrap}.notice{padding:12px 16px;margin-bottom:20px;border-left:4px solid var(--copper);background:#f5e7db;color:#603a25;border-radius:0 6px 6px 0}.notice.error{border-color:var(--danger);background:#f8e7e4;color:var(--danger)}
.search-line{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:20px}.search-box{display:flex;align-items:center;gap:.65rem;background:#fff;border:1px solid var(--line);border-radius:9px;padding:0 13px;width:min(520px,100%);box-shadow:0 2px 9px #14303808}.search-box span{font-size:1.65rem;color:var(--petrol);line-height:1}.search-box input{width:100%;height:45px;border:0;outline:none;background:transparent;color:var(--ink)}.search-box:focus-within{outline:2px solid var(--petrol)}.result-count{white-space:nowrap;color:var(--muted);font-size:.9rem}
.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:10px}.track-table{width:100%;border-collapse:collapse;text-align:left;min-width:660px}.track-table th{padding:12px 16px;color:var(--muted);font-weight:650;font-size:.8rem;border-bottom:1px solid var(--line)}.track-table td{padding:12px 16px;border-bottom:1px solid #ebefec;font-size:.92rem;vertical-align:middle}.track-table tr:last-child td{border-bottom:0}.track-table tbody tr:hover{background:#f3f8f5}.track-table td:first-child{font-weight:700}.track-table td.secondary{color:var(--muted)}.track-table .actions{white-space:nowrap;text-align:right}.mini-button{border:0;background:transparent;color:var(--petrol);font-weight:700;padding:5px 6px}.mini-button:hover{text-decoration:underline}.format-tag{font-size:.75rem;color:var(--petrol);background:var(--mist);border-radius:4px;padding:3px 6px;white-space:nowrap}.empty-state{padding:55px 25px;text-align:center;color:var(--muted)}.empty-state h2{color:var(--ink);margin:0 0 .5rem;font-size:1.35rem}.empty-state p{margin:0;line-height:1.5}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:24px}.section-head h2{margin:0 0 .3rem;font-size:1.5rem}.section-head p{margin:0;color:var(--muted)}.playlist-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:20px;align-items:start}.playlist-list{display:flex;flex-direction:column;gap:6px}.playlist-item{width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:8px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:.5rem}.playlist-item:hover,.playlist-item.selected{border-color:#7ca4a1;background:#edf5f1}.playlist-item strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-item small{color:var(--muted)}.playlist-detail{min-height:330px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:24px}.playlist-detail h2{margin:0 0 .25rem;font-size:1.6rem}.playlist-detail .meta{color:var(--muted);margin:0 0 1.2rem}.playlist-detail .detail-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:1.1rem 0}.playlist-tracks{list-style:none;padding:0;margin:20px 0 0}.playlist-tracks li{display:flex;align-items:center;gap:.7rem;padding:.7rem 0;border-bottom:1px solid var(--line)}.playlist-tracks li strong{flex:1;min-width:0}.playlist-tracks li small{display:block;color:var(--muted);font-weight:400}.playlist-tracks li .mini-button{flex:none}.playlist-tracks .order-controls{display:flex}.visibility-select{padding:.5rem;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
.admin-grid{display:grid;grid-template-columns:minmax(250px,360px) minmax(250px,1fr);gap:35px;align-items:start}.surface-form{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;background:#fff;padding:24px}.surface-form h3{margin:0 0 .7rem}.surface-form .button{margin-top:1rem}.check-line{display:flex;align-items:center;gap:.5rem}.user-list{display:flex;flex-direction:column;gap:8px}.user-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:11px 0}.user-row small{color:var(--muted)}
.player-bar{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:minmax(170px,1fr) minmax(300px,1.35fr) minmax(125px,1fr);gap:20px;align-items:center;padding:12px 26px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -4px 20px #20373c0a}.playing-info{display:flex;align-items:center;min-width:0;gap:12px}.playing-info>div:last-child{min-width:0}.playing-info strong,.playing-info span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playing-info span{font-size:.78rem;color:var(--muted)}.cover-placeholder{flex:none;display:grid;place-items:center;width:54px;height:54px;background:var(--petrol);color:#fff;border-radius:6px;font-size:1.6rem}.playback-center{display:flex;flex-direction:column;align-items:center;gap:.4rem;min-width:0}.playback-buttons{display:flex;align-items:center;gap:.8rem}.icon-button{border:0;background:none;color:var(--ink);font-size:1.1rem;min-width:30px;min-height:30px}.play-toggle{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;font-size:.88rem}.progress{display:flex;align-items:center;gap:.65rem;width:100%;color:var(--muted);font-size:.72rem}.progress input{flex:1;min-width:0}.volume-control{justify-self:end;display:flex;align-items:center;gap:.6rem;color:var(--muted)}input[type=range]{accent-color:var(--petrol)}
dialog{border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 70px #15383f45;padding:0;width:min(430px,calc(100vw - 32px))}dialog::backdrop{background:#102c35a8}.dialog-form{padding:26px;display:flex;flex-direction:column}.dialog-form h2{margin:0 0 1rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.4rem}
@media(max-width:850px){.app-shell{grid-template-columns:70px minmax(0,1fr)}.sidebar{padding:22px 9px}.sidebar .brand{font-size:0;padding-left:9px}.sidebar .brand-icon{font-size:1.4rem}.nav-link{font-size:0;justify-content:center;padding:.7rem}.nav-link span{font-size:1.2rem}.sidebar-bottom{padding:0;align-items:center}.account-line span:last-child,.sidebar .text-button{display:none}.main-area{padding:28px 24px 95px}.playlist-layout{grid-template-columns:1fr}.playlist-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.admin-grid{grid-template-columns:1fr}}
@media(max-width:600px){.login-screen{grid-template-columns:1fr}.login-art{min-height:130px}.record{width:160px;position:absolute;right:20px;top:-80px}.needle{display:none}.login-panel{padding:30px 0}.login-panel h1{margin:1.5rem 0 .7rem}.app-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) 126px}.sidebar{grid-row:1;flex-direction:row;align-items:center;justify-content:space-between;padding:10px 15px;gap:.5rem}.sidebar .brand{font-size:0;padding:0}.primary-nav{flex-direction:row}.nav-link{padding:.45rem .55rem}.sidebar-bottom{display:none}.main-area{grid-row:2;padding:24px 16px 95px}.topbar{align-items:start;flex-direction:column}.topbar-actions{width:100%}.topbar-actions .button{flex:1}.search-line{align-items:stretch;flex-direction:column}.result-count{align-self:flex-end}.player-bar{grid-row:3;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:4px 12px;padding:8px 14px}.playing-info{grid-column:1}.cover-placeholder{width:40px;height:40px}.playback-center{grid-column:1/-1;grid-row:2}.volume-control{grid-column:2;grid-row:1}.volume-control input{width:65px}.playlist-detail{padding:16px}}
@media(prefers-reduced-motion:reduce){.button{transition:none}}
