/* Noovy Partner API — human pages (/docs, /admin).
 * Design kit: ~/Documents/Claude/Design Kits/noovy (DESIGN.md §3 type, brand-tokens.css colours).
 * The mock this follows: docs/mocks/human-door — keep the two in step when either changes.
 */

/* Montserrat, three variable subsets, self-hosted (kit fonts/README.md: use the .woff2 on a real stack) */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 700;font-display:swap;
  src:url('fonts/montserrat-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 700;font-display:swap;
  src:url('fonts/montserrat-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 700;font-display:swap;
  src:url('fonts/montserrat-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}

:root{
  --primary:#7956FB;--primary-lighter:#EFE8FE;--primary-light:#B69FFC;--primary-dark:#4A31F2;--primary-text:#4A31F2;
  --info:#00BFFE;--info-lighter:#E1F7FF;--info-light:#7CDAFE;--info-text:#0E7490;
  --success:#00A7A3;--success-lighter:#DDF2F3;--success-light:#6FCCCB;--success-text:#006A62;
  --warning:#FFCA28;--warning-lighter:#FFF8E1;--warning-light:#FFE082;--warning-text:#B45309;
  --error:#FF0051;--error-lighter:#FFE8F0;--error-light:#FF8B9C;--error-text:#B91C1C;
  --hover-row:#F5F6FF;--selected-fill:#EFE8FE;--selected-text:#4A31F2;--track:#EEF0F3;--navy:#172145;
  --ink-strong:#212B36;--ink:#454F5B;--ink-muted:#637381;--ink-placeholder:#6B7784;--ink-faint:#919EAB;
  --line:#DFE3E8;--line-control:#7D8B98;--page:#F4F6F8;--surface:#FFFFFF;
  --radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-pill:999px;
  --shadow-card:0 1px 2px rgba(16,24,40,.04),0 2px 8px rgba(16,24,40,.04);
  --shadow-overlay:0 8px 24px rgba(16,24,40,.12);
  --scrim:rgba(0,0,0,.40);
  --focus-ring:0 0 0 2px var(--surface),0 0 0 4px var(--primary-dark);
  --font-sans:"Montserrat",system-ui,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:22px;-webkit-font-smoothing:antialiased;}
a{color:var(--primary-text);text-decoration:none;}a:hover{color:var(--primary-dark);text-decoration:underline;}
h1,h2,h3,p{margin:0;}
svg.i{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
svg.i20{width:20px;height:20px;}svg.i24{width:24px;height:24px;}
.mono{font-family:var(--font-mono);font-size:13px;}
.num{font-variant-numeric:tabular-nums;}
.skip{position:absolute;left:-9999px;}
.skip:focus{left:16px;top:8px;z-index:60;background:var(--surface);padding:8px 12px;border-radius:var(--radius-md);}
/* type */
.display{font-size:32px;line-height:48px;font-weight:700;color:var(--ink-strong);}
.headline{font-size:24px;line-height:36px;font-weight:700;color:var(--ink-strong);}
.title{font-size:20px;line-height:30px;font-weight:700;color:var(--ink-strong);}
.subtitle{font-size:18px;line-height:28px;font-weight:600;color:var(--ink-strong);}
.body-lg{font-size:16px;line-height:24px;}
.label{font-size:13px;line-height:22px;font-weight:600;}
.caption{font-size:12px;line-height:18px;color:var(--ink-muted);}
.overline{font-size:12px;line-height:18px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-muted);}
.muted{color:var(--ink-muted);}.strong{color:var(--ink-strong);}
/* top bar */
.topbar{height:56px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:20;}
.topbar .brand{display:flex;align-items:center;gap:12px;}
.topbar .brand img{width:28px;height:28px;display:block;}
.topbar .svc{font-size:16px;line-height:24px;font-weight:600;color:var(--ink-strong);white-space:nowrap;}
.topbar .nav{display:flex;gap:4px;margin-left:24px;}
.navitem{height:36px;padding:0 12px;border-radius:var(--radius-md);display:inline-flex;align-items:center;font-size:14px;line-height:22px;color:var(--ink);}
a.navitem:hover{background:var(--hover-row);text-decoration:none;color:var(--ink-strong);}
.navitem.on{background:var(--selected-fill);color:var(--selected-text);font-weight:600;}
.topbar .account{margin-left:auto;display:flex;align-items:center;gap:12px;}
/* buttons */
.btn{height:36px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;font-family:var(--font-sans);font-size:13px;line-height:22px;font-weight:600;border:1px solid transparent;white-space:nowrap;cursor:pointer;}
.btn.pri{background:var(--primary);color:#fff;}
.btn.out{background:var(--surface);border-color:var(--line-control);color:var(--ink-strong);}
a.btn:hover{text-decoration:none;background:var(--hover-row);}
/* chips */
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:var(--radius-sm);font-size:12px;line-height:18px;font-weight:600;white-space:nowrap;}
.chip .dot{width:6px;height:6px;border-radius:50%;flex:none;background:currentColor;}
.chip.success{background:var(--success-lighter);color:var(--success-text);}
.chip.warning{background:var(--warning-lighter);color:var(--warning-text);}
.chip.error{background:var(--error-lighter);color:var(--error-text);}
.chip.info{background:var(--info-lighter);color:var(--info-text);}
.chip.out{background:var(--surface);border:1px solid var(--line-control);color:var(--ink-strong);}
.method{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:var(--radius-sm);font-size:12px;line-height:18px;font-weight:600;letter-spacing:.4px;background:var(--page);border:1px solid var(--line);color:var(--ink-strong);font-family:var(--font-mono);}
/* cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);}
.card.pad{padding:24px;}
/* notices */
.notice{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:var(--radius-md);border:1px solid;font-size:14px;line-height:22px;}
.notice svg{margin-top:1px;}
.notice.warning{background:var(--warning-lighter);border-color:var(--warning-light);color:var(--ink);}
.notice.warning svg{color:var(--warning-text);}
.notice.info{background:var(--info-lighter);border-color:var(--info-light);color:var(--ink);}
.notice.info svg{color:var(--info-text);}
.notice b{font-weight:600;color:var(--ink-strong);}
/* tables */
.tablewrap{overflow-x:auto;}
table.dt{border-collapse:collapse;width:100%;}
table.dt th{font-size:13px;line-height:22px;font-weight:600;color:var(--ink-muted);text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);background:var(--surface);white-space:nowrap;}
table.dt td{font-size:14px;line-height:22px;color:var(--ink-strong);padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top;}
table.dt tr:last-child td{border-bottom:none;}
table.dt td.d{color:var(--ink);}
table.dt th.r,table.dt td.r{text-align:right;}
table.dt tbody tr:hover td{background:var(--hover-row);}
/* code */
.code{background:var(--page);border:1px solid var(--line);border-radius:var(--radius-md);padding:16px;font-family:var(--font-mono);font-size:13px;line-height:20px;color:var(--ink-strong);white-space:pre;overflow-x:auto;margin:0;}
code.k{font-family:var(--font-mono);font-size:13px;color:var(--ink-strong);background:var(--page);border:1px solid var(--line);border-radius:var(--radius-sm);padding:0 4px;}
/* fields */
.field{height:40px;border:1px solid var(--line-control);border-radius:var(--radius-md);background:var(--surface);display:inline-flex;align-items:center;gap:8px;padding:0 12px;font-size:14px;line-height:22px;color:var(--ink-strong);white-space:nowrap;font-family:var(--font-sans);}
.field.ph{color:var(--ink-placeholder);}
/* table of contents */
.toc{padding:12px;display:flex;flex-direction:column;gap:12px;position:sticky;top:72px;max-height:calc(100vh - 96px);overflow-y:auto;}
.toc-group{display:flex;flex-direction:column;gap:4px;}
.toc-item{min-height:36px;padding:6px 12px;border-radius:var(--radius-sm);display:flex;align-items:center;gap:8px;font-size:14px;line-height:22px;color:var(--ink);}
a.toc-item:hover{background:var(--hover-row);text-decoration:none;color:var(--ink-strong);}
.toc-item.on,a.toc-item.on:hover{background:var(--selected-fill);color:var(--selected-text);font-weight:600;}
.toc-item.on .method{border-color:var(--primary-light);}
.toc-item .method{height:20px;font-size:11px;padding:0 6px;}
/* kpi */
.kpi{padding:20px 24px;display:flex;flex-direction:column;gap:4px;}
.kpi .val{font-size:32px;line-height:48px;font-weight:700;color:var(--ink-strong);font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:12px;}
.kpi .val.small{font-size:24px;line-height:48px;}
.sdot{width:10px;height:10px;border-radius:50%;background:var(--success);flex:none;}
.sdot.idle{background:var(--ink-faint);}
.sdot.bad{background:var(--error);}
.toolbar{min-height:56px;display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
/* page skeleton */
.page{padding:32px 32px 48px;display:flex;flex-direction:column;gap:24px;max-width:1600px;margin:0 auto;}
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.kpis{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:24px;}
.docsgrid{display:grid;grid-template-columns:280px minmax(0, 1fr);gap:24px;align-items:start;}
.endpoint{display:flex;flex-direction:column;scroll-margin-top:72px;}
.endpoint + .endpoint{margin-top:24px;}
.endpoint .hd{padding:24px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:12px;}
.endpoint section{padding:24px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:16px;}
.endpoint .hd + section{border-top:none;}
.pathline{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.pathline .p{font-family:var(--font-mono);font-size:16px;color:var(--ink-strong);}
.empty{padding:48px 24px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:var(--ink-muted);}
/* ══ Раздел доступа: вход гуглом, учётные данные Noovy, полоса «какие отели вы видите».
   Макет, одобренный Вовой 08.09.2026. Ни одной новой переменной и ни одной второй
   системы классов — те же токены и те же приёмы, что выше. ══════════════════ */
/* кто вошёл — в шапке, на месте плашки «Local only» */
.topbar .who{display:flex;align-items:center;gap:8px;font-size:13px;line-height:22px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.topbar .who .ava{width:28px;height:28px;border-radius:var(--radius-pill);background:var(--primary-lighter);color:var(--primary-text);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none;}
.topbar .account form{margin:0;display:flex;}
/* страница входа: страница без шапки, карточка в две колонки */
.bare{padding:0;}
.authwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 24px;}
.authsplit{display:grid;grid-template-columns:1fr 1fr;width:100%;max-width:1040px;min-height:520px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden;}
.authsplit .art{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--page);}
.authsplit .art img{width:100%;max-width:440px;height:auto;display:block;}
.authsplit .col{display:flex;flex-direction:column;justify-content:center;padding:48px 56px;}
.authsplit .inner{width:100%;max-width:400px;margin:0 auto;}
.authsplit .logo{width:32px;height:32px;display:block;margin-bottom:24px;}
.authsplit h1{margin-bottom:8px;}
.authsplit .sub{margin-bottom:24px;}
.authsplit .notice{margin-bottom:20px;}
.authsplit .foot{margin-top:32px;font-size:12px;line-height:18px;color:var(--ink-muted);}
.gmark{width:18px;height:18px;flex:none;display:block;}
@media (max-width:1023px){.authsplit{grid-template-columns:minmax(0,1fr);}.authsplit .art{display:none;}.authsplit .col{padding:40px 32px;}}
/* кнопки: те же .btn, два новых размера и тихий вариант */
.btn.lg{height:48px;font-size:14px;padding:0 20px;}
.btn.block{width:100%;}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink);}
a.btn.pri:hover,button.btn.pri:hover{background:var(--primary-dark);color:#fff;}
a.btn.ghost:hover,button.btn.ghost:hover{background:var(--hover-row);}
/* заголовок внутри уведомления — отдельной строкой */
.notice .msg b{display:block;}
.notice.error{background:var(--error-lighter);border-color:var(--error-light);color:var(--ink);}
.notice.error svg{color:var(--error-text);}
.notice.success{background:var(--success-lighter);border-color:var(--success-light);color:var(--ink);}
.notice.success svg{color:var(--success-text);}
/* поля ввода */
.formrow{margin-bottom:16px;}
.formrow > .label{display:block;margin-bottom:4px;color:var(--ink-strong);}
.formrow .caption{margin-top:4px;}
.input{width:100%;height:40px;padding:0 12px;background:var(--surface);border:1px solid var(--line-control);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:14px;line-height:22px;color:var(--ink-strong);}
.input::placeholder{color:var(--ink-placeholder);}
.input:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring);}
.inputwrap{position:relative;display:block;}
.inputwrap .input{padding-right:40px;}
.inputwrap .eye{position:absolute;right:4px;top:4px;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;background:none;border:0;border-radius:var(--radius-sm);color:var(--ink-muted);cursor:pointer;}
.inputwrap .eye:hover{color:var(--ink-strong);background:var(--hover-row);}
.caption.tip{margin-top:12px;}
/* всплывающее окно учётных данных Noovy */
.modal{position:fixed;inset:0;z-index:50;display:none;}
.modal.is-open,.modal:target{display:block;}
.modal .scrim{position:absolute;inset:0;background:var(--scrim);display:block;}
.modal .dialog{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 48px));max-height:calc(100vh - 48px);overflow-y:auto;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);}
.modal .dialog .hd{padding:24px 24px 0;display:flex;flex-direction:column;gap:8px;}
.modal .dialog .bd{padding:20px 24px 4px;}
.modal .dialog .bd > .notice{margin-bottom:20px;}
.modal .dialog .ft{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:16px 24px 20px;border-top:1px solid var(--line);margin-top:16px;}
.modal .dialog .ft form{margin:0;}
.modal .dialog .ft .left{margin-right:auto;font-size:12px;line-height:18px;color:var(--ink-muted);}
.modal .dialog .hd .okmark{margin-bottom:8px;}
.okmark{width:48px;height:48px;border-radius:var(--radius-pill);background:var(--success-lighter);color:var(--success-text);display:flex;align-items:center;justify-content:center;}
body:has(.modal.is-open){overflow:hidden;}
/* полоса доступа над содержимым /docs */
.access{display:flex;gap:24px;align-items:flex-start;padding:20px 24px;flex-wrap:wrap;}
.access .grow{flex:1 1 420px;min-width:0;}
.access .hotels{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 10px;}
.access .side{flex:none;display:flex;flex-direction:column;gap:8px;align-items:flex-start;}
.access .side .caption{max-width:220px;}
@media (max-width:1100px){
  .kpis{grid-template-columns:repeat(2, minmax(0, 1fr));}
  .docsgrid{grid-template-columns:minmax(0, 1fr);}
  .toc{position:static;max-height:none;}
}
@media (max-width:700px){
  .page{padding:24px 16px 40px;}
  .kpis{grid-template-columns:minmax(0, 1fr);}
  /* Узкий экран: шапка ужимается до логотипа и двух разделов, чип состояния прячется — иначе строка уезжает вбок. */
  .topbar{padding:0 12px;gap:8px;}
  .topbar .svc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
  .topbar .brand .chip{display:none;}
  .topbar .nav{margin-left:8px;}
  .topbar .account{display:none;}
  .toolbar{align-items:flex-start;}
}
