/* Аккаунты (только серверная версия сайта): кнопка «Войти» / аккаунт в
   верхней панели, страницы входа (login.html) и аккаунта (account.html).
   Поверх общего style.css. */

/* Кнопка аккаунта - как «Настройки», слева от неё. */
/* Для гостей: «Войти» и «Регистрация» (по указанию пользователя - больше
   наверху ничего, остальное - в окне «Настройки»). */
.site-account-btn, .site-register-btn{text-decoration:none;margin-right:-14px;}
.site-register-btn{margin-left:0;background:var(--accent);border-color:var(--accent);color:#fff;}
.site-register-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff;}
.site-account-btn ~ .site-settings-btn{margin-left:0;}
/* «Свой стандарт» (standards.js, страница выбора ГОСТа) - первая справа, остальные кнопки вплотную за ней. */
.site-std-btn{margin-right:-14px;}
.site-std-btn ~ .site-settings-btn{margin-left:0;}
/* «Сообщить об ошибке» и «Помощь» (feedback.js) - значки с подсказкой; первая справа - с отступом auto. */
.site-fb-btn{margin-right:-14px;padding:0 10px;}
.site-fb-btn ~ .site-settings-btn{margin-left:0;}
.site-account-btn span{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Узкий экран: у кнопок аккаунта и «Настройки» - только значки, иначе
   панель не помещается по ширине. */
@media screen and (max-width:480px){
  .site-account-btn span, .site-account-btn ~ .site-settings-btn span{display:none;}
  .site-account-btn, .site-account-btn ~ .site-settings-btn{padding:0 8px;}
  .site-account-btn{margin-right:-8px;}
  .site-std-btn span{display:none;}
  .site-std-btn{padding:0 8px;margin-right:-8px;}
  .site-fb-btn{padding:0 8px;margin-right:-8px;}
  .site-register-btn{display:none;}
  .site-topbar-links a{white-space:nowrap;}
  .site-topbar-links{gap:10px;}
  /* «Помощь» - на всех страницах (по указанию пользователя), поэтому на
     телефоне панель плотнее: значки компактнее, «Главная» скрыта (логотип
     ведёт туда же). */
  .site-topbar-inner{padding:0 12px;gap:10px;}
  .site-topbar-links a + a{display:none;}
  .site-fb-btn, .site-std-btn, .site-account-btn, .site-account-btn ~ .site-settings-btn{padding:0 7px;margin-right:-6px;}
  .site-settings-btn{height:32px;}
  .site-settings-btn svg{width:16px;height:16px;}
}
/* Совсем узкие телефоны: у ссылки «Назад» - только стрелка. */
@media screen and (max-width:380px){
  .site-topbar-links a:first-child{font-size:0;}
  .site-topbar-links a:first-child::before{content:'←';font-size:16px;}
  .site-topbar-inner{gap:8px;}
}

.auth-field{margin-bottom:16px;}
.auth-pow{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--rule);border-radius:10px;background:var(--panel);font-size:13px;color:var(--ink-soft);}
.auth-pow[hidden]{display:none;}
/* Значок проверки: кольцо заполняется по ходу перебора (pow.js), затем
   коричневый круг с белой галочкой. */
.auth-pow-icon{flex:0 0 22px;width:22px;height:22px;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;}
.auth-pow-bg{stroke:var(--rule);}
.auth-pow-fg{stroke:var(--accent);stroke-dasharray:56.55;stroke-dashoffset:56.55;transition:stroke-dashoffset .12s linear,stroke .2s ease;}
.auth-pow-tick{stroke:#fff;stroke-width:2.2;stroke-dasharray:14;stroke-dashoffset:14;}
/* Пройдена - как было: коричневый круг с белой галочкой. */
.auth-pow[data-state="ok"] .auth-pow-fg{fill:var(--accent);stroke-dashoffset:0;}
.auth-pow[data-state="ok"] .auth-pow-tick{stroke-dashoffset:0;transition:stroke-dashoffset .3s ease-out .1s;}
.auth-pow[data-state="ok"]{color:var(--ink);}
.auth-pow[data-state="fail"]{color:var(--error);}
.auth-pow[data-state="fail"] .auth-pow-fg{stroke:var(--error);}
.auth-hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}
.auth-field input:not([type=checkbox]){
  width:100%;
  box-sizing:border-box;
  padding:12px 14px;
  border:1px solid var(--border-input);
  border-radius:8px;
  font-family:inherit;
  font-size:16px;
  background:var(--panel);
  color:var(--ink);
}
.auth-field input:not([type=checkbox]):focus{
  outline:2px solid var(--accent);
  outline-offset:2px;
  border-color:var(--accent);
}
.auth-text{font-size:14px;line-height:1.5;color:var(--ink);margin:0 0 16px;}
.auth-text b{font-weight:600;}
.auth-submit{width:100%;margin-top:4px;}
.auth-submit:disabled{opacity:.6;cursor:progress;}
.auth-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 16px;margin-top:18px;font-size:14px;}
.auth-links a{color:var(--accent);text-decoration:none;cursor:pointer;}
.auth-links a:hover{text-decoration:underline;}
.auth-msg{font-size:14px;line-height:1.45;margin:0 0 16px;padding:10px 12px;border-radius:8px;}
.auth-msg-error{color:var(--error);background:color-mix(in srgb, var(--error) 10%, transparent);}
.auth-msg-ok{color:var(--ink);background:var(--accent-wash);}
.auth-msg[hidden]{display:none;}
.auth-msg a[href^="mailto:"]{color:var(--accent);} /* почта в сообщении (о блокировке) - коричневая, как ссылки сайта */

/* Страница аккаунта: строки «название - значение». */
.account-row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule);font-size:15px;}
.account-row:last-of-type{border-bottom:none;}
.account-row span:first-child{color:var(--ink-soft);}
.account-row span:last-child{color:var(--ink);font-weight:500;text-align:right;word-break:break-all;}

/* ===== Страница входа и регистрации (login.html) =====
   Два столбца (по образцу пользователя): слева - коллаж из чертежей сайта
   на светлом фирменном фоне, справа - форма. Сверху - панель сайта, как
   на главной (место под неё - body padding-top из style.css). На узком
   экране - только форма. */
body.auth-page{margin:0;background:var(--bg);}
.auth-split{display:flex;min-height:calc(100vh - var(--topbar-h));}
.auth-art{
  position:relative;
  flex:1 1 50%;
  overflow:hidden;
  background:var(--accent-wash);
}
/* Чертежи - чёрные линии на белом: на светлом фоне белое «растворяется»
   (multiply), в тёмной теме - инвертируются в светлые линии (screen). */
.auth-art-img{
  position:absolute;
  height:auto;
  transform:rotate(var(--r, 0deg));
  mix-blend-mode:multiply;
  opacity:.55;
  user-select:none;
  pointer-events:none;
}
.auth-art-lines{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--ink);stroke-width:2;vector-effect:non-scaling-stroke;}
.auth-art-lines path{vector-effect:non-scaling-stroke;}
.auth-art-card{
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  width:min(320px, 70%);
  padding:26px 28px;
  background:var(--panel);
  border:2px solid var(--ink);
  border-radius:24px;
  text-align:center;
  box-shadow:0 10px 30px rgba(0,0,0,.08);
}
.auth-art-card-title{font-size:20px;line-height:1.3;color:var(--ink);margin-bottom:18px;}
.auth-art-card-title b{font-weight:700;}
.auth-art-brand{font-size:30px;line-height:1.2;color:var(--accent);}
.auth-art-pill{
  margin-top:10px;
  padding:9px 14px;
  border:1.5px solid var(--ink);
  border-radius:999px;
  font-size:14px;
  font-weight:600;
  color:var(--ink);
}
.auth-art-pill::before{content:'✓';color:var(--accent);margin-right:8px;font-weight:700;}

.auth-main{
  flex:1 1 50%;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:48px 24px;
  box-sizing:border-box;
}
.auth-box{width:100%;max-width:440px;}
.auth-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:22px;font-weight:700;margin-bottom:18px;}
.auth-logo img{width:30px;height:30px;}
.auth-title{font-size:34px;line-height:1.15;font-weight:600;color:var(--ink);margin:0 0 8px;letter-spacing:-.01em;}
.auth-sub{font-size:15px;color:var(--ink-soft);margin:0 0 26px;}
.auth-sub:empty{margin:0 0 18px;}
.auth-page .auth-field{margin-bottom:18px;}
.auth-page .auth-field label{
  text-transform:none;
  letter-spacing:0;
  font-size:15px;
  font-weight:600;
  color:var(--ink);
  margin-bottom:8px;
}
.auth-req{color:var(--error);}
.auth-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.auth-forgot{font-size:13px;color:var(--accent);text-decoration:none;cursor:pointer;}
.auth-forgot:hover{text-decoration:underline;}
.auth-page .auth-field input:not([type=checkbox]){border-radius:10px;padding:13px 16px;}
/* Поле кода: 6 клеток (вид), настоящее поле - прозрачное поверх них. */
.auth-code-box{position:relative;}
.auth-cells{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;}
.auth-cells span{height:58px;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--border-input);border-radius:12px;background:var(--panel);font-size:24px;font-weight:700;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,background-color .25s ease,color .25s ease;}
.auth-cells span.cur{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-wash);}
.auth-cells span.cur:empty::after{content:'';width:2px;height:24px;background:var(--accent);animation:auth-caret 1s steps(1) infinite;}
.auth-cells.bad span{border-color:var(--error);color:var(--error);background:color-mix(in srgb, var(--error) 8%, var(--panel));}
.auth-cells.good span{border-color:var(--ok);color:var(--ok);background:color-mix(in srgb, var(--ok) 10%, var(--panel));}
.auth-page .auth-field input.auth-code{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;outline:none;font-size:16px;color:transparent;caret-color:transparent;cursor:text;}
@keyframes auth-caret{50%{opacity:0;}}
.auth-pw{position:relative;}
.auth-pw input{padding-right:48px !important;}
.auth-eye{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:38px;height:38px;margin:0;padding:0;
  background:transparent;box-shadow:none;border-radius:8px;
  color:var(--ink-soft);
  display:flex;align-items:center;justify-content:center;
}
.auth-eye:hover{background:transparent;color:var(--ink);}
.auth-eye svg{width:20px;height:20px;}
.auth-page .auth-submit{
  width:100%;
  margin-top:8px;
  padding:14px 24px;
  border-radius:12px;
  font-size:16px;
}
.auth-page .auth-links{justify-content:center;margin-top:16px;}
.auth-page .auth-links:empty{display:none;}
.auth-switch{margin-top:26px;text-align:center;font-size:15px;color:var(--ink-soft);}
.auth-switch a{color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.auth-home{display:block;margin-top:22px;text-align:center;font-size:13px;color:var(--ink-soft);text-decoration:none;}
.auth-home:hover{color:var(--accent);}

:root[data-theme="dark"] .auth-art-img{filter:invert(1) brightness(.88) sepia(.12);mix-blend-mode:screen;opacity:.45;}
@media screen and (max-width:900px){
  .auth-art{display:none;}
  .auth-main{padding:32px 16px;align-items:flex-start;}
  .auth-title{font-size:28px;}
}

/* Ссылка «Войти» / «Подписки» после ошибки расчёта. */
.calc-error-link{color:var(--accent);text-decoration:underline;text-underline-offset:3px;font-weight:600;}

/* Вход сверх лимита устройств: список устройств, где выйти. */
.auth-devices{display:flex;flex-direction:column;gap:10px;}
.auth-devices[hidden]{display:none;}
.auth-device{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--border-input);border-radius:12px;background:var(--panel);}
.auth-device-name{font-size:15px;font-weight:600;color:var(--ink);}
.auth-device-seen{font-size:13px;color:var(--ink-soft);margin-top:2px;}
.auth-device button{margin:0;padding:8px 14px;font-size:13px;flex:0 0 auto;}

/* Страница аккаунта. */
#accountBox[hidden], .account-row[hidden]{display:none;}

/* Страница подписок. */
.plans-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-items:stretch;}
@media screen and (max-width:1000px){.plans-grid{grid-template-columns:repeat(2,1fr);}}
.plan-card{display:flex;flex-direction:column;padding:28px 24px;border:1px solid var(--rule);border-radius:16px;background:var(--panel);box-shadow:var(--shadow-sm);}
.plan-card-accent{border-color:var(--accent);}
.plan-card-current{outline:2px solid var(--accent);outline-offset:-1px;}
.plan-name{font-size:22px;font-weight:700;color:var(--ink);}
.plan-price{font-size:20px;font-weight:600;color:var(--accent);margin:8px 0 18px;}
.plan-price small{font-size:13px;color:var(--ink-soft);font-weight:500;}
.plan-features{list-style:none;margin:0 0 20px;padding:0;flex:1;}
.plan-features li{padding:8px 0;border-top:1px solid var(--rule);font-size:15px;color:var(--ink);}
.plan-features li::before{content:'✓';color:var(--accent);font-weight:700;margin-right:10px;}
.plan-btn{width:100%;margin:0;}
.plan-btn:disabled{opacity:.6;cursor:default;}
.plans-note{margin-top:24px;font-size:14px;color:var(--ink-soft);}
@media screen and (max-width:800px){
  .plans-grid{grid-template-columns:1fr;}
}

/* Администрирование. */
.admin-wrap{max-width:1100px;}
#adminBox[hidden]{display:none;}
.admin-chart-note{font-size:13px;color:var(--ink-soft);margin:-6px 0 14px;}

/* Плитки с итогами. */
.admin-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px;}
.admin-tile{padding:18px 20px;border:1px solid var(--rule);border-radius:12px;background:var(--panel);box-shadow:var(--shadow-sm);}
.admin-tile-label{font-size:13px;color:var(--ink-soft);}
.admin-tile-value{font-size:30px;font-weight:600;color:var(--ink);margin:4px 0 2px;}
.admin-tile-sub{font-size:13px;color:var(--ink-soft);}

/* Графики: одна величина, цвет - акцент сайта; сетка и оси приглушены. */
.admin-two{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.admin-two .card{margin-bottom:24px;}
.admin-chart{width:100%;min-height:240px;}
.admin-chart-small{min-height:180px;}
.admin-svg{display:block;max-width:100%;}
.admin-grid{stroke:var(--rule);stroke-width:1;}
.admin-baseline{stroke:var(--ink-soft);stroke-width:1;opacity:.5;}
.admin-axis{fill:var(--ink-soft);font-size:11px;font-variant-numeric:tabular-nums;}
.admin-value{fill:var(--ink);font-size:12px;font-weight:600;}
.admin-bar{fill:var(--accent);transition:opacity .12s ease;}
.admin-bar-dim{opacity:.35;}
.admin-hit{fill:transparent;cursor:default;outline:none;}
.admin-tooltip{position:fixed;z-index:50;pointer-events:none;padding:8px 12px;border-radius:8px;background:var(--panel);border:1px solid var(--rule);box-shadow:var(--shadow-lg);font-size:13px;color:var(--ink-soft);white-space:nowrap;}
.admin-tooltip b{display:block;font-size:16px;color:var(--ink);font-weight:600;}
.admin-tooltip[hidden]{display:none;}

/* Расчёты по типам: горизонтальные полосы, значение - у конца. */
.admin-hbars{display:grid;grid-template-columns:max-content 1fr auto;column-gap:10px;row-gap:10px;align-items:center;font-size:14px;}
/* строки - ячейки общей сетки: колонка названий - по самому длинному, названия
   прижаты к полосам - промежуток до полосы у всех строк одинаковый */
.admin-hbar{display:contents;}
.admin-hbar-name{color:var(--ink);font-weight:500;line-height:1.3;text-align:right;}
.admin-hbar-track{height:14px;}
.admin-hbar-fill{height:100%;min-width:0;background:var(--accent);border-radius:0 4px 4px 0;}
.admin-hbar-val{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums;}

.admin-details summary{cursor:pointer;font-weight:600;color:var(--ink);}
.admin-details[open] summary{margin-bottom:12px;}

/* Таблица аккаунтов. */
.admin-table-wrap{overflow-x:auto;}
.admin-table{width:100%;min-width:760px;border-collapse:collapse;font-size:14px;}
.admin-details .admin-table{min-width:0;}
/* Общие ширины колонок таблиц деталей (style.css, 34% + 16.5%...) здесь не нужны:
   ширина - по содержимому, столбец кнопок - по самой длинной кнопке. */
.admin-table th, .admin-table td{width:auto;}
.admin-table td:last-child{width:1%;}
.admin-table td:first-child{overflow-wrap:anywhere;}
.admin-table th{text-align:left;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);padding:10px 8px;border-bottom:1px solid var(--rule);}
.admin-table td{padding:12px 8px;border-bottom:1px solid var(--rule);vertical-align:top;color:var(--ink);font-variant-numeric:tabular-nums;}
.admin-actions{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:136px;}
/* Подписка и её срок (1 или 3 месяца) - рядом. */
.admin-plan-pick{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.admin-term[hidden],.admin-term-none[hidden]{display:none;}
.admin-term-none{font-size:13px;color:var(--ink-soft);padding:0 4px;}
.admin-grant{display:flex;gap:6px;margin-top:6px;}
.admin-grant-count{flex:none;width:64px;padding:6px 8px;font-size:13px;}
.admin-table button{margin:0;padding:7px 12px;font-size:13px;}
.admin-delete{color:var(--error);}
.admin-delete:hover{border-color:var(--error);}
.admin-table button:disabled{opacity:.4;cursor:default;}
.admin-sub{font-size:12px;color:var(--ink-soft);margin-top:3px;}
.admin-tag{font-size:11px;color:var(--warn);}
.admin-tag-you{color:var(--accent);font-weight:600;}
.admin-tag-ok{color:var(--ok);}
.admin-tag-blocked{color:var(--error);font-weight:600;}
.admin-tag-priority{color:var(--accent);font-weight:600;}
.admin-empty{text-align:center;color:var(--ink-soft);}

/* Выпадающий список в стиле сайта (uiSelect в js/account/ui-select.js; на
   сайте только он, браузерный <select> не используем): кнопка - как поле
   ввода, список - карточка с тенью, выбранный вариант - с галочкой. */
.ui-select{display:inline-block;}
.ui-select-btn{
  position:relative;margin:0;min-width:116px;text-align:left;
  padding:8px 34px 8px 12px;
  border:1px solid var(--border-input);border-radius:8px;
  background:var(--panel);color:var(--ink);box-shadow:none;
  font-family:inherit;font-size:14px;font-weight:500;letter-spacing:0;
}
.ui-select-btn:hover{background:var(--panel);border-color:var(--accent);}
.ui-select-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent);}
.ui-select-btn::after{
  content:'';position:absolute;right:13px;top:50%;width:7px;height:7px;margin-top:-6px;
  border-right:1.6px solid var(--ink-soft);border-bottom:1.6px solid var(--ink-soft);
  transform:rotate(45deg);transition:transform .15s ease, margin-top .15s ease;
}
.ui-select-btn[aria-expanded="true"]{border-color:var(--accent);}
.ui-select-btn[aria-expanded="true"]::after{transform:rotate(-135deg);margin-top:-2px;}
.ui-select-list{
  position:fixed;z-index:70;margin:0;padding:4px;list-style:none;
  background:var(--panel);border:1px solid var(--rule);border-radius:10px;box-shadow:var(--shadow-lg);
}
.ui-select-list[hidden]{display:none;}
.ui-select-list li{
  position:relative;padding:8px 32px 8px 12px;border-radius:6px;
  font-size:14px;color:var(--ink);cursor:pointer;outline:none;white-space:nowrap;
}
.ui-select-list li:hover, .ui-select-list li:focus-visible{background:var(--accent-wash);}
.ui-select-list li[aria-selected="true"]{font-weight:600;}
.ui-select-list li[aria-selected="true"]::after{
  content:'';position:absolute;right:12px;top:50%;width:5px;height:10px;margin-top:-7px;
  border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);
}

@media screen and (max-width:800px){
  .admin-tiles{grid-template-columns:1fr 1fr;}
  .admin-two{grid-template-columns:1fr;gap:0;}
}
#accountLogout{margin-top:16px;}

/* Окно «Настройки», раздел «Подписка»: подписка и полосы лимита (по образцу
   Claude). Полоса показывает использованную долю: обычная - акцент, от 80% -
   предупреждение, 100% - ошибка. */
.site-sub-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:6px;}
.site-sub-plan{font-size:22px;font-weight:700;color:var(--ink);}
.site-sub-text{font-size:13px;color:var(--ink-soft);margin:2px 0 0;}
.site-sub-btn{display:inline-flex;align-items:center;padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;margin-top:8px;}
.site-sub-head .site-sub-btn{margin-top:0;}
.site-usage{padding:16px 0 4px;border-top:1px solid var(--rule);margin-top:14px;}
.site-usage-top, .site-usage-bottom{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink-soft);}
.site-usage-title{font-size:14px;font-weight:600;color:var(--ink);}
.site-usage-bar{height:8px;border-radius:999px;background:var(--rule);overflow:hidden;margin:10px 0 8px;}
.site-usage-bar div{height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease;}
.site-usage-high .site-usage-bar div{background:var(--warn);}
.site-usage-full .site-usage-bar div{background:var(--error);}

/* Юридические документы (privacy.html, consent.html, terms.html, marketing.html). */
.legal-wrap{max-width:860px;}
.legal{font-size:15px;line-height:1.6;color:var(--ink);}
.legal h2{text-transform:none;letter-spacing:0;font-size:17px;margin:26px 0 10px;padding-bottom:6px;scroll-margin-top:16px;}
.legal h2:first-child{margin-top:0;}
.legal p{margin:0 0 10px;}
.legal ul{margin:0 0 10px;padding-left:22px;}
.legal li{margin:4px 0;}
.legal a{color:var(--accent);}
.legal-missing{background:color-mix(in srgb, var(--warn) 22%, transparent);border-radius:4px;padding:0 4px;font-weight:600;}
.legal-ogrn[hidden]{display:none;}
/* Оглавление длинных документов (Пользовательское соглашение). */
.legal-toc{margin:0 0 28px;padding:18px 22px;border-radius:12px;background:var(--panel-hover);border:1px solid var(--rule);}
.legal-toc-title{font-weight:700;font-size:15px;margin-bottom:8px;}
.legal-toc ol{margin:0;padding-left:22px;columns:2;column-gap:32px;}
.legal-toc li{margin:3px 0;break-inside:avoid;}
.legal-toc a{text-decoration:none;}
.legal-toc a:hover{text-decoration:underline;}
@media screen and (max-width:640px){.legal-toc ol{columns:1;}}

/* Подвал со ссылками на документы (страницы серверной версии). */
.site-legal-footer{max-width:1100px;margin:40px auto 24px;padding:16px 24px 0;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;color:var(--ink-soft);}
.site-legal-footer a{color:var(--ink-soft);text-decoration:none;}
.site-legal-footer a:hover{color:var(--accent);text-decoration:underline;}
@media print{.site-legal-footer{display:none !important;}}

/* Галочки согласий при регистрации. */
.auth-consents{display:flex;flex-direction:column;gap:10px;margin:6px 0 20px !important;}
.auth-consents[hidden]{display:none;}
.auth-page .auth-field label.auth-check{display:flex;gap:10px;align-items:flex-start;text-transform:none;letter-spacing:0;font-size:13px;font-weight:400;line-height:1.45;color:var(--ink);margin:0;cursor:pointer;}
.auth-check input{width:18px;height:18px;margin:1px 0 0;flex:0 0 auto;accent-color:var(--accent);cursor:pointer;outline:none;}
.auth-check input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.auth-check a{color:var(--accent);}
.auth-msg-link{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.auth-legal{margin-top:14px;text-align:center;font-size:12px;color:var(--ink-soft);}
.auth-legal a{color:var(--ink-soft);}
.auth-legal a:hover{color:var(--accent);}

/* Расчёты закончились (common-account.js): плашка после последнего расчёта
   и окно при нажатии без расчётов / без входа - не красным (по указанию
   пользователя). */
.quota-banner{flex-basis:100%;display:flex;align-items:flex-start;gap:12px;margin-top:4px;padding:12px 14px;border-radius:12px;background:var(--warn-wash);border:1px solid color-mix(in srgb, var(--warn) 40%, transparent);font-size:14px;line-height:1.5;color:var(--ink);}
.quota-banner[hidden]{display:none;}
.quota-banner svg{flex:0 0 22px;width:22px;height:22px;fill:none;stroke:var(--warn);stroke-width:2.2;stroke-linecap:round;}
.quota-banner a{color:var(--accent);font-weight:600;}
.limit-box{max-width:460px;display:flex;flex-direction:column;gap:14px;}
.limit-box h3{margin:0;padding:0;font-size:20px;font-weight:700;}
.limit-icon{width:52px;height:52px;border-radius:14px;background:var(--accent-wash);display:flex;align-items:center;justify-content:center;}
.limit-icon svg{width:28px;height:28px;fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
.limit-text{margin:0;font-size:15px;line-height:1.55;color:var(--ink-soft);}
.limit-text b{color:var(--ink);}
.limit-plan{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--rule);border-radius:12px;font-size:13px;color:var(--ink-soft);}
.limit-plan b{font-size:16px;color:var(--ink);}
.limit-plan.limit-next{border:1.5px solid var(--accent);}
.limit-plans{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px;}
.limit-plans:empty{display:none;}
.limit-price{color:var(--accent);font-weight:700;}
.legal-upd-checks{display:flex;flex-direction:column;gap:10px;margin:2px 0 4px;}
.legal-upd-checks .auth-check{display:flex;gap:10px;align-items:flex-start;font-size:14px;font-weight:400;line-height:1.45;text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer;margin:0;}
.legal-update-dialog .limit-main:disabled{opacity:.45;cursor:default;}
.limit-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:4px;}
.limit-actions > *{margin:0;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:10px;font-size:14px;font-weight:600;text-decoration:none;box-sizing:border-box;}
.limit-main{background:var(--accent);color:#fff;border:0;}
.limit-main:hover{background:var(--accent-hover);color:#fff;}
.limit-actions .btn-secondary{color:var(--ink);}
.limit-box:has(.limit-plans){max-width:600px;}
@media (max-width:560px){ .limit-plans{grid-template-columns:1fr;} }
@media (prefers-reduced-motion:no-preference){
  .quota-banner:not([hidden]){animation:limit-in .4s cubic-bezier(.2,.8,.2,1);}
  .limit-icon .limit-draw{stroke-dasharray:var(--len);animation:limit-draw .9s cubic-bezier(.4,0,.2,1) .2s backwards;}
  .limit-plan{animation:limit-in .4s cubic-bezier(.2,.8,.2,1) backwards;}
  .limit-plan:nth-child(2){animation-delay:.08s;}
  .limit-plan:nth-child(3){animation-delay:.16s;}
}
@keyframes limit-in{from{opacity:0;transform:translateY(-8px);}}
@keyframes limit-draw{from{stroke-dashoffset:var(--len);}}
.site-sub-btn-main{background:var(--accent);color:#fff;border:1px solid var(--accent);}
.site-sub-btn-main:hover{background:var(--accent-hover);border-color:var(--accent-hover);}
.plan-for{font-size:13px;color:var(--ink-soft);margin-top:2px;}
.plans-note a{color:var(--accent);}

/* Окно «Настройки», раздел «Аккаунт». */
.site-acc-rows .account-row{padding:10px 0;font-size:14px;}
.site-acc-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;}
.site-acc-actions .site-sub-btn{margin-top:0;}
.site-acc-actions button.site-sub-btn{padding:8px 14px;}
.site-acc-block{border-top:1px solid var(--rule);margin-top:18px;padding-top:16px;}
.site-acc-block .auth-devices{margin-top:10px;}
.site-acc-block .auth-device button{margin:0;padding:7px 12px;font-size:13px;}
.site-acc-danger .site-usage-title{color:var(--error);}
/* автопродление (раздел «Аккаунт»): галочка согласия - не отмечена заранее */
.site-ar-consent{display:flex;gap:10px;align-items:flex-start;margin:12px 0 0;font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink);line-height:1.45;cursor:pointer;}
.site-ar-consent input{margin-top:3px;flex:0 0 auto;}
#siteAutoRenew .site-sub-btn:disabled{opacity:.45;cursor:default;}
/* сообщение об автопродлении вверху страницы (за 3 дня до продления) */
.site-autorenew-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;}
.site-autorenew-notice a, .site-ar-consent a{color:var(--accent);} /* ссылки - коричневые, как на сайте */
.site-autorenew-close{flex:0 0 auto;margin:0;border:none;background:none;color:inherit;font-size:20px;line-height:1;cursor:pointer;padding:0 4px;}
.site-acc-del-btn{color:var(--error);margin-top:10px;}
.site-acc-del-btn:hover{border-color:var(--error);}
.site-acc-delete .auth-field{margin:10px 0 0;max-width:320px;}
.site-acc-delete .auth-msg{margin:10px 0 0;}
.site-acc-delete[hidden], .site-acc-del-btn[hidden], .site-acc-pw-btn[hidden]{display:none;}
/* Удаление аккаунта (по указанию пользователя): поле пароля и «Удалить
   навсегда» - в один ряд на месте кнопки «Удалить аккаунт», рамка поля при
   вводе - красная. На узком экране - друг под другом. */
#siteAccDelete:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;}
#siteAccDelete .auth-msg{flex:0 0 100%;margin:0;}
#siteAccDelete .auth-field{flex:1 1 220px;margin:0;}
#siteAccDelete .site-sub-btn{margin:0;align-self:stretch;}
#siteAccDelPw:focus{outline-color:var(--error);border-color:var(--error);}
/* Смена пароля по шагам (common-account.js, setAccPwStep): подсказка шага,
   поля, кнопки «Далее»/«Отмена» и ссылка «Забыли пароль?» в один ряд. */
.site-acc-pw [data-pw-field][hidden], .site-acc-pw-link[hidden], .site-acc-pw-done[hidden]{display:none;}
.site-acc-pw .site-sub-text{margin:4px 0 0;}
.site-acc-pw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;}
.site-acc-pw-actions .site-sub-btn{margin:0;}
.site-acc-pw-link{font-size:13px;font-weight:500;color:var(--accent);margin-left:4px;}
.site-acc-pw-done{margin:8px 0 0;}
.site-acc-pw .site-acc-pw-keep{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:13px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer;}
.site-acc-pw-btn{margin-top:10px;}

/* Pro и Team - печатный лист без водяного знака (класс ставит applyPlanClass в common-account.js). */
.plan-paid #printArea .print-watermark{display:none;}

/* Заявка на внутренний стандарт завода (js/account/standards.js): окно поверх страницы выбора ГОСТа. */
.std-overlay{position:fixed;inset:0;z-index:60;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:16px;}
.std-overlay[hidden]{display:none;}
.std-dialog{width:100%;max-width:580px;max-height:calc(100vh - 32px);overflow:auto;background:var(--panel);border:1px solid var(--rule);border-radius:16px;}
.std-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--rule);}
.std-head h2{margin:0;font-size:19px;font-weight:700;color:var(--ink);text-transform:none;letter-spacing:0;padding:0;border:0;}
.std-body{padding:20px 22px 22px;}
.std-text{margin:0 0 14px;font-size:14px;line-height:1.55;color:var(--ink);}
.std-field{margin-bottom:14px;flex:1;min-width:0;}
.std-field label{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px;}
.std-field input, .std-field textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border-input);border-radius:10px;background:var(--panel);color:var(--ink);font:inherit;font-size:14px;}
.std-field textarea{resize:vertical;min-height:90px;}
.std-field input:focus, .std-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);}
.std-note{margin:2px 0 14px;font-size:13px;color:var(--ink-soft);}
.std-msg{margin:0 0 12px;padding:10px 12px;border-radius:10px;font-size:14px;}
.std-msg[hidden]{display:none;}
.std-actions{display:flex;gap:10px;flex-wrap:wrap;}
@media screen and (max-width:640px){
}

/* Заявки на внутренние стандарты в админке. */
.admin-count{font-weight:500;color:var(--ink-soft);}
.admin-req-table .admin-req-details{white-space:pre-wrap;min-width:240px;max-width:420px;}
.admin-req-table td a{color:var(--accent);}

/* Сообщение об ошибке (feedback.js) - то же окно, что у заявки на стандарт, плюс списки и галочка. */
/* Списки в формах - только uiSelect (ui-select.js), не браузерный <select>:
   его раскрытый список не оформить в стиле сайта. Ширина - как у полей. */
.std-field .ui-select{display:block;}
.std-field .ui-select-btn{width:100%;padding:10px 34px 10px 12px;border-radius:10px;}
.std-row{display:flex;gap:12px;}
.fb-check{display:flex;gap:10px;align-items:flex-start;margin:0 0 12px;font-size:13px;line-height:1.45;color:var(--ink);cursor:pointer;text-transform:none;letter-spacing:0;font-weight:400;}
.fb-check input{margin-top:2px;accent-color:var(--accent);}
.site-help-mail{font-weight:600;color:var(--accent);text-decoration:none;}
.site-help-mail:hover{text-decoration:underline;}
@media screen and (max-width:640px){.std-row{flex-direction:column;gap:0;}}

/* Невысокие экраны (по указанию пользователя - форма входа и регистрации
   без прокрутки, в один экран): отступы, поля и шрифты плотнее; на самых
   низких - без логотипа над заголовком (он есть в верхней панели) и без
   ссылки «На главную» (есть в верхней панели). */
@media screen and (max-height:960px){
  .auth-main{padding-top:16px;padding-bottom:16px;}
  .auth-logo{margin-bottom:10px;}
  .auth-title{font-size:28px;margin-bottom:6px;}
  .auth-sub{margin-bottom:16px;}
  .auth-sub:empty{margin-bottom:10px;}
  .auth-page .auth-field{margin-bottom:12px;}
  .auth-page .auth-field label{font-size:14px;margin-bottom:5px;}
  .auth-page .auth-field input:not([type=checkbox]){padding:10px 14px;}
  .auth-consents{gap:6px;margin:2px 0 12px !important;}
  .auth-page .auth-field label.auth-check{font-size:12.5px;line-height:1.4;}
  .auth-pow{padding:7px 12px;}
  .auth-page .auth-submit{padding:11px 24px;margin-top:4px;}
  .auth-msg{margin-bottom:10px;padding:8px 12px;}
  .auth-page .auth-links{margin-top:10px;}
  .auth-switch{margin-top:14px;font-size:14px;}
  .auth-home{margin-top:10px;}
  .auth-legal{margin-top:10px;}
}
@media screen and (max-height:800px){
  .auth-logo, .auth-home{display:none;}
  .auth-title{font-size:26px;}
  .auth-page .auth-field input:not([type=checkbox]){padding:8px 14px;}
  .auth-switch{margin-top:10px;}
  .auth-main{padding-top:10px;padding-bottom:10px;}
  .auth-sub:empty{margin-bottom:6px;}
  .auth-page .auth-field{margin-bottom:8px;}
  .auth-page .auth-field label.auth-check{font-size:12px;line-height:1.35;}
  .auth-msg{font-size:13px;line-height:1.35;padding:6px 10px;margin-bottom:8px;}
  .auth-legal{margin-top:6px;}
}

/* Почта поддержки в админке (admin-mail.js) */
.admin-mail-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap;}
.admin-mail-bar[hidden]{display:none;}
.admin-mail-tabs{display:flex;gap:4px;padding:3px;border:1px solid var(--rule);border-radius:10px;background:var(--panel);}
.admin-mail-tab{margin:0;padding:6px 14px;border:none;border-radius:7px;background:none;color:var(--ink-soft);font-size:14px;font-weight:500;cursor:pointer;}
.admin-mail-tab[aria-selected="true"]{background:var(--accent-wash);color:var(--ink);}
.admin-mail-bar .btn-secondary, .admin-mail-more, .admin-mail-view .btn-secondary{margin:0;padding:7px 12px;font-size:13px;}
.admin-mail-list{border-top:1px solid var(--rule);}
.admin-mail-list:empty{border-top:none;}
.admin-mail-row{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr) auto;gap:12px;align-items:baseline;width:100%;margin:0;padding:10px 8px;border:none;border-bottom:1px solid var(--rule);border-radius:0;background:none;color:var(--ink);font-size:14px;text-align:left;cursor:pointer;}
.admin-mail-row:hover, .admin-mail-row:focus-visible{background:var(--accent-wash);}
.admin-mail-row > span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin-mail-unseen{font-weight:600;}
.admin-mail-unseen .admin-mail-who::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--accent);vertical-align:1px;}
.admin-mail-date{color:var(--ink-soft);font-size:13px;font-variant-numeric:tabular-nums;font-weight:400;}
.admin-mail-subj .admin-tag{margin-left:6px;font-weight:400;}
.admin-mail-more{margin-top:12px;}
.admin-mail-more[hidden], .admin-mail-view[hidden]{display:none;}
.admin-mail-view h3{margin:14px 0 8px;font-size:18px;color:var(--ink);overflow-wrap:anywhere;}
.admin-mail-meta{font-size:13px;color:var(--ink-soft);line-height:1.6;overflow-wrap:anywhere;}
.admin-mail-meta b{font-weight:500;color:var(--ink);}
.admin-mail-meta a, .admin-mail-files a, .admin-mail-acc-link{color:var(--accent);}
.admin-mail-acc-link{margin:0;padding:0;border:none;background:none;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.admin-mail-text{margin:14px 0;padding:14px 16px;border:1px solid var(--rule);border-radius:10px;background:var(--panel);font-size:14px;line-height:1.55;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;max-height:520px;overflow:auto;}
.admin-mail-files{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;margin-bottom:14px;}
.admin-mail-reply textarea{width:100%;min-height:140px;resize:vertical;font:inherit;font-size:14px;}
.admin-mail-reply-bar{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap;}
.admin-mail-reply-to{font-size:13px;color:var(--ink-soft);overflow-wrap:anywhere;}
@media (max-width:640px){
  .admin-mail-row{grid-template-columns:minmax(0,1fr) auto;}
  .admin-mail-subj{grid-column:1 / -1;grid-row:2;}
}

/* ===== Микроанимации входа и регистрации (по указанию пользователя;
   js/account/login.js). При «уменьшить движение» в системе - без анимаций. ===== */
.auth-tabs{position:relative;display:flex;padding:4px;margin:0 0 22px;border-radius:12px;background:var(--secondary-hover);}
.auth-tabs[hidden]{display:none;}
.auth-tabs button{position:relative;flex:1;margin:0;padding:0;height:40px;border:0;border-radius:9px;background:transparent;box-shadow:none;color:var(--ink-soft);font-size:15px;font-weight:600;transition:color .2s ease;}
.auth-tabs button:hover{background:transparent;color:var(--ink);}
.auth-tabs button[aria-selected="true"]{color:var(--ink);}
.auth-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.auth-tabs-pill{position:absolute;top:4px;left:4px;width:calc(50% - 4px);height:40px;border-radius:9px;background:var(--panel);box-shadow:0 1px 3px rgba(9,17,53,.12);transition:transform .28s cubic-bezier(.2,.8,.2,1);}
.auth-tabs[data-mode="register"] .auth-tabs-pill{transform:translateX(100%);}
/* Поле с ошибкой: красная рамка до первого ввода. */
.auth-page .auth-field input.auth-bad:not([type=checkbox]){border-color:var(--error);box-shadow:0 0 0 4px color-mix(in srgb, var(--error) 14%, transparent);outline:none;}
/* «Отправить код ещё раз» с кольцом обратного отсчёта. */
.auth-resend{display:inline-flex;align-items:center;gap:8px;margin:0;padding:6px 10px;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--accent);font-size:14px;font-weight:600;cursor:pointer;}
.auth-resend:hover{background:var(--secondary-hover);}
.auth-resend:disabled{color:var(--ink-soft);font-weight:500;cursor:default;background:transparent;}
.auth-resend svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke-width:2.5;stroke-linecap:round;}
.auth-resend .ring-bg{stroke:var(--rule);}
.auth-resend .ring-fg{stroke:var(--accent);stroke-dasharray:50.27;}
.auth-resend:not(:disabled) svg{display:none;}
/* Уведомление «Новый код отправлен» - выезжает сверху. */
.auth-toast{position:fixed;left:50%;top:calc(var(--topbar-h, 56px) + 14px);z-index:300;display:flex;align-items:center;gap:10px;max-width:calc(100vw - 32px);box-sizing:border-box;padding:12px 18px;border-radius:12px;background:var(--ink);color:var(--bg);font-size:14px;font-weight:600;box-shadow:0 12px 28px rgba(9,17,53,.25);transform:translateX(-50%);}
.auth-toast[hidden]{display:none;}
.auth-toast svg{flex:0 0 18px;width:18px;height:18px;fill:none;stroke:#7FD18A;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;}
@media (prefers-reduced-motion:no-preference){
  .auth-msg.auth-msg-in{animation:auth-msg-in .26s ease-out;}
  .auth-shake{animation:auth-shake .38s ease-in-out;}
  .auth-cells span.pop{animation:auth-pop .24s cubic-bezier(.3,1.6,.5,1) backwards;}
  .auth-cells.good span{animation:auth-pop .32s cubic-bezier(.3,1.6,.5,1) backwards;}
  .auth-resend.flash{animation:auth-flash .9s ease-out;}
  .auth-toast{animation:auth-toast-in .42s cubic-bezier(.2,.8,.2,1);}
  .auth-toast.out{transform:translate(-50%,calc(-100% - 90px));transition:transform .3s ease-in;}
}
@keyframes auth-msg-in{from{opacity:0;transform:translateY(-8px);}}
@keyframes auth-shake{20%{transform:translateX(-7px);}40%{transform:translateX(7px);}60%{transform:translateX(-4px);}80%{transform:translateX(3px);}}
@keyframes auth-pop{0%{opacity:0;transform:scale(.5);}70%{transform:scale(1.1);}100%{opacity:1;transform:none;}}
@keyframes auth-flash{from{background:var(--accent-wash);}}
@keyframes auth-toast-in{from{transform:translate(-50%,calc(-100% - 90px));}}
