:root{--bg:#f4f6f9;--nav:#12233f;--nav2:#1b3153;--card:#fff;--text:#172033;--muted:#6b7280;--line:#dfe4ea;--accent:#b3192d;--good:#137a48}
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}
a{color:inherit}.layout{display:flex;min-height:100vh}.sidebar{width:250px;background:var(--nav);color:#fff;padding:22px 16px;position:fixed;inset:0 auto 0 0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
.brand{font-size:21px;font-weight:800;line-height:1.1;margin:0 8px 25px}.brand small{display:block;font-size:11px;font-weight:500;opacity:.65;margin-top:6px}
.nav a{display:block;text-decoration:none;padding:11px 12px;border-radius:8px;margin:3px 0;color:#e8edf5}.nav a:hover,.nav a.active{background:var(--nav2)}
.main{margin-left:250px;width:calc(100% - 250px)}.top{background:#fff;border-bottom:1px solid var(--line);padding:15px 28px;display:flex;justify-content:space-between;align-items:center}
.content{padding:28px;max-width:1400px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
h1{margin:0 0 8px;font-size:28px}h2{margin-top:0}.muted{color:var(--muted)}.metric{font-size:30px;font-weight:800;margin-top:8px}
.btn{display:inline-block;border:0;border-radius:8px;background:var(--nav);color:#fff;text-decoration:none;padding:10px 14px;cursor:pointer;font-weight:700}.btn.red{background:var(--accent)}.btn.light{background:#e9edf3;color:#172033}
input,select,textarea{width:100%;padding:10px;border:1px solid #cfd6df;border-radius:7px;background:#fff}label{font-weight:700;font-size:13px;display:block;margin:11px 0 5px}
table{width:100%;max-width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:11px;border-bottom:1px solid var(--line);font-size:14px}th{background:#f7f8fa}
.alert{padding:12px 14px;border-radius:8px;margin:12px 0}.success{background:#e8f6ee;color:#145c38}.error{background:#fdebec;color:#8b1d2c}.warning{background:#fff6e5;color:#7a4d00}
.loginwrap{min-height:100vh;display:grid;place-items:center;padding:20px}.loginbox{width:100%;max-width:430px}
.split{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef1f5;font-size:12px}
@media(max-width:800px){.sidebar{position:static;width:100%}.layout{display:block}.main{margin:0;width:100%}.split{grid-template-columns:1fr}}


/* V1.6.1 dashboard parity */
.quick-actions{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 18px}
.victory-hero{margin-bottom:18px}.victory-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.hero-number{font-size:30px;font-weight:800;margin:8px 0 12px}.hero-percent{font-size:44px;font-weight:800;color:#173f78}
.progress{height:12px;border-radius:999px;background:#e7ecf2;overflow:hidden;margin-top:14px}.progress span{display:block;height:100%;background:#173f78;border-radius:inherit}
.progress.small{height:8px;margin-top:10px}.hero-foot{display:flex;gap:26px;flex-wrap:wrap;align-items:center;margin-top:12px;font-size:13px}.hero-foot a{text-decoration:none;color:#173f78}
.dashboard-main{display:grid;grid-template-columns:minmax(280px,1fr) minmax(420px,1.6fr);gap:16px;margin-bottom:16px}
.weekly-status{min-height:225px}.status-mark{width:46px;height:7px;background:#173f78;margin:34px 0 25px}.weekly-status h2{font-size:20px}
.quota-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.quota-card{min-height:105px}.quota-number{font-size:24px;font-weight:800;margin-top:10px}
.event-quota{max-width:520px;margin-bottom:16px}
.summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:16px}
.goal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px}
.two-panel{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.panel-title{display:flex;justify-content:space-between;align-items:center}.panel-title h2{margin:0}.panel-title a{text-decoration:none;color:#5f6b7a;font-size:12px}
.empty-state{text-align:center;color:var(--muted);padding:48px 12px}.event-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.event-row:last-child{border-bottom:0}
.operations-snapshot{margin-top:4px}.operations-snapshot .summary-grid{margin:0}.operations-snapshot .compact>div{padding:4px 8px}
@media(max-width:1100px){.dashboard-main{grid-template-columns:1fr}.summary-grid{grid-template-columns:repeat(2,1fr)}.goal-grid{grid-template-columns:1fr}.two-panel{grid-template-columns:1fr}}
@media(max-width:650px){.quota-grid,.summary-grid{grid-template-columns:1fr}.victory-top{align-items:center}.hero-percent{font-size:34px}}

/* V1.7 door walking */
.top-logout{display:inline-block;text-decoration:none;font-size:12px;font-weight:700;padding:6px 10px;border-radius:999px;background:#12233f;color:#fff}
.door-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1.2fr auto auto;gap:8px;align-items:center}.inline-check{display:flex;align-items:center;gap:6px;margin:0;white-space:nowrap}.inline-check input{width:auto}
.door-list{display:grid;gap:14px;margin-top:16px}.door-card{padding:18px}.door-head{display:flex;justify-content:space-between;gap:15px;align-items:start}.door-head h2{margin:0 0 4px}
.voter-stack{margin-top:14px;border-top:1px solid var(--line)}.walk-voter{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.walk-voter-info{min-width:240px}.walk-result{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.support-label{font-size:12px;color:var(--muted)}
.walk-buttons{display:flex;gap:6px;flex-wrap:wrap}.walk-btn{border:1px solid #cfd6df;background:#fff;border-radius:8px;padding:8px 11px;font-weight:700;cursor:pointer}.walk-btn.support{border-color:#83c7a2;background:#edf8f1}.walk-btn.undecided{border-color:#d4b75f;background:#fff9e6}.walk-btn.opposed{border-color:#e2a0a8;background:#fff0f2}
.door-complete-form{margin-top:14px}.door-complete-form>input{margin-bottom:9px}.door-actions{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:1000px){.door-filters{grid-template-columns:1fr 1fr}.walk-voter{align-items:flex-start;flex-direction:column}.walk-result{justify-content:flex-start}}
@media(max-width:600px){.door-filters{grid-template-columns:1fr}.walk-buttons{width:100%}.walk-btn{flex:1}.door-actions .btn{flex:1;text-align:center}}

/* V1.8 campaign user management + mobile canvassing polish */
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.inline-form{margin:0}.inline-form select{min-width:170px}.password-reset{margin-top:6px}.password-reset summary{cursor:pointer;font-size:12px;font-weight:700}.password-reset form{display:flex;gap:6px;margin-top:6px}.password-reset input{min-width:210px}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr}}
@media(max-width:650px){
 .walk-btn{min-height:48px;font-size:15px}
 .door-card{padding:14px}
 .door-head h2{font-size:20px}
 .alert.success{position:sticky;top:8px;z-index:20;box-shadow:0 4px 18px rgba(0,0,0,.12)}
 .password-reset form{display:block}.password-reset button{margin-top:6px;width:100%}
}

.debug-log{max-height:520px;overflow:auto;background:#0f172a;color:#e5e7eb;border-radius:8px;padding:14px;font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word}

/* V1.8.2 walking-list performance + street-name sorting */
.door-filters{grid-template-columns:2fr 1fr 1fr 1.35fr 1.2fr auto auto}
.walk-list-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0;color:var(--muted);font-size:13px}
.pagination{display:flex;gap:8px;align-items:center}.bottom-pagination{margin-top:16px}
@media(max-width:1200px){.door-filters{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:700px){.door-filters{grid-template-columns:1fr}.walk-list-meta{align-items:stretch;flex-direction:column}.pagination .btn{flex:1;text-align:center}}

/* VictoryPath HQ production branding */
.brand{letter-spacing:.3px}.brand small{letter-spacing:.8px;text-transform:uppercase}


/* VictoryPath HQ branded production release */
.brand-logo{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.brand-logo img{display:block;width:190px;max-width:100%;height:auto}
.brand-logo small{font-size:10px;letter-spacing:1.1px;color:#c7d3e3}

.login-brand{text-align:center;margin-bottom:12px}
.login-brand img{width:360px;max-width:100%;height:auto}
.login-card h1.visually-hidden,.visually-hidden{
position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important
}
@media(max-width:700px){
  .brand-logo img{width:155px}
  .login-brand img{width:300px}
}

/* VictoryPath HQ V1.0.2 — centered global header branding */
.brand-compact{padding:16px 14px 8px}
.brand-compact strong{font-size:24px;letter-spacing:1.6px;color:#fff;display:block}
.brand-compact small{font-size:9px;letter-spacing:1px;color:#b9c6d8;display:block;margin-top:2px}

.topbar{position:relative}
.topbar-logo-center{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    z-index:1;
    pointer-events:none;
    display:flex;
    align-items:center;
    justify-content:center;
}
.topbar-logo-center img{
    display:block;
    width:280px;
    max-width:30vw;
    height:auto;
}
.topbar > *:not(.topbar-logo-center){position:relative;z-index:2}

@media(max-width:1100px){
  .topbar-logo-center img{width:220px;max-width:26vw}
}
@media(max-width:850px){
  .topbar-logo-center{display:none}
  .brand-compact strong{font-size:20px}
}

/* VictoryPath HQ V1.0.3 — actual centered global logo */
.top{
    position:relative;
    min-height:96px;
    display:grid;
    grid-template-columns:minmax(180px,1fr) 300px minmax(420px,1fr);
    align-items:center;
    gap:14px;
}
.top-page-title{
    justify-self:start;
    position:relative;
    z-index:2;
}
.top-brand{
    justify-self:center;
    align-self:center;
    position:relative;
    z-index:1;
    width:300px;
    pointer-events:none;
}
.top-brand img{
    display:block;
    width:100%;
    height:82px;
    object-fit:contain;
}
.top-controls{
    justify-self:end;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:6px;
    position:relative;
    z-index:2;
    white-space:nowrap;
}
@media(max-width:1280px){
    .top{grid-template-columns:minmax(150px,1fr) 230px minmax(350px,1fr)}
    .top-brand{width:230px}
    .top-brand img{height:68px}
}
@media(max-width:980px){
    .top{grid-template-columns:1fr auto;min-height:70px}
    .top-brand{display:none}
}

/* VictoryPath HQ V1.0.4 — voter database pagination */
.voter-filters{display:grid;grid-template-columns:2fr 1fr 1fr 150px auto;gap:8px}
.voter-page-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0;color:var(--muted);font-size:13px}
.voter-page-meta .pagination{display:flex;gap:8px}
@media(max-width:950px){.voter-filters{grid-template-columns:1fr 1fr}}
@media(max-width:650px){
  .voter-filters{grid-template-columns:1fr}
  .voter-page-meta{flex-direction:column;align-items:stretch}
  .voter-page-meta .pagination .btn{flex:1;text-align:center}
}

/* VictoryPath HQ V1.0.6 — sidebar navigation visibility fix */
.sidebar .nav{padding-bottom:28px}
.sidebar::-webkit-scrollbar{width:8px}
.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:999px}
.sidebar::-webkit-scrollbar-track{background:transparent}


/* =========================================================
   VictoryPath HQ DEV V1.0 — mobile responsive application
   ========================================================= */

html,body{max-width:100%;overflow-x:hidden}
button,input,select,textarea{font:inherit}
button,.btn,.walk-btn,.top-logout{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.mobile-menu-btn,.sidebar-close,.mobile-overlay,.dev-top-badge,.dev-chip{display:none}

/* Better touch targets globally */
.btn,.walk-btn,.top-logout{min-height:42px}
input,select,textarea{min-height:42px}
textarea{min-height:96px}

/* Tables remain usable without blowing out the page */
.card>div[style*="overflow:auto"]{max-width:100%;-webkit-overflow-scrolling:touch}
table{min-width:0}

/* DEV identity */
.dev-chip{
  margin-top:7px;
  width:max-content;
  padding:3px 7px;
  border-radius:999px;
  background:#c91f2f;
  color:#fff;
  font-size:9px;
  font-weight:900;
  letter-spacing:1px;
}
.dev-top-badge{
  padding:4px 8px;
  border-radius:999px;
  background:#fff1f2;
  color:#b2182b;
  border:1px solid #efb4bc;
  font-size:10px;
  font-weight:900;
  letter-spacing:.7px;
}

/* Tablet */
@media(max-width:1100px){
  .content{padding:20px;max-width:100%}
  .top{grid-template-columns:minmax(120px,1fr) 190px minmax(280px,1fr);padding:12px 18px;gap:10px}
  .top-brand{width:190px}
  .top-brand img{height:58px}
  .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .goal-grid{grid-template-columns:1fr}
}

/* True mobile navigation: off-canvas drawer */
@media(max-width:900px){
  body{background:#f5f7fa}
  body.nav-open{overflow:hidden}

  .layout{display:block}
  .sidebar{
    position:fixed !important;
    left:0;top:0;bottom:0;
    width:min(84vw,320px) !important;
    transform:translateX(-105%);
    transition:transform .22s ease;
    z-index:1002;
    padding:18px 14px 28px;
    overflow-y:auto;
    overflow-x:hidden;
    box-shadow:8px 0 30px rgba(0,0,0,.2);
  }
  body.nav-open .sidebar{transform:translateX(0)}

  .mobile-overlay{
    display:block;
    position:fixed;
    inset:0;
    background:rgba(5,17,34,.48);
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease;
    z-index:1001;
  }
  body.nav-open .mobile-overlay{opacity:1;pointer-events:auto}

  .sidebar-close{
    display:flex;
    position:absolute;
    top:10px;right:10px;
    width:42px;height:42px;
    border:0;border-radius:10px;
    align-items:center;justify-content:center;
    font-size:30px;line-height:1;
    background:rgba(255,255,255,.10);
    color:#fff;
    cursor:pointer;
  }

  .brand-compact{padding:8px 48px 16px 10px;margin:0 0 10px}
  .brand-compact strong{font-size:26px}
  .brand-compact small{font-size:9px}
  .dev-chip{display:inline-flex}

  .sidebar .nav a{
    padding:14px 14px;
    margin:3px 0;
    min-height:48px;
    display:flex;
    align-items:center;
    font-size:16px;
  }

  .main{margin-left:0 !important;width:100% !important}

  .top{
    position:sticky;
    top:0;
    z-index:900;
    min-height:64px;
    display:flex !important;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:9px 12px;
    box-shadow:0 1px 8px rgba(16,39,68,.08);
  }
  .top-brand{display:none !important}
  .top-page-title{display:flex;align-items:center;gap:10px;min-width:0}
  .top-page-title strong{
    font-size:17px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    max-width:34vw;
  }
  .mobile-menu-btn{
    display:flex;
    width:46px;height:46px;
    flex:0 0 46px;
    border:0;border-radius:10px;
    align-items:center;justify-content:center;
    background:#12233f;color:#fff;
    font-size:24px;line-height:1;
    cursor:pointer;
  }
  .top-controls{
    min-width:0;
    flex:1;
    gap:6px;
    justify-content:flex-end;
    white-space:normal;
  }
  .top-controls form{min-width:0 !important;max-width:58vw}
  .top-controls form .muted{display:none}
  .top-controls select{
    min-width:0;
    max-width:42vw;
    padding:8px 28px 8px 9px;
    font-size:12px;
  }
  .top-controls .pill{display:none}
  .top-logout{display:none}
  .dev-top-badge{display:inline-flex}

  .content{padding:16px 12px;max-width:100%}
  h1{font-size:26px}
  h2{font-size:20px}
  .card{padding:16px;border-radius:12px}

  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .metric{font-size:25px}
  .quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .quick-actions .btn{width:100%;text-align:center;padding:12px 8px}

  .dashboard-main,.quota-grid,.summary-grid,.goal-grid,.two-panel,.settings-grid,.split{
    grid-template-columns:1fr !important;
  }
  .victory-top{flex-direction:column;gap:4px}
  .hero-percent{font-size:34px}
  .hero-foot{gap:10px}
  .event-quota{max-width:none}

  .voter-filters,.door-filters{grid-template-columns:1fr !important}
  .voter-page-meta,.walk-list-meta{flex-direction:column;align-items:stretch}
  .pagination{display:grid !important;grid-template-columns:1fr 1fr;gap:8px}
  .pagination .btn{width:100%;text-align:center;min-height:46px}

  .password-reset form{display:block}
  .password-reset input{min-width:0;width:100%}
}

/* Phone-specific field workflow */
@media(max-width:600px){
  .content{padding:12px 9px 24px}
  .card{padding:13px}
  h1{font-size:24px;margin-bottom:6px}
  .muted{font-size:13px}

  .grid{grid-template-columns:1fr 1fr;gap:8px}
  .grid .card{padding:12px}
  .grid .metric{font-size:22px}

  .quick-actions{grid-template-columns:1fr 1fr}
  .quick-actions .btn{font-size:13px;min-height:46px}

  /* Door Knocking: thumb-friendly */
  .door-list{gap:12px}
  .door-card{padding:14px 12px}
  .door-head{display:block}
  .door-head h2{
    font-size:22px;
    line-height:1.15;
    margin-bottom:5px;
  }
  .door-head .pill{margin-top:8px}

  .walk-voter{
    display:block;
    padding:15px 0;
  }
  .walk-voter-info{min-width:0;margin-bottom:10px}
  .walk-voter-info strong{font-size:16px;line-height:1.25}
  .walk-result{
    display:block;
    width:100%;
  }
  .support-label{
    display:block;
    margin-bottom:7px;
    font-size:12px;
    font-weight:700;
  }
  .walk-buttons{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:7px;
    width:100%;
  }
  .walk-btn{
    width:100%;
    min-height:52px;
    padding:10px 5px;
    font-size:14px;
    font-weight:800;
  }
  .door-complete-form>input{min-height:48px;font-size:16px}
  .door-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  .door-actions .btn{
    width:100%;
    min-height:50px;
    padding:10px 6px;
  }
  .door-actions .btn:first-child{
    grid-column:1/-1;
    min-height:54px;
  }

  /* Filters easier to tap */
  .door-filters input,.door-filters select,.door-filters .btn,
  .voter-filters input,.voter-filters select,.voter-filters .btn{
    min-height:48px;
    font-size:16px;
  }
  .inline-check{
    min-height:46px;
    padding:8px 4px;
    font-size:15px;
  }
  .inline-check input{width:22px;height:22px}

  /* Voter table: keep useful columns readable via horizontal swipe */
  table{min-width:0}
  th,td{padding:10px 9px;font-size:13px}

  .settings-grid .btn,.settings-grid button{min-height:48px}
  .settings-grid input,.settings-grid select{font-size:16px;min-height:48px}

  .alert{font-size:14px}
}

/* Very small phones */
@media(max-width:390px){
  .grid{grid-template-columns:1fr}
  .quick-actions{grid-template-columns:1fr}
  .walk-buttons{grid-template-columns:1fr}
  .walk-btn{min-height:48px}
  .top-page-title strong{display:none}
  .top-controls select{max-width:55vw}
}

/* =========================================================
   VictoryPath HQ DEV V1.1 — subscription tiers
   ========================================================= */
.plan-badge{display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:4px 9px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.65px;text-transform:uppercase;white-space:nowrap}
.plan-free{background:#eef1f5;color:#4e5969;border:1px solid #d7dde5}
.plan-pro{background:#eaf3ff;color:#135493;border:1px solid #a9cbed}
.plan-pro_plus{background:#f2ecff;color:#5b36a0;border:1px solid #cdbbf0}
.plan-enterprise{background:#fff1df;color:#8a4b00;border:1px solid #efc389}
.locked-nav{opacity:.82;display:flex!important;justify-content:space-between;gap:8px}
.locked-nav span{font-size:9px;border:1px solid rgba(255,255,255,.28);padding:2px 5px;border-radius:999px}
.pro-locked-btn span{font-size:9px;margin-left:4px;padding:2px 5px;border-radius:999px;background:#173f78;color:#fff}
.plan-summary{display:flex;align-items:center;gap:10px;margin:10px 0 16px;font-size:13px;color:var(--muted)}
.owner-plan-editor{margin-bottom:16px}
.responsive-table{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
.upgrade-wrap{max-width:1180px;margin:auto}
.upgrade-hero{text-align:center;padding:34px;margin-bottom:18px}
.upgrade-hero h1{margin-top:14px}
.pricing-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.price-card{position:relative}
.price-card.featured{border:2px solid #173f78;box-shadow:0 8px 24px rgba(23,63,120,.10)}
.price-card h2{margin-bottom:4px}
.price-name{font-weight:800;color:#173f78;margin-bottom:14px}
.price-card ul{padding-left:18px;margin:0}
.price-card li{margin:8px 0;color:#5f6b7a}
@media(max-width:1100px){.pricing-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){
  .pricing-grid{grid-template-columns:1fr}
  .top-controls .plan-badge{display:none}
  .plan-summary{align-items:flex-start;flex-direction:column}
}

/* VictoryPath HQ DEV V1.2 — public registration */
.registration-result{text-align:left}
.registration-result h1{font-size:25px;margin-top:10px}
.login-signup-link{text-align:center;font-size:13px;color:var(--muted);margin:16px 0 2px}
.login-signup-link a{font-weight:800;color:#173f78;text-decoration:none}

.forgot-link{text-align:right;margin-top:7px;font-size:12px}.forgot-link a{font-weight:700;color:#173f78;text-decoration:none}

/* VictoryPath HQ DEV V1.6 — Path to Victory + task completion */
.source-hint{font-size:11px;color:#7a8798;margin-top:3px}
.task-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.task-actions form{margin:0}
.task-done{background:#1e6b45!important;color:#fff!important;border-color:#1e6b45!important}
@media(max-width:600px){
  .task-actions{display:grid;grid-template-columns:1fr 1fr}
  .task-actions .btn{width:100%;min-height:46px;text-align:center}
}

/* VictoryPath HQ DEV V1.7 */
.task-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.task-actions form{margin:0}
.task-done{background:#1e6b45!important;color:#fff!important;border-color:#1e6b45!important}
@media(max-width:600px){
  .task-actions{display:grid;grid-template-columns:1fr 1fr}
  .task-actions .btn{width:100%;min-height:46px;text-align:center}
}

/* DEV V1.8 */
.task-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-task-action{display:inline;margin:0}.inline-task-action .btn{margin:0}
.danger-zone{border:1px solid #e4a0a7;background:#fff8f8}.danger-zone h2{color:#a7192b}.danger-action{border-top:1px solid #ead2d5;padding-top:16px;margin-top:16px}
@media(max-width:700px){.task-actions{align-items:stretch}.task-actions .btn,.inline-task-action,.inline-task-action .btn{width:100%;text-align:center}.owner-account-actions .btn{width:100%;margin-bottom:8px}}

/* VictoryPath HQ DEV V1.9 — accountability + customer account management */
.task-completion-meta{margin-top:4px;font-size:11px;color:#65758a;line-height:1.35;white-space:nowrap}
.customer-account-card{border-left:4px solid #173f78}
.customer-user-editor{padding:16px 0;border-top:1px solid #e2e8f0}
.customer-user-editor:first-of-type{border-top:0;padding-top:4px}
.customer-user-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.account-meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}
.account-meta-grid>div{padding:10px 12px;border:1px solid #dde5ee;border-radius:9px;background:#f8fafc}
.account-meta-grid span,.account-meta-grid strong{display:block}.account-meta-grid span{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#718096}.account-meta-grid strong{margin-top:4px;font-size:13px}
.account-active-toggle{display:flex;align-items:center;gap:8px}
.delete-preview{padding:14px 0 18px;border-bottom:1px solid #efc3c6;margin-bottom:14px}
.delete-preview table{background:#fff}
@media(max-width:700px){.account-meta-grid{grid-template-columns:1fr}.customer-user-header{align-items:flex-start;flex-direction:column}.task-completion-meta{white-space:normal}}


/* =========================================================
   VictoryPath HQ header + goal display fixes
   ========================================================= */

/* Keep the centered brand from being covered by long campaign/user labels. */
.top{
  grid-template-columns:minmax(130px,1fr) minmax(190px,270px) minmax(0,1.45fr);
}
.top-page-title{min-width:0}
.top-brand{width:min(270px,100%)}
.top-controls{
  min-width:0;
  width:100%;
  overflow:visible;
}
.current-campaign-name{
  display:inline-block;
  min-width:0;
  max-width:clamp(150px,24vw,360px);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  vertical-align:middle;
}
.campaign-switcher{
  display:inline-flex;
  gap:7px;
  align-items:center;
  min-width:0;
  width:clamp(220px,27vw,390px);
  max-width:100%;
}
.campaign-switcher .muted{flex:0 0 auto}
.campaign-switcher select{
  width:100%;
  min-width:160px;
  max-width:100%;
}
.top-user-pill{
  max-width:230px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.goal-progress-card .metric{font-size:28px}
.goal-progress-card .progress{margin-top:10px}

@media(max-width:1380px){
  .top{
    grid-template-columns:minmax(110px,.8fr) minmax(170px,220px) minmax(0,1.5fr);
    padding-left:18px;
    padding-right:18px;
  }
  .top-brand{width:220px}
  .top-brand img{height:64px}
  .current-campaign-name{max-width:230px}
  .campaign-switcher{width:min(300px,27vw)}
  .top-user-pill{max-width:180px}
}
@media(max-width:1100px) and (min-width:901px){
  .top{
    grid-template-columns:minmax(90px,.65fr) 170px minmax(0,1.65fr);
    gap:8px;
  }
  .top-brand{width:170px}
  .top-brand img{height:54px}
  .top-controls{gap:4px}
  .top-controls .plan-badge{font-size:9px;padding:3px 6px}
  .current-campaign-name{max-width:190px}
  .campaign-switcher{width:min(250px,28vw)}
  .campaign-switcher .muted{display:none}
  .top-user-pill{max-width:145px;font-size:11px}
}
@media(max-width:900px){
  .current-campaign-name{
    max-width:42vw;
    font-size:12px;
  }
  .campaign-switcher{
    width:min(58vw,360px);
    max-width:58vw;
  }
  .campaign-switcher select{
    min-width:0;
    max-width:58vw;
  }
}
@media(max-width:600px){
  .current-campaign-name{max-width:38vw}
  .campaign-switcher{width:min(54vw,300px);max-width:54vw}
  .campaign-switcher select{max-width:54vw}
}


/* VictoryPath HQ DEV V1.11 — System Diagnostics */
.diag-summary{
  display:grid;
  grid-template-columns:minmax(180px,1.5fr) repeat(3,minmax(110px,.55fr)) minmax(220px,1fr);
  gap:12px;
  align-items:center;
  padding:20px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  margin-bottom:16px;
}
.diag-overall{font-size:30px;font-weight:900;margin-top:3px}
.diag-summary-count{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:12px;border-radius:12px;background:#f5f7fa;min-height:74px
}
.diag-summary-count strong{font-size:25px}.diag-summary-count span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.diag-summary-count.pass{background:#e9f7ef;color:#17643d}
.diag-summary-count.warn{background:#fff7df;color:#7a5a00}
.diag-summary-count.fail{background:#fdeced;color:#9d1724}
.diag-actions{text-align:right}
.diag-section{margin-top:16px}
.diag-list{border-top:1px solid var(--line)}
.diag-row{
  display:grid;
  grid-template-columns:78px minmax(220px,.9fr) minmax(260px,1.5fr);
  gap:14px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)
}
.diag-badge{display:inline-block;min-width:62px;text-align:center;padding:5px 7px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.45px}
.diag-badge-pass{background:#e4f5eb;color:#17643d;border:1px solid #b8dec8}
.diag-badge-warn{background:#fff4d2;color:#715300;border:1px solid #ead28a}
.diag-badge-fail{background:#fde7e9;color:#a01625;border:1px solid #efb9bf}
.diag-name{font-weight:800}
.diag-detail{color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.diag-performance-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.diag-performance-actions form{margin:0}
@media(max-width:900px){
  .diag-summary{grid-template-columns:1fr 1fr 1fr}
  .diag-summary>div:first-child,.diag-actions{grid-column:1/-1}
  .diag-actions{text-align:left}
  .diag-row{grid-template-columns:72px 1fr}
  .diag-detail{grid-column:2}
}
@media(max-width:560px){
  .diag-summary{grid-template-columns:1fr}
  .diag-summary>div:first-child,.diag-actions{grid-column:auto}
  .diag-row{grid-template-columns:1fr}
  .diag-detail{grid-column:auto}
}


/* VictoryPath HQ DEV V1.12 — User Management */
.campaign-user-actions,.platform-user-actions{
  display:flex;
  gap:7px;
  align-items:center;
  flex-wrap:wrap;
}
.campaign-user-actions form,.platform-user-actions form{margin:0}
.campaign-user-actions details,.platform-user-actions details{margin:0}
.remove-user-account summary{
  cursor:pointer;
  font-weight:800;
  color:#a01625;
}
.mini-danger{
  margin-top:8px;
  padding:12px;
  min-width:300px;
  max-width:390px;
  border:1px solid #efb9bf;
  border-radius:10px;
  background:#fff6f6;
}
.mini-danger p{margin-top:0;font-size:12px;color:#6d4750}
.mini-danger form{display:grid;gap:8px}
.protected-account-note{
  display:inline-block;
  padding:5px 8px;
  border-radius:999px;
  background:#eef1f5;
  color:#65758a;
  font-size:11px;
  font-weight:800;
}
.user-filter-bar{
  display:grid;
  grid-template-columns:minmax(220px,1fr) minmax(180px,260px) auto auto;
  gap:8px;
  align-items:center;
}
.user-access-list{margin:8px 0 0;padding-left:18px;font-size:12px}
@media(max-width:850px){
  .user-filter-bar{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .user-filter-bar{grid-template-columns:1fr}
  .campaign-user-actions,.platform-user-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .campaign-user-actions .btn,.platform-user-actions .btn{width:100%;min-height:44px}
  .mini-danger{min-width:0;width:100%}
}


/* VictoryPath HQ DEV V1.13 — User Lifecycle */
.restore-panel{background:#f5f9ff;border-color:#bfd3ea}
.restore-panel p{color:#4d637b}
.user-filter-bar{grid-template-columns:minmax(220px,1fr) minmax(160px,210px) minmax(160px,210px) auto auto}
@media(max-width:950px){
  .user-filter-bar{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .user-filter-bar{grid-template-columns:1fr}
}


/* =========================================================
   VictoryPath HQ DEV V1.14 — owner management width fix
   Keep management tables and actions inside the visible app canvas.
   ========================================================= */
.main{min-width:0;max-width:calc(100vw - 250px)}
.content{width:100%;max-width:none;min-width:0}
.grid,.card{min-width:0}
.management-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start}
.management-grid .management-table-card{min-width:0;overflow:hidden}
.management-table-scroll{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.management-table-scroll table{min-width:0}
.management-table-scroll td:last-child,.management-table-scroll th:last-child{white-space:normal}
.management-table-scroll .btn{white-space:normal;margin:2px 0}
@media(max-width:1450px){
  .management-grid{grid-template-columns:1fr}
  .management-table-scroll table{min-width:0}
}
@media(max-width:900px){
  .main{max-width:100%}
  .management-grid{grid-template-columns:1fr}
  .management-table-scroll{overflow-x:auto}
}

/* VictoryPath HQ DEV V1.15 — Campaign Ownership */
.campaign-owner-badge{
  display:inline-block;
  margin-bottom:3px;
  padding:4px 8px;
  border-radius:999px;
  background:#173f78;
  color:#fff;
  font-size:10px;
  font-weight:900;
  letter-spacing:.45px;
  text-transform:uppercase;
}


/* =========================================================
   VictoryPath HQ DEV V1.17 — Mobile responsive data tables
   Convert wide desktop tables into readable stacked records
   on phones instead of clipping columns off-screen.
   ========================================================= */
.mobile-table-wrap{
  width:100%;
  max-width:100%;
  min-width:0;
}
.mobile-stack-table{
  width:100%;
  max-width:100%;
}
.mobile-stack-table td,
.mobile-stack-table th{
  overflow-wrap:anywhere;
  word-break:normal;
}
@media(max-width:700px){
  .management-grid{
    display:block;
  }
  .management-grid > .card{
    width:100%;
    max-width:100%;
    margin-bottom:16px;
  }
  .management-table-scroll{
    overflow:visible;
  }
  .management-table-scroll table{
    min-width:0 !important;
  }

  .mobile-stack-table,
  .mobile-stack-table tbody,
  .mobile-stack-table tr,
  .mobile-stack-table td{
    display:block;
    width:100%;
  }
  .mobile-stack-table thead,
  .mobile-stack-table > tbody > tr:first-child.table-header-row{
    display:none;
  }
  .mobile-stack-table tr{
    margin:0 0 14px;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fff;
    overflow:hidden;
  }
  .mobile-stack-table tr:last-child{
    margin-bottom:0;
  }
  .mobile-stack-table td{
    display:grid;
    grid-template-columns:minmax(96px,34%) minmax(0,1fr);
    gap:10px;
    align-items:start;
    padding:11px 13px;
    border-bottom:1px solid var(--line);
    white-space:normal !important;
    min-width:0;
  }
  .mobile-stack-table td:last-child{
    border-bottom:0;
  }
  .mobile-stack-table td::before{
    content:attr(data-label);
    font-weight:800;
    color:var(--nav);
    font-size:12px;
    line-height:1.35;
  }
  .mobile-stack-table td[data-label=""]::before{
    display:none;
  }
  .mobile-stack-table td[data-label=""]{
    grid-template-columns:1fr;
  }
  .mobile-stack-table td .btn,
  .mobile-stack-table td form,
  .mobile-stack-table td .task-actions{
    max-width:100%;
  }
  .mobile-stack-table td .task-actions{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
  }
  .mobile-stack-table td .btn,
  .mobile-stack-table td .inline-task-action,
  .mobile-stack-table td .inline-task-action .btn{
    width:100%;
    text-align:center;
  }

  .campaign-switcher{
    min-width:0;
    max-width:calc(100vw - 112px);
  }
  .campaign-switcher .muted{
    display:none;
  }
  .campaign-switcher select{
    width:100%;
    max-width:100%;
    min-width:0;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  .top-controls{
    min-width:0;
    max-width:calc(100vw - 96px);
  }
  .top-user-pill,
  .top-logout,
  .top-brand{
    display:none;
  }

  .card{
    overflow:visible;
  }
}
@media(max-width:430px){
  .mobile-stack-table td{
    grid-template-columns:88px minmax(0,1fr);
    padding:10px 11px;
  }
  .content{
    padding-left:9px;
    padding-right:9px;
  }
}


/* =========================================================
   VictoryPath HQ DEV V1.18 — Mobile cards hardening
   Overrides V1.17's two-column field layout on phones.
   ========================================================= */
@media(max-width:700px){
  html,body{
    max-width:100%;
    overflow-x:hidden;
  }

  .content,
  main,
  .page,
  .card,
  .management-grid,
  .management-grid > .card,
  .mobile-table-wrap,
  .responsive-table{
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
  }

  .mobile-table-wrap,
  .responsive-table{
    overflow:visible !important;
  }

  .mobile-stack-table{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    table-layout:fixed !important;
  }

  .mobile-stack-table thead{
    display:none !important;
  }

  .mobile-stack-table tbody{
    display:block !important;
    width:100% !important;
  }

  .mobile-stack-table tr{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    margin:0 0 14px !important;
    border:1px solid var(--line) !important;
    border-radius:14px !important;
    background:#fff !important;
    overflow:hidden !important;
    box-sizing:border-box !important;
  }

  .mobile-stack-table td{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    padding:12px 14px !important;
    border:0 !important;
    border-bottom:1px solid var(--line) !important;
    box-sizing:border-box !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
    overflow-wrap:anywhere !important;
    word-break:break-word !important;
    font-size:17px !important;
    line-height:1.35 !important;
  }

  .mobile-stack-table td:last-child{
    border-bottom:0 !important;
  }

  .mobile-stack-table td::before{
    content:attr(data-label) !important;
    display:block !important;
    width:100% !important;
    margin:0 0 6px !important;
    font-weight:800 !important;
    color:var(--nav) !important;
    font-size:13px !important;
    line-height:1.25 !important;
    text-transform:none !important;
  }

  .mobile-stack-table td[data-label=""]::before{
    display:none !important;
  }

  .mobile-stack-table td > *,
  .mobile-stack-table td form,
  .mobile-stack-table td .task-actions{
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
  }

  .mobile-stack-table td .task-actions{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:8px !important;
    width:100% !important;
  }

  .mobile-stack-table td .btn,
  .mobile-stack-table td button,
  .mobile-stack-table td a.btn,
  .mobile-stack-table td form .btn{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    height:auto !important;
    padding:12px 14px !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
    color:inherit;
    box-sizing:border-box !important;
  }

  .mobile-stack-table td a.btn{
    color:var(--nav) !important;
  }
  .mobile-stack-table td .btn.red,
  .mobile-stack-table td button.red{
    color:#fff !important;
  }

  /* Inputs inside forms should never exceed the phone width. */
  input, select, textarea, button{
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  /* Header campaign selector */
  .topbar,
  .topbar-inner,
  .top-controls{
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
  }
  .campaign-switcher{
    width:min(100%, 430px) !important;
    max-width:calc(100vw - 120px) !important;
    min-width:0 !important;
  }
  .campaign-switcher select{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
  }
}

/* very small phones */
@media(max-width:430px){
  .content{
    padding-left:8px !important;
    padding-right:8px !important;
  }
  .card{
    padding-left:12px !important;
    padding-right:12px !important;
  }
  .mobile-stack-table td{
    padding:11px 12px !important;
  }
}


/* =========================================================
   VictoryPath HQ DEV V1.19 — Data-first usability
   ========================================================= */
.summary-strip{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  margin:0 0 16px;
}
.summary-chip{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px 16px;
  min-width:0;
}
.summary-chip span{
  display:block;
  color:var(--muted);
  font-size:13px;
  margin-bottom:4px;
}
.summary-chip strong{
  display:block;
  color:var(--nav);
  font-size:23px;
  line-height:1.15;
  overflow-wrap:anywhere;
}
.snapshot-list{display:grid;}
.snapshot-item{
  display:block;
  padding:12px 0;
  border-bottom:1px solid var(--line);
  color:var(--nav);
  text-decoration:none;
}
.snapshot-item:last-child{border-bottom:0}
.snapshot-item strong,.snapshot-item span{display:block}
.snapshot-item span{margin-top:3px;color:var(--muted);font-size:13px}

@media(max-width:700px){
  .summary-strip{grid-template-columns:1fr 1fr;gap:10px}
  .summary-chip.wide{grid-column:1/-1}
  .summary-chip strong{font-size:20px}
}
@media(max-width:430px){
  .summary-strip{grid-template-columns:1fr}
}


/* V1.19.1 summary grouping refinement */
.summary-strip{
  align-items:stretch;
}
.summary-chip{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:84px;
  box-shadow:0 1px 2px rgba(16,40,72,.04);
}
.summary-chip span{
  font-weight:700;
  letter-spacing:.01em;
}
.summary-chip strong{
  margin-top:2px;
}
@media(max-width:700px){
  .summary-strip{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .summary-chip{
    min-height:74px;
  }
  .summary-chip.wide{
    grid-column:1 / -1;
  }
}
@media(max-width:430px){
  .summary-strip{
    grid-template-columns:1fr 1fr;
  }
  .summary-chip{
    min-height:68px;
    padding:12px 14px;
  }
  .summary-chip.wide{
    grid-column:1 / -1;
  }
  .summary-chip span{
    font-size:12px;
  }
  .summary-chip strong{
    font-size:19px;
  }
}


/* VictoryPath HQ Account Management R2 */
.account-page-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  align-items:start;
}
.account-close-card{
  border-left:4px solid #a01625;
}
.account-blocker-list{
  margin:8px 0 0;
  padding-left:18px;
}
.pending-email-note{
  margin-top:12px;
  padding:10px 12px;
  border:1px solid #d7e3f2;
  border-radius:9px;
  background:#f5f9ff;
  font-size:13px;
}
@media(max-width:800px){
  .account-page-grid{grid-template-columns:1fr}
}

/* VictoryPath HQ User / Campaign Management R8 */
.mgmt-back{margin:0 0 8px}
.mgmt-identity h2{margin-top:0}
.mgmt-section{margin-top:16px}
.mgmt-form{display:grid;gap:8px}
.mgmt-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 16px;margin:0 0 12px}
.mgmt-dl dt{font-size:12px;color:#5b6b7c;text-transform:uppercase;letter-spacing:.03em}
.mgmt-dl dd{margin:2px 0 0;font-weight:600}
.vphq-modal{border:1px solid #c5d0dc;border-radius:12px;padding:20px;max-width:520px;width:calc(100% - 32px);color:#10213a}
.vphq-modal::backdrop{background:rgba(16,33,58,.45)}
.vphq-modal h3{margin:0 0 10px}
.vphq-modal-highlight{font-size:18px;word-break:break-word}
.vphq-modal-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:16px}
.user-access-list{margin:0;padding-left:18px}
@media(max-width:700px){
  .mgmt-dl{grid-template-columns:1fr}
  .vphq-modal-actions .btn{width:100%;min-height:44px}
}

/* V1.26 layout: archived badge, portrait actions, no desktop min-width trap */
.archived-badge{
  display:inline-block;
  margin-left:6px;
  padding:2px 8px;
  border-radius:999px;
  background:#efe6d6;
  color:#7a4d00;
  font-size:11px;
  font-weight:800;
  letter-spacing:.02em;
  vertical-align:middle;
}
.portrait-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.portrait-actions form{margin:0}
.users-page-table,
.campaigns-page-table,
.admins-page-table,
.plans-page-table{
  min-width:0 !important;
}
@media(orientation:portrait),(max-width:700px){
  .portrait-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .portrait-actions .btn,
  .portrait-actions button{
    width:100%;
    min-height:44px;
    text-align:center;
  }
}
@media(min-width:901px){
  .content,.card,.table-wrap,.mobile-table-wrap,.management-table-scroll{
    overflow-x:visible;
  }
}

/* V1.26 R32 — in-workflow New Contact panel */
.vphq-contact-picker{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.vphq-contact-picker select{flex:1;min-width:180px}
.vphq-new-contact{margin-top:10px;padding:12px;border:1px solid #d7e3f2;border-radius:10px;background:#f5f9ff}
.vphq-new-contact summary{cursor:pointer;font-weight:700;color:#10213a}
.vphq-new-contact[open] summary{margin-bottom:10px}
.vphq-new-contact .muted{margin:0 0 10px}
.vphq-default-submit{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
@media(max-width:700px){
  .vphq-new-contact .btn{width:100%;min-height:44px}
}

/* V1.26 R32 R8 Candidate Accountability Concept B */
.acct-wrap{max-width:1100px;overflow-x:hidden}
.acct-kicker{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.acct-hero{display:grid;grid-template-columns:160px 1fr;gap:16px;align-items:center;margin-bottom:16px}
.acct-score{font-size:44px;font-weight:800;margin:0;color:#12233f}
.acct-status-word{font-size:18px;font-weight:700;margin:4px 0 8px}
.acct-ring{width:min(160px,100%);height:auto}
.acct-ring-num{font-size:16px;font-weight:800;fill:#12233f}
.acct-meter{display:none;position:relative;height:18px;border-radius:999px;background:#e7ecf2;overflow:hidden;margin:8px 0}
.acct-meter span{display:block;height:100%;background:#12233f}
.acct-meter em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-style:normal;font-weight:800}
.acct-four{display:grid;grid-template-columns:1fr;gap:12px;margin:16px 0}
.acct-metrics{display:grid;grid-template-columns:1fr;gap:12px}
.acct-metric{display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:center}
.acct-tags span{display:inline-block;margin:4px 6px 0 0;padding:2px 8px;border:1px solid #cfd6df;border-radius:999px;font-size:12px;font-weight:700}
.acct-weekbar{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;max-width:100%}
.acct-week-form{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px;max-width:100%}
.acct-week-select,.acct-settings select{width:100%;max-width:100%;min-height:44px;box-sizing:border-box}
.acct-settings{display:flex;flex-direction:column;gap:8px;max-width:100%}
.acct-tap,.acct-weekbar .btn,.acct-actions .btn{min-height:44px;min-width:44px}
.acct-trend{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:10px}
.acct-trend li{flex:1 1 70px;border:1px solid var(--line);border-radius:8px;padding:8px;text-align:center}
.acct-trend-now{background:#eef3fb}
.acct-spark{width:100%;max-width:100%;height:auto}
.acct-history{padding-left:18px;overflow-wrap:anywhere}
.acct-metric-edit{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:10px}
.acct-actions{display:flex;flex-wrap:wrap;gap:8px}
@media(min-width:700px){.acct-four{grid-template-columns:1fr 1fr}.acct-metrics{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.acct-four{grid-template-columns:1fr 1fr 1fr 1fr}.acct-hero{grid-template-columns:200px 1fr}}
@media(max-width:390px){
  .acct-wrap,.acct-metric,.acct-hero,.acct-four{max-width:100%;overflow-x:hidden}
  .acct-hero,.acct-metric{grid-template-columns:1fr}
  .acct-score{font-size:34px}
  body{overflow-x:hidden}
}
@media(max-width:320px){
  .acct-wrap{font-size:16px}
  .acct-ring{display:none}
  .acct-meter{display:block}
  .acct-metric,.acct-hero,.acct-four{grid-template-columns:1fr}
  .muted,.acct-kicker{font-size:14px}
}
@media(prefers-reduced-motion:reduce){
  .acct-ring circle,.acct-meter span{transition:none}
}

/* R32 R11 Door Knocking Mapping MVP + R32 R13 field UX */
.door-workspace{width:100%;max-width:100%;min-width:0}
.door-workspace[data-active-view="list"] .door-map-pane{display:none}
.door-workspace[data-active-view="map"] .door-list-pane{display:none}
.door-scope-form{margin-bottom:12px}
.door-view-toggle{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}
.door-map-shell{display:flex;flex-direction:column;gap:12px;margin-top:12px;width:100%;max-width:100%;min-width:0}
.door-map-canvas{width:100%;max-width:100%;min-width:0;min-height:420px;height:55vh;border:1px solid var(--line);border-radius:12px;background:#d7e2ee}
.door-map-side{display:flex;flex-direction:column;gap:10px;min-width:0;width:100%;max-width:100%}
.door-route-list{display:flex;flex-direction:column;gap:6px;max-height:40vh;overflow:auto;width:100%;min-width:0}
.door-route-row{text-align:left;border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px 12px;min-height:44px;cursor:pointer}
.door-route-row.no-pin{font-style:italic;color:var(--muted)}
.door-route-row.is-selected,.door-card.is-selected{border-color:#137a48;box-shadow:0 0 0 2px #137a48;background:#f3fbf6}
.door-map-card{min-height:120px;width:100%;max-width:100%;min-width:0}
.door-map-card.is-selected{border-color:#137a48}
.door-marker-selected{filter:drop-shadow(0 0 4px #0b4d2c)}
.door-show-on-map{min-height:44px;margin-top:6px}
.route-list{list-style:none;padding:0;margin:0}
.route-list li{padding:8px 0;border-bottom:1px solid var(--line)}
.route-manager-grid{margin-top:12px}
@media(max-width:900px){
  .door-map-shell{grid-template-columns:1fr}
  .door-map-canvas{height:45vh;min-height:280px}
}
@media(max-width:390px){
  .door-map-canvas{height:38vh;min-height:220px}
  .door-view-toggle .btn,.door-actions .btn,.walk-btn{min-height:44px}
  .door-map-card .walk-buttons{display:flex;flex-wrap:wrap}
  body{overflow-x:hidden}
}
.route-generate-panel,.route-adjust-bar{margin-top:12px}
.route-adjust-actions,.route-preview-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.route-adjust-actions .btn,.route-preview-actions .btn{min-height:44px}
.route-preview-card{margin-top:8px}
.route-preview-map{height:180px;min-height:140px;border:1px solid var(--line);border-radius:8px;margin-top:8px}
.door-select{display:block;margin-bottom:6px}
@media(max-width:390px){
  .route-generate-panel input,.route-generate-panel select,.route-adjust-bar select{width:100%;min-height:44px;box-sizing:border-box}
  .route-preview-map{height:140px}
  .route-adjust-actions .btn,.route-preview-actions .btn{width:100%}
}
@media(max-width:320px){
  .door-map-canvas{height:34vh;min-height:200px}
  .door-filters{grid-template-columns:1fr}
  .door-actions{flex-direction:column}
  .door-actions .btn{width:100%}
  .route-generate-panel,.route-adjust-bar{font-size:16px}
  .route-preview-map{height:120px;min-height:100px}
}

.door-list-window{margin-top:8px;font-size:13px;color:var(--muted)}
.door-list-window a{color:#173f78;font-weight:700}
.door-cluster-hint{font-size:12px;color:var(--muted);margin:8px 0}





