/* Venzi Meridian — clickable prototype (selected-but-unratified) · Phase 29 v4 hygiene patch */
*{box-sizing:border-box}
:root{
  --pri:#3a4bb0;--pri-d:#31409c;--pri-bg:#eaecf8;--pri-ln:#d5d9f2;
  --sec:#0e7681;--sec-bg:#e4f2f2;--sec-ln:#c5e5e5;
  --bg:#eef0f5;--surface:#fff;--panel:#fafbfc;--bd:#e2e4ec;--bd2:#eef0f5;
  --ink:#191c2b;--ink2:#3f465a;--sub:#565d70;--mut:#868da0;--faint:#98a0b0;
  --ok:#1d7a4a;--ok-bg:#e7f3ec;--ok-ln:#c5e3d1;
  --warn:#8a5510;--warn-bg:#fbf3e6;--warn-ln:#ecd9b4;
  --crit:#bd3838;--crit-bg:#fbeae8;--crit-ln:#f0cfcb;
  --info:#2f6bd0;--info-bg:#e8f0f9;--info-ln:#cddff2;
  --plum:#6a4c93;--plum-bg:#efeaf6;--plum-ln:#ddd0ec;
  --amber:#8a6a12;--amber-bg:#fbf3e6;--amber-ln:#ecd9b4;
  --impl:#7a4a44;--impl-bg:#f7eeed;--impl-ln:#e8d6d3;
  --ring:#4f60d6;--r:8px;--mo:180ms;--row-py:11px;--row-fs:12px;
}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink2);font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
.mono{font-family:'IBM Plex Mono',ui-monospace,Menlo,monospace}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:6px}
[data-reduced] *{transition-duration:.001ms !important;animation-duration:.001ms !important}

/* ===== layout ===== */
.app{display:grid;grid-template-columns:216px 1fr;height:100vh;height:100dvh;overflow:hidden}
.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--panel)}

/* ===== nav ===== */
.nav{background:color-mix(in srgb,var(--pri) 3.5%,var(--panel));border-right:1px solid var(--bd);display:flex;flex-direction:column;padding:13px 11px;overflow:auto;z-index:45}
.nav-brand{display:flex;align-items:center;gap:9px;padding:2px 6px 13px}
.nav-mark{width:28px;height:28px;border-radius:8px;background:var(--pri);display:inline-flex;align-items:center;justify-content:center;flex:none}
.nav-brand b{font-size:13px;color:var(--ink);letter-spacing:-.01em;font-weight:600;display:block;line-height:1.1}
.nav-brand small{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--sub)}
.nav-glabel{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);padding:9px 8px 5px}
.nav-item{display:flex;align-items:center;gap:10px;padding:7px 9px;border-radius:7px;font-size:11.5px;color:var(--sub);width:100%;text-align:left;transition:background var(--mo),color var(--mo)}
.nav-item:hover{background:color-mix(in srgb,var(--pri) 6%,#fff)}
.nav-item svg{flex:none}
.nav-item.active{color:var(--pri);background:color-mix(in srgb,var(--pri) 11%,#fff);font-weight:600}
.nav-badge{margin-left:auto;font:700 8px 'IBM Plex Mono',monospace;background:var(--pri);color:#fff;padding:1px 6px;border-radius:8px}
.nav-badge.soft{background:var(--plum-bg);color:var(--plum);border:1px solid var(--plum-ln)}
.nav-spacer{flex:1}
.nav-foot{border-top:1px solid var(--bd);margin-top:8px;padding-top:9px;display:flex;align-items:center;gap:8px}
.nav-ava{width:24px;height:24px;border-radius:50%;background:#dfe3ea;flex:none;display:inline-flex;align-items:center;justify-content:center;font:600 9px 'IBM Plex Mono',monospace;color:var(--sub)}
.nav-foot b{font-size:10.5px;color:var(--ink2);font-weight:600;display:block;line-height:1.1}
.nav-foot small{font:600 7px 'IBM Plex Mono',monospace;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
.nav-venzi{margin-left:auto;font:600 7px 'IBM Plex Mono',monospace;color:var(--sub);background:var(--surface);border:1px solid var(--bd);padding:2px 6px;border-radius:4px}

/* ===== topbar ===== */
.topbar{height:52px;flex:none;display:flex;align-items:center;gap:10px;padding:0 15px;background:var(--surface);border-bottom:1px solid var(--bd)}
.tb-title{font-weight:600;font-size:13.5px;color:var(--ink)}
.hamburger{display:none;width:32px;height:32px;border-radius:8px;border:1px solid var(--bd);align-items:center;justify-content:center}
.search-btn{flex:1 1 auto;min-width:0;max-width:340px;height:32px;border:1px solid var(--bd);border-radius:8px;background:var(--panel);font-size:11px;color:var(--faint);display:flex;align-items:center;gap:8px;padding:0 11px}
.search-btn .ph{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.search-btn kbd{margin-left:auto;font:600 8px 'IBM Plex Mono',monospace;background:var(--surface);border:1px solid var(--bd);padding:1px 5px;border-radius:4px;color:var(--mut)}
.tb-spacer{flex:1}
.tenant-chip{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 11px;border-radius:8px;background:color-mix(in srgb,var(--pri) 7%,#fff);border:1px solid color-mix(in srgb,var(--pri) 22%,#fff);font-size:11px;color:var(--pri);font-weight:600}
.tenant-chip .t-mark{width:16px;height:16px;border-radius:4px;background:var(--pri);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 8px 'IBM Plex Mono',monospace}
.setup-chip{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 11px;border-radius:8px;background:var(--warn-bg);border:1px solid var(--warn-ln);font:600 10px 'IBM Plex Sans';color:var(--amber)}
.setup-bar{width:34px;height:5px;border-radius:3px;background:#efd9a8;overflow:hidden}
.setup-bar i{display:block;width:80%;height:5px;background:#c79a3a}
.icon-btn{position:relative;width:30px;height:30px;border-radius:8px;border:1px solid var(--bd);background:var(--surface);display:inline-flex;align-items:center;justify-content:center}
.bell-dot{position:absolute;top:-3px;right:-3px;min-width:15px;height:15px;border-radius:8px;background:var(--crit);color:#fff;font:700 8px 'IBM Plex Mono',monospace;display:flex;align-items:center;justify-content:center;padding:0 3px}
.role-chip{font:600 10px 'IBM Plex Sans';color:var(--sub);background:var(--bd2);border:1px solid var(--bd);border-radius:20px;padding:5px 11px}

.internal-banner{flex:none;display:flex;align-items:center;gap:8px;padding:7px 15px;background:color-mix(in srgb,var(--pri) 4%,var(--panel));border-bottom:1px solid var(--bd2);font-size:10.5px;color:var(--mut)}
.internal-banner b{color:var(--sub);font-weight:600}
.tag{font:700 8px 'IBM Plex Mono',monospace;padding:2px 6px;border-radius:4px}
.tag.ph{color:var(--amber);background:var(--amber-bg);border:1px solid var(--amber-ln)}
.tag.impl{color:var(--impl);background:var(--impl-bg);border:1px solid var(--impl-ln)}

/* ===== queue ===== */
.queue-wrap{flex:1;overflow:auto;padding:14px 16px}
.queue-toolbar{display:flex;align-items:center;gap:9px;margin-bottom:12px;flex-wrap:wrap}
.queue-toolbar h1{margin:0;font-weight:600;font-size:15px;color:var(--ink)}
.queue-toolbar .sub{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:var(--faint);margin-top:2px}
.chip{height:29px;display:inline-flex;align-items:center;gap:6px;padding:0 11px;border:1px solid var(--bd);border-radius:8px;background:var(--surface);font-size:10.5px;color:var(--sub)}
.chip.on{border-color:var(--pri-ln);background:var(--pri-bg);color:var(--pri);font-weight:600}
.qhead{display:grid;grid-template-columns:26px 1.5fr 1.15fr 132px .8fr 132px;gap:12px;padding:7px 12px;background:color-mix(in srgb,var(--pri) 3%,var(--panel));border:1px solid var(--bd);border-radius:9px 9px 0 0}
.qhead span{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.qbody{border:1px solid var(--bd);border-top:none;border-radius:0 0 9px 9px;overflow:hidden;background:var(--surface)}
.qrow{border-bottom:1px solid var(--bd2)}
.qrow:last-child{border-bottom:none}
.qmain{display:grid;grid-template-columns:26px 1.5fr 1.15fr 132px .8fr 132px;gap:12px;padding:var(--row-py) 12px;align-items:center;cursor:pointer;transition:background var(--mo)}
.qmain:hover{background:color-mix(in srgb,var(--pri) 3%,#fff)}
.qcaret{width:20px;height:20px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:var(--mut);font-size:11px;transition:transform var(--mo)}
.qrow.exp .qcaret{transform:rotate(90deg)}
.qact{min-width:0}
.qact .l1{display:flex;align-items:center;gap:7px}
.qid{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--pri);font-weight:500}
.qtitle{font-size:var(--row-fs);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qplan{font-size:9.5px;color:var(--mut);margin-top:2px}
.qcol{min-width:0}
.qblocker{display:flex;align-items:center;gap:5px;margin-top:5px}
.qblocker i{width:5px;height:5px;border-radius:50%;background:var(--crit);flex:none}
.qblocker span{font-size:9.5px;color:var(--crit);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.readiness{display:flex;align-items:center;gap:4px}
.pip{flex:1;height:6px;border-radius:3px;max-width:26px}
.pip.ok{background:var(--ok)}.pip.warn{background:var(--warn)}.pip.crit{background:var(--crit)}
.pip.todo{background:#eef1f4;border:1px solid #e0e4e8}
.qowner .o{font-size:10.5px;color:var(--ink2);font-weight:500}
.qowner .d{font-size:9.5px;color:var(--mut)}
.qnext{font:600 10px 'IBM Plex Sans';color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln);padding:5px 10px;border-radius:6px;white-space:nowrap;justify-self:start}
.qexp{padding:2px 12px 13px 46px;animation:down var(--mo) ease}
.qexp-in{background:var(--panel);border:1px solid var(--bd);border-radius:9px;padding:12px 14px;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.field .k{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.field .v{font-size:11px;color:var(--ink)}
.field .v.mono{font-family:'IBM Plex Mono',monospace;font-size:11.5px}
.qexp-bar{grid-column:1/-1;display:flex;gap:7px;padding-top:9px;border-top:1px solid var(--bd2)}
.qnote{font:9.5px/1.5 'IBM Plex Mono',monospace;color:var(--faint);margin-top:10px}

/* ===== badges / buttons ===== */
.badge{font:600 9.5px 'IBM Plex Sans';padding:3px 9px;border-radius:6px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.badge.ok{color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-ln)}
.badge.warn{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-ln)}
.badge.crit{color:var(--crit);background:var(--crit-bg);border:1px solid var(--crit-ln)}
.badge.info{color:var(--info);background:var(--info-bg);border:1px solid var(--info-ln)}
.badge.pri{color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln)}
.badge.plum{color:var(--plum);background:var(--plum-bg);border:1px solid var(--plum-ln)}
.badge.neutral{color:var(--sub);background:#eef1f4;border:1px solid #e0e4e8}
.btn{font:600 11px 'IBM Plex Sans';padding:8px 13px;border-radius:7px;border:1px solid var(--bd);background:var(--surface);color:var(--ink2)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.soft{background:var(--pri-bg);border-color:var(--pri-ln);color:var(--pri)}
.btn.danger{background:var(--surface);border-color:color-mix(in srgb,var(--crit) 34%,#fff);color:var(--crit)}
.btn.sm{font-size:10px;padding:5px 10px}
.btn.ghost{border-color:transparent;color:var(--sub)}

/* ===== scrim + overlays ===== */
.scrim{position:fixed;inset:0;background:rgba(20,24,40,.28);opacity:0;visibility:hidden;transition:opacity var(--mo);z-index:50}
.scrim.on{opacity:1;visibility:visible}
.drawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(600px,94vw);background:var(--surface);border-left:1px solid var(--bd);box-shadow:-16px 0 48px rgba(20,24,40,.2);transform:translateX(100%);transition:transform var(--mo) ease;z-index:60;display:flex;flex-direction:column}
.drawer.on{transform:none}
.dw-head{flex:none;padding:14px 18px;border-bottom:1px solid var(--bd2)}
.dw-head .r1{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.dw-head .r1 .sp{flex:1}
.dw-title{font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.dw-blocker{display:flex;align-items:center;gap:8px;margin-top:9px;padding:9px 11px;background:var(--crit-bg);border:1px solid var(--crit-ln);border-radius:8px;font-size:10.5px;color:#8a3a33;font-weight:600}
.dw-blocker i{width:6px;height:6px;border-radius:50%;background:var(--crit);flex:none}
.dw-blocker .who{margin-left:auto;font:600 8px 'IBM Plex Mono',monospace;color:var(--sub);background:#fff;border:1px solid var(--crit-ln);padding:2px 6px;border-radius:4px}
.dw-controls{flex:none;display:flex;align-items:center;gap:8px;padding:9px 18px;border-bottom:1px solid var(--bd2);background:var(--panel);font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.dw-controls .sp{flex:1}
.dw-controls button{font:600 9px 'IBM Plex Sans';color:var(--pri);text-transform:none;letter-spacing:0}
.dw-sections{flex:1;overflow:auto;padding:14px 18px;display:flex;flex-direction:column;gap:9px}
.sec{border:1px solid var(--bd);border-radius:10px;overflow:hidden}
.sec.rel{border-color:var(--pri-ln)}
.sec-head{display:flex;align-items:center;gap:8px;padding:11px 13px;background:var(--surface);width:100%;text-align:left}
.sec.rel .sec-head{background:var(--pri-bg)}
.sec-head .nm{font-size:12px;font-weight:600;color:var(--ink)}
.sec-head .sp{flex:1}
.sec-head .cv{font:600 8px 'IBM Plex Mono',monospace;color:var(--pri);transition:transform var(--mo)}
.sec:not(.open) .sec-body{display:none}
.sec:not(.open) .sec-head .cv{transform:rotate(-90deg)}
.sec-body{padding:12px 13px;border-top:1px solid var(--bd2)}
.kv{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.line{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--ink2);padding:3px 0}
.line i{width:7px;height:7px;border-radius:50%;flex:none}
.prov{background:#faf8fd;border:1px dashed var(--plum-ln)}
.prov .lbl{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--plum);margin-bottom:5px}
.prov p{margin:0;font-size:10.5px;color:var(--sub);line-height:1.5}
.tl{display:flex;flex-direction:column;gap:9px}
.tl .ev{display:flex;gap:9px;align-items:flex-start}
.tl .ev i{width:7px;height:7px;border-radius:50%;margin-top:3px;flex:none}
.tl .ev .t{font-size:10.5px;color:var(--ink2)}
.tl .ev .m{font-size:8.5px;color:var(--mut);display:flex;gap:6px;align-items:center;margin-top:1px}
.tl .ev .m .src{font-family:'IBM Plex Mono',monospace;background:var(--panel);border:1px solid var(--bd);padding:1px 5px;border-radius:4px}
.dw-bar{flex:none;display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--bd);background:var(--surface);flex-wrap:wrap}
.dw-bar .sp{flex:1}

/* ===== modal ===== */
.modal-wrap{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;transition:opacity var(--mo)}
.modal-wrap.on{opacity:1;visibility:visible}
.modal{width:484px;max-width:96vw;background:var(--surface);border:1px solid var(--bd);border-radius:13px;box-shadow:0 24px 60px rgba(20,24,40,.34);overflow:hidden;transform:translateY(8px) scale(.99);transition:transform var(--mo)}
.modal-wrap.on .modal{transform:none}
.md-head{display:flex;align-items:center;gap:9px;padding:14px 17px;border-bottom:1px solid var(--bd2)}
.md-head .ttl{font-size:14px;font-weight:700;color:var(--ink)}
.md-head .sp{flex:1}
.md-body{padding:15px 17px;display:flex;flex-direction:column;gap:12px}
.md-row{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--sub);flex-wrap:wrap}
.md-lbl{font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.md-reason .rq{font:600 8px 'IBM Plex Mono',monospace;color:var(--crit)}
.md-textarea{height:64px;border:1px solid var(--bd);border-radius:8px;background:var(--panel);padding:9px 11px;font:400 11px 'IBM Plex Sans';color:var(--ink2);width:100%;resize:none}
.md-textarea::placeholder{color:var(--faint)}
.md-preview{border:1px dashed var(--plum-ln);border-radius:9px;background:#faf8fd;padding:10px 12px}
.md-preview .lbl{font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--plum);margin-bottom:4px}
.md-preview p{margin:0;font-size:10.5px;color:var(--sub);line-height:1.5}
.md-audit{display:flex;align-items:center;gap:8px;font:9.5px/1.4 'IBM Plex Mono',monospace;color:var(--mut)}
.md-foot{display:flex;align-items:center;gap:9px;padding:13px 17px;border-top:1px solid var(--bd2);background:var(--panel)}
.md-foot .sp{flex:1}

/* ===== search ===== */
.search{position:fixed;top:66px;left:50%;transform:translate(-50%,-8px);width:660px;max-width:92vw;background:var(--surface);border:1px solid var(--bd);border-radius:12px;box-shadow:0 18px 50px rgba(20,24,40,.28);overflow:hidden;z-index:65;opacity:0;visibility:hidden;transition:opacity var(--mo),transform var(--mo)}
.search.on{opacity:1;visibility:visible;transform:translate(-50%,0)}
.search-in{display:flex;align-items:center;gap:9px;padding:12px 15px;border-bottom:1px solid var(--bd2)}
.search-in input{flex:1;border:none;background:none;font:400 13px 'IBM Plex Sans';color:var(--ink);outline:none}
.search-res{max-height:360px;overflow:auto;padding:8px}
.sr-grp{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);padding:8px 9px 5px}
.sr{display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:8px;cursor:pointer}
.sr:hover,.sr.sel{background:var(--pri-bg)}
.sr .rid{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--pri)}
.sr .rt{font-size:12px;color:var(--ink);font-weight:500;flex:1}
.sr .rm{font-size:9px;color:var(--mut)}
.sr.locked{opacity:.7}
.search-foot{display:flex;align-items:center;gap:12px;padding:9px 14px;border-top:1px solid var(--bd2);background:var(--panel);font:600 9px 'IBM Plex Mono',monospace;color:var(--mut)}

/* ===== notif ===== */
.notif{position:fixed;top:56px;right:56px;width:372px;max-width:92vw;background:var(--surface);border:1px solid var(--bd);border-radius:12px;box-shadow:0 18px 48px rgba(20,24,40,.26);overflow:hidden;z-index:65;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity var(--mo),transform var(--mo)}
.notif.on{opacity:1;visibility:visible;transform:none}
.notif-head{display:flex;align-items:center;gap:9px;padding:12px 15px;border-bottom:1px solid var(--bd2)}
.notif-head b{font-size:12.5px;color:var(--ink);font-weight:600}
.notif-head .cnt{font:700 8px 'IBM Plex Mono',monospace;color:#fff;background:var(--pri);padding:2px 7px;border-radius:9px}
.notif-head .sp{flex:1}
.notif-list{max-height:340px;overflow:auto}
.ni{display:flex;align-items:flex-start;gap:10px;padding:11px 15px;border-bottom:1px solid var(--bd2);border-left:3px solid transparent}
.ni.due{border-left-color:var(--warn);background:#f8f9fd}
.ni.blk{border-left-color:var(--crit);background:#f8f9fd}
.ni.esc{border-left-color:var(--plum)}
.ni.ok{border-left-color:var(--ok)}
.ni .dot{width:8px;height:8px;border-radius:50%;flex:none;margin-top:4px;background:#d7dae6}
.ni.due .dot,.ni.blk .dot{background:var(--pri)}
.ni .body{flex:1}
.ni .t{font-size:11.5px;font-weight:600;color:var(--ink)}
.ni.esc .t,.ni.ok .t{color:var(--ink2)}
.ni .m{font-size:9.5px;color:var(--mut)}
.notif-foot{display:flex;align-items:center;gap:8px;padding:9px 15px;border-top:1px solid var(--bd2);background:var(--panel)}
.notif-foot .sp{flex:1}
.link{font:600 9.5px 'IBM Plex Sans';color:var(--pri)}

/* ===== setup + spec (right drawers) ===== */
.rdrawer{position:fixed;top:0;right:0;height:100vh;height:100dvh;width:min(400px,94vw);background:var(--surface);border-left:1px solid var(--bd);box-shadow:-14px 0 40px rgba(20,24,40,.16);transform:translateX(100%);transition:transform var(--mo);z-index:62;display:flex;flex-direction:column}
.rdrawer.on{transform:none}
.rd-head{display:flex;align-items:center;gap:9px;padding:14px 16px;border-bottom:1px solid var(--bd2)}
.rd-head b{font-size:13px;font-weight:600;color:var(--ink)}
.rd-head .sp{flex:1}
.rd-body{padding:14px 16px;overflow:auto;display:flex;flex-direction:column;gap:8px}
.su{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--bd);border-radius:9px;background:var(--panel)}
.su .ic{width:20px;height:20px;border-radius:6px;flex:none}
.su .ic.warn{background:var(--warn-bg);border:1px solid var(--warn-ln)}
.su .ic.info{background:var(--info-bg);border:1px solid var(--info-ln)}
.su .ic.neutral{background:#eef1f4;border:1px solid #e0e4e8}
.su .ic.ok{background:var(--ok-bg);border:1px solid var(--ok-ln)}
.su .b{flex:1}
.su .b .t{font-size:11.5px;font-weight:600;color:var(--ink)}
.su .b .s{font-size:9.5px;color:var(--mut)}
.spec-btn{position:fixed;bottom:18px;right:18px;z-index:48;display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border-radius:20px;background:var(--ink);color:#fff;font:600 11px 'IBM Plex Sans';box-shadow:0 6px 18px rgba(20,24,40,.24)}
.spec{width:min(420px,94vw)}
.spec-sec{margin-bottom:14px}
.spec-sec h4{margin:0 0 8px;font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.07em;text-transform:uppercase;color:var(--faint)}
.spec-row{font-size:10.5px;color:var(--ink2);line-height:1.5;padding:5px 0;border-bottom:1px solid var(--bd2);display:flex;gap:8px}
.spec-row b{color:var(--ink);font-weight:600;min-width:96px}
.lbl-chip{font:700 8px 'IBM Plex Mono',monospace;padding:3px 8px;border-radius:5px;display:inline-block;margin:0 4px 4px 0}
.lbl-chip.pri{color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln)}
.lbl-chip.amber{color:var(--amber);background:var(--amber-bg);border:1px solid var(--amber-ln)}
.lbl-chip.impl{color:var(--impl);background:var(--impl-bg);border:1px solid var(--impl-ln)}

/* ===== bottom nav (mobile) ===== */
.botnav{display:none}

/* ===== animations ===== */
@keyframes down{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* ===== density ===== */
[data-density="compact"]{--row-py:7px;--row-fs:11.5px}
[data-density="expanded"]{--row-py:16px;--row-fs:12.5px}

/* ===== responsive / narrow ===== */
@media (max-width:820px){
  .app{grid-template-columns:1fr}
  .nav{position:fixed;top:0;left:0;height:100vh;height:100dvh;width:272px;transform:translateX(-100%);transition:transform var(--mo);box-shadow:14px 0 40px rgba(20,24,40,.16)}
  .nav.on{transform:none}
  .hamburger{display:inline-flex}
  .tenant-chip span.tn{display:none}
  .search-btn{max-width:none}
  .search-btn .ph,.search-btn kbd{display:none}
  .role-chip,.setup-chip .setup-bar{display:none}
  .qhead{display:none}
  .qmain{grid-template-columns:24px 1fr auto;grid-template-areas:'c act next' 'c meta meta';row-gap:8px;align-items:start}
  .qmain .qcaret{grid-area:c;margin-top:2px}
  .qmain .qact{grid-area:act}
  .qmain .qcol{grid-area:meta;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .qmain .readiness{grid-area:meta;max-width:120px}
  .qmain .qowner{grid-area:meta}
  .qmain .qnext{grid-area:next}
  .qmain .readiness,.qmain .qowner{display:none}
  .qexp{padding-left:38px}
  .qexp-in{grid-template-columns:1fr 1fr}
  .drawer{width:100vw}
  .search{top:0;left:0;transform:translateY(-8px);width:100vw;max-width:100vw;border-radius:0;height:100vh;height:100dvh}
  .search.on{transform:none}
  .search-res{max-height:none;flex:1}
  .notif{top:52px;right:6px;left:6px;width:auto}
  .botnav{display:flex;position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--surface);border-top:1px solid var(--bd);z-index:46;align-items:stretch;padding:0 4px}
  .botnav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font:600 8px 'IBM Plex Sans';color:var(--mut)}
  .botnav button.active{color:var(--pri)}
  .queue-wrap{padding-bottom:66px}
  .spec-btn{bottom:66px}
}

/* ============================================================
   PHASE 27 — screens, tables, detail routes, planning, finance
   ============================================================ */

/* ---- screen router container ---- */
.screenwrap{flex:1;overflow:auto;min-height:0;background:var(--panel)}
.scr{padding:14px 16px 30px;animation:fade var(--mo) ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.scr-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:13px;flex-wrap:wrap}
.scr-head h1{margin:0;font:600 16px 'IBM Plex Sans';color:var(--ink);letter-spacing:-.01em}
.scr-head .sub{font:9.5px/1.45 'IBM Plex Mono',monospace;color:var(--faint);margin-top:3px}
.scr-head .sp{flex:1}
.scr-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.back-link{display:inline-flex;align-items:center;gap:6px;font:600 10px 'IBM Plex Sans';color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln);border-radius:7px;padding:5px 10px;margin-bottom:11px}
.ctx-banner{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:9px;font-size:10.5px;margin-bottom:13px;background:color-mix(in srgb,var(--pri) 5%,#fff);border:1px solid var(--pri-ln);color:var(--sub)}
.ctx-banner.warn{background:var(--warn-bg);border-color:var(--warn-ln);color:var(--warn)}
.ctx-banner.plum{background:var(--plum-bg);border-color:var(--plum-ln);color:var(--plum)}
.ctx-banner b{font-weight:600}

/* ---- KPI stat cards ---- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:15px}
.kpi{background:var(--surface);border:1px solid var(--bd);border-radius:11px;padding:12px 13px;text-align:left;transition:border-color var(--mo),box-shadow var(--mo);min-width:0}
.kpi[data-nav],.kpi[data-route]{cursor:pointer}
.kpi[data-nav]:hover,.kpi[data-route]:hover{border-color:var(--pri-ln);box-shadow:0 4px 14px rgba(58,75,176,.08)}
.kpi .k{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);display:flex;align-items:center;gap:6px}
.kpi .v{font:600 22px 'IBM Plex Sans';color:var(--ink);letter-spacing:-.02em;margin-top:7px;line-height:1}
.kpi .v small{font:500 11px 'IBM Plex Mono',monospace;color:var(--mut)}
.kpi .d{font-size:9.5px;color:var(--mut);margin-top:6px;display:flex;align-items:center;gap:5px}
.kpi .d.up{color:var(--ok)} .kpi .d.dn{color:var(--crit)} .kpi .d.wn{color:var(--warn)}

/* ---- generic data table ---- */
.dt{border:1px solid var(--bd);border-radius:10px;overflow:hidden;background:var(--surface)}
.dt-head{display:grid;gap:12px;align-items:center;padding:8px 13px;background:color-mix(in srgb,var(--pri) 3%,var(--panel));border-bottom:1px solid var(--bd)}
.dt-head span{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.dt-row{display:grid;gap:12px;align-items:center;padding:var(--row-py) 13px;border-bottom:1px solid var(--bd2);cursor:pointer;transition:background var(--mo)}
.dt-row:last-child{border-bottom:none}
.dt-row:hover{background:color-mix(in srgb,var(--pri) 3%,#fff)}
.dt-row.restricted{cursor:not-allowed;background:repeating-linear-gradient(135deg,#fafbfc,#fafbfc 8px,#f4f5f8 8px,#f4f5f8 16px)}
.dt-row.restricted:hover{background:repeating-linear-gradient(135deg,#f6f7fa,#f6f7fa 8px,#eef0f4 8px,#eef0f4 16px)}
.c-name{min-width:0}
.c-name .n1{display:flex;align-items:center;gap:7px}
.c-name .pnm{font-size:var(--row-fs);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-name .pmeta{font-size:9.5px;color:var(--mut);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-id{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--pri)}
.cell-lbl{display:none}
.tier{font:600 8px 'IBM Plex Mono',monospace;padding:2px 6px;border-radius:4px;letter-spacing:.03em}
.tier.gold{color:#8a6a12;background:#fbf3e6;border:1px solid #ecd9b4}
.tier.silver{color:#5c6270;background:#eef1f4;border:1px solid #dfe3ea}
.tier.bronze{color:#8a5a3a;background:#f7ede6;border:1px solid #e8d3c4}
.star{color:#c79a3a}
.money{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--ink)}
.money small{color:var(--mut)}
.roi{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:500}
.roi.ok{color:var(--ok)} .roi.warn{color:var(--warn)} .roi.crit{color:var(--crit)}
.next-act{font:600 10px 'IBM Plex Sans';color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln);padding:5px 9px;border-radius:6px;white-space:nowrap;justify-self:start;text-align:left}
.next-act.muted{color:var(--sub);background:var(--bd2);border-color:var(--bd)}

/* ---- meters ---- */
.meter{height:7px;border-radius:4px;background:#eef1f4;overflow:hidden;position:relative;border:1px solid #e4e7ee}
.meter i{display:block;height:100%;background:var(--pri);border-radius:4px}
.meter.ok i{background:var(--ok)} .meter.warn i{background:var(--warn)} .meter.crit i{background:var(--crit)}
.meter .over{position:absolute;top:0;right:0;height:100%;background:repeating-linear-gradient(135deg,var(--crit),var(--crit) 3px,#d66 3px,#d66 6px)}
.meterrow{display:flex;align-items:center;gap:9px}
.meterrow .mlab{font:600 9px 'IBM Plex Mono',monospace;color:var(--mut);white-space:nowrap}
.meterrow .meter{flex:1;min-width:60px}

/* ---- section grid / cards on screens ---- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}
.card{background:var(--surface);border:1px solid var(--bd);border-radius:11px;padding:13px 14px}
.card h3{margin:0 0 3px;font:600 12px 'IBM Plex Sans';color:var(--ink)}
.card .ch-sub{font:9px/1.4 'IBM Plex Mono',monospace;color:var(--faint);margin-bottom:10px}
.card-head{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.card-head h3{margin:0} .card-head .sp{flex:1}
.pool{padding:10px 0;border-bottom:1px solid var(--bd2)}
.pool:last-child{border-bottom:none}
.pool .pl1{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.pool .rgn{font-size:11.5px;font-weight:600;color:var(--ink)}
.pool .amt{margin-left:auto;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--sub)}
.blocklist{display:flex;flex-direction:column;gap:7px}
.blockrow{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--bd);border-radius:9px;background:var(--panel);cursor:pointer;transition:border-color var(--mo)}
.blockrow:hover{border-color:var(--pri-ln)}
.blockrow .bi{width:6px;height:6px;border-radius:50%;flex:none}
.blockrow .bt{font-size:11px;color:var(--ink2);font-weight:500;flex:1;min-width:0}
.blockrow .bc{font:600 8px 'IBM Plex Mono',monospace;color:var(--mut)}

/* ---- readiness micro-track with labels ---- */
.mtrack{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.mt{display:flex;align-items:center;gap:5px;font:600 9px 'IBM Plex Sans';color:var(--sub)}
.mt i{width:8px;height:8px;border-radius:2px;flex:none}
.mt i.ok{background:var(--ok)} .mt i.warn{background:var(--warn)} .mt i.crit{background:var(--crit)} .mt i.todo{background:#dfe3ea;border:1px solid #cfd4dd}

/* ---- partner detail route ---- */
.pd-top{background:var(--surface);border:1px solid var(--bd);border-radius:12px;padding:15px 16px;margin-bottom:13px}
.pd-top .r1{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pd-avatar{width:38px;height:38px;border-radius:9px;background:var(--plum-bg);border:1px solid var(--plum-ln);color:var(--plum);display:inline-flex;align-items:center;justify-content:center;font:600 13px 'IBM Plex Sans';flex:none}
.pd-name{font:700 17px 'IBM Plex Sans';color:var(--ink);letter-spacing:-.01em}
.pd-sub{font:9.5px/1.4 'IBM Plex Mono',monospace;color:var(--mut);margin-top:2px}
.pd-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-top:14px;padding-top:13px;border-top:1px solid var(--bd2)}
.pd-metric .k{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.pd-metric .v{font:600 15px 'IBM Plex Sans';color:var(--ink);margin-top:5px}
.pd-metric .v.mono{font-family:'IBM Plex Mono',monospace;font-size:13px}
.pd-cols{display:grid;grid-template-columns:1fr 328px;gap:13px;align-items:start}
.pd-main{display:flex;flex-direction:column;gap:11px;min-width:0}
.pd-side{display:flex;flex-direction:column;gap:11px}

/* ---- version rail (business plan) ---- */
.vrail{display:flex;flex-direction:column;gap:0}
.vrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--bd2)}
.vrow:last-child{border-bottom:none}
.vrow .vd{width:8px;height:8px;border-radius:50%;background:#cfd4dd;flex:none}
.vrow.cur .vd{background:var(--pri)}
.vrow .vv{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--ink);font-weight:500}
.vrow.cur .vv{color:var(--pri)}
.vrow .vm{font-size:9.5px;color:var(--mut);margin-left:auto}
.doc-preview{border:1px dashed var(--plum-ln);border-radius:10px;background:#faf8fd;padding:16px;text-align:center}
.doc-preview .dp-ic{width:34px;height:44px;border:2px solid var(--plum-ln);border-radius:4px;margin:0 auto 9px;position:relative;background:#fff}
.doc-preview .dp-ic::after{content:'';position:absolute;top:0;right:0;width:11px;height:11px;background:var(--plum-bg);border-left:2px solid var(--plum-ln);border-bottom:2px solid var(--plum-ln)}
.doc-preview p{margin:0;font-size:10.5px;color:var(--sub);line-height:1.5}

/* ---- finance PO track ---- */
.potrack{display:flex;flex-direction:column;gap:0}
.postep{display:flex;align-items:flex-start;gap:11px;padding:10px 0;position:relative}
.postep:not(:last-child)::before{content:'';position:absolute;left:8px;top:24px;bottom:-4px;width:2px;background:var(--bd)}
.postep .pnode{width:18px;height:18px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font:700 9px 'IBM Plex Mono',monospace;z-index:1}
.pnode.done{background:var(--ok-bg);border:1.5px solid var(--ok);color:var(--ok)}
.pnode.active{background:var(--info-bg);border:1.5px solid var(--info);color:var(--info)}
.pnode.blocked{background:var(--crit-bg);border:1.5px solid var(--crit);color:var(--crit)}
.pnode.todo{background:#f0f2f5;border:1.5px solid #d7dae2;color:var(--faint)}
.postep .pb{flex:1;min-width:0}
.postep .pt{font-size:11.5px;font-weight:600;color:var(--ink)}
.postep .ps{font-size:9.5px;color:var(--mut);margin-top:2px;line-height:1.5}

/* ---- request intake form (in drawer) ---- */
.intake-body{flex:1;overflow:auto;padding:14px 18px;display:flex;flex-direction:column;gap:13px}
.fld{display:flex;flex-direction:column;gap:5px}
.fld label{font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);display:flex;align-items:center;gap:6px}
.fld .rq{color:var(--crit)}
.inp{border:1px solid var(--bd);border-radius:8px;background:var(--panel);padding:8px 10px;font:400 11.5px 'IBM Plex Sans';color:var(--ink);width:100%}
.inp:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 2px var(--pri-bg)}
.inp.err{border-color:var(--crit);background:var(--crit-bg)}
.fld-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg{display:inline-flex;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:var(--surface)}
.seg button{padding:7px 12px;font:600 10px 'IBM Plex Sans';color:var(--sub);border-right:1px solid var(--bd2)}
.seg button:last-child{border-right:none}
.seg button.on{background:var(--pri-bg);color:var(--pri)}
.intake-act{border:1px solid var(--bd);border-radius:10px;overflow:hidden}
.intake-act .ia-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--panel);border-bottom:1px solid var(--bd2)}
.intake-act .ia-head .ttl{font-size:11.5px;font-weight:600;color:var(--ink)}
.intake-act .ia-head .sp{flex:1}
.intake-act .ia-body{padding:11px 12px;display:flex;flex-direction:column;gap:11px}
.valrow{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:8px;font-size:10.5px}
.valrow.err{background:var(--crit-bg);border:1px solid var(--crit-ln);color:#8a3a33}
.valrow.warn{background:var(--warn-bg);border:1px solid var(--warn-ln);color:var(--warn)}
.valrow.ok{background:var(--ok-bg);border:1px solid var(--ok-ln);color:var(--ok)}
.valrow i{width:6px;height:6px;border-radius:50%;flex:none;background:currentColor}
.valrow .vw{margin-left:auto;font:600 8px 'IBM Plex Mono',monospace;opacity:.8}

/* ---- state panels: empty / loading / restricted ---- */
.statepanel{border:1px dashed var(--bd);border-radius:12px;background:var(--surface);padding:34px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.statepanel .sp-ic{width:42px;height:42px;border-radius:11px;background:var(--panel);border:1px solid var(--bd);display:inline-flex;align-items:center;justify-content:center;color:var(--mut)}
.statepanel .sp-t{font:600 13px 'IBM Plex Sans';color:var(--ink2)}
.statepanel .sp-m{font-size:11px;color:var(--mut);max-width:400px;line-height:1.55}
.statepanel.restricted{border-color:var(--impl-ln);background:var(--impl-bg)}
.statepanel.restricted .sp-ic{border-color:var(--impl-ln);color:var(--impl)}
.skel{background:linear-gradient(90deg,#eef0f4 25%,#f6f7fa 50%,#eef0f4 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:6px}
@keyframes shimmer{to{background-position:-200% 0}}
[data-reduced] .skel{animation:none;background:#eef0f4}
.skel-row{height:44px;margin-bottom:1px;border-radius:0}

/* ---- global search: demonstrable loading + no-results ---- */
.search-skel{padding:12px 10px;display:flex;flex-direction:column;gap:9px}
.search-skel .sk-grp{height:10px;width:84px;border-radius:4px}
.search-skel .sk-line{height:34px;border-radius:8px}
.search-empty{margin:14px 10px;padding:26px 22px}
.search-empty .sp-t{font-size:12.5px}
.search-empty .sp-m{font-size:10.5px;max-width:440px}

/* ---- misc reused helpers ---- */
.pill{font:600 9px 'IBM Plex Sans';padding:3px 8px;border-radius:20px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;border:1px solid var(--bd);color:var(--sub);background:var(--surface)}
.subtabs{display:inline-flex;gap:3px;background:var(--bd2);border:1px solid var(--bd);border-radius:9px;padding:3px}
.subtabs button{padding:5px 11px;font:600 10px 'IBM Plex Sans';color:var(--sub);border-radius:6px}
.subtabs button.on{background:var(--surface);color:var(--pri);box-shadow:0 1px 3px rgba(20,24,40,.08)}
.legend{display:flex;gap:10px;flex-wrap:wrap;font:9px 'IBM Plex Mono',monospace;color:var(--mut);margin-top:9px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:8px;height:8px;border-radius:2px}
.notewrap{background:var(--panel);border:1px solid var(--bd);border-radius:9px;padding:10px 12px;font-size:10.5px;color:var(--sub);line-height:1.6}
.notewrap b{color:var(--ink2)}

/* disabled decision buttons (scenario-invalid modals) */
.btn[disabled]{opacity:.42;cursor:not-allowed;filter:grayscale(.35)}
.btn[disabled]:hover{filter:grayscale(.35)}
/* drawer action hint above the decision bar */
.dw-hint{flex:none;padding:9px 18px;border-top:1px solid var(--bd2);background:var(--panel);font-size:9.5px;color:var(--mut);line-height:1.5;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dw-hint .tag{flex:none}
/* finance row focus flash (search / notification deep-link) */
.flash{animation:flash 1.6s ease}
@keyframes flash{0%,55%{background:var(--pri-bg)}100%{background:transparent}}
[data-reduced] .flash{animation:none;box-shadow:inset 3px 0 0 var(--pri)}
/* toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,14px);background:var(--ink);color:#fff;font:600 11px 'IBM Plex Sans';padding:11px 16px;border-radius:9px;box-shadow:0 10px 30px rgba(20,24,40,.32);z-index:80;opacity:0;visibility:hidden;transition:opacity var(--mo),transform var(--mo);max-width:min(460px,90vw)}
.toast.on{opacity:1;visibility:visible;transform:translate(-50%,0)}
@media (max-width:820px){.toast{bottom:70px}}

/* ============================================================
   PHASE 27 — narrow / responsive additions
   ============================================================ */
@media (max-width:820px){
  .kpis{grid-template-columns:1fr 1fr}
  .grid2,.grid3{grid-template-columns:1fr}
  .pd-cols{grid-template-columns:1fr}
  .pd-metrics{grid-template-columns:1fr 1fr}
  .fld-row{grid-template-columns:1fr}
  /* collapse data tables into stacked cards */
  .dt-head{display:none}
  .dt-row{grid-template-columns:1fr auto !important;grid-auto-rows:min-content;row-gap:7px;padding:12px 13px}
  .dt-row>*{min-width:0}
  .dt-row>*:first-child{grid-column:1/2;grid-row:1}
  .dt-row .next-act{grid-column:2/3;grid-row:1;align-self:start;justify-self:end}
  .dt-row>*:not(:first-child):not(.next-act){grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:11px}
  .cell-lbl{display:inline;font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);min-width:74px}
  .screenwrap{padding-bottom:60px}
}

/* ============================================================
   PHASE 28 — execution/change, campaign/ROI, claims, portal, reports, admin
   ============================================================ */
.blocker-chip{font:600 8.5px 'IBM Plex Sans';color:var(--crit);background:var(--crit-bg);border:1px solid var(--crit-ln);padding:2px 6px;border-radius:5px;white-space:nowrap}
.pathchip{font:700 8px 'IBM Plex Mono',monospace;padding:2px 6px;border-radius:4px;white-space:nowrap}
.pathchip.hot{color:#8a5510;background:#fbf3e6;border:1px solid #ecd9b4}
.pathchip.hmf{color:var(--sec);background:var(--sec-bg);border:1px solid var(--sec-ln)}
.prov-chip{font:600 8px 'IBM Plex Mono',monospace;padding:2px 6px;border-radius:4px;white-space:nowrap;display:inline-block}
.prov-chip.ok{color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-ln)}
.prov-chip.warn{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-ln)}
.prov-chip.info{color:var(--info);background:var(--info-bg);border:1px solid var(--info-ln)}
.prov-chip.plum{color:var(--plum);background:var(--plum-bg);border:1px solid var(--plum-ln)}
.prov-chip.amber{color:var(--amber);background:var(--amber-bg);border:1px solid var(--amber-ln)}
.prov-chip.neutral{color:var(--sub);background:var(--bd2);border:1px solid var(--bd)}
.roibar{height:6px;border-radius:3px;background:#eef1f4;border:1px solid #e4e7ee;overflow:hidden;margin-top:4px}
.roibar i{display:block;height:100%;border-radius:3px}
.roibar i.ok{background:var(--ok)} .roibar i.warn{background:var(--warn)} .roibar i.crit{background:var(--crit)}
.evck{display:flex;gap:3px}
.evp{font:700 7.5px 'IBM Plex Mono',monospace;padding:2px 4px;border-radius:3px;letter-spacing:.02em}
.evp.ok{color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-ln)}
.evp.warn{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-ln)}
.evp.crit{color:var(--crit);background:var(--crit-bg);border:1px solid var(--crit-ln)}
.dt-row.warnrow{background:color-mix(in srgb,var(--warn) 5%,#fff)}
.dt-row.warnrow:hover{background:color-mix(in srgb,var(--warn) 9%,#fff)}
/* milestone strip (full-page activity) */
.mstrip{display:flex;align-items:flex-start;margin-top:14px;padding-top:13px;border-top:1px solid var(--bd2);overflow-x:auto}
.ms{display:flex;flex-direction:column;align-items:center;gap:5px;flex:none;min-width:62px}
.msn{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:700 9px 'IBM Plex Mono',monospace}
.ms.done .msn{background:var(--ok-bg);border:1.5px solid var(--ok);color:var(--ok)}
.ms.active .msn{background:var(--info-bg);border:1.5px solid var(--info);color:var(--info)}
.ms.blocked .msn{background:var(--crit-bg);border:1.5px solid var(--crit);color:var(--crit)}
.ms.todo .msn{background:#f0f2f5;border:1.5px solid #d7dae2;color:var(--faint)}
.msl{font:600 8.5px 'IBM Plex Sans';color:var(--sub);white-space:nowrap}
.ms.todo .msl{color:var(--faint)}
.msln{flex:1;height:2px;background:var(--bd);min-width:14px;margin-top:10px}
/* change diff */
.diff{border:1px solid var(--bd);border-radius:9px;padding:11px 12px;background:var(--panel)}
.diff-h{font-size:10.5px;color:var(--sub);margin-bottom:9px}
.diff-h b{color:var(--ink)}
.diff-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.was{font:500 12px 'IBM Plex Mono',monospace;color:var(--mut);text-decoration:line-through;background:var(--crit-bg);border:1px solid var(--crit-ln);padding:3px 9px;border-radius:6px}
.arw{color:var(--faint)}
.now{font:600 12px 'IBM Plex Mono',monospace;color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-ln);padding:3px 9px;border-radius:6px}
.now-inp{font:600 12px 'IBM Plex Mono',monospace;color:var(--ok);width:auto}
/* admin governance guard chips */
.guard-chip{font:600 8.5px 'IBM Plex Sans';padding:2px 7px;border-radius:5px;white-space:nowrap}
.guard-chip.packet{color:var(--crit);background:var(--crit-bg);border:1px solid var(--crit-ln)}
.guard-chip.runbook{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-ln)}
.guard-chip.inline{color:var(--info);background:var(--info-bg);border:1px solid var(--info-ln)}
.guard-chip.request{color:var(--sub);background:var(--bd2);border:1px solid var(--bd)}
/* ---- Partner Portal (isolated shell) ---- */
.portal{max-width:940px;margin:14px auto 0;background:var(--surface);border:1px solid var(--sec-ln);border-radius:14px;overflow:hidden;box-shadow:0 10px 34px rgba(14,118,129,.09)}
.portal-top{display:flex;align-items:center;gap:11px;padding:13px 16px;background:linear-gradient(0deg,color-mix(in srgb,var(--sec) 5%,#fff),#fff);border-bottom:1px solid var(--sec-ln)}
.ptop-brand{display:flex;align-items:center;gap:10px}
.ptop-mark{width:30px;height:30px;border-radius:8px;background:var(--sec);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 11px 'IBM Plex Mono',monospace;flex:none}
.ptop-brand b{font-size:13px;color:var(--ink);display:block;line-height:1.15}
.ptop-brand small{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--sec)}
.ptop-user{display:inline-flex;align-items:center;gap:7px;font:600 10.5px 'IBM Plex Sans';color:var(--sub)}
.ptop-ava{width:24px;height:24px;border-radius:50%;background:var(--sec-bg);border:1px solid var(--sec-ln);color:var(--sec);display:inline-flex;align-items:center;justify-content:center;font:600 9px 'IBM Plex Mono',monospace}
.portal-banner{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--sec-bg);border-bottom:1px solid var(--sec-ln);font-size:10.5px;color:var(--sec)}
.portal-banner b{font-weight:700}
.portal-tabs{display:flex;gap:2px;padding:9px 12px 0;border-bottom:1px solid var(--bd2);overflow-x:auto}
.portal-tabs button{padding:8px 13px;font:600 10.5px 'IBM Plex Sans';color:var(--sub);border-bottom:2px solid transparent;white-space:nowrap}
.portal-tabs button.on{color:var(--sec);border-bottom-color:var(--sec)}
.portal-body{padding:15px 16px}
.pcard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-bottom:13px}
.pcard{background:var(--panel);border:1px solid var(--bd);border-radius:11px;padding:13px 14px}
.pc-k{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.pc-v{font:600 22px 'IBM Plex Sans';color:var(--ink);margin-top:6px;line-height:1}
.pc-d{font-size:9.5px;color:var(--mut);margin-top:5px}
.pc-head{font:600 12px 'IBM Plex Sans';color:var(--ink);margin-bottom:9px}
.pline{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--bd2);font-size:11.5px;color:var(--ink2)}
.pline:last-child{border-bottom:none}
.pdot{width:8px;height:8px;border-radius:50%;background:#d7dae6;flex:none}
.pdot.ok{background:var(--ok)} .pdot.info{background:var(--info)} .pdot.warn{background:var(--warn)}
.sp2{flex:1}
.pstat{font:600 9.5px 'IBM Plex Sans';padding:3px 9px;border-radius:6px;border:1px solid var(--bd)}
.pstat.ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-ln)}
.pstat.info{color:var(--info);background:var(--info-bg);border-color:var(--info-ln)}
.pstat.warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-ln)}
.pnote{font:9.5px/1.5 'IBM Plex Mono',monospace;color:var(--faint);margin-top:9px}
.portal-boundary{margin:0 16px 13px;padding:11px 13px;background:var(--impl-bg);border:1px solid var(--impl-ln);border-radius:10px;font-size:10.5px;color:var(--impl);line-height:1.55}
.portal-boundary b{font-weight:700}
.portal-access{margin:0 16px 16px;padding:12px 14px;border:1px dashed var(--bd);border-radius:10px}
.portal-access>b{font-size:10.5px;color:var(--ink2);display:block;margin-bottom:8px}
.pa-row{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--sub);padding:4px 0}
.pa-dot{width:7px;height:7px;border-radius:50%;flex:none}
.pa-dot.warn{background:var(--warn)} .pa-dot.info{background:var(--info)} .pa-dot.neutral{background:#cfd4dd}
@media (max-width:820px){
  .pcard-grid{grid-template-columns:1fr}
  .portal{margin-top:6px}
  .mstrip{gap:0}
}

/* ===== Phase 31 — auth + partner session layer ===== */
#layer{position:fixed;inset:0;z-index:60;background:var(--bg);overflow:auto;display:none}
#layer.on{display:block}
#layer .link{color:var(--pri);background:none;border:none;font:inherit;cursor:pointer;text-decoration:underline;padding:0}
#layer .fld label{display:block;font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}
.psr{display:flex;align-items:center;gap:10px;padding:9px;border-radius:8px;cursor:pointer}
.psr:hover{background:var(--pri-bg)}
.pdot.ok{background:var(--ok)} .pdot.info{background:var(--info)} .pdot.warn{background:var(--warn)} .pdot.crit{background:var(--crit)}
.pa-dot.ok{background:var(--ok)}

/* ============================================================
   PHASE 33 — demo chooser, onboarding, deployment mode, host shell
   ============================================================ */
/* onboarding step rows (pending -> ready) */
.ob-step{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--bd);border-radius:10px;background:var(--surface);width:100%;text-align:left;cursor:pointer;transition:border-color var(--mo),background var(--mo)}
.ob-step:hover{border-color:var(--pri-ln)}
.ob-step.ready{background:color-mix(in srgb,var(--ok) 5%,#fff);border-color:var(--ok-ln)}
.ob-step .ob-ic{width:22px;height:22px;border-radius:6px;flex:none;display:inline-flex;align-items:center;justify-content:center;font:700 11px 'IBM Plex Mono',monospace}
.ob-step.pending .ob-ic{background:#f0f2f5;border:1px solid #d7dae2;color:var(--faint)}
.ob-step.ready .ob-ic{background:var(--ok);border:1px solid var(--ok);color:#fff}
.ob-step .ob-b{flex:1;min-width:0}
.ob-step .ob-t{font-size:12px;font-weight:600;color:var(--ink)}
.ob-step .ob-s{font-size:10px;color:var(--mut);margin-top:2px}
.ob-state{font:600 8px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:12px;flex:none}
.ob-state.pending{color:var(--faint);background:#f0f2f5;border:1px solid #d7dae2}
.ob-state.ready{color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-ln)}
.ob-state.open{color:var(--pri);background:var(--pri-bg);border:1px solid var(--pri-ln)}
.ob-progress{display:flex;align-items:center;gap:10px;margin:12px 0 7px}
.ob-progress .ob-bar{flex:1;height:6px;border-radius:4px;background:#e4e7ee;overflow:hidden}
.ob-progress .ob-bar i{display:block;height:100%;background:var(--ok);transition:width var(--mo)}
.ob-progress span{font:600 9px 'IBM Plex Mono',monospace;color:var(--sub);white-space:nowrap}
.ob-list{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.ob-wrap{border:1px solid transparent;border-radius:12px}
.ob-wrap.open{border-color:var(--pri-ln);background:linear-gradient(180deg,var(--pri-bg),#fff);box-shadow:0 10px 28px rgba(58,75,176,.08)}
.ob-wrap.open .ob-step{border-color:transparent;background:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}
.ob-form{padding:0 13px 13px 46px}
.ob-form-head{display:flex;align-items:flex-start;gap:12px;padding:5px 0 11px;border-top:1px solid rgba(58,75,176,.10)}
.ob-form-head b{display:block;font-size:12px;color:var(--ink);font-weight:600;margin-bottom:3px}
.ob-form-head p{margin:0;font-size:10.5px;line-height:1.5;color:var(--sub)}
.setup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px;margin-bottom:10px}
.setup-field{display:block;border:1px solid var(--bd);border-radius:9px;background:var(--surface);padding:8px 10px}
.setup-field span{display:block;font:700 7.5px 'IBM Plex Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}
.setup-field input{width:100%;border:0;background:transparent;padding:0;font:600 12px 'IBM Plex Sans';color:var(--ink);outline:none}
.ob-form-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
.ob-form-actions span{font-size:10px;color:var(--mut)}
.ob-form-note{margin-top:10px;padding:9px 10px;border:1px dashed var(--impl-ln);border-radius:8px;background:var(--impl-bg);font-size:10px;color:var(--impl);line-height:1.45}
/* deployment-mode switch */
.mode-switch{display:inline-flex;border:1px solid var(--bd);border-radius:9px;overflow:hidden;background:var(--surface);flex:none}
.mode-switch button{padding:8px 13px;font:600 11px 'IBM Plex Sans';color:var(--sub);border-right:1px solid var(--bd2);display:flex;align-items:center;gap:7px;white-space:nowrap}
.mode-switch button:last-child{border-right:none}
.mode-switch button.on{background:var(--pri-bg);color:var(--pri)}
.mode-switch .ms-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
/* demo route-map cards */
.demo-card{display:flex;flex-direction:column;gap:12px;padding:20px;border:1px solid var(--bd);border-radius:14px;background:var(--surface);text-decoration:none;color:inherit;transition:border-color var(--mo),box-shadow var(--mo)}
.demo-card:hover{border-color:var(--pri-ln);box-shadow:0 10px 28px rgba(58,75,176,.10)}
.demo-flow{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.demo-flow .fz{padding:3px 7px;border-radius:5px;background:var(--panel);border:1px solid var(--bd);color:var(--sub);font:600 8px 'IBM Plex Mono',monospace}
.demo-flow .fa{color:var(--faint);font-size:9px}
/* host shell (embedded, neutral / host-owned chrome) */
.hostshell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:#eceef2}
.host-top{flex:none;display:flex;align-items:center;gap:12px;padding:0 18px;height:56px;background:#1f2637;color:#e7e9f0}
.host-brand{display:flex;align-items:center;gap:10px;flex:none}
.host-mark{width:30px;height:30px;border-radius:7px;background:#334063;display:inline-flex;align-items:center;justify-content:center;flex:none}
.host-brand b{font-size:13px;color:#fff;font-weight:600;display:block;line-height:1.1}
.host-brand small{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.05em;text-transform:uppercase;color:#9aa3bd}
.host-search{flex:1;max-width:360px;min-width:0;height:34px;border-radius:8px;background:#2a3247;border:1px solid #3a4361;color:#9aa3bd;display:flex;align-items:center;gap:8px;padding:0 12px;font-size:11.5px;overflow:hidden}
.host-search span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.host-ic{width:34px;height:34px;border-radius:8px;background:#2a3247;border:1px solid #3a4361;color:#c3c9dc;display:inline-flex;align-items:center;justify-content:center;position:relative;flex:none}
.host-user{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;color:#c3c9dc;flex:none}
.host-ava{width:26px;height:26px;border-radius:50%;background:#3a4361;color:#dfe3ea;display:inline-flex;align-items:center;justify-content:center;font:600 9px 'IBM Plex Mono',monospace;flex:none}
.host-tag{font:600 7.5px 'IBM Plex Mono',monospace;letter-spacing:.04em;text-transform:uppercase;color:#9aa3bd;background:#2a3247;border:1px solid #3a4361;padding:3px 8px;border-radius:6px;flex:none}
/* breadcrumb + ownership banner */
.host-crumb{flex:none;display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--surface);border-bottom:1px solid var(--bd);font-size:11px;color:var(--mut);flex-wrap:wrap}
.host-crumb .cz{color:var(--sub)}
.host-crumb .cz.here{color:var(--pri);font-weight:600}
.host-crumb .sep{color:var(--faint)}
.host-crumb .sp{flex:1}
.own-banner{flex:none;display:flex;align-items:center;gap:8px;padding:8px 18px;background:var(--pri-bg);border-bottom:1px solid var(--pri-ln);font-size:10.5px;color:var(--pri)}
.own-banner.host{background:#eef1f6;border-color:#d9dee8;color:var(--sub)}
.own-banner b{font-weight:700;color:inherit}
/* adjacent domain tiles */
.host-domains{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.host-domain{display:flex;gap:12px;align-items:flex-start;padding:16px;border:1px solid var(--bd);border-radius:12px;background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--mo),box-shadow var(--mo)}
.host-domain:hover{border-color:var(--pri-ln);box-shadow:0 6px 18px rgba(20,24,40,.06)}
.host-domain.mdf{border-color:var(--sec-ln);background:linear-gradient(0deg,var(--sec-bg),#fff)}
.host-domain .hd-ic{width:34px;height:34px;border-radius:9px;flex:none;display:inline-flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--bd);color:var(--sub)}
.host-domain.mdf .hd-ic{background:var(--sec);border-color:var(--sec);color:#fff}
.host-domain .hd-t{font:600 13px 'IBM Plex Sans';color:var(--ink)}
.host-domain .hd-s{font-size:10.5px;color:var(--sub);margin-top:3px;line-height:1.45}
.host-domain .hd-own{margin-top:8px;font:600 7.5px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}
.host-domain.mdf .hd-own{color:var(--sec)}
/* Meridian module frame inside host */
.mdf-frame{background:var(--surface);border:1px solid var(--sec-ln);border-radius:14px;overflow:hidden;box-shadow:0 10px 30px rgba(14,118,129,.08)}
.mdf-frame-top{display:flex;align-items:center;gap:10px;padding:12px 15px;background:linear-gradient(0deg,var(--sec-bg),#fff);border-bottom:1px solid var(--sec-ln);flex-wrap:wrap}
/* sourced-by-MDF callout */
.sourced{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px dashed var(--sec-ln);border-radius:10px;background:var(--sec-bg);font-size:10.5px;color:var(--sec);margin-bottom:14px;flex-wrap:wrap}
.sourced b{font-weight:700}
.sourced .link{color:var(--sec)}
@media (max-width:820px){
  .ob-form{padding:0 10px 12px 10px}
  .ob-form-head{flex-direction:column}
  .setup-grid{grid-template-columns:1fr}
  .host-search{display:none}
  .host-top{padding:0 12px;gap:8px}
  .host-tag,.host-user .pt-user{display:none}
  .host-domains{grid-template-columns:1fr}
}

/* ============================================================
   Phase 34 — guided organization demo (v8)
   ============================================================ */
.gdock{position:fixed;left:16px;bottom:16px;z-index:62;display:flex;align-items:center;gap:9px;padding:8px 9px 8px 13px;background:var(--ink);color:#fff;border-radius:13px;box-shadow:0 14px 40px rgba(20,24,40,.36)}
.gdock .gd-dot{width:8px;height:8px;border-radius:50%;background:#5be0a0;flex:none;box-shadow:0 0 0 3px rgba(91,224,160,.22)}
.gdock .gd-lab{font:700 8px 'IBM Plex Mono',monospace;letter-spacing:.09em;text-transform:uppercase;color:#aeb6d8;flex:none}
.gdock .gd-ch{font:600 11.5px 'IBM Plex Sans';color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}
.gdock .gd-sp{width:1px;height:22px;background:rgba(255,255,255,.16);flex:none}
.gdock button{font:600 10px 'IBM Plex Sans';border-radius:8px;padding:6px 9px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#e7e9f5;display:inline-flex;align-items:center;gap:5px;cursor:pointer;white-space:nowrap}
.gdock button:hover{background:rgba(255,255,255,.15)}
.gdock button.gd-go{background:#fff;color:var(--ink);border-color:#fff}
.gdock .gd-chip .k{color:#8f98c2;font:700 7.5px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.05em;margin-right:4px}
@media (max-width:820px){.gdock{left:6px;right:6px;bottom:62px;flex-wrap:wrap;gap:7px}.gdock .gd-ch{max-width:none;flex:1 1 100%;order:-1}}

.gh-grid{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
.gh-rail{display:flex;flex-direction:column;gap:3px;position:sticky;top:14px;max-height:calc(100vh - 40px);overflow:auto;padding:7px;background:rgba(255,255,255,.6);border:1px solid var(--bd);border-radius:14px}
.gh-chap{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border:1px solid transparent;border-radius:9px;cursor:pointer;text-align:left;width:100%;background:none}
.gh-chap:hover{background:var(--pri-bg)}
.gh-chap.on{background:var(--surface);border-color:var(--pri-ln);box-shadow:0 2px 10px rgba(58,75,176,.10)}
.gh-chap .gc-n{width:27px;height:22px;border-radius:6px;flex:none;display:inline-flex;align-items:center;justify-content:center;font:700 10px 'IBM Plex Mono',monospace;background:#eef0f5;border:1px solid var(--bd);color:var(--sub);margin-top:1px}
.gh-chap.on .gc-n{background:var(--pri);border-color:var(--pri);color:#fff}
.gh-chap.done .gc-n{background:var(--ok-bg);border-color:var(--ok-ln);color:var(--ok)}
.gh-chap .gc-t{font-size:11.5px;font-weight:600;color:var(--ink);line-height:1.25}
.gh-chap .gc-s{font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.03em;text-transform:uppercase;color:var(--faint);margin-top:2px}
.gj-grid{display:flex;flex-wrap:wrap;gap:8px}
.gpanel{border-radius:11px;padding:12px 14px;font-size:11.5px;line-height:1.55}
.gpanel .gp-h{font:700 8px 'IBM Plex Mono',monospace;letter-spacing:.08em;text-transform:uppercase;margin-bottom:5px;display:flex;align-items:center;gap:6px}
.gsum{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.gsum .gs{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:9px;background:var(--surface);border:1px solid var(--bd);font-size:11px;color:var(--sub)}
.gsum .gs b{font:700 13px 'IBM Plex Sans';color:var(--ink)}
.gsum .gs.on{background:var(--ok-bg);border-color:var(--ok-ln);color:var(--ok)}
.gsum .gs.on b{color:var(--ok)}
@media (max-width:860px){.gh-grid{grid-template-columns:1fr}.gh-rail{position:static;max-height:none}}
