/* 2026-09-30 compliance mode — hides fields the tool shouldn't capture
   while the device is in Compliance / Local-Only Mode. See
   applyComplianceModeUI() in agentpro-core.js. */
body.compliance-local-only .compliance-restricted-field{display:none}

/* v3.7 readability pass: larger controls and type while preserving the
   familiar light/dark AgentPro header treatment. */
:root{
  --bg:#eef1f7;--sur:#fff;--sur2:#f5f8fc;
  --bd:#dfe4ee;--bd2:#eef1f7;
  --tx:#14203a;--tx2:#4a5568;--tx3:#7a8699;--tx4:#aeb7c6;
  --inp:#f5f8fc;--inp-f:#fff;
  --rh:#f8fafe;--ri:#edf4ff;--rc:#fffbf0;--re:#edfff5;--ro:#fff0f0;
  --navy:#0D2545;--blue:#3b7dd8;--gold:#C9A227;--gold2:#B8911F;--green:#27ae60;--red:#e74c3c;--amber:#e67e22;--purple:#8e44ad;
  --brand-agent:var(--navy);
  --teal:#16a085;
  /* Chrome = the navy shell (top bar, tab bar). Its own ink tokens so the
     same rules work in both themes. */
  --chrome:#0D2545;--chrome-ink:#ffffff;--chrome-ink2:#9db0d6;--chrome-line:#1f3a63;
  --rad:10px;--rad-sm:6px;
  --sh:0 2px 10px rgba(13,37,69,.10);--sh2:0 8px 28px rgba(13,37,69,.16);
  --transition:.18s ease;
  --tx1:var(--tx);--bg2:var(--sur2);
}
[data-theme=dark]{
  --bg:#0b1220;--sur:#131c2e;--sur2:#1a2438;
  --bd:#2a3550;--bd2:#202b44;
  --tx:#e8edf7;--tx2:#a9b4c9;--tx3:#7a8699;--tx4:#4a5670;
  --inp:#1a2438;--inp-f:#202b44;
  --rh:#18223a;--ri:#162240;--rc:#20200c;--re:#0d2218;--ro:#2a0d0d;
  /* Gold reads muddy on dark — lift it slightly; other accents unchanged. */
  --gold:#d9b641;--gold2:#c9a532;
  --brand-agent:#fff;
  --chrome:#0a1a33;--chrome-ink:#f2f5fb;--chrome-ink2:#8ba0c6;--chrome-line:#1c355c;
  --sh:0 2px 10px rgba(0,0,0,.36);--sh2:0 12px 34px rgba(0,0,0,.5);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-overflow-scrolling:touch}
html{overflow-x:hidden}
body{overflow-x:hidden}
html,body{height:100%;font-family:'Segoe UI',system-ui,sans-serif;font-size:15px;line-height:1.5;background:var(--bg);color:var(--tx);transition:background var(--transition),color var(--transition)}
button{cursor:pointer;font-family:inherit;font-size:14px;border:none;outline:none;transition:all var(--transition)}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--tx);background:var(--inp);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:7px 10px;outline:none;transition:all var(--transition)}
input:focus,select:focus,textarea:focus{background:var(--inp-f);border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,162,39,.16)}
textarea{resize:vertical;min-height:60px}
select option{background:var(--sur)}
body.booting #app,body.booting #lock-screen{display:none}
body.locked #app{display:none}
#lock-screen{display:none;min-height:100vh;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,var(--bg),var(--sur2))}
body.locked #lock-screen{display:flex}
.lock-card{width:min(420px,100%);background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);box-shadow:var(--sh2);padding:22px}
.lock-card h1{font-size:22px;color:var(--blue);margin-bottom:4px}
.lock-card p{font-size:12px;color:var(--tx3);margin-bottom:16px;line-height:1.45}
.lock-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.lock-msg{font-size:12px;color:var(--red);min-height:18px;margin-top:8px}
.lock-muted{font-size:11px;color:var(--tx4);margin-top:12px}
.remote-login{display:none;border-top:1px solid var(--bd);margin-top:14px;padding-top:14px}
.remote-login.show{display:block}
.remote-login-title{font-size:12px;font-weight:800;color:var(--blue);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}
.billing-actions{display:none;border-top:1px solid var(--bd);margin-top:14px;padding-top:14px}
.billing-actions.show{display:block}
.billing-plan-row{display:flex;gap:6px;flex-wrap:wrap}
.cloud-status{font-size:11px;color:var(--tx3);display:none;align-items:center;gap:5px}
.cloud-status.show{display:flex}
#app{display:flex;flex-direction:column;height:100vh;overflow:hidden}
#topbar{position:relative;display:flex;align-items:center;gap:10px 12px;padding:10px 16px;background:var(--sur);border-bottom:1px solid var(--bd);box-shadow:var(--sh);z-index:100;flex-shrink:0;flex-wrap:wrap}
#topbar .tb-group{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap}
#topbar .logo{font-size:18px;font-weight:800;color:var(--blue);letter-spacing:-0.5px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
#topbar .logo .agentpro-symbol{width:22px;height:22px;object-fit:contain;flex-shrink:0}
#topbar .logo .agentpro-wordmark{margin:0;color:var(--brand-agent);font-size:18px;font-weight:800}
#topbar .logo .agentpro-wordmark .pro{margin:0;color:var(--gold);font-size:18px;font-weight:800}
#topbar .logo .daily-ops{color:var(--tx3);font-weight:400;font-size:12px;margin-left:1px}
#weather-bar{font-size:12px;color:var(--tx2);display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--sur2);border-radius:20px;border:1px solid var(--bd)}
#weather-city{border:0;background:transparent;color:var(--tx2);font-size:12px;font-weight:700;min-width:140px;max-width:190px;outline:0}
#topbar .spacer{flex:1;display:flex;align-items:center;justify-content:center;min-width:0}
#date-display{font-size:12px;color:var(--tx3);white-space:nowrap}
/* 2026-09-05 (Jon) — Daily Memo strip, lives in the topbar's spacer */
.daily-memo-wrap{position:relative;max-width:420px;width:100%}
.daily-memo-strip{display:flex;align-items:center;gap:8px;width:100%;background:var(--sur2);border:1px solid var(--bd);border-radius:999px;padding:5px 14px 5px 10px;cursor:pointer;overflow:hidden;color:inherit;font:inherit}
.daily-memo-strip:hover{border-color:var(--gold)}
.daily-memo-strip i{font-size:13px;color:var(--gold2);flex:none}
.daily-memo-strip-text{font-size:11.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.daily-memo-strip-text b{color:var(--tx);font-weight:700}
.daily-memo-more{font-size:10px;color:var(--tx3);flex:none;font-weight:700}
.daily-memo-drop{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);width:340px;max-width:90vw;background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);box-shadow:0 16px 40px -12px rgba(20,20,40,.3);z-index:60;display:none;overflow:hidden}
.daily-memo-drop.show{display:block}
.daily-memo-drop-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--bd2);background:var(--sur2);font-size:12.5px;font-weight:700}
.daily-memo-drop-head span{font-size:11px;color:var(--tx3);font-weight:600}
.daily-memo-drop-list{max-height:280px;overflow-y:auto;padding:6px}
.daily-memo-item{display:flex;gap:9px;width:100%;padding:8px;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}
.daily-memo-item:hover{background:var(--sur2)}
.daily-memo-item-time{font-size:10.5px;font-weight:700;color:var(--tx3);min-width:44px;padding-top:3px;font-variant-numeric:tabular-nums}
.daily-memo-item-dot{width:9px;height:9px;border-radius:50%;margin-top:4px;flex:none}
.daily-memo-item-title{display:block;font-size:12.5px;font-weight:700;color:var(--tx)}
.daily-memo-item-sub{display:block;font-size:10.5px;color:var(--tx3);margin-top:1px}
.daily-memo-empty{padding:20px;text-align:center;color:var(--tx3);font-size:12px}
@media(max-width:900px){
  .daily-memo-wrap{width:auto;max-width:none}
  .daily-memo-strip{width:36px;height:36px;padding:0;justify-content:center;overflow:visible;position:relative}
  .daily-memo-strip-text{display:none}
  .daily-memo-more{position:absolute;right:-6px;top:-7px;min-width:17px;height:17px;padding:1px 4px;border-radius:999px;background:var(--gold);color:var(--navy);font-size:0;line-height:15px;text-align:center}
  .daily-memo-more::after{content:attr(data-count);font-size:9px}
  .daily-memo-drop{left:auto;right:0;transform:none}
}
.tb-icon-btn{position:relative;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:var(--rad-sm);background:var(--sur2);border:1px solid var(--bd);color:var(--tx2);cursor:pointer;flex-shrink:0;padding:0}
.tb-icon-btn:hover{background:var(--bd);color:var(--tx)}
.tb-icon-btn i{font-size:16px;line-height:1}
.tb-icon-btn.undo-btn{color:var(--amber)}
.tb-icon-btn.undo-btn:hover{background:#fff3e0;border-color:var(--amber);color:var(--amber)}
[data-theme=dark] .tb-icon-btn.undo-btn:hover{background:#2a1f0a}
.tb-icon-btn.theme-btn{color:var(--purple)}
.tb-icon-btn.theme-btn:hover{background:var(--sur2);border-color:var(--purple);color:var(--purple)}
[data-theme=dark] .tb-icon-btn.theme-btn:hover{background:#1a0d2a}
.tb-tip{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--tx);color:var(--sur);font-size:11px;white-space:nowrap;padding:4px 8px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity var(--transition);z-index:500}
.tb-tip::before{content:'';position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:4px solid transparent;border-bottom-color:var(--tx)}
.tb-icon-btn:hover .tb-tip{opacity:1}
.tb-divider{width:1px;height:22px;background:var(--bd);flex-shrink:0}
.tb-gear-wrap{position:relative}
.tb-gear-wrap.open>.tb-icon-btn{background:var(--blue);border-color:var(--blue);color:#fff}
.tb-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);box-shadow:var(--sh2);min-width:180px;z-index:600;overflow:hidden;display:none}
.tb-gear-wrap.open .tb-dropdown{display:block}
.tb-dd-item{display:flex;align-items:center;gap:10px;padding:9px 14px;font-size:13px;color:var(--tx);cursor:pointer;background:none;border:none;width:100%;text-align:left}
.tb-dd-item:hover{background:var(--rh)}
.tb-dd-item i{font-size:16px;color:var(--blue);width:18px;text-align:center;flex-shrink:0}
.tb-dd-sep{height:1px;background:var(--bd);margin:3px 0}
.tb-dd-muted{color:var(--tx3)}
.tb-dd-muted i{color:var(--tx3)}
.tb-dd-danger{color:var(--red)}
.tb-dd-danger i{color:var(--red)}
.tb-dd-danger:hover{background:var(--ro);color:var(--red)}
/* 2026-10-16 (Jon) — Save + Load share one folder/floppy button; the top bar stays on one line on desktop and tablet widths. */
.tb-saveload-wrap>.tb-icon-btn{overflow:visible}
.tb-folder-floppy{position:relative;display:inline-block;width:20px;height:20px}
.tb-folder-floppy>i{position:absolute;line-height:1}
.tb-folder-floppy>.ti-folder-open{left:1px;bottom:-1px;font-size:18px}
.tb-folder-floppy>.tb-floppy-in{right:-1px;top:-3px;font-size:13px;color:var(--blue);background:var(--sur2);border-radius:2px;transform:rotate(10deg);z-index:1}
.tb-saveload-wrap:hover>.tb-icon-btn .tb-floppy-in{background:var(--bd)}
.tb-saveload-wrap.open>.tb-icon-btn .tb-floppy-in{background:var(--blue);color:#fff}
.tb-saveload-drop{min-width:160px}
.tb-saveload-drop label.tb-dd-item{cursor:pointer}
@media(min-width:641px){
  #topbar,#topbar .tb-group{flex-wrap:nowrap}
  #topbar .tb-group-id{flex:0 1 auto;min-width:0}
  #topbar .tb-group-actions,#topbar .tb-group-session,#topbar .tb-group-status,#topbar .tb-divider,#topbar .tb-gear-wrap{flex-shrink:0}
  #topbar .tb-group-status{gap:8px}
  #topbar .logo{flex-shrink:0}
  #weather-bar{min-width:0;flex-shrink:1;overflow:hidden}
  #weather-city{min-width:60px;width:auto;flex-shrink:1;text-overflow:ellipsis}
  #weather-txt{white-space:nowrap}
}
@media(min-width:641px) and (max-width:1180px){#date-display{display:none}}
@media(min-width:641px) and (max-width:1040px){#topbar .logo .daily-ops{display:none}.cloud-status.show span{display:none}}
@media(min-width:641px) and (max-width:860px){#weather-txt{display:none}#topbar{padding-left:10px;padding-right:10px;gap:8px}}
#tabs{display:flex;background:var(--sur);border-bottom:1px solid var(--bd);flex-shrink:0;padding:0 16px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tab-btn{padding:11px 18px;font-size:14px;font-weight:600;color:var(--tx3);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:6px;flex-shrink:0;white-space:nowrap}
.tab-btn:hover{color:var(--tx)}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--gold)}

/* Keep the established light header; dark mode changes the Agent wordmark to
   white and keeps the version readable. */
[data-theme=dark] #topbar .app-version{color:#fff;background:rgba(201,162,39,.16)}
/* Tile headers get the landing page's gold section rule. */
.tile-head{border-bottom:2px solid var(--gold)}
.tile-head h2{letter-spacing:.02em}
/* One gold "hero" button per card (the primary action). Mirrors .btn-gold on the site. */
.btn-brand{background:var(--gold);color:var(--navy);border-color:var(--gold);font-weight:700}
.btn-brand:hover{filter:brightness(1.06)}
[data-theme=dark] .btn-brand{color:#1a1205}
/* Bind stays unmistakably green and always in the front row. */
.btn-bind{background:var(--green);color:#fff;border-color:var(--green);font-weight:700}
.btn-bind:hover{filter:brightness(1.08)}
/* The •••  secondary-action reveal — a touch more prominent than a ghost btn. */
.action-menu>summary.btn{background:var(--sur2);border-color:var(--bd);color:var(--tx2)}
.action-menu[open]>summary.btn{background:var(--navy);border-color:var(--navy);color:#fff}

#panels{flex:1;overflow:hidden;position:relative}
.panel{display:none;height:100%;overflow-y:auto;padding:14px 16px}
.panel.active{display:block}
/* 2026-08-31 (Jon: "stagnant dashboard") — Dashboard specifically becomes a
   fixed-height column: the Quick Find/Quick Wins strip takes its natural
   height, #dash-grid takes the rest via flex instead of height:100% (which
   didn't account for the strip above it — that mismatch was the actual
   cause of the whole page scrolling). Every other tab keeps the original
   block+overflow-y:auto behavior untouched. */
#panel-dashboard.active{display:flex;flex-direction:column;overflow:hidden}
#panel-dashboard #dash-grid{flex:1;height:auto;min-height:0}
/* 2026-09-01 fix — #quick-find-strip is a .tile, and .tile sets
   overflow:hidden (needed elsewhere for the work tiles' own internal
   scroll). That clipped the search-results dropdown below to nothing,
   which is why Quick Find looked like it "didn't work" on desktop. */
#quick-find-strip{flex:none;position:relative;z-index:20;overflow:visible}
#quick-find-strip .qf-row{display:flex;align-items:center;gap:12px;padding:9px 12px;flex-wrap:wrap}
#quick-find-strip .qf-label{display:flex;align-items:center;gap:6px;font-weight:700;font-size:13px;flex:none;color:var(--tx)}
#quick-find-strip .search-bar{flex:1 1 220px;margin:0}
#quick-find-strip #quick-wins-strip{flex:2 1 320px;margin:0}
#global-search-results{position:absolute;left:0;right:0;top:100%}
#global-search-results:not(:empty){background:var(--sur);border:1px solid var(--bd);border-top:none;border-radius:0 0 var(--rad) var(--rad);max-height:min(60vh,480px);overflow-y:auto;box-shadow:var(--sh);padding:6px}
#dash-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:14px;height:100%}
.tile{background:var(--sur);border-radius:var(--rad);border:1px solid var(--bd);box-shadow:var(--sh);display:flex;flex-direction:column;overflow:hidden;min-height:0}
.tile-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--bd2);flex-shrink:0;background:var(--sur2)}
.tile-head .tile-icon{width:28px;height:28px;border-radius:var(--rad-sm);display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;flex-shrink:0}
.tile-head h2{font-size:15px;font-weight:800;flex:1;color:var(--tx)}
.tile-head.has-inline-search{flex-wrap:wrap}
.tile-head.has-inline-search h2{flex:0 0 auto}
.queue-header-search{flex:1 1 125px;min-width:110px;max-width:210px;margin:0}
.queue-header-search input{width:100%;min-width:0;padding:6px 9px;font-size:12px}
.queue-bulk-disclosure{position:relative}
.queue-bulk-disclosure>summary{list-style:none;cursor:pointer}
.queue-bulk-disclosure>summary::-webkit-details-marker{display:none}
.queue-header-bulk{position:absolute;right:0;top:calc(100% + 5px);z-index:2100;width:min(430px,calc(100vw - 32px));margin:0;padding:8px;background:var(--sur);border-color:var(--bd);box-shadow:var(--sh2)}
.queue-header-bulk .form-input{padding:5px 7px}
.tile-head .tile-count{font-size:12px;color:#fff;background:var(--blue);border-radius:10px;padding:1px 8px;font-weight:700}
.tile-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.tile-body{flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-x:none;padding:8px}
#dash-grid{min-width:0}
#dash-grid>.tile{min-width:0}
.contact-card,.cc-notes{min-width:0;overflow-wrap:anywhere}
.tile-collapse-btn{display:none}
.icon-calls{background:var(--blue)}.icon-email{background:var(--green)}.icon-quotes{background:var(--amber)}
.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 13px;border-radius:var(--rad-sm);font-size:13px;font-weight:600;transition:all var(--transition);border:1px solid transparent;white-space:nowrap}
.btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn-primary:hover{filter:brightness(1.1)}
.btn-success{background:var(--green);color:#fff;border-color:var(--green)}.btn-success:hover{filter:brightness(1.1)}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}.btn-danger:hover{filter:brightness(1.1)}
.btn-warning{background:var(--amber);color:#fff;border-color:var(--amber)}.btn-warning:hover{filter:brightness(1.1)}
.btn-ghost{background:transparent;color:var(--tx2);border-color:var(--bd)}.btn-ghost:hover{background:var(--bd2);color:var(--tx)}
.btn-sm{padding:5px 10px;font-size:12px}.btn-xs{padding:4px 9px;font-size:12px}.btn-icon{padding:6px 9px;font-size:14px}
.contact-card{background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:10px 12px;margin-bottom:8px;transition:all var(--transition)}
.contact-card:hover{border-color:var(--blue);background:var(--rh)}
.contact-card.overdue{border-left:3px solid var(--red);background:var(--ro)}
.contact-card.due-today{border-left:3px solid var(--amber);background:var(--rc)}
.contact-card.appt-set{border-left:3px solid var(--green);background:var(--re)}
.cc-row1{display:flex;align-items:center;gap:6px 8px;margin-bottom:5px;flex-wrap:wrap;min-width:0}
/* 2026-09-16 (Jon: "smashes the names and pushes the steps out of sight") —
   flex-basis:180px + overflow-wrap:anywhere let the name column get squeezed
   thinner than its own min-width on narrow/2-up layouts, which forced it to
   break mid-word letter by letter instead of just wrapping to its own line.
   flex-basis:auto sizes the name to its content (grows into free space via
   flex-grow, same as before), the min-width floor stops it shrinking past a
   readable width, and dropping overflow-wrap:anywhere means the one true
   overflow case left now wraps at a normal word boundary, never a letter. */
.cc-name{font-weight:700;font-size:15px;flex:1 1 auto;min-width:110px;color:var(--tx)}
.cc-badge{font-size:11px;padding:2px 7px;border-radius:10px;font-weight:600;color:#fff;white-space:nowrap;flex:0 0 auto}
.badge-new{background:#888}.badge-appt{background:var(--green)}.badge-quote{background:var(--amber)}.badge-overdue{background:var(--red)}.badge-today{background:var(--amber)}.badge-dnc{background:var(--red)}
.cc-row2{font-size:12.5px;color:var(--tx3);display:flex;gap:8px;flex-wrap:wrap;margin-bottom:5px}
.cc-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px;align-items:center}
.cc-notes{font-size:14px;line-height:1.55;color:var(--tx);background:var(--inp);border-radius:var(--rad-sm);padding:6px 9px;margin-top:5px;border-left:2px solid var(--gold)}
.card-long-detail{padding:0;overflow:hidden}
.card-long-detail>summary{display:flex;align-items:flex-end;gap:8px;padding:6px 9px;cursor:pointer;list-style:none}
.card-long-detail>summary::-webkit-details-marker{display:none}
.card-detail-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;white-space:pre-wrap;flex:1;min-width:0}
.card-detail-toggle{flex:none;color:var(--blue);font-size:12px;font-weight:800;white-space:nowrap}
.card-detail-toggle .when-open{display:none}
.card-long-detail[open]>summary .card-detail-preview{display:none}
.card-long-detail[open]>summary .when-closed{display:none}
.card-long-detail[open]>summary .when-open{display:inline}
.card-detail-full{padding:0 9px 8px;white-space:pre-wrap}
.card-detail-full .thread-split{white-space:normal}
.app-version{position:absolute;right:3px;bottom:1px;border:0;padding:0;background:transparent;color:var(--tx3);font-size:6px;font-weight:400;font-style:italic;line-height:1;opacity:.55;pointer-events:none}
[data-theme=dark] #topbar .app-version{background:transparent;color:var(--tx3)}
.quote-summary details{margin-top:4px}.quote-summary summary{cursor:pointer;font-weight:700;color:var(--blue);list-style:none}.quote-summary summary::-webkit-details-marker{display:none}
.thread-split{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}.thread-pane{border:1px solid var(--bd2);border-radius:var(--rad-sm);padding:6px;background:var(--sur)}.thread-pane strong{display:block;font-size:10px;text-transform:uppercase;color:var(--tx3);margin-bottom:3px}
.bulk-reschedule{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:8px;margin-bottom:8px;font-size:12px}.bulk-reschedule input[type="date"]{width:145px}
.action-menu{position:relative;display:inline-block}
.action-menu summary{list-style:none}
.action-menu summary::-webkit-details-marker{display:none}
.action-menu-list{position:absolute;right:0;top:calc(100% + 4px);z-index:2050;min-width:175px;max-height:min(70vh,520px);overflow-y:auto;background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad-sm);box-shadow:var(--sh2);padding:6px;display:flex;flex-direction:column;gap:4px}
.action-menu[open] .action-menu-list{position:fixed;right:auto;top:auto}
.action-menu.drop-up .action-menu-list{top:auto;bottom:calc(100% + 4px)}
.action-menu-list .btn{width:100%;justify-content:flex-start}
@media(hover:hover) and (pointer:fine){.action-menu>summary.btn:hover{border-color:var(--gold);color:var(--tx)}}
@media(max-width:520px){.action-menu[open] .action-menu-list{left:8px!important;right:8px!important;bottom:8px!important;top:auto!important;width:auto!important;max-height:55vh;border-radius:14px;padding:10px}.action-menu-list .btn{min-height:38px}}
.quote-actions-primary{display:flex;gap:4px;flex-wrap:wrap}
.search-bar{display:flex;gap:6px;margin-bottom:8px}.search-bar input{flex:1}
.out-btn{padding:3px 7px;font-size:10px;border-radius:10px;border:1px solid var(--bd);background:var(--sur2);color:var(--tx2);cursor:pointer;font-weight:500;transition:all .15s}
.out-btn:hover{border-color:var(--blue);color:var(--blue)}.out-btn.out-dnc{border-color:var(--red);color:var(--red)}.out-btn.out-dnc:hover,.out-btn.out-dnc.active{background:var(--red);color:#fff}
.out-btn.out-ans{border-color:var(--green);color:var(--green)}.out-btn.out-ans:hover,.out-btn.out-ans.active{background:var(--green);color:#fff}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;padding:16px}
.modal-overlay.open{opacity:1;pointer-events:all}
#modal-email-send-review{z-index:1600}
.modal{position:relative;background:var(--sur);border-radius:var(--rad);box-shadow:var(--sh2);width:90%;max-width:min(520px,94vw);max-height:90vh;overflow-y:auto;padding:20px;transform:translateY(12px);transition:transform .2s}
.modal-overlay.open .modal{transform:translateY(0)}.modal.modal-lg{max-width:min(680px,94vw)}.modal.modal-xl{max-width:min(1050px,96vw)}
.modal-body{min-width:0}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;position:sticky;top:-20px;z-index:5;background:var(--sur);padding:20px 0 12px;margin:-20px -20px 4px;padding-left:20px;padding-right:20px}
.modal-head h3{font-size:15px;font-weight:700}
.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--tx3);line-height:1;padding:2px 6px;border-radius:4px;flex-shrink:0}
.modal-close:hover{background:var(--bd2);color:var(--tx)}
.modal-footer,.modal-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:16px;padding:12px 20px;border-top:1px solid var(--bd);background:var(--sur);margin-left:-20px;margin-right:-20px;margin-bottom:-20px}
.modal-footer{position:sticky;bottom:-20px;z-index:5}
@media(max-width:480px){
  .modal-overlay{padding:8px}
  .modal{padding:14px;max-width:min(520px,97vw)}
  .modal.modal-lg{max-width:min(680px,97vw)}
  .modal.modal-xl{max-width:min(1050px,98vw)}
  .modal-head{top:-14px;margin:-14px -14px 4px;padding:14px 14px 10px}
  .modal-footer,.modal-actions{padding:10px 14px;margin-left:-14px;margin-right:-14px;margin-bottom:-14px;bottom:-14px}
  .modal-footer .btn,.modal-actions .btn{flex:1 1 auto;justify-content:center;min-height:38px}
}
.form-row{margin-bottom:12px}.form-row label{display:block;font-size:12px;font-weight:600;color:var(--tx2);margin-bottom:4px}
.form-row input,.form-row select,.form-row textarea{width:100%}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.reply-message-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
/* 2026-08-31 (Jon) — Calendar was capped to a fixed cell height regardless
   of how much screen was actually available. Panel becomes a fixed-height
   column (same "stagnant" treatment as Dashboard/COI); the grid fills
   whatever's left, and grid-auto-rows makes every week row share that space
   evenly, whether the month has 5 or 6 rows — the header row (7 static
   cells kept by renderCalendar()) stays its own natural height since it's
   the one explicit row; every row after it is implicit. */
#panel-calendar.active{display:flex;flex-direction:column;overflow:hidden}
/* 2026-09-07 (Jon) — day detail lives beside the grid, not below it, so
   clicking a date never changes the calendar's own size. Replaces the
   2026-08-31 "cap #cal-day-detail's height" fix — that problem can't happen
   anymore since the detail panel has its own independent column/scroll. */
#panel-calendar .cal-split-row{flex:1;min-height:0;display:flex;gap:14px}
#panel-calendar #cal-grid-scroll{flex:1;min-height:0;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}
#panel-calendar #cal-grid{flex:1;min-height:0}
#panel-calendar .cal-side-panel{flex:none;width:320px;min-height:0;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad);overflow:hidden;display:flex;flex-direction:column}
/* 2026-09-07 (Jon) — setting only overflow-y:auto silently makes overflow-x
   compute to auto too (CSS spec quirk: if one axis is visible and the other
   isn't, the visible one becomes auto), which is what turned this into a
   side-scroller. overflow-x:hidden stops that; the .cc-row1 wrap below is
   what actually lets long name+badge rows fit the panel's width instead of
   needing that scroll in the first place. */
#panel-calendar #cal-day-detail{flex:1;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;padding:12px}
#panel-calendar #cal-day-detail .cc-row1{flex-wrap:wrap}
#cal-day-detail:empty::before{content:'Select a day on the calendar to see its appointments and events here.';display:block;color:var(--tx3);font-size:12px;text-align:center;padding:44px 18px;line-height:1.6}
#cal-grid-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* 2026-09-07 (Jon) — grid-auto-rows:1fr looked uneven because a bare `1fr`
   track's minimum is its own content ("auto"), so a busy week (lots of
   stacked chips) grew taller and starved the *other* rows of the leftover
   space that 1fr distributes — light weeks got squeezed thinner in the same
   grid. A fixed row height made every week the same size no matter what's
   in it, but it also stopped the grid from ever growing past 5-6 rows'
   worth of pixels, leaving dead space below it on a tall screen ("calendar
   no longer fills the entire screen" — 2026-09-11).
   2026-09-11 fix: minmax(112px,1fr) keeps every implicit row on the SAME
   sizing function — so on a tall viewport the leftover height still splits
   evenly across all rows (still uniform, nothing elongates on its own) —
   while letting the grid as a whole stretch to fill #cal-grid-scroll instead
   of stopping short. .cal-cell stretches to match (grid default align)
   instead of forcing its own fixed height; overflow:hidden + the existing
   "+N more" label still cap what's shown inside a tall cell. */
#cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:auto;grid-auto-rows:minmax(112px,1fr);gap:2px;margin-top:8px}
@media(max-width:900px){
  #panel-calendar.active{display:block;overflow:visible}
  #panel-calendar .cal-split-row{display:block;overflow:visible}
  #panel-calendar #cal-grid-scroll{display:block;overflow-y:visible}
  #panel-calendar #cal-grid{flex:none}
  /* "+ Sheet" — day detail reads as a sheet under the grid rather than a
     side column: rounded top, no bottom rounding, capped + independently
     scrollable so a busy day never pushes the calendar itself around. */
  #panel-calendar .cal-side-panel{width:auto;margin-top:14px;max-height:400px;border-radius:var(--rad) var(--rad) 0 0}
}
/* Timeline rows inside #cal-day-detail — timed items only; all-day/no-time
   items keep the existing plain stacked-card look below the timeline. */
.cal-timeline-row{display:flex;gap:9px}
.cal-timeline-time{width:50px;flex:none;font-size:10px;font-weight:800;color:var(--tx3);padding-top:7px;text-align:right}
.cal-timeline-track{position:relative;flex:1;min-width:0;border-left:2px solid var(--bd);padding:0 0 10px 10px}
.cal-timeline-dot{position:absolute;left:-5px;top:9px;width:8px;height:8px;border-radius:50%;background:var(--blue)}
.cal-allday-head{font-size:10px;font-weight:800;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;margin:10px 0 6px}
.cal-allday-head:first-child{margin-top:0}
.cal-header-cell{text-align:center;font-size:11px;font-weight:600;color:var(--tx3);padding:4px}
.cal-cell{position:relative;height:auto;min-height:112px;overflow:hidden;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:4px;font-size:11px;cursor:pointer;transition:all var(--transition)}
.cal-cell:hover{border-color:var(--blue)}.cal-cell.today{border-color:var(--blue);background:var(--ri)}.cal-cell.other-month{opacity:.4}
.cal-cell.selected{box-shadow:inset 0 0 0 2px var(--blue)}
.cal-cell .cal-day-num{font-weight:700;color:var(--tx);font-size:12px;margin-bottom:2px}
.cal-event{background:var(--blue);color:#fff;font-size:10px;border-radius:3px;padding:1px 4px;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-event.ev-overdue{background:var(--red)}.cal-event.ev-block{background:var(--navy);box-shadow:inset 3px 0 0 var(--gold);padding-left:7px}.cal-event.ev-appt{background:var(--green)}.cal-event.ev-email{background:var(--purple)}.cal-event.ev-quote{background:var(--amber)}.cal-event.ev-has-quote{box-shadow:inset 3px 0 0 #ffd166;padding-left:7px}
.calendar-block-card{margin-bottom:6px;border-left:4px solid var(--gold);background:color-mix(in srgb,var(--navy) 5%,var(--sur))}.calendar-block-badge{background:var(--navy);box-shadow:inset 2px 0 0 var(--gold)}
[data-theme=dark] .cal-event.ev-block{background:var(--gold);color:var(--navy);box-shadow:inset 3px 0 0 var(--blue)}
[data-theme=dark] .calendar-block-card{border-left-color:var(--blue);background:color-mix(in srgb,var(--gold) 16%,var(--sur))}
[data-theme=dark] .calendar-block-badge{background:var(--gold);color:var(--navy);box-shadow:inset 2px 0 0 var(--blue)}
.cal-workload{position:absolute;top:5px;right:5px;display:flex;gap:2px;flex-wrap:wrap;justify-content:flex-end;max-width:82%}.cal-workload-bubble{color:#fff;font-size:8px;font-weight:800;line-height:1;border-radius:8px;padding:3px 4px}.cal-workload-c{background:var(--blue)}.cal-workload-e{background:var(--teal)}.cal-workload-p{background:var(--purple)}.cal-workload-q{background:var(--amber)}.cal-workload-a{background:var(--purple)}.cal-workload-b{background:var(--green)}
/* 2026-09-07 (Jon) — "Dot Month" mobile calendar. Placed after the base
   .cal-cell/.cal-event/.cal-workload rules on purpose: two selectors of
   equal specificity resolve by source order, so a media query declared
   *before* its own base rule loses to it outside the query too — that bug
   is why an earlier version of this same override never actually applied
   on phones. The old mobile calendar forced a 620px-wide grid onto a
   ~375px screen (tiny text, scroll sideways just to see the week); events
   shrink to small color-coded dots instead of text bars so all 7 columns
   fit the phone's own width, no horizontal scroll needed. */
@media(max-width:640px){
  #cal-grid{grid-auto-rows:60px}
  .cal-cell{height:60px;font-size:9px;padding:3px}
  .cal-cell .cal-day-num{font-size:11px;margin-bottom:3px}
  .cal-header-cell{font-size:10px}
  .cal-event{width:5px;height:5px;min-width:5px;padding:0;margin:0 2px 2px 0;border-radius:50%;font-size:0;line-height:0;display:inline-block;white-space:normal;vertical-align:top}
  .cal-cell .cal-workload{display:none}
}
#cal-nav{display:flex;align-items:center;gap:10px;margin-bottom:8px}
#cal-nav h3{flex:1;text-align:left;font-size:15px;font-weight:700}
.cal-nav-actions{display:flex;align-items:center;gap:6px;margin-left:auto}
.cal-nav-arrows{display:flex;align-items:center;gap:2px}
.todo-item{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);margin-bottom:6px}
.todo-item input[type=checkbox]{margin-top:2px;width:15px;height:15px;cursor:pointer;accent-color:var(--blue)}
.todo-text{flex:1;font-size:14.5px;color:var(--tx)}.todo-text.done{text-decoration:line-through;color:var(--tx4)}
.todo-date{font-size:12px;color:var(--tx3);white-space:nowrap}
.todo-del{background:none;border:none;color:var(--tx4);font-size:14px;cursor:pointer;padding:0 4px}.todo-del:hover{color:var(--red)}
.todo-tab-count{display:none;min-width:18px;height:18px;padding:0 5px;margin-left:3px;align-items:center;justify-content:center;border-radius:999px;background:var(--red);color:#fff;font-size:10px;font-weight:800;line-height:18px}
.todo-alert-banner{display:none;width:100%;margin:0 0 10px;padding:10px 13px;border:1px solid color-mix(in srgb,var(--amber) 55%,var(--bd));border-left:4px solid var(--amber);border-radius:var(--rad);background:color-mix(in srgb,var(--amber) 10%,var(--sur));color:var(--tx);text-align:left;cursor:pointer;box-shadow:var(--shadow-sm)}
.todo-alert-banner:hover{border-color:var(--amber);transform:translateY(-1px)}
.todo-alert-title{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:800}.todo-alert-preview{margin-top:3px;font-size:11px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.todo-import-row{display:grid;grid-template-columns:28px minmax(180px,1fr) 132px 118px 95px;gap:7px;align-items:center;padding:8px;border-bottom:1px solid var(--bd)}
.todo-import-row.is-duplicate{background:color-mix(in srgb,var(--amber) 10%,var(--sur2))}.todo-import-row input,.todo-import-row select{min-width:0;width:100%}
.todo-import-note{grid-column:2/-1;font-size:11px;color:var(--tx3)}
@media(max-width:720px){.todo-import-row{grid-template-columns:28px 1fr 1fr}.todo-import-row .todo-import-task{grid-column:2/-1}.todo-import-note{grid-column:2/-1}}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
/* 2026-08-31 (Jon) — Analytics: Quick Wins + Accountability Snapshot side by
   side instead of stacked full-width. Scoped to #stat-grid specifically so
   the Dashboard's Quick Wins strip and other .stat-grid uses are untouched. */
.analytics-split{display:grid;grid-template-columns:1fr 1.15fr;gap:14px;align-items:start;margin-bottom:16px}
.analytics-split #stat-grid{grid-template-columns:repeat(2,1fr);margin-bottom:0}
.analytics-split .weekly-snap{margin-bottom:0}
.analytics-drilldown{cursor:pointer}
.analytics-drilldown:hover,.analytics-drilldown:focus-visible{background:var(--sur2);outline:2px solid color-mix(in srgb,var(--blue) 35%,transparent);outline-offset:-2px}
.analytics-help{position:relative}
.analytics-help-tip{display:none;position:absolute;left:10px;right:10px;top:calc(100% - 2px);z-index:20;padding:9px 11px;border:1px solid var(--bd);border-radius:8px;background:var(--sur);box-shadow:var(--shadow);color:var(--tx2);font-size:12px;font-weight:500;line-height:1.4}
.analytics-help:hover .analytics-help-tip,.analytics-help:focus-within .analytics-help-tip{display:block}
/* 2026-08-31 (Jon) — with real data the Snapshot list (19 rows) and the
   Quick Wins grid are taller than either looked in the mockup, and on a
   fixed-height panel that ate almost all the room, leaving nothing for the
   Today's Activity/Master Roster tabs below. Same fix as COI/roster: cap the
   box, let the column scroll internally — content and look are unchanged,
   you just may scroll a little within this box to see every row. */
#panel-analytics.active .analytics-split{max-height:260px;overflow:visible}
#panel-analytics.active #stat-grid{overflow-y:auto;max-height:260px;align-content:start}
#panel-analytics.active .weekly-snap{overflow-y:auto;max-height:260px}
@media(max-width:900px){
  .analytics-split{grid-template-columns:1fr}
  #panel-analytics.active .analytics-split{max-height:none}
  #panel-analytics.active #stat-grid,#panel-analytics.active .weekly-snap{overflow:visible;max-height:none}
}
/* 2026-08-31 (Jon) — Concept C: Today's Activity and Master Roster no longer
   stack on top of each other (that was the one tab still forcing a
   page-level scroll). One tabbed box instead — same "stagnant" treatment as
   Dashboard/COI, desktop-only, reverted below 900px. */
#panel-analytics.active{display:flex;flex-direction:column;overflow:hidden}
#panel-analytics .analytics-bottom{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.analytics-tabs{display:flex;gap:6px;flex:none}
.analytics-tab-btn{border:1px solid var(--bd);background:var(--sur2);color:var(--tx2);font-size:12px;font-weight:600;padding:8px 16px;border-radius:var(--rad-sm) var(--rad-sm) 0 0;cursor:pointer;font-family:inherit;border-bottom:none}
.analytics-tab-btn.active{background:var(--sur);color:var(--tx);position:relative;top:1px}
.analytics-tab-panel{flex:1;min-height:0;background:var(--sur);border:1px solid var(--bd);border-radius:0 var(--rad) var(--rad) var(--rad);overflow:hidden;display:flex;flex-direction:column;padding:12px}
.analytics-tab-view{display:none;flex:1;min-height:0;flex-direction:column;overflow-y:auto}
.analytics-tab-view.active{display:flex}
#atab-view-roster.active{overflow:hidden}
.roster-scroll{flex:1;min-height:0;overflow:auto}
@media(max-width:900px){
  #panel-analytics.active{display:block;overflow:visible}
  #panel-analytics .analytics-bottom{display:block;overflow:visible}
  .analytics-tab-panel{display:block;overflow:visible;border-radius:var(--rad)}
  .analytics-tab-view{display:none!important;overflow:visible}
  .analytics-tab-view.active{display:block!important}
  .roster-scroll{overflow:visible}
}
.stat-card{background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);padding:12px;text-align:center}
.policies-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.policies-head h2{font-size:20px;display:flex;align-items:center;gap:7px}.policies-subtitle{font-size:12px;color:var(--tx3);margin-top:3px}.policies-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.policies-tools .form-input{width:auto;min-width:170px}.policies-tools .search-bar{width:min(390px,48vw);margin:0}.policies-stats{grid-template-columns:repeat(3,minmax(130px,1fr));margin-bottom:12px}.policies-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.policy-card{display:grid;grid-template-rows:auto 1fr auto;align-content:start;gap:10px;min-width:0;background:var(--sur);border:1px solid var(--bd);border-top:4px solid var(--blue);border-radius:14px;box-shadow:var(--sh);padding:13px}.policy-card-main{min-width:0}.policy-card-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:15px}.policy-card-meta{display:flex;align-items:flex-start;gap:6px;flex-direction:column;color:var(--tx3);font-size:11px;margin-top:8px}.policy-card-meta span{display:inline-flex;align-items:center;gap:3px;max-width:100%;overflow-wrap:anywhere}.policy-card-value{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding-top:2px}.policy-card-value>strong{font-size:17px;color:var(--green)}.policy-card-value>span:not(.cc-badge){font-size:11px;color:var(--tx3)}.policy-card-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-start;border-top:1px solid var(--bd2);padding-top:9px}
@media(max-width:1180px) and (min-width:901px){.policies-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat-num{font-size:26px;font-weight:800;color:var(--blue)}.stat-lbl{font-size:11px;color:var(--tx3);margin-top:2px}
.roster-table{width:100%;border-collapse:collapse;font-size:12px}
.roster-table th{background:var(--sur2);padding:7px 10px;text-align:left;font-weight:600;color:var(--tx2);border-bottom:2px solid var(--bd)}
.roster-sort{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:600;padding:0;cursor:pointer;white-space:nowrap}.roster-sort:hover{color:var(--blue)}.roster-sort-arrow{display:inline-block;min-width:12px;margin-left:3px;color:var(--blue)}
.roster-table td{padding:6px 10px;border-bottom:1px solid var(--bd2);color:var(--tx)}
.roster-table tr:hover td{background:var(--rh)}
.csr-readonly-banner{display:none;background:var(--amber);color:#fff;padding:7px 14px;text-align:center;font-size:12px;font-weight:700}.csr-readonly .csr-readonly-banner{display:block}.csr-readonly [data-csr-disabled="1"]{opacity:.38!important;cursor:not-allowed!important;filter:grayscale(.35)}
/* 2026-08-30 (New Agent Training) — same show/hide pattern as the CSR
   read-only banner above, distinct color so it's never mistaken for it. */
.training-mode-banner{display:none;background:var(--navy);color:#fff;padding:8px 14px;text-align:center;font-size:12px;font-weight:700;align-items:center;justify-content:center;gap:10px}.training-mode .training-mode-banner{display:flex}
.training-mode-banner .btn{background:var(--gold);color:var(--navy)}
/* 2026-08-31 — Goals Sidearm. Same edge-ribbon-tab + slide-out drawer as the
   approved prototype, rebuilt with the app's own tokens (no new ones added
   beyond the two purely-visual helpers below). */
body.locked #goals-tab,body.booting #goals-tab{display:none}
#goals-tab{
  position:fixed;top:50%;right:0;transform:translateY(-50%);z-index:1400;
  background:var(--navy);color:var(--gold);border:none;cursor:pointer;
  padding:16px 8px;border-radius:8px 0 0 8px;box-shadow:0 12px 28px rgba(0,0,0,.28);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  font-family:inherit;font-weight:700;font-size:11px;letter-spacing:.14em;
  writing-mode:vertical-rl;text-transform:uppercase;
  transition:padding-right .15s ease,background .15s ease;
}
#goals-tab:hover{padding-right:12px;background:#12305c}
#goals-scrim{position:fixed;inset:0;background:rgba(13,37,69,.32);opacity:0;pointer-events:none;transition:opacity .25s ease;z-index:1401}
#goals-scrim.show{opacity:1;pointer-events:auto}
#goals-drawer{
  position:fixed;top:0;right:0;height:100%;width:340px;max-width:90vw;
  background:var(--sur);border-left:1px solid var(--bd);box-shadow:0 18px 48px rgba(0,0,0,.3);
  transform:translateX(100%);transition:transform .28s cubic-bezier(.2,.8,.3,1);
  z-index:1402;display:flex;flex-direction:column;
}
#goals-drawer.open{transform:translateX(0)}
.gp-head{padding:14px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:8px}
.gp-head .ttl{font-weight:700;font-size:14px}
.gp-head .ttl .gold{color:var(--gold)}
.gp-head .x{margin-left:auto;background:none;border:none;color:var(--tx3);font-size:16px;cursor:pointer;line-height:1;padding:2px 4px}
.gp-head .x:hover{color:var(--tx)}
.gp-scroll{padding:14px 16px;overflow-y:auto;flex:1}
.gp-field label{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tx3);margin-bottom:6px}
.gp-input-row{display:flex;align-items:center;gap:8px;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:8px 10px}
.gp-input-row .cur{color:var(--tx3);font-weight:700}
.gp-input-row input{border:none;background:none;outline:none;font-family:inherit;color:var(--tx);font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;width:100%}
.gp-period{display:flex;gap:6px;margin-top:8px}
.gp-period button{flex:1;font-family:inherit;font-size:11px;font-weight:600;padding:6px 0;border-radius:var(--rad-sm);border:1px solid var(--bd);background:var(--sur);color:var(--tx2);cursor:pointer}
.gp-period button.sel{background:var(--navy);border-color:var(--navy);color:#fff}
.gp-cta{width:100%;margin-top:12px;padding:9px 0;border-radius:var(--rad-sm);border:none;cursor:pointer;background:var(--gold);color:var(--navy);font-family:inherit;font-weight:700;font-size:12.5px}
.gp-cta:hover{background:var(--gold2)}
.gp-divider{display:flex;align-items:center;gap:8px;margin:16px 0 12px;color:var(--tx3);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.gp-divider::after{content:"";flex:1;height:1px;background:var(--bd)}
.gp-funnel{display:flex;flex-direction:column}
.gp-fstep{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed var(--bd2)}
.gp-fstep:last-child{border-bottom:none}
.gp-fnum{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}
.gp-fmeta{flex:1}
.gp-fmeta .lbl{font-size:12px;font-weight:700;color:var(--tx)}
.gp-fmeta .rate{font-size:10.5px;color:var(--tx3)}
.gp-chevron{color:var(--tx4);font-size:12px}
.gp-track{margin-top:14px;background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:10px 12px}
.gp-track .top{display:flex;justify-content:space-between;font-size:11px;color:var(--tx2);margin-bottom:6px}
.gp-track .top b{color:var(--tx);font-variant-numeric:tabular-nums}
.gp-bar{height:7px;border-radius:4px;background:var(--bd2);overflow:hidden}
.gp-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold2),var(--gold))}
.gp-track .note{margin-top:6px;font-size:10.5px;font-weight:600}
.gp-foot-note{margin-top:14px;font-size:10.5px;color:var(--tx3);line-height:1.5}
.gp-foot-note b{color:var(--tx2)}
/* 2026-08-30 (New Agent Training) — Phase 2: guided tour engine. Classic
   spotlight trick: #tour-spotlight has no fill, just a giant box-shadow that
   paints everything EXCEPT its own rect, so the target underneath stays
   fully visible and clickable while the rest of the screen dims. */
#tour-overlay{position:fixed;inset:0;z-index:10000;pointer-events:none}
#tour-spotlight{position:fixed;z-index:10001;border-radius:8px;box-shadow:0 0 0 9999px rgba(8,16,32,.7);border:2px solid var(--gold);transition:left .25s ease,top .25s ease,width .25s ease,height .25s ease;pointer-events:none}
#tour-callout{position:fixed;z-index:10002;width:340px;max-width:90vw;background:var(--sur);color:var(--tx);border:1px solid var(--bd);border-radius:var(--rad);box-shadow:0 12px 32px rgba(0,0,0,.4);padding:16px;pointer-events:auto;transition:left .25s ease,top .25s ease}
#tour-progress{font-size:11px;font-weight:800;color:var(--gold);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
#tour-callout h3{font-size:15px;font-weight:800;margin-bottom:8px}
#tour-text{font-size:13px;line-height:1.55;color:var(--tx2);margin-bottom:12px}
#tour-choices{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
#tour-actions{display:flex;align-items:center;gap:8px}
.weekly-snap{background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);padding:14px;margin-bottom:14px}
.weekly-snap h4{font-weight:700;font-size:13px;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.snap-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--bd2);font-size:12px}
.snap-row:last-child{border:none}.snap-val{font-weight:700;color:var(--blue)}
.col-mapper-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12px}
.col-mapper-row span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx2)}
.col-mapper-row select{width:130px}
.empty-state{text-align:center;padding:30px 20px;color:var(--tx4)}
.form-label{display:block;font-size:12px;font-weight:600;color:var(--tx2);margin-bottom:4px;margin-top:8px}
.form-input{width:100%;background:var(--inp);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:6px 10px;color:var(--tx);font-size:13px;font-family:inherit}
.form-input:focus{background:var(--inp-f);border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(59,125,216,.12)}
.empty-state i{font-size:28px;display:block;margin-bottom:8px}
.days-badge{font-size:10px;color:var(--tx3);background:var(--bd2);border-radius:8px;padding:1px 6px;white-space:nowrap;flex:0 0 auto}
.days-badge.hot{color:var(--red);background:#ffe0de}.days-badge.warm{color:var(--amber);background:#fff3e0}.days-badge.cool{color:var(--green);background:#e8f8f0}
.cad-step{font-size:10px;padding:2px 7px;border-radius:8px;font-weight:600}
.cad-call{background:#dbeafe;color:#1d4ed8}.cad-email{background:#dcfce7;color:#166534}.cad-quote{background:#fef9c3;color:#854d0e}
.quick-brief{background:var(--ri);border:1px solid #c5d8f8;border-radius:var(--rad-sm);padding:8px;margin-top:5px;font-size:11px;color:var(--tx2);display:none}
.quick-brief.open{display:block}.quick-brief p{margin-bottom:3px}.quick-brief strong{color:var(--tx)}
::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
@media(max-width:900px){
  #app{height:auto;min-height:100dvh;overflow:visible}
  #topbar{position:sticky;top:0}
  #panels{flex:none;overflow:visible;position:static}
  .panel{height:auto;min-height:calc(100dvh - 132px);overflow:visible}
  .policies-head{flex-direction:column}.policies-tools{width:100%;justify-content:flex-start}.policies-tools .search-bar{width:100%;max-width:none}.policies-list{grid-template-columns:1fr}.policy-card-value{align-items:flex-start}.policy-card-actions{justify-content:flex-start}
  /* Stagnant/fixed treatment is desktop-only — phones keep the normal
     scrolling page, same as before this change. */
  #panel-dashboard.active{display:block;overflow:visible}
  /* 2026-09-01 (Jon) — Quick Find should overlay the tiles below it, not
     push them down and force a page scroll, on phones same as desktop. */
  #dash-grid{height:auto;grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:auto}
  .tile{min-height:220px;overflow:visible}
  .tile-body{overflow:visible}
  .tile-head{flex-wrap:wrap}
  .tile-actions{max-width:100%}
  /* 2026-09-07 (Jon) — Collapsible Tiles: stacking all 4 tiles full-height
     meant scrolling past 3 you didn't want to reach the one you did.
     Collapsed tiles show just their header + count; tap to open. Calls
     starts open (marked in the HTML), the rest start collapsed. */
  .tile-collapse-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--rad-sm);background:var(--sur2);border:1px solid var(--bd);color:var(--tx2);flex:none;margin-left:6px;order:1}
  .tile-collapse-btn i{transition:transform var(--transition)}
  .tile.collapsed .tile-collapse-btn i{transform:rotate(-90deg)}
  .tile.collapsed{min-height:0}
  .tile.collapsed>*:not(.tile-head){display:none}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .roster-table{display:block;overflow-x:auto;white-space:nowrap}
}
@media(max-width:640px){
  #topbar .spacer{display:flex;flex:0 0 auto;margin-left:auto}
  .tb-divider{display:none}
  #topbar .tb-group-id{width:100%;justify-content:space-between}
  #weather-bar{max-width:100%;min-width:0}
  #weather-city{min-width:0;max-width:145px}
  .tb-group-status{margin-right:auto}
  .tile-actions{width:100%;justify-content:flex-start}
  .tile-head.has-inline-search .queue-header-search{order:2;max-width:none;flex:1 1 calc(100% - 90px)}
  .tile-head.has-inline-search .tile-actions{order:3}
  .queue-bulk-disclosure{position:static}
  .queue-header-bulk{right:8px;left:8px;width:auto}
  /* .cc-row1/.cc-name wrapping is now handled unconditionally by the base
     rule above — same behavior on every screen size, no separate mobile
     override needed. */
  .thread-split,.form-2col,.grid2{grid-template-columns:1fr!important}
  .reply-message-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
}
@media(max-width:480px){
  .stat-grid{grid-template-columns:1fr}
  .reply-message-grid{grid-template-columns:1fr!important}
  .tile-head{padding:8px 10px}
  .tile-head h2{font-size:12px}
  .panel{padding:10px}
}
.connection-banner{display:none;position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:10000;max-width:calc(100vw - 24px);padding:9px 14px;border-radius:20px;background:var(--tx);color:var(--sur);box-shadow:var(--sh2);font-size:12px;font-weight:700;text-align:center}
.connection-banner.show{display:block}
@media(hover:none) and (pointer:coarse){
  .tb-icon-btn{width:38px;height:38px}
  .btn{min-height:34px}
  .btn-sm{min-height:32px}
  .action-menu-list .btn{min-height:40px}
  .tab-btn{min-height:42px}
  .todo-item input[type=checkbox],.app-stage-picker input{min-width:18px;min-height:18px}
}
/* ===== INTAKE MODAL ===== */
#modal-intake{display:none;position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.58);}
#modal-intake.open{display:flex;}
.intake-wrap{display:flex;width:100vw;height:100vh;overflow:hidden;}
.intake-left{flex:0 0 58%;display:flex;flex-direction:column;background:var(--bg);border-right:1px solid var(--bd);overflow:hidden;min-width:0;}
.intake-right{flex:1;display:flex;flex-direction:column;background:var(--sur);overflow:hidden;min-width:0;}
@media(max-width:860px){
  .intake-wrap{flex-direction:column;}
  .intake-left{flex:0 0 auto;max-height:56vh;border-right:none;border-bottom:1px solid var(--bd);}
  .intake-right{flex:1;min-height:0;}
}
.intake-hdr{padding:10px 14px;background:var(--ri);border-bottom:1px solid var(--bd2);display:flex;align-items:center;gap:10px;flex-shrink:0;}
.intake-hdr h3{margin:0;font-size:16px;font-weight:800;color:var(--tx);flex:1;}
.ipt-bar{display:flex;gap:4px;flex-wrap:wrap;padding:7px 10px;background:var(--sur);border-bottom:1px solid var(--bd);flex-shrink:0;align-items:center;}
.ipt{padding:4px 11px;border-radius:999px;border:1px solid var(--bd);background:var(--bg);font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;transition:all .15s;white-space:nowrap;}
.ipt.active{background:var(--blue);color:#fff;border-color:var(--blue);}
.ipt:hover:not(.active){background:var(--sur2);}
.ipt-add{border-style:dashed;color:var(--blue);padding:4px 8px;font-size:11px;font-weight:600;border:1px dashed var(--blue);border-radius:999px;background:var(--bg);cursor:pointer;}
.ipt-add:hover{background:var(--ri);}
.ipt-del{color:var(--red);border:none;background:none;padding:0 3px;font-size:11px;cursor:pointer;vertical-align:middle;line-height:1;}
.intake-form-scroll{flex:1;overflow-y:auto;padding:12px 14px;}
.intake-shdr{font-size:12px;font-weight:800;color:var(--tx);text-transform:uppercase;letter-spacing:.06em;padding:6px 0 4px;margin-top:10px;border-bottom:1px solid var(--bd);grid-column:1/-1;}
.intake-shdr:first-child{margin-top:0;}
.ifg{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px;margin-top:0;}
.ifg .full{grid-column:1/-1;}
.ifg .half{grid-column:span 1;}
.ifr{display:flex;flex-direction:column;gap:2px;}
.ifr label{font-size:12.5px;font-weight:800;color:var(--tx);}
.ifr input,.ifr select,.ifr textarea{width:100%;padding:7px 9px;border:1px solid var(--bd);border-radius:var(--rad-sm);font-size:13.5px;font-weight:600;background:var(--bg);color:var(--tx);font-family:inherit;}
.ifr input:focus,.ifr select:focus,.ifr textarea:focus{outline:none;border-color:var(--blue);}
.ifr textarea{resize:vertical;}
.ifr.sensitive label::after{content:' \2014 NOT SAVED';color:var(--red);font-size:9px;}
.ifr.sensitive input{border-color:rgba(220,38,38,.4);background:rgba(255,235,235,.35);}
.ifr .irg{display:flex;flex-wrap:wrap;gap:8px;padding:3px 0;}
.ifr .irg label{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:700;cursor:pointer;}
.ifr .irg input[type=radio],.ifr .irg input[type=checkbox]{width:auto;}
.sens-note{grid-column:1/-1;font-size:10px;color:var(--red);background:rgba(255,235,235,.45);border:1px solid rgba(220,38,38,.25);border-radius:var(--rad-sm);padding:5px 8px;}
.elig-flag{grid-column:1/-1;background:#fff8e1;border:1px solid #f59e0b;border-radius:var(--rad-sm);padding:7px 9px;font-size:11px;color:#78350f;display:none;}
.elig-flag.show{display:block;}
.life-uw-box{grid-column:1/-1;padding:7px 10px;border-radius:var(--rad-sm);text-align:center;font-weight:700;font-size:12px;background:var(--sur2);color:var(--tx3);transition:all .25s;}
.life-uw-box.elig{background:#d1fae5;color:#065f46;}
.life-uw-box.review{background:#fff3cd;color:#78350f;}
.life-uw-box.inelig{background:#fee2e2;color:#991b1b;}
.intake-footer{padding:8px 14px;border-top:1px solid var(--bd);display:flex;gap:7px;align-items:center;flex-shrink:0;background:var(--sur);}
.int-prev-hdr{padding:9px 14px;background:var(--ri);border-bottom:1px solid var(--bd2);font-weight:700;font-size:12px;color:var(--tx);text-align:center;flex-shrink:0;}
.int-prev-scroll{flex:1;overflow-y:auto;padding:12px 14px;}
#intake-preview{font-family:'Times New Roman',serif;font-size:12pt;line-height:1.55;color:#000;}
#intake-preview h2{font-size:15pt;border-bottom:2px solid #000;padding-bottom:3px;margin:10px 0 7px;}
#intake-preview h3{font-size:13pt;border-bottom:1px solid #ccc;padding-bottom:2px;margin:9px 0 5px;color:#222;}
#notes-history>div{font-size:14px!important;line-height:1.55;padding:8px 0!important}
#notes-history>div>span{font-size:12px!important;color:var(--tx2)!important}
#notes-history>div>p{font-size:14px;font-weight:600;line-height:1.55}
#notes-input{font-size:14px;font-weight:600;line-height:1.55}
.agent-brand-print{display:flex;gap:12px;align-items:center;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid #111;}
.agent-brand-print h1{font-size:17pt;margin:0 0 3px;color:#111;}
.agent-brand-sub,.agent-brand-meta{font-size:9pt;color:#555;}
.agent-brand-media{display:flex;gap:8px;align-items:center;flex-shrink:0;}
.agent-logo-img{max-width:128px;max-height:54px;object-fit:contain;}
.agent-photo-img{width:54px;height:54px;border-radius:6px;object-fit:cover;}
[data-theme=dark] #modal-intake .intake-form-scroll,[data-theme=dark] #modal-intake .ifr label,[data-theme=dark] #modal-intake .irg label{color:#f8fafc;}
[data-theme=dark] #modal-intake .ifr input,[data-theme=dark] #modal-intake .ifr select,[data-theme=dark] #modal-intake .ifr textarea{background:#111827;color:#f8fafc;border-color:#3b465f;}
[data-theme=dark] #modal-intake .ifr input::placeholder,[data-theme=dark] #modal-intake .ifr textarea::placeholder{color:#8b98ad;}
[data-theme=dark] #modal-intake #intake-preview{color:#f8fafc;}
[data-theme=dark] #modal-intake #intake-preview h2{border-bottom-color:#f8fafc;}
[data-theme=dark] #modal-intake #intake-preview h3{color:#f8fafc;border-bottom-color:#4b5563;}
[data-theme=dark] #modal-intake #intake-preview p{color:#cbd5e1!important;}
.pvg{display:grid;grid-template-columns:155px 1fr;gap:2px 6px;}
.pvg .pk{font-weight:700;font-size:9pt;}
.pvg .pv{font-size:9pt;}
.pvg .psens{font-size:8.5pt;color:#888;font-style:italic;}
.pvg .pflag{font-size:9pt;color:#92400e;font-weight:700;}
@media print{
  html,body{height:auto!important;overflow:visible!important;background:#fff!important;}
  @page{margin:.45in;}
  body *{visibility:hidden!important;}
  #modal-intake.open,#modal-intake.open *,#modal-app.open,#modal-app.open *{visibility:visible!important;}
  #modal-intake.open,#modal-app.open{position:absolute!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;display:block!important;width:100%!important;height:auto!important;min-height:0!important;background:#fff!important;z-index:9999!important;overflow:visible!important;}
  #modal-intake.open .modal,#modal-intake.open .modal-lg,#modal-intake.open .intake-wrap,#modal-intake.open .intake-right,#modal-intake.open .int-prev-scroll,#modal-intake.open #intake-preview,#modal-app.open .modal{display:block!important;position:static!important;max-width:none!important;width:100%!important;height:auto!important;max-height:none!important;min-height:0!important;overflow:visible!important;box-shadow:none!important;border:0!important;background:#fff!important;}
  #modal-intake.open .intake-left,#modal-intake.open .ipt-bar,#modal-intake.open .intake-footer,#modal-intake.open .int-prev-hdr,#modal-app.open .modal-footer,#modal-app.open .modal-close{display:none!important;}
  #modal-intake.open #intake-preview,#modal-intake.open #intake-preview h2,#modal-intake.open #intake-preview h3,#modal-intake.open #intake-preview p{color:#000!important;}
  #modal-intake.open #intake-preview h2,#modal-intake.open #intake-preview h3{break-after:avoid;page-break-after:avoid;}
  #modal-intake.open #intake-preview .pvg{break-inside:auto;page-break-inside:auto;}
}
/* ===== APPLICATIONS TILE & MODAL ===== */
.app-filter-bar{display:flex;gap:4px;flex-wrap:wrap;padding-bottom:4px;}
.app-filt{background:none;border:1px solid var(--bd);border-radius:20px;padding:2px 9px;font-size:11px;font-weight:600;color:var(--tx2);cursor:pointer;}
.app-filt.active{background:var(--purple);color:#fff;border-color:var(--purple);}
.app-card{background:var(--bg);border:1px solid var(--bd);border-radius:var(--rad);padding:10px 12px;margin-bottom:7px;transition:box-shadow .15s;}
.app-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08);}
.app-card-row1{display:flex;align-items:center;gap:6px;margin-bottom:3px;}
.app-cname{font-weight:700;font-size:12.5px;color:var(--tx1);flex:1;}
.app-type-tag{font-size:10px;font-weight:700;color:#fff;padding:2px 7px;border-radius:20px;letter-spacing:.3px;}
.app-card-row2{font-size:11px;color:var(--tx3);margin-bottom:5px;}
.app-stage-label{font-size:11.5px;font-weight:600;color:var(--tx1);display:flex;align-items:center;gap:5px;margin-bottom:5px;}
.app-days-badge{font-size:10px;font-weight:400;color:var(--tx3);background:var(--bg2);border:1px solid var(--bd);border-radius:10px;padding:1px 6px;margin-left:4px;}
.app-dots{display:flex;align-items:center;gap:2px;margin-bottom:7px;}
.apd{width:9px;height:9px;border-radius:50%;background:var(--bd);border:1px solid var(--bd);flex-shrink:0;}
.apd.apd-done{background:var(--purple);border-color:var(--purple);}
.apd.apd-active{background:var(--blue);border-color:var(--blue);box-shadow:0 0 0 2px rgba(59,130,246,.25);}
.apd.apd-declined{background:var(--red);border-color:var(--red);}
.apd-line{flex:1;height:2px;background:var(--bd);}
.apd-line.apd-line-done{background:var(--purple);}
.app-card-actions{display:flex;gap:5px;flex-wrap:wrap;}
/* App Modal */
#modal-app .modal{max-width:min(620px,94vw);}
.app-stage-picker{display:flex;align-items:center;gap:0;overflow-x:auto;padding:6px 0;margin-bottom:4px;}
.asp-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 10px;border:1px solid var(--bd);border-radius:var(--rad-sm);background:var(--bg2);cursor:pointer;min-width:80px;font-size:10px;font-weight:600;color:var(--tx3);transition:all .15s;flex-shrink:0;}
.asp-btn i{font-size:16px;}
.asp-btn.asp-done{background:var(--purple);border-color:var(--purple);color:#fff;}
.asp-btn.asp-active{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 0 3px rgba(59,130,246,.2);}
.asp-btn:hover:not(.asp-active){border-color:var(--blue);color:var(--blue);}
.asp-line{flex:1;height:2px;background:var(--bd);min-width:12px;}
.asp-line.asp-line-done{background:var(--purple);}
.time-select{display:flex;gap:5px;align-items:center;width:100%;}
.time-select select{min-width:0;flex:1;padding:4px 8px;border:1px solid var(--bd);border-radius:var(--rad-sm);background:var(--inp);color:var(--tx);font-size:13px;}
/* ===== COI / REFERRALS TAB ===== */
.coi-stats-row{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}
.coi-stat{background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);padding:10px;text-align:center}
.coi-stat .coi-stat-num{font-size:22px;font-weight:800;color:var(--blue)}
.coi-stat .coi-stat-lbl{font-size:11px;color:var(--tx3);margin-top:2px}
.coi-filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
/* 2026-08-31 (Jon) — split COI partners / referral sources into their own columns */
/* 2026-08-31 (Jon) — same "stagnant" treatment as the Dashboard: the page
   itself stops scrolling, the two columns fill what's left and scroll
   internally instead. Desktop-only, same as the Dashboard fix. */
#panel-coi.active{display:flex;flex-direction:column;overflow:hidden}
#panel-coi .coi-split{flex:1;min-height:0}
.coi-split{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.coi-col{background:var(--sur2);border:1px solid var(--bd);border-radius:var(--rad);overflow:hidden;display:flex;flex-direction:column;min-height:0}
.coi-col-head{padding:10px 14px;font-weight:700;font-size:13px;display:flex;align-items:center;gap:8px;background:var(--sur);border-bottom:1px solid var(--bd2)}
.coi-col-head-coi{border-top:3px solid var(--gold)}
.coi-col-head-ref{border-top:3px solid var(--blue)}
.coi-col-count{font-size:11px;font-weight:700;color:var(--tx3);background:var(--bd2);padding:1px 8px;border-radius:999px}
.coi-col-body{padding:10px;flex:1;overflow-y:auto;min-height:0}
@media(max-width:900px){
  .coi-split{grid-template-columns:1fr}
  #panel-coi.active{display:block;overflow:visible}
  .coi-col-body{overflow:visible}
}
.rp-card{background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad-sm);padding:10px 12px;margin-bottom:8px;transition:all var(--transition)}
.rp-card:hover{border-color:var(--blue);background:var(--rh)}
.rp-card.rp-coi{border-left:4px solid #c9a227}
.rp-card.rp-referral{border-left:4px solid var(--teal)}
.rp-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.rp-name{font-weight:700;font-size:13px;flex:1;color:var(--tx)}
.rp-badge{font-size:10px;padding:2px 7px;border-radius:10px;font-weight:700;color:#fff;white-space:nowrap}
.rp-badge-coi{background:#c9a227}.rp-badge-referral{background:var(--teal)}
.rp-counts{display:flex;gap:10px;font-size:11px;color:var(--tx3);margin-bottom:6px}
.rp-counts span{display:flex;align-items:center;gap:3px}
.rp-contact-row{display:flex;gap:14px;font-size:11px;color:var(--tx2);flex-wrap:wrap;margin-bottom:6px}
.rp-contact-row span{display:flex;align-items:center;gap:3px}
.rp-actions{display:flex;gap:5px;flex-wrap:wrap}
/* ===== P&Rs compact table (2026-10-18, Jon) =====
   The page stays "stagnant": header, numbers strip and filters stay put; the table fills the rest of the screen and scrolls under a sticky header. */
.coi-strip{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center;background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);padding:8px 14px;margin-bottom:10px}
.coi-strip-item{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.coi-strip-item b{font-size:17px;font-weight:800;color:var(--blue)}
.coi-strip-item span{font-size:12px;color:var(--tx3)}
.coi-checkin-chip{display:flex;align-items:center;gap:10px;background:#fbf3d9;border:1px solid #e8d48b;border-radius:var(--rad);padding:7px 12px;margin-bottom:10px;font-size:13px;color:#6b520f}
.coi-checkin-chip span{flex:1}
.coi-checkin-chip i{font-size:16px}
[data-theme=dark] .coi-checkin-chip{background:#2a200a;border-color:#5a420d;color:#e3c46a}
.coi-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.coi-tabs{display:flex;gap:6px}
.coi-tab,.coi-chip{border:1px solid var(--bd);background:var(--sur);color:var(--tx2);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.coi-tab.on,.coi-chip.on{background:var(--blue);border-color:var(--blue);color:#fff}
.coi-tab.on .coi-col-count{background:rgba(255,255,255,.25);color:#fff}
.coi-chips{display:flex;gap:6px;flex-wrap:wrap}
.coi-chip{padding:4px 11px;font-weight:650}
.coi-chip.on{background:#e7eefb;border-color:var(--blue);color:var(--blue)}
[data-theme=dark] .coi-chip.on{background:#16264a;color:#9bbcff}
#panel-coi .coi-table-wrap{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;border:1px solid var(--bd);border-radius:var(--rad);background:var(--sur)}
.coi-table{width:100%;max-width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}
.coi-table td,.coi-table th{overflow-wrap:anywhere;min-width:0}
.coi-table thead th{position:sticky;top:0;z-index:2;background:var(--sur2);text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);padding:8px 10px;border-bottom:1px solid var(--bd)}
.coi-table td{padding:7px 10px;border-bottom:1px solid var(--bd2);vertical-align:middle}
.coi-table tr:last-child td{border-bottom:0}
.coi-row:hover td{background:var(--rh)}
.coi-row.rp-coi td:first-child{box-shadow:inset 3px 0 0 #c9a227}
.coi-row.rp-referral td:first-child{box-shadow:inset 3px 0 0 var(--teal)}
.coi-name-line{display:flex;align-items:center;gap:8px}
.coi-top{font-size:11px;font-weight:800;color:#8a6914;background:#fbf3d9;border:1px solid #e8d48b;border-radius:999px;padding:0 7px}
.coi-sub{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--tx3);margin-top:2px}
.coi-sub span{display:inline-flex;align-items:center;gap:3px}
.coi-note{cursor:help}
.coi-name-cell{min-width:0;overflow-wrap:anywhere}
.coi-cat{color:var(--tx2);overflow-wrap:anywhere}
.coi-count{white-space:nowrap}
.coi-count b{font-variant-numeric:tabular-nums}
.coi-bar{display:inline-block;width:64px;height:7px;border-radius:99px;background:var(--bd2);vertical-align:middle;position:relative;overflow:hidden;margin-right:7px}
.coi-bar::after{content:"";position:absolute;inset:0;width:var(--w);background:var(--blue);border-radius:99px}
.coi-bound{font-variant-numeric:tabular-nums}
.coi-badge-due{font-size:11px;font-weight:800;color:#8a6914;background:#fbf3d9;border:1px solid #e8d48b;border-radius:999px;padding:1px 9px;white-space:nowrap}
[data-theme=dark] .coi-badge-due,[data-theme=dark] .coi-top{background:#2a200a;border-color:#5a420d;color:#e3c46a}
.coi-badge-done{font-size:11px;font-weight:800;color:var(--green);background:#e3f4ea;border-radius:999px;padding:1px 9px}
[data-theme=dark] .coi-badge-done{background:#0f2a1c}
.coi-next{font-size:12px;color:var(--tx3);white-space:nowrap}
.coi-actions .rp-actions{flex-wrap:wrap;justify-content:flex-end;gap:4px}
.coi-spacer{display:inline-block;width:66px;flex:none}
@media(max-width:700px){
  .coi-table{table-layout:auto}
  .coi-table thead,.coi-table colgroup{display:none}
  .coi-table,.coi-table tbody,.coi-table tr,.coi-table td{display:block;width:100%}
  .coi-table tr{padding:8px 10px;border-bottom:1px solid var(--bd2)}
  .coi-table td{border:0;padding:2px 0}
  .coi-table td.coi-cat,.coi-table td.coi-count,.coi-table td.coi-bound{display:inline-block;width:auto;margin-right:14px}
  .coi-table td.coi-bound::before{content:"Bound ";color:var(--tx3)}
  .coi-row.rp-coi td:first-child,.coi-row.rp-referral td:first-child{box-shadow:none}
  .coi-row.rp-coi{box-shadow:inset 3px 0 0 #c9a227}.coi-row.rp-referral{box-shadow:inset 3px 0 0 var(--teal)}
  .coi-actions .rp-actions{justify-content:flex-start;margin-top:4px}
  .coi-spacer{display:none}
  .coi-table td.coi-checkin{display:inline-block;width:auto;margin-right:14px}
}
@media(max-width:900px){
  #panel-coi .coi-table-wrap{overflow:auto;max-height:none}
  .coi-actions .rp-actions{flex-wrap:wrap}
  .coi-strip{gap:6px 14px}
}
/* Referrer banner in call/email queue cards */
.cc-referrer-banner{font-size:11px;font-weight:700;padding:3px 8px;border-radius:var(--rad-sm) var(--rad-sm) 0 0;margin:-8px -10px 6px -10px;display:flex;align-items:center;gap:5px}
.cc-referrer-banner.banner-coi{background:#fdf6e3;color:#8a6914;border-bottom:1px solid #e8d48b}
.cc-referrer-banner.banner-referral{background:#e8faf7;color:#0e7a68;border-bottom:1px solid #a8e8dc}
[data-theme=dark] .cc-referrer-banner.banner-coi{background:#2a200a;color:#d4a830;border-bottom:1px solid #5a420d}
[data-theme=dark] .cc-referrer-banner.banner-referral{background:#0a2320;color:#3ecfb8;border-bottom:1px solid #0e5a50}
.rp-referred-list{margin-top:8px}
.rp-referred-item{font-size:12px;padding:4px 8px;background:var(--sur2);border-radius:var(--rad-sm);margin-bottom:3px;display:flex;align-items:center;gap:6px}
@media(max-width:900px){.coi-stats-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:420px){.coi-stats-row{grid-template-columns:1fr}}
.quick-find-products{display:grid;gap:5px;margin:8px 0}
.quick-find-product{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:6px 9px;border:1px solid var(--bd2);border-radius:8px;background:var(--sur2)}
.quick-find-product-name{font-size:15px;font-weight:800;color:var(--blue);min-width:105px}
.qf-copy-email,.contact-copy{display:inline-flex;align-items:center;gap:3px;padding:0;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer}.qf-copy-email:hover,.contact-copy:hover,.contact-copy:focus-visible{color:var(--blue);text-decoration:underline}.contact-copy .copy-hint{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-size:10px;font-weight:700;color:var(--blue);transition:max-width .15s ease,opacity .15s ease}.contact-copy:hover .copy-hint,.contact-copy:focus-visible .copy-hint{max-width:38px;opacity:1}
.contact-copy.cc-name,.contact-copy.app-cname{appearance:none;text-align:left;font-weight:700}.contact-copy.cc-name{flex:1 1 auto;min-width:110px;font-size:15px}.contact-copy.app-cname{flex:1;font-size:12.5px}
@media(max-width:720px){.quick-find-product{align-items:flex-start}}
.team-bell{position:relative}.team-bell-dot{display:none;position:absolute;right:5px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--red);border:2px solid var(--sur)}.team-bell.has-unread .team-bell-dot{display:block}
.team-member-card{border:1px solid var(--bd);border-radius:var(--rad-sm);padding:10px;margin-bottom:8px;background:var(--sur2)}.team-member-id{display:flex;align-items:center;gap:9px}.team-avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:11px;object-fit:cover;flex:0 0 32px}.team-meta{font-size:11px;color:var(--tx3)}.team-seat-summary{padding:8px 10px;border:1px solid var(--bd);border-radius:var(--rad-sm);background:var(--sur2);font-size:12px;margin-bottom:10px}.team-note-item{border-bottom:1px solid var(--bd);padding:9px 4px;font-size:12px}.team-note-item.unread{border-left:3px solid var(--gold);padding-left:8px;background:color-mix(in srgb,var(--gold) 8%,transparent)}

/* Desktop tile focus mode: one queue fills the workspace with a left rail. */
.tile-expand-btn,.tile-rail{display:none}
@media(min-width:901px){
  .tile-expand-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;flex:none;margin-left:2px;border-radius:var(--rad-sm);background:var(--sur2);border:1px solid var(--bd);color:var(--blue);cursor:pointer}
  .tile-expand-btn:hover{border-color:var(--gold);background:var(--sur)}
  .tile-expand-btn svg{display:block}.tile-expand-btn .tile-ico-in{display:none}.tile.tile-focused .tile-expand-btn .tile-ico-in{display:block}.tile.tile-focused .tile-expand-btn .tile-ico-out{display:none}
  .tile-expand-btn:focus-visible,.tile-rail button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
  #dash-grid.tile-focus-mode{grid-template-columns:84px minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
  #dash-grid.tile-focus-mode>.tile{display:none}#dash-grid.tile-focus-mode>.tile.tile-focused{display:flex;grid-column:2;grid-row:1}#dash-grid.tile-focus-mode>.tile-rail{display:flex;grid-column:1;grid-row:1}
  #dash-grid.tile-focus-mode>.tile-focused .tile-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,480px),1fr));gap:10px;align-content:start}
  #dash-grid.tile-focus-mode>.tile-focused .tile-body>*{margin-bottom:0}#dash-grid.tile-focus-mode>.tile-focused .tile-body>:not(.contact-card):not(.app-card){grid-column:1/-1}
  .tile-rail{flex-direction:column;align-items:center;gap:8px;min-height:0;overflow-y:auto;padding:12px 6px;background:var(--sur);border:1px solid var(--bd);border-radius:var(--rad);box-shadow:var(--sh)}
  .tile-rail-back{display:flex;align-items:center;justify-content:center;flex:none;width:44px;height:36px;padding:0;border-radius:var(--rad-sm);border:1px solid var(--bd);background:var(--sur2);color:var(--blue);cursor:pointer}.tile-rail-back:hover,.tile-rail-item:hover{border-color:var(--gold)}.tile-rail-back svg{display:block}.tile-rail-rule{flex:none;width:44px;height:1px;margin:2px 0;background:var(--bd)}
  .tile-rail-item{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none;width:68px;padding:9px 0 8px;border-radius:var(--rad-sm);border:1px solid var(--bd);background:var(--sur);color:var(--tx);font-size:11.5px;font-weight:600;cursor:pointer}.tile-rail-item.active{background:var(--sur2);border-color:var(--gold)}
  .tile-rail-chip{position:relative;display:inline-flex}.tile-rail-chip .tile-icon{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:17px}.tile-rail-count{position:absolute;top:-7px;right:-9px;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;box-sizing:border-box;border-radius:10px;border:2px solid var(--sur);background:var(--blue);color:#fff;font-size:10.5px;font-weight:700}.tile-rail-count[hidden]{display:none}
}

/* ───────── AgentPro Tools (small top-right panel). Every class is apt- prefixed. ───────── */
#apt-panel[hidden],#apt-panel [hidden],#apt-root [hidden],#apt-launch [hidden]{display:none!important}
#apt-launch.apt-launch{width:34px;gap:0;padding:0;font-weight:700;font-size:13px;color:var(--tx)}
#apt-launch.apt-launch>i{font-size:13px}#apt-launch.apt-launch>i+ i{margin-left:-3px;margin-top:6px}
#apt-launch .apt-ltext{line-height:1}
#apt-launch.apt-on{background:var(--navy);border-color:var(--navy);color:#fff}
[data-theme=dark] #apt-launch.apt-on{background:var(--gold);border-color:var(--gold);color:#1a1205}
#apt-launch .apt-badge{min-width:44px;padding:1px 6px;border-radius:9px;background:var(--gold);color:var(--navy);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;text-align:center}
@media(max-width:700px){#apt-launch .apt-ltext{display:none}}

#apt-panel{position:fixed;z-index:10050;right:12px;top:64px;width:min(344px,calc(100vw - 16px));display:flex;flex-direction:column;background:var(--sur);color:var(--tx);border:1px solid var(--bd);border-radius:14px;box-shadow:var(--sh2);overflow:hidden;font-size:13px;line-height:1.4;text-align:left}
#apt-panel *{box-sizing:border-box}
#apt-panel svg.apt-ico{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;display:block;pointer-events:none}
#apt-panel button{font-family:inherit;font-size:inherit;cursor:pointer;margin:0}
#apt-panel h2,#apt-panel h3,#apt-panel p{margin:0}
#apt-panel :focus-visible{outline:2px solid var(--blue);outline-offset:2px}
#apt-panel .apt-sr{position:absolute;left:-9999px}
#apt-panel .apt-head{display:flex;align-items:center;gap:8px;padding:7px 8px 7px 12px;background:var(--chrome);color:var(--chrome-ink)}
#apt-panel .apt-htitle{display:flex;align-items:center;gap:7px;font-weight:700;font-size:13px}
#apt-panel .apt-htitle svg{color:var(--gold)}
#apt-panel .apt-hnow{flex:1;min-width:0;color:var(--chrome-ink2);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#apt-panel .apt-hnow:before{content:"/ ";opacity:.7}
#apt-panel .apt-hstat{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--gold)}
#apt-panel .apt-hbtn{width:26px;height:26px;border:0;border-radius:7px;background:rgba(255,255,255,.12);color:var(--chrome-ink);display:grid;place-items:center;padding:0}
#apt-panel .apt-hbtn:hover{background:rgba(255,255,255,.24)}
#apt-panel .apt-tabs{display:flex;align-items:center;justify-content:space-between;gap:2px;padding:6px 8px;background:var(--sur2);border-bottom:1px solid var(--bd)}
#apt-panel .apt-tab{position:relative;width:30px;height:30px;display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:8px;background:none;color:var(--tx2)}
#apt-panel .apt-tab:hover{background:var(--bg)}
#apt-panel .apt-tab[aria-selected="true"]{background:var(--sur);color:var(--tx);border-color:var(--bd);box-shadow:inset 0 -3px 0 var(--gold)}
#apt-panel .apt-sepv{width:1px;height:18px;background:var(--bd);flex:none}
#apt-panel .apt-tdot{position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:var(--green)}
#apt-panel .apt-body{overflow:auto;min-height:0;padding:12px;scrollbar-width:thin}

#apt-panel .apt-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px}
#apt-panel .apt-row.apt-tight{margin:8px 0}
#apt-panel .apt-grow{flex:1 1 0;min-width:0}
#apt-panel .apt-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#apt-panel .apt-stack{display:flex;flex-direction:column;gap:8px}
#apt-panel .apt-fld{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;min-width:0}
#apt-panel .apt-fld label,#apt-panel .apt-rgrid label{font-size:11px;font-weight:700;color:var(--tx3);letter-spacing:.02em}
#apt-panel .apt-in{width:100%;min-height:34px;padding:6px 9px;border:1px solid var(--bd);border-radius:8px;background:var(--inp);color:var(--tx);font:inherit;box-shadow:none}
#apt-panel .apt-in:focus{background:var(--inp-f);border-color:var(--blue);outline:none}
#apt-panel textarea.apt-in{resize:vertical;line-height:1.45}
#apt-panel .apt-short{width:92px;min-height:28px;border-radius:14px;padding:2px 10px}
#apt-panel .apt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:0 11px;border-radius:8px;border:1px solid var(--bd);background:var(--sur);color:var(--tx2);font-weight:600;text-decoration:none;white-space:nowrap}
#apt-panel .apt-btn:hover{background:var(--sur2)}
#apt-panel .apt-btn:disabled{opacity:.5;cursor:default}
#apt-panel .apt-btn.apt-pri{background:var(--blue);border-color:var(--blue);color:#fff}
#apt-panel .apt-btn.apt-pri:hover{filter:brightness(.94)}
#apt-panel .apt-btn.apt-gold{background:var(--gold);border-color:var(--gold);color:var(--navy)}
#apt-panel .apt-btn.apt-danger{color:var(--red)}
#apt-panel .apt-btn.apt-sm{min-height:28px;padding:0 9px;font-size:12px}
#apt-panel .apt-btn.apt-wide{width:100%;margin-top:8px}
#apt-panel .apt-ib{width:28px;height:28px;flex:none;display:grid;place-items:center;padding:0;border-radius:7px;border:1px solid var(--bd);background:var(--sur);color:var(--tx2);text-decoration:none}
#apt-panel .apt-ib:hover{background:var(--sur2);color:var(--tx)}
#apt-panel .apt-chip{display:inline-flex;align-items:center;gap:5px;min-height:26px;padding:0 10px;border:1px solid var(--bd);border-radius:13px;background:var(--sur);color:var(--tx2);font-size:12px;font-weight:600}
#apt-panel .apt-chip:hover{background:var(--sur2)}
#apt-panel .apt-chip[aria-checked="true"],#apt-panel .apt-chip[aria-pressed="true"]{background:color-mix(in srgb,var(--blue) 16%,var(--sur));border-color:transparent;color:var(--blue)}
#apt-panel .apt-chip:disabled{opacity:.5;cursor:default}
#apt-panel .apt-link{border:0;background:none;color:var(--blue);font-weight:600;font-size:12px;padding:2px 4px;border-radius:6px}
#apt-panel .apt-link:hover{text-decoration:underline}
#apt-panel .apt-danger{color:var(--red)}
#apt-panel .apt-sec{display:flex;align-items:center;gap:6px;margin:14px 0 6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}
#apt-panel .apt-sp{flex:1}
#apt-panel .apt-note{margin-top:6px;font-size:12px;color:var(--tx3)}
#apt-panel .apt-empty{padding:12px;border:1px dashed var(--bd);border-radius:10px;color:var(--tx3);text-align:center;font-size:12px}
#apt-panel .apt-warn{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px;padding:8px 10px;border-radius:9px;background:color-mix(in srgb,var(--amber) 16%,var(--sur));color:var(--tx);font-size:12px}
#apt-panel .apt-warn svg{margin-top:2px;color:var(--amber)}
#apt-panel .apt-box{margin-bottom:10px;padding:10px;border:1px solid var(--bd);border-radius:11px;background:var(--sur2)}
#apt-panel .apt-box h3{margin-bottom:8px;font-size:13px}
#apt-panel .apt-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:3px;border-radius:9px;background:var(--sur2);border:1px solid var(--bd)}
#apt-panel .apt-seg button{min-height:28px;border:0;border-radius:7px;background:none;color:var(--tx2);font-weight:600;font-size:12px}
#apt-panel .apt-seg button[aria-pressed="true"]{background:var(--sur);color:var(--tx);box-shadow:0 1px 3px rgba(13,37,69,.2)}
#apt-panel .apt-res{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 10px;border:1px solid var(--bd);border-radius:10px;background:var(--sur)}
#apt-panel .apt-rl{flex:1;min-width:0}
#apt-panel .apt-resl{font-size:11px;font-weight:600;color:var(--tx3)}
#apt-panel .apt-resv{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#apt-panel .apt-resv.apt-mid{font-size:15px}
#apt-panel .apt-res.apt-big{background:var(--chrome);border-color:transparent}
#apt-panel .apt-res.apt-big .apt-resl{color:var(--chrome-ink2)}
#apt-panel .apt-res.apt-big .apt-resv{color:var(--chrome-ink);font-size:26px}
#apt-panel .apt-res.apt-big .apt-btn{background:rgba(255,255,255,.12);border-color:transparent;color:var(--chrome-ink)}
#apt-panel .apt-res.apt-isin{box-shadow:inset 0 0 0 2px var(--gold)}
#apt-panel .apt-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:8px}
#apt-panel .apt-stats div{padding:6px 8px;border:1px solid var(--bd);border-radius:9px;background:var(--sur2);min-width:0}
#apt-panel .apt-stats span{display:block;font-size:10.5px;font-weight:600;color:var(--tx3)}
#apt-panel .apt-stats b{display:block;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}

#apt-panel .apt-ratebox{display:flex;align-items:center;gap:6px}
#apt-panel .apt-rateinput{width:74px;flex:none;text-align:center;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;border-color:var(--blue)}
#apt-panel .apt-pctsign{margin-left:-2px;font-weight:700;color:var(--tx2)}
#apt-panel .apt-pick{flex:1;min-width:0}
#apt-panel .apt-ib{font-size:16px;font-weight:700}

/* calculator */
#apt-panel .apt-display{min-height:66px;padding:6px 12px 8px;border-radius:11px;background:var(--chrome);color:var(--chrome-ink);display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:2px;overflow:hidden}
#apt-panel .apt-dexpr{min-height:18px;max-width:100%;font-size:12.5px;color:var(--chrome-ink2);text-align:right;word-break:break-all;font-variant-numeric:tabular-nums}
#apt-panel .apt-dres{max-width:100%;font-size:28px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#apt-panel .apt-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
#apt-panel .apt-key{height:36px;border-radius:9px;border:1px solid var(--bd);background:var(--sur2);color:var(--tx);font-size:16px;font-weight:600;padding:0;display:grid;place-items:center}
#apt-panel .apt-key:hover{background:var(--bg)}
#apt-panel .apt-key:active{transform:translateY(1px)}
#apt-panel .apt-key.apt-op{background:color-mix(in srgb,var(--blue) 14%,var(--sur));border-color:transparent;color:var(--blue);font-size:18px}
#apt-panel .apt-key.apt-fn{font-size:14px;color:var(--tx2)}
#apt-panel .apt-key.apt-clr{color:var(--red)}
#apt-panel .apt-key.apt-eq{background:var(--gold);border-color:transparent;color:var(--navy);font-size:20px}
#apt-panel .apt-tape,#apt-panel .apt-notes,#apt-panel .apt-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
#apt-panel .apt-tape li,#apt-panel .apt-notes li,#apt-panel .apt-log li{padding:7px 9px;border:1px solid var(--bd);border-radius:9px;background:var(--sur2)}
#apt-panel .apt-top{display:flex;align-items:center;gap:6px}
#apt-panel .apt-top strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#apt-panel .apt-tlabel{flex:1;min-width:0;height:28px;padding:0 7px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--tx);font-weight:600;font-family:inherit;font-size:inherit}
#apt-panel .apt-tlabel:hover{border-color:var(--bd)}
#apt-panel .apt-tlabel:focus{border-color:var(--blue);background:var(--sur);outline:none}
#apt-panel .apt-tlabel::placeholder{color:var(--tx3);font-weight:500}
#apt-panel .apt-tbot{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:2px 7px 0}
#apt-panel .apt-texpr{min-width:0;color:var(--tx3);font-size:12px;font-variant-numeric:tabular-nums;word-break:break-word}
#apt-panel .apt-tres{border:0;background:none;padding:2px 6px;margin-right:-6px;border-radius:6px;color:var(--tx);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
#apt-panel .apt-tres:hover{background:color-mix(in srgb,var(--blue) 14%,var(--sur));color:var(--blue)}

/* rates editor */
#apt-panel .apt-rrow{margin-bottom:8px;padding:8px;border:1px solid var(--bd);border-radius:10px;background:var(--sur2)}
#apt-panel .apt-rgrid{display:grid;grid-template-columns:1fr 1fr 1.2fr 1fr;gap:6px;margin-top:6px}
#apt-panel .apt-rgrid label{display:flex;flex-direction:column;gap:2px;min-width:0}
#apt-panel .apt-rgrid .apt-in{padding:4px 6px;min-height:30px}

/* notes, timer, messages, links */
#apt-panel .apt-pad{width:100%;min-height:110px;padding:9px 11px;border:1px solid var(--bd);border-radius:10px;background:var(--inp);color:var(--tx);resize:vertical;line-height:1.45;font:inherit}
#apt-panel .apt-pad:focus{background:var(--inp-f);border-color:var(--blue);outline:none}
#apt-panel .apt-banner{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:5px 9px;border-radius:8px;background:color-mix(in srgb,var(--blue) 14%,var(--sur));color:var(--blue);font-size:12px;font-weight:600}
#apt-panel .apt-ntitle{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#apt-panel .apt-nsnip{margin-top:2px;color:var(--tx2);font-size:12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#apt-panel .apt-nmeta{display:flex;align-items:center;gap:5px;margin-top:5px}
#apt-panel .apt-nmeta time{flex:1;color:var(--tx3);font-size:11px}
#apt-panel .apt-face{margin:10px 0 6px;padding:10px;border-radius:11px;background:var(--chrome);color:var(--chrome-ink);text-align:center;font-size:40px;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums}
#apt-panel .apt-face.apt-run{box-shadow:inset 0 0 0 2px var(--gold)}
#apt-panel .apt-face.apt-done{box-shadow:inset 0 0 0 2px var(--red)}
#apt-panel .apt-trio{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:6px;margin-top:6px}
#apt-panel .apt-trio .apt-btn{min-height:36px}
#apt-panel .apt-log li{display:flex;align-items:center;gap:8px}
#apt-panel .apt-who{flex:1;min-width:0}
#apt-panel .apt-who strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#apt-panel .apt-who span{display:block;font-size:11px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#apt-panel .apt-dur{font-weight:700;font-variant-numeric:tabular-nums}
#apt-panel .apt-total{display:flex;justify-content:space-between;margin-top:6px;padding:7px 10px;border-radius:9px;background:color-mix(in srgb,var(--blue) 14%,var(--sur));color:var(--blue);font-weight:700;font-variant-numeric:tabular-nums}
#apt-panel .apt-msg{display:flex;flex-direction:column;gap:6px;padding:9px 10px;border:1px solid var(--bd);border-radius:11px;background:var(--sur2)}
#apt-panel .apt-msg p{font-size:12px;color:var(--tx2);white-space:pre-wrap;line-height:1.45}
#apt-panel .apt-act{display:flex;gap:6px}
#apt-panel .apt-act .apt-btn{min-height:30px}
#apt-panel .apt-tag{padding:1px 8px;border-radius:9px;background:color-mix(in srgb,var(--blue) 14%,var(--sur));color:var(--blue);font-size:10.5px;font-weight:700}
#apt-panel .apt-lcard{display:flex;align-items:center;gap:6px;padding:8px 9px;border:1px solid var(--bd);border-radius:11px;background:var(--sur2)}
#apt-panel .apt-contact-card{align-items:flex-start}
#apt-panel .apt-contact-values{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:5px}
#apt-panel .apt-contact-value{display:inline-flex;align-items:baseline;gap:5px;max-width:100%;padding:2px 3px;border:0;border-radius:5px;background:none;color:var(--blue);text-align:left}
#apt-panel .apt-contact-value:hover,#apt-panel .apt-contact-value:focus-visible{background:color-mix(in srgb,var(--blue) 10%,transparent);text-decoration:underline;outline:none}
#apt-panel .apt-contact-value span{font-size:10px;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em}
#apt-panel .apt-contact-value strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}

/* vault */
#apt-panel .apt-lock{max-width:260px;margin:0 auto;text-align:center}
#apt-panel .apt-lockico{display:flex;justify-content:center;color:var(--gold2)}
#apt-panel .apt-lock h2{margin:4px 0 2px;font-size:15px}
#apt-panel .apt-dots{display:flex;justify-content:center;align-items:center;gap:9px;height:20px;margin:10px 0 4px}
#apt-panel .apt-dots span{width:12px;height:12px;border-radius:50%;border:2px solid var(--bd)}
#apt-panel .apt-dots span.apt-f{background:var(--gold);border-color:var(--gold)}
#apt-panel .apt-err{min-height:18px;margin:2px 0 6px;color:var(--red);font-weight:600;font-size:12px}
#apt-panel .apt-pk{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
#apt-panel .apt-pk .apt-key{height:40px}
#apt-panel .apt-vitem{display:flex;flex-direction:column;gap:5px;padding:9px 10px;border:1px solid var(--bd);border-radius:11px;background:var(--sur2)}
#apt-panel .apt-vline{display:flex;align-items:center;gap:6px;font-size:12px}
#apt-panel .apt-k{width:62px;flex:none;color:var(--tx3);font-size:11px;font-weight:600}
#apt-panel .apt-v{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#apt-panel .apt-v.apt-wrap{white-space:normal}
#apt-panel .apt-vline .apt-ib{width:26px;height:26px}

#apt-root .apt-toast{position:fixed;left:50%;bottom:20px;z-index:10060;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:min(92vw,440px);padding:9px 14px;border-radius:11px;background:var(--chrome);color:var(--chrome-ink);box-shadow:var(--sh2);font-weight:600;font-size:13px}
#apt-root .apt-toast button{border:0;background:none;color:var(--gold);font-weight:700;padding:2px 4px;cursor:pointer}
@media(max-width:420px){#apt-panel{right:8px}}
@media(prefers-reduced-motion:no-preference){#apt-panel:not([hidden]){animation:apt-drop .16s ease-out}}
@keyframes apt-drop{from{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}
