/* ==========================================================
   GastroDigital · стили клиентского портала
   Снято с живого кода 08.10.2026. Подключать первым файлом.
   Шрифт:
   <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
   ========================================================== */

:root{
  /* текст */
  --ink:#0E1626; --ink-2:#3A465C; --ink-3:#5E6B82;
  /* поверхности */
  --paper:#F3F6FA; --surface:#FFFFFF;
  --line:#E0E6F0; --line-soft:#EDF1F7; --line-strong:#D5DDEA;
  /* действие */
  --brand:#2B54FB; --brand-dark:#1E3FD0; --brand-wash:#ECF1FF;
  /* состояния */
  --ok:#0B8A5F;    --ok-wash:#E3F6EE;
  --warn:#8A5A00;  --warn-wash:#FDF3DC;
  --alert:#C2352B; --alert-wash:#FBEAE7;
  --info:#2B54FB;  --info-wash:#E8EEFF;
  /* акцент и тёмное */
  --lime:#C9FA09;
  --navy:#0C1526; --navy-2:#1E3055; --navy-3:#16223A;
  --navy-text:#8FA1C4; --navy-soft:#C6D4EE;
  /* форма */
  --radius:16px; --radius-lg:18px; --radius-sm:12px;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  /* тени — других не заводить */
  --ring:0 0 0 3px var(--brand-wash);
  --shadow-menu:0 12px 32px rgba(12,21,38,.14);
  --shadow-panel:0 10px 30px rgba(12,21,38,.18);
  --shadow-toast:0 10px 30px rgba(14,22,38,.14);
  --shadow-seg:0 1px 3px rgba(12,21,38,.12);
}

/* Тёмная тема — только телефон, класс koyu на <html> */
@media(max-width:900px){
  html.koyu{
    color-scheme:dark;
    --ink:#EEF2F8; --ink-2:#B9C1CF; --ink-3:#8A94A8;
    --paper:#090D15; --surface:#121826;
    --line:#232B3B; --line-soft:#1B2232; --line-strong:#2B3447;
    --brand-wash:rgba(43,84,251,.20);
    --ok:#34D399;    --ok-wash:rgba(52,211,153,.13);
    --warn:#FBBF24;  --warn-wash:rgba(251,191,36,.13);
    --alert:#F87171; --alert-wash:rgba(248,113,113,.13);
    --info:#8AA6FF;  --info-wash:rgba(43,84,251,.16);
  }
}

*{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  font-family:var(--sans);
  font-size:16px; line-height:1.5; letter-spacing:-.006em;
  font-variant-numeric:tabular-nums;
  background:var(--paper); color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
button{font:inherit;color:inherit;cursor:pointer;border:none;background:none;}
input,select,textarea{font:inherit;color:inherit;}
a{color:inherit;}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:3px;}
svg{flex:none;}

/* ---------- КАРКАС ---------- */
.gd-app{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:100vh;}
.gd-main{width:100%;max-width:1160px;margin:0 auto;padding:40px 44px 64px;min-width:0;}
@media(max-width:900px){
  .gd-app{grid-template-columns:1fr;}
  .gd-side{display:none;}
  .gd-main{padding:20px 16px 48px;}
}

/* Боковое меню */
.gd-side{
  position:sticky; top:16px; align-self:start;
  height:calc(100vh - 32px); margin:16px 0 16px 16px;
  background:var(--navy);
  background-image:radial-gradient(340px 220px at 82% -8%,var(--navy-2) 0%,var(--navy) 68%);
  border-radius:var(--radius-lg); padding:24px 14px 14px;
  color:#fff; box-shadow:var(--shadow-panel);
  display:flex; flex-direction:column;
}
.gd-nav{display:flex;flex-direction:column;gap:3px;margin-top:18px;}
.gd-nav button{
  position:relative; display:flex; align-items:center; gap:12px;
  width:100%; text-align:left; padding:11px 12px; border-radius:11px;
  font-size:18px; font-weight:500; color:var(--navy-text);
  transition:background .1s,color .1s;
}
.gd-nav button svg{width:22px;height:22px;opacity:.9;}
.gd-nav button:hover{background:rgba(255,255,255,.06);color:#fff;}
.gd-nav button.on{background:rgba(43,84,251,.26);color:#fff;font-weight:600;}
.gd-nav button.on::before{
  content:""; position:absolute; left:-14px; top:10px; bottom:10px;
  width:3px; border-radius:0 3px 3px 0; background:var(--lime);
}
.gd-nav .gd-tally{
  margin-left:auto; background:var(--lime); color:var(--navy);
  font-size:11.5px; font-weight:700; padding:1px 7px; border-radius:999px;
}

/* ---------- ЗАГОЛОВОК СТРАНИЦЫ ---------- */
.gd-head{display:flex;align-items:flex-end;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin-bottom:28px;}
.gd-head h1{font-size:30px;font-weight:700;letter-spacing:-.025em;line-height:1.2;}
.gd-head p{font-size:16px;color:var(--ink-3);margin-top:6px;}
@media(max-width:900px){.gd-head h1{font-size:24px;}.gd-head p{font-size:15px;}}

/* ---------- КАРТОЧКА ---------- */
.gd-card{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;}
.gd-card.lg{border-radius:var(--radius-lg);}
.gd-card-top{display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding:18px 24px;border-bottom:1px solid var(--line-soft);}
.gd-card-top h3{font-size:17px;font-weight:700;letter-spacing:-.01em;}
.gd-card-body{padding:20px 24px;}

.gd-label{display:block;font-size:12px;font-weight:700;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.07em;}
.gd-link{font-size:14.5px;font-weight:600;color:var(--brand);
  background:none;border:none;cursor:pointer;padding:6px 2px;text-decoration:none;}
.gd-link:hover{color:var(--brand-dark);text-decoration:underline;}

/* ---------- КНОПКИ ---------- */
.gd-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:0 21px;border-radius:11px;
  background:var(--brand);color:#fff;font-size:16px;font-weight:600;
  transition:background .12s;}
.gd-btn:hover{background:var(--brand-dark);}
.gd-btn svg{width:18px;height:18px;}

.gd-btn.quiet{background:var(--surface);color:var(--ink);border:1px solid var(--line);}
.gd-btn.quiet:hover{background:var(--paper);}

.gd-btn.line{height:44px;min-height:44px;border-radius:12px;
  border:1px solid var(--line-strong);background:var(--surface);
  color:var(--ink);font-size:14.5px;font-weight:700;}
.gd-btn.line:hover{border-color:var(--brand);color:var(--brand);background:var(--surface);}

.gd-btn.sm{min-height:40px;padding:8px 14px;border-radius:10px;font-size:14px;}

.gd-ibtn{width:30px;height:30px;border-radius:7px;display:flex;
  align-items:center;justify-content:center;color:var(--ink-3);}
.gd-ibtn:hover{background:var(--paper);color:var(--ink);}
.gd-ibtn svg{width:17px;height:17px;}

/* ---------- ПОЛЯ ---------- */
.gd-field{margin-top:18px;}
.gd-field label{display:block;font-size:13.5px;font-weight:500;margin-bottom:6px;}
.gd-field input,.gd-field select,.gd-field textarea{
  width:100%;height:50px;padding:0 14px;
  border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--surface);font-size:15px;
  transition:border-color .12s,box-shadow .12s;
}
.gd-field textarea{height:auto;padding:12px 14px;min-height:96px;resize:vertical;}
.gd-field input:focus,.gd-field select:focus,.gd-field textarea:focus{
  outline:none;border-color:var(--brand);box-shadow:var(--ring);}
.gd-field .hint{font-size:12.5px;color:var(--ink-3);margin-top:6px;}
.gd-field .err{font-size:13px;color:var(--alert);margin-top:6px;}

/* ---------- ЧИПЫ И СЕГМЕНТЫ ---------- */
.gd-chips{display:flex;gap:6px;flex-wrap:wrap;}
.gd-chip{height:40px;padding:0 16px;border-radius:999px;
  border:1px solid var(--line);background:var(--surface);
  font-size:14.5px;font-weight:500;color:var(--ink-2);
  white-space:nowrap;transition:all .1s;}
.gd-chip:hover{border-color:var(--ink-3);}
.gd-chip.on{background:var(--ink);border-color:var(--ink);color:#fff;}

.gd-seg{display:inline-flex;background:#E6EBF3;border-radius:12px;padding:4px;gap:2px;}
.gd-seg button{padding:8px 15px;border-radius:9px;font-size:14px;
  font-weight:600;color:var(--ink-3);white-space:nowrap;}
.gd-seg button:hover{color:var(--ink);}
.gd-seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-seg);}

/* ---------- СТРОКА СПИСКА ---------- */
.gd-rows{display:flex;flex-direction:column;}
.gd-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:16px 24px 16px 21px;border-bottom:1px solid var(--line-soft);
  border-left:3px solid transparent;transition:background .1s;}
.gd-row:last-child{border-bottom:none;}
.gd-row:hover{background:var(--paper);}
.gd-row.s-ok{border-left-color:var(--ok);}
.gd-row.s-warn{border-left-color:var(--warn);}
.gd-row.s-alert{border-left-color:var(--alert);}
.gd-row.s-idle{border-left-color:var(--line);}
.gd-row-main{flex:1 1 200px;min-width:0;}
.gd-row-title{font-size:16px;font-weight:600;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;}
.gd-row-meta{font-size:14px;color:var(--ink-3);margin-top:2px;}
.gd-row-amt{font-size:16px;font-weight:600;white-space:nowrap;}
.gd-row.tap{cursor:pointer;}
.gd-row.tap:hover .gd-row-title{color:var(--brand);}
.gd-row-open{width:18px;height:18px;color:var(--ink-3);transition:color .1s;}
.gd-row.tap:hover .gd-row-open{color:var(--brand);}

/* ---------- БЕЙДЖИ СОСТОЯНИЯ ---------- */
.gd-tag{display:inline-flex;align-items:center;padding:4px 11px;
  border-radius:999px;font-size:13.5px;font-weight:600;white-space:nowrap;}
.gd-tag.ok{background:var(--ok-wash);color:var(--ok);}
.gd-tag.warn{background:var(--warn-wash);color:var(--warn);}
.gd-tag.alert{background:var(--alert-wash);color:var(--alert);}
.gd-tag.info{background:var(--info-wash);color:var(--info);}
.gd-tag.idle{background:var(--line-soft);color:var(--ink-2);}
.gd-tag.lime{background:var(--lime);color:var(--navy);font-weight:700;}

/* ---------- ПЛИТКА ЗНАЧКА ---------- */
.gd-ikon{width:44px;height:44px;border-radius:13px;display:flex;
  align-items:center;justify-content:center;
  background:var(--brand-wash);color:var(--brand);}
.gd-ikon svg{width:21px;height:21px;}
.gd-ikon.ok{background:var(--ok-wash);color:var(--ok);}
.gd-ikon.warn{background:var(--warn-wash);color:var(--warn);}
.gd-ikon.alert{background:var(--alert-wash);color:var(--alert);}

/* ---------- КАРТОЧКА С ЦИФРОЙ ---------- */
.gd-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.gd-stats.four{grid-template-columns:repeat(4,1fr);}
@media(max-width:900px){.gd-stats,.gd-stats.four{grid-template-columns:1fr 1fr;}}
.gd-stat{min-height:140px;border-radius:var(--radius);padding:18px 20px;
  background:#F6F8FB;display:flex;flex-direction:column;justify-content:space-between;}
.gd-stat.accent{background:var(--brand-wash);}
.gd-stat-top{display:flex;align-items:center;gap:10px;min-height:26px;}
.gd-stat-num{font-size:44px;font-weight:800;letter-spacing:-.035em;line-height:1.05;}
.gd-stat-num.md{font-size:32px;}
.gd-stat-num.ok{color:var(--ok);}
.gd-delta{display:inline-flex;align-items:center;gap:3px;font-size:12.5px;
  font-weight:700;padding:3px 8px;border-radius:999px;}
.gd-delta.up{background:var(--ok-wash);color:var(--ok);}
.gd-delta.down{background:var(--alert-wash);color:var(--alert);}

/* ---------- ТАБЛИЦА ---------- */
.gd-table{width:100%;border-collapse:collapse;}
.gd-table th{text-align:left;font-size:12.5px;font-weight:600;color:var(--ink-3);
  padding:10px 20px;border-bottom:1px solid var(--line-soft);}
.gd-table td{padding:12px 20px;border-bottom:1px solid var(--line-soft);font-size:14px;}
.gd-table tr:last-child td{border-bottom:none;}
.gd-table tbody tr:hover{background:var(--paper);}
.gd-table .r{text-align:right;white-space:nowrap;}
.gd-table .credit{color:var(--ok);}

/* ---------- ПУСТОЕ СОСТОЯНИЕ ---------- */
.gd-void{padding:56px 24px;text-align:center;}
.gd-void-art{width:52px;height:52px;margin:0 auto 15px;border-radius:13px;
  background:var(--paper);display:flex;align-items:center;justify-content:center;}
.gd-void-art svg{width:24px;height:24px;color:var(--ink-3);}
.gd-void h4{font-size:16px;font-weight:600;}
.gd-void p{font-size:14px;color:var(--ink-3);margin:6px auto 0;max-width:34ch;}
.gd-void .gd-btn{margin-top:18px;}

/* ---------- ОЖИДАНИЕ ДАННЫХ ---------- */
.gd-skeleton{border-radius:var(--radius-sm);
  background:linear-gradient(90deg,var(--paper) 25%,#EEF1F6 50%,var(--paper) 75%);
  background-size:200% 100%;animation:gdWait 1.4s linear infinite;}
@keyframes gdWait{from{background-position:200% 0;}to{background-position:-200% 0;}}

/* ---------- ВЫЕЗЖАЮЩАЯ ПАНЕЛЬ ---------- */
.gd-veil{position:fixed;inset:0;z-index:60;background:rgba(15,23,41,.42);
  backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .2s;}
.gd-veil.up{opacity:1;pointer-events:auto;}
.gd-drawer{position:fixed;top:0;right:0;bottom:0;z-index:61;
  width:min(490px,100%);background:var(--surface);
  border-left:1px solid var(--line);overflow-y:auto;
  transform:translateX(100%);transition:transform .24s cubic-bezier(.32,.72,0,1);}
.gd-drawer.up{transform:translateX(0);}
.gd-drawer-top{position:sticky;top:0;z-index:2;background:var(--surface);
  padding:19px 22px;border-bottom:1px solid var(--line-soft);
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;}
.gd-drawer-top h2{font-size:17px;font-weight:600;letter-spacing:-.015em;}
.gd-drawer-top .sub{font-size:13px;color:var(--ink-3);margin-top:3px;}
.gd-drawer-body{padding:22px;}
.gd-drawer-foot{position:sticky;bottom:0;background:var(--surface);
  border-top:1px solid var(--line);padding:15px 22px;display:flex;gap:9px;}
@media(max-width:560px){
  .gd-drawer{width:100%;top:auto;height:92vh;border-left:none;
    border-radius:16px 16px 0 0;transform:translateY(100%);}
  .gd-drawer.up{transform:translateY(0);}
}

/* ---------- НИЖНЯЯ ШТОРКА (телефон) ---------- */
.gd-sheet-veil{position:fixed;inset:0;z-index:90;background:rgba(15,23,41,.38);
  opacity:0;pointer-events:none;transition:opacity .22s;}
.gd-sheet-veil.up{opacity:1;pointer-events:auto;}
.gd-sheet{position:fixed;left:0;right:0;bottom:0;z-index:91;
  background:var(--surface);border-radius:28px 28px 0 0;
  padding:8px 18px calc(22px + env(safe-area-inset-bottom));
  max-height:86vh;overflow-y:auto;box-shadow:0 -10px 40px rgba(15,23,41,.18);
  transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);}
.gd-sheet.up{transform:translateY(0);}
.gd-sheet-grip{width:40px;height:4px;border-radius:2px;background:#DDE1E8;margin:2px auto 12px;}

/* ---------- ВЫПАДАЮЩЕЕ МЕНЮ ---------- */
.gd-menu{position:absolute;z-index:20;min-width:198px;padding:6px;
  background:var(--surface);border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow-menu);
  opacity:0;visibility:hidden;transform:translateY(6px) scale(.97);
  transition:opacity .16s ease,transform .16s ease,visibility .16s;}
.gd-menu.up{opacity:1;visibility:visible;transform:translateY(0) scale(1);}
.gd-menu-title{font-size:10px;font-weight:700;color:var(--ink-3);
  text-transform:uppercase;letter-spacing:.09em;padding:7px 10px 8px;}
.gd-menu-item{display:flex;align-items:center;gap:10px;width:100%;
  padding:8px 10px;border-radius:9px;text-align:left;
  font-size:13px;transition:background .1s;}
.gd-menu-item:hover{background:var(--paper);}
.gd-menu-item.on{color:var(--brand);font-weight:600;}

/* ---------- ВСПЛЫВАЮЩЕЕ СООБЩЕНИЕ ---------- */
.gd-toast{position:fixed;left:50%;bottom:28px;z-index:120;
  transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;
  max-width:min(440px,calc(100vw - 32px));padding:14px 18px;
  border-radius:14px;background:var(--surface);border:1px solid var(--line);
  box-shadow:var(--shadow-toast);font-size:14.5px;color:var(--ink);
  transition:opacity .2s,transform .2s;}
.gd-toast.up{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}

/* ---------- РАСКЛАДКИ ---------- */
.gd-duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.gd-main-aside{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);
  gap:22px;align-items:start;}
@media(max-width:900px){.gd-duo,.gd-main-aside{grid-template-columns:1fr;gap:14px;}}

/* ---------- РАЗДЕЛ PULSE: тёмный с лаймом ---------- */
.gd-pulse .gd-nav button.on::after{background:var(--lime);}
.gd-badge-pulse{width:31px;height:31px;border-radius:10px;display:grid;
  place-items:center;background:#0F1729;color:var(--lime);}
.gd-badge-acc{width:31px;height:31px;border-radius:10px;display:grid;
  place-items:center;background:var(--brand);color:#fff;}
