:root{--ink:#eef7ff;--muted:#8da1b5;--subtle:#53677c;--bg:#06121f;--panel:#0b1b2a;--panel-2:#0e2234;--line:#1a3348;--line-soft:#132b3e;--teal:#28c7ba;--teal-2:#5de3d7;--blue:#3a87ff;--red:#ff7086;--amber:#f5b85c;--green:#53d49b;--shadow:0 22px 70px rgba(0,0,0,.32);--radius:18px;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:dark}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;min-height:100vh;background:radial-gradient(circle at 8% 4%,rgba(35,199,186,.12),transparent 33%),linear-gradient(145deg,#061521 0%,#071424 52%,#081625 100%);color:var(--ink);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}a{color:var(--teal-2);text-decoration:none}a:hover{text-decoration:underline}.ambient{position:fixed;pointer-events:none;filter:blur(95px);opacity:.16;border-radius:50%;z-index:0}.ambient-one{width:320px;height:320px;background:var(--teal);top:8%;left:-170px}.ambient-two{width:420px;height:420px;background:var(--blue);right:-240px;bottom:-100px}.topbar,.customer-topbar{height:72px;border-bottom:1px solid rgba(91,126,153,.2);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:relative;z-index:5;background:rgba(5,17,29,.72);backdrop-filter:blur(22px)}.brand{display:inline-flex;align-items:center;gap:11px;color:var(--ink)}.brand:hover{text-decoration:none}.brand-mark{width:38px;height:38px;border:1px solid #25506a;border-radius:11px;display:grid;place-items:center;font-size:15px;font-weight:850;letter-spacing:-.04em;background:linear-gradient(145deg,#122c42,#071827);box-shadow:inset 0 0 0 1px rgba(90,227,215,.05)}.brand b{display:block;font-size:16px;line-height:1.05}.brand small{display:block;color:#7890a6;font-size:8px;letter-spacing:.22em;font-weight:800;margin-top:3px}.top-actions{display:flex;align-items:center;gap:10px}.environment-pill{display:flex;align-items:center;gap:8px;color:#8fa6ba;border:1px solid var(--line);background:#0b1b29;padding:7px 11px;border-radius:999px;font-size:11px;font-weight:700}.environment-pill i,.save-indicator i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(83,212,155,.08)}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#17364c;color:#dff9f6;font-weight:850;font-size:11px;border:1px solid #2b516a}.workspace-shell{position:relative;z-index:1;max-width:1480px;margin:0 auto;padding:42px 34px 70px}.hero-row{display:flex;flex-direction:column;align-items:stretch;gap:22px;margin-bottom:28px}
/* The tagline is the whole subtext: one line under the heading, quiet, no explanation. */
.hero-tagline{margin:10px 0 0;color:#9fb6c8;font-size:15px;letter-spacing:.01em}.eyebrow{color:var(--teal);font-size:10px;letter-spacing:.19em;font-weight:850;margin:0 0 8px}.hero-row h1,.customer-heading h1{font-size:34px;letter-spacing:-.045em;line-height:1.04;margin:0}.lede,.customer-heading p{color:var(--muted);max-width:740px;margin:10px 0 0}.primary-button,.secondary-button,.ghost-button,.icon-button{border:0;border-radius:10px;cursor:pointer;font-weight:800;transition:.16s ease;white-space:nowrap}.primary-button{background:linear-gradient(135deg,#37d4c5,#1db6ad);color:#021713;padding:12px 18px;box-shadow:0 9px 26px rgba(40,199,186,.16)}.primary-button:hover{transform:translateY(-1px);box-shadow:0 12px 32px rgba(40,199,186,.22);text-decoration:none}.primary-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.secondary-button,.ghost-button{background:#0d2232;border:1px solid #264257;color:#cae0ee;padding:11px 16px}.ghost-button{font-size:12px;padding:8px 12px}.secondary-button:hover,.ghost-button:hover{background:#122b3e;text-decoration:none}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric{border:1px solid var(--line);background:linear-gradient(145deg,rgba(13,32,48,.92),rgba(8,24,37,.94));border-radius:15px;padding:18px;box-shadow:0 10px 30px rgba(0,0,0,.12)}.metric span{display:block;color:#8ba0b4;font-size:11px;font-weight:750}.metric b{display:block;font-size:29px;letter-spacing:-.04em;margin:4px 0 2px}.metric small{color:#6a8297}.metric.accent{border-color:rgba(40,199,186,.35);background:linear-gradient(145deg,rgba(20,63,66,.58),rgba(8,26,39,.95))}.metric.accent b{color:#8af3e7}.control-panel{border:1px solid var(--line);background:rgba(7,23,36,.88);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.tabs-row{display:flex;align-items:stretch;gap:2px;padding:12px 14px 0;border-bottom:1px solid var(--line-soft);overflow-x:auto}.tab-button{min-width:max-content;display:flex;align-items:center;gap:8px;background:transparent;border:0;border-bottom:2px solid transparent;color:#8196a8;padding:10px 14px 13px;cursor:pointer;font-weight:750}.tab-button.active{color:#ebfbff;border-bottom-color:var(--teal)}.tab-button.locked{opacity:.5;cursor:not-allowed}.tab-button em{font-style:normal;color:#688397;font-size:9px;border:1px solid #294156;padding:2px 5px;border-radius:999px}.tab-button.pilot{margin-left:auto}.tab-icon{width:23px;height:23px;border-radius:7px;display:grid;place-items:center;font-size:10px;color:#efffff;background:#153a48;border:1px solid #23566b}.tab-icon.hospitality{background:#1c3155;border-color:#2e4d7b}.tab-icon.restaurant{background:#2a3a1e;border-color:#43592c}.tab-icon.patrol{background:#30313a;border-color:#464955}.tab-icon.cargo{background:#3a2d1f;border-color:#59442c}.tab-icon.pilot{background:#3a2846;border-color:#5a3a6e}.toolbar{display:flex;align-items:center;gap:10px;padding:15px;border-bottom:1px solid var(--line-soft)}.search-field{display:flex;align-items:center;gap:8px;flex:1;min-width:220px;background:#081a28;border:1px solid #1c364a;border-radius:10px;padding:0 12px}.search-field span{font-size:22px;color:#5f788e;transform:rotate(-20deg)}.search-field input{width:100%;border:0;background:transparent;outline:0;color:var(--ink);padding:10px 0}.toolbar select,.form-grid select{background:#081a28;border:1px solid #1c364a;color:#cfe1ec;padding:10px 32px 10px 11px;border-radius:10px}.toolbar select{flex:0 0 auto;width:auto;min-width:190px}.result-count{color:#6a8397;font-size:11px;margin-left:auto}.case-list{min-height:340px}.case-row{display:grid;grid-template-columns:minmax(230px,1.4fr) minmax(160px,.8fr) 110px 105px 130px 110px;gap:16px;align-items:center;padding:15px 18px;border-bottom:1px solid #11283a}.case-row:last-child{border-bottom:0}.case-row:hover{background:rgba(37,89,114,.08)}.case-customer{display:flex;gap:11px;align-items:center}.case-monogram{width:35px;height:35px;display:grid;place-items:center;border-radius:10px;background:#102b3e;color:#82e8de;border:1px solid #21485e;font-weight:850}.case-customer b,.case-cell b{display:block;color:#e9f6fc}.case-customer small,.case-cell small{display:block;color:#657d91;font-size:10px;margin-top:1px}.status-badge{display:inline-flex;align-items:center;gap:6px;width:max-content;border:1px solid #294257;background:#102233;border-radius:999px;padding:5px 9px;color:#9fb3c3;font-size:10px;font-weight:800}.status-badge.ready_to_provision,.status-badge.live{color:#81ebbf;border-color:#256249;background:rgba(25,93,66,.2)}.status-badge.signature_pending{color:#f4c575;border-color:#68522a;background:rgba(96,70,26,.18)}.status-badge.payment_pending{color:#91bbff;border-color:#315c91;background:rgba(35,73,122,.17)}.row-action{justify-self:end;background:#0b1f2f;border:1px solid #213b4e;color:#b8ccd9;border-radius:8px;padding:7px 10px;cursor:pointer}.loading-state,.empty-state{text-align:center;min-height:300px;display:grid;place-content:center;justify-items:center;color:#70879a}.loading-state.small{min-height:180px}.spinner{width:22px;height:22px;border:2px solid #29475d;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.workflow-strip{margin-top:18px;border:1px solid var(--line-soft);background:rgba(7,22,35,.7);border-radius:15px;padding:17px 24px;display:flex;align-items:center;justify-content:space-between}.workflow-strip div{display:grid;grid-template-columns:30px auto;column-gap:9px;align-items:center}.workflow-strip div span{grid-row:1/3;width:30px;height:30px;border:1px solid #24556a;background:#0e3040;color:#66e1d6;border-radius:9px;display:grid;place-items:center;font-weight:850;font-size:11px}.workflow-strip div b{font-size:11px}.workflow-strip div small{color:#6d8497;font-size:9px}.workflow-strip>i{height:1px;min-width:20px;flex:1;margin:0 15px;background:linear-gradient(90deg,#1c4455,#183142)}
.modal{width:min(720px,calc(100vw - 32px));border:1px solid #274357;border-radius:18px;padding:0;background:#091a28;color:var(--ink);box-shadow:0 40px 120px #000}.modal::backdrop{background:rgba(1,7,13,.76);backdrop-filter:blur(6px)}.modal form{padding:22px}.compact-modal{padding:22px;max-width:610px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:12px}
/* A long report scrolls under the header, never past it: the close control is always in reach. */
.modal .modal-head{position:sticky;top:0;z-index:3;background:linear-gradient(180deg,#091a28 82%,rgba(9,26,40,0));padding:22px 0 12px;margin:-22px 0 12px}.modal-head h2{margin:0;font-size:24px;letter-spacing:-.035em}.icon-button{background:transparent;color:#8198a9;font-size:25px;padding:0 5px}.modal-copy{color:#859aac;margin:0 0 18px}.form-grid{display:grid;gap:13px}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(3,1fr)}.form-grid .wide{grid-column:1/-1}label>span,fieldset legend{display:block;color:#8ea3b5;font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;margin:0 0 6px}label.question>span{text-transform:none;letter-spacing:0;font-size:12px;line-height:1.45;color:#b4c6d3;font-weight:700}input,select,textarea{width:100%;background:#071724;border:1px solid #1e394d;border-radius:9px;color:#ecf7fd;padding:11px 12px;outline:0}input:focus,select:focus,textarea:focus{border-color:#2ebfb3;box-shadow:0 0 0 3px rgba(46,191,179,.08)}input:disabled,select:disabled{opacity:.55}fieldset{border:1px solid #193246;border-radius:13px;margin:18px 0 0;padding:15px}fieldset legend{padding:0 7px}.check-line{display:flex;align-items:flex-start;gap:10px;margin:14px 0}.check-line input{width:17px;height:17px;margin:2px 0 0;accent-color:var(--teal);flex:0 0 auto}.check-line span{font-size:12px;text-transform:none;letter-spacing:0;line-height:1.45;color:#b4c6d3;margin:0}.notice{border:1px solid;padding:11px 13px;border-radius:10px;margin:14px 0;display:flex;align-items:flex-start;gap:7px;font-size:11px}.notice b{white-space:nowrap}
@media(max-width:720px){.notice{flex-wrap:wrap}.notice b{white-space:normal}}.notice.stacked{flex-direction:column;gap:5px}.notice.stacked b{white-space:normal}.notice.blue{border-color:#274b70;background:rgba(34,86,139,.13);color:#a6c7e8}.notice.amber{border-color:#5d4a28;background:rgba(103,74,24,.13);color:#d7ba83}.form-error{color:#ff91a2;font-size:11px;min-height:16px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.copy-field{display:flex;gap:8px}.copy-field button{border:1px solid #2e5c72;background:#123246;color:#8ee9df;border-radius:9px;padding:0 14px;cursor:pointer}.toast{position:fixed;right:24px;bottom:24px;z-index:20;background:#0d2939;border:1px solid #2e596d;color:#d7edf4;border-radius:11px;padding:12px 16px;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}
.customer-topbar{max-width:none}.secure-label{color:#8197aa;font-size:11px;font-weight:750;display:flex;gap:7px;align-items:center}.secure-label span{color:var(--green)}.customer-shell{position:relative;z-index:1;width:min(1120px,calc(100% - 36px));margin:0 auto;padding:38px 0 70px}.customer-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.customer-heading h1{font-size:31px}.save-indicator{display:flex;align-items:center;gap:9px;color:#7f96a9;border:1px solid var(--line);background:rgba(9,25,38,.75);border-radius:999px;padding:8px 12px;font-size:10px;white-space:nowrap}.save-indicator.saving i{background:var(--amber)}.save-indicator.error i{background:var(--red)}.stepper{display:flex;align-items:center;margin:28px 0 18px;padding:14px 20px;border:1px solid var(--line-soft);border-radius:14px;background:rgba(7,22,35,.72);overflow-x:auto}.stepper button{min-width:max-content;border:0;background:transparent;color:#6d8497;display:flex;align-items:center;gap:7px;padding:0;cursor:default}.stepper button span{width:25px;height:25px;border:1px solid #294155;border-radius:8px;display:grid;place-items:center;font-size:10px;font-weight:850}.stepper button b{font-size:10px}.stepper button.active{color:#effcff}.stepper button.active span{border-color:#2bbbad;background:#123f48;color:#7ce8dd}.stepper button.complete span{border-color:#276047;background:#17392f;color:#6de0aa}.stepper i{height:1px;min-width:18px;flex:1;background:#1a3244;margin:0 10px}.form-card{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(145deg,rgba(12,31,47,.96),rgba(7,23,36,.97));padding:27px;box-shadow:var(--shadow)}.error-card{text-align:center;padding:70px 25px}.empty-icon{width:48px;height:48px;border:1px solid #724253;background:#321a26;color:#ff8ca0;border-radius:15px;display:grid;place-items:center;margin:auto;font-size:24px;font-weight:900}.error-card h2{margin-bottom:6px}.error-card p{color:#8fa3b4;max-width:560px;margin:0 auto}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.section-head h2{font-size:25px;letter-spacing:-.035em;margin:0}.section-head p{color:#859aad;margin:6px 0 0}.required-key,.document-version{color:#688397;font-size:9px;text-transform:uppercase;letter-spacing:.08em;border:1px solid #294154;border-radius:999px;padding:5px 8px;white-space:nowrap}.site-summary{display:flex;gap:22px;border:1px solid #183349;border-radius:11px;background:#071a29;padding:11px 14px;margin-bottom:14px}.site-summary span{font-size:10px;color:#738b9f}.site-summary b{color:#d7edf3}.site-card{border:1px solid #1a3549;border-radius:14px;background:rgba(6,20,31,.54);padding:17px;margin-bottom:12px}.site-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.site-head h3{margin:0;font-size:14px}.site-head small{color:#698297;margin-left:7px}.remove-site{border:0;background:transparent;color:#c37c89;cursor:pointer;font-size:11px}.ai-details{padding-top:12px;margin-top:13px;border-top:1px solid #173044}.microcopy{font-size:10px;color:#698195;margin:12px 0 0}/* Three committed terms on every edition since month to month left the page: three equal columns,
   never a fourth left empty. */
.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.plan-card{position:relative;display:flex;flex-direction:column;border:1px solid #1d384b;background:#071a28;border-radius:14px;padding:19px 17px 17px;cursor:pointer}.plan-card:hover{border-color:#2a566b}.plan-card:has(input:checked){border-color:#31c6b9;box-shadow:inset 0 0 0 1px rgba(49,198,185,.25),0 12px 28px rgba(0,0,0,.12)}.plan-card.recommended:before{content:"MOST POPULAR";position:absolute;top:-9px;left:16px;background:#2ac6b8;color:#041713;border-radius:999px;padding:3px 9px;font-size:8px;font-weight:950;letter-spacing:.1em;line-height:1.5}.plan-card input{position:absolute;opacity:0}.plan-check{position:absolute;right:13px;top:13px;width:16px;height:16px;border-radius:50%;border:1px solid #38536a}.plan-card:has(input:checked) .plan-check{border:4px solid #2bc4b7}.plan-card em{display:block;font-size:9px;color:#5ddecf;text-transform:uppercase;letter-spacing:.09em;font-style:normal;font-weight:800}.plan-card h3{font-size:18px;margin:7px 0 17px}.plan-card strong{font-size:24px;letter-spacing:-.04em}.plan-card small{display:block;color:#70879a;font-size:9px;line-height:1.35}.plan-card ul{padding-left:15px;margin:18px 0 0;margin-top:auto;padding-top:18px;color:#8ba1b3;font-size:10px}.pricing-summary{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #1d3a4e;border-radius:13px;overflow:hidden;margin-top:15px}.pricing-summary>div{padding:13px 15px;border-right:1px solid #183245;border-bottom:1px solid #183245}.pricing-summary>div:nth-child(3n){border-right:0}.pricing-summary>div:nth-last-child(-n+3){border-bottom:0}.pricing-summary span{display:block;color:#748ca0;font-size:9px;text-transform:uppercase;letter-spacing:.07em}.pricing-summary b{font-size:15px}.pricing-summary .total{background:rgba(40,199,186,.09)}.pricing-summary .total b{color:#7aece0}.document-viewer{height:390px;overflow:auto;border:1px solid #213b4f;border-radius:13px;background:#f7f9fb;color:#1b2834;padding:26px 34px;line-height:1.6;scrollbar-color:#8196a8 #e5ebef}.document-viewer h1{font-size:23px}.document-viewer h2{font-size:16px;margin-top:26px}.document-viewer h3{font-size:14px}.document-viewer p,.document-viewer li{font-size:12px}.document-viewer blockquote{border-left:3px solid #1f9e94;margin:13px 0;padding:8px 14px;background:#edf7f6}.scroll-gate{margin-top:10px;border:1px solid #614e2d;background:#282114;color:#d7bb82;border-radius:10px;padding:10px 13px;display:flex;align-items:center;gap:8px;font-size:11px}.scroll-gate.complete{border-color:#28624b;background:#112a22;color:#83dcaf}.scroll-gate.complete span{transform:rotate(-90deg)}.acknowledgements:disabled{opacity:.5}.acknowledgements .check-line{padding-bottom:10px;border-bottom:1px solid #183145}.status-panel{text-align:center;padding:52px min(8vw,80px)}.status-orb{width:60px;height:60px;display:grid;place-items:center;margin:0 auto 18px;border:1px solid #2d6274;background:linear-gradient(145deg,#16495a,#0b2534);border-radius:20px;color:#76e4d9;font-size:25px;box-shadow:0 13px 34px rgba(0,0,0,.2)}.status-orb.stripe{background:linear-gradient(145deg,#3f3b89,#232658);border-color:#5f60aa;color:#c1c2ff;font-weight:900}.status-panel h2{font-size:26px;margin:0}.status-panel>p:not(.eyebrow):not(.form-error){color:#8ba0b2;max-width:650px;margin:8px auto 22px}.packet-list{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-bottom:22px}.packet-list span{border:1px solid #223f52;background:#0a1f2f;border-radius:999px;color:#91a7b8;padding:6px 9px;font-size:9px}.wide-button{min-width:310px}.payment-recap{max-width:590px;margin:20px auto;display:grid;grid-template-columns:1fr 1fr;border:1px solid #203b4f;border-radius:12px;overflow:hidden;text-align:left}.payment-recap div{padding:12px 15px;border-bottom:1px solid #173144}.payment-recap div:nth-child(odd){border-right:1px solid #173144}.payment-recap span{display:block;color:#71899c;font-size:9px;text-transform:uppercase}.payment-recap b{font-size:14px}.form-navigation{display:flex;justify-content:space-between;align-items:center;padding:17px 4px}.form-navigation>div{display:flex;align-items:center;gap:13px}.form-navigation span{font-size:10px;color:#688095}.support-line{text-align:center;color:#5f778b;font-size:10px;margin:22px 0}.support-line a{font-weight:800}
.test-mode-banner{display:flex;align-items:flex-start;gap:10px;margin:18px 0 -10px;border:1px solid #76572b;background:rgba(139,94,24,.18);color:#d8bd8d;border-radius:12px;padding:12px 14px;font-size:11px}.test-mode-banner[hidden]{display:none}.test-mode-banner b{color:#ffd384;white-space:nowrap}.test-mode-banner span{color:#bfae91}
.case-modal{width:min(900px,calc(100vw - 32px));max-height:min(850px,calc(100vh - 32px));padding:0}.case-dialog-shell{padding:22px}.case-detail{color:#cde0ea}.detail-status-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:12px 14px;border:1px solid #1d394d;background:#071724;border-radius:11px;margin-bottom:14px}.detail-status-row>span:not(.status-badge){font-size:10px;color:#6f879a;text-transform:uppercase;letter-spacing:.05em}.detail-status-row b{color:#dcecf4}.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #1d394d;border-radius:12px;overflow:hidden}.detail-grid>div{min-height:84px;padding:13px;border-right:1px solid #173145;border-bottom:1px solid #173145}.detail-grid>div:nth-child(4n){border-right:0}.detail-grid>div:nth-last-child(-n+4){border-bottom:0}.detail-grid small,.detail-grid span{display:block;color:#6f879a;font-size:9px}.detail-grid small{text-transform:uppercase;letter-spacing:.07em;margin-bottom:5px}.detail-grid b{display:block;color:#e3f0f7;font-size:12px}.detail-section{margin-top:18px}.detail-section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.detail-section h3{font-size:13px;margin:0}.detail-section-head span{color:#627c8f;font-size:9px;text-transform:uppercase;letter-spacing:.07em}.detail-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.detail-list article{padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:10px}.detail-list b,.detail-list span,.detail-list small{display:block}.detail-list b{font-size:11px;color:#def0f7}.detail-list span{font-size:10px;color:#91a5b4;margin:2px 0}.detail-list small{font-size:9px;color:#6a8397}.detail-empty{border:1px dashed #213c50;border-radius:10px;color:#657f92;padding:14px;margin:0;font-size:10px}.timeline{display:grid;grid-template-columns:1fr 1fr;gap:7px}.timeline article{display:flex;align-items:flex-start;gap:9px;padding:9px 11px;border:1px solid #173247;border-radius:9px}.timeline i{width:7px;height:7px;border-radius:50%;background:#2bc2b5;margin-top:5px;box-shadow:0 0 0 4px rgba(43,194,181,.08)}.timeline b,.timeline span{display:block}.timeline b{font-size:10px;text-transform:capitalize}.timeline span{color:#667f92;font-size:9px}.empty-state.compact{min-height:220px}
.segment-badge{display:inline-flex!important;align-items:center;margin-left:7px;border:1px solid #2a6f6a;background:rgba(32,191,178,.16);color:#7fe0d6!important;border-radius:999px;padding:2px 6px;font-size:7px!important;letter-spacing:.08em;font-weight:800}
.test-badge{display:inline-flex!important;align-items:center;margin-left:7px;border:1px solid #76572b;background:rgba(139,94,24,.2);color:#f5c879!important;border-radius:999px;padding:2px 6px;font-size:7px!important;font-style:normal;font-weight:900;letter-spacing:.1em;vertical-align:middle}.test-toggle{border:1px solid #5d4a28;background:rgba(103,74,24,.11);border-radius:10px;padding:11px 13px}.test-toggle span b{color:#f5c879}.reminder-control{border:1px solid #274b70;background:rgba(34,86,139,.1);border-radius:12px;padding:13px}.reminder-control .assignment-copy{border-color:#274b70;background:rgba(7,24,36,.36)}
@media(max-width:1050px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.case-row{grid-template-columns:minmax(210px,1fr) 150px 110px 120px}.case-row .case-cell:nth-child(4),.case-row .case-cell:nth-child(5){display:none}.workflow-strip{overflow-x:auto;justify-content:flex-start}.workflow-strip div{min-width:135px}.stepper button b{display:none}.stepper button.active b{display:block}.stepper i{min-width:12px}.detail-grid{grid-template-columns:repeat(2,1fr)}.detail-grid>div:nth-child(4n){border-right:1px solid #173145}.detail-grid>div:nth-child(2n){border-right:0}.detail-grid>div:nth-last-child(-n+4){border-bottom:1px solid #173145}.detail-grid>div:nth-last-child(-n+2){border-bottom:0}}
@media(max-width:720px){.topbar,.customer-topbar{padding:0 18px;height:64px}.environment-pill,.ghost-button,.secure-label{display:none}.workspace-shell{padding:28px 16px 55px}.hero-row,.customer-heading{align-items:flex-start;flex-direction:column}.hero-row h1,.customer-heading h1{font-size:28px}.hero-row .primary-button{width:100%}.metrics-grid{grid-template-columns:1fr 1fr}.metric{padding:14px}.tabs-row{padding-left:8px}.tab-button.pilot{margin-left:0}.toolbar{flex-wrap:wrap}.search-field{flex-basis:100%}.toolbar select{flex:1 1 100%;width:100%}.case-row{grid-template-columns:1fr 110px 40px;gap:8px;padding:14px}.case-row .case-cell{display:none}.row-action{font-size:0;width:34px;height:34px}.row-action:after{content:"→";font-size:13px}.workflow-strip{padding:14px;display:grid;grid-template-columns:1fr 1fr;gap:13px 10px;overflow-x:visible}.workflow-strip>i{display:none}.workflow-strip div{min-width:0}.tabs-row{flex-wrap:wrap;overflow-x:visible}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.customer-shell{width:min(100% - 24px,1120px);padding-top:25px}.stepper{padding:12px}.stepper button span{width:23px;height:23px}.form-card{padding:20px 16px}.section-head{flex-direction:column}.section-head .secondary-button{width:100%}.site-summary{flex-wrap:wrap;gap:8px 16px}.plan-grid{grid-template-columns:1fr}.plan-card{min-height:auto}.pricing-summary{grid-template-columns:1fr 1fr}.pricing-summary>div,.pricing-summary>div:nth-child(3n){border-right:1px solid #183245;border-bottom:1px solid #183245}.pricing-summary>div:nth-child(even){border-right:0}.pricing-summary>div:nth-last-child(-n+2){border-bottom:0}.document-viewer{padding:20px;height:360px}.wide-button{min-width:0;width:100%}.form-navigation>div{gap:8px}.modal form,.compact-modal{padding:18px}.modal-actions>*{flex:1}.case-dialog-shell{padding:18px}.detail-list,.timeline{grid-template-columns:1fr}}
@media(max-width:460px){.metrics-grid{grid-template-columns:1fr}.stepper i{margin:0 5px}.stepper button span{width:21px;height:21px}.pricing-summary{grid-template-columns:1fr}.pricing-summary>div,.pricing-summary>div:nth-child(3n){border-right:0}.pricing-summary>div:nth-last-child(-n+2){border-bottom:1px solid #183245}.pricing-summary>div:last-child{border-bottom:0}.form-navigation{align-items:stretch;gap:9px}.form-navigation>div{display:grid;grid-template-columns:1fr}.form-navigation>div span{display:none}}

.device-assignment{border-color:rgba(40,199,186,.3);background:rgba(12,50,57,.18)}.device-assignment .detail-section-head>div span{display:block;color:#58cfc4;font-size:9px;text-transform:uppercase;letter-spacing:.08em;margin-top:2px}.assignment-copy{margin:0 0 12px}.device-assignment-list{display:grid;gap:9px}.device-assignment-row{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(145px,.8fr) minmax(165px,.9fr) 110px;gap:10px;align-items:end;border:1px solid #1b3b4b;background:#071b28;border-radius:11px;padding:12px}.device-site{align-self:center}.device-site b,.device-site small{display:block}.device-site small{color:#6e8799;font-size:9px;margin-top:2px}.device-assignment-row label>span{font-size:8px}.device-assignment-row input{padding:8px 9px}.assignment-state{align-self:center;justify-self:end;border:1px solid #59472a;background:rgba(112,78,22,.16);color:#d8b777;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:800;white-space:nowrap}.assignment-state.complete{border-color:#286047;background:rgba(26,91,65,.18);color:#7fe1b2}.assignment-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:12px}.assignment-actions button:disabled{opacity:.45;cursor:not-allowed}.device-assignment-row input:disabled{background:#0b202d;color:#90a8b8}.shipping-panel{grid-column:1/-1;border-top:1px solid #18384b;margin-top:4px;padding-top:13px}.shipping-panel.complete{border:1px solid rgba(83,212,155,.28);background:rgba(20,70,54,.12);border-radius:10px;padding:12px;margin-top:8px}.shipping-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}.shipping-title b,.shipping-title small{display:block}.shipping-title b{font-size:11px;color:#dff1f7}.shipping-title small{font-size:9px;color:#6f879a;margin-top:2px}.shipping-mode{font-size:8px;text-transform:uppercase;letter-spacing:.09em;font-weight:850;border:1px solid #5a4c2a;background:rgba(112,82,28,.18);color:#e0bc79;padding:4px 7px;border-radius:999px}.shipping-mode.live{border-color:#28614c;background:rgba(35,100,73,.18);color:#78dfad}.package-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.package-grid label span,.rate-select>span{font-size:8px}.package-grid input,.rate-select select{padding:8px 9px;font-size:11px}.shipping-protections{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.shipping-protections span{border:1px solid #24513f;background:rgba(29,91,65,.15);color:#7fdcb0;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:750}.rate-select{display:block;margin-top:8px}.shipping-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.shipping-actions button{font-size:10px;padding:9px 12px}.shipping-note{font-size:9px;color:#6d8597;margin:9px 0 0}.shipping-warning{border:1px solid #604c2a;background:rgba(101,74,26,.16);color:#d7ba83;border-radius:8px;padding:8px 10px;font-size:9px}.shipping-links{display:flex;flex-wrap:wrap;gap:7px}.shipping-links a{border:1px solid #24556a;background:#0d2d3c;color:#79e4da;border-radius:8px;padding:6px 9px;font-size:9px;font-weight:750}
@media(max-width:900px){.device-assignment-row{grid-template-columns:1fr 1fr}.assignment-state{justify-self:start}}
@media(max-width:600px){.device-assignment-row{grid-template-columns:1fr}.assignment-actions{display:grid;grid-template-columns:1fr}.package-grid{grid-template-columns:1fr 1fr}.shipping-actions{display:grid;grid-template-columns:1fr}}
.hospitality-plan{display:grid;gap:14px;margin-top:8px}.hospitality-tier-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid #1d3a4e;border-radius:13px;overflow:hidden}.hospitality-tier-grid span{display:grid;gap:5px;padding:13px;border-right:1px solid #183245;color:#7890a2;font-size:10px}.hospitality-tier-grid span:last-child{border-right:0}.hospitality-tier-grid b{color:#dbe8ee;font-size:13px}.migration-code{max-width:460px}.migration-code small{display:block;margin-top:5px;color:#7890a2;font-size:9px;line-height:1.5}@media(max-width:600px){.hospitality-tier-grid{grid-template-columns:1fr}.hospitality-tier-grid span{border-right:0;border-bottom:1px solid #183245}.hospitality-tier-grid span:last-child{border-bottom:0}}

/* Customer Activation Command Center */
.activation-metrics{grid-template-columns:repeat(6,1fr)}.metric.attention{border-color:rgba(255,112,134,.28);background:linear-gradient(145deg,rgba(64,25,38,.4),rgba(8,24,37,.94))}.metric.attention b{color:#ff91a2}.activation-row{grid-template-columns:minmax(230px,1.25fr) minmax(150px,.75fr) 105px minmax(190px,1fr) 130px 88px}.activation-next b{color:#dff6f4}.activation-next small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activation-progress{display:block;width:100%;height:3px;margin-top:7px;border:0;border-radius:99px;overflow:hidden;background:#142f41;appearance:none}.activation-progress::-webkit-progress-bar{background:#142f41}.activation-progress::-webkit-progress-value{background:linear-gradient(90deg,#259f98,#58ddd1)}.activation-progress::-moz-progress-bar{background:linear-gradient(90deg,#259f98,#58ddd1)}.status-badge.exception{color:#ff9bac;border-color:#744052;background:rgba(100,35,55,.2)}.activation-workflow{padding-left:18px;padding-right:18px}.activation-workflow>i{margin:0 8px}.activation-workflow div{grid-template-columns:27px auto;column-gap:7px}.activation-workflow div span{width:27px;height:27px}
.activation-command{margin:0 0 16px;padding:17px;border:1px solid #255166;border-radius:14px;background:linear-gradient(145deg,rgba(13,49,61,.72),rgba(7,24,37,.94));box-shadow:inset 0 1px 0 rgba(100,230,217,.04)}.activation-command.live{border-color:#2d6850;background:linear-gradient(145deg,rgba(21,73,55,.52),rgba(7,25,36,.94))}.activation-command-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.activation-command-head h3{font-size:19px;letter-spacing:-.03em;margin:0;color:#effcff}.activation-command-head span{display:block;color:#7e98a9;font-size:10px;margin-top:3px}.activation-percent{text-align:right}.activation-percent b{display:block;color:#7ee8dc;font-size:24px;line-height:1}.activation-percent small{color:#668196;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.activation-alert{display:flex;gap:8px;align-items:center;margin-top:12px;padding:9px 11px;border:1px solid #744052;border-radius:9px;background:rgba(103,35,55,.18);color:#ff9bac;font-size:10px}.activation-alert span{color:#dba3ad}.activation-stage-rail{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin-top:15px}.activation-stage{min-width:0;padding:8px 5px;border:1px solid #1b3a4d;border-radius:9px;background:#071a28;text-align:center;color:#617a8e}.activation-stage i{width:22px;height:22px;display:grid;place-items:center;margin:0 auto 5px;border:1px solid #29475a;border-radius:7px;font-style:normal;font-size:8px;font-weight:850}.activation-stage span{display:block;font-size:8px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activation-stage.complete{border-color:#285c49;color:#72dba9;background:rgba(25,79,59,.17)}.activation-stage.complete i{border-color:#327258;background:#153e31}.activation-stage.current{border-color:#39bfb4;color:#98f0e8;box-shadow:0 0 0 1px rgba(57,191,180,.14)}.activation-next-card{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:13px;padding:11px 12px;border:1px solid #20465a;border-radius:10px;background:#092031}.activation-next-card small,.activation-next-card b{display:block}.activation-next-card small{color:#637f93;font-size:8px;letter-spacing:.1em}.activation-next-card b{font-size:12px;color:#e4f4f9}.activation-next-card .primary-button{padding:9px 13px;font-size:10px}.installation-command{margin-top:12px;padding-top:13px;border-top:1px solid #1a3c4e}.installation-command-copy b,.installation-command-copy span{display:block}.installation-command-copy b{font-size:11px;color:#e0f0f6}.installation-command-copy span{font-size:9px;color:#6e879a;margin-top:2px}.installation-form{display:grid;grid-template-columns:1fr 1fr 1.4fr auto;gap:8px;align-items:end;margin-top:10px}.installation-form label span{font-size:8px}.installation-form input{padding:8px 9px;font-size:10px}.installation-form button{height:37px;padding:0 13px;font-size:9px}.software-complete{margin-top:10px;font-size:10px;padding:9px 13px}.assignment-state.transit{border-color:#315d8c;background:rgba(37,78,126,.18);color:#9dc4ff}.installation-site-action{grid-column:1/-1;display:flex;justify-content:flex-end;border-top:1px solid #173548;padding-top:10px}.installation-site-action button{font-size:9px;padding:8px 11px}
@media(max-width:1220px){.activation-metrics{grid-template-columns:repeat(3,1fr)}.activation-row{grid-template-columns:minmax(210px,1fr) 145px minmax(180px,1fr) 125px 78px}.activation-row .case-cell:nth-child(3){display:none}.activation-row .case-cell:nth-child(4),.activation-row .case-cell:nth-child(5){display:block}.activation-stage-rail{grid-template-columns:repeat(4,1fr)}.installation-form{grid-template-columns:1fr 1fr}.installation-notes{grid-column:1/-1}}
@media(max-width:720px){.activation-metrics{grid-template-columns:1fr 1fr}.activation-row{grid-template-columns:1fr 95px 40px}.activation-row .case-cell{display:none}.activation-row .activation-next{display:block}.activation-next b{font-size:10px}.activation-next small{font-size:8px}.activation-command{padding:14px}.activation-stage-rail{grid-template-columns:repeat(4,1fr)}.activation-stage span{font-size:7px}.activation-next-card{align-items:stretch;flex-direction:column}.activation-next-card .primary-button{width:100%}.installation-form{grid-template-columns:1fr}.installation-notes{grid-column:auto}.installation-form button{height:42px}.installation-site-action{display:grid}.activation-workflow div{min-width:112px}}
@media(max-width:460px){.activation-metrics{grid-template-columns:1fr 1fr}.activation-command-head h3{font-size:16px}.activation-stage-rail{grid-template-columns:repeat(2,1fr)}.activation-row{grid-template-columns:1fr 40px}.activation-row .activation-next{display:none}}
.activation-workflow [hidden]{display:none!important}
.customer-shell [hidden]{display:none!important}
.ai-details.is-disabled{opacity:.45}.ai-details.is-disabled input{background:#0a1b27;color:#678091;cursor:not-allowed}
.field>label{display:block}.field-option{display:flex!important;align-items:center;gap:7px;margin-top:8px!important;color:#8ba1b3!important;font-size:10px!important;text-transform:none!important;letter-spacing:0!important;cursor:pointer}.field-option input{appearance:none;width:16px!important;height:16px!important;min-height:0!important;padding:0!important;margin:0!important;border:1px solid #4f7182;border-radius:5px;background:#071724;box-shadow:inset 0 0 0 2px #071724;flex:0 0 auto;cursor:pointer}.field-option input:focus-visible{outline:3px solid rgba(46,191,179,.25);outline-offset:2px}.field-option input:checked{border-color:var(--teal);background-color:var(--teal);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.75 4.75' fill='none' stroke='%23ffffff' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:13px;background-position:center;background-repeat:no-repeat}.address-help{display:block;margin-top:6px;color:#658396;font-size:9px}.address-help[data-mode="error"]{color:#d7aa70}.address-help[data-mode="ready"]{color:#75cfc7}.address-autocomplete-host{position:relative}.address-suggestions{position:absolute;z-index:100000;top:calc(100% - 19px);left:0;right:0;list-style:none;margin:0;padding:0;border:1px solid #285166;border-radius:10px;background:#0a1d2b;box-shadow:0 18px 45px rgba(0,0,0,.42);overflow:hidden}.address-suggestions li+li{border-top:1px solid #173247}.address-suggestions button{display:block;width:100%;padding:10px 12px;border:0;background:transparent;color:#d9edf3;text-align:left;font:inherit;font-size:11px;cursor:pointer}.address-suggestions button:hover,.address-suggestions button:focus-visible{background:#103044;outline:0}.save-error{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid #744052;background:rgba(103,35,55,.18);border-radius:12px;padding:12px 14px;margin-top:14px}.save-error[hidden]{display:none!important}.save-error b,.save-error span{display:block}.save-error b{font-size:11px;color:#ff9bac}.save-error span{font-size:10px;color:#c99ca6;margin-top:2px}.save-error .secondary-button{white-space:nowrap}
.field-help{display:block;margin-top:6px;color:#6f879a;font-size:9px;line-height:1.45;text-transform:none;letter-spacing:0;font-weight:500}
@media(max-width:720px){.save-error{align-items:stretch;flex-direction:column}.save-error .secondary-button{width:100%}.packet-download{flex-direction:column;align-items:stretch;gap:10px}.packet-download .secondary-button{width:100%}}
/* Polished, accessible acknowledgement controls */
.check-line input{appearance:none;width:18px;height:18px;margin:1px 0 0;border:1px solid #4f7182;border-radius:5px;background:#071724;box-shadow:inset 0 0 0 2px #071724;flex:0 0 auto;cursor:pointer}
.check-line input:focus-visible{outline:3px solid rgba(46,191,179,.25);outline-offset:2px}
.check-line input:checked{border-color:var(--teal);background-color:var(--teal);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.75 4.75' fill='none' stroke='%23ffffff' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:14px;background-position:center;background-repeat:no-repeat}
.check-line{align-items:center}.check-line input{margin:0}.check-line>span{display:block;margin:0!important;line-height:18px}.check-line>span .field-help{margin-top:3px;line-height:1.4}.scroll-gate.complete span{display:inline-grid;place-items:center;width:16px;height:16px;transform:none;font-weight:900}.date-quick-entry{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;margin:0!important}.date-quick-entry .secondary-button{height:43px;padding:0 12px;font-size:10px}.status-actions{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.status-actions [hidden]{display:none!important}@media(max-width:600px){.date-quick-entry{grid-template-columns:1fr}.date-quick-entry .secondary-button{width:100%}.status-actions{display:grid}.status-actions>*{width:100%}}

/* Edition tabs: one centered row, even spacing, in the order the business reads them. */
.tabs-row{justify-content:center;gap:clamp(10px,3.5vw,44px)}
.tabs-row .tab-button{padding:10px 6px 13px}
@media(max-width:720px){.tabs-row{justify-content:flex-start;gap:14px}}
/* The command strip: every visible tile is one equal column of a single full-width row, sized by
   the script (--tiles) so five tiles or six always fill the width edge to edge under the heading.
   Below 1100px the strip folds to two equal columns and a lone last tile takes the whole row. */
.hero-actions{display:grid;grid-template-columns:repeat(var(--tiles,5),minmax(0,1fr));grid-auto-rows:1fr;gap:12px;align-items:stretch;width:100%}
/* More than six tiles: two even rows on a desk, laid on half-tile columns so an odd second row centres. */
@media(min-width:1101px){.hero-actions.two-rows{grid-template-columns:repeat(var(--half-cols,12),minmax(0,1fr))}.hero-actions.two-rows > *{grid-column:span 2}.hero-actions.two-rows > .row-two-start{grid-column:2 / span 2}}
/* Stripe brand purple (#635BFF), so the control reads as "this opens Stripe". */
.accent-button{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:12px;padding:12px 18px;cursor:pointer;font-weight:800;color:#fff;background:linear-gradient(135deg,#7a73ff,#635bff);box-shadow:0 9px 26px rgba(99,91,255,.32),inset 0 1px 0 rgba(255,255,255,.22)}
.accent-button span{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:rgba(255,255,255,.18);font-size:12px}
.accent-button:hover,.accent-button:focus-visible{filter:brightness(1.08);outline:2px solid #a39dff;outline-offset:2px}
.accent-button:disabled{opacity:.6;cursor:wait}
/* Preflight is an action, not a vendor: warm amber says "run this now" and stays distinct from Stripe purple and the teal primary. */
.accent-button.action{color:#2a1a00;background:linear-gradient(135deg,#ffd166,#f5a524);box-shadow:0 9px 26px rgba(245,165,36,.32),inset 0 1px 0 rgba(255,255,255,.35)}
.accent-button.action span{background:rgba(42,26,0,.16);color:#2a1a00}
.accent-button.action:hover,.accent-button.action:focus-visible{filter:brightness(1.05);outline-color:#f5b940}
/* Every control in the row is the same tile: full width of its column, one minimum height,
   label centred so a wrapped label stays balanced. */
.hero-actions > button{
  flex:none;width:100%;min-height:60px;padding:12px 18px;font-size:14.5px;
  justify-content:center;text-align:center;line-height:1.25
}
@media(max-width:720px){.hero-actions > button{min-height:56px;padding:12px 14px}}
/* Every tile carries a ring in its own hue that lights on hover and keyboard focus, the way the
   SignTrace tile's border does. The ring is a pseudo-element just outside the tile, so each
   tile's own gradient and shadow stay exactly as designed underneath it. */
.hero-actions > button{position:relative;--ring:#a39dff;transition:filter .18s ease,transform .18s ease}
.hero-actions > button::after{content:"";position:absolute;inset:-3px;border-radius:15px;border:2px solid var(--ring);box-shadow:0 0 18px color-mix(in srgb,var(--ring) 60%,transparent),inset 0 0 12px color-mix(in srgb,var(--ring) 22%,transparent);opacity:0;transition:opacity .18s ease;pointer-events:none}
.hero-actions > button:hover::after,.hero-actions > button:focus-visible::after{opacity:1}
.hero-actions > button:hover,.hero-actions > button:focus-visible{outline:none;transform:translateY(-1px)}
.hero-actions > .accent-button.action{--ring:#ffd166}
.hero-actions > .queue-button{--ring:#c4b5fd}
.hero-actions > .primary-button{--ring:#5eead4}
.hero-actions > .accent-button.signtrace{--ring:#5c9bff}
@media(prefers-reduced-motion:reduce){.hero-actions > button,.hero-actions > button::after{transition:none}.hero-actions > button:hover{transform:none}}
@media(max-width:1100px){.hero-actions{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.hero-actions{width:100%;gap:10px}}
/* On a phone the two-column tiles are about 160px wide: a tighter pad and 13px type keep
   "New onboarding" and "Quick Reference" on one line beside their icon from 360px up. */
@media(max-width:720px){.hero-actions.hero-actions > button,.hero-actions.hero-actions > a{padding:12px 8px;font-size:13px;gap:7px}}

/* Five editions, one centered row: equal gaps measured from the center, nothing pinned to a side. */
.tabs-row{justify-content:center;gap:clamp(24px,4.5vw,64px)}
.tabs-row .tab-button,.tabs-row .tab-button.pilot{margin:0;flex:0 0 auto}
@media(max-width:900px){.tabs-row{gap:clamp(12px,3vw,28px)}}
@media(max-width:720px){.tabs-row{justify-content:flex-start;gap:14px}}

/* The one thing the customer must not do at the signature step is leave. Say so, in their face, with motion. */
.waiting-card{margin:18px auto 0;max-width:560px;padding:22px 24px;border-radius:16px;border:1px solid #2d6f7a;background:linear-gradient(145deg,rgba(13,49,61,.85),rgba(7,24,37,.96));box-shadow:0 0 0 4px rgba(55,212,197,.08),0 18px 40px -20px #000;text-align:left}
.waiting-card h3{margin:14px 0 10px;font-size:20px;color:#ebfbff;text-align:center}
.waiting-card ol{margin:0;padding-left:22px;color:#cfe3ea;line-height:1.55;font-size:14px}.waiting-card ol li{margin:6px 0}.waiting-card b{color:#fff}
.waiting-spinner{width:56px;height:56px;margin:0 auto;border-radius:50%;border:5px solid #1b4a52;border-top-color:#37d4c5;animation:waiting-spin 1s linear infinite}
@keyframes waiting-spin{to{transform:rotate(360deg)}}
.waiting-pulse{margin:14px 0 0;text-align:center;color:#37d4c5;font-weight:700;letter-spacing:.04em}.waiting-pulse span{animation:waiting-dot 1.4s infinite;opacity:.2}.waiting-pulse span:nth-child(2){animation-delay:.2s}.waiting-pulse span:nth-child(3){animation-delay:.4s}
@keyframes waiting-dot{0%,80%,100%{opacity:.2}40%{opacity:1}}
@media(prefers-reduced-motion:reduce){.waiting-spinner,.waiting-pulse span{animation:none}.waiting-pulse span{opacity:1}}

/* Tour request queue. The public site promises a human reviews every request; this is where
   that review actually happens, so it lives in the header rather than behind a vertical tab —
   a tour request is not scoped to the vertical the operator happens to be looking at. */
/* Tour requests is where interest becomes money: deep emerald, white type, gold count. It is
   the only green tile in the row (New onboarding is mint on dark), and it never turns amber,
   because amber is Preflight's. A waiting request brightens the tile and the gold count pulses. */
.queue-button{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:12px;padding:12px 18px;cursor:pointer;font-weight:800;color:#f2fbf7;background:linear-gradient(135deg,#10b981 0%,#059669 55%,#047857 100%);box-shadow:0 9px 26px rgba(5,150,105,.34),inset 0 1px 0 rgba(255,255,255,.22)}
.queue-button span{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:rgba(255,255,255,.18);font-size:11px}
.queue-button:hover,.queue-button:focus-visible{filter:brightness(1.08);outline:2px solid #6ee7b7;outline-offset:2px}
.queue-button b{min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#f5c542;color:#1f1600;font-size:12px;font-weight:900;display:grid;place-items:center;box-shadow:0 0 0 3px rgba(245,197,66,.28);animation:bw-attention 1.6s ease-in-out infinite}
.queue-button b[hidden]{display:none!important}
.queue-button.has-pending{background:linear-gradient(135deg,#34d399 0%,#10b981 55%,#059669 100%);box-shadow:0 12px 30px rgba(16,185,129,.46),inset 0 1px 0 rgba(255,255,255,.3)}
.queue-button.has-pending span{background:rgba(255,255,255,.26)}
@keyframes bw-attention{0%,100%{box-shadow:0 0 0 3px rgba(245,185,64,.22)}50%{box-shadow:0 0 0 7px rgba(245,185,64,0)}}
@media(prefers-reduced-motion:reduce){.queue-button b{animation:none}}
.tour-req{border:1px solid #1e394d;border-radius:13px;padding:15px;margin:0 0 11px;background:#071724}
.tour-req-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}
.tour-req-head h3{margin:0;font-size:16px;letter-spacing:-.02em}
.tour-edition{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8ee9df;border:1px solid #2e5c72;border-radius:999px;padding:3px 9px;white-space:nowrap}
.tour-req dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 13px;font-size:12px}
.tour-req dt{color:#6f8698;text-transform:uppercase;font-size:10px;letter-spacing:.07em;font-weight:800;padding-top:2px}
.tour-req dd{margin:0;color:#c3d5e1;overflow-wrap:anywhere}
.tour-req-actions{display:flex;gap:8px}
.tour-req-actions button{flex:1;border-radius:9px;padding:9px 0;cursor:pointer;font-weight:800;font-size:12px}
.tour-approve{border:0;background:#2ebfb3;color:#052a27}
.tour-decline{border:1px solid #4a2d36;background:transparent;color:#e59aa8}
.tour-req-actions button:disabled{opacity:.5;cursor:wait}
.tour-decided{font-size:11px;color:#6f8698}
@media(max-width:720px){.tour-req dl{grid-template-columns:1fr}.tour-req dt{padding-top:7px}}

/* Quick Reference. One tab, every link and credential the team needs at hand. Type runs a
   size up from the rest of the centre because this is the tab people read on a phone in a
   hurry, and because the readers asked for it. */
.toolbar[hidden],.case-list[hidden],.reference-panel[hidden]{display:none}
.tab-icon.reference{background:linear-gradient(145deg,#2b4a66,#16304a);color:#bfe3ff}
.reference-panel{padding:24px 24px 30px}
.ref-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:22px}
.ref-head h2{margin:0;font-size:26px;letter-spacing:-.035em}
.ref-lede{color:var(--muted);max-width:760px;margin:8px 0 0;font-size:15px;line-height:1.55}
.ref-section{margin:0 0 28px}
.ref-section h2{margin:0 0 12px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--teal);font-weight:850}
.ref-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.ref-card{border:1px solid var(--line);border-radius:14px;padding:18px 20px;background:linear-gradient(145deg,rgba(13,32,48,.92),rgba(8,24,37,.94));font-size:15.5px;display:flex;flex-direction:column;gap:10px}
.ref-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ref-card h3{margin:0;font-size:19px;letter-spacing:-.02em;line-height:1.25}
.ref-card p{margin:0;color:#c3d5e1;line-height:1.55;overflow-wrap:anywhere}
.ref-link{display:inline-flex;align-items:center;gap:6px;font-weight:750;font-size:15.5px;overflow-wrap:anywhere;word-break:break-all}
.ref-secret{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid #1e394d;border-radius:11px;padding:10px 12px;background:#0b1b2a}
.ref-secret small{flex-basis:100%;color:#6f8698;font-size:10px;letter-spacing:.09em;text-transform:uppercase;font-weight:800}
.ref-secret code{flex:1 1 160px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;color:#dff9f6;overflow-wrap:anywhere;letter-spacing:.02em}
.ref-secret button{border:1px solid #264257;background:#0d2232;color:#cae0ee;border-radius:8px;padding:7px 11px;cursor:pointer;font-weight:800;font-size:12px}
.ref-secret button:hover{background:#122b3e}
.ref-badge{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#ffd98a;border:1px solid #6b4d1a;background:#2a1f0c;border-radius:999px;padding:3px 9px;white-space:nowrap}
.ref-edit{border:1px solid #264257;background:transparent;color:#8fa6ba;border-radius:8px;padding:5px 10px;cursor:pointer;font-weight:800;font-size:12px;white-space:nowrap}
.ref-edit:hover{color:#ebfbff;background:#122b3e}
.ref-meta{margin-top:auto;padding-top:6px;color:#6f8698;font-size:11.5px}
.form-grid label.full{grid-column:1 / -1}
.modal textarea{width:100%;min-height:104px;resize:vertical;border:1px solid #264257;border-radius:10px;background:#0b1b2a;color:var(--ink);padding:10px 12px;line-height:1.5}
.secondary-button.danger{border-color:#5a2b36;color:#f0a2b1;margin-right:auto}
@media(max-width:720px){.reference-panel{padding:18px 16px 24px}.ref-grid{grid-template-columns:1fr}.ref-card{font-size:16.5px}.ref-card h3{font-size:20px}.ref-secret code{font-size:16px}}
/* Month to month is offered to nobody. A plan a Super Admin arranged shows as one locked, selected card. */
.plan-card.is-locked{cursor:default;border-color:#31c6b9;box-shadow:inset 0 0 0 1px rgba(49,198,185,.25)}.plan-card.is-locked:hover{border-color:#31c6b9}.plan-card.is-locked .plan-check{border:4px solid #2bc4b7}.arranged-grid{grid-template-columns:minmax(0,340px)}
/* The six activation tiles are buttons: every one opens its list, so every one looks and behaves the same. */
.metric{width:100%;text-align:left;color:inherit;cursor:pointer;transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease}.metric:hover{border-color:rgba(40,199,186,.45);transform:translateY(-1px);box-shadow:0 14px 34px rgba(0,0,0,.2)}.metric:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.metric[aria-pressed="true"]{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal),0 14px 34px rgba(40,199,186,.14)}.metric[aria-pressed="true"] span{color:#8af3e7}.filter-chip{margin-left:auto;background:rgba(20,63,66,.5);border:1px solid rgba(40,199,186,.4);color:#8af3e7;border-radius:999px;padding:6px 11px;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}.filter-chip:hover{background:rgba(20,63,66,.75)}.filter-chip+.result-count{margin-left:0}

/* The Patrol plan panel. The Founding 50 saving is the most persuasive fact on the page and it
   used to sit in 9px grey .field-help under a 10px tier grid; a customer could not see it. The
   price, the saving and the limits now carry the weight their content deserves. Numbers here are
   presentation only -- every figure already existed in the markup. */
.plan-hero{border:1px solid #21475d;border-radius:16px;background:linear-gradient(150deg,rgba(14,48,60,.55),rgba(8,26,39,.92));padding:22px;margin:0 0 4px}
.plan-hero-eyebrow{margin:0;color:var(--teal);font-size:10px;font-weight:850;letter-spacing:.17em;text-transform:uppercase}
.plan-hero-title{margin:7px 0 18px;font-size:23px;letter-spacing:-.035em;color:#ecfbff}
.plan-hero-prices{display:grid;grid-template-columns:1fr 1.35fr;gap:12px;align-items:stretch}
.plan-hero-price{border:1px solid #1e3c50;border-radius:13px;background:#07192663;padding:15px 16px}
.plan-hero-price>span{display:block;color:#8ba2b4;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.plan-hero-price>b{display:block;font-size:34px;line-height:1.05;letter-spacing:-.045em;color:#dbe8ee;margin-top:6px}
.plan-hero-price>small{display:block;color:#7890a2;font-size:11px;margin-top:2px}
/* The Founding 50 box keeps the panel's teal (DJ, 23 Sep 2026: "the card is fine"); only the
   words Founding 50 stand out, in royal blue, the one colour nothing else on the panel uses. The
   welcome line is the invitation before the code is typed and the welcome once it is. */
.plan-hero-price.is-founding{border-color:var(--teal);background:linear-gradient(145deg,rgba(21,79,79,.5),rgba(8,30,40,.92));box-shadow:0 0 0 1px rgba(40,199,186,.25),0 14px 34px rgba(0,0,0,.22)}
.plan-hero-price.is-founding>span{color:#5b9bff;font-size:15px;font-weight:900;letter-spacing:.12em;text-shadow:0 0 18px rgba(91,155,255,.45)}
.plan-hero-price.is-founding>b{color:#8af3e7;font-size:40px}
.plan-hero-price.is-founding>em{display:block;margin-top:10px;font-style:normal;font-size:12.5px;font-weight:750;line-height:1.35;color:#c9f6ef}
.plan-hero-welcome{display:block;margin-top:12px;padding-top:11px;border-top:1px solid rgba(40,199,186,.3);font-size:13px;font-weight:800;line-height:1.4;color:#c9f6ef}
.plan-hero-welcome b{color:#5b9bff}
.plan-hero-price.is-founding.is-live>span{color:#7fb3ff;text-shadow:0 0 24px rgba(91,155,255,.7)}
.plan-hero-price.is-founding.is-live .plan-hero-welcome{color:#ecfbff;font-size:15px}
.plan-hero-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;list-style:none;margin:16px 0 0;padding:0}
.plan-hero-facts li{border:1px solid #1d3a4e;border-radius:11px;background:#07192647;padding:12px}
.plan-hero-facts b{display:block;font-size:18px;letter-spacing:-.03em;color:#ecfbff}
.plan-hero-facts span{display:block;margin-top:3px;color:#8ba2b4;font-size:10.5px}
.plan-hero-code{margin:15px 0 0;color:#a9c0d0;font-size:12px;line-height:1.5}
.plan-hero-code b{color:#8af3e7;letter-spacing:.06em}
@media(max-width:720px){
  .plan-hero{padding:17px}
  .plan-hero-title{font-size:20px}
  .plan-hero-prices{grid-template-columns:1fr}
  .plan-hero-price.is-founding>b{font-size:36px}
  .plan-hero-facts{grid-template-columns:1fr 1fr}
}

/* Spins inside a primary button while a request is in flight. Sized and coloured for the teal
   button face, so it reads against it rather than disappearing into it. */
.button-spinner{display:inline-block;width:15px;height:15px;margin-right:9px;vertical-align:-2px;border:2px solid rgba(4,25,24,.3);border-top-color:#041918;border-radius:50%;animation:spin .7s linear infinite}

/* Shown in place of the money tiles once payment is confirmed. The customer's remaining job is
   to open their email, so that instruction gets the weight the price recap used to hold. */
/* The recap is a two-column money grid. On the paid state it holds one thing, the completion
   card, which otherwise sits in the left cell beside an empty right one, inside the grid's own
   frame around the card's own frame. The container stands down and the card takes the width. */
.payment-recap:has(.completion-next){display:block;border:0;overflow:visible}
.completion-next{display:flex;gap:15px;align-items:flex-start;border:1px solid var(--teal);border-radius:15px;background:linear-gradient(145deg,rgba(21,79,79,.45),rgba(8,30,40,.92));padding:20px;box-shadow:0 0 0 1px rgba(40,199,186,.2)}
.completion-next-mark{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;overflow:hidden;background:rgba(40,199,186,.16);color:#8af3e7}.completion-next-mark img,.status-orb.is-done img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.status-orb.is-done{padding:0;overflow:hidden;background:#0b2534;border-color:#2d6274}
.completion-next b{display:block;font-size:17px;color:#ecfbff;letter-spacing:-.02em}
.completion-next p{margin:7px 0 0;color:#c9e3ea;font-size:13.5px;line-height:1.55}
.completion-next strong{color:#8af3e7;font-weight:700}
.completion-next small{display:block;margin-top:9px;color:#8ba2b4;font-size:11.5px}
@media(max-width:720px){.completion-next{padding:16px;gap:12px}.completion-next-mark{width:36px;height:36px;font-size:17px}}

/* SafeCode is an optional line on a hospitality onboarding, not a headline, so it reads as a
   considered addition rather than an upsell. The term cards carry the saving because a three
   year commitment is the one the property has to weigh. */
.safecode-offer{border-color:#2a5365;background:rgba(13,45,57,.42);margin:16px 0 0}
.safecode-toggle{display:flex;align-items:flex-start;gap:11px;cursor:pointer}
/* label>span is this form's field-caption style: 10px, uppercase, letter-spaced, grey. These
   spans hold sentences, not captions, so they opt out the way label.question already does.
   Without the reset the copy renders shouting and squeezed to caption width. */
.safecode-toggle>span,.safecode-terms label>span{flex:1 1 auto;min-width:0;font-size:inherit;text-transform:none;letter-spacing:normal;font-weight:400;color:inherit;margin:0}
.safecode-toggle input{margin:3px 0 0;flex:none}
.safecode-toggle b{display:block;color:#e9f6fc;font-size:14px}
.safecode-toggle small{display:block;color:#8ba2b4;font-size:11.5px;line-height:1.5;margin-top:4px}
.safecode-detail{margin-top:15px;padding-top:15px;border-top:1px solid #1e3c50}
.safecode-terms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.safecode-terms label{display:block;border:1px solid #1e3c50;background:#071a28;border-radius:11px;padding:12px;cursor:pointer}
.safecode-terms label:has(input:checked){border-color:var(--teal);background:linear-gradient(145deg,rgba(21,79,79,.45),rgba(8,30,40,.92))}
.safecode-terms input{position:absolute;opacity:0;pointer-events:none}
.safecode-terms b{display:block;color:#8ba2b4;font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.safecode-terms em{display:block;font-style:normal;font-size:21px;letter-spacing:-.035em;color:#ecfbff;margin-top:5px}
.safecode-terms label:has(input:checked) em{color:#8af3e7}
.safecode-terms small{display:block;color:#7890a2;font-size:10.5px;margin-top:3px;line-height:1.4}
.safecode-note{margin:12px 0 0;color:#a9c0d0;font-size:12px;line-height:1.55}
.safecode-note b{color:#ecfbff}
@media(max-width:720px){.safecode-terms{grid-template-columns:1fr}}
.safecode-panel{border:1px solid #1d394d;background:#071724;border-radius:12px;padding:14px}
.safecode-panel .detail-section-head>div span{display:block;color:#58cfc4;font-size:9px;text-transform:uppercase;letter-spacing:.08em;margin-top:2px}
.safecode-live{color:#8ba2b4;font-size:11px}
.safecode-live-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.safecode-live-grid>div{border:1px solid #183449;background:#06202e;border-radius:10px;padding:11px}
.safecode-live-grid small{display:block;color:#6f879a;font-size:9px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:5px}
.safecode-live-grid b{display:block;color:#e3f0f7;font-size:17px;letter-spacing:-.03em}
.safecode-invoices{display:grid;gap:7px;margin-top:10px}
.safecode-invoices>div{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;border:1px solid #173247;border-radius:9px;padding:9px 11px}
.safecode-invoices span{font-size:10px;color:#a9c0d0}
.safecode-invoices b{font-size:12px;color:#ecfbff;justify-self:end}
.safecode-invoices small{grid-column:1/-1;font-size:9px;color:#6a8397}
.safecode-records{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.safecode-records a{border:1px solid #24556a;background:#0d2d3c;color:#79e4da;border-radius:8px;padding:6px 9px;font-size:9px;font-weight:750}
.safecode-heartbeat{margin-right:auto}
.safecode-heartbeat>span{display:block;font-size:8px;color:#6f879a;text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}
.safecode-heartbeat input{padding:8px 9px;font-size:11px}
@media(max-width:600px){.safecode-live-grid{grid-template-columns:1fr}.safecode-heartbeat{margin-right:0}}

/* System preflight: a board that has to be readable at a glance, because it is looked at when
   something is already suspected to be wrong. State drives colour; the source line under each
   check says whether a provider actually answered or we only read our own configuration. */
.preflight-verdict{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border-radius:14px;border:1px solid var(--line);background:rgba(10,32,44,.6);margin-bottom:16px}
.preflight-verdict b{font-size:19px;letter-spacing:-.02em}
.preflight-verdict span{font-size:12.5px;color:#8ba2b4}
.preflight-verdict.is-ok{border-color:#2f8d72;background:linear-gradient(145deg,rgba(21,79,79,.5),rgba(8,30,40,.92))}
.preflight-verdict.is-warn{border-color:#b08430;background:linear-gradient(145deg,rgba(84,62,18,.45),rgba(8,30,40,.92))}
.preflight-verdict.is-bad{border-color:#b4514f;background:linear-gradient(145deg,rgba(88,28,28,.45),rgba(8,30,40,.92))}
.preflight-block{border:1px solid #b4514f;border-radius:13px;padding:14px 16px;margin-bottom:16px;background:rgba(88,28,28,.22)}
.preflight-block b{display:block;color:#ffc7c4;font-size:13px;margin-bottom:6px}
.preflight-block ul{margin:0;padding-left:18px;color:#f0d6d4;font-size:12.5px;line-height:1.6}
.preflight-scope{margin-bottom:22px}
/* A section header is a band, not a line: a letter tile in the edition's colour, a heavier title,
   and it stays pinned while its checks scroll under it, so nobody scrolls past Retail into
   Hospitality without noticing. */
.preflight-scope-head{position:sticky;top:-22px;z-index:2;display:flex;align-items:center;gap:11px;margin:0 0 11px;padding:11px 13px;border-radius:12px;border:1px solid #2a4c60;background:linear-gradient(135deg,#0f2d3f,#0a1f2e);box-shadow:0 8px 22px rgba(0,0,0,.35);--scope:#2dd4bf}
.preflight-scope[data-scope="retail"] .preflight-scope-head{--scope:#2dd4bf}
.preflight-scope[data-scope="restaurant"] .preflight-scope-head{--scope:#fb923c}
.preflight-scope[data-scope="hospitality"] .preflight-scope-head{--scope:#a78bfa}
.preflight-scope[data-scope="patrol"] .preflight-scope-head{--scope:#f5b940}
.preflight-scope[data-scope="shared"] .preflight-scope-head{--scope:#8ba2b4}
.preflight-scope-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;font-weight:900;font-size:14px;color:#061521;background:var(--scope);box-shadow:0 0 0 3px color-mix(in srgb,var(--scope) 28%,transparent)}
.preflight-scope-head h3{margin:0;font-size:17px;letter-spacing:.01em;color:#eef8fb;flex:1}
.preflight-scope-note{margin:-4px 4px 11px;font-size:12.5px;line-height:1.45;color:#9fb6c5}
.preflight-chip{font-size:10.5px;font-weight:800;letter-spacing:.08em;padding:3px 8px;border-radius:999px;border:1px solid var(--line);color:#9fb6c5}
.preflight-chip.is-ok{border-color:#2f8d72;color:#8af3e7;background:rgba(40,199,186,.12)}
.preflight-chip.is-warn{border-color:#b08430;color:#f2cd83;background:rgba(214,163,62,.12)}
.preflight-chip.is-bad{border-color:#b4514f;color:#ffb3b0;background:rgba(180,81,79,.14)}
.preflight-check{border:1px solid var(--line);border-left-width:3px;border-radius:11px;padding:12px 14px;margin-bottom:8px;background:rgba(9,28,38,.55)}
.preflight-check.is-ok{border-left-color:#2f8d72}
.preflight-check.is-warn{border-left-color:#b08430}
.preflight-check.is-bad{border-left-color:#b4514f}
.preflight-check-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.preflight-check-head b{font-size:13.5px;color:#e8f6fb}
.preflight-check p{margin:7px 0 0;font-size:12.5px;line-height:1.55;color:#c2d8e2}
.preflight-check .preflight-fix{color:#f2cd83}
.preflight-bounces{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.preflight-bounces li{display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center;padding:10px 12px;border-radius:10px;border:1px solid #5b2d2d;background:rgba(60,18,24,.45)}
.preflight-bounces li b{display:block;font-size:13px;color:#ffd9d9;word-break:break-all}
.preflight-bounces li span{display:block;margin-top:2px;font-size:11.5px;color:#d7b1b1}
.preflight-bounces .preflight-attest{margin-top:0}
.preflight-bounces .preflight-ack-slot{grid-column:1/-1}
.preflight-bounces .preflight-ack-slot:empty{display:none}
@media(max-width:720px){.preflight-bounces li{grid-template-columns:1fr}.preflight-bounces .preflight-attest{justify-self:start}}
.preflight-check small{display:block;margin-top:7px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#6f8697}
/* Confirm is the one thing a person can do on this board, so it looks like the primary action it
   is, not like a secondary control that blends into the card. */
.preflight-attest{display:inline-flex;align-items:center;gap:7px;margin-top:11px;padding:9px 16px;border:0;border-radius:10px;cursor:pointer;font-weight:800;font-size:13px;color:#021713;background:linear-gradient(135deg,#37d4c5,#1db6ad);box-shadow:0 6px 18px rgba(40,199,186,.28),inset 0 1px 0 rgba(255,255,255,.28)}
.preflight-attest::before{content:"\2713";font-weight:900}
.preflight-attest:hover,.preflight-attest:focus-visible{filter:brightness(1.08);outline:2px solid #6ee7b7;outline-offset:2px}
.preflight-check.is-ok .preflight-attest{background:#123246;color:#8ee9df;border:1px solid #2e5c72;box-shadow:none}
.preflight-attest-form{margin-top:11px;padding:12px;border-radius:11px;border:1px solid #2e5c72;background:rgba(13,41,57,.7)}
.preflight-attest-form label span{display:block;margin:0 0 7px;font-size:12px;line-height:1.5;color:#c2d8e2}
.preflight-attest-form textarea{width:100%;box-sizing:border-box;border-radius:9px;border:1px solid #2e5c72;background:#071a27;color:#e8f6fb;padding:9px 11px;font:inherit;font-size:13px;resize:vertical}
.preflight-attest-form textarea:focus{outline:2px solid #2dd4bf;outline-offset:1px}
.preflight-ack-noinbox{display:flex;gap:9px;align-items:flex-start;margin:10px 0 0;font-size:12px;line-height:1.5;color:#c2d8e2;cursor:pointer}
.preflight-ack-noinbox input{flex:none;width:18px;height:18px;margin:0;accent-color:#2dd4bf}
.preflight-attest-actions{display:flex;gap:8px;margin-top:9px;flex-wrap:wrap}
.preflight-attest-submit{padding:9px 16px;border:0;border-radius:10px;cursor:pointer;font-weight:800;font-size:13px;color:#021713;background:linear-gradient(135deg,#37d4c5,#1db6ad)}
.preflight-attest-submit:disabled{opacity:.7;cursor:wait}
.preflight-attest-cancel{padding:9px 14px;border-radius:10px;cursor:pointer;font-weight:700;font-size:13px;color:#c2d8e2;background:transparent;border:1px solid #2e5c72}
.preflight-attest-error{margin:8px 0 0;font-size:12.5px;color:#ffb3b0}
.preflight-recorded{margin-top:11px;padding:10px 12px;border-radius:10px;border:1px solid #2f8d72;background:linear-gradient(145deg,rgba(21,79,79,.55),rgba(8,30,40,.92));color:#c8f5ec;font-size:13px;line-height:1.5}
.preflight-recorded b{color:#8af3e7}
.preflight-confirmed{display:inline-flex;align-items:center;gap:7px;margin-top:11px;padding:8px 14px;border-radius:10px;font-weight:800;font-size:13px;color:#8af3e7;background:rgba(40,199,186,.12);border:1px solid #2f8d72}
.preflight-confirmed::before{content:"\2713";font-weight:900}
.preflight-attest.is-renew{margin-left:8px;background:#123246;color:#8ee9df;border:1px solid #2e5c72;box-shadow:none}
@media(max-width:720px){.preflight-check-head{flex-direction:column;align-items:flex-start;gap:5px}}
/* QuickBooks: one card at the top of Preflight, styled like a check row so its state reads at a glance. */
.books-card{border:1px solid var(--line);border-left-width:3px;border-left-color:#2e5c72;border-radius:11px;padding:12px 14px;margin-bottom:16px;background:rgba(9,28,38,.55)}
.books-card:empty{display:none}
.books-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.books-head b{font-size:13.5px;color:#e8f6fb}
.books-state{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:999px;border:1px solid var(--line);color:#9fb6c5;white-space:nowrap}
.books-state.is-ok{border-color:#2f8d72;color:#8af3e7;background:rgba(40,199,186,.12)}
.books-state.is-warn{border-color:#b08430;color:#f2cd83;background:rgba(214,163,62,.12)}
.books-state.is-bad{border-color:#b4514f;color:#ffb3b0;background:rgba(180,81,79,.14)}
.books-card p{margin:7px 0 0;font-size:12.5px;line-height:1.55;color:#c2d8e2}
.books-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.books-actions:empty{display:none}
.books-failed{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.books-failed li{display:grid;grid-template-columns:auto 1fr auto;gap:6px 12px;align-items:center;padding:9px 11px;border-radius:10px;border:1px solid #5b2d2d;background:rgba(60,18,24,.45);font-size:12px;color:#f0d6d4}
.books-failed code{color:#ffd9d9;word-break:break-all}
.books-card .books-result{margin-top:10px;padding:9px 12px;border-radius:10px;border:1px solid #2f8d72;background:rgba(21,79,79,.45);color:#c9f7ef;font-weight:700}
.books-card .books-result.is-error{border-color:#b4514f;background:rgba(88,28,28,.4);color:#ffc7c4}
@media(max-width:720px){.books-failed li{grid-template-columns:1fr}.books-actions button{flex:1 1 auto}}
/* CaseTrace e-sign: the signing card (onboarding step 6 and /sign/<token>). */
.esign-card{margin:18px 0 0;padding:20px 22px;border-radius:16px;border:1px solid #2d6f7a;background:linear-gradient(145deg,rgba(13,49,61,.85),rgba(7,24,37,.96));box-shadow:0 0 0 4px rgba(55,212,197,.08),0 18px 40px -20px #000;text-align:left}
.esign-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}.esign-head h3{margin:4px 0 6px;font-size:21px;color:#ebfbff}.esign-sub{margin:0;color:#9fb8c6;font-size:13px}
.esign-badge{flex:none;padding:6px 11px;border-radius:999px;border:1px solid rgba(55,212,197,.45);color:#5de3d7;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.esign-doc{margin:16px 0 0;border:1px solid #1f4a56;border-radius:12px;overflow:hidden;background:#0a1f2c}.esign-doc iframe{display:block;width:100%;height:560px;border:0;background:#fff}
/* PDF.js draws each page to a canvas; the strip scrolls inside the card, pages white on grey. */
.esign-doc-pages{max-height:560px;overflow:auto;padding:10px;background:#dfe6ea;-webkit-overflow-scrolling:touch}
.esign-doc-pages canvas{display:block;margin:0 auto 10px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.25);max-width:100%}
.esign-doc-loading{padding:34px 18px;text-align:center;color:#9fb8c6}.esign-doc-loading p{margin:12px 0 0}
.esign-doc-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 14px;border-top:1px solid #1f4a56;color:#8fa9b7;font-size:12px}.esign-doc-bar a{color:#5de3d7;font-weight:700;text-decoration:none}.esign-doc-bar a:hover{text-decoration:underline}
.esign-steps{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:14px}.esign-steps li{display:flex;gap:12px;align-items:flex-start}.esign-steps li>div{flex:1;min-width:0}.esign-steps b{display:block;color:#ebfbff;font-size:14px}.esign-steps p{margin:4px 0 0;color:#9fb8c6;font-size:13px}
.esign-step-n{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:rgba(55,212,197,.14);color:#5de3d7;font-weight:800;font-size:12px;margin-top:1px}
.esign-consent{margin-top:8px!important}.esign-consent>span{font-size:13px!important;color:#cfe3ea!important;line-height:1.5!important}
.esign-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}.esign-row>button{max-width:100%;white-space:normal}.esign-code-status{color:#8fa9b7;font-size:12px}
.esign-fields{margin:10px 0 12px}.esign-fields input[disabled]{opacity:.55}
.esign-mode{display:flex;gap:6px;align-self:end}.esign-mode-btn{flex:1;min-height:44px;padding:8px 10px;border-radius:10px;border:1px solid #2d6f7a;background:rgba(13,49,61,.5);color:#cfe3ea;font:inherit;font-weight:700;font-size:13px;cursor:pointer}.esign-mode-btn.is-on{background:rgba(55,212,197,.16);border-color:#37d4c5;color:#ebfbff}.esign-mode-btn[disabled]{opacity:.55;cursor:default}
.esign-typed{display:block;margin:0 0 4px}.esign-hint{margin:6px 0 12px;color:#8fa9b7;font-size:12px;line-height:1.5}
.esign-pad-box{position:relative;margin:0 0 4px;border-radius:12px;border:1px solid #2d6f7a;background:#f6f9fb;overflow:hidden}.esign-pad-box canvas{display:block;width:100%;height:170px;touch-action:none;cursor:crosshair}.esign-pad-line{position:absolute;left:44px;right:24px;bottom:40px;border-top:1px dashed #9fb3bf;pointer-events:none}.esign-pad-x{position:absolute;left:20px;bottom:30px;color:#9fb3bf;font-size:18px;pointer-events:none}.esign-pad-box[data-disabled="true"]{opacity:.55}.esign-pad-box[data-disabled="true"] canvas{cursor:default}
[data-esign="pad-wrap"] .esign-row{margin:6px 0 12px}[data-esign="pad-wrap"] .esign-code-status b{color:#cfe3ea}
.esign-fine{margin:16px 0 0;color:#7f96a6;font-size:12px;line-height:1.5}
.esign-done{margin:16px 0 0;padding:16px 18px;border-radius:12px;border:1px solid #2d6f7a;background:rgba(13,49,61,.5);color:#cfe3ea}.esign-done b{display:block;color:#ebfbff;font-size:16px}.esign-done p{margin:6px 0 0;line-height:1.55}.esign-done small{display:block;margin-top:8px;color:#8fa9b7;overflow-wrap:anywhere;word-break:break-word}
.esign-done-mark{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;margin:0 0 10px;background:rgba(83,212,155,.16);color:#53d49b;font-size:22px;font-weight:900}
.esign-decline{margin:14px 0 0;text-align:right}.link-button{background:none;border:0;padding:0;color:#8fa9b7;font-size:12px;text-decoration:underline;cursor:pointer}.link-button:hover{color:#ff7086}
.sign-shell{max-width:860px}.sign-footer{margin:26px 0 0;color:#53677c;font-size:12px;text-align:center}
@media(max-width:720px){.esign-card{padding:16px}.esign-doc iframe{height:420px}.esign-doc-pages{max-height:70vh;padding:8px}.esign-head h3{font-size:18px}}
/* /verify/: packet verification. */
.verify-drop{display:block;padding:34px 20px;border:2px dashed #2d6f7a;border-radius:14px;text-align:center;cursor:pointer;background:rgba(13,49,61,.35);transition:border-color .15s,background .15s}.verify-drop:hover,.verify-drop:focus-visible,.verify-drop.is-over{border-color:#5de3d7;background:rgba(13,49,61,.6);outline:none}.verify-drop.is-busy{opacity:.6}.verify-drop b{display:block;color:#ebfbff;font-size:16px}.verify-drop span{display:block;margin-top:6px;color:#8fa9b7;font-size:13px}
.verify-or{margin:16px 0 8px;color:#7f96a6;font-size:12px;text-align:center;text-transform:uppercase;letter-spacing:.08em}
.verify-input{flex:1;min-width:0;padding:11px 12px;border:1px solid #274357;border-radius:10px;background:#071724;color:#eef7ff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
.verify-result{margin-top:16px}.verify-summary.is-ok{border-color:rgba(83,212,155,.5)}.verify-summary.is-warn{border-color:rgba(245,184,92,.55)}.verify-summary.is-warn .esign-done-mark{background:rgba(245,184,92,.16);color:#f5b85c}
.verify-grid{display:grid;gap:10px;margin-top:14px}.verify-row{padding:10px 12px;border:1px solid #1a3348;border-radius:10px;background:rgba(11,27,42,.7)}.verify-row small{display:block;color:#7f96a6;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.verify-row b{display:block;margin-top:3px;color:#ebfbff;font-weight:600;font-size:13px;word-break:break-word}.verify-row code,.verify-row pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#cfe3ea;white-space:pre-wrap;word-break:break-all;margin:0}
.verify-row.is-ok b{color:#53d49b}.verify-row.is-warn b{color:#f5b85c}.verify-row.is-bad b{color:#ff7086}
/* The executed packet, straight from the sealed record, on the payment step. */
.packet-download{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 16px;padding:12px 14px;border:1px solid #2d6f7a;border-radius:12px;background:rgba(13,49,61,.45)}.packet-download{min-width:0}.packet-download .secondary-button{flex:0 1 auto;min-width:0;max-width:100%;white-space:normal;text-align:center;line-height:1.35}.packet-download span{color:#9fb8c6;font-size:13px}
/* SignTrace tile: the in-house signing platform's health check. */
/* The SignTrace tile: near-black with electric blue (#0061FF), the scheme the signing tile has always worn. */
.accent-button.signtrace{color:#e9f1ff;background:linear-gradient(135deg,#1b2330,#0b0f16);box-shadow:0 9px 26px rgba(0,97,255,.28),inset 0 0 0 1px #0061ff,inset 0 1px 0 rgba(255,255,255,.08)}
.accent-button.signtrace span{background:#0061ff;color:#fff}
.accent-button.signtrace:hover,.accent-button.signtrace:focus-visible{filter:brightness(1.15);outline-color:#5c9bff}

/* ── Hero tiles: one glass system ─────────────────────────────────────────────────────────
   Five controls, one grammar. Every tile is the same width (sized to the longest label) and
   the same height. Each is a pane of tinted glass over the command-center gradient: a
   translucent wash in the tile's hue, a hairline in that hue, a soft top highlight, blur
   through to the page, and one solid chip carrying the icon. The hue identifies the control;
   the glass keeps the row calm. Hover lifts the pane and brightens the wash; the ring below
   still lights. Institutional, not loud. The doubled class outranks every tile rule above
   (the two-class .accent-button.action and .queue-button.has-pending included), so the glass
   is the same on all five. */
.hero-actions.hero-actions > button{
  --hue:#8b84ff;--chip-ink:#fff;
  color:#eef6fb;letter-spacing:.01em;
  background:
    linear-gradient(160deg,color-mix(in srgb,var(--hue) 26%,transparent) 0%,color-mix(in srgb,var(--hue) 9%,transparent) 100%),
    rgba(5,18,28,.58);
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb,var(--hue) 58%,transparent),
    inset 0 1px 0 rgba(255,255,255,.16),
    0 10px 28px color-mix(in srgb,var(--hue) 16%,transparent);
  -webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);
}
.hero-actions.hero-actions > button span{background:var(--hue);color:var(--chip-ink);box-shadow:0 0 14px color-mix(in srgb,var(--hue) 55%,transparent)}
/* SignTrace wears a signature over its line with the seal at the end, drawn inline so it is the
   same mark on every machine, never a pencil that reads as "edit". */
.hero-actions.hero-actions > button:hover,.hero-actions.hero-actions > button:focus-visible{
  filter:none;
  background:
    linear-gradient(160deg,color-mix(in srgb,var(--hue) 38%,transparent) 0%,color-mix(in srgb,var(--hue) 16%,transparent) 100%),
    rgba(5,18,28,.58);
}
.hero-actions.hero-actions > button:disabled{opacity:.7;cursor:wait}
.hero-actions.hero-actions > .accent-button.action{--hue:#f5b940;--chip-ink:#2a1a00;--ring:#ffd166;color:#fff4dc}
/* Tour requests wears silver and Stripe codes violet (DJ, 12 Oct 2026), so neither sits next to a
   tile of its own family. */
.hero-actions.hero-actions > .queue-button,.hero-actions.hero-actions > .queue-button.has-pending{--hue:#cbd5e1;--chip-ink:#0b1220;--ring:#e2e8f0;color:#f1f5f9}
.hero-actions.hero-actions > .primary-button{--hue:#37d4c5;--chip-ink:#03201d;--ring:#5eead4;color:#e6fffb}
.hero-actions.hero-actions > .accent-button.signtrace{--hue:#2f7bff;--chip-ink:#fff;--ring:#5c9bff;color:#eaf2ff}
.hero-actions.hero-actions > #patrolPromotionsButton{--hue:#a78bfa;--chip-ink:#1e1240;--ring:#c4b5fd;color:#f1ecff}
/* The pending count lives inside the tile, tucked into its top-right corner, so it never floats
   outside the glass and never widens the row. */
.hero-actions.hero-actions > .queue-button b{position:absolute;top:6px;right:6px;margin:0;min-width:18px;height:18px;padding:0 5px;font-size:10px;box-shadow:0 0 0 2px rgba(5,18,28,.85),0 0 10px rgba(245,197,66,.55)}
.hero-actions.hero-actions > #quickReferenceButton{--hue:#fb7185;--chip-ink:#2a0a12;--ring:#fda4af;color:#ffeef0}
/* Inventory and Network had no hue of their own and fell back to the default indigo, so three tiles
   read purple beside Tour requests. Lime and orange keep every tile in its own family. */
.hero-actions.hero-actions > #inventoryButton{--hue:#a3e635;--chip-ink:#1a2e05;--ring:#bef264;color:#f4ffe0}
.hero-actions.hero-actions > #networkButton{--hue:#fb923c;--chip-ink:#2b1203;--ring:#fdba74;color:#fff1e6}
/* .accent-button and .queue-button both set display, which outranks the browser's own [hidden]
   rule, so a tile the script hid stayed on screen. Stripe codes is meant for the Patrol tab only
   and was showing on every one of them. */
.hero-actions.hero-actions > button[hidden]{display:none}
.mark-signtrace,.mark-reference,.mark-support{display:block;width:14px;height:14px}
/* The Network tile carries the network emblem as an image (the mark cut from the FusionTrace Standard seal,
   never a drawn glyph), sized like the three inline marks above. Its own rule, so the line above stays the
   text its test pins. */
.mark-network{display:block;width:14px;height:14px}
.mark-academy{display:block;width:14px;height:14px}
/* Tiles come and go with the tab, so the count is odd as often as it is even. In the two-column
   fold a lone tile at the end takes the whole row instead of sitting half-width beside nothing.
   On desktop every tile has its own column, so the rule stays out of the way there. */
@media(max-width:1100px){.hero-actions.hero-actions > button.span-tail{grid-column:1/-1}}
@media(prefers-reduced-transparency:reduce){.hero-actions.hero-actions > button{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(5,18,28,.92)}}

/* The founding price sits under the list price on every plan card, in the same place on every
   edition, so a founding member can see what the code is worth at a glance. */
.plan-founding{display:flex;align-items:baseline;gap:7px;margin:8px 0 0;padding:7px 9px;border-radius:9px;border:1px solid rgba(245,197,66,.34);background:rgba(245,197,66,.09)}
.plan-founding b{font-size:15px;letter-spacing:-.02em;color:#f7d489}
.plan-founding span{font-size:9px;color:#c8a55f;text-transform:uppercase;letter-spacing:.06em;font-weight:800}
.hospitality-tier-grid span i{display:block;font-style:normal;font-size:9px;color:#c8a55f;font-weight:800;margin-top:2px}
.hospitality-oversize{margin:10px 0 0;padding:9px 11px;border:1px dashed #2a5365;border-radius:10px;color:#9fb6c4;font-size:11px}
/* SignTrace documents inside the SignTrace dialog: a toolbar, a form that unfolds, and one card
   per request with its signers in order. */
.doc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}
.doc-form{border:1px solid #1e3c50;border-radius:14px;background:#07192647;padding:16px;margin:0 0 18px;display:grid;gap:12px}
.doc-form label>span{display:block;font-size:12.5px;font-weight:700;color:#9fb6c8;margin:0 0 5px;text-transform:none;letter-spacing:normal}
.doc-form input,.doc-form textarea{width:100%}
.doc-parties-edit{display:grid;gap:8px}
.doc-party-row{display:grid;grid-template-columns:1.1fr 1.35fr 1.55fr .8fr .7fr .9fr minmax(36px,auto);gap:8px;align-items:center}
.doc-party-row select{min-height:38px;border-radius:9px;border:1px solid #2d6f7a;background:rgba(13,49,61,.55);color:#e6f6fa;font:inherit;font-size:13px;padding:0 8px}
.doc-party-row .icon-button{width:36px;height:36px}
.doc-form-actions{display:flex;gap:10px;flex-wrap:wrap}
.doc-request{border:1px solid #1e3c50;border-radius:14px;background:#07192647;padding:14px 16px;margin:0 0 10px}
.doc-request-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.doc-request-head b{display:block;font-size:15px;color:#ecfbff}
.doc-request-head small{display:block;margin-top:3px;color:#8ba2b4;font-size:11.5px}
.doc-parties{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.doc-parties li{display:flex;gap:10px;align-items:flex-start}
.doc-parties li b{color:#dbe8ee}
.doc-parties li span{color:#8ba2b4;font-size:12px}
.doc-parties li small{display:block;color:#7890a2;font-size:11px;margin-top:2px}
.doc-party-mark{flex:0 0 22px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;color:#8ba2b4;border:1px solid #2a4a5e;margin-top:1px}
.doc-party-mark.is-signed{background:#34d399;color:#04261a;border-color:#34d399}
.doc-party-mark.is-declined{background:#fb7185;color:#2a0a12;border-color:#fb7185}
.doc-party-mark.is-current{border-color:var(--teal);color:var(--teal);box-shadow:0 0 0 3px rgba(40,199,186,.18)}
.doc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}
.doc-void{color:#fda4af}
/* 25 Sep 2026: the status tag wrapped to two lines beside a long title, and Original PDF and Void
   were small underlined links beside full buttons. Every action is now the same button; Void sits
   apart at the right in its warning colour, and the tag always stays on one line. */
.doc-request-head>div{min-width:0}
.doc-request-head small{overflow-wrap:anywhere}
.doc-request-head .preflight-chip{flex:none;white-space:nowrap;margin-top:1px}
.doc-actions .secondary-button{padding:9px 14px;font-size:13px}
.doc-actions .doc-void{margin-left:auto;color:#fda4af;border-color:#5a3440;background:rgba(251,113,133,.06)}
.doc-actions .doc-void:hover{background:rgba(251,113,133,.13)}
.doc-request [data-doc-error]{margin:8px 0 0}
.doc-request [data-doc-error]:empty{display:none}
@media(max-width:560px){.doc-request-head{flex-direction:column-reverse;gap:8px}.doc-actions .secondary-button{flex:1 1 auto}.doc-actions .doc-void{margin-left:0}}
.doc-void-form{margin-top:10px;padding:12px;border:1px solid #4a2a33;border-radius:12px;background:rgba(251,113,133,.06);display:grid;gap:10px}
.doc-void-form label>span{display:block;color:#ffd7dc;font-size:12.5px;line-height:1.45;margin:0 0 6px;text-transform:none;letter-spacing:normal;font-weight:500}
.signtrace-health{margin-top:22px;border-top:1px solid #1e3c50;padding-top:14px}
.signtrace-health summary{cursor:pointer;font-weight:800;color:#a9c0d0}
/* The phone waivers sit in SignTrace too, so everything that takes a signature lives in one place (DJ, 26 Oct 2026). */
.signtrace-waivers{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-6px 0 18px}
.signtrace-waivers>span{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-right:2px}
.signtrace-waivers a{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 13px;border:1px solid #1e3c50;border-radius:999px;color:#cfe3ee;font-size:13px;font-weight:700;text-decoration:none}
.signtrace-waivers a span{color:var(--teal)}
.signtrace-waivers a:hover,.signtrace-waivers a:focus-visible{border-color:var(--teal);color:#e8f6fb}
@media(max-width:520px){.signtrace-waivers{display:grid;grid-template-columns:1fr 1fr}.signtrace-waivers>span{grid-column:1/-1}.signtrace-waivers a{justify-content:center;padding:6px 8px;white-space:nowrap}}
@media(max-width:720px){.doc-party-row{grid-template-columns:1fr 1fr;grid-auto-rows:auto;padding:0 0 10px;border-bottom:1px solid #1e3c50}.doc-party-row:last-child{border-bottom:0}.doc-party-row .icon-button{grid-column:1/-1;justify-self:end;width:32px;height:32px;margin-top:-2px}.doc-toolbar{flex-direction:column;align-items:stretch}}

/* Account: the signed-in person's profile and security, and for a Super Admin the team. */
.account-button{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 13px;border-radius:999px;border:1px solid #2d6f7a;background:rgba(13,49,61,.55);color:#cfe3ea;font:inherit;font-weight:700;font-size:13px;cursor:pointer}.account-button:hover{border-color:#37d4c5;color:#ebfbff}
@media(max-width:720px){.account-button{padding:0 10px}.account-button span{display:none}}
.account-tabs{display:flex;gap:6px;margin:0 0 16px}.account-tab{padding:9px 14px;border-radius:999px;border:1px solid #2d6f7a;background:rgba(13,49,61,.5);color:#cfe3ea;font:inherit;font-weight:700;font-size:13px;cursor:pointer}.account-tab.is-on{background:rgba(55,212,197,.16);border-color:#37d4c5;color:#ebfbff}
.account-card{display:flex;gap:16px;align-items:center;padding:16px 18px;border-radius:14px;border:1px solid #255166;background:linear-gradient(145deg,rgba(13,49,61,.6),rgba(9,26,40,.4));margin:0 0 14px}
.account-avatar{flex:none;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:rgba(55,212,197,.16);color:#5de3d7;font-weight:850;font-size:20px;letter-spacing:.02em}
.account-card b{display:block;font-size:18px;color:#ecfbff}.account-card small{display:block;margin-top:3px;color:#8ba2b4;font-size:12.5px}
.account-role{display:inline-block;margin-top:8px;padding:4px 10px;border-radius:999px;background:rgba(55,212,197,.14);color:#5de3d7;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.account-section{padding:16px 18px;border-radius:14px;border:1px solid #1e3c50;background:rgba(9,26,40,.5);margin:0 0 14px}.account-section h3{margin:0 0 4px;font-size:15px;color:#ecfbff}.account-section p{margin:0 0 12px;color:#9fb8c6;font-size:13px;line-height:1.5}
.account-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin:0 0 14px}.account-facts div{min-width:0}.account-facts span{display:block;color:#8ba2b4;font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:800}.account-facts b{display:block;margin-top:3px;color:#dfeef5;font-size:14px;font-weight:600;overflow-wrap:anywhere}
.account-name-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.account-name-form label{flex:1;min-width:200px}
.account-danger{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.team-invite{margin:0 0 16px}.team-list{display:grid;gap:10px}
.team-member{display:grid;grid-template-columns:1fr auto;gap:8px 14px;align-items:center;padding:13px 16px;border-radius:12px;border:1px solid #1e3c50;background:rgba(9,26,40,.55)}
.team-member b{display:block;font-size:15px;color:#ecfbff}.team-member small{display:block;margin-top:3px;color:#8ba2b4;font-size:12px;overflow-wrap:anywhere}
.team-member.is-deactivated b,.team-member.is-deactivated small{color:#7f96a6}
.team-status{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.team-status.active{background:rgba(55,212,197,.14);color:#5de3d7}.team-status.invited{background:rgba(251,191,36,.14);color:#fbbf24}.team-status.deactivated{background:rgba(148,163,184,.14);color:#94a3b8}
.team-actions{grid-column:1/-1;display:flex;gap:8px 14px;align-items:center;flex-wrap:wrap;padding-top:8px;border-top:1px solid #1e3c50}.team-actions select{min-height:36px;padding:0 10px;border-radius:9px;border:1px solid #264257;background:#0b1b2a;color:var(--ink);font:inherit;font-size:13px}
.team-note{margin:8px 0 0;color:#8fa9b7;font-size:12px}
@media(max-width:720px){.account-facts{grid-template-columns:1fr}.account-card{align-items:flex-start}.account-danger .secondary-button,.account-danger .link-button{width:100%}}
.account-avatar,.team-avatar,.topbar .avatar{overflow:hidden;padding:0}.account-avatar img,.team-avatar img,.topbar .avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.team-avatar{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:rgba(55,212,197,.16);color:#5de3d7;font-weight:850;font-size:13px}.team-member{grid-template-columns:auto 1fr auto}.team-member .team-actions{grid-column:1/-1}.account-photo-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.account-photo-pick{cursor:pointer;margin:0}
/* The toast as a popover keeps its place and look; the browser only owns whether it is in the top layer. */
.toast[popover]{inset:auto;top:auto;left:auto;right:24px;bottom:24px;margin:0;width:auto;height:auto;overflow:visible;font:inherit}@supports selector(:popover-open){.toast[popover]:not(:popover-open){display:none}.toast[popover]:popover-open{display:block}}
.doc-sent{display:flex;gap:14px;align-items:flex-start;border:1px solid #2e8f85;border-radius:14px;background:rgba(32,191,178,.10);padding:14px 16px;margin:0 0 12px}.doc-sent-mark{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#20bfb2;color:#041918;font-weight:900}.doc-sent b{display:block;font-size:15px;color:#ecfbff}.doc-sent p{margin:6px 0 10px;color:#9fb8c6;font-size:13px;line-height:1.5}.doc-sent .doc-form-actions{margin:0}.doc-request.is-new{border-color:#2e8f85;box-shadow:0 0 0 2px rgba(32,191,178,.22)}
/* The send form's own display rule used to beat the hidden attribute after a re-render, so the empty form came back on screen the moment a document was sent (23 Sep 2026). */
.doc-form[hidden]{display:none!important}

/* Photo adjuster */
.photo-editor{margin-top:12px}.photo-help{margin:0 0 10px;color:#9fb8c6;font-size:13px}.photo-stage{position:relative;width:min(280px,100%);aspect-ratio:1;border-radius:14px;overflow:hidden;background:#071624;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;outline:0}.photo-stage.is-dragging{cursor:grabbing}.photo-stage:focus-visible{box-shadow:0 0 0 3px rgba(46,191,179,.35)}.photo-stage canvas{display:block;width:100%;height:100%}.photo-mask{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 50%,transparent 49.6%,rgba(5,17,27,.72) 50.4%)}.photo-mask:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(93,227,215,.85);box-shadow:0 0 0 1px rgba(0,0,0,.35) inset}.photo-zoom{display:flex;align-items:center;gap:10px;margin:12px 0;max-width:280px}.photo-zoom input[type=range]{flex:1;accent-color:#20bfb2;min-width:0}.photo-zoom .icon-button{width:32px;height:32px;font-size:18px;line-height:1}

/* Record disposition (Super Admin): archive with a reason, restore, or delete a record that never became an account. 23 Sep 2026. */
.archived-badge{border-color:#4a5a6a!important;background:rgba(74,90,106,.22)!important;color:#b8c7d3!important}
.disposition-control{border:1px solid #3a3f5c;background:rgba(58,63,92,.12);border-radius:12px;padding:13px}.disposition-control .assignment-copy{border-color:#3a3f5c;background:rgba(7,24,36,.36)}.disposition-control .form-grid{margin-top:10px}
.danger-button{border:1px solid #7a2e35;background:rgba(122,46,53,.22);color:#ffb3b8;border-radius:10px;padding:10px 14px;font-weight:800;font-size:12px;cursor:pointer}.danger-button:hover:not(:disabled){background:rgba(122,46,53,.38)}.danger-button:disabled{opacity:.45;cursor:not-allowed}
.doc-reminded{display:inline-flex;align-items:center;gap:6px;color:#9fb6c8;font-size:12px;font-weight:700;white-space:nowrap}.doc-reminded::before{content:"";width:7px;height:7px;border-radius:50%;background:#20bfb2;box-shadow:0 0 6px rgba(32,191,178,.8)}
/* SignTrace health check (24 Sep 2026): royal blue with a glowing LED edge, so the one button that proves the platform is not lost at the bottom of a dark dialog. */
.health-button{display:inline-flex;align-items:center;gap:10px;border:1px solid #6f9bff;background:linear-gradient(135deg,#3b7bff,#1f4fd6);color:#fff;border-radius:12px;padding:12px 20px;font-weight:900;font-size:13px;letter-spacing:.02em;cursor:pointer;box-shadow:0 0 0 2px rgba(59,123,255,.35),0 0 18px rgba(59,123,255,.55),0 10px 26px rgba(31,79,214,.35);animation:health-glow 2.4s ease-in-out infinite}
.health-button:hover:not(:disabled){background:linear-gradient(135deg,#4d89ff,#2a5fe8)}.health-button:disabled{opacity:.7;cursor:progress;animation:none}
.health-led{width:9px;height:9px;border-radius:50%;background:#8fd8ff;box-shadow:0 0 6px #8fd8ff,0 0 14px rgba(59,123,255,.9);flex:0 0 auto}
.signtrace-health>summary{cursor:pointer;font-weight:800;color:#dbe7f2;display:flex;align-items:center;gap:9px;padding:6px 0}.signtrace-health>summary .health-led{animation:health-blink 2.4s ease-in-out infinite}
@keyframes health-glow{0%,100%{box-shadow:0 0 0 2px rgba(59,123,255,.35),0 0 14px rgba(59,123,255,.45),0 10px 26px rgba(31,79,214,.3)}50%{box-shadow:0 0 0 3px rgba(59,123,255,.6),0 0 26px rgba(59,123,255,.85),0 10px 26px rgba(31,79,214,.4)}}
@keyframes health-blink{0%,100%{opacity:.75}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.health-button,.signtrace-health>summary .health-led{animation:none}}
/* Delete and purge (24 Sep 2026): the confirmation lists what goes and what stays elsewhere; the answer stays on screen with the links. */
.purge-list{margin:6px 0 10px;padding-left:18px;color:#e6c9cc;font-size:12px;line-height:1.5}.purge-list li{margin:2px 0}.purge-list ol{margin:2px 0 4px;padding-left:18px;color:#c9d5de}.purge-list a{color:#7fd6cc;font-weight:800;text-decoration:underline}.purge-remains{margin:8px 0 0;color:#ffd7da;font-size:12px}
.purge-summary{padding:26px 16px 18px;text-align:center}.purge-check{display:flex;align-items:center;justify-content:center;width:72px;height:72px;margin:0 auto 14px;border-radius:50%;background:rgba(32,191,178,.16);border:2px solid #20bfb2;color:#7fd6cc;font-size:38px;font-weight:900;box-shadow:0 0 0 10px rgba(32,191,178,.08);animation:purge-pop .45s cubic-bezier(.2,.9,.3,1.3)}@keyframes purge-pop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.purge-summary h3{font-size:22px}.purge-lead{margin:0 0 14px;color:#9fb6c8;font-size:13px}.disposition-confirm .form-error:empty{display:none}.disposition-confirm .form-error{margin:0 0 8px;font-weight:800}.purge-summary h3{margin:0 0 6px;color:#eef5f9}.purge-summary>p{margin:0 0 10px;color:#c9d5de;font-size:13px}.purge-summary .purge-list{text-align:left;color:#c9d5de;max-width:560px;margin:0 auto 10px}.purge-summary .purge-remains{text-align:left;max-width:560px;margin:8px auto 0}.purge-summary .assignment-actions{justify-content:center;margin-top:12px}.purge-timing{margin:10px 0 0;color:#687b89;font-size:11px}
.disposition-confirm{margin-top:12px;border:1px solid #7a2e35;background:rgba(122,46,53,.12);border-radius:10px;padding:12px}.disposition-confirm p{margin:0 0 8px;color:#e6c9cc;font-size:12px}.disposition-confirm code{color:#ffd7da;font-weight:800}.disposition-confirm input{flex:1 1 220px;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}

/* Signing code by text (23 Sep 2026): the signer picks where the code goes when a mobile is on the record. */
.esign-channels{display:flex;flex-wrap:wrap;gap:6px 18px;margin:8px 0 4px}.esign-channels .check-line{margin:0}.esign-channels b{color:#dcecf4}
.field-help{display:block;margin-top:4px;color:#7e95a6;font-size:11px;font-weight:400;text-transform:none;letter-spacing:0}

/* The way back from the Sign step while a packet is out. */
.signature-back-note{margin:0 0 12px;color:#a9c0d0;font-size:12.5px;line-height:1.5}

/* Signer mobile sits under the name, title and email row, not pressed against it (DJ, 24 Sep 2026). */
.signer-mobile-row{margin-top:18px}

/* The signing step lights the way (DJ, 24 Sep 2026). Six digits in: the code field turns teal and the name field or
   the pad glows. A name typed or ink on the pad: the glow moves to the Sign button. */
.esign-cue{margin:10px 0 14px;font-size:13px;font-weight:700;color:#8ee9df}
.esign-cue::before{content:"\2713";display:inline-block;margin-right:7px;color:#37d4c5}
[data-stage="name"] [data-esign="code-input"],[data-stage="sign"] [data-esign="code-input"]{border-color:#37d4c5;box-shadow:0 0 0 3px rgba(55,212,197,.14)}
[data-stage="name"] .esign-typed input,[data-stage="name"] .esign-pad-box,[data-stage="name"] .esign-mode-btn.is-on,[data-stage="sign"] [data-esign="sign"]{border-color:#37d4c5;animation:esign-glow 1.6s ease-in-out infinite}
@keyframes esign-glow{0%,100%{box-shadow:0 0 0 1px rgba(55,212,197,.55),0 0 6px rgba(55,212,197,.18)}50%{box-shadow:0 0 0 1px #37d4c5,0 0 20px 3px rgba(55,212,197,.5)}}
@media (prefers-reduced-motion:reduce){[data-stage="name"] .esign-typed input,[data-stage="name"] .esign-pad-box,[data-stage="name"] .esign-mode-btn.is-on,[data-stage="sign"] [data-esign="sign"]{animation:none;box-shadow:0 0 0 1px #37d4c5,0 0 14px 2px rgba(55,212,197,.4)}}

.bulk-toggle{padding:9px 13px;font-size:12px}.bulk-toggle[aria-pressed="true"]{border-color:var(--teal);color:#8af3e7}
.bulk-bar{padding:14px 15px;border-bottom:1px solid var(--line-soft);background:rgba(10,32,46,.9);display:grid;gap:10px}
.bulk-bar[hidden]{display:none}.bulk-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.bulk-head b{color:#eef8fb;margin-right:auto}
.bulk-check{display:grid;place-items:center;width:30px;height:35px;flex:0 0 auto;cursor:pointer}.bulk-check input{width:20px;height:20px;accent-color:#28c7ba;cursor:pointer}
.bulk-result{scroll-margin-top:12px;border:1px solid #2f8d72;background:rgba(40,199,186,.08);border-radius:12px;padding:12px 14px}.bulk-result.has-failures{border-color:#b08430;background:rgba(214,163,62,.08)}.bulk-result-head{display:flex;align-items:center;gap:10px}.bulk-result-head h3{margin:0;flex:1;font-size:16px}.bulk-result p,.bulk-result .purge-list{margin:8px 0 0}.bulk-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-weight:900;color:#061521;background:#28c7ba;flex:0 0 auto}.bulk-result.has-failures .bulk-mark{background:#d6a33e}.bulk-bar .ghost-button{display:inline-flex}.bulk-bar .form-error:empty{display:none}
@media(max-width:720px){.bulk-head .secondary-button{flex:1}.bulk-bar .assignment-actions{display:grid;grid-template-columns:1fr;gap:8px}.bulk-bar .esign-row{flex-wrap:wrap}.bulk-bar .esign-row>*{flex:1 1 100%}}

/* Founding 50 closed (bw_app_settings founding_50 = off): no founding prices are shown, because none can be had. */
.founding-closed .plan-founding,.founding-closed .hospitality-tier-grid i,.founding-closed #patrolFounding{display:none}
/* The completion card sits inside .payment-recap, whose "div" rule (padding and a bottom rule for the old
   money rows) outranked the card's own classes: the CT tile was padded down to an 11px sliver and a stray
   line ran under the text (DJ, 28 Sep 2026). The card's divs keep their own spacing. */
.payment-recap .completion-next{padding:20px;border-bottom:1px solid var(--teal)}
.payment-recap .completion-next div{padding:0;border-bottom:0}
@media(max-width:720px){.payment-recap .completion-next{padding:16px}}
.device-assignment-row select{width:100%;padding:8px 9px;font-size:11px;background:#0d2735;color:#e6f1f5;border:1px solid #255166;border-radius:8px}.device-assignment-row select:disabled{background:#0b202d;color:#90a8b8}.device-pick small,.device-box small{display:block;color:#90a8b8;font-size:10px;line-height:1.35;margin-top:4px}.device-pick small:empty{display:none}.device-box>span{display:block;font-size:8px;color:#58cfc4;text-transform:uppercase;letter-spacing:.08em}.device-box b{display:block;font-size:14px;color:#e6f1f5}

/* Inventory: every box by edition, and the return to the shelf confirmed inside the row (DJ, 30 Sep 2026). */
.inventory-edition{margin-bottom:22px}.inventory-edition .detail-section-head span{text-transform:none;letter-spacing:0;font-size:11px;color:#8ba2b4}.inventory-list{display:grid;gap:8px}
.inventory-box{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px 12px;padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:10px}
.inventory-box-main b{display:block;font-size:12px;color:#def0f7}.inventory-box-main small{display:block;color:#90a8b8;font-size:10px;margin-top:3px;word-break:break-all}
.inventory-where{font-size:11px;color:#b4c6d3;white-space:nowrap}.inventory-where small{color:#8ee9df;font-size:10px}.inventory-box.is-shelf .inventory-where{color:#8ee9df}
.inventory-online{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:#90a8b8;padding:4px 8px;border:1px solid #255166;border-radius:999px;white-space:nowrap}.inventory-online.is-on{color:#8ee9df;border-color:#2f8d72}
.inventory-actions .secondary-button{padding:8px 12px;font-size:11px;white-space:nowrap}
/* Asset numbers (DJ, 14 Oct 2026): CT-0002 is the box's for life, printed on its bottom label, and what support asks for on a call. */
.asset-number{display:inline-block;padding:1px 6px;border:1px solid #2f6f86;border-radius:6px;background:#0d2735;color:#def0f7;font:700 10px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.03em;white-space:nowrap;text-transform:none;vertical-align:1px}
.inventory-box-main b .asset-number{margin-left:8px}.inventory-box-main b .asset-number:first-child{margin-left:0}.placed-asset .asset-number{margin:0 2px}
.device-box>span.asset-number{display:inline-block;margin-top:4px;font-size:10px;color:#def0f7;letter-spacing:.03em;text-transform:none}
.inventory-mint-note{margin:0;color:#90a8b8;font-size:11px;line-height:1.45}
.safecode-gateway-assets{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.safecode-gateway-note{display:block;margin-top:4px;color:#6f879a;font-size:10px}
.inventory-return-slot{grid-column:1/-1}.inventory-return-slot:empty{display:none}
.inventory-return{display:grid;gap:10px;padding:12px;border:1px solid #2a4c60;border-radius:10px;background:#0a1f2e}.inventory-return .assignment-actions{margin:0}
.inventory-returned{margin:0 0 10px;padding:10px 12px;border:1px solid #2f8d72;border-radius:10px;background:rgba(40,199,186,.08);color:#8ee9df;font-size:12px;line-height:1.45}
@media(max-width:720px){.inventory-box{grid-template-columns:1fr auto}.inventory-where{grid-column:1/-1;white-space:normal}.inventory-actions{grid-column:1/-1}.inventory-actions .secondary-button{width:100%}.inventory-return .assignment-actions{display:grid;grid-template-columns:1fr;gap:8px}}

.device-gate{color:#8ee9df!important}
/* SignTrace review first (2 Oct 2026): the View document gate, the viewer's page, the staff form's
   recipient rows with viewers, the deadline form and the view ledger. Sentence case throughout,
   no letter-spaced labels, no glow. */
.esign-doc-gate{padding:34px 18px;text-align:center;color:#cfe3ea;display:grid;gap:12px;justify-items:center}.esign-doc-gate p{margin:0;font-size:15px}.esign-doc-gate small{color:#8fa9b7;font-size:12px}.esign-doc-gate .primary-button{min-width:220px}
.esign-viewer{margin:16px 0 0;padding:16px 18px;border-radius:12px;border:1px solid #2d6f7a;background:rgba(13,49,61,.5);color:#cfe3ea}.esign-viewer p{margin:0;line-height:1.55}.esign-viewer p b{color:#ebfbff}.esign-viewer-note{margin-top:8px!important;color:#8fa9b7;font-size:12px}.esign-viewer .esign-row{margin-top:12px}.esign-viewer [data-esign="reviewed"][hidden]{display:none}
.doc-section-label{margin:0 0 6px;color:#9fb6c8;font-size:13px;font-weight:700}
.doc-form-heading{margin:0;color:#ecfbff;font-size:15px;font-weight:700}.doc-form-heading[hidden]{display:none}
.doc-field-note{display:block;margin-top:5px;color:#7f98aa;font-size:11.5px;line-height:1.45;text-transform:none;letter-spacing:0;font-weight:500}.doc-field-note[hidden]{display:none}
.doc-form input[type=date]{color-scheme:dark}
.doc-form input[readonly]{opacity:.7}
.doc-party-row.is-kept{border-radius:10px}.doc-party-kept{display:inline-grid;place-items:center;height:36px;padding:0 8px;border-radius:9px;border:1px solid #2d6f7a;color:#8fa9b7;font-size:11px;font-weight:700}
.doc-party-mark.is-viewer{border-style:dashed;color:#9fb6c8}
.doc-inline-link{font-size:11px;color:#8fa9b7}.doc-inline-link.doc-ask{color:#5de3d7}
.doc-deadline-form select{min-height:38px;border-radius:9px;border:1px solid #2d6f7a;background:rgba(13,49,61,.55);color:#e6f6fa;font:inherit;font-size:13px;padding:0 8px;max-width:420px;width:100%}
.doc-deadline-form{margin-top:10px;padding:12px;border:1px solid #2a4a5e;border-radius:12px;background:rgba(13,49,61,.35);display:grid;gap:10px}.doc-deadline-form label>span{display:block;color:#cfe3ea;font-size:12.5px;line-height:1.45;margin:0 0 6px;text-transform:none;letter-spacing:normal;font-weight:500}.doc-deadline-form input[type=date]{color-scheme:dark;max-width:220px}
.doc-ledger{margin-top:12px;padding:12px 14px;border:1px solid #1e3c50;border-radius:12px;background:rgba(7,25,38,.45);scroll-margin-top:96px;scroll-margin-bottom:16px}.doc-ledger[hidden]{display:none}
/* A card or a ledger brought into view by a link from an email clears the sticky dialog head, as a placed answer does. */
.doc-request{scroll-margin-top:96px}
.doc-ledger-heading{margin:0 0 6px;color:#9fb6c8;font-size:12.5px;font-weight:700}.doc-ledger-heading+.doc-ledger-heading,.doc-ledger-row+.doc-ledger-heading,ul+.doc-ledger-heading{margin-top:12px}
.doc-ledger-row{border-top:1px solid #1e3c50;padding:8px 0}.doc-ledger-row:first-of-type{border-top:0}.doc-ledger-row summary{cursor:pointer;list-style:none;display:grid;gap:2px}.doc-ledger-row summary::-webkit-details-marker{display:none}.doc-ledger-row summary b{color:#dbe8ee}.doc-ledger-row summary span{color:#8ba2b4;font-size:12px}.doc-ledger-row summary small{color:#7890a2;font-size:11.5px}.doc-ledger-row summary::after{content:"Show every view";color:#8fa9b7;font-size:11px;text-decoration:underline}.doc-ledger-row[open] summary::after{content:"Hide"}
.doc-ledger-row ul,.doc-ledger-versions,.doc-ledger-trail{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px}.doc-ledger-row li,.doc-ledger-versions li,.doc-ledger-trail li{color:#9fb6c8;font-size:12px;line-height:1.45}.doc-ledger-trail li span{display:inline-block;min-width:112px;color:#7890a2}.doc-ledger-versions code{font-size:11px;color:#8fa9b7}
.doc-ledger-empty{margin:6px 0 0;color:#7890a2;font-size:12px}
@media(max-width:720px){.doc-party-row.is-kept .doc-party-kept{grid-column:1/-1;justify-self:end;height:30px}.doc-actions .primary-button{flex:1 1 100%}.esign-doc-gate .primary-button{width:100%}.doc-ledger-trail li span{display:block;min-width:0}}

.optional-tag{display:inline-block;margin-left:6px;padding:1px 6px;border:1px solid #2d4a60;border-radius:999px;color:#7f97aa;font-size:8px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;vertical-align:middle}

/* Core and Connected (7 Oct 2026): the video, the per-location choice and the struck device price on the Plan step. */
.connected-intro{display:grid;gap:14px;margin:0 0 18px}
.connected-video{display:grid;gap:10px}
.connected-video video{width:100%;max-height:420px;border-radius:14px;border:1px solid #1d3a4e;background:#000}
.connected-video-card{display:flex;gap:14px;align-items:flex-start;border:1px solid #21475d;border-radius:14px;background:linear-gradient(150deg,rgba(14,48,60,.55),rgba(8,26,39,.92));padding:16px 18px}
.connected-video-card img{width:46px;height:46px;border-radius:12px;flex:0 0 auto}
.connected-video-card h3{margin:4px 0 6px;font-size:19px;letter-spacing:-.03em;color:#ecfbff}
.connected-video-card p{margin:0;color:#9fb6c8;font-size:12.5px;line-height:1.5}
.connected-video-card .eyebrow{margin:0}
.tier-choice{border:1px solid #1d3a4e;border-radius:14px;background:#071a28;padding:16px}
.tier-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}
.tier-head h3{margin:4px 0 6px;font-size:17px;letter-spacing:-.02em}
.tier-head p:not(.eyebrow){margin:0;color:#8ba2b4;font-size:12px;line-height:1.5;max-width:560px}
.tier-fee{flex:0 0 auto;min-width:190px;border:1px solid var(--teal);border-radius:12px;padding:11px 13px;background:rgba(32,115,109,.14)}
.tier-fee span{display:block;color:#8ba2b4;font-size:9px;text-transform:uppercase;letter-spacing:.09em;font-weight:800}
.tier-fee b{display:block;font-size:22px;color:#8af3e7;margin-top:3px;letter-spacing:-.03em}
.tier-fee b s{color:#6f8698;font-size:15px;margin-right:6px;text-decoration-thickness:2px}
.tier-fee small{display:block;color:#9fb6c8;font-size:10px;line-height:1.4;margin-top:4px}
.tier-rows{display:grid;gap:8px}
.tier-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;border:1px solid #1a3549;border-radius:12px;background:rgba(6,20,31,.54);padding:11px 13px}
.tier-row.is-connected{border-color:#31c6b9}
.tier-row-name b{display:block;font-size:13px;color:#dff2f7}
.tier-row-name small{display:block;color:#7fa1b1;font-size:10.5px;margin-top:2px}
.tier-row.is-connected .tier-row-name small{color:#8af3e7}
.tier-toggle{display:inline-flex;border:1px solid #2a4a60;border-radius:999px;padding:3px;background:#06121f}
.tier-toggle button{border:0;background:transparent;color:#8ba2b4;font:inherit;font-size:11.5px;font-weight:800;padding:7px 13px;border-radius:999px;cursor:pointer;min-height:34px}
.tier-toggle button[aria-checked="true"]{background:var(--teal);color:#041713}
.tier-toggle button:focus-visible{outline:3px solid rgba(46,191,179,.35);outline-offset:1px}
.tier-cameras{display:grid;gap:3px;min-width:92px}
.tier-cameras span{font-size:9px;color:#748ca0;text-transform:uppercase;letter-spacing:.07em}
.tier-cameras input{width:92px;min-height:36px;border:1px solid #2a4a60;border-radius:9px;background:#06121f;color:var(--ink);padding:0 10px;font:inherit;font-size:14px}
.patrol-connected-note{margin:0}
.pricing-summary .price-note{display:block;margin-top:4px;color:#8ba2b4;font-size:10px;line-height:1.35;text-transform:none;letter-spacing:0}
.pricing-summary .price-note s{color:#6f8698;text-decoration-thickness:2px;margin-right:4px}
.hospitality-tier-grid span u{text-decoration:none;color:#9fb6c8;font-weight:800;font-size:10px}
.hospitality-tier-grid span em{display:block;font-style:normal;color:#8af3e7;font-weight:800;font-size:11px;margin-top:6px;padding-top:6px;border-top:1px solid #183245}
.tier-badge{display:inline-block;font-style:normal;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border:1px solid #2a5365;color:#8ba2b4;background:rgba(13,45,57,.42);vertical-align:middle;margin-left:7px}.tier-badge.connected{border-color:var(--teal);color:var(--teal);background:rgba(32,115,109,.14)}
.review-sites{border:1px solid #1d3a4e;border-radius:13px;padding:14px;margin:14px 0}.review-sites-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.review-sites-head b{font-size:13px}.review-sites-head span{color:#7890a2;font-size:11px}.review-site{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid #183245}.review-site:first-child{border-top:0}.review-site b{display:block;font-size:13px}.review-site small{display:block;color:#7890a2;font-size:11px;margin-top:2px}.review-site small.review-site-note{color:var(--teal)}.review-site .tier-badge{margin-left:0}.review-connect{padding:8px 12px;font-size:12px}
@media(max-width:720px){.review-site{grid-template-columns:1fr auto}.review-connect{grid-column:1/-1;width:100%}}
@media(max-width:720px){.tier-head{flex-direction:column}.tier-fee{min-width:0;width:100%}.tier-row{grid-template-columns:1fr;gap:10px}.tier-toggle{width:100%}.tier-toggle button{flex:1}.tier-cameras{min-width:0}.tier-cameras input{width:100%}.connected-video-card{flex-direction:column}}

/* Virtual patent marking (35 U.S.C. 287(a)). One muted line and one link; the list of patents lives at the URL. */
.patent-marking{margin:14px 0 0;padding:0 16px 16px;text-align:center;font-size:11px;line-height:1.4;letter-spacing:.04em;color:var(--muted,#8da1b5)}
.patent-marking a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* Network density */
.network-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:18px}
.network-tile{padding:12px;border:1px solid #183449;background:#071824;border-radius:10px}.network-tile b{display:block;font-size:22px;color:#def0f7}.network-tile span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#90a8b8;margin-top:4px}
.network-section{margin-bottom:22px}.network-section .detail-section-head span{text-transform:none;letter-spacing:0;font-size:11px;color:#8ba2b4}
.network-list{display:grid;gap:6px}
.network-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:6px 12px;padding:10px 12px;border:1px solid #183449;background:#071824;border-radius:10px}
.network-row b{display:block;font-size:12px;color:#def0f7}.network-row small{display:block;color:#90a8b8;font-size:10px;margin-top:3px}
.network-counts{font-size:11px;color:#b4c6d3;white-space:nowrap}
.network-level{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:#90a8b8;padding:4px 8px;border:1px solid #255166;border-radius:999px;white-space:nowrap}
.network-level.is-dense{color:#8ee9df;border-color:#2f8d72}.network-level.is-forming{color:#cfe6f2;border-color:#3b6f8a}
.network-next{margin:0 0 18px;padding:10px 12px;border:1px solid #2f8d72;border-radius:10px;background:rgba(40,199,186,.08);color:#8ee9df;font-size:12px;line-height:1.45}
@media(max-width:720px){.network-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.network-row{grid-template-columns:1fr auto}.network-level{justify-self:start}.network-counts{grid-column:1/-1;white-space:normal}}

/* Support: one inbox across every edition (9 Oct 2026). Waiting on BlueWave is amber; urgent and
   critical carry their word, not only a colour; a reply's outcome stays under the button. */
.hero-actions.hero-actions > .queue-button.support-tile,.hero-actions.hero-actions > .queue-button.support-tile.has-pending{--hue:#38bdf8;--chip-ink:#04263a;--ring:#7dd3fc;color:#e6f6ff}
.support-modal{width:min(1180px,calc(100vw - 32px))}
.support-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:12px}
#supportFilters{display:grid;gap:10px}
.support-scopes,.support-modes{display:inline-flex;border:1px solid #264257;border-radius:999px;overflow:hidden;width:max-content;max-width:100%}
.support-scopes button,.support-modes button{border:0;background:transparent;color:#9fb3c3;padding:9px 14px;font-weight:800;font-size:12px;cursor:pointer;white-space:nowrap}
.support-scopes button.is-on,.support-modes button.is-on{background:#123a4c;color:#e6fbff;box-shadow:inset 0 0 0 1px #2c6a80}
.support-scopes b{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:4px;padding:0 6px;border-radius:999px;background:#f5c542;color:#1f1600;font-size:11px}
.support-editions{display:flex;flex-wrap:wrap;gap:6px}
.support-editions button{border:1px solid #213b4e;background:#0b1f2f;color:#b8ccd9;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:750;cursor:pointer}
.support-editions button.is-on{border-color:#2ebfb3;color:#e6fbff;background:#0f2e3a}
.support-editions button span{color:#7f97a9;margin-left:2px}
.support-tools{display:flex;gap:8px;align-items:flex-start;flex:1;justify-content:flex-end;min-width:260px}
.support-tools input{max-width:340px}
.support-layout{display:grid;grid-template-columns:minmax(300px,.95fr) minmax(0,1.5fr);gap:14px;align-items:start}
.support-list{display:grid;gap:8px;max-height:min(64vh,640px);overflow-y:auto;padding-right:2px}
.support-row{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;border:1px solid #183449;background:#071824;border-radius:11px;padding:11px 12px;color:inherit;cursor:pointer;font:inherit}
.support-row:hover{border-color:#2a566b}.support-row.is-selected{border-color:#2ebfb3;box-shadow:inset 0 0 0 1px rgba(46,191,179,.25)}
.support-priority{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:none;background:#53677c}.support-priority.is-urgent{background:var(--amber)}.support-priority.is-critical{background:var(--red);box-shadow:0 0 0 4px rgba(255,112,134,.14)}
.support-row-main{display:grid;gap:2px;min-width:0}
.support-row-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.support-row-top b{font-size:11px;color:#9fb3c3;letter-spacing:.02em}
.support-row strong{color:#e9f6fc;font-size:13px;overflow-wrap:anywhere}
.support-row small{color:#6f879a;font-size:11px;overflow-wrap:anywhere}
.support-turn.is-waiting{color:#f4c575;font-weight:750}
.support-edition{font-size:9px;font-weight:850;letter-spacing:.06em;text-transform:uppercase;border:1px solid #294257;border-radius:999px;padding:2px 7px;color:#a6c7e8}
.support-edition.is-restaurant{color:#c3e29a;border-color:#43592c}.support-edition.is-hospitality{color:#a9c4ff;border-color:#2e4d7b}.support-edition.is-patrol{color:#d4d6e2;border-color:#464955}.support-edition.is-retail{color:#82e8de;border-color:#23566b}
.support-flag{font-style:normal;font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:2px 7px;border:1px solid #294257;color:#9fb3c3}
.support-flag.is-urgent{color:#f4c575;border-color:#68522a}.support-flag.is-critical{color:#ff9fae;border-color:#7a3443}
.support-empty{border:1px dashed #213c50;border-radius:11px;padding:18px;color:#7f97a9}.support-empty b{color:#dcecf4}.support-empty p{margin:4px 0 0}
.support-detail{border:1px solid #183449;background:#071824;border-radius:13px;padding:16px;min-height:300px;scroll-margin-top:90px}
.support-back{display:none;margin-bottom:12px}
.support-detail-head h3{margin:0 0 10px;font-size:18px;letter-spacing:-.02em;overflow-wrap:anywhere}
.support-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}
.support-facts div{border:1px solid #173145;border-radius:9px;padding:8px 10px;min-width:0}
.support-facts dt{color:#6f879a;font-size:9px;text-transform:uppercase;letter-spacing:.07em}
.support-facts dd{margin:2px 0 0;color:#e3f0f7;font-size:12px;font-weight:700;overflow-wrap:anywhere}
.support-status{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px;padding:0 0 14px;border-bottom:1px solid #132b3e;margin-bottom:12px}
.support-field{display:grid;gap:4px}.support-field.inline{min-width:180px}
.support-inline-result{font-size:12px;color:#81ebbf;font-weight:750;align-self:center}.support-inline-result.is-bad{color:#ff91a2}
.support-thread{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:9px;max-height:min(40vh,420px);overflow-y:auto}
.support-thread li{border:1px solid #1d394d;border-radius:11px;padding:10px 12px;background:#0b1f2f}
.support-thread li.is-bluewave{border-color:#256249;background:rgba(25,93,66,.18)}
.support-thread li.is-note{border-color:#68522a;background:rgba(96,70,26,.18)}
.support-from{margin:0 0 4px;color:#7f97a9;font-size:11px}.support-from b{color:#dcecf4}
.support-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:#e6f2f8;line-height:1.55}
.modal .support-detail form{padding:0}
.support-composer{display:grid;gap:10px}
.support-field>span{text-transform:none;letter-spacing:.01em;font-size:11px;overflow-wrap:anywhere}
.support-composer textarea{min-height:110px}
.support-composer-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:10px}
.support-result{border:1px solid;border-radius:11px;padding:11px 13px}.support-result b{display:block}.support-result p{margin:3px 0 0}
.support-result.is-ok{border-color:#256249;background:rgba(25,93,66,.2);color:#bdf3dc}
.support-result.is-warn{border-color:#68522a;background:rgba(96,70,26,.2);color:#f1d9a6}
.support-result.is-bad{border-color:#7a3443;background:rgba(122,52,67,.2);color:#ffc2cc}
@media(max-width:900px){
  .support-layout{grid-template-columns:minmax(0,1fr)}
  .support-scopes{display:flex;width:100%}.support-scopes button{flex:1 1 auto;padding:9px 8px}
  #supportFilters{min-width:0;width:100%}
  .support-layout.has-detail .support-list{display:none}
  .support-layout:not(.has-detail) .support-detail{display:none}
  .support-back{display:inline-flex}
  .support-list{max-height:none;overflow:visible}
  .support-thread{max-height:none}
  .support-facts{grid-template-columns:1fr 1fr}
  .support-tools{min-width:0;flex-basis:100%}.support-tools input{max-width:none}
  .support-composer-row>*{flex:1 1 100%}.support-composer-row .primary-button{width:100%}
  .support-status .secondary-button{flex:1}
}

/* Customer screenshots in a support thread (9 Oct 2026): thumbnails, and the full-size view. */
.support-shots{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.support-thread .support-shots li{border:0;padding:0;background:none;border-radius:0}
.support-shot{display:block;padding:0;width:132px;height:96px;border:1px solid #2a4a60;border-radius:9px;background:#06131d;color:#9fbfd2;font:inherit;font-size:12px;cursor:zoom-in;overflow:hidden}
.support-shot:disabled{cursor:default}.support-shot span{display:block;padding:8px}
.support-shot.is-bad{border-color:#7a3340;color:#ffb3bf}
.support-shot img{display:block;width:100%;height:100%;object-fit:cover}
.support-shot:focus-visible{outline:2px solid #6cc4ff;outline-offset:2px}
.support-shot-gone{display:inline-flex;align-items:center;min-height:40px;padding:6px 10px;border:1px dashed #33536a;border-radius:9px;color:#9fbfd2;font-size:12px}
.support-shot-modal{width:min(96vw,1100px);max-height:94vh;padding:18px 18px 16px;box-sizing:border-box}
.support-shot-modal .modal-head{position:sticky;top:0}
.support-shot-full{margin:0;display:grid;gap:8px;justify-items:center}
.support-shot-full img{display:block;max-width:100%;max-height:calc(94vh - 150px);height:auto;border-radius:8px;background:#000}
@media(max-width:600px){.support-shot{width:100px;height:74px}}

/* Edition tabs glow on hover the way the hero tiles do: a ring in the tab's own hue, lit on hover
   and keyboard focus, with the same small lift. Quick Reference is reached from its hero tile, so
   its tab is hidden (it stays in the page as the switch the tile presses) and the tile stays lit
   while the reference is open, in place of the tab's underline. */
.tabs-row .tab-button{position:relative;border-radius:10px;--ring:#5eead4;transition:color .18s ease,transform .18s ease}
.tabs-row .tab-button[data-tab="restaurants"]{--ring:#bef264}
.tabs-row .tab-button[data-tab="hospitality"]{--ring:#7cb4ff}
.tabs-row .tab-button[data-tab="patrol"]{--ring:#cbd5e1}
.tabs-row .tab-button[data-tab="cargo"]{--ring:#fdba74}
.tabs-row .tab-button[data-tab="pilots"]{--ring:#c4b5fd}
.tabs-row .tab-button::after{content:"";position:absolute;inset:2px -8px 5px;border-radius:10px;border:1.5px solid var(--ring);box-shadow:0 0 16px color-mix(in srgb,var(--ring) 55%,transparent),inset 0 0 10px color-mix(in srgb,var(--ring) 20%,transparent);opacity:0;transition:opacity .18s ease;pointer-events:none}
.tabs-row .tab-button:hover::after,.tabs-row .tab-button:focus-visible::after{opacity:1}
.tabs-row .tab-button:hover,.tabs-row .tab-button:focus-visible{color:#ebfbff;outline:none;transform:translateY(-1px)}
.tabs-row .tab-button.locked:hover::after{opacity:0}
.tabs-row .tab-button.locked:hover{transform:none}
.tabs-row .tab-button[hidden]{display:none}
.hero-actions > #quickReferenceButton[aria-pressed="true"]::after{opacity:1}
@media(prefers-reduced-motion:reduce){.tabs-row .tab-button,.tabs-row .tab-button::after{transition:none}.tabs-row .tab-button:hover{transform:none}}

/* Every hero tile wraps its label inside the glass. .primary-button carries nowrap for the rest of
   the app, so New onboarding ran out of its tile once the Patrol tab put nine tiles in the row; it
   also had no chip of its own and sat flush against its plus sign. */
.hero-actions.hero-actions > button{white-space:normal;text-align:center;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0}
.hero-actions.hero-actions > button span{display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border-radius:6px;font-size:12px}
/* The console rule (DJ, 13 Oct 2026): the answer to a press sits where the press was made, comes into view once, and holds one-time values until its own button. */
/* An answer that lands at the bottom of a dialog stops 88px short of the edge, so the toast in the corner (24px up, about 46px tall) does not sit on it. */
.placed-slot:empty{display:none}.placed-result{margin:12px 0 0;padding:13px 15px;border:1px solid #2e8f85;border-radius:12px;background:rgba(32,191,178,.09);color:#cfe9ef;scroll-margin-top:96px;scroll-margin-bottom:88px;overflow-wrap:anywhere}.placed-result.is-warn{border-color:#a07a32;background:rgba(214,163,62,.09)}.placed-result.is-bad{border-color:#a8485a;background:rgba(255,112,134,.08)}.placed-result.is-once{border-width:2px;box-shadow:0 0 0 3px rgba(40,199,186,.12)}.placed-result.is-once.is-warn{box-shadow:0 0 0 3px rgba(214,163,62,.14)}
.placed-eyebrow{margin:0 0 4px;color:var(--teal);font-size:10px;font-weight:850;letter-spacing:.17em}.placed-result.is-warn .placed-eyebrow{color:var(--amber)}.placed-title{margin:0;font-size:15px;line-height:1.35;color:#ecfbff}.placed-title:focus{outline:none}.placed-title:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:4px}.placed-text{margin:6px 0 0;color:#9fb8c6;font-size:13px;line-height:1.5}.placed-copy{margin:10px 0 0}.placed-copy input{flex:1;min-width:0}.placed-link,.placed-copy-row{margin:8px 0 0;font-size:13px}.placed-link a{color:#8ee9df}.placed-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.inventory-box>.placed-result,.team-member>.placed-result{grid-column:1/-1;margin-top:4px}.tour-req.is-decided{border-color:#2e8f85}.device-row-error:empty{display:none}
.doc-sent-title{margin:0;font-size:15px;color:#ecfbff}.doc-sent-title:focus{outline:none}.doc-sent-title:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:4px}.doc-sent{scroll-margin-top:96px}
[data-step]{scroll-margin-top:96px}[data-step] h3:focus{outline:none}#linkDialogTitle:focus{outline:none}#linkDialog .modal-actions{margin-top:14px}

/* Fleet */
/* FleetTrace (/fleet/): every CaseTrace Edge box in one list. From 1180px each box is one row of a
   nine-column grid under a header row (the grid needs about 1060px inside the shell's padding, so a
   narrower window would scroll sideways); below that each box is a card: the CT number and its
   status on the first line, the customer and store next, then a definition list of the other
   columns, two across on a tablet. Nothing scrolls sideways at any width and every control,
   placed-result button and form control is at least 44px tall. */
.fleet-topbar .fleet-top-link{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;font-size:12px;color:#cae0ee;text-decoration:none}
/* Two links and Refresh beside the brand do not fit 390px in one line: the brand keeps its width and the actions wrap under it. */
@media(max-width:560px){.fleet-topbar{flex-wrap:wrap;height:auto;min-height:64px;padding-top:8px;padding-bottom:8px;row-gap:4px}.fleet-topbar .top-actions{flex:1 1 100%;justify-content:flex-start;gap:6px}.fleet-topbar .fleet-top-link,.fleet-topbar .ghost-button{padding:0 10px;font-size:11px}}
.fleet-hero{margin-bottom:22px}
.fleet-panel{overflow:visible;--fleet-cols:88px 140px 80px minmax(130px,1.1fr) 110px 92px 66px 96px minmax(150px,1.4fr)}
/* The chips stay on screen while the list scrolls under them; the panel's overflow is visible so sticky can pin to the page. */
.fleet-filters{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 15px;background:rgba(7,23,36,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft);border-radius:var(--radius) var(--radius) 0 0}
.fleet-chips{display:flex;flex-wrap:wrap;gap:8px}
.fleet-chip{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 13px;border-radius:999px;border:1px solid #264257;background:#0d2232;color:#cae0ee;font-weight:800;font-size:12px;cursor:pointer;white-space:nowrap}
.fleet-chip b{min-width:22px;padding:2px 7px;border-radius:999px;background:#143046;color:#8ee9df;font-size:11px;text-align:center}
.fleet-chip:hover{background:#122b3e}
.fleet-chip[aria-pressed="true"]{border-color:var(--teal);background:rgba(20,63,66,.6);color:#8af3e7}
.fleet-search{flex:1 1 260px;min-height:44px}
.fleet-search input{min-height:44px;padding:11px 0}
.fleet-head{display:grid;grid-template-columns:var(--fleet-cols);gap:10px;padding:10px 15px;border-bottom:1px solid var(--line-soft);color:#627c8f;font-size:9px;text-transform:uppercase;letter-spacing:.07em;font-weight:800}
/* Rows are redrawn in place after a press; the page holds still and land() brings the answer into view. */
.fleet-list{display:grid;overflow-anchor:none}
.fleet-box{display:grid;grid-template-columns:var(--fleet-cols);gap:8px 10px;align-items:start;padding:12px 15px;border-bottom:1px solid var(--line-soft);font-size:12px;color:#c2d8e2}
.fleet-box:last-child{border-bottom:0}
/* On desktop the definition lists dissolve into the grid, so each value is its own column under the header row. */
.fleet-dl,.fleet-dl>div{display:contents}
.fleet-dl dt{display:none}
.fleet-dl dd{margin:0}
.fleet-cell{min-width:0;overflow-wrap:anywhere}
.fleet-cell code{font:600 11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:#def0f7}
.fleet-cell small{display:block;color:#8ba2b4;font-size:10.5px;margin-top:2px;line-height:1.4}
.fleet-customer b{display:block;color:#def0f7;font-size:12.5px}
.fleet-muted{color:#6f879a}
.fleet-ct{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.fleet-ct .asset-number{margin:0;font-size:11px;padding:3px 8px}
.fleet-sticker{flex-basis:100%;color:#8ba2b4;font-size:10.5px}
.fleet-nonumber{display:inline-block;padding:3px 8px;border:1px dashed #3a5468;border-radius:6px;color:#8ba2b4;font-size:10px}
.fleet-pill{display:inline-flex;align-items:center;width:max-content;border:1px solid #294257;background:#102233;border-radius:999px;padding:4px 9px;color:#9fb3c3;font-size:10px;font-weight:800;white-space:nowrap}
.fleet-pill.is-online{color:#81ebbf;border-color:#256249;background:rgba(25,93,66,.2)}
.fleet-pill.is-offline{color:#ff9bac;border-color:#744052;background:rgba(100,35,55,.2)}
.fleet-pill.is-preparing{color:#c9b6ff;border-color:#55478a;background:rgba(84,66,140,.18)}
.fleet-pill.is-shipped{color:#91bbff;border-color:#315c91;background:rgba(35,73,122,.17)}
.fleet-pill.is-claim_issued{color:#f4c575;border-color:#68522a;background:rgba(96,70,26,.18)}
.fleet-pill.is-in_stock{color:#8ee9df;border-color:#2f8d72;background:rgba(40,199,186,.08)}
.fleet-pill.is-retired{color:#8ba2b4;border-color:#3a5468;background:#0b1b29}
.fleet-box.is-retired .fleet-cell{opacity:.72}
.fleet-note-body{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:#c2d8e2;line-height:1.45}
.fleet-drift,.fleet-notes-all,.fleet-actions,.fleet-form-slot,.fleet-results{grid-column:1/-1}
.fleet-drift{margin:0;color:#d7ba83;font-size:11px}
.fleet-notes-all{list-style:none;margin:0;padding:10px 12px;display:grid;gap:8px;border:1px solid #183449;border-radius:10px;background:#071824}
.fleet-notes-all[hidden]{display:none}
.fleet-notes-all li .fleet-note-body{display:block;overflow:visible}
.fleet-notes-all li small{display:block;color:#8ba2b4;font-size:10.5px;margin-top:2px}
.fleet-actions{display:flex;flex-wrap:wrap;gap:8px}
.fleet-actions .secondary-button{width:auto;min-height:44px;padding:0 14px;font-size:12px}
.fleet-actions .secondary-button.danger{margin-right:0}
.fleet-noactions{margin:0;color:#8ba2b4;font-size:11.5px;line-height:1.5}
.fleet-form-slot:empty,.fleet-results:empty{display:none}
.fleet-form{display:grid;gap:10px;padding:12px;border:1px solid #2a4c60;border-radius:10px;background:#0a1f2e;scroll-margin:12px 0 24px}
.fleet-form-title{margin:0;color:#ecfbff;font-weight:800;font-size:13px}
.fleet-form label{display:block;margin:0}
.fleet-form label>span{display:block;color:#9fb6c8;font-size:12px;font-weight:700;margin:0 0 5px;text-transform:none;letter-spacing:normal}
.fleet-form input,.fleet-form select,.fleet-form textarea{width:100%;min-height:44px;font-size:14px}
.fleet-form textarea{min-height:72px}
.fleet-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.fleet-form-help{display:block;color:#7f97a9;font-size:11px;margin-top:5px;line-height:1.45}
.fleet-form-note{margin:0;color:#8ee9df;font-size:11px;line-height:1.5}
.fleet-form-pending{margin:6px 0 0;color:#d7ba83;font-size:11px;line-height:1.5}
.fleet-claim-sites[hidden]{display:none}
.fleet-form .check-line{margin:0}
.fleet-form .check-line input{width:18px;height:18px;min-height:0}
.fleet-form .form-error{margin:0}
.fleet-form-actions{display:flex;justify-content:flex-end;gap:9px;margin:0}
.fleet-form-actions button{min-height:44px;width:auto}
.fleet-form button{min-height:44px}
.fleet-results .placed-result{margin-top:10px}
/* Every button a placed result offers (Done, "I have written it on the lid", Copy the code) is a finger's height. */
.fleet-box .placed-actions button,.fleet-box .placed-copy-row button{min-height:44px;width:auto;padding:0 16px}
.fleet-box .placed-notice{margin:10px 0 0;font-size:12px;line-height:1.5}
.fleet-foot{padding:10px 15px 14px;margin:0}
.fleet-empty,.fleet-load-error{margin:15px}
@media(max-width:1179px){
  .fleet-head{display:none}
  /* The search scrolls away with the page; the chips stick (the sticky top is the search's height and gap, so it parks above the viewport). */
  .fleet-filters{top:-54px;gap:8px;padding:10px 12px}
  .fleet-search{order:-1;flex-basis:100%}
  .fleet-chips{gap:6px}
  .fleet-chip{padding:0 10px;font-size:11.5px;gap:6px}
  .fleet-chip b{min-width:0;padding:1px 6px}
  .fleet-box{grid-template-columns:minmax(0,1fr) auto;gap:10px 8px;padding:14px 15px}
  .fleet-ct{grid-row:1;grid-column:1;order:-3}
  .fleet-status{grid-row:1;grid-column:2;order:-3;display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right;max-width:52vw}
  .fleet-customer{grid-column:1/-1;order:-2}
  .fleet-dl,.fleet-dl>div{display:block}
  .fleet-dl{grid-column:1/-1;margin:0;display:grid;gap:6px}
  .fleet-dl>div{display:grid;grid-template-columns:108px minmax(0,1fr);gap:8px;align-items:start}
  .fleet-dl dt{display:block;color:#627c8f;font-size:9.5px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;padding-top:2px}
  .fleet-note-body{-webkit-line-clamp:2}
}
/* On a phone the row's buttons share the width two across; a tablet keeps them at their own width. */
@media(max-width:639px){.fleet-actions .secondary-button{flex:1 1 calc(50% - 8px)}.fleet-form-actions{display:grid;grid-template-columns:1fr 1fr}}
/* A tablet is wide enough for the definition list to run two across; the notes keep a whole line. */
@media(min-width:640px) and (max-width:1179px){.fleet-dl{grid-template-columns:1fr 1fr;column-gap:18px}.fleet-dl>div:has(.fleet-notes){grid-column:1/-1}}
@media(max-width:460px){.fleet-dl>div{grid-template-columns:96px minmax(0,1fr)}.fleet-form-grid{grid-template-columns:1fr}}
@media(prefers-reduced-transparency:reduce){.fleet-filters{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(7,23,36,1)}}

/* The Fleet tile on the activation hero is a link, not a button, and wears the same glass as the
   buttons beside it. The script sizes the strip by counting buttons (--tiles), so a visible link adds
   one column of its own on desktop and takes a whole row of its own in the two-column fold. */
.hero-actions > a{flex:none;width:100%;min-height:60px;padding:12px 18px;font-size:14.5px;justify-content:center;text-align:center;line-height:1.25;position:relative;--ring:#a39dff;transition:filter .18s ease,transform .18s ease;text-decoration:none}
.hero-actions > a::after{content:"";position:absolute;inset:-3px;border-radius:15px;border:2px solid var(--ring);box-shadow:0 0 18px color-mix(in srgb,var(--ring) 60%,transparent),inset 0 0 12px color-mix(in srgb,var(--ring) 22%,transparent);opacity:0;transition:opacity .18s ease;pointer-events:none}
.hero-actions > a:hover::after,.hero-actions > a:focus-visible::after{opacity:1}
.hero-actions > a:hover,.hero-actions > a:focus-visible{outline:none;transform:translateY(-1px);text-decoration:none;filter:none}
.hero-actions.hero-actions > a{--hue:#8b84ff;--chip-ink:#fff;color:#eef6fb;letter-spacing:.01em;white-space:normal;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;background:linear-gradient(160deg,color-mix(in srgb,var(--hue) 26%,transparent) 0%,color-mix(in srgb,var(--hue) 9%,transparent) 100%),rgba(5,18,28,.58);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--hue) 58%,transparent),inset 0 1px 0 rgba(255,255,255,.16),0 10px 28px color-mix(in srgb,var(--hue) 16%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
.hero-actions.hero-actions > a span{display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border-radius:6px;font-size:12px;background:var(--hue);color:var(--chip-ink);box-shadow:0 0 14px color-mix(in srgb,var(--hue) 55%,transparent)}
.hero-actions.hero-actions > #fleetButton{--hue:#22d3ee;--chip-ink:#042a33;--ring:#67e8f9;color:#e6fbff}
@media(max-width:1100px){.hero-actions.hero-actions > a.span-tail{grid-column:1/-1}}
@media(max-width:720px){.hero-actions > a{min-height:56px;padding:12px 14px}}
@media(prefers-reduced-motion:reduce){.hero-actions > a,.hero-actions > a::after{transition:none}.hero-actions > a:hover{transform:none}}
@media(prefers-reduced-transparency:reduce){.hero-actions.hero-actions > a{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(5,18,28,.92)}}
/* Partners */
/* The Partners tile is a link to its own page, so it takes the same glass, height and hue treatment the
   button tiles get, and the tile count (set by the script on buttons alone) counts it too. */
.hero-actions.hero-actions > #partnersButton{--hue:#f472b6;--chip-ink:#2a0a1a;--ring:#f9a8d4;color:#ffeaf4}
/* The Academy tile (DJ, 27 Oct 2026) opens FusionTrace Academy in a new tab. Emerald, the one family no
   other tile wears, with a drawn mortarboard on the chip. */
.hero-actions.hero-actions > #academyButton{--hue:#34d399;--chip-ink:#042f22;--ring:#6ee7b7;color:#e8fff5}
.hero-actions.hero-actions > a span{display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border-radius:6px;font-size:12px;background:var(--hue);color:var(--chip-ink);box-shadow:0 0 14px color-mix(in srgb,var(--hue) 55%,transparent)}
.hero-actions.hero-actions > a:hover,.hero-actions.hero-actions > a:focus-visible{text-decoration:none;outline:none;filter:brightness(1.08);transform:translateY(-1px)}
@media(max-width:720px){.hero-actions.hero-actions > a{min-height:56px;padding:12px 14px}}
/* Core's own state for the number (reserved, bound, void), read live, under the device id. */
.fleet-device .fleet-core-state{display:block;margin-top:3px;font-size:10px;color:#8ba2b4;text-transform:uppercase;letter-spacing:.06em}
/* Phone width (DJ, 18 Oct 2026: nothing slides sideways and nothing is hidden to make it fit). The next step on a
   record row wraps instead of ending in an ellipsis (phone and tablet). On a phone each record row is a card: the name
   with its Open button, then the next step, the contact and the sites, and the status, every part of the row in full.
   Measured by scripts/verify-phone-width.mjs. */
@media(max-width:960px){.activation-next small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}}
/* The list toolbar wraps at every width: a tile filter chip, Select and the record count drop to a second line
   instead of running past the panel on a tablet. */
.toolbar{flex-wrap:wrap}
@media(max-width:720px){.activation-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;column-gap:12px;row-gap:10px;align-items:start}.activation-row .case-customer{grid-column:1/3;grid-row:1;min-width:0}.activation-row .case-customer>div{min-width:0}.activation-row .row-action{grid-column:3;grid-row:1}.activation-row .case-cell,.activation-row .activation-next{display:block;min-width:0}.activation-row .case-cell.activation-next{grid-column:1/-1;grid-row:2}.activation-row .case-cell:nth-child(2){display:block;grid-column:1;grid-row:3}.activation-row .case-cell:nth-child(3){display:block;grid-column:2/-1;grid-row:3}.activation-row .case-cell:nth-child(5){grid-column:1/-1;grid-row:4;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.activation-row .case-cell:nth-child(5) small{margin-top:0}.activation-row .case-customer b,.activation-row .case-customer small,.activation-row .case-cell b,.activation-row .case-cell small{overflow-wrap:anywhere}}
/* A 360px phone: the stepper's connectors give up their room before the steps do, and the support filters wrap
   their words instead of the strip running past its border. */
@media(max-width:460px){.stepper i{min-width:4px;margin:0 3px}.support-scopes button{white-space:normal;line-height:1.25}}
/* A tablet held upright (721 to 960px): the record row's columns share the width instead of holding minimums that
   cut the status and the Open button off the panel, and the activation steps run in rows instead of a strip that
   scrolls sideways. */
@media(min-width:721px) and (max-width:960px){.activation-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.9fr) auto;gap:12px}.activation-row .case-customer>div,.activation-row .case-cell{min-width:0}.activation-row .case-customer small,.activation-row .case-cell small,.activation-row .case-cell b{overflow-wrap:anywhere}.workflow-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:13px 10px;overflow-x:visible}.workflow-strip>i{display:none}.workflow-strip div{min-width:0}}
/* SignTrace drafts (22 Oct 2026): the queue sits above the list; a draft's chip is quiet, not a warning. */
.preflight-chip.is-draft{border-color:#3b6b8a;color:#bfe0f5;background:rgba(74,144,196,.14)}
.doc-group{margin:0 0 18px;padding:12px 12px 2px;border:1px dashed #2d5c74;border-radius:16px;background:rgba(13,49,61,.22)}
.doc-group-label{margin:0 0 10px;color:#9fd3ea;font-size:11px;font-weight:850;letter-spacing:.14em;text-transform:uppercase}
/* The ledger's groups: what still needs a signature is amber and first; executed and closed sit plain below it. */
.doc-group.is-awaiting{border-color:#d9a441;background:rgba(217,164,65,.07)}.doc-group.is-awaiting .doc-group-label{color:#f0c86a}
.doc-group.is-executed,.doc-group.is-review,.doc-group.is-closed{border-style:solid;border-color:#1f3b4b;background:transparent}.doc-group.is-closed .doc-group-label{color:#7f98a8}
.doc-request.is-draft{border-style:dashed;border-color:#3b6b8a}
.doc-parties-empty{color:#8ba2b4;font-size:12.5px;list-style:none}
/* Thinking always shows: a pressed control changes colour, sweeps and names its step until the answer is on screen. */
.primary-button.is-working,.secondary-button.is-working,.link-button.is-working{position:relative;color:#041918;background-color:#37d4c5;border-color:#37d4c5;background-image:linear-gradient(110deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 35%,rgba(255,255,255,.55) 50%,rgba(255,255,255,0) 65%,rgba(255,255,255,0) 100%);background-size:220% 100%;animation:bw-working-sweep 1.1s linear infinite;cursor:progress;opacity:1}
.secondary-button.is-working.doc-void{background-color:#fb7185;border-color:#fb7185}
@keyframes bw-working-sweep{from{background-position:120% 0}to{background-position:-120% 0}}
@media(prefers-reduced-motion:reduce){.primary-button.is-working,.secondary-button.is-working,.link-button.is-working{animation:none;background-image:none}}

/* Two-step sign-in on the Account page, the code sheet at a sensitive action, and the audit log (Lighthouse hardening, 23 Oct 2026). */
.team-status.auth-on{background:rgba(55,212,197,.14);color:#5de3d7}.team-status.auth-not_set_up{background:rgba(251,191,36,.14);color:#fbbf24}.team-status.auth-not_required{background:rgba(148,163,184,.14);color:#94a3b8}
.code-sheet .form-grid{margin:0 0 6px}.code-sheet input{font-size:22px;letter-spacing:.22em;text-align:center}.code-sheet .form-error:empty{display:none}.code-sheet .modal-actions a.primary-button{text-decoration:none;text-align:center}
.audit-filters{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin:0 0 14px}.audit-filters label{display:grid;gap:4px;min-width:0}.audit-filters label span{color:#8ba2b4;font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:800}.audit-filters input,.audit-filters select{width:100%;min-width:0;background:#081a28;border:1px solid #1c364a;color:#cfe1ec;padding:10px 11px;border-radius:10px;font:inherit}
.audit-list{display:grid;gap:10px}.audit-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 14px;padding:12px 14px;border-radius:12px;border:1px solid #1e3c50;background:rgba(9,26,40,.55);min-width:0}.audit-row time{color:#8ba2b4;font-size:12px;line-height:1.5}.audit-row b{display:block;font-size:14px;color:#ecfbff}.audit-row small{display:block;margin-top:2px;color:#8ba2b4;font-size:12px;overflow-wrap:anywhere}.audit-row details{grid-column:2;margin-top:4px}.audit-row summary{cursor:pointer;color:#8fa9b7;font-size:12px}.audit-row pre{margin:6px 0 0;padding:10px;border-radius:8px;background:#061420;color:#cfe1ec;font-size:11px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%}
.audit-row.is-service b::after{content:" via service";color:#8ba2b4;font-weight:600;font-size:12px}.audit-more{margin-top:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media(max-width:720px){.audit-filters{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr}.audit-row details{grid-column:1}.code-sheet .modal-actions{flex-direction:column}}
/* SignTrace review page (DJ, 23 Oct 2026: "Smart review button is camo. Make it more."). The one action
 * on the page is the console's primary control, and every state is distinct and legible: hover lifts and
 * brightens, focus-visible draws a ring clear of the fill, active presses, disabled is a muted fill at
 * full opacity rather than a 45% ghost, and done is a green Reviewed chip with a check. The label keeps
 * 4.5:1 or better in every state; tests/signtrace-review-button.test.mjs computes the ratios from these
 * values. The same rules reach the signer's Sign button, so review and sign feel like one product. */
.primary-button:hover{filter:brightness(1.06)}
.primary-button:focus-visible{outline:3px solid #5eead4;outline-offset:3px}
.primary-button:active{transform:translateY(0);filter:brightness(.94);box-shadow:0 4px 14px rgba(40,199,186,.18)}
.esign-card .primary-button:disabled:not(.is-working):not(.is-done){opacity:1;background:#13404a;color:#9fc4cc;box-shadow:none;cursor:not-allowed;transform:none;filter:none}
.esign-card .primary-button.is-done,.esign-card .primary-button.is-done:disabled{opacity:1;background:#123b33;color:#8ef0c4;box-shadow:inset 0 0 0 1px #2a6b55;cursor:default;transform:none;filter:none}
.esign-card .primary-button .esign-check{display:inline-block;margin-right:8px;font-weight:900}
.esign-viewer .esign-row{align-items:center;gap:10px 14px}
.esign-viewer .esign-row>button{flex:0 0 auto;min-height:44px}
.esign-viewer .esign-code-status{flex:1 1 220px;min-width:0}
@media(max-width:720px){.esign-viewer .esign-row>button{flex:1 1 100%}.esign-viewer .esign-code-status{flex:1 1 100%}}

/* Partner invoices (25 Oct 2026): the second card on the board, beside QuickBooks. Rows stack on a
   phone; nothing scrolls sideways. */
.pb-card{border-left-color:#1f8f84}
.pb-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.pb-row{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:rgba(6,20,30,.5);min-width:0}
.pb-main{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.pb-main b{font-size:13px;color:#e8f6fb}
.pb-card .pb-meta{margin:5px 0 0;font-size:12px;line-height:1.5;color:#b7cdd8;overflow-wrap:anywhere}
.pb-card .pb-meta b{color:#e8f6fb}
.pb-bad{color:#ffb3b0}
.pb-invoices{list-style:none;margin:9px 0 0;padding:0;display:grid;gap:6px}
.pb-invoice{display:grid;grid-template-columns:auto 1fr auto;gap:6px 12px;align-items:center;padding:8px 10px;border-radius:9px;border:1px solid var(--line-soft);background:rgba(9,28,38,.55);font-size:12px;color:#c2d8e2;min-width:0}
.pb-invoice b{color:#e8f6fb}
.pb-invoice span{overflow-wrap:anywhere}
.pb-links{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
/* The timeline under each invoice (1 Nov 2026): sent, opened by whom, paid. Full width, stacked. */
.pb-timeline{list-style:none;margin:4px 0 0;padding:6px 0 0;grid-column:1/-1;display:grid;gap:3px;border-top:1px solid var(--line-soft);font-size:12px;line-height:1.45;color:#b7cdd8;min-width:0}
.pb-timeline li{overflow-wrap:anywhere;padding-left:14px;position:relative}
.pb-timeline li::before{content:"";position:absolute;left:2px;top:.55em;width:6px;height:6px;border-radius:50%;background:#6f8a97}
.pb-timeline li.is-open::before{background:#8af3e7}
.pb-timeline li.is-paid::before{background:#7ed99a}
.pb-timeline li.is-waiting{color:#8fa6b2}
.pb-timeline li.is-waiting::before{background:transparent;border:1px solid #6f8a97}
.pb-links a,.pb-card .pb-meta a{color:#8af3e7;text-decoration:underline}
.pb-card .secondary-button.is-danger{border-color:#b4514f;color:#ffb3b0}
.pb-queue{margin-top:12px;border:1px solid var(--line);border-radius:10px;padding:0 12px 12px;background:rgba(9,28,38,.4)}
.pb-queue summary{cursor:pointer;padding:11px 0;font-size:12.5px;font-weight:700;color:#e8f6fb}
.pb-queue .form-grid{margin-top:4px}
.pb-lines{display:grid;gap:8px;margin-top:12px}
.pb-line{display:grid;grid-template-columns:1fr 84px 110px 36px;gap:8px;align-items:end}
.pb-line label{display:grid;gap:4px;min-width:0}
.pb-line .icon-button{height:40px;width:36px}
.pb-total{margin:10px 0 0;font-size:13px;font-weight:700;color:#e8f6fb}
@media(max-width:720px){.pb-invoice{grid-template-columns:1fr}.pb-line{grid-template-columns:1fr 1fr}.pb-line label:first-child{grid-column:1/-1}.pb-line .icon-button{grid-column:2;justify-self:end}.pb-card .books-actions button{flex:1 1 auto}}
