/* X-MUSIC STUDIO — оформление. Прямоугольные элементы со слегка скруглёнными углами, тёмная и светлая темы. */
:root{
  --bg:#0c1118;--bg2:#121923;--panel:#161e2a;--panel2:#1c2533;--line:#2a3546;--line2:#384559;
  --ink:#e9eef4;--muted:#8d9bb0;--gold:#e8b04a;--blue:#58b7e8;--red:#ef5b4f;--green:#46c37b;
  --r:5px;--top:52px;
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#eef2f6;--bg2:#e4e9f0;--panel:#ffffff;--panel2:#f3f6fa;--line:#d4dbe5;--line2:#bcc6d4;--ink:#18212d;--muted:#5d6b7e;color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:13px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",sans-serif}
button,input,select{font:inherit;color:inherit}
.boot{display:grid;place-items:center;height:100vh;color:var(--muted);letter-spacing:.2em}
.app{display:grid;grid-template-rows:auto auto 1fr auto;height:100vh;min-height:0}
.grow{flex:1}
.muted{color:var(--muted)}.small{font-size:11px}.pad{padding:16px}
:focus-visible{outline:2px solid var(--blue);outline-offset:1px}

/* кнопки */
.btn,.icon-btn,.tbtn{border:1px solid var(--line2);background:var(--panel2);border-radius:var(--r);height:32px;padding:0 12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.btn:hover,.icon-btn:hover,.tbtn:hover{border-color:var(--gold)}
.btn.primary{background:var(--gold);border-color:var(--gold);color:#1e1606;font-weight:650}
.btn.dirty::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold)}
.icon-btn{padding:0;width:32px;justify-content:center}
.tbtn{width:36px;justify-content:center;padding:0;font-size:14px}
.tbtn.small{width:30px}
.tbtn.play.on{background:var(--green);border-color:var(--green);color:#06210f}
.tbtn.rec{color:var(--red)}.tbtn.rec.on{background:var(--red);color:#fff;border-color:var(--red);animation:blink 1s infinite}
@keyframes blink{50%{opacity:.6}}
.tbtn[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:#05202e}
select,input[type=number],input:not([type]),.title{background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r);height:32px;padding:0 8px}
label{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
label.chk{color:var(--ink)}

/* шапка */
.top{display:flex;align-items:center;gap:10px;padding:8px 12px;min-height:var(--top);border-bottom:1px solid var(--line);position:relative;overflow:visible;
  background:linear-gradient(100deg,transparent 0 10%,rgba(232,176,74,.08) 18%,transparent 26% 52%,rgba(88,183,232,.08) 60%,transparent 70%),linear-gradient(180deg,var(--panel),var(--bg2));
  background-size:300% 100%,100% 100%;animation:shimmer 14s linear infinite}
@keyframes shimmer{to{background-position:-300% 0,0 0}}
@media (prefers-reduced-motion:reduce){.top{animation:none}}
.brand{display:flex;flex:none;white-space:nowrap;align-items:baseline;gap:1px;text-decoration:none;color:var(--ink);font-weight:800;letter-spacing:.04em;font-size:16px}
.brand .x{color:var(--gold)}.brand small{margin-left:6px;font-size:10px;letter-spacing:.3em;color:var(--blue);font-weight:700}
.file{display:flex;gap:6px;align-items:center}
.title{width:200px;font-weight:600}
.transport{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:var(--r);overflow:hidden;height:32px}
.seg button{border:0;background:var(--panel2);padding:0 10px;cursor:pointer}
.seg button[aria-checked="true"]{background:var(--gold);color:#1e1606;font-weight:650}
.bpm input{width:64px}.bpm span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.time{font:600 15px/1 ui-monospace,Menlo,Consolas,monospace;background:#05080c;color:#7fe0a3;border:1px solid var(--line2);border-radius:var(--r);padding:7px 10px;min-width:74px;text-align:center}
#master-meter{border-radius:3px;border:1px solid var(--line2)}
#account{display:flex}
.acct{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px 0 4px;border:1px solid var(--line2);border-radius:var(--r);background:var(--panel2);cursor:pointer}
.acct img,.acct .ava{width:24px;height:24px;border-radius:4px;object-fit:cover;background:var(--blue);display:grid;place-items:center;font-weight:700;color:#05202e}

/* вкладки */
.tabs{display:flex;align-items:center;gap:4px;padding:6px 12px;background:var(--bg2);border-bottom:1px solid var(--line)}
.tabs [role=tab]{border:1px solid transparent;background:none;height:32px;padding:0 12px;border-radius:var(--r);cursor:pointer;display:inline-flex;gap:6px;align-items:center;color:var(--muted)}
.tabs [role=tab].on{background:var(--panel);border-color:var(--line2);color:var(--ink);font-weight:600}
.patsel select{min-width:140px}

/* рабочая область */
.work{display:grid;grid-template-columns:1fr 320px;min-height:0}
.view{min-height:0;overflow:auto;position:relative}
.editor{border-left:1px solid var(--line);background:var(--panel);overflow:auto;min-height:0}
.editor[hidden]{display:none}
.work:has(.editor[hidden]){grid-template-columns:1fr}
.foot{display:flex;justify-content:space-between;gap:12px;padding:5px 12px 5px 72px;border-top:1px solid var(--line);background:var(--bg2);font-size:11px}

/* стойка */
.rack-head,.pr-head,.pl-head{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:3;flex-wrap:wrap}
.rack-list{padding:8px 12px;display:grid;grid-template-columns:minmax(0,1fr);gap:4px}
.rack-row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line)}
.rack-row.sel{border-color:var(--gold)}
.rack-row.muted-ch{opacity:.55}
.led{width:14px;height:14px;border-radius:3px;border:1px solid var(--line2);background:#2a3341;cursor:pointer;padding:0;flex:none}
.led.on{background:var(--green);box-shadow:0 0 6px #46c37b88}
.solo{width:20px;height:20px;border:1px solid var(--line2);border-radius:3px;background:none;font-size:10px;cursor:pointer;padding:0;color:var(--muted)}
.solo.on{background:var(--gold);color:#1e1606}
.ch-name{width:128px;height:30px;text-align:left;padding:0 8px;border:1px solid var(--line2);border-left:4px solid var(--c);border-radius:var(--r);background:var(--panel2);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}
.trk{width:46px;height:28px!important;text-align:center}
.steps{display:grid;grid-template-columns:repeat(var(--n),minmax(18px,1fr));gap:3px;flex:1;min-width:0;touch-action:none}
.step{height:28px;border:1px solid var(--line2);border-radius:3px;background:#2c3646;cursor:pointer;padding:0}
.step.alt{background:#3a2f33}
:root[data-theme="light"] .step{background:#d9e0ea}:root[data-theme="light"] .step.alt{background:#ecd9d9}
.step.on{background:var(--gold);border-color:#ffd88a;box-shadow:inset 0 -3px 0 #0003}
.step.acc{background:#ffcf6e}
.mini-roll{flex:1;min-width:0;height:28px;background:#121822;border:1px solid var(--line2);border-radius:3px;cursor:pointer}

/* ручки */
.knob{display:inline-grid;justify-items:center;gap:1px;cursor:ns-resize;user-select:none;touch-action:none;min-width:40px}
.knob-dial{border-radius:50%;background:radial-gradient(circle at 40% 35%,#3e4b60,#1a212c 70%);border:1px solid var(--line2);position:relative}
.knob-dial i{position:absolute;left:50%;top:12%;width:2px;height:38%;background:var(--gold);transform-origin:50% 100%;transform:translateX(-50%) rotate(var(--a));border-radius:1px;top:12%}
.knob small{font-size:10px;color:var(--muted)}
.knob-val{font-size:10px;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.rack-row .knob-val{display:none}

/* настройки канала */
.ed-head{display:flex;align-items:center;gap:8px;padding:12px;border-bottom:1px solid var(--line);border-top:4px solid var(--c)}
.ed-head b{font-size:14px}.ed-head .btn{margin-left:auto}
.ed-grid{padding:12px;display:grid;gap:14px}
.ed-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ed-knobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:12px 6px;justify-items:center}

/* пианоролл */
.pr-scroll{overflow:auto;height:calc(100% - 52px - 82px);position:relative}
.pr-inner{display:flex;position:relative}
.pr-keycol{position:sticky;left:0;z-index:2;flex:none;box-shadow:2px 0 6px #0006}
.pr-keys,.pr-grid{display:block}
.pr-gridcol{position:relative}
.pr-grid{touch-action:none}
.pr-ph,.pl-ph{position:absolute;top:0;left:0;bottom:0;width:2px;background:var(--green);pointer-events:none;box-shadow:0 0 6px var(--green)}
.pr-velwrap{display:flex;border-top:1px solid var(--line);height:80px}
.pr-velpad{width:56px;flex:none;display:grid;place-items:center;font-size:11px;color:var(--muted);background:var(--bg2)}
.pr-velscroll{overflow:hidden;flex:1}
.pr-vel{display:block;touch-action:none}

/* плейлист */
.pl-body{display:flex;height:calc(100% - 52px);min-height:0}
.pl-names{width:130px;flex:none;overflow:hidden;background:var(--bg2);border-right:1px solid var(--line)}
.pl-corner{border-bottom:1px solid var(--line)}
.pl-name{display:flex;align-items:center;gap:6px;padding:0 6px;border-bottom:1px solid var(--line)}
.pl-name.off{opacity:.5}
.pl-tname{background:none;border:0;text-align:left;cursor:pointer;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:4px 0}
.pl-scroll{overflow:auto;flex:1;position:relative}
.pl-inner{position:relative}
.pl-ruler{display:block;position:sticky;top:0;z-index:2;cursor:pointer}
.pl-grid{display:block;touch-action:none}

/* микшер */
.mx-wrap{display:flex;min-height:100%}
.mx-strips{display:flex;gap:4px;padding:10px;overflow-x:auto;flex:1;align-items:stretch}
.mx-strip{width:66px;flex:none;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 4px}
.mx-strip.sel{border-color:var(--gold)}
.mx-strip.master{width:80px;background:var(--panel2);margin-left:8px}
.mx-name{width:100%;border:0;background:none;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;padding:2px}
.mx-num{font-size:10px;color:var(--muted)}
.mx-fadebox{display:flex;gap:4px;align-items:center;height:150px}
.fader{writing-mode:vertical-lr;direction:rtl;height:140px;width:22px;accent-color:var(--gold)}
.mx-meter{border-radius:2px}
.mx-mute,.mx-fxbtn{width:100%;height:24px;border:1px solid var(--line2);border-radius:3px;background:var(--panel2);font-size:11px;cursor:pointer}
.mx-mute.on{background:var(--red);color:#fff}.mx-fxbtn.on{background:var(--blue);color:#05202e}
.mx-fx{width:330px;flex:none;border-left:1px solid var(--line);background:var(--panel);padding:12px;overflow:auto}
.mx-fx h3{margin:0 0 4px;font-size:14px}
fieldset{border:1px solid var(--line);border-radius:var(--r);margin:10px 0;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:10px}
legend{padding:0 4px;color:var(--muted)}
label.mini{display:grid;font-size:10px}

/* меню, диалоги, уведомления */
.pop{position:fixed;z-index:100;min-width:220px;background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);box-shadow:0 12px 30px #0008;padding:4px;display:grid}
.pop button{display:flex;align-items:center;gap:8px;border:0;background:none;text-align:left;padding:8px 10px;border-radius:4px;cursor:pointer}
.pop button:hover,.pop button:focus-visible{background:var(--panel2)}
.pop button[disabled]{opacity:.4;cursor:default}
.pop .ico{width:18px;text-align:center}.pop kbd{margin-left:auto;font-size:10px;color:var(--muted)}
.pop hr{border:0;border-top:1px solid var(--line);margin:4px 0;width:100%}
.dlg{background:var(--panel);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:18px;min-width:min(420px,92vw);max-width:92vw}
.dlg.wide{min-width:min(620px,94vw)}
.dlg::backdrop{background:#04070bcc}
.dlg h2{margin:0 0 12px;font-size:17px}
.dlg input:not([type=checkbox]){width:100%}
.dlg-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.dlg-buttons button{height:34px;padding:0 14px;border:1px solid var(--line2);border-radius:var(--r);background:var(--panel2);cursor:pointer}
.dlg-buttons .primary{background:var(--gold);color:#1e1606;border-color:var(--gold);font-weight:650}
.dlg progress{width:100%;height:12px;accent-color:var(--gold)}
.plist{display:grid;gap:6px;max-height:60vh;overflow:auto}
.plist-item{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel2);cursor:pointer;text-align:left}
.plist-item:hover{border-color:var(--gold)}
table.keys td{padding:4px 8px}
kbd{font:11px ui-monospace,Menlo,monospace;border:1px solid var(--line2);border-radius:3px;padding:1px 5px;background:var(--bg2)}
#toast{position:fixed;left:50%;bottom:44px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);padding:10px 16px;z-index:200;transition:.2s;box-shadow:0 8px 24px #0008}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast.err{border-color:var(--red)}

/* язык — слева внизу */
.lang{position:fixed;left:10px;bottom:6px;z-index:60}
.lang summary{list-style:none;cursor:pointer;height:26px;min-width:44px;padding:0 10px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line2);border-radius:var(--r);background:var(--panel);font-weight:700;font-size:11px;letter-spacing:.05em}
.lang summary::-webkit-details-marker{display:none}
.lang-list{position:absolute;left:0;bottom:32px;display:grid;min-width:170px;padding:4px;background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);box-shadow:0 10px 30px #0008}
.lang-list button{display:flex;gap:10px;border:0;background:none;padding:7px 9px;border-radius:4px;cursor:pointer;text-align:left}
.lang-list button:hover{background:var(--panel2)}.lang-list b{width:24px;font-size:11px;color:var(--muted)}
.lang-list [aria-current]{color:var(--gold)}
.cookies{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);z-index:90;display:flex;gap:12px;align-items:center;background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);padding:10px 14px;box-shadow:0 10px 30px #0008;max-width:min(720px,calc(100vw - 32px))}

/* телефон: упрощённый режим */
@media (max-width:820px){
  .top{flex-wrap:wrap;gap:6px}
  .title{width:130px}
  .work{grid-template-columns:1fr}
  .editor{position:fixed;inset:auto 0 0 0;max-height:55vh;border-left:0;border-top:1px solid var(--line2);z-index:40;display:none}
  .editor.open{display:block}
  .ch-name{width:84px}
  .rack-row .knob,.trk{display:none}
  .rack-row{flex-wrap:wrap}
  .steps,.mini-roll{flex-basis:100%;order:10}
  .steps{grid-template-columns:repeat(var(--n),minmax(19px,1fr));overflow-x:auto;padding-bottom:2px}
  .cookies{width:calc(100vw - 24px);flex-direction:column;align-items:stretch;bottom:40px}
  .ed-close{display:inline-flex!important}
  .mx-fx{display:none}
  .tabs{overflow-x:auto}
  .foot{padding-left:64px}
}
[dir=rtl] .foot{padding-left:12px;padding-right:72px}

.ed-close{display:none}
/* Время в музыке идёт слева направо и при письме справа налево */
[dir=rtl] .steps,[dir=rtl] .mini-roll,[dir=rtl] .pr-scroll,[dir=rtl] .pr-velwrap,[dir=rtl] .pl-body,[dir=rtl] .brand,[dir=rtl] .time,[dir=rtl] .mx-strips{direction:ltr}
.tbtn.midi{width:auto;padding:0 8px;font-size:11px;font-weight:700}
.tbtn.midi.live{box-shadow:inset 0 -3px 0 var(--green)}
.recform{display:grid;gap:10px}
.recform label{display:grid;gap:4px}
.recform label.chk{display:flex}
.recform select,.recform textarea{width:100%}
textarea{background:var(--bg2);border:1px solid var(--line2);border-radius:var(--r);padding:8px;color:var(--ink);font:inherit;resize:vertical}
.meterrow{display:flex;align-items:center;gap:10px}.inmeter{flex:1;height:12px}
.lyrics-wrap{display:flex;flex-direction:column;height:100%}
.lyrics{flex:1;margin:12px;font-size:20px;line-height:1.6;resize:none;min-height:300px}
/* «Разместить на портале» */
.pub-form{display:grid;gap:6px;min-width:min(420px,80vw)}
.pub-form p{margin:0 0 6px;color:var(--muted,#a9adb6)}
.pub-form label{font-size:13px;color:var(--muted,#a9adb6);margin-top:4px}
.pub-form select,.pub-form textarea{width:100%;font:inherit;box-sizing:border-box}
.pub-form textarea{resize:vertical;min-height:64px}
/* видеодорожка и окно клипа */
.pl-vsep{width:1px;height:22px;background:var(--line2);margin:0 2px}
.vbtn{border-color:#7a62c9}
.pl-vname{background:#1a1427;color:#cdbcff;font-weight:600;gap:8px}
.vpreview{position:fixed;right:16px;bottom:44px;width:min(360px,calc(100vw - 32px));z-index:40;background:var(--panel);border:1px solid var(--line2);border-radius:8px;box-shadow:0 10px 30px #0008;overflow:hidden}
.vpreview[hidden]{display:none}
.vp-bar{display:flex;align-items:center;gap:8px;padding:4px 6px 4px 10px;border-bottom:1px solid var(--line);font-size:13px}
.vp-screen{position:relative;aspect-ratio:16/9;background:#000;display:grid;place-items:center}
.vp-screen video,.vp-screen img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vp-cap{color:#8f83ad;font-size:12px;padding:12px;text-align:center}
.dlg-buttons .danger{color:#ff8a7a;border-color:#ff8a7a66;margin-right:auto}
