/* Тексдар.1С — общая тема "Пульт" для всех страниц портала.
   Одна точка правды для цветов/шрифтов/компонентов — см. README в репозитории. */

:root{
  --bg:#0C0F14; --surface:#161B24; --surface-2:#1D2330; --ink:#E9ECF2; --muted:#8790A3; --muted-2:#5C6478;
  --accent:#FF6B4A; --accent-ink:#0C0F14; --status:#4FD1C5; --line:#262D3A; --line-2:#333B4C;
  --warn:#F0B85E; --danger:#FF6B7A;
  --ok-bg:#12291F; --ok-line:#1E3B30; --ok-ink:#5FD9AF;
  --err-bg:#2E1620; --err-line:#4A2230; --err-ink:#FF9AAC;
  --warn-bg:#2E2413; --warn-line:#4A3B1E; --warn-ink:#F0C77E;
  color-scheme: dark;
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#F4F5F8; --surface:#FFFFFF; --surface-2:#EEF0F5; --ink:#171A22; --muted:#5A6072; --muted-2:#8A90A3;
    --accent:#E85A3B; --accent-ink:#fff; --status:#0EA394; --line:#DEE1E9; --line-2:#C9CDDA;
    --warn:#B8791E; --danger:#D63C4E;
    --ok-bg:#E9F6F1; --ok-line:#C7E8DB; --ok-ink:#127A5D;
    --err-bg:#FBEAEE; --err-line:#F0C6D2; --err-ink:#B23A52;
    --warn-bg:#FBF1E0; --warn-line:#F0DBAE; --warn-ink:#8A5A16;
    color-scheme: light;
  }
}

*{box-sizing:border-box;}
html,body{margin:0;}
body{
  background:var(--bg);color:var(--ink);font-family:"IBM Plex Sans",system-ui,sans-serif;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
  background-size: 42px 42px; background-position: center top;
}
@media (prefers-color-scheme: light){
  body{background-image:linear-gradient(rgba(0,0,0,.025) 1px, transparent 1px),linear-gradient(90deg, rgba(0,0,0,.025) 1px, transparent 1px);}
}
::selection{background:var(--accent);color:#fff;}
a{color:inherit;}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;}
.display{font-family:"Unbounded",system-ui,sans-serif;}
.wrap{max-width:76rem;margin:0 auto;padding-inline:1.5rem;}
.wrap.narrow{max-width:28rem;}
.wrap.medium{max-width:40rem;}
@media (max-width:640px){.wrap{padding-inline:1.1rem;}}

/* ---------- status strip + header (shared shell) ---------- */
.status-strip{border-bottom:1px solid var(--line);background:rgba(12,15,20,.9);backdrop-filter:blur(8px);position:sticky;top:0;z-index:30;}
@media (prefers-color-scheme: light){.status-strip{background:rgba(244,245,248,.9);}}
.status-inner{display:flex;align-items:center;gap:1.6rem;padding-block:.55rem;font-size:.78rem;color:var(--muted);overflow-x:auto;}
.status-item{display:flex;align-items:center;gap:.45rem;white-space:nowrap;}
.status-item .dot{width:.4rem;height:.4rem;border-radius:50%;background:var(--muted-2);flex:none;}
.status-item .dot.ok{background:var(--status);box-shadow:0 0 0 0 rgba(79,209,197,.6);animation:pulse 2.2s infinite;}
.status-item .dot.down{background:var(--danger);}
.status-item .dot.pending{background:var(--warn);animation:blink 1s steps(2) infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(79,209,197,.5);}70%{box-shadow:0 0 0 6px rgba(79,209,197,0);}100%{box-shadow:0 0 0 0 rgba(79,209,197,0);}}
@keyframes blink{50%{opacity:.25;}}

header.site{border-bottom:1px solid var(--line);}
.headrow{display:flex;align-items:center;justify-content:space-between;padding-block:1.1rem;}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;}
.brand b{font-family:"Unbounded",sans-serif;font-weight:700;font-size:1.05rem;letter-spacing:-.01em;color:var(--ink);}
.brand .sub{color:var(--muted);font-size:.78rem;}
/* Логотип «Тексдар»: одноцветная маска (assets/logo-texdar.svg), цвет — токен --ink,
   поэтому сам переключается между тёмной и светлой темой. */
.logo{display:block;height:1.2rem;aspect-ratio:16509/1813;flex:none;background:var(--ink);
  -webkit-mask:url(/assets/logo-texdar.svg) center/contain no-repeat;mask:url(/assets/logo-texdar.svg) center/contain no-repeat;}
.brand{gap:.85rem;}
.brand .brand-sub{display:flex;align-items:center;gap:.5rem;padding-left:.85rem;border-left:1px solid var(--line-2);
  font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.02em;color:var(--muted);line-height:1.2;}
.brand .brand-sub b{font-family:"Unbounded",sans-serif;font-size:.78rem;font-weight:700;letter-spacing:0;color:var(--accent);}
@media (max-width:480px){.logo{height:1rem;}.brand .brand-sub{font-size:.68rem;padding-left:.65rem;}}
nav a.nav-logo{padding:0;border:0;margin-bottom:1.6rem;}
nav a.nav-logo .logo{height:1.05rem;}
nav.top-nav{display:flex;gap:1.6rem;font-size:.86rem;color:var(--muted);}
nav.top-nav a{text-decoration:none;}
nav.top-nav a:hover{color:var(--ink);}
@media (max-width:700px){nav.top-nav{display:none;}}

footer.site{border-top:1px solid var(--line);padding-block:1.8rem;color:var(--muted-2);font-size:.82rem;font-family:"IBM Plex Mono",monospace;}
footer.site .foot-row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem;max-width:76rem;margin:0 auto;padding-inline:1.5rem;}
footer.site a{color:var(--muted);text-decoration:none;}
footer.site a:hover{color:var(--accent);}

/* ---------- typography ---------- */
h1{font-family:"Unbounded",sans-serif;font-weight:600;font-size:clamp(1.6rem,3.4vw,2.2rem);line-height:1.15;letter-spacing:-.01em;margin:0 0 .6rem;text-wrap:balance;}
h2{font-family:"Unbounded",sans-serif;font-weight:600;font-size:1.4rem;letter-spacing:-.005em;margin:0 0 .35rem;}
h3{font-family:"Unbounded",sans-serif;font-size:1.05rem;font-weight:600;margin:0 0 .4rem;}
p{color:var(--muted);margin:0 0 1rem;}
.eyebrow{display:inline-flex;align-items:center;gap:.55rem;font-size:.76rem;font-weight:600;color:var(--status);letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.1rem;}
.eyebrow .bracket{color:var(--muted-2);}
.section-sub{color:var(--muted);font-size:.92rem;max-width:56ch;margin:0;}

/* ---------- buttons ---------- */
.btn{font-family:"IBM Plex Sans",sans-serif;font-size:.92rem;font-weight:600;padding:.85rem 1.4rem;border-radius:8px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;text-decoration:none;transition:filter .15s ease, transform .15s ease;}
.btn:active{transform:translateY(1px);}
.btn.primary{background:var(--accent);color:var(--accent-ink);}
.btn.primary:hover{filter:brightness(1.08);}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-2);}
.btn.ghost:hover{border-color:var(--muted);}
.btn.block{width:100%;}
.btn .spinner{width:.9rem;height:.9rem;border-radius:50%;border:2px solid rgba(0,0,0,.25);border-top-color:currentColor;animation:spin .7s linear infinite;display:none;}
.btn.loading .spinner{display:inline-block;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- panels / cards ---------- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1.6rem 1.5rem;}
.console-panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.2rem;font-family:"IBM Plex Mono",monospace;font-size:.8rem;}
.console-panel .title-row{display:flex;justify-content:space-between;align-items:center;color:var(--muted);margin-bottom:.9rem;padding-bottom:.7rem;border-bottom:1px solid var(--line);}
.console-line{display:flex;justify-content:space-between;gap:1rem;padding-block:.4rem;color:var(--muted);border-bottom:1px dashed var(--line);}
.console-line:last-child{border-bottom:0;}
.console-line .k{color:var(--ink);}
.console-line .v.ok{color:var(--status);}

.callout{border-radius:10px;padding:.9rem 1.1rem;font-size:.9rem;line-height:1.6;margin:1rem 0;border:1px solid;}
.callout b{display:block;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem;}
.callout.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink);}
.callout.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink);}
.callout.err{background:var(--err-bg);border-color:var(--err-line);color:var(--err-ink);}

/* ---------- forms ---------- */
form.stack{display:flex;flex-direction:column;gap:1rem;}
label{font-size:.82rem;color:var(--muted);font-weight:600;display:block;margin-bottom:.35rem;}
input[type="text"], input[type="email"], input[type="password"]{
  width:100%;font:inherit;font-size:.95rem;padding:.7rem .9rem;border-radius:8px;border:1px solid var(--line-2);
  background:var(--surface);color:var(--ink);
}
input:focus{outline:2px solid var(--accent);outline-offset:1px;}

/* ---------- tables (downloads, cert lists) ---------- */
.overflow-x{overflow-x:auto;}
table.data{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:.88rem;}
table.data th{text-align:left;background:var(--surface-2);color:var(--muted);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;padding:.7rem .9rem;}
table.data td{padding:.8rem .9rem;border-top:1px solid var(--line);vertical-align:middle;}
table.data tr:hover td{background:rgba(255,255,255,.02);}
.os-cell{display:flex;align-items:center;gap:.6rem;font-weight:600;}
table.data .mono{color:var(--muted);}
.dl-btn{font-family:"IBM Plex Mono",monospace;font-size:.8rem;font-weight:600;color:var(--accent);text-decoration:none;border:1px solid var(--line-2);border-radius:6px;padding:.35rem .7rem;display:inline-block;transition:border-color .15s;}
.dl-btn:hover{border-color:var(--accent);}

/* ---------- lock / empty states ---------- */
.lock-panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:2.4rem 2rem;text-align:center;}
.lock-icon{width:2.2rem;height:2.2rem;margin:.4rem auto 1rem;color:var(--muted);}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:1.6rem;transform:translate(-50%,120%);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);padding:.8rem 1.2rem;border-radius:8px;font-size:.85rem;font-family:"IBM Plex Mono",monospace;box-shadow:0 12px 30px -10px rgba(0,0,0,.6);transition:transform .35s cubic-bezier(.2,.9,.3,1.2);z-index:50;display:flex;align-items:center;gap:.6rem;}
.toast.show{transform:translate(-50%,0);}

/* ---------- entrance motion ---------- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none;} .status-item .dot{animation:none !important;}}

/* ---------- generic section rhythm ---------- */
.section{padding-block:2.4rem;border-top:1px solid var(--line);scroll-margin-top:3.2rem;}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.8rem;flex-wrap:wrap;}
.section-tag{font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--muted-2);border:1px solid var(--line);border-radius:6px;padding:.25rem .55rem;white-space:nowrap;}

.centered-page{padding-block:4.5rem 5rem;text-align:center;}
.centered-page p{color:var(--muted);}
