/* SHIFT · карта переїзду
   Layout: шапка сайту з вкладками → панель сторінки (назва, редагування, збереження) → вміст сторінки */
:root{
  --bg:#f3f5f8; --surface:#ffffff; --ink:#16202b; --muted:#5b6777; --line:#d5dbe3; --soft:#f7f9fb;
  --spine:#16202b; --accent:#2457c5; --accent-t:#e6eefc;
  --cust:#0f766e; --cust-t:#e3f4f1;
  --have:#2563c9; --have-t:#e4edfb;
  --adapt:#0f7a6c; --adapt-t:#e1f3ef;
  --replace:#a86c00; --replace-t:#fcf0d5;
  --create:#c2410c; --create-t:#fdece4;
  --ext:#5f6977; --ext-t:#eceff3;
  --f-sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#10141a; --surface:#19202a; --ink:#e7ebf1; --muted:#9ba6b5; --line:#323c4a; --soft:#151b23; --spine:#c9d2de; --accent:#7aa6ff; --accent-t:#1c2b46;
  --cust:#4fd1c0; --cust-t:#123330; --have:#7aa6ff; --have-t:#1c2b46; --adapt:#4fd1bd; --adapt-t:#12322e; --replace:#e6b04a; --replace-t:#382c14;
  --create:#f39268; --create-t:#3a2219; --ext:#a7b1bf; --ext-t:#252c37; color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-padding-top:150px}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--f-sans)}
a{color:var(--accent)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* шапка сайту */
.site{position:sticky;top:0;z-index:30;background:var(--ink);color:var(--bg);padding-top:env(safe-area-inset-top,0px)}
.site-in{display:flex;align-items:center;gap:8px 24px;flex-wrap:wrap;min-height:52px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.brand{font:700 16px var(--f-sans);color:inherit;text-decoration:none;letter-spacing:.02em}
.brand span{font:500 12px var(--f-mono);opacity:.65;margin-left:6px;letter-spacing:0}
.brand.big{font-size:24px}
.tabs{display:flex;gap:2px;flex-wrap:wrap}
.tabs a{color:inherit;opacity:.72;text-decoration:none;padding:15px 12px 13px;border-bottom:3px solid transparent;font-weight:500;font-size:14px}
.tabs a:hover{opacity:1}
.tabs a.on{opacity:1;border-bottom-color:var(--bg)}
.out{margin-left:auto;color:inherit;opacity:.7;font-size:13px}

/* панель сторінки */
.pbar{position:sticky;top:52px;z-index:20;background:var(--surface);border-bottom:1px solid var(--line);padding-block:12px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.pbar-in{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}
.pbar h1{margin:0;font-size:20px;letter-spacing:-.01em}
.pbar .sub{color:var(--muted);font-size:13px}
.pbar .right{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.status{font:500 12.5px var(--f-mono);color:var(--muted);min-width:9ch}
.status.err{color:var(--create)}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer;font-size:13.5px;font-weight:500;text-decoration:none;line-height:1.2}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.btn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.small{padding:4px 8px;font-size:12.5px}
.btn.danger{color:var(--create)}
.btn.armed{background:var(--create);color:#fff;border-color:var(--create)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{font:500 13.5px var(--f-sans);padding:7px 14px;border:0;background:transparent;color:var(--muted);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--surface)}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--muted);margin-top:10px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{display:inline-block;width:12px;height:12px;border-radius:3px;border:1.5px solid}
.banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:10px;padding:10px 14px;border-radius:8px;background:var(--replace-t);border:1px solid var(--replace);font-size:14px}
.editing .pbar{box-shadow:inset 0 -3px 0 var(--accent)}
.hint{font-size:12.5px;color:var(--muted)}

/* поля редагування */
.ed{width:100%;border:1px solid var(--line);border-radius:7px;background:var(--soft);padding:7px 9px;font:14px/1.45 var(--f-sans);resize:none;overflow:hidden;display:block;min-height:36px}
.ed:focus{border-color:var(--accent);background:var(--surface)}
.ed.title{font-weight:600;font-size:15px}
.ed.mono{font:12.5px var(--f-mono)}
select.ed{min-height:34px;padding:5px 8px}
.ctrl{display:flex;flex-wrap:wrap;gap:4px}

/* статусні мітки */
.tag{display:inline-block;font:600 11.5px var(--f-mono);padding:3px 8px;border-radius:5px;border:1.5px solid;text-transform:uppercase;letter-spacing:.04em}
.t-have,.c-have,.c-shift{color:var(--have);border-color:var(--have);background:var(--have-t)}
.t-adapt,.c-adapt{color:var(--adapt);border-color:var(--adapt);background:var(--adapt-t)}
.t-replace,.c-replace,.c-hold{color:var(--replace);border-color:var(--replace);background:var(--replace-t)}
.t-create,.c-create{color:var(--create);border-color:var(--create);background:var(--create-t);border-style:dashed}
.c-ext{color:var(--ext);border-color:var(--ext);background:var(--ext-t)}
.c-none{color:var(--create);border-color:var(--create);background:var(--create-t);border-style:dashed}
.bp .chip small{display:block;font:400 11.5px var(--f-sans);opacity:.85;margin-top:2px;color:var(--ink)}
.bp .r-data .card{font-size:13.5px;border-style:dashed}
.bp .sysrow select{grid-column:auto}

/* вхід */
.login-body{display:grid;place-items:center;min-height:100vh;padding:16px}
.login{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px}
.login .muted{color:var(--muted);margin:8px 0 22px}
.login form{display:flex;flex-direction:column;gap:10px}
.login label{font:500 12px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.login input{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--soft);font-size:16px}
.login .btn{justify-content:center;padding:10px;font-size:15px}
.err{color:var(--create);margin:0;font-size:14px}

/* огляд */
.home{max-width:1080px;margin:0 auto;padding-block:32px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.home h1{font-size:28px;margin:0 0 6px;letter-spacing:-.02em;text-wrap:balance}
.home .lead{color:var(--muted);max-width:68ch;margin:0 0 28px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.card-link{display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px;color:var(--ink);text-decoration:none}
.card-link:hover{border-color:var(--ink)}
.card-link .kind{font:500 12px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.card-link h2{margin:0;font-size:22px}
.card-link p{margin:0;color:var(--muted)}
.card-link .stat{font:500 13px var(--f-mono);color:var(--ink);margin-top:auto;padding-top:10px;border-top:1px solid var(--line)}
.how{margin-top:28px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;color:var(--muted);font-size:14px}
.how b{color:var(--ink)}

/* ===== блупринт ===== */
.bp-wrap{overflow:auto;padding-bottom:max(24px,env(safe-area-inset-bottom,0px))}
.bp{display:grid;width:max-content;padding-right:24px}
.bp .h{position:sticky;top:0;z-index:3;background:var(--bg);padding:14px 10px 10px;border-bottom:2px solid var(--ink);display:flex;flex-direction:column;gap:4px}
.bp .h .ph{font:500 11.5px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.bp .h .nm{font-weight:700;font-size:16px;line-height:1.25;text-wrap:balance}
.bp .h .no{font:500 12px var(--f-mono);color:var(--muted);margin-right:6px}
.bp .corner{left:0;z-index:4;padding-left:max(16px,env(safe-area-inset-left,0px))}
.bp .lane{position:sticky;left:0;z-index:2;background:var(--bg);padding:14px 14px 14px max(16px,env(safe-area-inset-left,0px));border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.bp .lane strong{display:block;font-size:14px;line-height:1.25}
.bp .lane small{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.3}
.bp .cell{padding:10px 8px;border-bottom:1px solid var(--line);min-width:0;display:flex;flex-direction:column;gap:6px;position:relative}
.bp .cell.empty::after{content:"";display:block;height:2px;width:24px;background:var(--line);border-radius:2px;margin:10px 4px}
.bp .card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:14px;line-height:1.4;white-space:pre-line}
.bp .r-see .card{border-color:var(--cust);background:var(--cust-t)}
.bp .r-act .card{border:1.5px solid var(--cust);font-weight:500}
.bp .r-act .arrow::after{content:"";position:absolute;right:-7px;top:50%;width:14px;height:14px;transform:translateY(-50%) rotate(45deg);border-top:2px solid var(--cust);border-right:2px solid var(--cust);z-index:1}
.bp .r-back .card{font-size:13.5px}
.bp .r-back ol{margin:0;padding-left:18px}
.bp .r-back li+li{margin-top:3px}
.bp .chip{display:block;font:500 12.5px var(--f-mono);padding:6px 9px;border-radius:6px;border:1.5px solid;line-height:1.35}
.bp .chip i{font-style:normal;display:block;font:500 10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;opacity:.85;margin-bottom:1px}
.bp .r-pain .card{border:0;border-left:3px solid var(--create);background:var(--create-t);border-radius:4px;font-size:13.5px}
.bp .sep{grid-column:1 / -1;position:relative;height:30px;display:flex;align-items:center}
.bp .sep::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px dashed var(--muted);opacity:.55}
.bp .sep span{position:sticky;left:max(16px,env(safe-area-inset-left,0px));z-index:1;background:var(--bg);padding:0 10px 0 0;font:500 12px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.bp .lane.r-sys,.bp .r-sys .cell{background:var(--soft)}
.bp .sysrow{display:grid;grid-template-columns:1fr auto;gap:4px;align-items:start}
.bp .sysrow select{grid-column:1 / -1}
.bp .addcol{display:flex;align-items:flex-start;padding:14px 10px}

/* ===== роудмап ===== */
.rm-layout{max-width:1320px;margin:0 auto;display:grid;grid-template-columns:250px minmax(0,1fr);gap:28px;padding-block:24px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.rm-nav{position:sticky;top:170px;align-self:start;max-height:calc(100vh - 190px);overflow:auto}
.rm-nav a{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:7px 8px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:13.5px;line-height:1.25}
.rm-nav a:hover{background:var(--surface)}
.rm-nav .n,.rm-nav .c{font:500 12px var(--f-mono);color:var(--muted)}
.rm-nav a.done .c{color:var(--adapt)}
.prog{display:flex;align-items:center;gap:10px;font:500 13px var(--f-mono);color:var(--muted)}
.prog .track{width:140px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.prog .fill{height:100%;background:var(--accent);width:0}
.road{position:relative;padding-left:56px}
.road::before{content:"";position:absolute;left:19px;top:8px;bottom:8px;width:3px;background:var(--spine);border-radius:2px;opacity:.85}
.stage{position:relative;margin-bottom:34px}
.dot{position:absolute;left:-56px;top:0;width:41px;height:41px;border-radius:50%;background:var(--spine);color:var(--bg);display:grid;place-items:center;font:600 14px var(--f-mono);box-shadow:0 0 0 5px var(--bg)}
.st-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;min-height:41px}
.st-head h2{margin:0;font-size:21px;letter-spacing:-.01em;text-wrap:balance}
.st-head .ph{font:500 12px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.st-head .cnt{margin-left:auto;font:500 12.5px var(--f-mono);color:var(--muted)}
.st-edit{display:grid;grid-template-columns:180px minmax(0,1fr) auto;gap:8px;align-items:start;width:100%}
.st-desc{color:var(--muted);margin:2px 0 12px;max-width:75ch}
.rows{display:flex;flex-direction:column;gap:8px}
.row{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1.6fr);gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.row.filled{border-color:color-mix(in srgb,var(--adapt) 55%,var(--line))}
.k{font:600 12px var(--f-mono);color:var(--muted);margin-right:6px}
.step{font-weight:600;font-size:15.5px;line-height:1.3}
.need{margin-top:4px;font-size:14px;line-height:1.45}
.lbl{display:block;font:500 11px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 4px}
.lbl+.ed,.ed+.lbl{margin-top:0}
.col{display:flex;flex-direction:column;gap:6px;min-width:0}
.now{font-size:13.5px;line-height:1.45}
.dec{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start}
.dec .full{grid-column:1 / -1}
.dec input,.dec select{width:100%;font:14px var(--f-sans);padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--soft);color:var(--ink)}
.addrow{margin-top:8px}
.note{font-size:12.5px;color:var(--muted);margin-top:28px;max-width:75ch}

@media (max-width:1000px){
  .rm-layout{grid-template-columns:minmax(0,1fr)}
  .rm-nav{display:none}
}
@media (max-width:760px){
  .site,.pbar{position:static}
  html{scroll-padding-top:16px}
  .row{grid-template-columns:minmax(0,1fr);gap:12px}
  .road{padding-left:44px}
  .road::before{left:14px}
  .dot{left:-44px;width:31px;height:31px;font-size:12px}
  .st-edit{grid-template-columns:minmax(0,1fr)}
  .pbar .right{margin-left:0}
  .bp .h{position:static}
}

/* сторінка блупринта займає весь екран, прокрутка всередині полотна */
body.full{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
body.full .site,body.full .pbar{position:static}
body.full .bp-wrap{flex:1;min-height:0}

/* ===== системна карта ===== */
.sy-layout{max-width:1440px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;padding-block:24px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.sy-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;align-items:start}
.sy-group{display:flex;flex-direction:column;gap:8px}
.sy-group h2{margin:0 0 2px;font:600 12.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.sy-card{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:11px 13px;cursor:pointer;transition:opacity .15s,box-shadow .15s}
.sy-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.sy-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.07)}
.sy-card.st-have{border-left-color:var(--have)}.sy-card.st-adapt{border-left-color:var(--adapt)}.sy-card.st-replace{border-left-color:var(--replace)}.sy-card.st-create{border-left-color:var(--create)}
.sy-card.sel{box-shadow:0 0 0 2px var(--accent)}
.sy-card.rel{box-shadow:0 0 0 1.5px var(--muted)}
.sy-card.dim{opacity:.32}
.sy-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sy-code{font:600 13px var(--f-mono);letter-spacing:.04em}
.sy-name{font-weight:600;font-size:15px;line-height:1.3}
.sy-now{font-size:12.5px;color:var(--muted);line-height:1.35}
.own{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}
.o-shift{background:var(--have)}.o-hold{background:var(--replace)}.o-ext{background:var(--ext)}.o-none{background:transparent;border:1.5px dashed var(--create);width:9px;height:9px}
.sy-panel{position:sticky;top:180px;align-self:start;max-height:calc(100vh - 200px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 20px;min-width:0}
.sy-panel h2{margin:6px 0 6px;font-size:20px;line-height:1.25;text-wrap:balance}
.sy-panel h3{margin:16px 0 6px;font:600 11.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.sy-panel p{margin:0 0 8px;max-width:65ch}
.sy-panel ul{margin:0;padding-left:18px}
.sy-panel ul li+li{margin-top:4px}
.sy-panel ul.not li::marker{content:"✕  ";color:var(--create)}
.sy-panel ul.flows{list-style:none;padding:0;display:flex;flex-direction:column;gap:6px}
.sy-panel ul.flows li{display:flex;flex-direction:column;gap:1px}
.sy-panel .what{font-size:13.5px;color:var(--muted)}
.sy-purpose{font-size:15px}
.sy-close{position:absolute;right:12px;top:12px}
.sy-panel{position:sticky}
.sy-link{all:unset;cursor:pointer;color:var(--accent);font-size:14px}
.sy-link b{font:600 12.5px var(--f-mono)}
.sy-link:focus-visible{outline:2px solid var(--accent)}
.sy-form{display:flex;flex-direction:column;gap:6px}
.sy-form .lbl{margin-top:8px}
.sy-out{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;padding:8px;border:1px solid var(--line);border-radius:8px}
.sy-out .ed:last-child{grid-column:1 / -1}
.sy-flow-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px}
.sy-flow{width:100%;border-collapse:collapse;font-size:14px}
.sy-flow th{text-align:left;font:600 11.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface)}
.sy-flow td{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.sy-flow tr.dim{opacity:.3}
@media (max-width:1000px){.sy-layout{grid-template-columns:minmax(0,1fr)}.sy-panel{position:static;max-height:none;order:-1}}
.bp .sysrow select{grid-column:auto}
.rm-sys{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font:500 12px var(--f-mono);color:var(--muted)}
.rm-sys b{color:var(--ink);font-weight:600}
.dot.sq{border-radius:10px;font-size:11px}
.sy-panel>.sy-top{padding-right:40px}
.bp .chip{font:500 13px/1.35 var(--f-sans)}

.guess{font-style:normal;font:500 10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--create);margin-left:4px}
.bp .sysedit{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.bp .sysedit .lbl{margin-top:4px}

.hostwrap{position:relative;display:flex;align-items:center}
.hostwrap input{padding-right:64px}
.hostwrap .guess{position:absolute;right:8px;pointer-events:none}
.dec select.mono{font:12.5px var(--f-mono)}

/* словник скорочень */
.gloss{margin-top:10px;font-size:13.5px}
.gloss summary{cursor:pointer;color:var(--accent);font-weight:500;width:max-content}

/* блупринт: вузли «зараз» і потоки «ціль» */
.bp .node{background:var(--surface);border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13.5px;line-height:1.4}
.bp .node i{display:block;font:600 10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
.bp .node.t-core{border-color:var(--create);background:var(--create-t)}
.bp .node.t-core i{color:var(--create)}
.bp .node.t-dep{border-color:var(--replace);background:var(--replace-t)}
.bp .node.t-dep i{color:var(--replace)}
.sw.n-core{border-color:var(--create);background:var(--create-t)}
.sw.n-dep{border-color:var(--replace);background:var(--replace-t)}
.sw.n-free{border-color:var(--line);background:var(--surface)}
.bp .chip i{font-family:var(--f-mono)}
.bp .flow{font-size:13.5px;line-height:1.45;padding:9px 11px;border-left:3px solid var(--have);background:var(--surface);border-radius:4px}

/* ===== роудмап: таблиця по етапах ===== */
.rt-wrap{max-width:1560px;margin:0 auto;padding-block:20px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.rt-stage{margin-bottom:30px}
.rt-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-bottom:4px}
.rt-head .dot{position:static;width:32px;height:32px;font-size:13px;box-shadow:none;flex:none}
.rt-head h2{margin:0;font-size:19px;letter-spacing:-.01em}
.rt-head .ph{font:500 12px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.rt-head .cnt{margin-left:auto;font:500 12.5px var(--f-mono);color:var(--muted)}
.rt-head .st-edit{flex:1}
.rt-table{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rt-row{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(0,1.5fr) 104px minmax(0,1.45fr) minmax(0,1.6fr) minmax(0,.85fr) minmax(0,.95fr);border-top:1px solid var(--line)}
.rt-row:first-child{border-top:0}
.rt-row.filled{background:color-mix(in srgb,var(--adapt-t) 45%,var(--surface))}
.rt-hdr{background:var(--soft)}
.rt-hdr .rt-c{font:600 11px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-block:8px}
.rt-c{padding:10px 10px;min-width:0;display:flex;flex-direction:column;gap:5px;font-size:14px;line-height:1.4}
.rt-c+.rt-c{border-left:1px solid var(--line)}
.rt-step .step{font-weight:600;font-size:14.5px}
.rt-step .need{font-size:13px;color:var(--muted);margin:0}
.rt-c .now{font-size:13.5px}
.rt-c .tag{align-self:flex-start}
.rt-c select{width:100%;font:13.5px var(--f-sans);padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--soft);color:var(--ink)}
.rt-c select.mono{font:12.5px var(--f-mono)}
.rt-c.hostwrap{position:relative;justify-content:flex-start}
.rt-c.hostwrap textarea{padding-right:58px;font-size:13.5px}
.rt-c.hostwrap .guess{position:absolute;right:18px;top:18px}
@media (max-width:1100px){
  .rt-hdr{display:none}
  .rt-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .rt-c+.rt-c{border-left:0}
  .rt-step{grid-column:1 / -1}
}
@media (max-width:600px){.rt-row{grid-template-columns:minmax(0,1fr)}}

/* принципи на огляді */
.princ{margin-top:28px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.princ h2{margin:0 0 12px;font-size:18px}
.princ ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:10px;max-width:80ch}
.princ b{color:var(--ink)}

.flowchk{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted);margin-top:4px}
.flowchk label{display:flex;gap:6px;align-items:center}
.pbar .seg+.seg{margin-left:-8px}

/* ===== роудмап: рядки-рішення ===== */
.rm-table{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rm-item{border-top:1px solid var(--line)}
.rm-item.done{background:color-mix(in srgb,var(--adapt-t) 45%,var(--surface))}
.rm-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1.9fr) minmax(0,1.6fr) minmax(0,1.7fr) 180px}
.rm-hdr{background:var(--soft)}
.rm-hdr .rm-c{font:600 11px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-block:8px}
.rm-c{padding:12px;min-width:0;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.45}
.rm-c+.rm-c{border-left:1px solid var(--line)}
.rm-c select{width:100%;font:13.5px var(--f-sans);padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--soft);color:var(--ink)}
.rm-toggle{all:unset;cursor:pointer;display:flex;gap:6px;align-items:flex-start;font-weight:600;font-size:15px;line-height:1.3}
.rm-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rm-toggle .chev{color:var(--muted);width:12px;flex:none}
.rm-name .ex{font-size:12.5px;color:var(--muted);padding-left:18px}
.rm-name .cnt{font:500 11.5px var(--f-mono);color:var(--muted);padding-left:18px}
.rm-c .take{align-self:flex-start}
.rm-steps{padding:4px 12px 14px 30px;background:var(--soft);border-top:1px dashed var(--line)}
.rm-srow{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.6fr) 110px minmax(0,1fr);gap:12px;padding:9px 0;border-top:1px solid var(--line);font-size:13.5px}
.rm-srow:first-child{border-top:0}
.rm-shdr{font:600 10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.rm-srow .step{font-weight:600}
.rm-srow .need{color:var(--muted);font-size:13px}
.rq{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.rq-col{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px}
.rq-col h2{margin:0;font-size:17px}
.rq-none{background:var(--soft);border-style:dashed}
.rq-card{border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:var(--surface)}
.rq-card .nm{font-weight:600;font-size:14px}
.rq-card .dec{font-size:13px;margin-top:2px}
.rq-card .dec.none{color:var(--create)}
@media (max-width:1100px){
  .rm-hdr{display:none}
  .rm-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .rm-c+.rm-c{border-left:0}
  .rm-name{grid-column:1 / -1}
  .rm-srow{grid-template-columns:minmax(0,1fr)}
  .rq{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (max-width:600px){.rm-row,.rq{grid-template-columns:minmax(0,1fr)}}

/* хто господар яких даних */
.owners{position:sticky;left:0;width:min(1100px,calc(100vw - 32px));margin:28px max(16px,env(safe-area-inset-left,0px)) 40px}
.owners h2{margin:0 0 4px;font-size:19px}
.owners .hint{margin:0 0 12px}
.own-table{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.own-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr) minmax(0,1.5fr);border-top:1px solid var(--line)}
.own-row:first-child{border-top:0}
.own-row>div{padding:10px 12px;font-size:14px;line-height:1.45;min-width:0}
.own-row>div+div{border-left:1px solid var(--line)}
.own-hdr{background:var(--soft)}
.own-hdr>div{font:600 11px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-block:8px}
.own-row .sys{font-weight:600}
.own-row .rd{color:var(--muted)}
@media (max-width:700px){.own-row{grid-template-columns:minmax(0,1fr)}.own-row>div+div{border-left:0;padding-top:0}.own-hdr{display:none}}

/* перемикач теми */
.theme{background:transparent;border:1px solid currentColor;border-radius:7px;color:inherit;opacity:.75;font:500 12.5px var(--f-sans);padding:4px 10px;cursor:pointer}
.theme:hover{opacity:1}
.out{margin-left:0}
.site-in .theme{margin-left:auto}

/* наше / партнерське */
.bp .chip.c-ext{border-style:dashed}
.bp .chip .side{display:inline-block;margin-left:6px;font:600 10px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;padding:1px 5px;border-radius:4px;background:var(--ext);color:var(--surface);vertical-align:1px}
.sw.c-ext{border-style:dashed}
.own-row .side{display:inline-block;margin-left:6px;font:600 10px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;padding:1px 5px;border-radius:4px;background:var(--ext);color:var(--surface);vertical-align:1px}

/* «зараз»: назва системи над текстом */
.bp .node i{color:var(--muted)}
.bp .node .tie{display:block;margin-top:1px}
.bp .node.t-core .tie{color:var(--create)}
.bp .node.t-dep .tie{color:var(--replace)}
/* «ціль»: передачі блоками */
.bp .hops{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.bp .hops-h{font:600 10.5px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:4px}
.bp .hop{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--have);border-radius:6px;padding:6px 9px;font-size:13px;line-height:1.4}
.bp .hop-h{font:600 11px var(--f-mono);letter-spacing:.03em;color:var(--have);margin-bottom:1px}
.bp .hop-h span{color:var(--muted);font-weight:500}
.bp .hoprow{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;gap:4px;align-items:center}
.bp .hoprow .arr{color:var(--muted)}

/* словник: картки, прокрутка всередині */
.gl{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin:10px 0 4px;max-height:min(60vh,560px);overflow:auto;padding:2px 4px 2px 0}
.gl-card{background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.gl-card.ext{border-style:dashed}
.gl-card h3{margin:0 0 4px;font:600 13px var(--f-mono);color:var(--ink)}
.gl-card .side{display:inline-block;margin-left:6px;font:600 10px var(--f-mono);text-transform:uppercase;letter-spacing:.05em;padding:1px 5px;border-radius:4px;background:var(--ext);color:var(--surface);vertical-align:1px}
.gl-card p{margin:0;font-size:13px;line-height:1.45;color:var(--muted)}
.gl-card p.who{margin-top:5px;color:var(--ink)}
/* кнопка «?» і пояснення в блоці */
.q{display:inline-grid;place-items:center;width:17px;height:17px;margin-left:6px;border-radius:50%;border:1.5px solid currentColor;background:transparent;color:inherit;font:700 10.5px/1 var(--f-sans);cursor:pointer;vertical-align:1px;padding:0;opacity:.8}
.q:hover,.q[aria-expanded="true"]{opacity:1;background:currentColor}
.q:hover::after,.q[aria-expanded="true"]::after{content:"?";color:var(--surface)}
.q:hover,.q[aria-expanded="true"]{font-size:0}
.q:hover::after,.q[aria-expanded="true"]::after{font:700 10.5px/1 var(--f-sans)}
.info{margin-top:6px;padding-top:6px;border-top:1px dashed currentColor;font:400 12.5px/1.45 var(--f-sans);color:var(--ink);text-transform:none;letter-spacing:0}
.info p{margin:0}
.info p.who{margin-top:4px;font-weight:600}
.own-row .sys .info{font-weight:400}

/* роудмап: залежності і «?» */
.rm-name .after{font-size:12.5px;color:var(--muted);margin-top:4px}
.rm-name .q{color:var(--muted)}
.rm-name>.info{color:var(--ink);border-top-color:var(--line)}
.rm-name .rm-toggle{display:inline-flex;vertical-align:top}
.rm-name>.q{vertical-align:2px;margin-left:6px}

/* огляд: що робимо на зустрічі, словник */
.todo{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:18px 22px;margin:0 0 20px}
.todo h2{margin:0 0 8px;font-size:18px}
.todo ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.home-gloss{margin-top:24px}

.gl-h{grid-column:1 / -1;margin:10px 0 0;font:600 11px var(--f-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.gl-h:first-child{margin-top:0}
.gl-card.word{background:var(--surface)}

/* «Ціль»: що змінюється, приглушений бек-офіс, головні передачі */
.bp .r-fix .card{border:1.5px solid var(--adapt);background:var(--adapt-t);font-size:14px;font-weight:500}
.bp .dim .card{opacity:.55}
.bp .hop.main{border-left-width:5px;border-color:var(--have);background:var(--have-t)}
.bp .hop.dwh{border-left-color:var(--muted);background:var(--soft);color:var(--muted)}
.bp .hop.dwh .hop-h{color:var(--muted)}
.bp .mainchk{display:flex;gap:6px;align-items:center;font-size:12.5px;color:var(--muted)}
.owners .pass{margin:10px 0 0;font-size:13.5px;color:var(--muted)}
.owners .pass b{color:var(--ink)}

.sepline{font-size:13px;color:var(--muted);margin-top:4px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.sepline b{color:var(--ink);font-weight:600}
.sepline .sepf{width:220px;min-height:30px;padding:4px 8px}
.rm-name .warn,.rq-card .warn{font-size:12.5px;color:var(--create);margin-top:4px}
.rq-card .after{font-size:12px;color:var(--muted);margin-top:3px}

.rm-title{display:flex;align-items:flex-start;gap:2px}
.rm-title .q{flex:none;margin-top:1px}

.hoplg{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.hoplg b{font-weight:600;color:var(--ink)}
.sw.hl-main{border-color:var(--have);background:var(--have-t);border-left-width:4px}
.sw.hl-reg{border-color:var(--line);background:var(--surface);border-left:3px solid var(--have)}
.sw.hl-dwh{border-color:var(--line);background:var(--soft);border-left:3px solid var(--muted)}
