/* ============================================================
   LcdPCB — дизайн-система. Предмет: печатные платы.
   Медь (акцент) + паяльная маска (teal) на тёмном субстрате.
   ============================================================ */

/* ---- Токены (по умолчанию — тёмная тема-«субстрат») ---- */
:root {
  --ground:#0e1512; --grad-top:#122019;
  --surface:#152019; --surface-2:#1b2a22; --surface-3:#213229;
  --line:#26372d; --line-soft:#1e2c24;
  --text:#eef3f0; --muted:#93a69c; --faint:#6f8177;
  --copper:#e59a4a; --copper-hi:#f2ab5c; --copper-dim:rgba(229,154,74,.14);
  --teal:#33c2a2; --teal-dim:rgba(51,194,162,.14);
  --success:#48c983; --warn:#e6b23e; --danger:#ec6a5e;
  --on-copper:#1a1206;
  --shadow:0 10px 40px -12px rgba(0,0,0,.6);
  --shadow-sm:0 4px 16px -6px rgba(0,0,0,.5);
  --r-sm:8px; --r:12px; --r-lg:18px; --r-xl:26px;
  --f-display:"Unbounded",system-ui,sans-serif;
  --f-ui:"Manrope",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,monospace;
  --nav-h:64px;
  --side-w:248px; --rail-w:320px; --content-max:1200px; --stream-max:660px;
  color-scheme:dark;
}
@media (prefers-color-scheme: light) {
  :root {
    --ground:#eaeee9; --grad-top:#f2f5f1;
    --surface:#ffffff; --surface-2:#f3f6f2; --surface-3:#e9efea;
    --line:#d8e0da; --line-soft:#e6ece7;
    --text:#16211c; --muted:#5b6b62; --faint:#7d8c83;
    --copper:#b06a26; --copper-hi:#c07b31; --copper-dim:rgba(176,106,38,.12);
    --teal:#128870; --teal-dim:rgba(18,136,112,.12);
    --success:#178a54; --warn:#b07d16; --danger:#c9463c;
    --on-copper:#fff6ec;
    --shadow:0 12px 40px -16px rgba(30,50,40,.25);
    --shadow-sm:0 4px 14px -6px rgba(30,50,40,.18);
    color-scheme:light;
  }
}
:root[data-theme="light"] {
  --ground:#eaeee9; --grad-top:#f2f5f1;
  --surface:#ffffff; --surface-2:#f3f6f2; --surface-3:#e9efea;
  --line:#d8e0da; --line-soft:#e6ece7;
  --text:#16211c; --muted:#5b6b62; --faint:#7d8c83;
  --copper:#b06a26; --copper-hi:#c07b31; --copper-dim:rgba(176,106,38,.12);
  --teal:#128870; --teal-dim:rgba(18,136,112,.12);
  --success:#178a54; --warn:#b07d16; --danger:#c9463c;
  --on-copper:#fff6ec;
  --shadow:0 12px 40px -16px rgba(30,50,40,.25);
  --shadow-sm:0 4px 14px -6px rgba(30,50,40,.18);
  color-scheme:light;
}
:root[data-theme="dark"] {
  --ground:#0e1512; --grad-top:#122019;
  --surface:#152019; --surface-2:#1b2a22; --surface-3:#213229;
  --line:#26372d; --line-soft:#1e2c24;
  --text:#eef3f0; --muted:#93a69c; --faint:#6f8177;
  --copper:#e59a4a; --copper-hi:#f2ab5c; --copper-dim:rgba(229,154,74,.14);
  --teal:#33c2a2; --teal-dim:rgba(51,194,162,.14);
  --success:#48c983; --warn:#e6b23e; --danger:#ec6a5e;
  --on-copper:#1a1206;
  color-scheme:dark;
}

*,*::before,*::after { box-sizing:border-box; }
html,body { margin:0; height:100%; }
body {
  font-family:var(--f-ui); color:var(--text); background:var(--ground);
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; color:inherit; }
h1,h2,h3,h4 { margin:0; font-weight:700; text-wrap:balance; letter-spacing:-.01em; }
::selection { background:var(--copper); color:var(--on-copper); }
:focus-visible { outline:2px solid var(--copper); outline-offset:2px; border-radius:4px; }
::-webkit-scrollbar { width:11px; height:11px; }
::-webkit-scrollbar-thumb { background:var(--line); border-radius:8px; border:3px solid transparent; background-clip:padding-box; }
::-webkit-scrollbar-thumb:hover { background:var(--surface-3); }

.mono { font-family:var(--f-mono); }
.eyebrow { font-family:var(--f-mono); font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--copper); }
.muted { color:var(--muted); }
.tnum { font-variant-numeric:tabular-nums; }

/* ============================================================
   Кнопки
   ============================================================ */
.btn {
  --bg:var(--surface-2); --bd:var(--line);
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:11px 18px; border-radius:var(--r-sm); border:1px solid var(--bd);
  background:var(--bg); font-weight:600; font-size:14px; cursor:pointer;
  transition:.15s transform,.15s background,.15s border-color,.15s box-shadow; white-space:nowrap;
}
.btn:hover { transform:translateY(-1px); border-color:var(--faint); }
.btn:active { transform:translateY(0); }
.btn:disabled { opacity:.5; cursor:not-allowed; transform:none; }
.btn.primary { --bg:linear-gradient(180deg,var(--copper-hi),var(--copper)); --bd:transparent; color:var(--on-copper); box-shadow:0 6px 20px -8px var(--copper); }
.btn.primary:hover { box-shadow:0 10px 26px -8px var(--copper); }
.btn.ghost { --bg:transparent; }
.btn.teal { --bg:transparent; --bd:color-mix(in srgb,var(--teal) 45%,transparent); color:var(--teal); }
.btn.danger { --bg:transparent; --bd:color-mix(in srgb,var(--danger) 45%,transparent); color:var(--danger); }
.btn.sm { padding:8px 13px; font-size:13px; }
.btn.lg { padding:14px 26px; font-size:16px; }
.btn.block { width:100%; }
.icon-btn { display:inline-grid; place-items:center; width:38px; height:38px; border-radius:var(--r-sm); border:1px solid var(--line); background:var(--surface-2); cursor:pointer; transition:.15s; }
.icon-btn:hover { border-color:var(--copper); color:var(--copper); }

/* ============================================================
   Формы
   ============================================================ */
.field { display:block; margin-bottom:16px; }
.field > span { display:block; font-size:13px; color:var(--muted); margin-bottom:7px; font-weight:500; }
.input,input[type=text],input[type=email],input[type=password],input[type=number],select,textarea {
  width:100%; padding:11px 13px; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-sm); font-size:14px; transition:.15s border-color,.15s box-shadow;
}
.input:focus,input:focus,select:focus,textarea:focus { border-color:var(--copper); box-shadow:0 0 0 3px var(--copper-dim); outline:none; }
textarea { resize:vertical; min-height:84px; font-family:inherit; }
.row { display:flex; gap:12px; }
.row > * { flex:1; min-width:0; }
.check { display:flex; align-items:center; gap:10px; cursor:pointer; font-size:14px; padding:6px 0; }
.check input { width:17px; height:17px; accent-color:var(--copper); }
.seg { display:flex; gap:8px; }
.seg label { flex:1; }
.seg input { position:absolute; opacity:0; pointer-events:none; }
.seg .opt { display:block; padding:14px; border:1px solid var(--line); border-radius:var(--r); cursor:pointer; transition:.15s; text-align:center; }
.seg input:checked + .opt { border-color:var(--copper); background:var(--copper-dim); box-shadow:0 0 0 1px var(--copper) inset; }
.seg .opt b { display:block; margin-bottom:2px; }
.seg .opt small { color:var(--muted); font-size:12px; }

/* ============================================================
   Пиллы статусов / бейджи
   ============================================================ */
.pill { display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:999px; font-size:12px; font-weight:600; font-family:var(--f-mono); letter-spacing:.02em; border:1px solid transparent; }
.pill::before { content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.pill.open { color:var(--teal); background:var(--teal-dim); }
.pill.in_progress { color:var(--copper); background:var(--copper-dim); }
.pill.completed { color:var(--success); background:color-mix(in srgb,var(--success) 14%,transparent); }
.pill.cancelled,.pill.declined { color:var(--faint); background:color-mix(in srgb,var(--faint) 14%,transparent); }
.pill.accepted { color:var(--success); background:color-mix(in srgb,var(--success) 14%,transparent); }
.pill.pending { color:var(--warn); background:color-mix(in srgb,var(--warn) 14%,transparent); }
.tag { display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:var(--r-sm); font-size:12px; background:var(--surface-2); border:1px solid var(--line); color:var(--muted); font-family:var(--f-mono); }

/* ============================================================
   Карточки
   ============================================================ */
.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-sm); }
.card.pad { padding:22px; }

/* аватар */
.avatar { display:inline-grid; place-items:center; width:40px; height:40px; border-radius:50%; background:linear-gradient(135deg,var(--surface-3),var(--surface-2)); border:1px solid var(--line); font-weight:700; color:var(--copper); flex:none; font-size:15px; }
.avatar.sm { width:30px; height:30px; font-size:12px; }

/* ============================================================
   Топбар приложения
   ============================================================ */
/* --- Оболочка: боковая навигация + контент --- */
.app-shell { display:grid; grid-template-columns:var(--side-w) minmax(0,1fr); min-height:100vh; }
.sidebar { position:sticky; top:0; align-self:start; height:100vh; z-index:30;
  display:flex; flex-direction:column; gap:5px; padding:20px 15px 18px;
  border-right:1px solid var(--line); background:linear-gradient(180deg,var(--grad-top),var(--ground)); }
.side-brand { display:flex; align-items:center; gap:11px; padding:4px 8px 12px;
  font-family:var(--f-display); font-weight:700; font-size:19px; cursor:pointer; }
.side-brand svg { width:30px; height:30px; }
.side-brand span { color:var(--copper); }
.side-cta { width:100%; margin-bottom:12px; }
.side-nav { display:flex; flex-direction:column; gap:3px; }
.side-nav a { display:flex; align-items:center; gap:13px; padding:11px 13px; border-radius:var(--r);
  color:var(--muted); font-weight:600; font-size:14.5px; cursor:pointer; border:1px solid transparent; transition:.14s; }
.side-nav a svg { flex:none; opacity:.82; transition:.14s; }
.side-nav a:hover { color:var(--text); background:var(--surface-2); }
.side-nav a.active { color:var(--text); background:var(--surface-2); border-color:var(--line); box-shadow:inset 3px 0 0 var(--copper); }
.side-nav a.active svg { color:var(--copper); opacity:1; }
.side-nav a .np { margin-left:auto; min-width:20px; height:20px; padding:0 6px; border-radius:999px;
  background:var(--copper); color:var(--on-copper); font-size:11px; font-weight:700; display:none;
  place-items:center; font-variant-numeric:tabular-nums; }
.side-nav a .np.show { display:grid; }
.side-foot { margin-top:auto; padding-top:14px; border-top:1px solid var(--line-soft); display:flex; align-items:center; gap:8px; }
.userchip { display:flex; align-items:center; gap:9px; padding:6px 12px 6px 6px; border-radius:999px; border:1px solid var(--line); background:var(--surface-2); cursor:pointer; transition:.15s border-color; }
.userchip:hover { border-color:var(--faint); }
.side-foot .userchip { flex:1; min-width:0; }
.userchip .uc-text { display:flex; flex-direction:column; justify-content:center; line-height:1.18; text-align:left; min-width:0; }
.userchip b { font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.userchip small { color:var(--muted); font-size:11.5px; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Слим-топбар только для мобильных */
.mobile-top { display:none; }

/* Бренд/спейсер — используются лендингом (.lp-nav) */
.brand { display:flex; align-items:center; gap:10px; font-family:var(--f-display); font-weight:700; font-size:17px; cursor:pointer; }
.brand svg { width:28px; height:28px; }
.brand span { color:var(--copper); }
.spacer { flex:1; }

/* ============================================================
   Оболочка контента
   ============================================================ */
main { min-width:0; }
.wrap { max-width:var(--content-max); margin:0 auto; padding:34px 40px 80px; }
.wrap.narrow { max-width:760px; }
.wrap.wide { max-width:1360px; }

/* Двухколоночная раскладка: поток контента + контекстный рельс */
.split { display:grid; grid-template-columns:minmax(0,var(--stream-max)) var(--rail-w); gap:30px; align-items:start; }
.split .stream { min-width:0; display:flex; flex-direction:column; }
.rail { position:sticky; top:24px; display:flex; flex-direction:column; gap:16px; }
.rail-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:18px 20px; box-shadow:var(--shadow-sm); }
.rail-card h4 { font-size:12px; text-transform:uppercase; letter-spacing:.06em; font-family:var(--f-mono); color:var(--muted); margin:0 0 12px; }
.rail-card .rc-item { display:flex; gap:11px; align-items:flex-start; padding:9px 0; border-top:1px solid var(--line-soft); font-size:13.5px; }
.rail-card .rc-item:first-of-type { border-top:none; }
.rail-card .rc-item .rc-ic { width:30px; height:30px; border-radius:9px; display:grid; place-items:center; background:var(--copper-dim); color:var(--copper); flex:none; }
.rail-card .rc-item .rc-ic.teal { background:var(--teal-dim); color:var(--teal); }
.rail-card .rc-item b { display:block; font-size:13.5px; }
.rail-card .rc-item small { color:var(--muted); font-size:12.5px; }
.rail-order { display:flex; flex-direction:column; gap:5px; padding:11px 0; border-top:1px solid var(--line-soft); cursor:pointer; }
.rail-order:first-of-type { border-top:none; padding-top:2px; }
.rail-order:hover .ro-title { color:var(--copper); }
.rail-order .ro-title { font-weight:600; font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; transition:.14s; }
.rail-order .ro-meta { display:flex; gap:8px; align-items:center; color:var(--muted); font-size:12px; }
.page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:24px; flex-wrap:wrap; }
.page-head h1 { font-size:28px; }
.page-head p { color:var(--muted); margin:6px 0 0; }
.grid { display:grid; gap:18px; }
.grid.cards { grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); }
.stat-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin-bottom:26px; }
.stat { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:16px 18px; }
.stat .n { font-family:var(--f-display); font-size:26px; font-weight:700; font-variant-numeric:tabular-nums; }
.stat .l { font-size:12px; color:var(--muted); font-family:var(--f-mono); letter-spacing:.04em; text-transform:uppercase; margin-top:4px; }

/* карточка заказа */
.order-card { padding:20px; display:flex; flex-direction:column; gap:14px; cursor:pointer; transition:.16s transform,.16s border-color; }
.order-card:hover { transform:translateY(-3px); border-color:color-mix(in srgb,var(--copper) 40%,var(--line)); }
.order-card .top { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; min-width:0; }
.order-card h3 { font-size:17px; flex:1; min-width:0; overflow-wrap:anywhere; }
.order-card .top svg, .order-card .top .pill { flex:none; }
.order-card .desc { color:var(--muted); font-size:13.5px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.order-card .meta { display:flex; flex-wrap:wrap; gap:8px; }
.order-card .foot { display:flex; align-items:center; justify-content:space-between; gap:8px; border-top:1px solid var(--line-soft); padding-top:12px; }
.price { font-family:var(--f-display); font-weight:700; color:var(--copper); font-variant-numeric:tabular-nums; }

/* empty */
.empty { text-align:center; padding:64px 24px; color:var(--muted); }
.empty svg { width:54px; height:54px; opacity:.5; margin-bottom:14px; }

/* ============================================================
   Модалка
   ============================================================ */
#overlay { position:fixed; inset:0; z-index:60; display:none; align-items:center; justify-content:center; padding:20px;
  background:color-mix(in srgb,#000 55%,transparent); backdrop-filter:blur(4px); }
#overlay.open { display:flex; }
.modal { width:480px; max-width:100%; max-height:90vh; overflow-y:auto; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-xl); box-shadow:var(--shadow); animation:pop .2s ease; }
.modal.wide { width:760px; }
@keyframes pop { from { transform:translateY(12px) scale(.98); opacity:0; } }
.modal header { display:flex; align-items:center; gap:12px; padding:20px 22px 0; }
.modal header h2 { font-size:19px; flex:1; }
.modal .body { padding:20px 22px 24px; }

/* toast */
#toast { position:fixed; left:50%; bottom:26px; transform:translateX(-50%) translateY(20px); z-index:80;
  background:var(--surface-3); border:1px solid var(--line); padding:12px 20px; border-radius:var(--r);
  box-shadow:var(--shadow); opacity:0; transition:.28s; pointer-events:none; font-size:14px; max-width:90vw; }
#toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
#toast.err { border-color:color-mix(in srgb,var(--danger) 55%,var(--line)); }
#toast.ok { border-color:color-mix(in srgb,var(--success) 55%,var(--line)); }

/* spinner */
.spin { width:18px; height:18px; border:2.5px solid var(--line); border-top-color:var(--copper); border-radius:50%; animation:rot .7s linear infinite; }
@keyframes rot { to { transform:rotate(360deg); } }
#loader { position:fixed; inset:0; display:none; place-items:center; z-index:90; background:color-mix(in srgb,var(--ground) 70%,transparent); }
#loader.on { display:grid; }

/* map */
.map-box { width:100%; height:520px; border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--line); background:var(--surface-2); position:relative; }
.map-ph { position:absolute; inset:0; display:grid; place-items:center; text-align:center; padding:30px; color:var(--muted); }

/* ============================================================
   Лендинг (редакционный)
   ============================================================ */
.lp-nav { position:sticky; top:0; z-index:30; display:flex; align-items:center; padding:18px 32px;
  background:color-mix(in srgb,var(--ground) 75%,transparent); backdrop-filter:blur(12px); border-bottom:1px solid transparent; }
.hero { position:relative; overflow:hidden; }
.hero canvas { position:absolute; inset:0; width:100%; height:100%; z-index:0; }
.hero .veil { position:absolute; inset:0; z-index:1;
  background:radial-gradient(120% 90% at 78% 8%,transparent 30%,var(--ground) 78%),
             linear-gradient(180deg,var(--grad-top),transparent 40%,var(--ground)); }
.hero-inner { position:relative; z-index:2; max-width:1160px; margin:0 auto; padding:110px 24px 96px; }
.hero h1 { font-family:var(--f-display); font-size:clamp(38px,6.5vw,78px); line-height:1.02; font-weight:800; max-width:16ch; }
.hero h1 em { font-style:normal; color:var(--copper); }
.hero .sub { font-size:clamp(16px,2vw,20px); color:var(--muted); max-width:52ch; margin:26px 0 34px; }
.hero .cta { display:flex; gap:14px; flex-wrap:wrap; }
.hero .trust { margin-top:38px; display:flex; gap:26px; flex-wrap:wrap; color:var(--faint); font-family:var(--f-mono); font-size:13px; }
.hero .trust b { color:var(--text); }

.section { max-width:1160px; margin:0 auto; padding:72px 24px; }
.section h2 { font-size:clamp(26px,3.6vw,38px); font-family:var(--f-display); }
.section .lead { color:var(--muted); max-width:56ch; margin:12px 0 0; }
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:40px; }
.step { padding:26px; border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface); position:relative; }
.step .k { font-family:var(--f-mono); color:var(--copper); font-size:13px; letter-spacing:.1em; }
.step h3 { font-size:19px; margin:14px 0 8px; }
.step p { color:var(--muted); font-size:14px; margin:0; }
.feat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; margin-top:40px; }
.feat { padding:24px; border:1px solid var(--line); border-radius:var(--r-lg); background:linear-gradient(180deg,var(--surface),var(--surface-2)); }
.feat .ic { width:44px; height:44px; border-radius:12px; display:grid; place-items:center; background:var(--copper-dim); color:var(--copper); margin-bottom:16px; }
.feat h3 { font-size:16px; margin-bottom:8px; }
.feat p { color:var(--muted); font-size:14px; margin:0; }
.cta-band { max-width:1160px; margin:40px auto 80px; padding:56px 40px; border-radius:var(--r-xl); text-align:center;
  border:1px solid var(--line); background:radial-gradient(120% 140% at 50% 0%,var(--copper-dim),transparent 60%),var(--surface); }
.cta-band h2 { font-family:var(--f-display); font-size:clamp(26px,4vw,40px); }
.cta-band p { color:var(--muted); margin:14px auto 28px; max-width:44ch; }
footer.lp { border-top:1px solid var(--line); padding:36px 24px; text-align:center; color:var(--faint); font-size:13px; }

/* ============================================================
   Студия платы (3D + засветка) — компактная панель
   ============================================================ */
.studio { display:grid; grid-template-columns:1fr 340px; gap:0; height:calc(100vh - var(--nav-h)); }
.studio .stage { position:relative; background:#0b0f0d; min-width:0; }
.studio canvas.gl { width:100%; height:100%; display:block; }
.studio .stage2d { position:absolute; inset:0; display:none; overflow:auto; padding:20px; text-align:center; }
.studio .stage2d img { max-width:100%; box-shadow:0 0 0 1px var(--line),var(--shadow); image-rendering:pixelated;
  background:repeating-conic-gradient(#2a2a2a 0 25%,#222 0 50%) 50%/22px 22px; }
.studio .side { background:var(--surface); border-left:1px solid var(--line); overflow-y:auto; }
.studio .side .sec { padding:16px 18px; border-bottom:1px solid var(--line-soft); }
.studio .side h4 { font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); font-family:var(--f-mono); margin:0 0 12px; }
.studio .modes { display:flex; gap:6px; padding:12px 18px; border-bottom:1px solid var(--line); }
.mode-btn { flex:1; padding:9px; border:1px solid var(--line); background:var(--surface-2); border-radius:var(--r-sm); font-size:13px; cursor:pointer; font-weight:600; }
.mode-btn.active { background:var(--copper); border-color:var(--copper); color:var(--on-copper); }
.mode-btn:disabled { opacity:.4; cursor:not-allowed; }
.layer { display:flex; align-items:center; gap:9px; padding:7px 4px; font-size:13px; border-radius:6px; }
.layer:hover { background:var(--surface-2); }
.layer input[type=checkbox] { width:16px; height:16px; accent-color:var(--copper); }
.swatch { width:13px; height:13px; border-radius:3px; border:1px solid #0007; flex:none; }
.layer .meta { flex:1; overflow:hidden; }
.layer .meta small { display:block; color:var(--muted); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kv { display:flex; justify-content:space-between; font-size:13px; padding:4px 0; color:var(--muted); }
.kv b { color:var(--text); font-weight:600; }
.badge { display:inline-block; padding:3px 9px; border-radius:6px; font-size:11px; background:var(--surface-2); border:1px solid var(--line); font-family:var(--f-mono); }
.badge.ok { color:var(--success); border-color:color-mix(in srgb,var(--success) 40%,var(--line)); }
.badge.bad { color:var(--danger); border-color:color-mix(in srgb,var(--danger) 40%,var(--line)); }
.studio .hint { position:absolute; left:16px; bottom:14px; font-size:12px; color:var(--muted); background:#000a; padding:6px 10px; border-radius:6px; pointer-events:none; }
table.drills { width:100%; border-collapse:collapse; font-size:12px; font-variant-numeric:tabular-nums; }
table.drills th,table.drills td { text-align:left; padding:4px 6px; border-bottom:1px solid var(--line-soft); }
table.drills th { color:var(--muted); font-weight:500; }
.printer-list { max-height:280px; overflow-y:auto; border:1px solid var(--line); border-radius:var(--r); margin-bottom:12px; }
.printer { display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line-soft); cursor:pointer; font-size:13px; }
.printer:last-child { border-bottom:none; }
.printer:hover { background:var(--surface-2); }
.printer.sel { background:var(--copper-dim); }
.printer .specs { color:var(--muted); font-size:11px; margin-left:auto; text-align:right; font-family:var(--f-mono); }

/* услуги исполнителя */
.svc-block { border-top:1px solid var(--line); margin:8px 0 6px; padding-top:18px; }
.svc-grid { display:grid; grid-template-columns:1fr 1fr; gap:2px 18px; }
.price-row { display:grid; grid-template-columns:1.3fr .7fr .95fr 1.5fr auto; gap:8px; margin-bottom:8px; align-items:center; }
.price-row input, .price-row select { padding:9px 10px; font-size:13px; }
.pricelist { display:grid; gap:5px; margin:2px 0 10px; padding:12px 14px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--surface-2); }
.pl-row { display:flex; gap:8px; align-items:baseline; font-size:13px; flex-wrap:wrap; }
.pl-row span { color:var(--muted); flex:1; min-width:90px; }
.pl-row b { color:var(--copper); font-variant-numeric:tabular-nums; white-space:nowrap; }
.pl-row small { color:var(--faint); font-size:12px; width:100%; }

/* обучение — docs-layout */
.safety { display:flex; gap:12px; align-items:flex-start; padding:16px 18px; border-radius:var(--r); border:1px solid color-mix(in srgb,var(--warn) 40%,var(--line)); background:color-mix(in srgb,var(--warn) 9%,transparent); margin-bottom:26px; font-size:14px; }
.learn-layout { display:grid; grid-template-columns:264px 1fr; gap:30px; align-items:start; }
.learn-side { position:sticky; top:84px; display:flex; flex-direction:column; gap:3px; }
.learn-side .lt { display:flex; align-items:center; gap:11px; padding:11px 13px; border-radius:var(--r); cursor:pointer; color:var(--muted); border:1px solid transparent; font-size:14px; transition:.14s; }
.learn-side .lt:hover { background:var(--surface-2); color:var(--text); }
.learn-side .lt.active { background:var(--surface-2); color:var(--text); border-color:var(--line); box-shadow:inset 3px 0 0 var(--copper); }
.learn-main { min-width:0; }
.learn-hero { width:100%; border-radius:var(--r-lg); overflow:hidden; border:1px solid var(--line); margin-bottom:24px; background:#0e1512; }
.learn-hero svg, .learn-hero img { display:block; width:100%; height:auto; }
.lesson-head { display:flex; align-items:center; gap:14px; margin-bottom:8px; }
.lesson-head .ic { width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background:var(--copper-dim); color:var(--copper); flex:none; }
.lesson-head h3 { font-size:22px; }
.lesson-badges { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 18px; }
.lesson-body h4 { font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-family:var(--f-mono); margin:22px 0 12px; }
.lesson-body ul.mats { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:8px 20px; }
.lesson-body ul.mats li { position:relative; padding-left:20px; font-size:14px; }
.lesson-body ul.mats li::before { content:""; position:absolute; left:4px; top:9px; width:6px; height:6px; border-radius:50%; background:var(--copper); }
.lesson-body ol.steps { margin:0; padding:0; list-style:none; counter-reset:st; display:grid; gap:12px; }
.lesson-body ol.steps li { position:relative; padding-left:42px; counter-increment:st; }
.lesson-body ol.steps li::before { content:counter(st); position:absolute; left:0; top:-2px; width:29px; height:29px; border-radius:8px; background:var(--surface-2); border:1px solid var(--line); display:grid; place-items:center; font-family:var(--f-mono); font-size:13px; color:var(--copper); font-weight:600; }
.lesson-body p { max-width:72ch; }
.lesson-body img { max-width:100%; border-radius:var(--r); margin:10px 0; }
.lesson-body .tip { margin-top:18px; padding:14px 16px; border-radius:var(--r); background:var(--teal-dim); border:1px solid color-mix(in srgb,var(--teal) 30%,transparent); font-size:14px; }
.lesson-body .tip b { color:var(--teal); }
.lesson-body .recipe { margin-top:12px; padding:14px 16px; border-radius:var(--r); border:1px solid var(--line); background:var(--surface-2); }
/* редактор материала (Word-подобный) */
.rte-toolbar { display:flex; flex-wrap:wrap; gap:4px; padding:8px; border:1px solid var(--line); border-bottom:none; border-radius:var(--r-sm) var(--r-sm) 0 0; background:var(--surface-2); }
.rte-toolbar button { padding:6px 11px; border:1px solid var(--line); background:var(--surface); border-radius:6px; cursor:pointer; font-size:13px; }
.rte-toolbar button:hover { border-color:var(--copper); }
.rte { min-height:220px; max-height:420px; overflow-y:auto; padding:14px 16px; border:1px solid var(--line); border-radius:0 0 var(--r-sm) var(--r-sm); background:var(--surface); font-size:14px; line-height:1.6; }
.rte:focus { outline:none; border-color:var(--copper); }
.rte h4 { margin:14px 0 8px; color:var(--copper); font-size:14px; }
.rte img { max-width:100%; border-radius:8px; }
.rte ul, .rte ol { padding-left:22px; }
/* админ-таблица пользователей */
.admin-tbl { width:100%; border-collapse:collapse; font-size:14px; min-width:660px; }
.admin-tbl th { text-align:left; padding:12px 16px; color:var(--muted); font-size:12px; font-family:var(--f-mono); text-transform:uppercase; letter-spacing:.04em; border-bottom:1px solid var(--line); }
.admin-tbl td { padding:12px 16px; border-bottom:1px solid var(--line-soft); vertical-align:middle; }
.admin-tbl tr:last-child td { border-bottom:none; }
.admin-tbl .icon-btn { width:33px; height:33px; }
.admin-tbl [data-act=del]:hover, .admin-tbl [data-act=block]:hover { border-color:var(--danger); color:var(--danger); }

/* --- бейдж непрочитанных в топбаре --- */
.badge-dot { position:absolute; top:-5px; right:-5px; min-width:17px; height:17px; padding:0 4px; border-radius:999px; background:var(--copper); color:var(--on-copper); font-size:10px; font-weight:700; display:grid; place-items:center; border:2px solid var(--ground); }

/* --- лента сообщества --- */
.composer textarea { resize:none; min-height:52px; }
.pimg-prev { position:relative; margin-top:10px; max-width:220px; }
.pimg-prev img { width:100%; border-radius:var(--r); display:block; }
.pimg-prev .icon-btn { position:absolute; top:6px; right:6px; width:28px; height:28px; background:#000a; }
.composer { padding:16px 18px; }
.feed-tabs { display:flex; gap:6px; margin:18px 0 16px; position:sticky; top:0; z-index:5;
  padding:10px 0; background:linear-gradient(180deg,var(--ground) 70%,transparent); }
.feed-tabs a { padding:8px 16px; border-radius:999px; font-size:13px; font-weight:600; color:var(--muted); cursor:pointer; border:1px solid var(--line); background:var(--surface); transition:.14s; }
.feed-tabs a:hover { color:var(--text); border-color:var(--faint); }
.feed-tabs a.active { background:var(--copper); border-color:var(--copper); color:var(--on-copper); }
#feed { display:grid; gap:14px; }
.feed-kind { font-family:var(--f-mono); font-size:11px; letter-spacing:.04em; text-transform:uppercase; color:var(--teal); display:flex; align-items:center; gap:6px; margin-bottom:8px; }
.feed-order { padding:18px; cursor:pointer; transition:.16s border-color; }
.feed-order:hover { border-color:color-mix(in srgb,var(--teal) 40%,var(--line)); }
.feed-order-foot { display:flex; align-items:center; gap:8px; margin-top:12px; }
.post { padding:18px; }
.post-head { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.post-text { white-space:pre-wrap; word-break:break-word; margin:0 0 12px; line-height:1.55; }
.post-img { border-radius:var(--r); overflow:hidden; border:1px solid var(--line); margin-bottom:12px; }
.post-img img { display:block; width:100%; max-height:520px; object-fit:contain; background:#0e1512; }
.post-actions { display:flex; gap:8px; border-top:1px solid var(--line-soft); padding-top:10px; }
.pa { display:flex; align-items:center; gap:7px; padding:7px 12px; border-radius:var(--r-sm); background:transparent; border:none; color:var(--muted); cursor:pointer; font-size:13px; font-weight:600; transition:.15s; }
.pa:hover { background:var(--surface-2); color:var(--text); }
.pa.liked { color:var(--copper); }
.post-comments { margin-top:12px; border-top:1px solid var(--line-soft); padding-top:12px; display:grid; gap:12px; }
.cmt { display:flex; gap:10px; font-size:14px; }
.cmt-body { flex:1; min-width:0; }
.cmt-form { display:flex; gap:8px; }
.cinput { flex:1; }
.conv { padding:14px; display:flex; gap:12px; align-items:center; cursor:pointer; transition:.15s border-color; }
.conv:hover { border-color:var(--copper); }
.conv-last { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.unread-pill { display:inline-block; min-width:20px; padding:1px 7px; border-radius:999px; background:var(--copper); color:var(--on-copper); font-size:12px; font-weight:700; font-variant-numeric:tabular-nums; }

/* --- форум --- */
.forum-cat { cursor:pointer; transition:.16s transform,.16s border-color; }
.forum-cat:hover { transform:translateY(-2px); border-color:color-mix(in srgb,var(--copper) 40%,var(--line)); }
.ic-forum { width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background:var(--teal-dim); color:var(--teal); flex:none; }
.forum-thread { cursor:pointer; transition:.15s border-color; }
.forum-thread:hover { border-color:var(--copper); }

/* --- личные сообщения (чат) --- */
.dm-wrap { display:flex; flex-direction:column; height:calc(100vh - var(--nav-h)); padding-top:0; }
.dm-head { display:flex; align-items:center; gap:12px; padding:16px 0; border-bottom:1px solid var(--line); }
.dm-messages { flex:1; overflow-y:auto; padding:18px 2px; display:flex; flex-direction:column; gap:8px; }
.msg { display:flex; }
.msg.me { justify-content:flex-end; }
.bubble { max-width:76%; padding:9px 13px 6px; border-radius:14px; font-size:14px; line-height:1.45; position:relative; word-break:break-word; }
.msg.them .bubble { background:var(--surface-2); border:1px solid var(--line); border-bottom-left-radius:4px; }
.msg.me .bubble { background:var(--copper); color:var(--on-copper); border-bottom-right-radius:4px; }
.bubble .mt { display:block; font-size:10px; opacity:.6; margin-top:3px; text-align:right; }
.dm-input { display:flex; gap:8px; align-items:flex-end; padding:12px 0 18px; border-top:1px solid var(--line); }
.dm-input textarea { flex:1; resize:none; min-height:44px; max-height:140px; }

/* Схлопывание рельса: контекст уходит под поток */
@media (max-width:1180px) {
  .split { grid-template-columns:minmax(0,1fr); }
  .rail { position:static; flex-direction:row; flex-wrap:wrap; }
  .rail > * { flex:1; min-width:240px; }
  .feed-tabs { top:0; }
}

/* Планшет/мобайл: боковая панель → нижняя таб-панель, слим-топбар сверху */
@media (max-width:900px) {
  .app-shell { grid-template-columns:1fr; }
  .sidebar { position:fixed; left:0; right:0; bottom:0; top:auto; height:auto; width:100%;
    flex-direction:row; align-items:center; gap:2px; padding:6px 6px calc(6px + env(safe-area-inset-bottom));
    border-right:none; border-top:1px solid var(--line); z-index:40;
    background:color-mix(in srgb,var(--ground) 92%,transparent); backdrop-filter:blur(14px); }
  .side-brand, .side-cta, .side-foot { display:none; }
  .side-nav { flex-direction:row; gap:2px; margin:0 auto; width:100%; max-width:560px; justify-content:space-around; }
  .side-nav a { flex-direction:column; gap:4px; padding:6px 8px; font-size:10px; font-weight:600;
    border-radius:var(--r-sm); box-shadow:none !important; border-color:transparent !important; background:transparent !important; text-align:center; }
  .side-nav a .lbl { font-size:10px; }
  .side-nav a.active { color:var(--copper); }
  .side-nav a.active svg { color:var(--copper); }
  .side-nav a .np { position:absolute; top:2px; margin:0; transform:translateX(12px); }
  .side-nav a { position:relative; }

  .mobile-top { display:flex; align-items:center; gap:8px; position:sticky; top:0; z-index:35;
    height:var(--nav-h); padding:0 16px; border-bottom:1px solid var(--line);
    background:color-mix(in srgb,var(--ground) 85%,transparent); backdrop-filter:blur(14px); }
  .mobile-top .mt-brand { display:flex; align-items:center; gap:9px; font-family:var(--f-display); font-weight:700; font-size:17px; cursor:pointer; }
  .mobile-top .mt-brand svg { width:26px; height:26px; }
  .mobile-top .mt-brand span { color:var(--copper); }

  main { padding-bottom:72px; }
  .wrap { padding:22px 16px 88px; }
  .feed-tabs { top:var(--nav-h); }
  .steps { grid-template-columns:1fr; }
  .learn-layout { grid-template-columns:1fr; }
  .learn-side { position:static; flex-direction:row; overflow-x:auto; padding-bottom:6px; }
  .learn-side .lt { white-space:nowrap; }
  .lesson-body ul.mats { grid-template-columns:1fr; }
  .studio { grid-template-columns:1fr; height:auto; }
  .studio .stage { height:52vh; }
  .studio .side { border-left:none; border-top:1px solid var(--line); }
}
@media (max-width:600px) { .svc-grid, .lesson ul.mats { grid-template-columns:1fr; } .price-row { grid-template-columns:1fr 1fr; } }
@media (prefers-reduced-motion: reduce) { * { animation:none !important; transition:none !important; } }
