/* Indigo KPI Dashboard — Indigo Dark design system.
   Tokens only; #7b5cff is never used for text on the page background. */
:root{
  --bg:#0f1117; --surface:#161a21; --surface2:#1f242d; --border:#2a2f40;
  --text:#e6e8ee; --muted:#9aa3b2; --muted2:#6b7488;
  --primary:#7b5cff; --primary2:#a78bfa; --green:#4ade80; --accent:#43b6ff; --error:#f87171;
  --grid:#232936; --axis:#2a2f40;
  --s1:#7b5cff; --s2:#43b6ff; --s3:#a78bfa; --s4:#6b7488; --s5:#5a44bd; --s6:#2f86bf;
  --pos-bg:rgba(74,222,128,.14); --neg-bg:rgba(248,113,113,.14);
  --hatch:repeating-linear-gradient(45deg,#1f242d 0 4px,#161a21 4px 8px);
  --hover-surface:#191e26; --hover-border:#3a4258;
  --r-sm:6px; --r-md:8px; --r-lg:12px; --r-xl:14px; --r-full:999px;
  --rail:220px; --top:52px;
  --shadow:0 8px 28px rgba(0,0,0,.36);
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
html{background:var(--bg)}
body{background:var(--bg);color:var(--text);font:400 13px/1.5 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}
a{color:var(--primary2);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
button:disabled,button[disabled]{opacity:.45;cursor:not-allowed}
input,select,textarea{font:inherit;color:inherit}
table{border-collapse:collapse}
:focus-visible{outline:2px solid var(--primary2);outline-offset:2px;border-radius:4px}
.mono{font-family:var(--mono);font-size:12px;font-variant-ligatures:none}
.num{font-variant-numeric:tabular-nums}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;max-width:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0!important}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--surface2);padding:8px 12px;border-radius:var(--r-md)}
.skip:focus{left:8px;top:8px}

/* ---------------------------------------------------------------- layout */
.app{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);grid-template-rows:var(--top) 1fr;min-height:100vh;max-width:100vw}
.app.rail-collapsed{--rail:56px}
.rail{grid-row:1/3;grid-column:1;background:var(--bg);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;position:sticky;top:0;height:100vh}
.rail-head{height:var(--top);display:flex;align-items:center;gap:8px;padding:0 10px 0 14px;border-bottom:1px solid var(--border);flex:none}
.brand{display:flex;align-items:center;gap:9px;color:var(--text);font-size:14px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden}
.brand:hover{text-decoration:none}
.brand .logo{width:24px;height:24px;border-radius:7px;background:var(--primary);display:grid;place-items:center;flex:none}
.brand b{font-weight:600}
.brand-txt{font-weight:400;color:var(--muted)}
.brand-txt b{color:var(--text)}
.rail-toggle{margin-left:auto;width:26px;height:26px;border-radius:var(--r-sm);color:var(--muted);display:grid;place-items:center;flex:none}
.rail-toggle:hover{background:var(--surface2);color:var(--text)}
.rail-nav{overflow-y:auto;overflow-x:hidden;padding:10px 8px 24px;flex:1;scrollbar-width:thin}
.nav-group{margin-bottom:14px}
.nav-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:6px 8px 4px}
.nav-item{display:flex;align-items:center;gap:8px;height:32px;padding:0 8px;border-radius:var(--r-md);color:var(--muted);font-size:13px;position:relative;white-space:nowrap;overflow:hidden}
.nav-item:hover{background:var(--surface);color:var(--text);text-decoration:none}
.nav-item.on{background:var(--surface2);color:var(--text)}
.nav-item.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:2px;border-radius:2px;background:var(--primary)}
.nav-no,.nav-ico{font-family:var(--mono);font-size:11px;color:var(--muted2);width:18px;flex:none;text-align:center}
.nav-item.on .nav-no,.nav-item.on .nav-ico{color:var(--primary2)}
.nav-name{flex:1;overflow:hidden;text-overflow:ellipsis}
.nav-ow{font-size:10px;color:var(--muted2);flex:none}
.app.rail-collapsed .nav-name,.app.rail-collapsed .nav-ow,.app.rail-collapsed .nav-label,.app.rail-collapsed .brand-txt{display:none}
.app.rail-collapsed .nav-item{justify-content:center;padding:0}
.app.rail-collapsed .nav-group{margin-bottom:10px;border-top:1px solid var(--border);padding-top:8px}
.app.rail-collapsed .nav-group:first-child{border-top:0}

.topbar{grid-column:2;grid-row:1;position:sticky;top:0;z-index:30;max-width:100%;height:var(--top);display:flex;align-items:center;gap:12px;padding:0 24px;background:rgba(15,17,23,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.crumbs{display:flex;align-items:baseline;gap:10px;min-width:0;overflow:hidden}
.page-title{font-size:16px;line-height:1.3;white-space:nowrap}
.crumb-sub{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.controls{margin-left:auto;display:flex;align-items:center;gap:8px;flex:none;min-width:0}
.icon-btn{width:32px;height:32px;border-radius:var(--r-md);color:var(--muted);display:grid;place-items:center;border:1px solid var(--border);background:var(--surface)}
.icon-btn:hover{color:var(--text);border-color:var(--hover-border)}
.only-mobile{display:none}

.weekpick{position:relative;display:flex;align-items:center;height:32px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);overflow:visible}
.seg-btn{height:30px;min-width:26px;padding:0 6px;color:var(--muted);font-size:13px}
.seg-btn:hover{color:var(--text);background:var(--surface2)}
.seg-btn.wk{font-family:var(--mono);font-size:12px;color:var(--text);padding:0 10px;border-left:1px solid var(--border);border-right:1px solid var(--border);display:flex;align-items:center;gap:6px}
.seg-btn.wk .pw{width:14px;height:10px;border-radius:2px;background:var(--hatch);border:1px solid var(--border)}
.menu[hidden]{display:none}
.menu{position:absolute;top:36px;right:0;min-width:260px;max-height:420px;overflow:auto;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:6px;z-index:50}
.menu-item{display:flex;align-items:center;gap:10px;width:100%;height:32px;padding:0 10px;border-radius:var(--r-sm);color:var(--muted);font-size:12px;text-align:left}
.menu-item:hover{background:var(--surface);color:var(--text)}
.menu-item.on{color:var(--text);background:rgba(123,92,255,.16)}
.menu-item .lb{font-family:var(--mono);flex:1}
.menu-item .ct{font-family:var(--mono);font-size:10px;color:var(--muted2)}

.segmented{display:flex;height:32px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);padding:3px;gap:2px}
.segmented button{padding:0 10px;border-radius:var(--r-sm);font-size:11px;font-weight:500;color:var(--muted);line-height:24px}
.segmented button:hover{color:var(--text)}
.segmented button.on{background:var(--surface2);color:var(--text)}
.select-wrap{position:relative;height:32px}
select{height:32px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-md);padding:0 28px 0 10px;font-size:11px;font-weight:500;appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5l3 3 3-3' stroke='%239aa3b2' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;outline:none}
select:hover{border-color:var(--hover-border)}
.cmdk{display:flex;align-items:center;gap:7px;height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--muted);font-size:12px}
.cmdk:hover{color:var(--text);border-color:var(--hover-border)}
.cmdk kbd{font:500 10px/1 Inter;color:var(--muted2);border:1px solid var(--border);border-radius:4px;padding:3px 4px}
.btn-primary{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:var(--r-md);background:var(--primary);color:#fff;font-size:12px;font-weight:600}
.btn-primary:hover{background:var(--primary2);text-decoration:none;color:#0f1117}
.btn-ghost{display:inline-flex;align-items:center;height:32px;padding:0 12px;border-radius:var(--r-md);background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:500}
.btn-ghost:hover{color:var(--text);border-color:var(--hover-border);text-decoration:none}
.btn-sm{height:28px;font-size:11px;padding:0 10px}

.main{grid-column:2;grid-row:2;min-width:0;max-width:100%;padding:0 24px 64px;display:flex;flex-direction:column}
.page{max-width:1600px;width:100%;min-width:0;margin:0 auto;padding-top:20px;flex:1}
.page-foot{max-width:1600px;width:100%;margin:32px auto 0;padding-top:14px;border-top:1px solid var(--border);color:var(--muted2);font-size:11px;display:flex;justify-content:space-between;gap:12px}
.print-only{display:none}

/* ---------------------------------------------------------------- grid */
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;min-width:0}
.sp3{grid-column:span 3}.sp4{grid-column:span 4}.sp5{grid-column:span 5}.sp6{grid-column:span 6}
.sp7{grid-column:span 7}.sp8{grid-column:span 8}.sp12{grid-column:span 12}
.section{margin-bottom:24px}
.section-head{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.section-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.section-meta{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--muted2)}

/* ---------------------------------------------------------------- cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;position:relative;min-width:0}
.card.pad0{padding:0;overflow:hidden}
.grid>div:not(.stack)>.card{height:100%}
a.card{color:inherit;display:flex;flex-direction:column}
a.card:hover{background:var(--hover-surface);border-color:var(--hover-border);text-decoration:none}
a.card::after{content:"→";position:absolute;top:12px;right:14px;color:var(--muted2);opacity:0;transition:opacity .12s ease-out;font-size:12px}
a.card:hover::after{opacity:1}
.card-head{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;min-height:16px}
.card-title{font-size:11px;font-weight:500;color:var(--muted);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tile .card-title{min-height:30px}
.card-id{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--muted2);flex:none}
.card-h2{font-size:13px;font-weight:600;color:var(--text)}
.tile{min-height:112px;display:flex;flex-direction:column}
.tile-m{min-height:180px}
.tile-val{font-size:22px;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.tile-val.hero{font-size:28px}
.tile-val.nodata{color:#4b5365}
.tile-cap{font-size:10px;color:var(--muted);margin-top:4px;line-height:1.5}
.tile-foot{margin-top:auto;padding-top:10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:16px}
.stack>.card{flex:0 0 auto;height:auto}
.spark{height:28px;margin-top:10px}
.spark-empty{height:100%;display:flex;align-items:flex-end;border-bottom:1px dashed var(--border);font-size:10px;color:var(--muted2);padding-bottom:3px}
.spark.tall{height:44px}
.spark.grow{flex:1 1 auto;min-height:44px}

.chip{display:inline-flex;align-items:center;gap:5px;height:18px;padding:0 6px;border-radius:var(--r-full);background:var(--surface2);color:var(--muted);font-size:10px;font-weight:500;white-space:nowrap}
.chip.formula{color:var(--accent)}
.chip.manual{color:var(--primary2);border:1px solid rgba(167,139,250,.35)}
.chip.lag{color:var(--accent)}
.chip.partial{background:var(--hatch);border:1px solid var(--border);color:var(--muted)}
.chip.mirror{color:var(--muted)}
.delta{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 6px;border-radius:var(--r-full);font-size:11px;font-weight:500;background:var(--surface2);color:var(--muted);font-variant-numeric:tabular-nums}
.delta.positive{background:var(--pos-bg);color:var(--green)}
.delta.negative{background:var(--neg-bg);color:var(--error)}
.delta.flat,.delta.unknown{background:var(--surface2);color:var(--muted)}
.dot{width:6px;height:6px;border-radius:50%;flex:none;display:inline-block}
.dot.on_track{background:var(--green)}
.dot.off_track{background:var(--error)}
.dot.no_target{background:#4b5365;box-shadow:0 0 0 1px var(--border)}
.dot.no_data{background:transparent;box-shadow:inset 0 0 0 1px var(--border)}
.dot.partial{background:var(--hatch);box-shadow:0 0 0 1px var(--border)}

.progress{margin-top:10px}
.track{height:4px;border-radius:var(--r-full);background:var(--surface2);overflow:hidden}
.track>i{display:block;height:100%;border-radius:var(--r-full);background:var(--green)}
.track>i.off{background:var(--error)}
.track>i.neutral{background:var(--primary)}
.progress-cap{font-size:11px;color:var(--muted);margin-top:6px;display:flex;gap:8px;flex-wrap:wrap}
.progress-cap .gap{color:var(--error);font-variant-numeric:tabular-nums}
.progress-cap .gap.pos{color:var(--green)}

/* ---------------------------------------------------------------- empty / loading */
.empty-box{border:1px dashed var(--border);border-radius:var(--r-md);padding:20px 24px;text-align:center}
.empty-l1{font-size:13px;color:var(--muted)}
.empty-l2{font-size:12px;color:var(--muted2);margin-top:4px}
.empty-page{padding:48px 0;max-width:640px;margin:0 auto}
.skeleton{background:var(--surface2);border-radius:var(--r-sm);position:relative;overflow:hidden}
.skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#242a35,transparent);animation:sh 1.4s infinite}
@keyframes sh{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){.skeleton::after{animation:none}*{transition:none!important}}

/* ---------------------------------------------------------------- funnel */
.funnel-row{display:grid;grid-template-columns:200px 1fr 96px;align-items:center;gap:12px;height:44px}
.funnel-lab{min-width:0}
.funnel-lab .n{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.funnel-lab .i{font-family:var(--mono);font-size:10px;color:var(--muted2)}
.funnel-track{height:12px;border-radius:6px;background:var(--surface2);position:relative;overflow:visible}
.funnel-bar{height:12px;border-radius:6px;background:var(--primary);min-width:2px}
.funnel-bar.empty{background:var(--hatch);border:1px dashed var(--border);width:100%!important;box-sizing:border-box}
.funnel-tick{position:absolute;top:-3px;width:2px;height:18px;background:var(--primary2);border-radius:1px}
.funnel-val{font-family:var(--mono);font-size:12px;text-align:right;font-variant-numeric:tabular-nums}
.funnel-val.na{color:var(--muted2)}
.funnel-conv{display:grid;grid-template-columns:200px 1fr;gap:12px;height:20px;align-items:center}
.funnel-conv .c{font-size:13px;color:var(--text);display:flex;align-items:baseline;gap:8px}
.funnel-conv .c small{font-size:11px;color:var(--muted)}
.funnel-conv .c .na{color:var(--muted2);font-size:12px}
.funnel-foot{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-size:11px;color:var(--muted)}

/* ---------------------------------------------------------------- charts */
.chart{width:100%;height:320px}
.chart.sm{height:240px}
.chart.waterfall{height:380px}
.chart-note{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.5}

/* ---------------------------------------------------------------- tables */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;font-size:12px}
table.tbl th{position:sticky;top:0;z-index:2;background:var(--bg);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}
table.tbl th.r,table.tbl td.r{text-align:right}
table.tbl th.sortable{cursor:pointer;user-select:none}
table.tbl th.sortable:hover{color:var(--text)}
table.tbl th.sorted{color:var(--text)}
table.tbl td{padding:0 10px;height:36px;border-bottom:1px solid #1f242d;vertical-align:middle;white-space:nowrap}
table.tbl tbody tr:hover td{background:var(--surface2)}
table.tbl tbody tr.null td{color:var(--muted2)}
table.tbl td.id a{font-family:var(--mono);font-size:11px;color:var(--primary2)}
table.tbl td.name{white-space:normal;max-width:360px}
table.tbl td.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
table.tbl td.muted{color:var(--muted)}
.cell-spark{width:96px;height:20px;display:flex;align-items:center}
.spark-dash{color:var(--muted2);font-family:var(--mono);font-size:11px}

/* ---------------------------------------------------------------- completeness heatmap */
.hm-scroll{overflow-x:auto;overflow-y:visible;padding-bottom:4px}
.hm-scroll>.hm,.hm-scroll>.hm-head{min-width:max-content}
.hm{display:flex;flex-direction:column;gap:2px}
.hm-row{display:grid;grid-template-columns:200px 88px 1fr;gap:10px;align-items:center;height:18px}
.hm-name{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-name a{color:var(--muted)}
.hm-owner{font-size:10px;color:var(--muted2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-cells{display:flex;gap:2px}
.hm-c{width:22px;height:14px;border-radius:2px;background:var(--surface2);flex:none}
.hm-c.filled{background:var(--primary)}
.hm-c.formula{background:rgba(67,182,255,.55)}
.hm-c.partial{background:var(--hatch);box-shadow:inset 0 0 0 1px var(--border)}
.hm-c.empty{background:#1f242d}
.hm-group{display:grid;grid-template-columns:200px 88px 1fr;gap:10px;align-items:center;height:28px;margin-top:10px;border-bottom:1px solid var(--border)}
.hm-group .g{font-size:11px;font-weight:600;color:var(--text)}
.hm-group .c{font-family:var(--mono);font-size:10px;color:var(--muted2)}
.hm-head{display:grid;grid-template-columns:200px 88px 1fr;gap:10px;position:sticky;top:0;background:var(--bg);z-index:3;padding-bottom:6px}
.hm-weeks{display:flex;gap:2px}
.hm-wk{width:22px;font-family:var(--mono);font-size:9px;color:var(--muted2);flex:none;text-align:left;white-space:nowrap;overflow:visible}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted);align-items:center}
.legend i{width:14px;height:10px;border-radius:2px;display:inline-block;margin-right:6px;vertical-align:-1px}

/* ---------------------------------------------------------------- key/value */
.kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 24px}
.kv{padding:9px 0;border-bottom:1px solid var(--border);min-width:0}
.kv .k{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
.kv .v{font-size:12px;line-height:1.5;word-break:break-word;color:var(--text)}
.kv .v.dim{color:var(--muted)}
.tag{display:inline-block;background:var(--surface2);border-radius:4px;padding:1px 6px;font-family:var(--mono);font-size:10.5px;margin:2px 4px 2px 0;color:var(--muted)}

/* ---------------------------------------------------------------- palette */
.palette[hidden]{display:none}
.palette{position:fixed;inset:0;z-index:100;background:rgba(9,11,15,.62);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;backdrop-filter:blur(2px)}
.palette-box{width:560px;max-width:92vw;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow);overflow:hidden}
.palette-box input{width:100%;height:46px;background:transparent;border:0;border-bottom:1px solid var(--border);padding:0 16px;font-size:14px;outline:none}
.palette-list{max-height:420px;overflow:auto;padding:6px}
.pl-h{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:10px 10px 4px}
.pl-i{display:flex;align-items:center;gap:10px;height:32px;padding:0 10px;border-radius:var(--r-sm);color:var(--muted);cursor:pointer;font-size:12px}
.pl-i .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.pl-i .id{font-family:var(--mono);font-size:11px;color:var(--muted2)}
.pl-i.on,.pl-i:hover{background:var(--surface2)}
.palette-foot{border-top:1px solid var(--border);padding:8px 14px;font-size:10px;color:var(--muted2)}
.palette-foot kbd{border:1px solid var(--border);border-radius:3px;padding:2px 4px;margin-right:3px}

.toast[hidden]{display:none}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:120;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-md);padding:10px 16px;font-size:12px;box-shadow:var(--shadow);max-width:80vw}
.toast.err{border-color:var(--error);color:var(--error)}

/* ---------------------------------------------------------------- admin */
.admin-tabs{display:flex;gap:4px;flex-wrap:wrap;max-width:1600px;margin:16px auto 0;width:100%}
.admin-tab{height:28px;padding:0 10px;border-radius:var(--r-full);background:var(--surface2);color:var(--muted);font-size:11px;font-weight:500;display:inline-flex;align-items:center}
.admin-tab:hover{color:var(--text);text-decoration:none}
.admin-tab.on{background:rgba(123,92,255,.16);color:var(--text);box-shadow:inset 0 0 0 1px var(--primary)}
.gridwrap{overflow:auto;max-height:calc(100vh - 260px);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface)}
table.gridtbl{border-collapse:separate;border-spacing:0;font-size:12px}
table.gridtbl th{position:sticky;top:0;z-index:3;background:var(--surface2);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap;text-align:center}
table.gridtbl th.mh{left:0;z-index:4;text-align:left;min-width:260px}
table.gridtbl td{border-bottom:1px solid #1f242d;border-right:1px solid #1f242d;padding:0;height:32px}
table.gridtbl td.mcell{position:sticky;left:0;z-index:2;background:var(--surface);padding:0 10px;min-width:260px;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.gridtbl td.mcell .mid{font-family:var(--mono);font-size:10px;color:var(--muted2);margin-right:6px}
table.gridtbl tr.secrow td{background:var(--surface2);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 10px;height:26px}
.gcell{width:84px;height:32px;display:flex;align-items:center;justify-content:flex-end;padding:0 8px;font-family:var(--mono);font-size:11px;font-variant-numeric:tabular-nums;position:relative;cursor:text}
.gcell.ro{background:rgba(67,182,255,.06);color:var(--accent);cursor:not-allowed}
.gcell.dirty{box-shadow:inset 0 0 0 1px var(--primary)}
.gcell.cur{background:var(--hatch)}
.gcell input{width:100%;height:30px;background:var(--surface2);border:1px solid var(--primary);border-radius:3px;padding:0 6px;text-align:right;font-family:var(--mono);font-size:11px;outline:none}
.gcell .src{position:absolute;left:5px;top:12px;width:5px;height:5px;border-radius:50%;background:var(--muted2)}
.gcell .src.manual{background:var(--primary2)}
.gcell .src.sheet_import,.gcell .src.csv_import{background:var(--primary)}
.gcell .src.formula{background:var(--accent)}
.savebar[hidden]{display:none}
.savebar{position:fixed;bottom:0;left:var(--rail);right:0;height:52px;background:var(--surface2);border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;padding:0 24px;z-index:40;box-shadow:var(--shadow)}
.savebar span{font-size:12px;color:var(--text);margin-right:auto}
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.field label{display:block;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.field input,.field textarea,.field select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;outline:none}
.field input:focus,.field textarea:focus{border-color:var(--primary)}
.field textarea{min-height:64px;resize:vertical;line-height:1.5}
.dropzone{border:1px dashed var(--border);border-radius:var(--r-lg);padding:28px;text-align:center;color:var(--muted);font-size:12px}
.dropzone.hot{border-color:var(--primary);background:rgba(123,92,255,.06)}
.diff-add{color:var(--green)}.diff-del{color:var(--error)}
pre.log{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:10px;font-family:var(--mono);font-size:11px;overflow:auto;max-height:280px;margin:0;color:var(--muted)}

/* ---------------------------------------------------------------- responsive */
@media (max-width:1279px){
  .app{--rail:56px}
  .app .nav-name,.app .nav-ow,.app .nav-label,.app .brand-txt{display:none}
  .app .nav-item{justify-content:center;padding:0}
  .sp3{grid-column:span 4}.sp4{grid-column:span 4}.sp6{grid-column:span 6}.sp5,.sp7{grid-column:span 6}
}
@media (max-width:1023px){
  .main{padding:0 20px 64px}
  .topbar{padding:0 20px}
  .crumbs{flex:1 1 auto;min-width:0}
  .controls{flex:0 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
  .controls::-webkit-scrollbar{display:none}
  .cmdk span,.cmdk kbd{display:none}
  .cmdk{padding:0 9px}
  .grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
  .sp3,.sp4{grid-column:span 3}.sp5,.sp6,.sp7,.sp8{grid-column:span 6}
  .chart{height:300px}
  .funnel-row,.funnel-conv{grid-template-columns:150px 1fr 80px}
  .funnel-conv{grid-template-columns:150px 1fr}
}
@media (max-width:767px){
  .app{grid-template-columns:minmax(0,1fr);--rail:0px}
  .rail{position:fixed;left:0;top:0;bottom:0;width:240px;z-index:60;transform:translateX(-100%);transition:transform .18s ease;height:100vh}
  .rail.open{transform:none;box-shadow:var(--shadow)}
  .rail .nav-name,.rail .nav-ow,.rail .nav-label,.rail .brand-txt{display:block}
  .rail .nav-item{justify-content:flex-start;padding:0 8px}
  .topbar,.main{grid-column:1}
  .only-mobile{display:grid}
  .controls{gap:6px}
  .cmdk span{display:none}
  .segmented button{padding:0 7px}
  .crumbs{display:none}
  .controls{flex:1 1 auto;min-width:0;justify-content:flex-end;overflow-x:auto;scrollbar-width:none}
  .controls::-webkit-scrollbar{display:none}
  .select-wrap{display:none}
  .cmdk kbd{display:none}
  .cmdk{padding:0 8px}
  .segmented button{font-size:10px;padding:0 6px}
  .btn-primary{padding:0 10px;font-size:11px}
  .grid{grid-template-columns:minmax(0,1fr);gap:12px}
  .sp3,.sp4,.sp5,.sp6,.sp7,.sp8,.sp12{grid-column:span 1}
  .main{padding:0 16px 80px}
  .topbar{padding:0 16px}
  .funnel-row{grid-template-columns:1fr 84px;height:auto;padding:8px 0;grid-template-areas:"lab val" "trk trk"}
  .funnel-lab{grid-area:lab}.funnel-val{grid-area:val}.funnel-track{grid-area:trk;margin-top:6px}
  .funnel-conv{grid-template-columns:1fr}
  .hm-row,.hm-group,.hm-head{grid-template-columns:120px 1fr}
  .hm-owner{display:none}
  .savebar{left:0}
  .kv-grid{grid-template-columns:1fr}
}

@media print{
  .rail,.topbar,.savebar,.palette,.toast,.admin-tabs{display:none!important}
  .app{grid-template-columns:1fr}
  .main{grid-column:1;padding:0}
  .grid{grid-template-columns:1fr}
  .sp3,.sp4,.sp5,.sp6,.sp7,.sp8,.sp12{grid-column:span 1}
  body{print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .print-only{display:inline}
  a.card::after{display:none}
}

/* ================================================================ v2 additions */
/* --- layout helpers */
.tiles-12{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.tiles-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.hero-line{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin:4px 0 18px}
.hero-week{font-size:22px;font-weight:600;letter-spacing:-.01em}
.hero-sub{font-size:12px;color:var(--muted);margin-left:8px}
.hero-plan{margin-left:auto;font-size:12px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-full);padding:5px 12px}
.row-sub{font-size:10.5px;color:var(--muted2);line-height:1.45;margin-top:2px;white-space:normal;max-width:420px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.small{font-size:10.5px}
.empty-card{border-style:dashed;text-align:center;padding:26px 20px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}

/* --- chips & people */
.chip.ok{color:var(--green);border:1px solid rgba(74,222,128,.32)}
.chip.warn{color:#f5c26b;border:1px solid rgba(245,194,107,.32)}
.chip.src.conn{color:var(--accent)}
.chip.src.formula{color:var(--accent)}
.chip.src.manual{color:var(--muted)}
.who{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);white-space:nowrap}
.who i{width:18px;height:18px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);display:grid;place-items:center;font-style:normal;font-size:9px;font-weight:600;color:var(--primary2)}
.tile-cap.plain{color:var(--muted);min-height:15px}

/* --- completeness strip */
.comp-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.comp-cell{display:block;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-md);padding:8px 10px;color:var(--muted)}
.comp-cell:hover{border-color:var(--hover-border);text-decoration:none}
.comp-cell .c-name{display:block;font-size:11px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp-cell .c-val{display:block;font-family:var(--mono);font-size:12px;margin:3px 0 5px}
.comp-cell .c-bar{display:block;height:3px;border-radius:2px;background:#1f242d;overflow:hidden}
.comp-cell .c-bar i{display:block;height:100%;background:var(--primary)}
.comp-cell.ok{border-color:rgba(74,222,128,.35)}
.comp-cell.ok .c-val{color:var(--green)}
.comp-cell.ok .c-bar i{background:var(--green)}
.comp-cell.none .c-val{color:var(--muted2)}
.hm-c.connector{background:rgba(67,182,255,.62)}

/* --- department page */
.dept-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.dept-purpose{font-size:15px;line-height:1.5;color:var(--text);max-width:720px}
.dept-meta{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* --- metric page */
.metric-plain{font-size:14px;line-height:1.55;color:var(--text);margin-bottom:14px}
.formula-human{font-size:14px;line-height:1.5;color:var(--text)}
.formula-raw{margin-top:8px;color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:8px 10px;font-size:11.5px;overflow-x:auto}
.vlist{list-style:none;margin:0;padding:0}
.vlist li{padding:9px 0;border-bottom:1px solid var(--border)}
.vlist li:last-child{border-bottom:0}
.v-head{font-size:12px}
.v-expr{font-size:11px;color:var(--muted);margin:3px 0;word-break:break-word}
.v-meta{font-size:10px}
table.tbl td.chg{color:var(--primary2)}

/* --- formula editor */
.editor{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.editor summary{font-size:11px;color:var(--muted);cursor:pointer;list-style:none}
.editor summary::-webkit-details-marker{display:none}
.editor summary::before{content:"✎ ";color:var(--primary2)}
.editor[open] summary{color:var(--text)}
.ed-body{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.ed-lab{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ed-wrap{position:relative}
.ed-wrap textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:9px 10px;font-family:var(--mono);font-size:12px;line-height:1.5;resize:vertical;outline:none;box-sizing:border-box}
.ed-wrap textarea:focus{border-color:var(--primary)}
.ed-ac[hidden]{display:none}
.ed-ac{position:absolute;left:0;right:0;top:100%;z-index:20;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow);max-height:210px;overflow:auto;padding:4px}
.ac-i{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--r-sm);font-size:11px;cursor:pointer}
.ac-i .nm{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-i .u{color:var(--muted2);font-family:var(--mono)}
.ac-i.on,.ac-i:hover{background:var(--surface)}
.ed-hint{font-size:10.5px;color:var(--muted2)}
.ed-msg{font-size:11.5px;display:flex;flex-direction:column;gap:3px}
.ed-msg .err{color:var(--error)}
.ed-msg .warn{color:#f5c26b}
.ed-msg .ok{color:var(--green)}
.ed-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ed-row input[type=text],.ed-row select{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;outline:none;min-width:180px}

/* --- fill flow */
.page-fill{max-width:900px}
.fill-head{position:sticky;top:calc(var(--top) + 0px);z-index:20;display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.fill-pickers{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fill-pickers select{min-width:160px}
.fill-progress{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:220px}
.fill-progress .track{flex:1;min-width:90px}
.fill-progress .track i{display:block;height:100%;background:var(--primary);border-radius:var(--r-full)}
.fp-num{font-size:12px;color:var(--muted);white-space:nowrap}
.fp-num b{color:var(--text);font-size:15px}
.fp-done{font-size:11px;color:var(--green);white-space:nowrap}
.fill-list{display:flex;flex-direction:column;gap:10px}
.fill-row{display:flex;gap:16px;align-items:flex-start;padding:12px 16px}
.fill-row.saved{border-color:rgba(74,222,128,.28)}
.fill-row.failed{border-color:var(--error)}
.fr-main{flex:1;min-width:0}
.fr-name{display:flex;align-items:center;gap:8px;font-size:14px;flex-wrap:wrap}
.fr-name a{color:var(--text)}
.fr-plain{font-size:12px;color:var(--muted);line-height:1.5;margin-top:3px}
.fr-meta{display:flex;align-items:center;gap:10px;margin-top:7px;flex-wrap:wrap}
.fr-prev{font-size:11px;color:var(--muted2);font-variant-numeric:tabular-nums}
.fr-input{width:270px;flex:none;display:flex;flex-direction:column;gap:6px}
.fr-box{display:flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:0 10px;height:38px}
.fr-box:focus-within{border-color:var(--primary)}
.fr-box.locked{background:var(--surface2);border-style:dashed}
.fr-unit{font-family:var(--mono);font-size:12px;color:var(--muted2);flex:none}
.fr-val{flex:1;min-width:0;background:transparent;border:0;outline:none;font-family:var(--mono);font-size:15px;font-variant-numeric:tabular-nums;color:var(--text)}
.fr-val:disabled{color:var(--muted)}
.fr-tick[hidden]{display:none}
.fr-tick{color:var(--green);font-size:12px}
.fr-nm{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.fr-note{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:6px 9px;font-size:11.5px;outline:none}
.fr-note:focus{border-color:var(--primary)}
.fill-calc{margin-top:16px}
.calc-row{display:flex;align-items:center;gap:14px;padding:9px 0;border-bottom:1px solid var(--border)}
.calc-row:last-child{border-bottom:0}
.calc-name{flex:1;min-width:0;font-size:13px}
.calc-expr{font-size:10.5px;color:var(--muted2);margin-top:2px}
.calc-val{font-family:var(--mono);font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}
.calc-val.flash{color:var(--primary2);transition:color .1s}

/* --- admin v2 */
.adm-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.adm-bar input[type=search],.adm-bar select{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;outline:none;min-width:180px}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px 14px;margin-top:10px}
.ff{display:flex;flex-direction:column;gap:4px;min-width:0}
.ff.wide{grid-column:1/-1;flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap}
.ff>span{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ff input,.ff select,.ff textarea{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;outline:none;width:100%;box-sizing:border-box}
.ff input:focus,.ff select:focus{border-color:var(--primary)}
.owner-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}
.owner-row .o-email{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;min-width:220px;outline:none}
.o-depts{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.o-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface2);border-radius:var(--r-full);padding:4px 9px;font-size:10.5px;color:var(--muted)}
.sec-block{margin-top:14px;border-top:1px solid var(--border);padding-top:10px}
.sec-head{display:flex;align-items:center;gap:8px}
.sec-name{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:6px 9px;font-size:12px;outline:none;min-width:220px}
.ord-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}
.ord-list li{display:flex;align-items:center;gap:8px;font-size:12px;background:var(--surface2);border-radius:var(--r-sm);padding:5px 9px}
.ord-btns{margin-left:auto;display:flex;gap:4px}
.grid-tbl input.gc{width:84px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:4px 6px;text-align:right;font-family:var(--mono);font-size:11px;outline:none}
.grid-tbl input.gc:focus{border-color:var(--primary)}
.err-txt{color:var(--error)}
table.tbl td textarea.params{width:220px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:4px 6px;font-size:10.5px;outline:none;resize:vertical}

@media (max-width:1279px){
  .tiles-12,.tiles-4{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1023px){
  .tiles-12,.tiles-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:767px){
  .tiles-12,.tiles-4{grid-template-columns:minmax(0,1fr)}
  .hide-sm{display:none!important}
  .fill-row{flex-direction:column;gap:10px}
  .fr-input{width:100%}
  .fill-head{position:static;flex-direction:column;align-items:stretch}
  .fill-pickers{width:100%}
  .fill-pickers select{min-width:0;flex:1 1 140px;max-width:100%}
  .fill-progress{margin-left:0;min-width:0;width:100%;flex-wrap:wrap;row-gap:8px}
  .fill-progress .track{flex:1 1 100%;order:3}
  .fp-done{white-space:normal;overflow-wrap:anywhere;min-width:0;flex:1 1 auto}
  .dept-meta{margin-left:0}
  .comp-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
}

table.tbl td.wrap{white-space:normal;max-width:420px;line-height:1.45;padding-top:6px;padding-bottom:6px}

/* a rolling window that cannot be computed yet explains itself instead of showing nothing */
.window-note{margin-top:10px;padding:8px 10px;border-left:2px solid var(--accent);background:var(--surface2);
  border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:11.5px;line-height:1.5;color:var(--muted)}

/* ============================================================ part B: organism, games, actions */
.card,.tbl-wrap,.main{min-width:0}
table.otbl td.name,table.atbl td.name:first-child,table.gheat th.wk{white-space:nowrap}
.org-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 24px;margin:0 0 18px}
.org-lede{flex:1 1 380px;min-width:0;font-size:12.5px;line-height:1.55;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.org-kpis{display:flex;flex-wrap:wrap;gap:8px}
.org-kpi{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 11px;min-width:92px}
.org-kpi .k{font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.org-kpi b{font-family:var(--mono);font-size:15px;color:var(--text);font-weight:400;line-height:1.2}
.gstat{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:var(--r-full);background:var(--surface2);color:var(--primary2);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}

.ochip{display:inline-flex;align-items:center;gap:4px;height:19px;padding:0 7px;margin:1px 3px 1px 0;border-radius:var(--r-full);background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:10px;white-space:nowrap}
.ochip i{font-style:normal;opacity:.85}
.ochip b{font-family:var(--mono);font-weight:400;color:var(--text)}
td.ochips{white-space:normal;line-height:1.9;max-width:260px}

.opill{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:var(--r-full);font-size:10px;font-weight:600;background:var(--surface2);color:var(--muted)}
.opill.measured{color:var(--green);border:1px solid rgba(74,222,128,.3)}
.opill.maturing{color:var(--accent);border:1px solid rgba(67,182,255,.3)}
.opill.pending{color:var(--muted);border:1px solid var(--border)}
.opill.unmeasurable{color:#f5c26b;border:1px solid rgba(245,194,107,.3)}

.oroi{font-family:var(--mono);color:var(--muted)}
.oroi.pos{color:var(--green)}
.oroi.neg{color:var(--error)}
.oup{font-family:var(--mono)}
.oup.pos{color:var(--green)}
.oup.neg{color:var(--error)}

.ostatus{display:flex;flex-direction:column;gap:3px;min-width:104px}
.obar{display:flex;height:5px;border-radius:3px;overflow:hidden;background:var(--surface2)}
.obar i{display:block;height:100%}
.obar i.measured{background:var(--green)}
.obar i.maturing{background:var(--accent)}
.obar i.pending{background:var(--muted2,#6b7488)}
.obar i.unmeasurable{background:#f5c26b}
.omini{font-size:9.5px;color:var(--muted)}

table.otbl tbody tr{cursor:pointer}
table.otbl tbody tr:hover{background:var(--surface2)}
table.gheat th.wk{font-family:var(--mono);font-size:10px;font-weight:400}
table.gheat td.gcell{font-family:var(--mono);font-size:11px;position:relative;white-space:nowrap}
table.gheat td.gcell.good{color:var(--green)}
table.gheat td.gcell.bad{color:var(--error)}
table.gheat td.gcell .mk{font-style:normal;color:var(--accent);margin-left:3px;font-size:9px}

.tabs{display:flex;gap:4px;margin:0 0 12px;flex-wrap:wrap}
.tab{height:28px;padding:0 12px;border-radius:var(--r-full);background:var(--surface2);border:1px solid transparent;color:var(--muted);font-size:11.5px;font-weight:500;cursor:pointer}
.tab.on{background:rgba(123,92,255,.14);border-color:rgba(123,92,255,.4);color:var(--text)}
.tab:hover{color:var(--text)}

.gfilters,.afilters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px}
.grow{flex:1}
.inp{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:7px 10px;font-size:12px;color:var(--text);outline:none;min-width:150px;box-sizing:border-box}
.inp:focus{border-color:var(--primary)}
.inp.mono{font-family:var(--mono);font-size:11px;width:100%;resize:vertical}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);cursor:pointer}
.btn{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:var(--r-md);background:var(--primary);color:#fff;border:none;font-size:12px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--primary2);color:#0f1117}
.btn.ghost{background:var(--surface2);border:1px solid var(--border);color:var(--muted)}
.btn.ghost:hover{color:var(--text);border-color:var(--hover-border);background:var(--surface2)}
.btn.tiny{height:22px;padding:0 8px;font-size:11px}
.btn:disabled{opacity:.5;cursor:default}
.btns-row{display:flex;gap:8px;margin:10px 0}
table.gtbl tr.uw td.name a{color:#f5c26b}

.addact .addgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px 14px;margin-top:12px;align-items:end}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0;position:relative}
.fld>span{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.fld.wide{grid-column:span 2}
.fld.btns{justify-content:flex-end}
.fld-hint{font-size:10px;color:var(--muted2,#6b7488);font-family:var(--mono);min-height:12px}
.gsearch{position:relative}
.gsug{position:absolute;top:100%;left:0;right:0;z-index:40;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:0 12px 32px rgba(0,0,0,.42);max-height:260px;overflow:auto;margin-top:2px}
.gsug-i{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:7px 10px;background:none;border:none;color:var(--text);font-size:12px;text-align:left;cursor:pointer}
.gsug-i.on,.gsug-i:hover{background:rgba(123,92,255,.16)}
.gsug-i .id{font-family:var(--mono);font-size:10px;color:var(--muted)}
.gsug-i.muted{color:var(--muted);cursor:default}

.act-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:9px 12px;margin:0 0 16px;font-size:12px}
.act-strip .k{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.act-strip b{font-family:var(--mono);font-weight:400;color:var(--text)}
.act-strip .sep{color:var(--border)}
.chip.act{border:1px solid rgba(67,182,255,.34);color:var(--accent);cursor:pointer;background:var(--surface2);height:19px}
.chip.act:hover{background:rgba(67,182,255,.14)}
.comp-cell .c-acts{margin-left:6px;font-size:9.5px;color:var(--accent)}
table.tbl tr.good td:first-child{box-shadow:inset 2px 0 0 var(--green)}
table.tbl tr.bad td:first-child{box-shadow:inset 2px 0 0 var(--error)}

@media (max-width:767px){
  .org-kpis{gap:6px}
  .org-kpi{min-width:78px;padding:6px 9px}
  .org-kpi b{font-size:13px}
  .addact .addgrid{grid-template-columns:minmax(0,1fr)}
  .fld.wide{grid-column:auto}
  .gfilters,.afilters{padding:10px}
  .gfilters .inp,.afilters .inp{min-width:0;flex:1 1 130px}
}

/* ===================================================================== v3: inline editing
 * The affordance rule: nothing is visible until you hover or focus the thing itself.
 * A reader sees a dashboard; an owner sees the same dashboard that happens to give way
 * under the cursor. Anonymous pages never get these attributes at all, so none of the
 * selectors below can match for a stranger.
 */
[data-edit] { cursor: text; border-radius: 4px; position: relative; }
[data-edit]:hover { background: rgba(123, 92, 255, .10); box-shadow: 0 0 0 2px rgba(123, 92, 255, .10); }
[data-edit]:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
[data-edit="menu"], [data-edit^="pick"], [data-edit="target"], [data-edit="plan"],
[data-edit="addmetric"], [data-edit="addsection"], [data-edit="formula"] { cursor: pointer; }
[data-edit].is-editing { background: rgba(123, 92, 255, .14); box-shadow: 0 0 0 2px var(--primary); outline: none; }
.ghost { color: var(--muted); opacity: .6; font-style: italic; }

/* the pencil only appears on hover, and never on touch (no hover there) */
@media (hover: hover) {
  [data-edit^="text"]:hover::after, [data-edit="section"]:hover::after,
  [data-edit^="dept"]:hover::after {
    content: '✎'; font-size: 10px; opacity: .5; margin-left: 5px; vertical-align: super;
  }
}

.tile.editable { cursor: default; }
.tile.editable .card-title { flex: 1 1 auto; min-width: 0; }
.tile-menu, .row-menu {
  background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 14px;
  line-height: 1; padding: 2px 4px; border-radius: 4px; opacity: 0;
}
.tile:hover .tile-menu, .tbl tr:hover .row-menu, .tile-menu:focus-visible, .row-menu:focus-visible { opacity: 1; }
.tile-menu:hover, .row-menu:hover { background: var(--panel2); color: var(--text); }
.rn-go { color: var(--muted); text-decoration: none; opacity: 0; font-size: 11px; }
.tbl tr:hover .rn-go { opacity: 1; }

/* inline number editor */
.vedit { display: inline-flex; align-items: center; gap: 6px; }
.vedit-in {
  width: 7.5ch; min-width: 60px; font: inherit; font-variant-numeric: tabular-nums;
  background: var(--bg); color: var(--text); border: 1px solid var(--primary);
  border-radius: 5px; padding: 1px 6px;
}
.vedit-nm {
  font-size: 10px; color: var(--muted); background: var(--panel2); border: 1px solid var(--line);
  border-radius: 4px; padding: 2px 6px; cursor: pointer; white-space: nowrap;
}
.vedit-nm:hover { color: var(--text); border-color: var(--primary); }

/* popovers */
.pop {
  position: fixed; z-index: 90; min-width: 210px; max-width: 300px; padding: 10px;
  background: var(--panel); border: 1px solid var(--line); border-radius: 10px;
  box-shadow: 0 12px 34px rgba(0, 0, 0, .45); display: flex; flex-direction: column; gap: 7px;
}
.pop-t { font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.pop-row { display: flex; gap: 6px; }
.pop-row select, .pop-num, .pop-txt, .pop select, .pop input {
  font: inherit; font-size: 12px; background: var(--bg); color: var(--text);
  border: 1px solid var(--line); border-radius: 6px; padding: 5px 7px; min-width: 0; flex: 1 1 auto;
}
.pop-num { max-width: 110px; }
.pop-list { display: flex; flex-direction: column; gap: 1px; max-height: 240px; overflow: auto; }
.pop-i {
  text-align: left; font: inherit; font-size: 12px; background: none; color: var(--text);
  border: 0; border-radius: 5px; padding: 6px 8px; cursor: pointer;
}
.pop-i:hover { background: var(--panel2); }
.pop-i.on { color: var(--primary2); }
.pop-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pop-hint { font-size: 10px; color: var(--muted); }

/* toast with undo */
.toast-undo {
  margin-left: 10px; font: inherit; font-size: 11px; font-weight: 600; color: var(--primary2);
  background: none; border: 1px solid var(--primary); border-radius: 5px; padding: 2px 8px; cursor: pointer;
}
.toast-undo:hover { background: var(--primary); color: #fff; }

/* add buttons */
.sec-head { display: flex; align-items: baseline; gap: 10px; margin: 0 0 8px; }
.sec-name { font-size: 13px; font-weight: 600; margin: 0; }
.sec-meta { font-size: 11px; color: var(--muted); }
.sec-add {
  font: inherit; font-size: 11px; color: var(--muted); background: none;
  border: 1px dashed var(--line); border-radius: 6px; padding: 2px 9px; cursor: pointer; opacity: 0;
}
.section:hover .sec-add, .sec-add:focus-visible { opacity: 1; }
.sec-add:hover { color: var(--primary2); border-color: var(--primary); }
.sec-add.big { opacity: .7; padding: 8px 16px; font-size: 12px; width: 100%; }
.add-sec { margin-top: 4px; }

/* drag to reorder */
[data-drag] { cursor: grab; }
[data-drag].dragging { opacity: .4; cursor: grabbing; }
.drop-before { box-shadow: inset 0 2px 0 var(--primary); }
.drop-after { box-shadow: inset 0 -2px 0 var(--primary); }

/* the week grid that replaced /fill */
.wg-wrap { overflow-x: auto; }
.wg { width: 100%; border-collapse: collapse; font-size: 12px; }
.wg th, .wg td { padding: 6px 10px; border-bottom: 1px solid var(--line); text-align: right; }
.wg .wg-n { text-align: left; font-weight: 500; color: var(--text); white-space: nowrap; }
.wg-u { color: var(--muted); font-weight: 400; font-size: 10px; }
.wg-h { font-size: 10px; color: var(--muted); font-weight: 500; white-space: nowrap; }
.wg-h.done { color: var(--green); }
.wg-c { font-variant-numeric: tabular-nums; min-width: 62px; }
.wg-c.nm { color: var(--muted); }
.wg-c.conn { color: var(--accent); }
.wg-c.locked { cursor: not-allowed; }
.wg-e { color: var(--muted); opacity: .35; }
.week-done { cursor: pointer; border: 1px solid var(--line); background: none; font: inherit; }
.week-done:hover { border-color: var(--primary); color: var(--primary2); }

/* formula slide-over */
.slideover { position: fixed; inset: 0; z-index: 100; }
.so-scrim { position: absolute; inset: 0; background: rgba(0, 0, 0, .5); }
.so-panel {
  position: absolute; top: 0; right: 0; bottom: 0; width: min(460px, 100%);
  background: var(--panel); border-left: 1px solid var(--line); padding: 16px;
  display: flex; flex-direction: column; gap: 9px; overflow-y: auto;
}
.so-head { display: flex; align-items: baseline; gap: 8px; }
.so-sub { font-size: 11px; color: var(--muted); }
.so-x { margin-left: auto; background: none; border: 0; color: var(--muted); font-size: 15px; cursor: pointer; }
.so-l { font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.so-expr, .so-eff {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px;
  background: var(--bg); color: var(--text); border: 1px solid var(--line);
  border-radius: 7px; padding: 8px; width: 100%;
}
.so-ok { color: var(--green); font-size: 11px; }
.so-err { color: var(--error); font-size: 11px; }
.so-tbl { width: 100%; border-collapse: collapse; font-size: 11px; }
.so-tbl caption { text-align: left; color: var(--muted); font-size: 10px; padding-bottom: 5px; }
.so-tbl th, .so-tbl td { padding: 3px 6px; border-bottom: 1px solid var(--line); }
.so-tbl .num { text-align: right; font-variant-numeric: tabular-nums; }
.so-tbl .dim { color: var(--muted); font-size: 10px; }
.so-foot { display: flex; gap: 8px; margin-top: auto; padding-top: 10px; }

/* who chip in the top bar */
.who {
  display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--muted);
  padding: 4px 9px; border: 1px solid var(--line); border-radius: 999px; text-decoration: none;
  white-space: nowrap;
}
.who-in:hover { color: var(--primary2); border-color: var(--primary); }
.who-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); }
.who-dot.adm { background: var(--primary2); }
.who-name { max-width: 12ch; overflow: hidden; text-overflow: ellipsis; }

@media (max-width: 720px) {
  .pop { left: 8px !important; right: 8px; max-width: none; width: auto; }
  .so-panel { width: 100%; }
  .who-name { display: none; }
  .sec-add, .tile-menu, .row-menu { opacity: 1; }   /* no hover on touch */
}

/* v3.0.1 — the affordances QA found missing: unit chip, description, source picker,
   the game search inside «+ действие», and the button that opens it. */
.chip.unit { color: var(--muted); border-style: dashed; cursor: pointer; }
.chip.unit:hover, .chip.src[data-edit]:hover { color: var(--primary2); border-color: var(--primary); }
.chip.src[data-edit] { cursor: pointer; }
.who.ghost { cursor: pointer; opacity: .55; }
.who.ghost:hover, .who[data-edit]:hover { opacity: 1; color: var(--primary2); }
.who[data-edit] { cursor: pointer; }
.metric-def {
  font-size: 12px; line-height: 1.6; color: var(--muted); margin: 10px 0 2px;
  border-left: 2px solid var(--line); padding-left: 10px;
}
.metric-def[data-edit] { cursor: text; }
.metric-def[data-edit]:hover { border-left-color: var(--primary); }
.org-add { display: flex; justify-content: flex-end; margin: -4px 0 8px; }
.pop-game { position: relative; display: flex; flex-direction: column; gap: 4px; }
.pop-sug {
  display: flex; flex-direction: column; gap: 1px; max-height: 180px; overflow: auto;
  border: 1px solid var(--line); border-radius: 6px; padding: 3px; background: var(--bg);
}
.wg-c:focus-visible, .progress-cap[data-edit]:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
.progress-cap[data-edit] { cursor: pointer; }
.progress-cap[data-edit]:hover { color: var(--primary2); }
/* the detailed description on a department row: an affordance, not a wall of text —
   it only appears for someone who may edit it, and only when the row is under the cursor */
.row-def { font-size: 11px; color: var(--muted); margin-top: 2px; opacity: 0; cursor: text;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 46ch; }
tr:hover .row-def, .row-def:focus-visible, .row-def.is-editing { opacity: .75; }
.row-def:hover { opacity: 1; }
