/* =========================================================
   EMMENGEIBBE VOLUNTEER PORTAL
   CLEAN STRUCTURED MOBILE-FIRST STYLESHEET

   SECTIONS
   01. Design Tokens
   02. Reset / Base
   03. Layout Wrappers
   04. Typography
   05. Panels / Sections
   06. Buttons
   07. Forms
   08. Notices
   09. Utility Layout Helpers
   10. Dashboard
   11. Profile / Voter Tiles
   12. Assignments
   13. Chips / Member Buttons
   14. Tables
   15. Revisit / Generic Mobile Lists
   16. Mobile
   17. Tablet
   18. Desktop
========================================================= */

/* =========================================================
   01. DESIGN TOKENS
========================================================= */
:root{
    --egvp-bg: #f3f3f1;
    --egvp-surface: #ffffff;
    --egvp-surface-soft: #f8f8f8;

    --egvp-text: #111111;
    --egvp-text-soft: #555555;
    --egvp-text-faint: #767676;

    --egvp-border: #e5e5e0;
    --egvp-border-strong: #d7d7d2;

    --egvp-black: #090909;
    --egvp-white: #ffffff;

    --egvp-success-bg: #effaf1;
    --egvp-success-text: #166534;
    --egvp-success-border: #b7e3c0;

    --egvp-warning-bg: #fff9e8;
    --egvp-warning-text: #9a5a00;
    --egvp-warning-border: #f0d37a;

    --egvp-danger-bg: #fff1f1;
    --egvp-danger-text: #b91c1c;
    --egvp-danger-border: #f3c4c4;

    --egvp-shadow-xs: 0 1px 2px rgba(0,0,0,0.02);
    --egvp-shadow-sm: 0 4px 12px rgba(0,0,0,0.04);

    --egvp-radius-sm: 12px;
    --egvp-radius: 18px;
    --egvp-radius-lg: 26px;
    --egvp-radius-xl: 34px;
    --egvp-radius-pill: 999px;

    --egvp-maxw: 920px;
    --egvp-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, Helvetica, Arial, sans-serif;
}

/* =========================================================
   02. RESET / BASE
========================================================= */
*,
*::before,
*::after{
    box-sizing:border-box;
}

html{
    -webkit-text-size-adjust:100%;
    scroll-behavior:smooth;
}

html,
body{
    margin:0;
    padding:0;
    max-width:100%;
    overflow-x:hidden;
}

body{
    background:var(--egvp-bg);
    color:var(--egvp-text);
    font-family:var(--egvp-font);
    line-height:1.55;
}

img{
    display:block;
    max-width:100%;
    height:auto;
}

a{
    color:inherit;
    text-decoration:none;
}

button,
input,
select,
textarea{
    font:inherit;
}

table{
    width:100%;
    border-collapse:collapse;
}

/* =========================================================
   03. LAYOUT WRAPPERS
========================================================= */
.egvp-auth-wrap,
.egvp-page,
.egvp-portal-page,
.egvp-dashboard-screen,
.egvp-wide{
    width:100%;
    max-width:var(--egvp-maxw);
    margin:0 auto;
    padding:18px 14px 28px;
}

.egvp-page-header{
    margin:0 0 18px;
    text-align:center;
}

.egvp-dashboard-header,
.egvp-page-header.egvp-dashboard-header{
    text-align:left;
    margin-bottom:18px;
}

/* =========================================================
   04. TYPOGRAPHY
========================================================= */
.egvp-page-title{
    margin:0 0 8px;
    color:var(--egvp-text);
    font-size:clamp(2rem, 1.5rem + 2vw, 3rem);
    line-height:1.04;
    letter-spacing:-0.04em;
    font-weight:800;
}

.egvp-dashboard-title{
    margin:0 0 8px;
    color:var(--egvp-text);
    font-size:clamp(1.75rem, 1.3rem + 1.4vw, 2.5rem);
    line-height:1.08;
    letter-spacing:-0.035em;
    font-weight:800;
}

.egvp-page-subtitle,
.egvp-dashboard-subtitle{
    margin:0;
    color:var(--egvp-text-soft);
    font-size:clamp(1rem, 0.96rem + 0.3vw, 1.12rem);
    line-height:1.55;
}

/* =========================================================
   05. PANELS / SECTIONS
========================================================= */
.egvp-admin-panel,
.egvp-card,
.egvp-panel,
.egvp-section,
.egvp-profile-card,
.egvp-history-card,
.egvp-queue-card,
.egvp-search-panel,
.egvp-results-panel{
    background:transparent;
    border:none;
    box-shadow:none;
    border-radius:0;
    padding:0;
    margin:0 0 22px;
}

.egvp-admin-panel h2,
.egvp-card h2,
.egvp-panel h2,
.egvp-section h2,
.egvp-profile-card h2{
    margin:0 0 14px;
    font-size:clamp(1.4rem, 1.1rem + 0.9vw, 2rem);
    line-height:1.12;
    letter-spacing:-0.03em;
    font-weight:800;
    color:var(--egvp-text);
}

.egvp-admin-panel h3,
.egvp-card h3,
.egvp-panel h3,
.egvp-section h3,
.egvp-profile-card h3{
    margin:0 0 10px;
    font-size:1.06rem;
    line-height:1.25;
    font-weight:750;
    color:var(--egvp-text);
}

/* =========================================================
   06. BUTTONS
========================================================= */
.egvp-btn,
button,
input[type="submit"],
input[type="button"],
input[type="reset"]{
    appearance:none;
    border:1.5px solid var(--egvp-black);
    background:var(--egvp-black);
    color:var(--egvp-white);
    border-radius:var(--egvp-radius-pill);
    min-height:54px;
    padding:13px 20px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    text-align:center;
    font-weight:750;
    font-size:1rem;
    line-height:1.2;
    cursor:pointer;
    transition:all .18s ease;
    box-shadow:none;
}

.egvp-btn:hover,
button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,
input[type="reset"]:hover{
    background:var(--egvp-white);
    color:var(--egvp-black);
}

.egvp-btn-outline,
.egvp-btn-secondary{
    background:transparent;
    color:var(--egvp-black);
}

.egvp-btn-outline:hover,
.egvp-btn-secondary:hover{
    background:var(--egvp-black);
    color:var(--egvp-white);
}

.egvp-btn-block,
.egvp-w-full{
    width:100%;
}

.egvp-btn-logout{
    background:transparent;
    color:var(--egvp-black);
}

.egvp-btn-logout:hover{
    background:var(--egvp-black);
    color:var(--egvp-white);
}

.egvp-btn:focus,
button:focus,
input:focus,
select:focus,
textarea:focus{
    outline:none;
    box-shadow:0 0 0 3px rgba(17,17,17,0.08);
}

/* =========================================================
   07. FORMS
========================================================= */
label{
    display:block;
    margin:0 0 8px;
    color:var(--egvp-text);
    font-weight:700;
    font-size:0.98rem;
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
input[type="date"],
input[type="password"],
input[type="search"],
select,
textarea{
    width:100%;
    max-width:100%;
    min-height:56px;
    border:1.5px solid var(--egvp-border-strong);
    background:#fcfcfb;
    color:var(--egvp-text);
    border-radius:16px;
    padding:13px 16px;
    transition:border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

textarea{
    min-height:118px;
    resize:vertical;
}

input::placeholder,
textarea::placeholder{
    color:#8a8a8a;
}

input:focus,
select:focus,
textarea:focus{
    border-color:#afafaa;
    background:#ffffff;
}

.egvp-form-stack{
    display:grid;
    gap:14px;
}

.egvp-field{
    display:block;
}

.egvp-button-row{
    display:flex;
    flex-wrap:wrap;
    gap:12px;
}

/* =========================================================
   08. NOTICES
========================================================= */
.egvp-notice,
.egvp-success,
.egvp-error{
    border-radius:20px;
    padding:14px 16px;
    margin:0 0 18px;
    border:1px solid var(--egvp-border);
    background:var(--egvp-surface);
}

.egvp-notice-success,
.egvp-success{
    background:var(--egvp-success-bg);
    color:var(--egvp-success-text);
    border-color:var(--egvp-success-border);
}

.egvp-notice-warning{
    background:var(--egvp-warning-bg);
    color:var(--egvp-warning-text);
    border-color:var(--egvp-warning-border);
}

.egvp-notice-danger,
.egvp-error{
    background:var(--egvp-danger-bg);
    color:var(--egvp-danger-text);
    border-color:var(--egvp-danger-border);
}

.egvp-muted{
    color:var(--egvp-text-faint);
}

/* =========================================================
   09. UTILITY LAYOUT HELPERS
========================================================= */
.egvp-grid-2,
.egvp-grid-3,
.egvp-grid-4,
.egvp-filter-grid,
.egvp-summary-grid{
    display:grid;
    gap:14px;
}

.egvp-chip-row,
.egvp-confirm-bar,
.egvp-actions{
    display:flex;
    flex-wrap:wrap;
    gap:12px;
}

.egvp-assignment-list,
.egvp-results-list,
.egvp-search-results{
    display:grid;
    gap:18px;
}

/* =========================================================
   10. DASHBOARD
========================================================= */
.egvp-dashboard-stats,
.egvp-summary-grid{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:14px;
    margin:0 0 22px;
}

.egvp-stat-card,
.egvp-dashboard-stat-card{
    background:rgba(255,255,255,0.85);
    border:1px solid var(--egvp-border);
    border-radius:28px;
    padding:16px;
    min-height:108px;
    box-shadow:var(--egvp-shadow-xs);
    display:flex;
    flex-direction:column;
    justify-content:center;
}

.egvp-stat-value,
.egvp-dashboard-stat-number{
    display:block;
    margin:0 0 6px;
    color:var(--egvp-text);
    font-size:clamp(2rem, 1.7rem + 1vw, 2.4rem);
    line-height:1;
    font-weight:850;
    letter-spacing:-0.04em;
}

.egvp-stat-label,
.egvp-stat-meta,
.egvp-dashboard-stat-label{
    color:var(--egvp-text-soft);
    font-size:1rem;
    line-height:1.35;
    font-weight:700;
}

.egvp-dashboard-actions{
    display:grid;
    gap:14px;
    margin-top:8px;
}

/* =========================================================
   11. PROFILE / VOTER TILES
========================================================= */
.egvp-profile-card{
    padding-top:0;
}

.egvp-profile-head,
.egvp-profile-top,
.egvp-voter-tile{
    display:grid;
    grid-template-columns:90px minmax(0, 1fr);
    gap:16px;
    align-items:start;
}

.egvp-voter-photo,
.egvp-profile-photo,
.egvp-photo-placeholder{
    width:90px;
    height:90px;
    border-radius:20px;
    overflow:hidden;
    border:1px solid var(--egvp-border);
    background:#f0f0ee;
}

.egvp-voter-photo-placeholder{
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:800;
    color:var(--egvp-text-soft);
}

.egvp-profile-meta p{
    margin:0 0 8px;
    color:var(--egvp-text-soft);
    font-size:1rem;
}

.egvp-profile-meta strong{
    color:#444;
}

.egvp-voter-main h3{
    margin:0 0 10px;
    font-size:1.1rem;
    line-height:1.2;
    font-weight:800;
}

.egvp-voter-meta{
    display:grid;
    gap:6px;
    color:var(--egvp-text-soft);
    font-size:0.96rem;
    line-height:1.4;
}

/* =========================================================
   12. ASSIGNMENTS
========================================================= */

/* Assignment list page cards */
.egvp-assignment-card-list{
    display:flex;
    flex-direction:column;
    gap:8px;
    width:100%;
    margin-top:16px;
}

.egvp-assignment-card{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    width:100%;
    margin:0;
    padding:14px 18px;
    background:#f8f8f8;
    border:1px solid #d9d9d9;
    border-radius:0;
    box-shadow:none;
}

.egvp-assignment-card-main{
    flex:1 1 auto;
    min-width:0;
}

.egvp-assignment-card-name{
    margin:0 0 8px;
    color:#2b2527;
    font-size:1.15rem;
    line-height:1.1;
    font-weight:800;
    letter-spacing:-0.02em;
    word-break:break-word;
}

.egvp-assignment-card-meta{
    display:flex;
    flex-wrap:wrap;
    gap:10px 26px;
    align-items:center;
    color:#4c4547;
    font-size:0.98rem;
    line-height:1.3;
}

.egvp-assignment-card-id,
.egvp-assignment-card-address{
    display:inline-block;
    word-break:break-word;
}

.egvp-assignment-card-action{
    flex:0 0 104px;
    width:104px;
    min-width:104px;
    display:flex;
    justify-content:flex-end;
    align-items:center;
}

/* Dedicated rectangular assignment button */
.egvp-assignment-open-btn{
    display:flex;
    align-items:center;
    justify-content:center;
    width:104px;
    min-width:104px;
    max-width:104px;
    height:76px;
    min-height:76px;
    padding:10px 8px;
    background:#2a2427;
    color:#ffffff;
    border:1px solid #2a2427;
    border-radius:0;
    text-decoration:none;
    text-align:center;
    font-size:0.98rem;
    font-weight:700;
    line-height:1;
    white-space:nowrap;
    box-shadow:none;
}

.egvp-assignment-open-btn:hover,
.egvp-assignment-open-btn:focus{
    background:#2a2427;
    color:#ffffff;
    border-color:#2a2427;
}

/* Open assignment detail card */
.egvp-assignment-open-card{
    display:grid;
    gap:18px;
}

.egvp-desktop-table{
    display:none !important;
}

/* =========================================================
   13. CHIPS / MEMBER BUTTONS
========================================================= */
.egvp-chip{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
    padding:8px 13px;
    border-radius:999px;
    border:1px solid var(--egvp-border-strong);
    background:#f7f7f5;
    color:#444;
    font-size:0.92rem;
    font-weight:650;
}

.egvp-member-btn,
.egvp-house-btn,
.egvp-person-btn{
    appearance:none;
    border:1.5px solid var(--egvp-black);
    background:transparent;
    color:var(--egvp-black);
    border-radius:999px;
    min-height:50px;
    padding:12px 18px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-weight:750;
    transition:all .18s ease;
}

.egvp-member-btn:hover,
.egvp-house-btn:hover,
.egvp-person-btn:hover{
    background:var(--egvp-black);
    color:var(--egvp-white);
}

/* =========================================================
   14. TABLES
========================================================= */
.egvp-table-wrap{
    width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
}

.widefat,
table.widefat,
.egvp-table{
    width:100%;
    min-width:720px;
    background:var(--egvp-surface);
    border:1px solid var(--egvp-border);
    border-radius:18px;
    overflow:hidden;
}

.widefat th,
.widefat td,
.egvp-table th,
.egvp-table td{
    padding:12px 14px;
    border-bottom:1px solid var(--egvp-border);
    text-align:left;
    vertical-align:top;
}

.widefat thead th,
.egvp-table thead th{
    background:#f7f7f5;
    color:var(--egvp-text);
    font-weight:800;
}

.widefat tbody tr:last-child td,
.egvp-table tbody tr:last-child td{
    border-bottom:none;
}

/* =========================================================
   15. REVISIT / GENERIC MOBILE LISTS
========================================================= */
.egvp-assignment-mobile-list{
    display:flex;
    flex-direction:column;
    gap:12px;
    margin-top:14px;
}

.egvp-assignment-chip{
    display:block;
    width:100%;
    padding:13px 14px;
    border:1px solid var(--egvp-border);
    background:#f7f7f5;
    color:var(--egvp-text);
    border-radius:14px;
}

.egvp-assignment-chip-name{
    display:block;
    margin:0 0 4px;
    font-size:1rem;
    font-weight:750;
    line-height:1.3;
}

.egvp-assignment-chip-meta{
    display:block;
    color:var(--egvp-text-soft);
    font-size:0.94rem;
    line-height:1.45;
}

/* =========================================================
   16. MOBILE
========================================================= */
@media (max-width: 639px){

    .egvp-auth-wrap,
    .egvp-page,
    .egvp-portal-page,
    .egvp-dashboard-screen,
    .egvp-wide{
        padding:12px 10px 24px;
        max-width:100%;
    }

    .egvp-page-title{
        font-size:clamp(1.8rem, 7vw, 2.6rem);
    }

    .egvp-dashboard-title{
        font-size:clamp(1.7rem, 6vw, 2.3rem);
    }

    .egvp-dashboard-stats,
    .egvp-summary-grid{
        grid-template-columns:repeat(2, minmax(0, 1fr));
        gap:12px;
    }

    .egvp-stat-card,
    .egvp-dashboard-stat-card{
        min-height:96px;
        padding:14px;
        border-radius:24px;
    }

    .egvp-stat-value,
    .egvp-dashboard-stat-number{
        font-size:2rem;
    }

    .egvp-stat-label,
    .egvp-stat-meta,
    .egvp-dashboard-stat-label{
        font-size:0.95rem;
    }

    .egvp-profile-head,
    .egvp-profile-top,
    .egvp-voter-tile{
        grid-template-columns:78px minmax(0, 1fr);
        gap:14px;
    }

    .egvp-voter-photo,
    .egvp-profile-photo,
    .egvp-photo-placeholder{
        width:78px;
        height:78px;
        border-radius:18px;
    }

    .egvp-actions,
    .egvp-confirm-bar,
    .egvp-button-row{
        flex-direction:column;
    }

    .egvp-actions .egvp-btn,
    .egvp-confirm-bar .egvp-btn,
    .egvp-dashboard-actions .egvp-btn,
    .egvp-button-row .egvp-btn,
    .egvp-btn,
    button,
    input[type="submit"],
    input[type="button"],
    input[type="reset"]{
        width:100%;
    }

    .egvp-assignment-card{
        gap:12px;
        padding:12px 12px;
    }

    .egvp-assignment-card-name{
        font-size:1.05rem;
        margin-bottom:6px;
    }

    .egvp-assignment-card-meta{
        gap:8px 18px;
        font-size:0.93rem;
    }

    .egvp-assignment-card-action{
        flex:0 0 84px;
        width:84px;
        min-width:84px;
    }

    .egvp-assignment-open-btn{
        width:84px;
        min-width:84px;
        max-width:84px;
        height:62px;
        min-height:62px;
        font-size:0.92rem;
    }
}

/* =========================================================
   17. TABLET
========================================================= */
@media (min-width: 640px){
    .egvp-grid-2,
    .egvp-filter-grid{
        grid-template-columns:repeat(2, minmax(0, 1fr));
    }
}

/* =========================================================
   18. DESKTOP
========================================================= */
@media (min-width: 900px){
    .egvp-auth-wrap,
    .egvp-page,
    .egvp-portal-page,
    .egvp-dashboard-screen,
    .egvp-wide{
        max-width:980px;
        padding:24px 18px 34px;
    }

    .egvp-dashboard-stats,
    .egvp-summary-grid{
        grid-template-columns:repeat(3, minmax(0, 1fr));
    }

    .egvp-grid-3{
        grid-template-columns:repeat(3, minmax(0, 1fr));
    }

    .egvp-grid-4{
        grid-template-columns:repeat(4, minmax(0, 1fr));
    }
}
/* =========================================================
   DOOR-TO-DOOR UI
   same visual language as assignments
   CSS ONLY - no shortcode / logic / flow changes
========================================================= */

/* ---------------------------------
   D2D SEARCH + SECTION SPACING
--------------------------------- */
.egvp-filter-form,
.egvp-admin-panel form{
    width:100%;
}

.egvp-filter-form .egvp-filter-grid{
    gap:14px;
}

.egvp-filter-form .egvp-confirm-bar{
    margin-top:14px;
}

/* ---------------------------------
   D2D HOUSE / VOTER / MEMBER LISTS
   flat rectangular cards
--------------------------------- */
.egvp-house-buttons,
.egvp-voter-buttons,
.egvp-member-buttons{
    display:flex;
    flex-direction:column;
    gap:8px;
    width:100%;
    margin-top:14px;
}

.egvp-house-btn,
.egvp-member-btn{
    appearance:none;
    display:flex;
    align-items:center;
    justify-content:flex-start;
    width:100%;
    min-height:42px;
    padding:14px 16px;
    border:1px solid #d9d9d9;
    background:#f8f8f8;
    color:#2b2527;
    border-radius:0;
    box-shadow:none;
    font-size:1rem;
    line-height:1.3;
    font-weight:700;
    text-align:left;
    white-space:normal;
    transition:background .18s ease, border-color .18s ease, color .18s ease;
}

.egvp-house-btn:hover,
.egvp-member-btn:hover,
.egvp-house-btn:focus,
.egvp-member-btn:focus{
    background:#f8f8f8;
    color:#2b2527;
    border-color:#cfcfca;
}

.egvp-house-btn-active,
.egvp-member-btn-active{
    border-color:#2a2427;
    background:#f2f2f0;
    color:#2b2527;
}

/* ---------------------------------
   SELECTED HOUSE SUMMARY
--------------------------------- */
.egvp-household-summary{
    margin:0 0 12px;
    color:var(--egvp-text-soft);
    font-size:0.98rem;
    line-height:1.45;
}

/* ---------------------------------
   PROFILE CARD / VOTER HEADER
--------------------------------- */
.egvp-profile-card{
    margin-top:18px;
}

.egvp-profile-head{
    display:grid;
    grid-template-columns:96px minmax(0, 1fr);
    gap:16px;
    align-items:start;
    padding:0;
}

.egvp-profile-photo{
    width:96px;
    height:96px;
    border:1px solid var(--egvp-border);
    border-radius:18px;
    overflow:hidden;
    background:#f0f0ee;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--egvp-text-faint);
    font-size:0.88rem;
    text-align:center;
}

.egvp-profile-photo img{
    width:100%;
    height:100%;
    object-fit:cover;
}

.egvp-profile-meta h2{
    margin:0 0 10px;
    font-size:1.5rem;
    line-height:1.1;
    font-weight:800;
    letter-spacing:-0.02em;
}

.egvp-profile-meta p{
    margin:0 0 6px;
    color:var(--egvp-text-soft);
    font-size:0.96rem;
    line-height:1.45;
}

/* ---------------------------------
   INFO PILLS
--------------------------------- */
.egvp-info-strip{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:10px;
    margin-top:16px;
}

.egvp-info-pill{
    padding:12px 14px;
    background:#fafaf8;
    border:1px solid var(--egvp-border);
    border-radius:14px;
}

.egvp-info-pill-label{
    display:block;
    margin:0 0 4px;
    color:var(--egvp-text-faint);
    font-size:0.84rem;
    line-height:1.2;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.02em;
}

.egvp-info-pill-value{
    display:block;
    color:var(--egvp-text);
    font-size:0.96rem;
    line-height:1.35;
    font-weight:700;
}

/* ---------------------------------
   LATEST VISIT NOTE
--------------------------------- */
.egvp-last-visit-card{
    margin-top:16px;
    padding:14px;
    background:#fafaf8;
    border:1px solid var(--egvp-border);
    border-radius:16px;
}

.egvp-last-visit-card h4{
    margin:0 0 10px;
    font-size:1rem;
    line-height:1.25;
    font-weight:800;
}

.egvp-last-visit-note textarea{
    background:#ffffff;
}

/* ---------------------------------
   TABS
--------------------------------- */
.egvp-tabs{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:18px;
    margin-bottom:14px;
}

.egvp-tab{
    appearance:none;
    border:1px solid var(--egvp-border-strong);
    background:#f7f7f5;
    color:var(--egvp-text);
    border-radius:999px;
    min-height:42px;
    padding:10px 16px;
    font-size:0.94rem;
    line-height:1.2;
    font-weight:700;
    cursor:pointer;
}

.egvp-tab.is-active{
    background:var(--egvp-black);
    color:var(--egvp-white);
    border-color:var(--egvp-black);
}

.egvp-tab-panel{
    display:none;
    margin-top:6px;
}

.egvp-tab-panel.is-active{
    display:block;
}

/* ---------------------------------
   CANDIDATE CARDS
--------------------------------- */
.egvp-candidate-list{
    display:flex;
    flex-direction:column;
    gap:12px;
}

.egvp-candidate-card{
    padding:14px;
    background:#f8f8f8;
    border:1px solid #d9d9d9;
    border-radius:0;
    box-shadow:none;
}

.egvp-candidate-head{
    display:grid;
    grid-template-columns:72px minmax(0, 1fr);
    gap:14px;
    align-items:start;
    margin-bottom:14px;
}

.egvp-candidate-photo{
    width:72px;
    height:72px;
    border:1px solid var(--egvp-border);
    border-radius:14px;
    overflow:hidden;
    background:#f0f0ee;
    display:flex;
    align-items:center;
    justify-content:center;
    color:var(--egvp-text-faint);
    font-size:0.78rem;
    text-align:center;
}

.egvp-candidate-photo img{
    width:100%;
    height:100%;
    object-fit:cover;
}

.egvp-candidate-color{
    display:inline-block;
    width:10px;
    height:10px;
    border-radius:999px;
    margin-right:6px;
    vertical-align:middle;
}

/* ---------------------------------
   D2D TABLE AREAS
--------------------------------- */
.egvp-admin-panel .egvp-table-wrap{
    margin-top:10px;
}

/* ---------------------------------
   MOBILE
--------------------------------- */
@media (max-width: 639px){

    .egvp-house-btn,
    .egvp-member-btn{
        min-height:64px;
        padding:12px 12px;
        font-size:0.96rem;
    }

    .egvp-profile-head{
        grid-template-columns:78px minmax(0, 1fr);
        gap:14px;
    }

    .egvp-profile-photo{
        width:78px;
        height:78px;
        border-radius:16px;
    }

    .egvp-profile-meta h2{
        font-size:1.22rem;
    }

    .egvp-info-strip{
        grid-template-columns:1fr;
    }

    .egvp-tabs{
        gap:6px;
    }

    .egvp-tab{
        width:auto;
        min-height:40px;
        padding:9px 14px;
        font-size:0.9rem;
    }

    .egvp-candidate-card{
        padding:12px;
    }

    .egvp-candidate-head{
        grid-template-columns:64px minmax(0, 1fr);
        gap:12px;
    }

    .egvp-candidate-photo{
        width:64px;
        height:64px;
        border-radius:12px;
    }
}
/* =========================================================
   OTP COUNTDOWN / PROGRESS BAR
========================================================= */

.egvp-otp-timer-card{
    margin:0 0 18px;
    padding:14px 16px;
    background:#f8f8f8;
    border:1px solid #d9d9d9;
    border-radius:16px;
}

.egvp-otp-timer-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-bottom:10px;
}

.egvp-otp-timer-label{
    color:var(--egvp-text-soft);
    font-size:0.95rem;
    line-height:1.2;
    font-weight:700;
}

.egvp-otp-timer-value{
    color:var(--egvp-text);
    font-size:1.1rem;
    line-height:1;
    font-weight:800;
    letter-spacing:-0.02em;
}

.egvp-otp-progress{
    width:100%;
    height:10px;
    background:#e7e7e4;
    border-radius:999px;
    overflow:hidden;
}

.egvp-otp-progress-bar{
    width:100%;
    height:100%;
    background:#111111;
    border-radius:999px;
    transition:width 1s linear;
}

.egvp-otp-progress-bar.is-ending{
    background:#b91c1c;
}

@media (max-width: 639px){
    .egvp-otp-timer-card{
        padding:12px;
    }

    .egvp-otp-timer-value{
        font-size:1rem;
    }
}


