/* ============================================================
   ONWAVE · SKY THEME  —  импортируемая тема Неба
   Две стороны одного листа: Хаос (тёмная, по умолчанию) и бизнес (.business)
   Версия свода «Небосвод» · 2026-09-02
   ------------------------------------------------------------
   КАК ПРИМЕНИТЬ (чтобы это стало новым Небом):
   1) подключить шрифты и этот файл в шаблон Неба
      (roy-lite/vzor/index.html или hive_lite):
      <link rel="stylesheet"
        href="https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;500;600;700&family=Inter:wght@400;450;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap">
      <link rel="stylesheet" href="/static/onwave-theme.css">
   2) корневой элемент: <body class="ow">  (Хаос — тёмная, по умолчанию)
      светлая бизнес-тема:  <body class="ow business">
      акцент по роли:       <body class="ow" data-role="master|dov|pm">
   3) весь экран обернуть в лист:  <div id="app" class="ow-leaf"> … </div>
      — он переворачивается при смене темы (см. «ПЕРЕВОРОТ ЛИСТА»)
   4) верстать экраны классами ow-*  (см. секцию «КОМПОНЕНТЫ»)
   ------------------------------------------------------------
   ГЕОМЕТРИЯ:  π — время, φ — пространство.
   π  : знак дышит 13 с, 13π = час, чеканка только за принятое.
   φ  : колонки .ow-gold = 38.2 / 61.8, отступы --sp-* по Фибоначчи
        (5·8·13·21·34·55·89 — каждый ÷ предыдущий → 1.618),
        лист .ow-rect — золотой прямоугольник.
        Сечение показано не украшением, а самой геометрией окна.
   ============================================================ */

/* ---------- ТОКЕНЫ · Хаос (тёмная, по умолчанию) ---------- */
.ow{
  color-scheme:dark;
  --night:#0a0c14; --night-2:#0c0f19;
  --panel:#12141f; --panel-2:#171a26; --panel-3:#1d2130;
  --line:#252a3a; --line-soft:#1b1f2f;
  --ink:#e9ebf4; --ink-2:#9aa1b7; --ink-3:#606782;
  /* два голоса */
  --pi:#4bd07a;  --pi-dim:#2c7a4c;   /* система / Мастер / гит */
  --sun:#e7ad55; --sun-dim:#8a6a2e;  /* человек / Дов / бизнес */
  /* семантика статуса — отдельно от голосов */
  --good:#56c98a; --warn:#e0a24d; --crit:#e2685f; --info:#5b8dd6; --violet:#7c86e8;
  --accent:var(--sun);
  /* шкала отступов = Фибоначчи (каждый ÷ предыдущий → 1.618), 13 — число улья */
  --sp-1:5px;--sp-2:8px;--sp-3:13px;--sp-4:21px;--sp-5:34px;--sp-6:55px;--sp-7:89px;
  --phi:1.618;              /* φ — пространство */
  --phi-min:38.2;           /* меньшая доля сечения, % */
  --phi-maj:61.8;           /* большая доля сечения, % */
  --r-1:6px;--r-2:9px;--r-3:14px;--r-4:20px;
  --flip-ms:280ms;          /* половина переворота листа */
  /* шрифты */
  --f-disp:"Schibsted Grotesk",system-ui,sans-serif;
  --f-body:"Inter",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,monospace;
}
/* Роли Неба v3 · решение Мастера 03.09: Мастер · Дов · Бизнес = Давид ·
   Проджект = Марина. Роль «pm» была безымянной должностью — заменена на
   человека: у Марины и Давида разные акценты, и обобщённое «pm» их
   сливало. Дов и Давид делят янтарь (обе — человеческая, бизнес-сторона);
   различает их подпись рядом, не цвет. */
.ow[data-role="master"]{--accent:var(--crit)}
.ow[data-role="dov"]{--accent:var(--sun)}
.ow[data-role="david"]{--accent:var(--sun)}
.ow[data-role="marina"]{--accent:var(--good)}

/* ---------- ТОКЕНЫ · бизнес-светлая ---------- */
.ow.business{
  color-scheme:light;
  --night:#eef1f6; --night-2:#f8fafc;
  --panel:#ffffff; --panel-2:#f2f5fa; --panel-3:#e9edf4;
  --line:#dde2ec; --line-soft:#eaeef5;
  --ink:#161923; --ink-2:#4c5262; --ink-3:#828aa0;
  --pi:#199a55;  --pi-dim:#c3e9d4;
  --sun:#a9761f; --sun-dim:#ead9b0;
  --good:#1f9e5f; --warn:#b3781d; --crit:#cf4638; --info:#3563c0; --violet:#5057c4;
}

/* ---------- БАЗА ---------- */
.ow{margin:0;background:var(--night);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
.ow h1,.ow h2,.ow h3{font-family:var(--f-disp);margin:0;letter-spacing:-.02em;text-wrap:balance}
.ow .mono{font-family:var(--f-mono)}
.ow .tnum{font-variant-numeric:tabular-nums}
.ow .eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.ow a{color:var(--pi)}
@media (prefers-reduced-motion:reduce){.ow *{animation:none!important}}

/* дыхание знака π (13 c) */
.ow-pi{color:var(--pi);animation:ow-breathe 13s ease-in-out infinite;display:inline-block}
@keyframes ow-breathe{0%,100%{opacity:.8}50%{opacity:1}}

/* ---------- ХАОС · изнанка листа — вид изнутри машины ----------
   Не «тёмный бизнес», а другая природа. В бизнесе ведёт дисплейный
   гротеск; в Хаосе ведёт моно: заголовки, навигация, подписи, числа.
   Свод глубже, панель держится волоском, приборы светятся.
   Класс необязателен — тёмная и так по умолчанию; .chaos для явности. */
.ow:not(.business){
  --night:#06080e; --night-2:#090c15;
  --panel:#0e1119; --panel-2:#12161f; --panel-3:#181d29;
  --line:#1e2434; --line-soft:#161b28;
  --ink:#e4e8f2; --ink-2:#8d94ab; --ink-3:#565d75;
}
/* машинная сетка свода — проступает только у кромки, как разметка прибора */
.ow:not(.business)::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:linear-gradient(rgba(75,208,122,.028) 1px,transparent 1px) 0 0/100% 34px,
             linear-gradient(90deg,rgba(75,208,122,.028) 1px,transparent 1px) 0 0/34px 100%;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.5) 20%,transparent 50%);
          mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.5) 20%,transparent 50%)}
.ow:not(.business) .ow-leaf{position:relative;z-index:1}
/* моно ведёт */
.ow:not(.business) .ow-sh{font-family:var(--f-mono);font-weight:600;letter-spacing:-.01em}
.ow:not(.business) .ow-sh::before{content:"› ";color:var(--pi);font-weight:400}
.ow:not(.business) .ow-nav button{font-family:var(--f-mono);font-size:12px}
.ow:not(.business) .ow-pi{text-shadow:0 0 14px rgba(75,208,122,.5)}
.ow:not(.business) .ow-tile .l{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}
.ow:not(.business) .ow-tile .v{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.ow:not(.business) .ow-epic .name{font-family:var(--f-mono);font-size:14px}
/* панель держится волоском сверху, а не заливкой */
.ow:not(.business) .ow-tile,.ow:not(.business) .ow-epic{box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
/* приборные поверхности — сканлайны живого монитора */
.ow:not(.business) .ow-instr{position:relative;overflow:hidden;box-shadow:inset 0 0 70px rgba(0,0,0,.6)}
.ow:not(.business) .ow-instr::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,rgba(75,208,122,.05) 0 1px,transparent 1px 3px)}
/* живое — блочный курсор */
.ow:not(.business) .ow-live::after{content:"▊";animation:ow-blink 1s steps(2) infinite}
@keyframes ow-blink{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.ow-live::after{animation:none}}

/* ---------- ВЕРХ / НАВИГАЦИЯ ---------- */
.ow-top{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--line);background:var(--night-2);flex-wrap:wrap}
.ow-brand{display:flex;align-items:center;gap:8px;font-family:var(--f-disp);font-weight:700;font-size:16px}
.ow-nav{display:flex;gap:3px;flex-wrap:wrap}
.ow-nav button{font-size:12.5px;color:var(--ink-2);background:transparent;border:1px solid transparent;padding:6px 11px;border-radius:8px;cursor:pointer}
.ow-nav button.on{color:var(--ink);background:var(--panel);border-color:var(--line)}
.ow-nav .sep{width:1px;background:var(--line);margin:4px}
.ow-toggle{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:3px}
.ow-toggle button{font-family:var(--f-mono);font-size:11px;color:var(--ink-2);background:transparent;border:0;padding:5px 10px;border-radius:999px;cursor:pointer}
.ow-toggle button.on{color:var(--night);background:var(--accent);font-weight:600}

/* ---------- БАННЕР / ПОЛОСА РОЛИ ---------- */
.ow-banner{display:flex;align-items:center;gap:11px;padding:10px 16px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border-bottom:1px solid var(--line);font-size:13px}
.ow-banner .dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}
.ow-banner b{color:var(--ink)}
.ow-banner .cta{margin-left:auto;font-family:var(--f-mono);font-size:11px;color:var(--accent);background:transparent;border:1px solid var(--accent);border-radius:999px;padding:5px 12px;cursor:pointer}

/* ---------- ЗАГОЛОВКИ СЕКЦИЙ ---------- */
.ow-sh{font-family:var(--f-disp);font-size:18px;font-weight:600;margin:0 0 12px}
.ow-sh small{font-family:var(--f-mono);font-size:11px;color:var(--ink-3);font-weight:400;margin-left:9px}

/* ---------- ЗОЛОТОЕ СЕЧЕНИЕ · геометрия окон ----------
   φ живёт в пропорциях, а не в украшении: колонки 38.2/61.8,
   поля по Фибоначчи, лист — золотой прямоугольник.
   <div class="ow-gold"><div>меньшее</div><div>большее</div></div>   */
.ow-gold{display:grid;grid-template-columns:38.2fr 61.8fr;gap:var(--sp-6);align-items:start;position:relative}
.ow-gold.flip-sides{grid-template-columns:61.8fr 38.2fr}
/* тонкая линия сечения лежит в самом разрыве колонок */
.ow-gold::before{content:"φ";position:absolute;top:calc(50% - 8px);left:calc(38.2% + var(--sp-6)/2);transform:translateX(-50%);
  font-family:var(--f-mono);font-size:10px;color:var(--ink-3);opacity:.55;pointer-events:none}
.ow-gold.mute::before{content:none}
.ow-rect{aspect-ratio:var(--phi)}          /* золотой прямоугольник */
.ow-rect.tall{aspect-ratio:calc(1 / 1.618)}
@media(max-width:820px){.ow-gold,.ow-gold.flip-sides{grid-template-columns:1fr;gap:var(--sp-5)}.ow-gold::before{content:none}}

/* ---------- ПЕРЕВОРОТ ЛИСТА · бизнес ↔ Хаос ----------
   Один лист с двух сторон: лицо — обложка Дова (порядок),
   изнанка — Хаос Мастера (машина изнутри).
   Разметка:  <body class="ow"> … <div id="app" class="ow-leaf">весь экран</div>
   Скрипт (при смене темы):
     const app=document.getElementById('app');
     app.classList.add('turning');                       // уходит на ребро
     setTimeout(()=>{ document.body.classList.toggle('business');
       app.classList.add('noanim'); app.classList.replace('turning','turned');
       void app.offsetWidth;                              // сброс без анимации
       app.classList.remove('noanim','turned');           // приходит с изнанки
     }, 280);                                             // = --flip-ms          */
.ow{perspective:2400px}
.ow-leaf{transform-style:preserve-3d;will-change:transform;
  transition:transform var(--flip-ms) cubic-bezier(.45,.05,.2,1)}
.ow-leaf.turning{transform:rotateY(90deg)}     /* лицо ушло на ребро */
.ow-leaf.turned{transform:rotateY(-90deg)}     /* изнанка встала с другой стороны */
.ow-leaf.noanim{transition:none}
@media(prefers-reduced-motion:reduce){
  .ow-leaf,.ow-leaf.turning,.ow-leaf.turned{transition:none;transform:none}
}

/* ---------- ПЛИТКИ / СЕТКА ---------- */
.ow-grid{display:grid;gap:var(--sp-3)}
.ow-tile{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-3);padding:14px 16px}
.ow-tile .l{font-size:12px;color:var(--ink-2)}
.ow-tile .v{font-family:var(--f-disp);font-weight:700;font-size:26px;margin-top:4px}
.ow-tile .s{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3);margin-top:4px}
.ow-tile.pi .v{color:var(--pi)} .ow-tile.money .v{color:var(--sun)}
.ow-tile.warnL{border-left:3px solid var(--warn)} .ow-tile.critL{border-left:3px solid var(--crit)} .ow-tile.piL{border-left:3px solid var(--pi)}

/* ---------- ПАСПОРТ ЧИСЛА ---------- */
.ow-passport{display:inline-flex;align-items:center;gap:7px;font-family:var(--f-mono);font-size:10.5px;color:var(--ink-2);background:var(--night-2);border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.ow-passport::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--pi)}

/* ---------- СТАТУС ФОРМОЙ И ЦВЕТОМ ---------- */
.ow-dot{display:inline-flex;align-items:center;gap:7px;font-family:var(--f-mono);font-size:12px}
.ow-dot::before{content:"";width:8px;height:8px;border-radius:50%}
.ow-dot.g{color:var(--good)} .ow-dot.g::before{background:var(--good)}
.ow-dot.a{color:var(--warn)} .ow-dot.a::before{background:var(--warn)}
.ow-dot.r{color:var(--crit)} .ow-dot.r::before{background:var(--crit)}

/* ---------- ЧИП СЛУЖБЫ (Тело / Надзор / Зеркала) ---------- */
.ow-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.ow-chip{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:9px 12px}
.ow-chip .cn{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:7px}
.ow-chip .cn::before{content:"";width:7px;height:7px;border-radius:50%}
.ow-chip.g .cn::before{background:var(--good)} .ow-chip.a .cn::before{background:var(--warn)} .ow-chip.r .cn::before{background:var(--crit)}
.ow-chip .cr{font-size:11px;color:var(--ink-2);margin-top:2px}

/* ---------- ЭПИК (единица работы) + полоса приёмки ---------- */
.ow-epic{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-3);margin-bottom:9px;overflow:hidden}
.ow-epic-h{display:grid;grid-template-columns:1fr auto;gap:12px;padding:14px 16px;cursor:pointer;align-items:center}
.ow-epic .name{font-family:var(--f-disp);font-weight:600;font-size:15px;display:flex;align-items:center;gap:9px}
.ow-epic .name .ep{width:9px;height:9px;border-radius:3px}      /* цвет эпика */
.ow-epic .outcome{font-size:12.5px;color:var(--ink-2);margin-top:3px}
.ow-eta{font-family:var(--f-mono);font-size:11px;padding:4px 9px;border-radius:999px;white-space:nowrap}
.ow-eta.go{color:var(--good);background:color-mix(in srgb,var(--good) 14%,transparent)}
.ow-eta.wait{color:var(--warn);background:color-mix(in srgb,var(--warn) 15%,transparent)}
.ow-eta.frost{color:var(--info);background:color-mix(in srgb,var(--info) 15%,transparent)}
.ow-bar{display:flex;height:11px;border-radius:6px;overflow:hidden;background:var(--panel-3);margin:0 16px 6px}
.ow-bar .v{background:var(--good)} .ow-bar .b{background:var(--warn)} .ow-bar .q{background:var(--pi-dim)}
.ow-barleg{display:flex;gap:13px;padding:0 16px 14px;font-family:var(--f-mono);font-size:11px;color:var(--ink-2);flex-wrap:wrap}
.ow-barleg i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:5px}
.ow-barleg b{color:var(--ink)}

/* ---------- КАНБАН · карточка с эпик-кластером ---------- */
.ow-board{display:flex;gap:10px;align-items:flex-start;overflow-x:auto}
.ow-col{flex:0 0 236px;background:var(--night-2);border:1px solid var(--line-soft);border-radius:var(--r-3);padding:8px;display:flex;flex-direction:column;gap:7px}
.ow-col-h{display:flex;align-items:center;gap:7px;padding:3px 5px}
.ow-col-h .cd{width:8px;height:8px;border-radius:3px}
.ow-col-h .cn{font-size:12px;font-weight:600}
.ow-col-h .ct{margin-left:auto;font-family:var(--f-mono);font-size:11px;color:var(--ink-3)}
.ow-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:9px 10px;display:flex;flex-direction:column;gap:7px;cursor:pointer;
  border-left:3px solid var(--ep,var(--ink-3))}          /* --ep = цвет эпика; для блокера задать var(--crit) */
.ow-card:hover{border-color:var(--pi-dim)}
.ow-card .id{font-family:var(--f-mono);font-size:9.5px;color:var(--ink-3)}
.ow-card .t{font-size:12px;line-height:1.35}
.ow-card .foot{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.ow-pill{font-size:9px;font-weight:600;padding:2px 6px;border-radius:999px}
.ow-pill.ur{color:var(--crit);background:color-mix(in srgb,var(--crit) 15%,transparent)}
.ow-pill.hi{color:var(--warn);background:color-mix(in srgb,var(--warn) 15%,transparent)}
.ow-pill.md{color:var(--info);background:color-mix(in srgb,var(--info) 15%,transparent)}
.ow-pill.lo{color:var(--ink-3);background:var(--panel-3)}
.ow-tag{font-family:var(--f-mono);font-size:8.5px;padding:2px 5px;border-radius:5px;border:1px solid var(--line-soft)} /* эпик-тег красить цветом эпика */
.ow-live{font-family:var(--f-mono);font-size:9px;color:var(--crit);display:inline-flex;align-items:center;gap:4px}
.ow-live::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--crit);animation:ow-pulse 1.2s infinite}
@keyframes ow-pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* ---------- АВАТАР ОТВЕТСТВЕННОГО ---------- */
.ow-ava{border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-weight:700;color:#0a0c14}

/* ---------- ПОГОДА (верхний слой Деки) ---------- */
.ow-wx{display:flex;align-items:center;gap:18px}
.ow-wx svg{width:64px;height:64px;flex:none}
.ow-wx h1{font-family:var(--f-disp);font-size:30px;font-weight:700;margin:0}
.ow-cond{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.ow-cc{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:12px 14px}
.ow-cc .cl{font-family:var(--f-disp);font-weight:600;font-size:14px}
.ow-cc .cv{font-family:var(--f-mono);font-size:11px;color:var(--ink-2);margin-top:3px}

/* ---------- ПРИБОР (Дыхание / Рентген / терминальный вывод) ---------- */
.ow-instr{background:var(--night-2);border:1px solid var(--line);border-radius:var(--r-3);padding:16px 18px;font-family:var(--f-mono);font-size:12.5px;line-height:1.9;color:var(--ink-2);overflow-x:auto}
.ow-instr b{color:var(--ink)} .ow-instr .hl{color:var(--pi)} .ow-instr .w{color:var(--warn)} .ow-instr .c{color:var(--crit)} .ow-instr .g{color:var(--good)} .ow-instr .d{color:var(--ink-3)}

/* ---------- ВРАТА (минимальный вход печатью) ---------- */
.ow-gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(680px 420px at 50% 24%,color-mix(in srgb,var(--pi) 8%,transparent),transparent 70%),var(--night)}
.ow-seal{width:70px;height:70px;display:grid;place-items:center;position:relative}
.ow-seal .r1{position:absolute;inset:0;border:1px solid var(--pi-dim);border-radius:50%}
.ow-seal .r2{position:absolute;inset:9px;border:1px solid var(--line);border-radius:50%}
.ow-word{font-family:var(--f-disp);font-weight:600;font-size:28px;letter-spacing:.4em;text-indent:.4em}
.ow-gbtn{display:flex;align-items:center;justify-content:center;gap:9px;padding:12px;border-radius:var(--r-2);border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}
.ow-gbtn.tg{background:color-mix(in srgb,var(--sun) 14%,var(--panel));border-color:var(--sun-dim);color:var(--sun)}

/* ---------- УТИЛИТЫ ---------- */
.ow-scrollx{overflow-x:auto}
.ow-wrap{max-width:1080px;margin:0 auto;padding:0 18px}

/* ============================================================
   КОМПОНЕНТЫ ПОД СУЩЕСТВУЮЩИЕ ЭКРАНЫ НЕБА
   (Дека · Взор · Дыхание · Рентген · Финансы · Команда · Доступы)
   ============================================================ */

/* --- статус снимка в шапке (снято / снимок / связь молчит) --- */
.ow-snapshot{display:flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:11px;color:var(--ink-3)}
.ow-snapshot .live{display:inline-flex;align-items:center;gap:6px;color:var(--good)}
.ow-snapshot .live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--good)}
.ow-snapshot.silent .live{color:var(--crit)} .ow-snapshot.silent .live::before{background:var(--crit);animation:ow-pulse 1.4s infinite}

/* --- Взор: пять потоков за 24ч (это не воронка) --- */
.ow-flows{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.ow-flow{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:14px 12px;text-align:center}
.ow-flow .v{font-family:var(--f-disp);font-weight:700;font-size:30px;line-height:1}
.ow-flow .l{font-size:12px;color:var(--ink-2);margin-top:5px}
.ow-flow .l .ic{margin-right:4px}
.ow-notfunnel{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.04em}

/* --- паспорт-правило под метрикой (source · window · rule · as_of) --- */
.ow-rule{font-family:var(--f-mono);font-size:10.5px;line-height:1.6;color:var(--ink-3);border-left:1px solid var(--line);padding:6px 0 6px 12px;margin-top:6px}
.ow-rule b{color:var(--ink-2)}

/* --- пара «ключ — значение» (Подтверждённый выпуск: за сутки / за неделю / казна) --- */
.ow-kv{display:flex;align-items:baseline;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-soft)}
.ow-kv:last-child{border-bottom:0}
.ow-kv .k{font-size:14px;color:var(--ink)}
.ow-kv .v{margin-left:auto;font-family:var(--f-mono);font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.ow-kv .v.empty{color:var(--ink-3)}

/* --- честное пустое состояние (вместо прочерка «—») --- */
.ow-empty{border:1px dashed var(--line);border-radius:var(--r-2);padding:16px;text-align:center;color:var(--ink-3);font-family:var(--f-mono);font-size:12px}
.ow-empty.stale{border-color:color-mix(in srgb,var(--warn) 40%,var(--line));color:var(--warn)}

/* --- Дыхание: ТАКТ по окнам (моно-таблица) --- */
.ow-tact{width:100%;border-collapse:collapse;font-family:var(--f-mono);font-size:12.5px}
.ow-tact th,.ow-tact td{padding:6px 10px;text-align:right;color:var(--ink-2)}
.ow-tact th{color:var(--ink-3);font-weight:500;border-bottom:1px solid var(--line)}
.ow-tact td:first-child,.ow-tact th:first-child{text-align:left;color:var(--ink-3)}
.ow-tact td b{color:var(--ink)}
.ow-tact tr:hover td{background:var(--panel-2)}

/* --- метр приёмки эпика ▰▱ (единичный %) --- */
.ow-meter{display:flex;align-items:center;gap:10px}
.ow-meter .track{flex:1;height:9px;background:var(--panel-3);border-radius:5px;overflow:hidden}
.ow-meter .fill{height:100%;background:var(--good);border-radius:5px}
.ow-meter .pct{font-family:var(--f-mono);font-size:11px;color:var(--ink-2);min-width:56px;text-align:right}
.ow-meter.warn .fill{background:var(--warn)} .ow-meter.frost .fill{background:var(--info)}
/* дети эпика по verification_state */
.ow-verif{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3);margin-top:4px}
.ow-verif .v{color:var(--good)} .ow-verif .b{color:var(--warn)} .ow-verif .q{color:var(--ink-3)}

/* --- 4 независимые величины (популяция слота) --- */
.ow-four{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ow-four .m{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:13px 15px}
.ow-four .m .n{font-family:var(--f-disp);font-weight:700;font-size:26px}
.ow-four .m.accepted .n{color:var(--good)}
.ow-four .m .d{font-size:11.5px;color:var(--ink-2);margin-top:3px}
.ow-four .m .as{font-family:var(--f-mono);font-size:9.5px;color:var(--ink-3);margin-top:5px}

/* --- Рентген: строка по роли (Строй/Кодекс/Экран/Человек) --- */
.ow-role{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2);padding:11px 14px}
.ow-role.crit{border-left:3px solid var(--crit)} .ow-role.warn{border-left:3px solid var(--warn)} .ow-role.good{border-left:3px solid var(--good)}
.ow-role .rh{display:flex;align-items:baseline;gap:8px}
.ow-role .rn{font-family:var(--f-disp);font-weight:600;font-size:14px}
.ow-role .rc{margin-left:auto;font-family:var(--f-mono);font-size:13px;color:var(--ink)}
.ow-role .rs{font-size:12px;color:var(--ink-2);margin-top:4px}

/* --- Команда: строка сотрудника из heartbeat --- */
.ow-member{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-2)}
.ow-member .st{width:8px;height:8px;border-radius:50%;flex:none}
.ow-member.alive .st{background:var(--good)} .ow-member.silent .st{background:var(--warn)} .ow-member.archived .st{background:var(--ink-3)}
.ow-member .nm{font-size:13px;font-weight:600}
.ow-member .rl{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3)}
.ow-member .seen{margin-left:auto;font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3)}

/* --- Доступы: запись реестра + «имена без лица» --- */
.ow-reg{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-soft)}
.ow-reg .who{font-size:13px}
.ow-reg .rights{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3)}
.ow-reg .src{margin-left:auto;font-family:var(--f-mono);font-size:9.5px;color:var(--ink-2);background:var(--panel-2);border:1px solid var(--line-soft);padding:2px 7px;border-radius:5px}
.ow-nameless{font-family:var(--f-mono);font-size:12px;color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,var(--panel));border:1px solid color-mix(in srgb,var(--warn) 30%,var(--line));border-radius:var(--r-2);padding:11px 14px}

/* --- карточка-решение для Мастера/Дова (канал решений) --- */
.ow-decision{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--sun);border-radius:var(--r-2);padding:12px 15px}
.ow-decision .q{font-size:14px;color:var(--ink)}
.ow-decision .opts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.ow-decision .opts button{font-family:var(--f-mono);font-size:11px;padding:6px 12px;border-radius:var(--r-1);border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}
.ow-decision .opts .mine{color:var(--night);background:var(--sun);border-color:var(--sun)}

/* --- «ждёт человека» строка (для Взора/Деки) --- */
.ow-waits{display:flex;align-items:center;gap:11px;padding:10px 13px;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-2)}
.ow-waits .q{flex:1;font-size:13.5px}
.ow-waits .tag{font-family:var(--f-mono);font-size:10px;color:var(--accent)}

/* --- барометр (долг слияний / давление) --- */
.ow-baro{display:flex;gap:16px;align-items:center;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-left:3px solid var(--crit);border-radius:var(--r-3);padding:16px 18px;flex-wrap:wrap}
.ow-baro .big{font-family:var(--f-disp);font-weight:700;font-size:30px;color:var(--crit);line-height:1}
.ow-baro .txt{flex:1;min-width:220px;color:var(--ink-2);font-size:14px}
.ow-baro .txt b{color:var(--ink)}

/* --- стек готовности релиза (принято | построено | очередь) --- */
.ow-release{display:flex;height:32px;border-radius:var(--r-2);overflow:hidden;border:1px solid var(--line)}
.ow-release .seg{display:grid;place-items:center;font-family:var(--f-mono);font-size:12px;font-weight:600;color:#0a0c14}
.ow-release .acc{background:var(--good)} .ow-release .built{background:var(--warn)} .ow-release .queue{background:var(--pi-dim);color:var(--ink)}

/* ============================================================
   ДОВОДКА · глубина светлой темы, фокус, типо-шкала
   ============================================================ */
/* мягкие тени только в бизнес-светлой (на белом границы плоские) */
.ow.business .ow-tile,.ow.business .ow-epic,.ow.business .ow-card,
.ow.business .ow-chip,.ow.business .ow-flow,.ow.business .ow-role,
.ow.business .ow-member,.ow.business .ow-four .m,.ow.business .ow-decision{
  box-shadow:0 1px 2px rgba(22,32,62,.05),0 4px 14px rgba(22,32,62,.045);
}
.ow.business .ow-top,.ow.business .ow-banner{box-shadow:0 1px 0 var(--line)}
/* видимый фокус клавиатуры */
.ow button:focus-visible,.ow select:focus-visible,.ow a:focus-visible,.ow [tabindex]:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;
}
/* явная типо-шкала (переменные — для новых экранов) */
.ow{
  --fs-display:30px; --fs-h2:22px; --fs-h3:18px;
  --fs-body:15px; --fs-sm:13px; --fs-mono:12px; --fs-micro:10.5px;
}
