*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:#f5f7fb;color:#17213a}.app{display:grid;grid-template-columns:245px 1fr;min-height:100vh}aside{background:#152b55;color:#fff;padding:24px 18px;display:flex;flex-direction:column;gap:18px}.brand{display:flex;align-items:center;gap:11px}.brand strong{font-size:20px;letter-spacing:1.5px}.brand span{display:block;font-size:13px;letter-spacing:4px;color:#dce5f6;margin-top:2px}/* amerivet-pulse-hav: the three hand-drawn white bars and the red dot that used to be constructed here are GONE, replaced by the real brand mark at public/amerivet-mark-reversed.svg. Leaving them unreferenced would be the l1d.55 shape - a visual that still renders somewhere and looks load-bearing. amerivet-pulse-89l: the .mark sizing that used to sit here is now a SINGLE rule on .brand .mark in the v15 layer below. There were three competing ones (43px here, 34px in v12, a margin-only one in v15) and the cascade decided; now the rule is written once where it wins. */.tag{font-size:12px;color:#aebbd3;border-bottom:1px solid #30466e;padding-bottom:18px}nav{display:grid;gap:7px}nav button{border:0;background:transparent;color:#dfe7f5;text-align:left;padding:11px 12px;border-radius:9px;font-size:14px;cursor:pointer}nav button:hover,nav button.active{background:#fff;color:#152b55;font-weight:600}.integration{margin-top:auto;border-top:1px solid #30466e;padding-top:16px;display:grid;gap:7px}.integration span{font-size:12px;text-transform:uppercase;letter-spacing:1px}.integration small{color:#bfcbe0}main{padding:28px 34px}header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}h1{margin:0;font-size:27px}header p{margin:5px 0 0;color:#68738b}select,input,textarea{border:1px solid #d5dbe6;border-radius:9px;padding:10px 11px;background:#fff;color:#17213a;width:100%}#persona{width:auto}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card{background:#fff;border:1px solid #e1e5ed;border-radius:13px;padding:18px}.metric span{font-size:13px;color:#69748a}.metric strong{display:block;font-size:26px;margin-top:7px}.red{color:#d73540}.section{margin-top:18px}.section h2{font-size:18px}.table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}.table th,.table td{text-align:left;padding:12px;border-bottom:1px solid #edf0f5;font-size:13px}.table th{background:#f8f9fc;color:#68738b}.pill{display:inline-block;background:#eef3fb;color:#244474;border-radius:999px;padding:5px 9px;font-size:12px}.pill.red{background:#fdebed;color:#b82731}.btn{background:#e53640;color:white;border:0;border-radius:9px;padding:10px 14px;font-weight:600;cursor:pointer}.btn.secondary{background:#152b55}.btn.ghost{background:white;color:#152b55;border:1px solid #ccd4e1}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.formgrid label{font-size:13px;font-weight:600}.formgrid label span{display:block;margin-bottom:6px}.full{grid-column:1/-1}.callout{border-left:4px solid #e53640;background:#fff5f5;padding:14px;border-radius:8px;margin-top:14px}.used{border-left-color:#152b55;background:#f3f6fb}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.search{max-width:420px;margin-bottom:14px}.modal{position:fixed;inset:0;background:#0b1730aa;display:grid;place-items:center;padding:20px}.hidden{display:none}.modalbox{background:#fff;border-radius:15px;padding:24px;width:min(650px,95vw);max-height:90vh;overflow:auto;position:relative}.x{position:absolute;right:15px;top:10px;border:0;background:none;font-size:28px;cursor:pointer}.empty{padding:40px;text-align:center;color:#6c778e}.clinicrow{cursor:pointer}.clinicrow:hover{background:#f8faff}@media(max-width:850px){.app{grid-template-columns:1fr}aside{position:relative}.grid{grid-template-columns:1fr 1fr}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}main{padding:20px}}input[readonly]{background:#f5f7fb;color:#59657a}
/* amerivet-pulse-agr: A DISABLED INPUT MUST LOOK DISABLED, and without this rule it does not.
   input{background:#fff} above overrides the browser's default disabled styling, so the attribute
   alone leaves a field looking exactly like a live one - white, normal border, still showing what
   the user typed. There is a rule for [readonly] and there was none for :disabled.
   NOTHING IN THE APP IS DISABLED TODAY: the COGS/supplies exclusion that exposed this was reversed
   the same day on new guidance from Finance. The rule stays anyway, because the next person to
   disable anything would otherwise rediscover the same invisible failure. Recorded in
   capex-hub-disabled-inputs-look-live. */
input:disabled{background:#eef1f6;color:#98a3b4;cursor:not-allowed;border-style:dashed}.table .pill{white-space:nowrap}
.request-link{background:none;border:0;padding:0;color:var(--red);font:inherit;font-weight:700;cursor:pointer;text-align:left}.request-link:hover{text-decoration:underline}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-block{border:1px solid var(--border);border-radius:12px;padding:14px;background:#fff}.detail-block h3{margin-top:0}.timeline{border-left:3px solid var(--navy);padding-left:16px;margin-left:5px}.timeline-item{position:relative;padding:0 0 18px}.timeline-item:before{content:'';position:absolute;left:-23px;top:4px;width:11px;height:11px;border-radius:50%;background:var(--red)}.kv{display:grid;grid-template-columns:145px 1fr;gap:7px 12px}.kv span{color:var(--muted)}@media(max-width:760px){.detail-grid{grid-template-columns:1fr}.kv{grid-template-columns:1fr}}

.field-label{display:block;font-weight:600;margin-bottom:8px}.radio-row{display:flex;gap:28px;align-items:center}.radio-row label{display:flex;gap:9px;align-items:center;font-weight:400}.radio-row input[type=radio]{width:20px;height:20px}
.roi-results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.roi-results .metric{background:#fff;border:1px solid #dbe3ee;border-radius:12px;padding:12px}.roi-results .metric span{display:block;font-size:12px;color:#667085;margin-bottom:5px}.roi-results .metric strong{font-size:17px}.roi-stream{border-bottom:1px solid #dbe3ee;padding-bottom:12px;margin-bottom:12px}@media(max-width:760px){.roi-results{grid-template-columns:1fr 1fr}}

/* v11 visual preferred equipment catalog */
.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;margin-top:18px}.catalog-card{background:#fff;border:1px solid #e2e7ec;border-radius:18px;overflow:hidden;box-shadow:0 3px 12px rgba(19,48,74,.06);display:flex;flex-direction:column}.catalog-image{height:190px;background:#f5f7fa;position:relative;display:flex;align-items:center;justify-content:center}.catalog-image img{width:100%;height:100%;object-fit:contain;display:block}.image-tag{position:absolute;right:10px;bottom:10px;background:rgba(255,255,255,.94);border:1px solid #dde4ea;border-radius:999px;padding:4px 8px;font-size:11px;color:#607080}.catalog-card-body{padding:16px;display:flex;flex-direction:column;gap:12px;flex:1}.catalog-card-body h3{margin:0;line-height:1.3}.catalog-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.muted{font-size:12px;color:#718096}.kv.compact{grid-template-columns:1fr auto;font-size:13px}.catalog-card .btn{margin-top:auto;width:100%}
/* v12 visual redesign */
:root{--navy:#062b57;--navy2:#0b376d;--blue:#1467e8;--red:#ef3d48;--green:#159447;--border:#e1e7ef;--muted:#667085}
body{background:#f7f9fc}.app{grid-template-columns:250px 1fr}aside{background:#fff;color:#16243a;border-right:1px solid var(--border);padding:0 14px 18px;gap:10px}.brand{background:linear-gradient(135deg,#062b57,#0b376d);color:#fff;margin:0 -14px 8px;padding:18px 20px}.brand strong{font-size:19px;letter-spacing:0}.brand span{font-size:12px;letter-spacing:0;color:#fff}.tag{display:none}.nav-section{font-size:11px;font-weight:800;color:#7352e8;padding:16px 12px 4px;letter-spacing:.5px}nav{gap:3px}nav button{color:#26344b;padding:11px 12px;border-radius:8px}nav button:hover,nav button.active{background:#eaf2ff;color:#0758d3;font-weight:700}.integration{color:#26344b;border-top:1px solid var(--border)}.integration small{color:#697586}main{padding:26px 34px}header{background:#fff;margin:-26px -34px 24px;padding:18px 34px;border-bottom:1px solid var(--border)}h1{color:#10223e}.btn{background:var(--blue);border-radius:8px}.btn.secondary{background:var(--navy)}.catalog-toolbar{display:grid;grid-template-columns:minmax(280px,1fr) 210px 210px;gap:12px;align-items:center}.catalog-toolbar .search{max-width:none;margin:0}.catalog-chips{display:flex;gap:10px;overflow:auto;padding:14px 0 4px}.chip{border:1px solid #dce3ec;background:#fff;color:#25344c;padding:9px 14px;border-radius:999px;white-space:nowrap;cursor:pointer}.chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:14px}.catalog-card{border-radius:12px;box-shadow:0 2px 8px rgba(18,42,75,.05);position:relative}.catalog-image{height:205px;background:#fff;padding:12px}.catalog-image img{object-fit:contain}.image-tag{display:none}.catalog-card-body{padding:14px;gap:8px}.catalog-card-body h3{font-size:16px;color:#0d1f3b;min-height:42px}.catalog-meta .pill{background:#e8f7ee;color:#137a3c;font-weight:800}.catalog-meta .muted{font-size:11px}.catalog-badges{position:absolute;z-index:2;left:12px;top:12px;display:flex;flex-direction:column;gap:5px}.badge-pref{background:#159447;color:#fff;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:800}.badge-most{background:#ffdf85;color:#684c00;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:800}.catalog-card .kv.compact b:last-child{color:#0c9346;font-size:16px}.catalog-card .btn{background:#fff;color:#0b61df;border:1.5px solid #0b61df}.catalog-intro{margin-bottom:16px}.catalog-intro h2{font-size:26px;margin:0 0 5px}.catalog-intro p{margin:0;color:var(--muted)}.catalog-count{color:var(--muted);font-size:13px;margin-top:14px}
@media(max-width:1000px){.catalog-toolbar{grid-template-columns:1fr 1fr}.catalog-toolbar .search{grid-column:1/-1}}@media(max-width:850px){aside{background:#fff}.catalog-toolbar{grid-template-columns:1fr}}

/* Role-based dashboard experience */
.role-hidden{display:none!important}.role-banner{background:linear-gradient(135deg,#062b57,#0b376d);color:#fff;border-radius:14px;padding:20px 22px;margin-bottom:18px}.role-banner span{display:block;text-transform:uppercase;letter-spacing:.7px;font-size:11px;font-weight:800;opacity:.8}.role-banner b{display:block;font-size:24px;margin:4px 0}.role-banner p{margin:0;opacity:.88;max-width:850px}.role-metrics{margin-bottom:18px}.metric.attention{border-top:4px solid var(--red)}.metric.savings{border-top:4px solid var(--green)}.metric.savings strong{color:var(--green)}.impact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;margin:18px 0}.impact-grid h3{margin-top:0}.savings-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #edf0f5}.savings-row b{color:var(--green)}.impact-grid small{display:block;color:var(--muted);margin-top:12px}.role-page-head h2{margin-bottom:4px}.role-page-head p{margin-top:0;color:var(--muted)}@media(max-width:900px){.impact-grid{grid-template-columns:1fr}}
/* Equipment lifecycle prototype */
.role-hidden{display:none!important}.asset-link small{font-weight:400}.attention strong{color:var(--red)}


/* Closed-loop post-purchase ROI monitoring */
.roi-flow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px;color:var(--navy)}.roi-flow span{color:#98a2b3;font-size:18px}.roi-flow b{font-size:12px;background:#f4f7fb;border:1px solid var(--border);padding:8px 10px;border-radius:8px}.roi-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:10px}.roi-head h2{margin-bottom:4px}.roi-filters{display:flex;gap:8px;flex-wrap:wrap}.pill.roi-green{background:#e7f7ed;color:#137a3c}.pill.roi-yellow{background:#fff3cd;color:#7a5a00}.pill.roi-red{background:#fdebed;color:#b82731}.pill.roi-blue{background:#eaf2ff;color:#0758d3}.roi-alert{border-left-color:#b82731;background:#fff7f7}.roi-alert p{margin:7px 0 12px}@media(max-width:900px){.roi-head{align-items:flex-start;flex-direction:column}.roi-flow{align-items:flex-start}}

/* v15 clean executive dashboard shell */
body{background:#f4f7fb;color:#10284c}.app{grid-template-columns:250px minmax(0,1fr)}aside{background:linear-gradient(180deg,#16324d 0%,#102a45 100%);color:#fff;border-right:0;padding:18px 10px 20px;gap:8px;box-shadow:4px 0 18px rgba(15,39,67,.08)}.brand{background:transparent;margin:0;padding:0 22px 4px;display:block;text-align:center}.brand .mark{width:46px;height:auto;display:block;margin:0 auto 5px}.brand strong{font-family:Georgia,serif;font-size:24px;letter-spacing:.4px}.brand span{font-size:16px;letter-spacing:1.5px;color:#50b8ff;margin-top:4px}.tag{display:block;border:0;text-align:center;color:#d7e3ef;font-size:13px;padding:0 0 12px}nav{gap:2px}.nav-section{color:#c5d3e1;font-size:11px;letter-spacing:.8px;padding:15px 18px 5px}nav button{color:#f4f7fb;border-radius:7px;padding:11px 18px;font-size:14px}nav button:hover,nav button.active{background:linear-gradient(90deg,#2b6bb0,#285f9a);color:#fff;font-weight:600;box-shadow:inset 3px 0 #4eb6ff}.integration{margin:8px 14px 0;color:#fff;border-top:1px solid rgba(255,255,255,.12);padding-top:14px}.integration span{font-size:12px}.integration small{color:#d5e1ec}main{padding:0 34px 34px;min-width:0}header{height:70px;margin:0 -34px 0;padding:13px 34px;background:#fff;border-bottom:1px solid #dfe6ef;box-shadow:0 2px 8px rgba(19,48,74,.04);justify-content:flex-end}header>div:first-child{display:none}#persona{border:1px solid #dbe3ed;border-radius:10px;background:#fff;padding:10px 38px 10px 14px;color:#17355d;font-weight:600}.pulse-top-search{margin-right:auto;max-width:500px;width:42%;position:relative}.pulse-top-search input{background:#f3f6fa;border:0;border-radius:11px;padding:12px 16px 12px 42px}.pulse-top-search:before{content:'⌕';position:absolute;left:14px;top:7px;font-size:25px;color:#7287a2}.pulse-user{display:flex;align-items:center;gap:10px;margin-left:16px;color:#10284c}.pulse-user i{font-style:normal;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#3975be;color:#fff}.pulse-user b{font-size:14px}.dashboard-home{padding-top:24px}.dash-welcome{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.dash-welcome h2{font-size:31px;margin:0 0 5px;color:#10284c}.dash-welcome p{margin:0;color:#6e819d;font-size:16px}.dash-date{color:#71839d;font-size:14px}.dash-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dash-metric,.dash-card{background:#fff;border:1px solid #dfe6ee;border-radius:11px;box-shadow:0 3px 10px rgba(20,51,82,.035)}.dash-metric{padding:17px;display:flex;align-items:center;gap:15px}.metric-icon{width:48px;height:48px;flex:0 0 48px;border-radius:50%;background:#eaf2ff;color:#235b9d;display:grid;place-items:center;font-size:23px;font-weight:800}.metric-icon.green{background:#e7f5eb;color:#32985b}.dash-metric span{display:block;font-size:13px;color:#314c70}.dash-metric strong{display:block;font-size:26px;margin:3px 0;color:#10284c}.dash-metric small{font-size:12px;color:#687d99}.dash-metric small.up{color:#32a154}.dash-two{display:grid;grid-template-columns:1.05fr 1fr;gap:14px;margin-top:14px}.dash-card{padding:18px;position:relative}.dash-card h3{margin:0 0 14px;font-size:18px;color:#10284c}.spend-layout{display:flex;align-items:center;gap:30px;min-height:230px}.donut{width:190px;height:190px;border-radius:50%;background:#eef2f7;display:grid;place-items:center;flex:0 0 auto}/* amerivet-pulse-2do: the fixed conic-gradient that used to live here (62/18/10/6/4) was decoration presenting as a breakdown - it showed a full ring beside $0 and was equally wrong, but far less obviously, once there was real spend. The ring is now generated from the same data as the legend, inline, by spendDonutStyle() in app.js. The neutral background above is the no-spend state; do not restore a gradient here. */.donut:before{content:'';width:116px;height:116px;border-radius:50%;background:#fff;position:absolute}.donut div{z-index:1;text-align:center}.donut b{display:block;font-size:24px}.donut span{font-size:13px;color:#526b8d}.spend-legend{display:grid;gap:14px;flex:1}.spend-legend div{display:grid;grid-template-columns:12px 1fr auto;gap:9px;align-items:center;font-size:13px}.spend-legend i{width:10px;height:10px;border-radius:50%}.spend-legend .c1{background:#2d64a6}.spend-legend .c2{background:#2ca6be}.spend-legend .c3{background:#b7d982}.spend-legend .c4{background:#aebbc9}.spend-legend .c5{background:#cbdcf3}.dash-link{border:0;background:transparent;color:#1269d8;cursor:pointer;font-weight:600;padding:5px}.dash-card>.dash-link{position:absolute;right:16px;bottom:12px}.status-chart{height:230px;border-bottom:1px solid #dbe4ef;display:flex;align-items:flex-end;justify-content:space-around;gap:12px;padding:30px 8px 0;background:repeating-linear-gradient(to top,transparent 0,transparent 49px,#e8eef5 50px)}.bar-col{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:64px}.bar-col>b{font-size:13px;margin-bottom:5px}.bar{width:48px;border-radius:4px 4px 0 0;background:#2d64a6}.bar.pending{background:#4b9de0}.bar.approved{background:#65b96e}.bar.completed{background:#a9b4c2}.bar.denied{background:#d95050}.bar-col span{height:42px;text-align:center;font-size:11px;color:#405b7f;padding-top:7px}.dash-bottom{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;margin-top:14px}.card-head{display:flex;align-items:center;justify-content:space-between}.card-head h3{margin:0}.card-head .dash-link{position:static}.activity-table{width:100%;border-collapse:collapse;font-size:12px}.activity-table th{text-align:left;background:#f1f4f8;color:#49617f;padding:7px}.activity-table td{padding:9px 7px;border-bottom:1px solid #e9eef4}.status-pill{background:#eaf2ff;color:#2766aa;padding:4px 9px;border-radius:999px;white-space:nowrap}.quick-card{display:flex;flex-direction:column}.quick-card button{border:1px solid #dfe6ee;background:#fff;border-radius:9px;padding:10px 14px;color:#17365f;text-align:left;display:grid;grid-template-columns:30px 1fr auto;align-items:center;cursor:pointer;margin-bottom:5px}.quick-card button:hover{background:#f6f9fd;border-color:#b9cce2}.quick-card button b{font-size:18px}.quick-card button span{font-size:22px;color:#6e819b}@media(max-width:1100px){.dash-metrics{grid-template-columns:1fr 1fr}.dash-two,.dash-bottom{grid-template-columns:1fr}.spend-layout{justify-content:center}}@media(max-width:850px){header{margin:0 -20px;padding:12px 20px}.pulse-top-search,.pulse-user{display:none}.dash-welcome{align-items:flex-start;gap:8px;flex-direction:column}.dash-metrics{grid-template-columns:1fr}.spend-layout{flex-direction:column}.app{grid-template-columns:1fr}}

/* OD / RVP dashboard parity */
.role-spend-list{display:grid;gap:14px;margin:20px 0 26px}.role-spend-list>div{display:grid;grid-template-columns:14px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f6}.role-spend-list i{width:10px;height:10px;border-radius:50%;display:block}.role-spend-list .c1{background:#2f65a8}.role-spend-list .c2{background:#38a9bf}.role-spend-list .c3{background:#b7d987}.role-spend-list .c4{background:#aab8ca}.role-spend-list .c5{background:#9dc5ef}.role-spend-list b{color:#102b55}.role-dashboard .dash-metric small{color:#71809a}

/* Ticket attention highlighting */
.table tr.ticket-needs-attention td{background:#fff8cf}.table tr.ticket-needs-attention td:first-child{box-shadow:inset 4px 0 0 #e6b800}.table tr.ticket-needs-urgent td{background:#fff0f5}.table tr.ticket-needs-urgent td:first-child{box-shadow:inset 4px 0 0 #d63384}.attention-tag{display:block;width:max-content;margin-top:5px;padding:3px 7px;border-radius:999px;background:#ffe59a;color:#6f5200;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.25px}.ticket-needs-urgent .attention-tag{background:#ffd5e4;color:#8c2451}.table tr.ticket-needs-attention:hover td{background:#fff3b0}.table tr.ticket-needs-urgent:hover td{background:#ffe3ed}

/* CapEx spend tracker filters + executive demo */
.spend-filter-panel{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;background:#fff;border:1px solid #dfe6ee;border-radius:11px;padding:16px;margin:16px 0}.spend-filter-panel label span{display:block;font-size:12px;font-weight:700;color:#405b7f;margin-bottom:6px}.spend-breakdowns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.spend-breakdowns h3{margin-top:0}.breakdown-list{display:grid;gap:2px}.breakdown-list>div{display:grid;grid-template-columns:minmax(0,1fr) auto 48px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid #edf1f6;font-size:13px}.breakdown-list small{text-align:right;color:#71839d}.demo-spend-row{background:#f8fbff}.demo-badge{display:inline-block;background:#eaf2ff;color:#1f64ad;border:1px solid #c9dcf4;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800;letter-spacing:.5px}@media(max-width:1100px){.spend-filter-panel{grid-template-columns:1fr 1fr 1fr}.spend-breakdowns{grid-template-columns:1fr}}@media(max-width:760px){.spend-filter-panel{grid-template-columns:1fr}.spend-breakdowns{grid-template-columns:1fr}}

/* SIGN-IN GATE (amerivet-pulse-l1d.55). ONE mechanism controls visibility, deliberately.
   The first version carried class="hidden" AND an inline style="display:flex". An inline
   style beats a class rule, so .hidden{display:none} never won and the gate could not be
   hidden - a successful sign-in would still have left it covering the app. Here the ID rule
   hides it by default and .is-open shows it; ID specificity beats any class, there is no
   inline style to disagree with, and no !important is needed. The layout moving out of the
   markup also removes one more inline style, which amerivet-pulse-1we has to clear before
   style-src can drop 'unsafe-inline'. */
#signinGate{display:none;position:fixed;inset:0;background:#f5f7fb;align-items:center;justify-content:center;z-index:9999}
#signinGate.is-open{display:flex}
#signinGate .signin-card{background:#fff;border:1px solid #e1e5ed;border-radius:13px;padding:32px;max-width:460px;text-align:center}
#signinGate h2{margin-top:0}
#signinGate .muted{color:#68738b;font-size:13px;margin-top:14px}
#signinGate button.is-hidden{display:none}

/* amerivet-pulse-6pc: the role-preview banner. Deliberately loud - its whole job is to
   stop an admin forgetting they are previewing and reporting a bug that is not real. */
.preview-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 18px;padding:14px 18px;border-radius:10px;background:#5b2d8e;color:#fff;border:2px solid #3d1c63;box-shadow:0 3px 12px rgba(61,28,99,.25)}
.preview-banner b{display:block;font-size:15px;letter-spacing:.3px}
.preview-banner p{margin:5px 0 0;font-size:13px;color:#eadcff;max-width:78ch}
.preview-banner .btn{background:#fff;color:#3d1c63;border:0;flex:0 0 auto;font-weight:700}
