    :root,[data-theme="dark"]{--bg:#06111f;--panel:rgba(11,23,41,.96);--panel2:#0f2037;--border:rgba(130,156,196,.14);--text:#f4f8ff;--muted:#93a4c2;--blue:#3b82f6;--cyan:#38bdf8;--green:#22c55e;--red:#ef4444;--orange:#f59e0b;--input-bg:rgba(255,255,255,.045);--input-border:rgba(130,156,196,.15);--input-text:#fff;--sidebar-bg:rgba(6,17,31,.88);--topbar-bg:rgba(6,17,31,.80);--card-bg:linear-gradient(180deg,rgba(11,23,41,.96),rgba(8,18,33,.96));--card-sh:inset 0 1px 0 rgba(255,255,255,.035);--grid:rgba(255,255,255,.026);--sw:260px;--th:64px;--r:16px;--rs:10px}
    [data-theme="light"]{--bg:#f0f4f8;--panel:#fff;--panel2:#f7f9fc;--border:rgba(0,0,0,.08);--text:#0f1729;--muted:#5f6d85;--input-bg:#f4f7fb;--input-border:rgba(0,0,0,.10);--input-text:#0f1729;--sidebar-bg:rgba(255,255,255,.95);--topbar-bg:rgba(255,255,255,.90);--card-bg:linear-gradient(180deg,#fff,#fafcff);--card-sh:0 1px 3px rgba(0,0,0,.04);--grid:rgba(0,0,0,.03)}
    *,*::before,*::after{box-sizing:border-box}html,body{margin:0;min-height:100%}
    body{font-family:'Inter',system-ui,sans-serif;color:var(--text);line-height:1.5;background:radial-gradient(circle at 16% 12%,rgba(59,130,246,.14),transparent 32%),radial-gradient(circle at 92% 8%,rgba(56,189,248,.10),transparent 30%),var(--bg);background-attachment:fixed}
    [data-theme="light"] body{background:linear-gradient(135deg,#eef2f8,#f5f8fc 42%,#e9eef5)}
    body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.7),transparent 70%)}
    a{color:inherit;text-decoration:none}button{font-family:inherit}
    .E{min-height:100vh;padding-left:var(--sw);position:relative;z-index:1}
    .E-side{position:fixed;inset:0 auto 0 0;width:var(--sw);padding:16px 12px;background:var(--sidebar-bg);border-right:1px solid var(--border);backdrop-filter:blur(16px);z-index:30;display:flex;flex-direction:column;overflow-y:auto}
    .E-logo{display:flex;align-items:center;gap:10px;padding:0 8px 14px;border-bottom:1px solid var(--border);margin-bottom:14px}
    .E-logo-mark{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;flex-shrink:0;background:linear-gradient(135deg,#2563eb,#38bdf8);box-shadow:0 10px 24px rgba(37,99,235,.32)}
    .E-logo h1{margin:0;font-size:1.05rem;font-weight:800;letter-spacing:-.04em;line-height:1.05}.E-logo h1 b{color:var(--blue);font-weight:800}
    .E-logo small{display:block;margin-top:2px;font-size:.7rem;color:var(--muted)}
    .E-label{padding:0 10px;margin:12px 0 6px;color:var(--muted);text-transform:uppercase;font-size:.62rem;letter-spacing:.14em;font-weight:800;opacity:.7}
    /* Заголовок блока меню. Первый идёт без верхнего отступа:
       над ним уже стоит подпись «Рабочее пространство». */
    .E-group{padding:0 10px;margin:14px 0 4px;color:var(--muted);text-transform:uppercase;font-size:.6rem;letter-spacing:.14em;font-weight:800;opacity:.65}
    .E-nav > .E-group:first-child{margin-top:0}
    .E-nav{display:grid;gap:3px}.E-nav a{min-height:42px;border-radius:13px;padding:0 10px;display:flex;align-items:center;gap:10px;color:var(--muted);border:1px solid transparent;transition:.2s;font-size:.84rem;font-weight:600}
    .E-nav a:hover{color:var(--text);background:rgba(255,255,255,.04);border-color:rgba(130,156,196,.08)}
    .E-nav a.act{background:linear-gradient(135deg,rgba(59,130,246,.20),rgba(56,189,248,.08));border-color:rgba(59,130,246,.26);color:var(--text);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 10px 24px rgba(37,99,235,.08)}
    .E-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;background:rgba(255,255,255,.04);color:#8ab4ff;font-size:.78rem}
    .E-nav a.act .E-ico{background:linear-gradient(135deg,#2563eb,#38bdf8);color:#fff}
    [data-theme="light"] .E-nav a{color:#4a5568}[data-theme="light"] .E-nav a:hover{color:#0f1729;background:rgba(0,0,0,.03)}
    [data-theme="light"] .E-nav a.act{background:linear-gradient(135deg,rgba(59,130,246,.10),rgba(56,189,248,.05));border-color:rgba(59,130,246,.16);color:#1e40af}
    [data-theme="light"] .E-ico{background:rgba(0,0,0,.04);color:#4a6fa5}[data-theme="light"] .E-nav a.act .E-ico{background:linear-gradient(135deg,#2563eb,#38bdf8);color:#fff}
    .E-foot{margin-top:auto;border-radius:14px;padding:12px;border:1px solid rgba(59,130,246,.16);background:linear-gradient(180deg,rgba(59,130,246,.08),rgba(255,255,255,.02));color:var(--muted);font-size:.76rem;line-height:1.5}
    .E-foot strong{display:block;color:var(--text);margin-bottom:3px}[data-theme="light"] .E-foot{border-color:rgba(59,130,246,.10);background:linear-gradient(180deg,rgba(59,130,246,.05),#fff)}
    .E-top{height:var(--th);position:sticky;top:0;z-index:20;padding:0 22px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--topbar-bg);border-bottom:1px solid var(--border);backdrop-filter:blur(16px)}
    .E-top h2{margin:0;font-size:1.1rem;font-weight:800;letter-spacing:-.03em}.E-top-r{display:flex;align-items:center;gap:8px}
    .E-toggle{width:38px;height:38px;border-radius:11px;border:1px solid var(--border);background:var(--input-bg);color:var(--muted);cursor:pointer;display:grid;place-items:center;font-size:.95rem;transition:.2s;position:relative;overflow:hidden}
    .E-toggle:hover{border-color:rgba(59,130,246,.3);color:#fbbf24}
    .E-toggle .fa-sun,.E-toggle .fa-moon{position:absolute;transition:transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s}
    [data-theme="dark"] .E-toggle .fa-sun{transform:translateY(0);opacity:1}[data-theme="dark"] .E-toggle .fa-moon{transform:translateY(22px);opacity:0}
    [data-theme="light"] .E-toggle .fa-sun{transform:translateY(-22px);opacity:0}[data-theme="light"] .E-toggle .fa-moon{transform:translateY(0);opacity:1;color:#6366f1}
    .E-ava{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(135deg,#2563eb,#38bdf8);font-weight:800;color:#fff;font-size:.8rem}
    .E-out{width:36px;height:36px;border-radius:11px;border:1px solid rgba(239,68,68,.18);background:rgba(239,68,68,.07);color:#ffb4b4;cursor:pointer;display:grid;place-items:center;font-size:.78rem;transition:.2s}.E-out:hover{background:rgba(239,68,68,.15);color:#fff}[data-theme="light"] .E-out{color:#dc2626;background:rgba(239,68,68,.05)}
    .E-content{padding:22px}.E-footer{color:var(--muted);font-size:.74rem;padding:0 22px 22px}
    .container,.container-fluid{max-width:100%;padding:0}
    .card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--card-sh);color:var(--text)}.card-body{padding:18px}
    .table{color:var(--text);margin-bottom:0;width:100%;border-collapse:collapse}
    .table th{color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:9px 12px;border-bottom:1px solid var(--border);border-top:none;background:transparent}
    .table td{padding:10px 12px;border-top:1px solid var(--border);vertical-align:middle}
    .table-bordered{border:none}.table-bordered th,.table-bordered td{border:none;border-bottom:1px solid var(--border)}
    .table tbody tr:hover{background:rgba(59,130,246,.03)}.table-responsive{overflow-x:auto}
    /* ===== Кнопки ===== */
    /* Цвет варианта задаётся тремя переменными, остальное — общая основа:
       форма, тень, нажатие и фокус у всех кнопок админки одинаковые. */
    .btn{--btn-bg:var(--input-bg);--btn-br:var(--border);--btn-fg:var(--text);--btn-sh:0 1px 2px rgba(6,17,31,.20);
      display:inline-flex;align-items:center;justify-content:center;gap:6px;
      min-height:36px;padding:0 15px;border-radius:var(--rs);
      border:1px solid var(--btn-br);background:var(--btn-bg);color:var(--btn-fg);
      font-family:inherit;font-weight:700;font-size:.82rem;line-height:1;letter-spacing:.01em;white-space:nowrap;
      cursor:pointer;-webkit-user-select:none;user-select:none;text-decoration:none;
      box-shadow:inset 0 1px 0 rgba(255,255,255,.05),var(--btn-sh);
      transition:transform .14s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,color .2s ease}
    .btn:hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 7px 18px rgba(6,17,31,.26)}
    /* Нажатие уводит кнопку обратно вниз и гасит тень — щелчок видно без анимации. */
    .btn:active{transform:translateY(0);box-shadow:inset 0 2px 5px rgba(6,17,31,.26)}
    .btn:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
    .btn:disabled,.btn[aria-disabled="true"]{opacity:.45;pointer-events:none;transform:none;box-shadow:none}
    .btn-sm{min-height:30px;padding:0 11px;font-size:.76rem;border-radius:8px;gap:5px}

    .btn:hover{--btn-br:rgba(59,130,246,.34)}
    .btn-primary{--btn-bg:linear-gradient(135deg,#2563eb,#38bdf8);--btn-br:rgba(59,130,246,.42);--btn-fg:#fff;--btn-sh:0 6px 18px rgba(37,99,235,.26)}
    .btn-primary:hover{--btn-bg:linear-gradient(135deg,#1d4ed8,#22a6e8);--btn-br:rgba(125,211,252,.55);--btn-fg:#fff;box-shadow:0 10px 24px rgba(37,99,235,.34)}
    .btn-success{--btn-bg:linear-gradient(135deg,#16a34a,#34d399);--btn-br:rgba(34,197,94,.38);--btn-fg:#fff;--btn-sh:0 6px 18px rgba(22,163,74,.24)}
    .btn-success:hover{--btn-bg:linear-gradient(135deg,#15803d,#25c08a);--btn-br:rgba(52,211,153,.5);--btn-fg:#fff;box-shadow:0 10px 24px rgba(22,163,74,.32)}
    .btn-danger{--btn-bg:rgba(239,68,68,.12);--btn-br:rgba(239,68,68,.30);--btn-fg:#fca5a5;--btn-sh:0 0 0 0 rgba(0,0,0,0)}
    .btn-danger:hover{--btn-bg:linear-gradient(135deg,#dc2626,#f87171);--btn-br:rgba(248,113,113,.5);--btn-fg:#fff;box-shadow:0 8px 20px rgba(220,38,38,.30)}
    .btn-info{--btn-bg:rgba(59,130,246,.12);--btn-br:rgba(59,130,246,.30);--btn-fg:#93c5fd;--btn-sh:0 0 0 0 rgba(0,0,0,0)}
    .btn-info:hover{--btn-bg:linear-gradient(135deg,#2563eb,#38bdf8);--btn-br:rgba(125,211,252,.5);--btn-fg:#fff;box-shadow:0 8px 20px rgba(37,99,235,.28)}
    .btn-dark{--btn-bg:rgba(255,255,255,.05);--btn-br:var(--border);--btn-fg:var(--text)}
    .btn-dark:hover{--btn-bg:rgba(255,255,255,.09)}

    /* Светлая тема: на белом фоне заливка в 5% не читается — нейтральной
       кнопке нужен собственный белый фон и чуть более тёмная граница. */
    [data-theme="light"] .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-info){--btn-bg:linear-gradient(180deg,#fff,#f6f8fc);--btn-br:rgba(15,23,41,.14);--btn-sh:0 1px 2px rgba(15,23,41,.07)}
    [data-theme="light"] .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-info):hover{--btn-bg:linear-gradient(180deg,#fff,#eef3fb);--btn-br:rgba(37,99,235,.38);box-shadow:0 6px 16px rgba(15,23,41,.10)}
    [data-theme="light"] .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-info):active{box-shadow:inset 0 2px 4px rgba(15,23,41,.10)}
    [data-theme="light"] .btn-danger{--btn-bg:rgba(239,68,68,.08);--btn-br:rgba(220,38,38,.26);--btn-fg:#dc2626}
    [data-theme="light"] .btn-info{--btn-bg:rgba(59,130,246,.08);--btn-br:rgba(37,99,235,.26);--btn-fg:#2563eb}
    [data-theme="light"] .btn-dark{--btn-bg:linear-gradient(180deg,#fff,#f6f8fc);--btn-fg:var(--text)}

    /* В строках таблицы кнопки стоят вплотную — разводим их, не трогая разметку. */
    .table td .btn+.btn{margin-left:6px}
    .badge{padding:3px 9px;border-radius:7px;font-weight:700;font-size:.70rem}
    .badge-success{background:rgba(34,197,94,.14)!important;color:#4ade80}.badge-danger{background:rgba(239,68,68,.14)!important;color:#fca5a5}
    .badge-info{background:rgba(59,130,246,.14)!important;color:#93c5fd}.badge-secondary{background:rgba(130,156,196,.10)!important;color:var(--muted)}
    [data-theme="light"] .badge-success{color:#166534}[data-theme="light"] .badge-danger{color:#991b1b}
    .form-control{background:var(--input-bg);border:1px solid var(--input-border);color:var(--input-text);border-radius:var(--rs);padding:9px 12px;font-size:.86rem;transition:border .2s;width:100%}
    .form-control:focus{outline:none;border-color:rgba(59,130,246,.45);box-shadow:0 0 0 3px rgba(59,130,246,.10);background:var(--input-bg);color:var(--input-text)}
    .form-control::placeholder{color:var(--muted);opacity:.5}
    select.form-control{appearance:auto;background-color:var(--input-bg);color:var(--input-text)}
    select.form-control option{background:#0f2037;color:#f4f8ff}
    [data-theme="light"] select.form-control option{background:#fff;color:#0f1729}
    label,.admin__label{color:var(--text);font-weight:600;font-size:.86rem;margin-bottom:5px;display:block}.form-group{margin-bottom:14px}
    .alert{border-radius:var(--r);padding:12px 16px;font-weight:600;font-size:.86rem}
    .alert-success{border:1px solid rgba(34,197,94,.22);background:rgba(34,197,94,.08);color:#dcfce7}
    [data-theme="light"] .alert-success{background:rgba(34,197,94,.05);color:#166534}
    .text-danger{color:var(--red)!important;font-size:.8rem}.text-muted{color:var(--muted)!important}.text-gray-800{color:var(--text)!important}.text-dark{color:var(--text)!important}
    .font-weight-bold{font-weight:700!important}.h3{font-size:1.2rem!important;font-weight:800!important}.h5{font-size:.92rem!important}
    .mb-0{margin-bottom:0!important}.mb-3{margin-bottom:14px!important}.mb-4{margin-bottom:22px!important}.mt-4{margin-top:22px!important}
    .d-flex{display:flex!important}.d-sm-flex{display:flex!important}.align-items-center{align-items:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-end{justify-content:flex-end!important}
    .row{display:flex;flex-wrap:wrap;margin:0 -7px}
    .col-md-2{flex:0 0 16.66%;max-width:16.66%;padding:0 7px}.col-md-3{flex:0 0 25%;max-width:25%;padding:0 7px}.col-md-4{flex:0 0 33.33%;max-width:33.33%;padding:0 7px}.col-md-5{flex:0 0 41.66%;max-width:41.66%;padding:0 7px}.col-md-6{flex:0 0 50%;max-width:50%;padding:0 7px}.col-md-8{flex:0 0 66.66%;max-width:66.66%;padding:0 7px}.col-md-12{flex:0 0 100%;max-width:100%;padding:0 7px}
    @media(max-width:768px){.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-8{flex:0 0 100%;max-width:100%}}
    nav svg{height:20px}nav .hidden{display:block!important}
    .pagination{display:flex;gap:3px;list-style:none;padding:0;margin:14px 0 0;justify-content:center}
    .pagination .page-item .page-link{padding:5px 11px;border-radius:8px;background:var(--input-bg);border:1px solid var(--border);color:var(--text);font-size:.8rem;font-weight:600}.pagination .page-item.active .page-link{background:linear-gradient(135deg,#2563eb,#38bdf8);border-color:transparent;color:#fff}.pagination .page-item.disabled .page-link{opacity:.4;pointer-events:none}
    img{max-width:100%;height:auto}
    .loadingSpinner{position:fixed;inset:0;z-index:9999;background:rgba(6,17,31,.45);backdrop-filter:blur(3px);display:grid;place-items:center}[data-theme="light"] .loadingSpinner{background:rgba(255,255,255,.45)}
    .note-editor.note-frame{border:1px solid var(--input-border)!important;border-radius:12px!important;overflow:hidden;background:var(--input-bg)!important}
    .note-editor .note-toolbar{background:rgba(255,255,255,.03)!important;border-bottom:1px solid var(--border)!important;padding:6px 8px!important}
    .note-editor .note-toolbar .note-btn{background:rgba(255,255,255,.05)!important;border:1px solid var(--border)!important;color:var(--muted)!important;border-radius:7px!important;height:30px}
    .note-editor .note-toolbar .note-btn:hover{background:rgba(59,130,246,.12)!important;color:var(--text)!important}
    .note-editor .note-editing-area .note-editable{background:#fff!important;color:#111!important;padding:12px!important;min-height:110px;font-size:14px;line-height:1.7}
    .note-editor .note-editing-area .note-editable *{color:inherit!important}
    .note-editor .note-editing-area .note-codable{background:#1a1a2e!important;color:#93c5fd!important}
    .note-editor .note-statusbar{background:transparent!important;border-top:1px solid var(--border)!important}
    .note-placeholder{color:#999!important;padding:12px!important}
    .note-btn-group{display:inline-flex!important;gap:2px!important;margin:0!important}
    .note-dropdown-menu{background:var(--panel2)!important;border:1px solid var(--border)!important;border-radius:10px!important;padding:5px!important;box-shadow:0 10px 28px rgba(0,0,0,.35)!important}
    .note-dropdown-menu .note-dropdown-item{color:var(--text)!important;border-radius:6px;padding:5px 10px!important}
    .note-dropdown-menu .note-dropdown-item:hover{background:rgba(59,130,246,.12)!important}
    [x-ref="bar"]{background:linear-gradient(90deg,#3b82f6,#38bdf8)!important;height:3px!important}
    @media(max-width:860px){.E{padding-left:0}.E-side{position:static;width:auto;min-height:auto;border-right:none;border-bottom:1px solid var(--border)}.E-top{position:static;height:auto;padding:12px}.E-content{padding:12px}}

/* ASMODULE: local, accessible forms. The base E-* shell above comes from Desktop.zip. */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .full{grid-column:1/-1}
label.field{display:flex;flex-direction:column;gap:6px;margin:0;font-size:13px;color:var(--muted)}
input:not([type=checkbox]),select,textarea{width:100%;min-height:42px;background:var(--input-bg);border:1px solid var(--input-border);border-radius:9px;color:var(--input-text);padding:10px 12px;font:inherit}
select option{background:var(--panel);color:var(--text)}textarea{min-height:100px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:2px}
input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue)}.check{display:flex;align-items:center;gap:10px}
.stack{display:grid;gap:18px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.toolbar h1{margin:0;font-size:26px}.muted{color:var(--muted)}.notice{padding:14px 16px;border:1px solid var(--border);border-radius:10px;background:var(--panel2)}
.error{color:#fca5a5}.success{color:#4ade80}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.metric{padding:24px}.metric strong{display:block;font-size:36px}
fieldset{border:1px solid var(--border);border-radius:12px;padding:18px;margin:0 0 18px;min-width:0}legend{padding:0 8px;font-weight:700}details>summary{cursor:pointer;font-weight:700;padding:12px 0}
.variant-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}.media-grid img{width:100%;aspect-ratio:4/3;object-fit:contain;background:white;border-radius:10px}
.pagination-wrap{margin-top:20px}.pagination-wrap nav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.pagination-wrap svg{width:20px;height:20px}
button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.auth-shell{max-width:430px;margin:12vh auto;padding:24px}.auth-shell .card-body{padding:32px}.auth-shell h1{margin-top:0}
.E-logo-mark{font-weight:800;font-size:13px}.E-top-r form{margin:0}.E-nav span:first-child{font-size:12px;opacity:.7;min-width:18px}
@media(max-width:980px){.metrics{grid-template-columns:1fr 1fr}.variant-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.E{padding-left:0}.E-side{position:static;width:100%;max-height:none;padding:16px}.E-side .E-foot,.E-label,.E-group{display:none}.E-side .E-nav{display:flex;overflow-x:auto;white-space:nowrap;padding:3px 0}.E-side .E-nav a{flex-shrink:0}.E-logo{margin:0}.E-content{padding:16px}.E-top{padding:0 16px}.form-grid,.variant-grid{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.toolbar h1{font-size:22px}}

/* ===== ASMODULE: единый загрузчик картинок (x-image-upload) ===== */
.up{display:grid;gap:10px}
.up-label{font-size:13px;color:var(--muted);font-weight:600}
.up-zone{position:relative;display:grid;place-items:center;gap:8px;min-height:148px;padding:20px;text-align:center;cursor:pointer;border:1.5px dashed var(--input-border);border-radius:var(--r);background:var(--input-bg);transition:border-color .2s,background .2s,transform .12s}
.up-zone:hover{border-color:rgba(59,130,246,.45);background:rgba(59,130,246,.05)}
.up-zone:focus-within{outline:2px solid var(--blue);outline-offset:2px}
.up-zone.is-drag{border-color:var(--cyan);border-style:solid;background:rgba(56,189,248,.10);transform:scale(.995)}
.up-zone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;min-height:0;padding:0;border:0}
.up-ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#2563eb,#38bdf8);box-shadow:0 10px 24px rgba(37,99,235,.28);color:#fff;font-size:20px;line-height:1;pointer-events:none}
.up-zone.is-drag .up-ico{transform:translateY(-2px)}
.up-main{font-weight:700;font-size:.9rem;color:var(--text);pointer-events:none}
.up-main u{color:var(--blue);text-decoration:none;border-bottom:1px dashed currentColor}
.up-hint{font-size:.76rem;color:var(--muted);max-width:46ch;pointer-events:none}
.up-has{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:12px;border:1px solid var(--border);border-radius:var(--r);background:var(--panel2)}
.up-thumb{width:120px;height:72px;border-radius:12px;object-fit:contain;background:rgba(255,255,255,.92);border:1px solid var(--border);flex-shrink:0}
.up-meta{display:grid;gap:3px;min-width:0}
.up-meta strong{font-size:.84rem}
.up-meta span{font-size:.74rem;color:var(--muted);overflow-wrap:anywhere}
.up-acts{margin-left:auto;display:flex;gap:6px}
.up-bar{height:5px;border-radius:99px;background:var(--input-bg);overflow:hidden}
.up-bar i{display:block;height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,#2563eb,#38bdf8);transition:width .18s}
[data-theme="light"] .up-zone:hover{background:rgba(59,130,246,.04)}
[data-theme="light"] .up-thumb{background:#fff}
@media(max-width:760px){.up-zone{min-height:124px;padding:16px}.up-thumb{width:92px;height:58px}}
.form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:980px){.form-grid-3{grid-template-columns:1fr}}
.card-body>.stack>h2:first-child,.card-body>h2:first-child{margin-top:0}
.up+.up{margin-top:0}

/* ===== Перетаскивание строк ===== */
[data-sortable] tr{transition:background .15s,opacity .15s}
[data-sortable] tr.is-dragging{opacity:.45;background:rgba(59,130,246,.10)}
[data-drag-handle]{cursor:grab;user-select:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;color:var(--muted);background:var(--input-bg);border:1px solid var(--border);line-height:1;font-size:13px;transition:.15s}
[data-drag-handle]:hover{color:var(--text);border-color:rgba(59,130,246,.35);background:rgba(59,130,246,.08)}
[data-drag-handle]:active{cursor:grabbing}
.pos-cell{display:flex;align-items:center;gap:8px}
.pos-cell .pos-num{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.78rem;min-width:2ch}
.pos-arrows{display:grid;gap:2px}
@media(hover:none){[data-drag-handle]{display:none}}

/* ===== Всплывающие уведомления ===== */
.toasts{position:fixed;right:18px;bottom:18px;z-index:9000;display:grid;gap:10px;max-width:min(420px,calc(100vw - 36px));pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:11px;padding:13px 15px;border-radius:var(--r);border:1px solid var(--border);background:var(--panel2);color:var(--text);box-shadow:0 18px 40px rgba(0,0,0,.34);font-size:.86rem;font-weight:600;line-height:1.45;transform:translateY(10px);opacity:0;transition:transform .22s cubic-bezier(.22,1,.36,1),opacity .22s}
.toast.in{transform:translateY(0);opacity:1}
.toast.out{transform:translateY(10px);opacity:0}
.toast-ico{width:26px;height:26px;border-radius:9px;flex-shrink:0;display:grid;place-items:center;font-size:13px;color:#fff}
.toast-success{border-color:rgba(34,197,94,.30)}
.toast-success .toast-ico{background:linear-gradient(135deg,#16a34a,#34d399)}
.toast-error{border-color:rgba(239,68,68,.32)}
.toast-error .toast-ico{background:linear-gradient(135deg,#dc2626,#f87171)}
.toast-info{border-color:rgba(59,130,246,.30)}
.toast-info .toast-ico{background:linear-gradient(135deg,#2563eb,#38bdf8)}
.toast-x{margin-left:auto;background:none;border:0;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:2px 4px;border-radius:6px}
.toast-x:hover{color:var(--text);background:rgba(255,255,255,.06)}
[data-theme="light"] .toast{background:#fff;box-shadow:0 18px 40px rgba(15,23,41,.14)}
@media(max-width:600px){.toasts{left:12px;right:12px;bottom:12px;max-width:none}}
@media(prefers-reduced-motion:reduce){.toast{transition:none}}

/* ===== Порядок пунктов меню ===== */
.menu-order{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.menu-order li{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--rs);background:var(--input-bg);transition:background .15s,opacity .15s}
.menu-order li.is-dragging{opacity:.45;background:rgba(59,130,246,.10)}
.menu-order-label{font-weight:700;font-size:.88rem}
.menu-order code{margin-left:auto;font-size:.72rem}

/* ===== Подсветка поля с ошибкой ===== */
.field-bad{animation:field-bad 1.6s ease-out}
.field-bad input,.field-bad select,.field-bad textarea,.field-bad .up-zone{border-color:rgba(239,68,68,.65)!important}
@keyframes field-bad{0%{box-shadow:0 0 0 0 rgba(239,68,68,.45)}70%{box-shadow:0 0 0 7px rgba(239,68,68,0)}100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}}
.notice.error{scroll-margin-top:84px}
label.field,.up{scroll-margin-top:84px}
@media(prefers-reduced-motion:reduce){.field-bad{animation:none}}

/* ===== Закреплённая панель действий формы ===== */
.form-actions{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;margin:0 -18px -18px;padding:14px 18px;border-top:1px solid var(--border);border-radius:0 0 var(--r) var(--r);background:var(--panel2);backdrop-filter:blur(12px);box-shadow:0 -10px 24px rgba(0,0,0,.18)}
[data-theme="light"] .form-actions{background:rgba(255,255,255,.96);box-shadow:0 -10px 24px rgba(15,23,41,.06)}
[data-theme="light"] .form-actions--inline{background:none;box-shadow:none}
/* Панель кнопок в середине блока, а не в подвале формы.
   Липкая версия с bottom:0 уезжает к нижнему краю окна и наползает на
   то, что идёт следом — в товарах она закрывала шапку таблицы
   характеристик. Здесь кнопка просто стоит в потоке. */
.form-actions--inline{position:static;margin:0;padding:14px 0 0;border-top:0;border-radius:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}
.form-actions .muted{margin-left:4px;font-size:.8rem}
.notice.error[data-errors]{scroll-margin-top:84px}
.notice.error[data-errors]:focus{outline:2px solid var(--red);outline-offset:3px}
@media(max-width:760px){.form-actions{margin:0 -14px -14px;padding:12px 14px}.form-actions--inline{margin:0;padding:12px 0 0}}

/* ===== Иконка категории ===== */
.cat-icon-preview{display:inline-grid;place-items:center;width:56px;height:56px;flex-shrink:0;border:1px solid var(--border);border-radius:12px;background:var(--input-bg);color:var(--text)}
.cat-icon-preview svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.5}
.cat-icon-preview--sm{width:38px;height:38px;border-radius:9px}
.cat-icon-preview--sm svg{width:22px;height:22px}
.cat-seo{border:1px solid var(--border);border-radius:var(--r);padding:14px 18px;background:var(--input-bg)}
.cat-seo>summary{cursor:pointer;font-weight:700;padding:0}
.up-thumb--svg{display:grid;place-items:center;background:var(--input-bg);color:var(--text)}
.up-thumb--svg svg{width:38px;height:38px;stroke:currentColor;fill:none;stroke-width:1.5}
.up-thumb--svg .muted{font-size:.72rem;font-weight:700;letter-spacing:.06em}

/* ===== Галерея товара ===== */
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;margin-bottom:14px}
.gal-item{position:relative;display:flex;flex-direction:column;gap:8px;margin:0;padding:10px;border:1px solid var(--border);border-radius:var(--r);background:var(--input-bg);cursor:default}
.gal-item img{width:100%;height:118px;object-fit:cover;border-radius:9px;background:var(--panel2);pointer-events:none}
.gal-item figcaption{font-size:.78rem;font-weight:700;color:var(--muted)}
.gal-item:first-child figcaption{color:var(--text)}
.gal-drag{position:absolute;top:8px;left:8px;z-index:2;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--panel2);cursor:grab;line-height:1;user-select:none}
.gal-item.is-dragging{opacity:.45}

/* ===== Отбор товаров во вкладку витрины ===== */
.pick{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.pick-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r);background:var(--input-bg)}
.pick-item img{width:52px;height:40px;object-fit:cover;border-radius:7px;background:var(--panel2);pointer-events:none}
.pick-text{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}
.pick-text strong{font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-text .muted{font-size:.78rem}
.pick-drag{display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;border-radius:7px;background:var(--panel2);cursor:grab;line-height:1;user-select:none}
.pick-item.is-dragging{opacity:.45}
/* Товары ниже лимита вкладки на сайт не попадут — видно сразу, без арифметики. */
.pick-item.is-over{opacity:.55;border-style:dashed}

/* ===== Заявки с сайта ===== */
/* Новая заявка помечена полосой слева: взглядом видно, что не разобрано. */
.table tbody tr.is-fresh td{background:rgba(59,130,246,.06)}
.table tbody tr.is-fresh td:first-child{box-shadow:inset 3px 0 0 var(--blue)}
[data-theme="light"] .table tbody tr.is-fresh td{background:rgba(59,130,246,.05)}
/* Раскрытая заявка: карточка внутри строки, а не вторая таблица. */
.lead-card{border:1px solid var(--border);border-radius:var(--r);background:var(--panel2);padding:16px;margin:4px 0}
.lead-card code{overflow-wrap:anywhere}
