/* Website Factory: the VA platform. One status language (color + shape), light and dark, Geist type. */
@font-face{font-family:"Geist";src:url(/va/geist.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(/va/geist-mono.woff2) format("woff2");font-weight:100 900;font-display:swap}

:root{
  --page:#f7f8f6;--bg:#f3f4f1;--surface:#ffffff;--sunk:#ebede8;--side:#eef0eb;--hover:#e7eae4;
  --ink:#121714;--ink2:#48524c;--ink3:#7a847e;--line:#e0e3dd;--line2:#c9cec7;
  --brand:#1f5f4a;--brand-ink:#ffffff;--brand-soft:color-mix(in srgb,var(--brand) 10%,transparent);
  --scrim:rgba(18,23,20,.34);--shadow:0 1px 2px rgba(18,23,20,.06),0 8px 28px rgba(18,23,20,.08);--shadow-lg:0 24px 80px rgba(18,23,20,.22);
  --st-build:#64748b;--st-review:#4353c9;--st-fix:#b45309;--st-ready:#0f766e;--st-launch:#7c3aed;--st-live:#15803d;--st-stop:#c0262d;
  --ok:var(--st-live);--warn:var(--st-fix);--bad:var(--st-stop);
  --ui:"Geist","Segoe UI",system-ui,-apple-system,sans-serif;--mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --radius:10px;--top:52px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --page:#0b0e0c;--bg:#101411;--surface:#161c18;--sunk:#0d110e;--side:#121713;--hover:#1c231e;
    --ink:#e5ebe7;--ink2:#a8b2ac;--ink3:#76817b;--line:#242c27;--line2:#343e38;
    --brand:#55b28f;--brand-ink:#07140e;--scrim:rgba(0,0,0,.55);--shadow:0 1px 2px rgba(0,0,0,.4),0 10px 32px rgba(0,0,0,.45);--shadow-lg:0 24px 80px rgba(0,0,0,.6);
    --st-build:#98a6b9;--st-review:#8d98f2;--st-fix:#eea54b;--st-ready:#4fc5b6;--st-launch:#b39cfa;--st-live:#5acb82;--st-stop:#f2777b;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --page:#0b0e0c;--bg:#101411;--surface:#161c18;--sunk:#0d110e;--side:#121713;--hover:#1c231e;
  --ink:#e5ebe7;--ink2:#a8b2ac;--ink3:#76817b;--line:#242c27;--line2:#343e38;
  --brand:#55b28f;--brand-ink:#07140e;--scrim:rgba(0,0,0,.55);--shadow:0 1px 2px rgba(0,0,0,.4),0 10px 32px rgba(0,0,0,.45);--shadow-lg:0 24px 80px rgba(0,0,0,.6);
  --st-build:#98a6b9;--st-review:#8d98f2;--st-fix:#eea54b;--st-ready:#4fc5b6;--st-launch:#b39cfa;--st-live:#5acb82;--st-stop:#f2777b;
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--ink);font:13.5px/1.45 var(--ui);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01" on}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{background:var(--surface);border:1px solid var(--line2);border-radius:8px;color:var(--ink)}
input:not([type=checkbox]):not([type=radio]),select{height:34px;padding:0 10px}
textarea{padding:8px 10px}
input::placeholder,textarea::placeholder{color:var(--ink3)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.hidden{display:none!important}
.grow{flex:1}
.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
h1,h2,h3{letter-spacing:-.015em;margin:0;line-height:1.2}
hr{border:0;border-top:1px solid var(--line);margin:6px 0}
.ic{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.note{color:var(--ink3);font-size:12.5px}
.hint{color:var(--ink3);font-size:12px;margin:2px 9px}
.err{color:var(--bad)}
.lede{color:var(--ink2);margin:0 0 6px;font-size:13.5px;line-height:1.5}
.pad{padding:12px 14px;margin:0}
ul.plain{margin:6px 0 0;padding-left:18px;color:var(--ink2)}

/* ---------------------------------------------------------------- shell */
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:12px 10px;gap:2px;min-width:0;overflow:auto;z-index:30}
.logo{display:flex;align-items:center;gap:9px;padding:4px 8px 12px;font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--ink)}
.logo:hover{text-decoration:none}
.mark{width:24px;height:24px;border-radius:7px;background:var(--brand);display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:5px;flex:none}
.mark span{background:var(--brand-ink);border-radius:1.5px;opacity:.9}.mark span:nth-child(4){opacity:.45}
.searchb{display:flex;align-items:center;gap:8px;height:32px;padding:0 9px;border-radius:8px;background:var(--surface);border:1px solid var(--line2);color:var(--ink3);margin-bottom:10px;cursor:pointer;text-align:left}
.searchb .lbl{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.searchb:hover{border-color:var(--ink3);color:var(--ink2)}
.navs{display:flex;flex-direction:column;gap:1px}
.navi{display:flex;align-items:center;gap:9px;height:31px;padding:0 9px;border-radius:7px;color:var(--ink2);font-weight:500;min-width:0}
.navi span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navi:hover{background:var(--hover);text-decoration:none;color:var(--ink)}
.navi.on{background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--line)}
.navi .ct{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--ink3);font-variant-numeric:tabular-nums}
.navi .ct.hot{color:var(--brand-ink);background:var(--brand);border-radius:5px;padding:0 5px;line-height:17px}
.navlabel{font-size:11px;color:var(--ink3);padding:14px 9px 4px;font-weight:500}
.side .grow{flex:1;min-height:10px}
.me{display:flex;align-items:center;gap:8px;padding:8px 4px 4px 6px;border-top:1px solid var(--line);margin-top:8px}
.me .who{display:grid;line-height:1.2;min-width:0;flex:1}.me .who b{font-weight:500;font-size:12.5px;overflow:hidden;text-overflow:ellipsis}.me small{color:var(--ink3);font-size:11px}
.mainw{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;height:var(--top);display:flex;align-items:center;gap:10px;padding:0 20px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.crumbs{display:flex;align-items:center;gap:7px;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden}
.crumbs a{color:var(--ink3)}.crumbs b{font-weight:500;overflow:hidden;text-overflow:ellipsis}.crumbs .sep{color:var(--line2)}
.menu-b{display:none}
.cmd-b{color:var(--ink3)}
#view{flex:1;min-width:0}
.scrim-nav{display:none}

/* running tray */
.tray-w{position:relative}
.tray-b{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 11px;white-space:nowrap;border-radius:999px;border:1px solid var(--line2);background:var(--surface);color:var(--ink2);font-weight:500;font-size:12.5px;cursor:pointer}
.tray-b .dot{width:7px;height:7px;border-radius:50%;background:var(--line2)}
.tray-b.busy{color:var(--ink);border-color:color-mix(in srgb,var(--brand) 40%,var(--line2))}
.tray-b .spin{color:var(--brand)}
.tray{position:absolute;right:0;top:38px;width:360px;max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);z-index:40}
.tray-h{display:flex;justify-content:space-between;align-items:baseline;padding:12px 14px 8px;border-bottom:1px solid var(--line)}.tray-h small{color:var(--ink3)}
.run{display:grid;gap:6px;padding:11px 14px;border-bottom:1px solid var(--line);color:var(--ink)}
.run:last-child{border-bottom:0}.run:hover{background:var(--bg);text-decoration:none}
.rt{display:flex;align-items:center;gap:8px;min-width:0}.rt b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rt .num{margin-left:auto;color:var(--ink3);font-size:11.5px}
.kind{font-size:10.5px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--ink3);border:1px solid var(--line2);border-radius:4px;padding:0 4px;flex:none}
.kind.rollout{color:var(--st-launch);border-color:color-mix(in srgb,var(--st-launch) 40%,transparent)}
.kind.build{color:var(--st-build)}.kind.launch{color:var(--st-live);border-color:color-mix(in srgb,var(--st-live) 40%,transparent)}

/* ---------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:8px;border:1px solid var(--line2);background:var(--surface);color:var(--ink);font-weight:500;font-size:13px;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .12s,border-color .12s}
.btn:hover{border-color:var(--ink3);text-decoration:none}
.btn.primary,.btn.pri{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.small,.btn.sm{height:28px;padding:0 10px;font-size:12.5px}
.btn.lg{height:38px;padding:0 16px;font-size:14px}
.btn.ghost{border-color:transparent;background:transparent;color:var(--ink2)}
.btn.ghost:hover{background:var(--hover);color:var(--ink)}
.btn.icon{width:32px;padding:0}.btn.small.icon{width:28px}
.btn.danger{color:var(--bad)}
.btn.dangerfill{background:var(--bad);border-color:var(--bad);color:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.btn .kbd{margin-left:2px}
.btn.primary .kbd{background:transparent;color:var(--brand-ink);border-color:color-mix(in srgb,var(--brand-ink) 40%,transparent)}
.link{background:none;border:0;padding:0;color:var(--brand);cursor:pointer;font-weight:500;font-size:inherit}
.link:hover{text-decoration:underline}
.kbd{font-family:var(--mono);font-size:10.5px;color:var(--ink3);border:1px solid var(--line2);border-bottom-width:2px;border-radius:4px;padding:0 4px;line-height:15px;background:var(--surface);white-space:nowrap}
.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ---------------------------------------------------------------- status: color + shape */
.st{--c:var(--ink3);display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px 0 7px;border-radius:6px;font-size:11.5px;font-weight:500;color:var(--c);background:color-mix(in srgb,var(--c) 11%,transparent);white-space:nowrap;vertical-align:middle}
.st::before{content:"";width:8px;height:8px;flex:none;border-radius:50%;background:var(--c)}
.st.build{--c:var(--st-build)}.st.build::before{background:transparent;border:1.5px dashed var(--c);width:9px;height:9px;animation:spin 3s linear infinite}
.st.review{--c:var(--st-review)}.st.review::before{background:transparent;border:1.8px solid var(--c)}
.st.fix{--c:var(--st-fix)}.st.fix::before{border-radius:0;clip-path:polygon(50% 0,100% 100%,0 100%);width:9px;height:9px}
.st.ready{--c:var(--st-ready)}.st.ready::before{box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 30%,transparent)}
.st.launch{--c:var(--st-launch)}.st.launch::before{background:linear-gradient(90deg,var(--c) 50%,transparent 50%);border:1.6px solid var(--c)}
.st.live{--c:var(--st-live)}
.st.stop{--c:var(--st-stop)}.st.stop::before{border-radius:2px}
.st.none{--c:var(--ink3);background:transparent;border:1px dashed var(--line2)}.st.none::before{display:none}
.st .need{font-size:inherit;font-weight:400;opacity:.85;margin-left:-2px}
.st.plain{background:transparent;padding:0;height:auto}
.dotonly{width:10px;height:10px;display:inline-block;flex:none}
.ctag{display:inline-flex;align-items:center;gap:6px;color:var(--ink2);font-weight:500;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.ctag:hover{color:var(--ink)}
.av{--h:150;width:26px;height:26px;border-radius:7px;display:inline-grid;place-items:center;flex:none;font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.02em;color:hsl(var(--h) 45% 28%);background:hsl(var(--h) 45% 88%)}
:root[data-theme="dark"] .av{color:hsl(var(--h) 60% 80%);background:hsl(var(--h) 30% 22%)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .av{color:hsl(var(--h) 60% 80%);background:hsl(var(--h) 30% 22%)}}
.av.sm{width:24px;height:24px;font-size:10px}.av.xs{width:18px;height:18px;border-radius:5px;font-size:8.5px}.av.lg{width:40px;height:40px;border-radius:10px;font-size:14px}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.spin{width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.progress{height:6px;background:var(--sunk);border-radius:999px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--brand);border-radius:999px;width:0;transition:width .4s}
.pipe{display:flex;height:8px;border-radius:999px;overflow:hidden;gap:2px;background:transparent;min-width:120px}
.pipe i{display:block;min-width:4px;border-radius:2px;background:var(--line2)}
.pipe i.live{background:var(--st-live)}.pipe i.launch{background:var(--st-launch)}.pipe i.ready{background:var(--st-ready)}.pipe i.review{background:var(--st-review)}
.pipe i.fix{background:var(--st-fix)}.pipe i.stop{background:var(--st-stop)}.pipe i.build{background:repeating-linear-gradient(45deg,var(--st-build) 0 3px,transparent 3px 6px);opacity:.7}.pipe i.empty{background:var(--sunk)}

/* ---------------------------------------------------------------- pages */
.page{max-width:1240px;margin:0 auto;padding:26px 28px 80px}
.page.wide{max-width:1440px}.page.narrow{max-width:880px}
.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.phead h1,.page h1{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0}
.phead .sub,.sub{color:var(--ink3);margin:4px 0 0;font-size:13.5px}
.page>.sub{margin-bottom:18px}
.bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.bar .grow{flex:1}
.search,input.search:not([type=checkbox]){height:32px;border:1px solid var(--line2);border-radius:8px;padding:0 10px 0 32px;min-width:240px;background:var(--surface) no-repeat 10px 50%/14px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a847e' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E")}
.filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.filters button{height:28px;padding:0 10px;border-radius:7px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:500;color:var(--ink2);font-size:12.5px;display:inline-flex;align-items:center;gap:6px}
.filters button:hover{border-color:var(--line2);color:var(--ink)}
.filters button.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.filters button .st{height:auto;padding:0;background:transparent}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden;background:var(--surface);padding:2px;gap:2px}
.seg button{border:0;background:none;height:26px;padding:0 10px;cursor:pointer;font-weight:500;color:var(--ink2);font-size:12.5px;border-radius:6px;display:inline-flex;align-items:center;gap:6px}
.seg button:hover{color:var(--ink);background:var(--hover)}
.seg button.on{background:var(--ink);color:var(--surface)}
.seg .n{font-family:var(--mono);font-size:11px;opacity:.7}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:18px 0 16px;overflow-x:auto}
.tabs a{padding:9px 12px 10px;color:var(--ink3);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.on{color:var(--ink);border-bottom-color:var(--ink)}
.tabs .n{font-family:var(--mono);font-size:11px;color:var(--ink3)}
.empty{border:1px dashed var(--line2);border-radius:var(--radius);padding:40px 24px;text-align:center;color:var(--ink3);background:var(--surface);display:grid;gap:6px;justify-items:center}
.empty b{color:var(--ink);font-weight:600;font-size:14px}.empty p{margin:0;max-width:440px}
.panel,.card2{background:var(--surface);border:1px solid var(--line);border-radius:12px}
.panel{padding:16px}
.panel h3{margin:0 0 4px;font-size:14px;font-weight:600}
.panel .note{margin:0 0 10px}
.panel textarea{width:100%;border-radius:8px;padding:8px 10px;min-height:70px;resize:vertical}
.ph-h{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}
.ph-h h3{font-size:13.5px;font-weight:600}.ph-h small{color:var(--ink3)}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.stack{display:grid;gap:14px;align-content:start}
.stages{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:18px}
.stage{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 13px;display:grid;gap:3px;color:var(--ink)}
.stage:hover{border-color:var(--line2);text-decoration:none}
.stage b{font-family:var(--mono);font-size:22px;font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stage .st{background:transparent;padding:0;height:auto;border:0}
.banner{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;border:1px solid color-mix(in srgb,var(--c,var(--st-fix)) 35%,var(--line));background:color-mix(in srgb,var(--c,var(--st-fix)) 7%,var(--surface));margin-bottom:14px}
.banner .t{flex:1;min-width:0}.banner b{font-weight:600}.banner p{margin:2px 0 0;color:var(--ink2);font-size:12.5px}
.banner.info{--c:var(--st-review)}.banner.ok{--c:var(--st-live)}.banner.bad{--c:var(--st-stop)}

/* ---------------------------------------------------------------- tables */
.tbl-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:auto}
.tbl,.stable{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.stable th{position:sticky;top:0;background:var(--surface);text-align:left;font-weight:500;color:var(--ink3);font-size:11.5px;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}
.tbl td,.stable td{padding:7px 12px;height:46px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td,.stable tbody tr:hover td{background:color-mix(in srgb,var(--ink) 2.5%,transparent)}
.tbl tr.sel td,.stable tr.sel td{background:color-mix(in srgb,var(--brand) 7%,transparent)}
.tbl tr.click{cursor:pointer}
.tbl td.muted,.stable td.muted{color:var(--ink3)}
.tbl .nm{font-weight:500;color:var(--ink)}
.tbl .dm{font-family:var(--mono);font-size:11px;color:var(--ink3)}
.tbl td.r,.tbl th.r{text-align:right}
.tbl input[type=checkbox],.stable input[type=checkbox]{width:15px;height:15px;accent-color:var(--brand)}
.siteid{display:flex;gap:10px;align-items:center;min-width:0}
.siteid>div{display:grid;min-width:0;line-height:1.25}
.siteid .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th{--h:200;display:grid;place-items:center;width:46px;height:31px;border-radius:5px;flex:none;overflow:hidden;border:1px solid var(--line);object-fit:cover;object-position:top;background:var(--sunk);font-style:normal;font-size:10px;font-weight:600;color:hsl(var(--h) 30% 45%)}
.th.ph{background:hsl(var(--h) 30% 92%)}
:root[data-theme="dark"] .th.ph{background:hsl(var(--h) 20% 18%);color:hsl(var(--h) 40% 70%)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .th.ph{background:hsl(var(--h) 20% 18%);color:hsl(var(--h) 40% 70%)}}
.check{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink2);white-space:nowrap}
.check .ic{width:14px;height:14px;stroke-width:2.2}
.tbl .mono{white-space:nowrap}
.why2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;color:var(--ink2);font-size:12.5px;max-width:280px}
body.focus .shell{grid-template-columns:1fr}body.focus .side{display:none}body.focus .menu-b{display:none}
.check.ok{color:var(--st-live)}.check.no{color:var(--st-stop)}.check.warn{color:var(--st-fix)}.check.unk{color:var(--ink3)}
.bulkbar{position:sticky;top:calc(var(--top) + 8px);z-index:6;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 10px 8px 14px;margin:0 0 10px;border:1px solid var(--line2);border-radius:10px;background:var(--surface);box-shadow:var(--shadow)}
.bulkbar b{font-weight:600;margin-right:4px}
.phone-in{height:30px;width:150px;border-radius:7px;padding:0 9px;font:inherit;font-family:var(--mono);font-size:12px}
.phone-in.missing{border-color:color-mix(in srgb,var(--st-fix) 50%,var(--line2));background:color-mix(in srgb,var(--st-fix) 6%,var(--surface))}
.phone-in.saved{border-color:var(--st-live);background:color-mix(in srgb,var(--st-live) 8%,var(--surface))}
.phone-cell{display:inline-flex;align-items:center;gap:6px}
.client-sel,.bar select{height:32px;border-radius:8px;padding:0 8px;max-width:240px}
.more-row{display:flex;justify-content:center;padding:10px}

/* ---------------------------------------------------------------- cards and grids */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,border-color .15s;display:flex;flex-direction:column;color:var(--ink)}
.card:hover{box-shadow:var(--shadow);border-color:var(--line2);text-decoration:none}
.thumb{aspect-ratio:1.47;background:var(--sunk);position:relative;overflow:hidden;display:grid;place-items:center;border-bottom:1px solid var(--line)}
.thumb img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.thumb .ph{--h:200;width:100%;height:100%;display:grid;place-items:center;font-size:26px;font-weight:600;color:hsl(var(--h) 25% 60%);background:hsl(var(--h) 25% 93%)}
.thumb .busy{position:absolute;inset:auto 8px 8px auto;background:color-mix(in srgb,var(--surface) 92%,transparent);border-radius:999px;padding:3px 9px;font-size:12px;font-weight:500;color:var(--ink2);display:flex;align-items:center;gap:6px}
.card .body{padding:11px 13px 13px;display:flex;flex-direction:column;gap:6px}
.card .name{font-weight:600;font-size:14px;line-height:1.25}
.card .meta{color:var(--ink3);font-size:12.5px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.card .why{color:var(--st-fix);font-size:12.5px;line-height:1.35}
.cname{color:var(--ink2);font-weight:500}

/* batches */
.blist{display:flex;flex-direction:column;gap:8px}
.brow{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1.2fr) auto;gap:20px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;color:var(--ink)}
.brow:hover{box-shadow:var(--shadow);text-decoration:none;border-color:var(--line2)}
.brow .t{font-weight:600;font-size:14px}
.brow .m{color:var(--ink3);font-size:12.5px;margin-top:3px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.counts,.ccounts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.ccounts a{text-decoration:none}
.minis{display:flex;gap:4px}
.minis img{width:56px;height:38px;object-fit:cover;object-position:top;border-radius:5px;border:1px solid var(--line)}
.bhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.bwrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.elog{display:flex;flex-direction:column;gap:6px;margin-top:12px;max-height:420px;overflow:auto}

/* ---------------------------------------------------------------- Today */
.hello{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.hello h1{font-size:24px}
.inbox{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.qrow{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px 12px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.qrow:hover{background:color-mix(in srgb,var(--ink) 2%,transparent)}
.qrow:last-child,.qgroup:last-child>.qrow:last-child{border-bottom:0}
.qrow .st.plain::before{width:10px;height:10px}
.qt{display:grid;gap:2px;min-width:0}
.qt b{font-weight:600;font-size:13.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.qt span{color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}
.qgroup.open>.qrow{background:color-mix(in srgb,var(--c,var(--ink)) 4%,transparent);border-bottom-color:transparent}
.qsub{padding:2px 16px 12px 46px;border-bottom:1px solid var(--line);display:grid;gap:4px;background:color-mix(in srgb,var(--c,var(--ink)) 4%,transparent)}
.qgroup:last-child .qsub{border-bottom:0}
.pr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:12px;align-items:center;min-height:32px}
.pr a{color:var(--ink);font-weight:500}
.pr .muted{color:var(--ink3);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr.more{display:block;color:var(--ink3);font-size:12.5px;padding-top:4px;min-height:0}
.done-l{display:flex;gap:8px;align-items:center;padding:9px 14px;border-bottom:1px solid var(--line);color:var(--ink2)}
.done-l:last-child{border-bottom:0}.done-l .ic{color:var(--st-live)}
.allclear{display:grid;justify-items:center;gap:8px;padding:48px 20px;text-align:center;color:var(--ink3)}
.allclear .ic{width:28px;height:28px;color:var(--st-live)}
.allclear b{color:var(--ink);font-size:15px}

/* ---------------------------------------------------------------- client workspace */
.chead{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap}
.chead .t{flex:1;min-width:240px}
.chead h1{font-size:22px}
.chead .m{color:var(--ink3);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.cmap{display:block;width:100%;height:auto;background:var(--bg);border-radius:10px}
.cmap text{font-family:var(--ui);font-size:10px;fill:var(--ink2)}
.cmap circle{stroke:var(--surface);stroke-width:1.5}
.act{display:grid;grid-template-columns:72px 1fr;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);color:var(--ink2);font-size:12.5px}
.act:last-child{border-bottom:0}.act small{color:var(--ink3)}.act a{color:var(--ink)}
.legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--ink3);font-size:11.5px;padding:8px 14px}
.legend span{display:inline-flex;align-items:center;gap:5px}

/* ---------------------------------------------------------------- sheets, dialogs, menus, toasts */
.scrim{position:fixed;inset:0;z-index:70;background:var(--scrim);opacity:0;transition:opacity .16s}
.scrim.in{opacity:1}.scrim.out{opacity:0}
.sheet{position:absolute;background:var(--surface);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);transition:transform .18s cubic-bezier(.2,.8,.2,1)}
.sheet.side{top:0;right:0;bottom:0;width:min(480px,100vw);border-left:1px solid var(--line);transform:translateX(24px)}
.scrim.in .sheet.side{transform:none}
.sheet.dialog,.sheet.modal{left:50%;top:10vh;transform:translate(-50%,8px);width:min(460px,calc(100vw - 32px));max-height:80vh;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sheet.modal{width:min(780px,calc(100vw - 32px));top:7vh;max-height:86vh}
.scrim.in .sheet.dialog,.scrim.in .sheet.modal{transform:translate(-50%,0)}
.sheet-h{padding:16px 16px 12px 20px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:10px}
.sheet-t{flex:1;min-width:0}.sheet-t h2{font-size:16px;font-weight:600}.sheet-t p{margin:3px 0 0;color:var(--ink3);font-size:12.5px}
.sheet-b{padding:14px 20px;display:grid;gap:12px;overflow:auto;flex:1;align-content:start}
.sheet-f{padding:12px 20px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;background:var(--bg);flex-wrap:wrap}
.sheet-f:empty{display:none}
.sheet.dialog .sheet-h{border-bottom:0;padding-bottom:0}.sheet.dialog .sheet-f{background:transparent;border-top:0;padding-top:4px}
.lab{font-size:11.5px;font-weight:500;color:var(--ink3);margin-bottom:-6px}
.field{display:grid;gap:5px;font-size:12.5px;font-weight:500;color:var(--ink2)}
.field input,.field textarea,.field select{font-weight:400;padding:7px 10px;font-size:13.5px}
.field textarea{resize:vertical;min-height:80px;line-height:1.45}
.opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--surface)}
.opt:hover{border-color:var(--line2)}
.opt.on{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.opt input{margin-top:2px;accent-color:var(--brand)}
.opt b{font-weight:500;display:block}.opt small{color:var(--ink3);display:block;font-size:12px}
.picklist{display:grid;gap:6px;max-height:300px;overflow:auto;padding:3px}
.picked{display:flex;align-items:center;gap:10px}
.pick{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;cursor:pointer;background:var(--surface);text-align:left;width:100%}
.pick:hover{border-color:var(--line2)}
.pick.on{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.pick .t{flex:1;min-width:0;display:grid;line-height:1.25}.pick .t b{font-weight:500}.pick .t small{color:var(--ink3);font-size:12px}
.diff{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.diff .dl{display:flex;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);font-size:12.5px}
.diff .dl:last-child{border-bottom:0}.diff .dl span:last-child{color:var(--ink3);font-family:var(--mono);font-size:11.5px;white-space:nowrap}
.callout{padding:10px 12px;border-radius:9px;background:var(--bg);color:var(--ink2);font-size:12.5px;line-height:1.45}
.callout.warn{background:color-mix(in srgb,var(--st-fix) 9%,var(--surface));color:var(--ink)}
.callout.ok{background:color-mix(in srgb,var(--st-live) 9%,var(--surface));color:var(--ink)}
.chk{display:inline-flex!important;align-items:center;gap:8px;font-weight:500!important;color:var(--ink)!important;cursor:pointer}
.chk input{accent-color:var(--brand);width:15px;height:15px}
.calllist li.robo{opacity:.55}
.calllist .more{grid-column:2/-1}.calllist .more:empty{display:none}
.calllist .transcript{white-space:pre-wrap;max-height:320px;overflow:auto;font-size:12px;margin:4px 0 0;padding:8px;background:var(--sunk);border-radius:6px}
.calllist .tag{margin:0 0 0 6px;background:var(--sunk);color:var(--ink2)}.calllist .tag.good{color:var(--st-live)}
.calllist button.link{display:block;margin-top:2px;font-size:12px}
.bgroup{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.bgroup+.bgroup{margin-top:8px}
.bg-h{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--bg);cursor:pointer}
.bg-h b{font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bg-h small{color:var(--ink3);white-space:nowrap}
.bg-s{display:grid}
.bg-s label{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 12px 6px 36px;border-top:1px solid var(--line);font-size:12.5px;cursor:pointer}
.bg-s label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menu{position:fixed;z-index:90;min-width:200px;max-width:320px;max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px}
.mi{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;padding:7px 9px;border-radius:7px;cursor:pointer;text-align:left;color:var(--ink);font-size:13px}
.mi:hover,.mi:focus{background:var(--hover);outline:0}.mi small{margin-left:auto;color:var(--ink3);font-size:11.5px}.mi.danger{color:var(--bad)}.mi:disabled{opacity:.45}
.toasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:95;display:grid;gap:8px;justify-items:center;pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;background:var(--ink);color:var(--surface);padding:8px 8px 8px 14px;border-radius:10px;font-weight:500;font-size:13px;box-shadow:var(--shadow-lg);max-width:min(560px,calc(100vw - 32px));animation:tin .18s ease-out}
.toast.out{opacity:0;transform:translateY(6px);transition:all .25s}
.toast.bad{background:var(--bad);color:#fff}
.toast .tact{border:0;background:color-mix(in srgb,var(--surface) 18%,transparent);color:inherit;border-radius:6px;padding:4px 9px;font-weight:600;cursor:pointer}
.toast .tx{border:0;background:none;color:inherit;opacity:.6;cursor:pointer;padding:4px;display:grid}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}

/* ---------------------------------------------------------------- command bar */
.palette .sheet.modal{width:min(640px,calc(100vw - 32px));top:12vh}
.palette .sheet-h{display:none}.palette .sheet-f{display:none}
.palette .sheet-b{padding:0;gap:0}
.pal-in{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--line)}
.pal-in input{flex:1;border:0;height:52px;font-size:16px;background:transparent;box-shadow:none!important}
.pal-in .ic{color:var(--ink3);width:18px;height:18px}
.pal-list{max-height:min(60vh,460px);overflow:auto;padding:6px}
.pal-sec{font-size:11px;color:var(--ink3);font-weight:500;padding:10px 10px 4px}
.pal-it{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--ink);min-height:38px}
.pal-it .t{flex:1;min-width:0;display:flex;gap:8px;align-items:baseline;overflow:hidden}
.pal-it .t b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pal-it .t small{color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pal-it.on{background:var(--hover)}
.pal-it .ic{color:var(--ink3)}
.pal-foot{display:flex;gap:14px;padding:9px 14px;border-top:1px solid var(--line);color:var(--ink3);font-size:11.5px;background:var(--bg)}

/* ---------------------------------------------------------------- rollouts */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:16px}
.step{padding:12px 14px;display:grid;gap:2px;border-right:1px solid var(--line);color:var(--ink3);position:relative}
.step:last-child{border-right:0}
.step b{font-weight:600;color:var(--ink3);display:flex;gap:7px;align-items:center}
.step b i{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;font-style:normal;font-size:10px;font-family:var(--mono)}
.step.done b{color:var(--ink)}.step.done b i{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.step.now{background:color-mix(in srgb,var(--brand) 5%,transparent)}.step.now b{color:var(--ink)}.step.now b i{border-color:var(--brand);color:var(--brand)}
.step small{font-size:12px}
.sample{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:16px}
.sample iframe{width:100%;height:420px;border:0;background:#fff;display:block}
.sample .sp{border-left:1px solid var(--line);padding:14px;display:grid;gap:10px;align-content:start}
.reply{padding:10px 12px;border-radius:9px;background:var(--bg);font-size:12.5px;color:var(--ink2);line-height:1.45}
.rstate{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;color:var(--ink2);white-space:nowrap}
.rstate.err{color:var(--bad)}

/* ---------------------------------------------------------------- review mode */
.reviewmode{display:grid;grid-template-columns:260px minmax(0,1fr) 340px;height:calc(100vh - var(--top))}
.rq{border-right:1px solid var(--line);background:var(--surface);overflow:auto;min-height:0}
.rq-h{position:sticky;top:0;background:var(--surface);padding:12px 14px;border-bottom:1px solid var(--line);display:grid;gap:8px;z-index:1}
.rq-h b{font-size:12.5px;white-space:nowrap}
.rq a{display:grid;grid-template-columns:14px minmax(0,1fr);gap:8px;padding:8px 14px;color:var(--ink);border-bottom:1px solid var(--line);font-size:12.5px;align-items:center}
.rq a:hover{background:var(--bg);text-decoration:none}
.rq a.on{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.rq a.done{color:var(--ink3)}
.rq a small{display:block;color:var(--ink3);font-size:11.5px}
.rq a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rstage{display:flex;flex-direction:column;min-width:0;min-height:0}
.rpanel{border-left:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;min-height:0;overflow:auto}
.rpanel .sec{padding:14px 16px;border-bottom:1px solid var(--line);display:grid;gap:10px}
.keys{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;font-size:12.5px;color:var(--ink2);align-items:center}
.bigact{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.bigact .btn{height:40px;justify-content:space-between}

/* ---------------------------------------------------------------- new batch */
.nb{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start}
.nbstep{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:12px;min-width:0}
.nbstep>*,.nb>*{min-width:0}
.nbstep h3{font-size:14px;display:flex;gap:8px;align-items:center}
.nbstep h3 i{width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--surface);display:grid;place-items:center;font-style:normal;font-size:11px;font-family:var(--mono)}
.row3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px}.row3.even{grid-template-columns:1fr 1fr}
.tradepage{display:grid;grid-template-columns:280px minmax(0,1fr);gap:18px;align-items:start}
.citylist .tbl td{height:38px}
.bar-pop{height:5px;background:var(--sunk);border-radius:99px;overflow:hidden;width:90px}.bar-pop i{display:block;height:100%;background:var(--st-review);border-radius:99px}

/* ---------------------------------------------------------------- performance */
.srcs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
.src{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;gap:6px}
.src.off{background:transparent;border-style:dashed}
.src b{font-weight:600;display:flex;gap:8px;align-items:center}
.src p{margin:0;color:var(--ink3);font-size:12.5px}
.big{font-family:var(--mono);font-size:24px;font-weight:500;letter-spacing:-.02em}

/* ---------------------------------------------------------------- build (Ask & orders) */
.buildpage{display:grid;grid-template-columns:250px 1fr;height:calc(100vh - var(--top))}
.chats{border-right:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;min-height:0}
.chats .head{padding:12px;border-bottom:1px solid var(--line)}
.chats .list{overflow:auto;padding:8px;flex:1}
.chats .list a{display:block;padding:8px 10px;border-radius:8px;color:var(--ink);font-size:13px;line-height:1.3;margin-bottom:2px}
.chats .list a:hover{background:var(--bg);text-decoration:none}
.chats .list a.on{background:var(--brand-soft);color:var(--ink);font-weight:500}
.chats .list small{display:block;color:var(--ink3);font-size:11.5px;font-weight:400;margin-top:2px}
.convo{display:flex;flex-direction:column;min-height:0;min-width:0}
.stream{flex:1;overflow:auto;padding:28px 32px 12px}
.stream .inner{max-width:960px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.msg{display:flex}
.msg.user{justify-content:flex-end}
.bubble{max-width:78%;padding:10px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);white-space:pre-wrap;word-wrap:break-word}
.msg.user .bubble{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);border-bottom-right-radius:4px}
.msg.assistant .bubble{border-bottom-left-radius:4px}
.bubble.wide{max-width:100%;width:100%;white-space:normal;padding:0;overflow:hidden}
.thinking{display:flex;gap:5px;padding:4px 2px}
.thinking i{width:7px;height:7px;border-radius:50%;background:var(--ink3);animation:blink 1.2s infinite}
.thinking i:nth-child(2){animation-delay:.2s}.thinking i:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
.sitechip{display:inline-flex;align-items:center;padding:0 8px;height:22px;border-radius:6px;background:color-mix(in srgb,var(--st-review) 12%,transparent);color:var(--st-review);font-weight:500;font-size:12.5px;margin:0 2px}
.composer{border-top:1px solid var(--line);background:var(--surface);padding:14px 32px 16px}
.composer .inner{max-width:960px;margin:0 auto}
.compose-box{display:flex;gap:10px;align-items:flex-end;border:1px solid var(--line2);border-radius:12px;padding:8px 8px 8px 12px;background:var(--surface)}
.compose-box:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.compose-box textarea{flex:1;border:0;outline:0;resize:none;min-height:24px;max-height:180px;padding:6px 0;background:transparent;box-shadow:none!important}
.compose-meta{display:flex;justify-content:space-between;align-items:center;margin-top:8px;color:var(--ink3);font-size:12px}
.attach{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px 4px 2px 10px;font-size:12.5px;margin-bottom:8px}
.attach button{border:0;background:none;cursor:pointer;color:var(--ink3);font-size:15px;line-height:1}
.welcome{max-width:640px;margin:8vh auto 0;text-align:center}
.welcome h2{font-size:24px;margin:0 0 8px}
.welcome p{color:var(--ink3);margin:0 0 22px}
.examples{display:flex;flex-direction:column;gap:8px;align-items:center}
.examples button{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 14px;cursor:pointer;color:var(--ink);text-align:left;width:min(520px,100%)}
.examples button:hover{border-color:var(--brand)}
.drop{outline:2px dashed var(--brand);outline-offset:-8px}
.order .ohead{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);gap:12px;flex-wrap:wrap}
.order .ohead b{font-size:15px}
.bulk{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--ink3)}
.bulk input,.bulk select{height:30px;border-radius:6px;padding:0 8px;width:150px}
.otable-wrap{overflow:auto;max-height:460px}
.otable{width:100%;border-collapse:collapse;font-size:13px;min-width:1060px}
.otable th{position:sticky;top:0;background:var(--bg);text-align:left;font-weight:500;color:var(--ink3);font-size:12px;padding:8px 6px;border-bottom:1px solid var(--line);z-index:1}
.otable td{padding:3px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.otable td.n{color:var(--ink3);text-align:right;padding:9px 6px;width:28px}
.otable input{width:100%;min-width:80px;height:30px;border:1px solid transparent;border-radius:6px;padding:0 6px;background:transparent}
.otable input:hover{border-color:var(--line)}
.otable input:focus{border-color:var(--brand);background:var(--surface)}
.otable input.e{border-color:color-mix(in srgb,var(--bad) 50%,transparent);background:color-mix(in srgb,var(--bad) 7%,transparent)}
.otable input.w{border-color:color-mix(in srgb,var(--warn) 50%,transparent);background:color-mix(in srgb,var(--warn) 7%,transparent)}
.otable .flag{font-size:11.5px;padding:0 6px 4px;line-height:1.3}
.otable .flag.error{color:var(--bad)}.otable .flag.warn{color:var(--warn)}.otable .flag.info{color:var(--ink3)}
.otable .flag .fixes{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.otable .flag .fixes .btn{height:24px;font-size:11.5px;padding:0 8px}
.otable .rm{border:0;background:none;color:var(--ink3);cursor:pointer;font-size:16px;padding:6px}
.otable .rm:hover{color:var(--bad)}
.otable input.c-niche{min-width:120px}.otable input.c-city{min-width:130px}.otable input.c-state{min-width:52px;width:56px}
.otable input.c-company{min-width:190px}.otable input.c-domain{min-width:200px}.otable input.c-phone{min-width:120px}.otable input.c-notes{min-width:170px}
.ofoot{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg);gap:12px;flex-wrap:wrap}
.ofoot .sum{color:var(--ink3)}
.pcard{padding:16px}
.pcard .ptitle{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:10px}
.pcard .ptitle b{font-size:15px}
.plist{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;margin-top:14px}
.pitem{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:6px;color:var(--ink);font-size:12.5px;min-height:44px}
.pitem:hover{text-decoration:none;border-color:var(--line2)}
.pitem img{width:46px;height:32px;object-fit:cover;object-position:top;border-radius:4px;flex:none}
.pitem .pp{width:46px;height:32px;border-radius:4px;background:var(--sunk);flex:none;display:grid;place-items:center;color:var(--ink3)}
.pitem .nm{font-weight:500;line-height:1.2}
.pitem small{display:block;color:var(--ink3);font-size:11.5px}
.pactions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.ecard{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.erow{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;font-size:13px}
.erow .who2{font-weight:500}
.erow .st{background:transparent}
.erow .st::before{display:none}

/* ---------------------------------------------------------------- site page */
.sitepage{display:grid;grid-template-columns:minmax(0,1fr) 400px;height:calc(100vh - var(--top))}
.stage-s{display:flex;flex-direction:column;min-width:0;min-height:0;border-right:1px solid var(--line)}
.shead{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line);min-height:56px}
.shead .nm{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shead .dm{color:var(--ink3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;gap:8px;align-items:center}
.shead .sp{flex:1}
.tools{display:flex;align-items:center;gap:8px;padding:7px 16px;background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap}
.tools select{height:30px;border-radius:7px;padding:0 8px;max-width:260px}
.tools .hint{color:var(--ink3);font-size:12px;margin-left:auto}
.frame-wrap{flex:1;min-height:0;background:var(--sunk);display:flex;justify-content:center;position:relative;overflow:hidden}
.frame-wrap iframe{border:0;width:100%;height:100%;background:#fff}
.frame-wrap.phone{padding:16px 0}
.frame-wrap.phone iframe{width:390px;border-radius:18px;box-shadow:0 8px 30px rgba(0,0,0,.18)}
.frame-wrap .veil{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 85%,transparent);color:var(--ink2);font-weight:500;text-align:center;padding:20px}
.frame-wrap .toast{position:absolute;top:12px;left:50%;transform:translateX(-50%);display:flex;gap:8px;align-items:center;z-index:3;padding:7px 14px;border-radius:999px}
.frame-wrap .livebadge{position:absolute;top:12px;left:12px;z-index:3}
.side-s{display:flex;flex-direction:column;min-height:0;background:var(--surface)}
.sbox{padding:14px 16px;border-bottom:1px solid var(--line);overflow:auto;max-height:58%}
.srow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.srow .grow{flex:1}
.checks{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.checks li{display:flex;gap:8px;font-size:13px;line-height:1.35}
.checks li::before{content:"";width:8px;height:8px;border-radius:50%;margin-top:5px;flex:none;background:var(--st-live)}
.checks li.warn::before{background:var(--st-fix);border-radius:0;clip-path:polygon(50% 0,100% 100%,0 100%)}
.checks li.info::before{background:var(--ink3)}
.vtrack{display:flex;align-items:center;gap:0;margin:12px 0 2px;overflow-x:auto;padding:4px 2px}
.vtrack button{position:relative;border:0;background:none;padding:0 0 16px;cursor:pointer;flex:none;display:grid;justify-items:center;min-width:30px}
.vtrack button i{width:12px;height:12px;border-radius:50%;border:2px solid var(--line2);background:var(--surface);display:block;z-index:1}
.vtrack button.cur i{border-color:var(--brand);background:var(--brand)}
.vtrack button.live i{box-shadow:0 0 0 3px color-mix(in srgb,var(--st-live) 35%,transparent);border-color:var(--st-live)}
.vtrack button small{position:absolute;bottom:0;font-family:var(--mono);font-size:10px;color:var(--ink3);white-space:nowrap}
.vtrack button.cur small{color:var(--ink);font-weight:600}
.vtrack .ln{height:2px;flex:1;min-width:10px;background:var(--line);margin-bottom:16px}
.golive{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.golive p{margin:6px 0 0;font-size:12.5px;line-height:1.4}
.phone-row{margin-top:10px;gap:8px}.phone-row .phone-in{flex:1;width:auto}
.fixbox{margin-top:10px}
.vmenu{position:relative}
.vlist{position:absolute;right:0;top:36px;width:320px;background:var(--surface);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow-lg);z-index:10;max-height:360px;overflow:auto;padding:6px}
.vlist div{display:flex;justify-content:space-between;gap:8px;padding:8px;border-radius:6px;font-size:13px}
.vlist div.cur{background:var(--brand-soft)}
.vlist small{display:block;color:var(--ink3)}
.thread{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.thread .bubble{max-width:92%;font-size:13px}
.bubble.clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.tag{display:inline-block;font-size:11.5px;padding:1px 7px;border-radius:5px;background:rgba(255,255,255,.22);margin-bottom:4px}
.msg.assistant .tag{background:var(--bg);color:var(--ink3)}
.status-line{display:flex;align-items:center;gap:7px;color:var(--ink3);font-size:12.5px}
.status-line.err{color:var(--bad)}
.side-s .composer{padding:12px 16px 14px}
.selchip{display:inline-flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--st-review) 12%,transparent);color:var(--st-review);border-radius:999px;padding:2px 4px 2px 10px;font-size:12.5px;font-weight:500;margin-bottom:8px;max-width:100%}
.selchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selchip button{border:0;background:none;cursor:pointer;color:inherit;font-size:15px;line-height:1}
.selchip .behind{font-size:12px;font-weight:600;text-decoration:underline;white-space:nowrap}
/* Editor buttons for the selected section, list item or photo */
.selacts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px}
.selacts>.note{min-width:92px;font-weight:500}
.hiddenbox:empty{display:none}
.hiddenbox .selacts{padding:6px 8px;border:1px dashed var(--line2);border-radius:8px}
.dropzone{display:grid;justify-items:center;gap:4px;padding:28px 16px;border:2px dashed var(--line2);border-radius:12px;background:var(--bg);cursor:pointer;text-align:center;color:var(--ink2);margin-bottom:12px}
.dropzone.over,.dropzone:hover{border-color:var(--brand);color:var(--ink)}
.libgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.libpic{display:grid;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;text-align:left;color:var(--ink2)}
.libpic img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:7px;display:block;background:var(--line)}
.libpic small{font-size:11.5px;line-height:1.3}
.libpic:hover{border-color:var(--brand)}
.libpic.off{opacity:.5;cursor:not-allowed}
.suggest{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.suggest button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:3px 10px;font-size:12px;cursor:pointer;color:var(--ink2)}
.suggest button:hover{border-color:var(--brand);color:var(--brand)}
.changes ul{list-style:none;margin:8px 0;padding:0;display:grid;gap:8px}.changes li{font-size:13px;display:grid;gap:2px}.changes .srow{gap:10px;font-size:12.5px}
.blogbox .postlist{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px}.blogbox .postlist li{font-size:13px;display:grid;gap:3px}
.post-read .answer{padding:10px 12px;border-left:3px solid var(--st-review);background:color-mix(in srgb,var(--st-review) 7%,transparent);border-radius:8px;margin:0}
.post-read h3{font-size:14px;margin-top:6px}.post-read p{margin:0;line-height:1.55}

/* ---------------------------------------------------------------- client profile editor */
.form{display:grid;gap:12px;margin:12px 0}.form.two{grid-template-columns:1fr 1fr}.form.three{grid-template-columns:2fr 1fr 1fr}
.form label,.psec>label{display:grid;gap:4px;font-size:12.5px;font-weight:500;color:var(--ink2)}
.form input,.form textarea,.psec input,.psec textarea,.psec select{font:inherit;font-weight:400;color:var(--ink);padding:7px 9px}
.psec{margin:16px 0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.psec h3{margin:0 0 4px;font-size:14px;font-weight:600}.psec>.note{margin:0 0 10px}
.redit{display:grid;gap:6px;margin-bottom:8px}.rrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.rrow input{min-width:120px}
.rrow .rsrc{order:2;flex-basis:100%;color:var(--ink3);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:2px}
.rrow .rrule{order:2;flex-basis:100%;color:var(--warn);font-size:12px;padding-left:2px}
.rrow .rm{border:0;background:none;color:var(--ink3);cursor:pointer;font-size:16px;padding:4px 6px}
.savebar{position:sticky;bottom:0;padding:12px 0;background:linear-gradient(transparent,var(--bg) 30%);display:flex;justify-content:flex-end;gap:8px}

/* ---------------------------------------------------------------- login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--page)}
.login form{width:min(360px,100%);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}
.login .logo{padding:0 0 4px;font-size:16px}
.login label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2);font-weight:500}
.login input{height:40px;padding:0 12px;font-weight:400}

/* ---------------------------------------------------------------- small screens */
@media (max-width:1180px){.cols,.bwrap,.nb,.tradepage{grid-template-columns:1fr}.sitepage{grid-template-columns:minmax(0,1fr) 340px}.reviewmode{grid-template-columns:220px minmax(0,1fr) 300px}.srcs{grid-template-columns:1fr}}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:260px;transform:translateX(-100%);transition:transform .2s;box-shadow:var(--shadow-lg)}
  body.nav-open .side{transform:none}
  body.nav-open .scrim-nav{display:block;position:fixed;inset:0;background:var(--scrim);z-index:25}
  .menu-b{display:inline-flex}
  .cmd-b span{display:none}
  .topbar{padding:0 12px}
  .page{padding:18px 16px 60px}
  .buildpage{grid-template-columns:1fr}.chats{display:none}
  .stream,.composer{padding-left:16px;padding-right:16px}
  .sitepage{grid-template-columns:1fr;height:auto}.stage-s{height:70vh}.side-s{min-height:60vh}.sbox{max-height:none}
  .reviewmode{grid-template-columns:1fr;height:auto}.rq{display:none}.rstage{height:65vh}.rpanel{border-left:0}
  .brow{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}.sample{grid-template-columns:1fr}.sample .sp{border-left:0;border-top:1px solid var(--line)}
  .form.two,.form.three,.row3{grid-template-columns:1fr}
  .search{min-width:0;flex:1 1 100%}
  .tray{position:fixed;left:12px;right:12px;width:auto;top:58px}
  .hide-sm{display:none}
}
.pubcheck{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2)}

/* ---------------------------------------------------------------- services: status board + paused banner */
.svcs{display:grid}
.panel.flush{padding:0}.panel.flush .svcs{padding:4px 0}
.svc{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.panel.flush .svc{padding:9px 14px}
.svc:last-child{border-bottom:0}
.svc>.st{margin-top:5px}
.svc-t{flex:1;min-width:0;display:grid;gap:2px}.svc-t span{color:var(--ink2);font-size:12.5px}.svc-t small{color:var(--ink3);font-size:11.5px}
.svc .btns{flex:none;justify-content:flex-end}
.svc-budget{display:inline-flex;align-items:center;gap:6px}.svc-budget small{color:var(--ink3)}
.svc-usd{width:84px;height:28px;padding:0 8px;border-radius:7px}
.paused-b{padding:12px 24px 0}.paused-b .banner{margin-bottom:8px}
@media (max-width:760px){.paused-b{padding:10px 16px 0}.svc{flex-wrap:wrap}.svc .btns{width:100%;justify-content:flex-start;padding-left:18px}}
.spread td{padding:7px 10px;border-bottom:1px solid var(--line)}.spread .num{text-align:right;white-space:nowrap;color:var(--ink2)}
.claimprev{margin-top:10px}.claimprev summary{cursor:pointer;font-size:13px;color:var(--ink2)}.claimprev ol{margin:8px 0 0 18px;font-size:13px}.claimprev li{margin:2px 0}
.tbl tr.cutline td{border-bottom:2px dashed var(--st-review)}
.fq{border-top:1px solid var(--line);padding:10px 0}.fq summary{cursor:pointer}.fq-item{padding:10px 0 10px 14px;border-bottom:1px dashed var(--line);display:grid;gap:3px}.fq-item:last-child{border-bottom:0}

/* Services checklist (clients.js serviceChecklist) */
.svclist{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.svhead{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.svhead .btn{margin-left:auto}
.svrows{border:1px solid var(--line);border-radius:8px;background:var(--surface);overflow:hidden}
.svrow{display:flex;align-items:flex-start;gap:10px;padding:7px 10px;cursor:pointer}
.svrow+.svrow{border-top:1px solid var(--line)}
.svrow input{margin-top:3px;flex:none}
.svrow .t{display:flex;flex-direction:column;min-width:0}
.svrow .t small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svrow.off{color:var(--ink3)}
.svtag{font-size:11.5px;color:var(--ink3);border:1px solid var(--line2);border-radius:999px;padding:0 7px;margin-left:4px;white-space:nowrap}
.svtag.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.svclist .srow input{flex:1;min-width:160px}

/* Links > To check: one site's new links, read and approved in place */
.linkcheck{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:start}
.lc-main{display:grid;gap:10px;min-width:0}
.lc-card{display:grid}
.lc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}
.lc-t{display:grid;gap:1px;min-width:0}.lc-t .nm{font-weight:600;font-size:14.5px}
.lc-link{display:grid;gap:8px;padding:14px 16px;border-top:1px solid var(--line)}
.lc-head+.lc-link{border-top:0}
.lc-to{gap:8px;font-size:13px}
.lc-link .quote{padding:10px 12px;border-radius:8px;background:var(--bg);border:1px solid var(--line);font:400 14px/1.6 Georgia,"Times New Roman",serif;color:var(--ink)}
.lc-link .quote a{color:inherit;text-decoration:underline;text-underline-offset:3px;background:color-mix(in srgb,var(--brand) 14%,transparent);border-radius:3px;padding:0 2px}
.lc-link .quote a.sel{background:color-mix(in srgb,var(--st-review) 22%,transparent)}
.lc-link .quote .add{background:color-mix(in srgb,var(--st-review) 9%,transparent);border-radius:3px}
.lc-link .quote.picking{border-color:var(--st-review);box-shadow:0 0 0 3px color-mix(in srgb,var(--st-review) 15%,transparent);cursor:text}
.lc-link textarea{width:100%;font:inherit;padding:8px 10px}
.lc-acts{gap:14px;font-size:12.5px}
.link.danger{color:var(--bad)}
.note.good{color:var(--st-live)}
.lc-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--line);background:var(--bg);border-radius:0 0 10px 10px}
.lc-foot .grow{flex:1}
.btn .kbd{margin-left:4px;background:transparent;border-color:color-mix(in srgb,currentColor 35%,transparent);color:inherit}
.lc-guide{padding:14px 16px;display:grid;gap:10px}
.lc-guide ol{margin:0;padding-left:18px;display:grid;gap:7px;font-size:12.5px;color:var(--ink2)}
@media (max-width:900px){.linkcheck{grid-template-columns:1fr}}
.lc-box{background:var(--surface);border:1px solid var(--line);border-radius:12px;min-width:0}

/* City check (check.js) */
.ck-form{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.ck-form .ck-q{flex:1;min-width:220px;height:38px;font-size:15px;padding:0 12px;border-radius:8px}
.ck-form .ck-client{height:38px;border-radius:8px;max-width:220px}
.ck-form .btn{height:38px}
.ck-warn{color:var(--warn);margin:0 0 12px}
.ck-wait{display:flex;gap:12px;align-items:center}.ck-wait .spin{width:18px;height:18px;color:var(--brand)}.ck-wait p{margin:2px 0 0}
.ck-recent{display:flex;flex-wrap:wrap;gap:8px}
.ck-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer;font:inherit}
.ck-chip:hover{border-color:var(--ink3)}
.ck-mini{--c:var(--ink3);display:inline-block;min-width:28px;text-align:center;padding:1px 6px;border-radius:6px;font-weight:600;font-size:12px;color:var(--c);background:color-mix(in srgb,var(--c) 13%,transparent)}
.ck-card{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:14px;align-items:start}
.ck-head{grid-column:1/-1}.ck-head .note{margin:6px 0 0}
.ck-tags{display:flex;flex-wrap:wrap;gap:6px}
.ck-tag{padding:3px 9px;border-radius:99px;background:var(--sunk);font-size:12.5px;font-weight:500}
.ck-main{display:flex;flex-direction:column;gap:16px}
.ck-top{display:flex;gap:18px;justify-content:space-between;flex-wrap:wrap}
.ck-score{display:flex;gap:14px;align-items:center}
.ck-num{--c:var(--ink3);width:72px;height:72px;border-radius:16px;display:grid;place-items:center;font-size:30px;font-weight:700;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);border:2px solid color-mix(in srgb,var(--c) 40%,transparent)}
.ck-verdict{font-size:20px}
.ck-flag{margin:4px 0 0;color:var(--warn);font-size:13px;max-width:380px}
.ck-score .note{margin:4px 0 0;max-width:380px}
.ck-conf{font-size:13px}.ck-conf ul{margin:4px 0 0;padding:0;list-style:none}.ck-conf li{color:var(--ink2)}.ck-conf li.ok{color:var(--st-live)}.ck-conf li.no{color:var(--ink3)}
.ck-pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.ck-pillar{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.ck-pl{display:flex;justify-content:space-between;align-items:baseline}
.ck-bar{height:6px;background:var(--sunk);border-radius:99px;overflow:hidden;margin:6px 0 4px}.ck-bar i{display:block;height:100%;background:var(--brand);border-radius:99px}
.ck-pillar ul,.ck-why ul{margin:6px 0 0;padding-left:16px;font-size:12.5px;line-height:1.45}
.ck-plus{color:var(--st-live)}.ck-minus{color:var(--st-stop)}.ck-info{color:var(--ink2)}
.ck-why{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ck-why h4,.ck-google h4,.ck-side h4{margin:0 0 4px;font-size:13px}
.ck-google{display:grid;gap:12px}
.ck-pack td{padding:5px 8px;font-size:12.5px}
.ck-org{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:4px}
.ck-o{font-size:12px;padding:2px 7px;border-radius:6px;border:1px solid var(--line)}
.ck-o.directory{color:var(--ink3)}.ck-o.local{font-weight:600;border-color:var(--line2)}
.ck-nfp{margin:0}
.ck-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ck-sides{display:flex;flex-direction:column;gap:14px}
.ck-side p{font-size:13px;margin:4px 0}.ck-side table{width:100%}.ck-side td{padding:6px 4px;font-size:12.5px}.ck-side td:last-child{text-align:right;width:1%}.ck-side td small{display:block}
/* Scorecard */
.sc-form{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.sc-form .ck-form{margin:0;align-items:center}
.sc-rows{width:100%;font:13px/1.5 var(--mono,ui-monospace,monospace);padding:10px 12px;border-radius:8px;resize:vertical;box-sizing:border-box}
.rk-head{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-bottom:10px}.rk-head .note{margin:0}
.sc-paste{margin:0 0 12px}.sc-paste summary{cursor:pointer;color:var(--ink2);font-size:13px;margin-bottom:8px}.sc-paste .ck-form{margin-top:8px}
.rk .grow,.sc-step2 .grow{flex:1}.rk-head h3{margin:0}
.sc-step2{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.sc-scan{display:flex;gap:10px;align-items:center;flex-basis:100%}.sc-scan .spin{width:16px;height:16px;color:var(--brand);flex:none}.sc-scan p{margin:0}
.sc-types{display:flex;flex-wrap:wrap;gap:8px;flex-basis:100%}.sc-type{display:flex;flex-direction:column;gap:1px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;min-width:160px}
.sc-type .ck-tag{align-self:flex-start;font-size:11px;padding:1px 6px}.rk-tbl th.sc-th{white-space:normal;min-width:110px;max-width:150px;font-size:12px}
.sc-prev tr.sc-pick{cursor:pointer}.sc-prev tr.sc-pick:hover td,.sc-prev tr.sc-pick:focus-visible td{background:var(--hover,rgba(127,127,127,.08))}
.sc-val{all:unset;cursor:pointer;white-space:nowrap;border-bottom:1px dashed var(--line2)}.sc-val:hover{border-bottom-color:var(--brand)}.sc-val:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:3px}
.sc-val b,td.val b{font-family:var(--mono);font-size:13px}.sc-val small{color:var(--ink3);font-family:var(--mono)}td.val{white-space:nowrap}
.rk-tbl tr.sc-mrow td{background:var(--sunk);padding:14px 16px;white-space:normal}
.sc-math{display:flex;flex-direction:column;gap:8px}.sc-mtbl{border-collapse:collapse;font-size:12.5px}.sc-mtbl th{font-weight:500;color:var(--ink3);text-align:left;padding:4px 14px 4px 0}.sc-mtbl td{padding:4px 14px 4px 0}
.sc-fig{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.sc-link{all:unset;cursor:pointer;color:var(--brand);font-weight:500;font-size:12.5px}.sc-link:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.sc-figform{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.sc-figform label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink2)}
.ck-tag.sc-yes{background:color-mix(in srgb,var(--st-live) 13%,transparent);color:var(--st-live)}
/* Scoring revisions 2026-11-05: decision, NFP range, sites per town, agreed towns, test towns */
.sc-dec{min-width:150px;max-width:240px}.sc-dec .ck-tag{margin-left:4px;font-size:11px;padding:1px 6px}
.sc-why{display:block;white-space:normal;line-height:1.3;margin-top:3px;font-size:12px}
.sc-unstable{background:color-mix(in srgb,var(--st-fix) 15%,transparent);color:var(--st-fix)}
.rk-tbl td .ck-tag{font-size:11px;padding:1px 6px;margin-left:4px;white-space:nowrap}
.sc-sites{display:block;margin-top:4px;font-size:12px;height:24px;padding:0 4px;border-radius:6px}
.sc-split{display:flex;gap:6px;align-items:center}.sc-bought{width:110px;height:30px;padding:0 8px;border-radius:7px;font-size:13px}
.sc-split-note{flex-basis:100%;margin:4px 0 0}
.sc-terr{margin:-4px 0 10px}.sc-terr p{margin:0}.sc-terr .ck-form{margin-top:6px}
.sc-tests{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.sc-tests h4{margin:6px 0}.sc-tests ul{margin:0;padding-left:18px}
.sc-also{font-size:13.5px!important;height:32px!important}
.sc-spin{display:inline-block;width:12px;height:12px;vertical-align:-2px}
.rk-tbl tfoot tr.sc-total td{border-top:1px solid var(--line2);background:var(--sunk);padding-top:10px;padding-bottom:10px}
.rk-tbl tfoot tr.sc-total+tr.sc-total td{border-top:0;padding-top:4px}
.sc-tval{cursor:help;white-space:nowrap}.sc-tval b{font-family:var(--mono);font-size:13px}.sc-tval small{color:var(--ink3);font-family:var(--mono)}.sc-tval:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:3px}
.sc-card{position:fixed;z-index:60;max-width:380px;padding:12px 14px;background:var(--surface);color:var(--ink);border:1px solid var(--line2);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.16);font-size:12.5px;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.sc-card-t{font-size:13px}.sc-card p{margin:0}
.sc-ladder{display:grid;grid-template-columns:1fr auto auto;gap:5px 12px;align-items:baseline}.sc-ladder>:nth-child(3n+2),.sc-ladder>:nth-child(3n){text-align:right}
.sc-val .sc-rev{color:var(--ink3);font-family:var(--mono)}
.sc-zbox{margin-top:14px;padding:14px 16px;background:var(--sunk);border-radius:10px;display:flex;flex-direction:column;gap:12px}.sc-zbox .rk-head{margin:0}
.sc-zone{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:18px;align-items:start}.sc-zmap{display:flex;flex-direction:column;gap:8px;min-width:0}
.sc-map{display:block;width:100%;height:auto;max-width:520px}
.sc-legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--ink2)}.sc-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.sc-legend i.sq{border-radius:1px;background:var(--ink);width:8px;height:8px}.sc-legend i.pin{background:var(--ink)}
.sc-zfacts{display:flex;flex-direction:column;gap:10px;min-width:0}.sc-ztop{grid-column:1/-1;display:flex;flex-direction:column;gap:8px;min-width:0}.sc-ztop h4{margin:0;font-size:13px}
.sc-kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}.sc-kv dt{color:var(--ink3)}.sc-kv dd{margin:0}
.sc-pills{display:flex;flex-wrap:wrap;gap:4px}.sc-pill{font-size:11.5px;padding:1px 8px;border-radius:99px;background:var(--sunk);color:var(--ink2);white-space:nowrap}
.sc-pill.good{background:color-mix(in srgb,var(--st-live) 13%,transparent);color:var(--st-live)}
@media (max-width:860px){.sc-zone{grid-template-columns:1fr}}
.rk-tbl tr.sc-on td{background:color-mix(in srgb,var(--brand) 7%,transparent)}
.rk>.btn{margin-top:8px}
.rk-scroll{overflow-x:auto}.rk-tbl{width:100%;min-width:760px}.rk-tbl td,.rk-tbl th{padding:7px 8px;font-size:13px;white-space:nowrap;text-align:left}.rk-tbl .spin{width:14px;height:14px;color:var(--brand)}
@media (max-width:860px){.ck-card{grid-template-columns:1fr}.ck-pillars,.ck-why{grid-template-columns:1fr}}

/* Calls (calls.js): CallRail calls per site and client, leads priced at what Google charges for a lead in the town */
.ktiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.ktile{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:grid;gap:4px;min-width:0}
.ktile span{color:var(--ink2);font-size:12.5px;font-weight:500}
.ktile b{font-family:var(--mono);font-size:26px;font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.15}
.ktile small{color:var(--ink3);font-size:12px}
.ktile.hl{border-color:color-mix(in srgb,var(--brand) 45%,var(--line));background:color-mix(in srgb,var(--brand) 5%,var(--surface))}
.ktile.hl b{color:var(--brand)}
.callsync{display:flex;align-items:center;gap:6px;margin:-6px 0 12px}
.callsync .ic{width:14px;height:14px}
.callsync.bad{color:var(--bad)}
.note.blk,small.blk{display:block}
.note.warn{color:var(--warn)}
.spark{display:block;width:112px;height:26px}
.spark .base{stroke:var(--line);stroke-width:1}
.spark rect.c{fill:var(--line2)}
.spark rect.l{fill:var(--st-live)}
.tbl.calls td{vertical-align:middle}
.ring{display:flex;align-items:center;gap:8px}
.ring>i{flex:1;max-width:90px;height:6px;border-radius:3px;background:var(--sunk);overflow:hidden;display:block}
.ring>i>i{display:block;height:100%;background:var(--st-live);border-radius:3px}
.newloc{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.newloc-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.newloc-h h3{margin:0;font-size:14px;font-weight:600}
.newloc-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.nl{border:1px dashed var(--line2);border-radius:10px;padding:10px 12px;display:grid;gap:3px;color:var(--ink)}
.nl:hover{text-decoration:none;border-color:var(--ink3)}
.nl.on{border-style:solid;border-color:color-mix(in srgb,var(--st-live) 40%,var(--line))}
.nl small{color:var(--ink3)}
.nl .mono{font-size:12px;color:var(--ink2)}
.lg{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 4px 0 10px;vertical-align:baseline}
.lg.l{background:var(--st-live)}.lg.c{background:var(--st-fix);opacity:.6}.lg.n{background:var(--ink3);opacity:.5}
.cmap a text{font-family:var(--ui);font-size:10.5px;fill:var(--ink2)}
.callcard h3{display:flex;align-items:center;gap:8px}
.callnums{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px}
.callnums b{display:block;font-family:var(--mono);font-size:20px;font-weight:500}
.callnums small{color:var(--ink3);font-size:11.5px}
.calllist{list-style:none;margin:6px 0 0;padding:0;display:grid}
.calllist li{display:grid;grid-template-columns:10px 1fr auto 14px;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--line)}
.calllist .dot{width:8px;height:8px;border-radius:50%}
.calllist .dot.l{background:var(--st-live)}.calllist .dot.c{background:var(--st-build)}.calllist .dot.n{background:var(--st-stop);opacity:.7}
@media (max-width:900px){.ktiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.phead .btns .seg{max-width:100%;overflow-x:auto}.phead .btns .seg button{white-space:nowrap;flex:none}
@media (max-width:520px){.ktiles{grid-template-columns:1fr}}

/* Capacity (capacity.js): 2 clients per trade per county */
.callout.bad{background:color-mix(in srgb,var(--st-stop) 9%,var(--surface));color:var(--ink)}
.callout b{display:block;margin-bottom:2px}.callout p{margin:0}
.cap-out{margin-bottom:18px}
.ck-side b.bad{color:var(--bad)}
.share-copy{display:flex;gap:8px;margin-top:4px}.share-copy input{flex:1;min-width:0}
.share-page{max-width:880px;margin:0 auto;padding:32px 16px 80px}.share-page .cap-out{margin-top:16px}
.cap-card{display:grid;gap:16px}
.cap-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cap-top .st{height:28px;font-size:13px;font-weight:600}
.cap-title{font-size:17px;font-weight:600}
.cap-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.cap-cols>div{display:grid;gap:8px;align-content:start;min-width:0}
.cap-h{margin:6px 0 0;font-size:11.5px;font-weight:600;color:var(--ink3);text-transform:uppercase;letter-spacing:.04em}
.cap-who{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 10px;padding:9px 11px;border:1px solid var(--line);border-radius:9px}
.cap-who .note{grid-column:1;min-width:0}
.cap-who>.st{grid-column:2;grid-row:1}
.cap-who>.btns{grid-column:1/-1}
.cap-none{padding:11px;border:1px dashed var(--line2);border-radius:9px;color:var(--ink2)}
.cap-near{display:grid;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.cap-nb{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:9px 11px;border:0;border-top:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:44px}
.cap-nb:first-child{border-top:0}.cap-nb:hover{background:var(--hover)}
.cap-nb>span:first-child{display:grid;min-width:0}
.cap-bar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:var(--sunk)}
.cap-bar i{display:block;height:100%}.cap-bar .full{background:var(--st-stop)}.cap-bar .left{background:var(--st-fix)}.cap-bar .open{background:var(--st-live)}

/* New clients (onboard.js): the staged client's sites, typed over in place */
.ob-in{width:100%;min-width:170px;height:30px;border:1px solid transparent;border-radius:7px;padding:0 8px;font:inherit;background:transparent;color:var(--ink)}
.ob-in.mono{font-family:var(--mono);font-size:12px;min-width:250px}
.ob-in:hover{border-color:var(--line2)}.ob-in:focus{border-color:var(--brand);background:var(--surface);outline:0}
.ob-tbl td{height:52px}.ob-tbl td .note{font-size:11.5px}
.ob-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:var(--line2)}.ob-dot.g{background:var(--st-live)}.ob-dot.y{background:#d4a514}.ob-dot.o{background:var(--st-fix)}.ob-dot.r{background:var(--st-stop)}
.ob-slide{display:grid;gap:6px;padding:14px 16px;margin-bottom:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.ob-slide-top{display:flex;gap:6px 14px;align-items:baseline;flex-wrap:wrap}.ob-slide-top b{font-size:15px}
.ob-slide input[type=range]{width:100%;height:28px;padding:0;border:0;background:none;accent-color:var(--brand);box-shadow:none}
.ob-ends{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--ink3)}
.ob-save{position:sticky;top:0;z-index:3;display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:8px 12px;margin-bottom:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.ob-save.dirty{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.ob-save b{font-size:14px}.ob-save b.bad{color:var(--bad)}.ob-save .grow{flex:1}
.ob-more{margin-left:8px;border:0;background:none;color:var(--brand);font:inherit;font-size:12px;font-weight:500;cursor:pointer;padding:2px 4px;border-radius:5px}.ob-more:hover{background:var(--brand-soft)}
.ob-tbl tr.ob-new td{background:var(--brand-soft)}.ob-tbl tr.ob-out td{color:var(--ink2);background:var(--sunk)}.ob-tbl tr.ob-out b{font-weight:500}
.ob-tbl tr.ob-div td{height:34px;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3);background:var(--sunk)}
.ob-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ob-cols .pr{grid-template-columns:110px minmax(0,1fr)}.ob-cols .pr a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.ob-cols{grid-template-columns:1fr}}

/* Niche status: Hard and Unknown are solid blocks, not tints, so nobody reviews a town without seeing them. */
.niche-slot:empty{display:none}.niche-slot{margin:0 0 12px}
.niche{padding:13px 16px;border-radius:10px;color:#fff;background:var(--st-stop)}
.niche.unknown{background:#b45309}
.niche-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.niche-h b{font-size:17px;font-weight:800;letter-spacing:.04em}.niche-h span{font-size:14px;font-weight:600;text-transform:capitalize}
.niche p{margin:4px 0 0;font-size:13px;line-height:1.45;color:#fff}
.niche-ok{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:99px;font-size:12px;color:var(--st-live);background:color-mix(in srgb,var(--st-live) 10%,var(--surface))}
.niche-ok span::first-letter{text-transform:uppercase}
.niche-chip{display:inline-block;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#fff;background:var(--st-stop);white-space:nowrap}
.niche-chip.unknown{background:#b45309}
