:root{--background:#ffffff;--foreground:#4c4d4f;--accent:#fcaf17;--accent-dark:#c96d00;--accent-tint:#fff3de;--charcoal:#4c4d4f;--charcoal-muted:#7a7b7d;--surface:#ffffff;--surface-muted:#f7f6f3;--border:#e7e5e0;--bg:var(--surface-muted);--card:var(--surface);--ink:var(--charcoal);--muted:var(--charcoal-muted);--line:var(--border);--soft:var(--accent-tint);--green:var(--accent);--green-dark:var(--accent-dark);--brand-50:#fffaf0;--brand-100:#fff2d5;--brand-200:#ffe3a3;--brand-300:#ffd16b;--brand-400:#ffbf35;--brand-500:#fcaf17;--brand-600:#e99000;--brand-700:#c96d00;--brand-800:#9f5000;--brand-900:#713700;--ivory:#ffffff;--ivory-soft:#f7f6f3;--primary:var(--accent);--primary-dark:var(--accent-dark);--primary-tint:var(--accent-tint);--secondary:#2563c9;--secondary-dark:#1d4fa3;--secondary-tint:#e7f0ff;--success-tint:#e3f6ea;--success-dark:#1f9d55;--info-tint:#e7f0ff;--info-dark:#2563c9;--violet-tint:#f2ecff;--violet-dark:#7c3aed;--danger:#b42318;--danger-dark:#8f1b12;--danger-tint:#fdecec;--gold-tint:var(--brand-100);--gold-dark:var(--brand-700);--chart-1:#e99000;--chart-2:#f3a100;--chart-3:#fcaf17;--chart-4:#ffc43d;--chart-5:#ffd56c;--chart-6:#ffe39a;--chart-7:#ffedbf;--radius:14px}*{box-sizing:border-box}body,html{min-height:100%}body{margin:0;background:var(--surface-muted);color:var(--charcoal);font-family:Segoe UI,Inter,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}::selection{background:var(--accent-tint);color:var(--charcoal)}a{color:inherit;text-decoration:none}h1{margin:0 0 4px;font-size:22px}h3{margin:0 0 14px;font-size:15px;font-weight:700}input,select{padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#ffffff;font-family:inherit;max-width:100%}table{width:100%;border-collapse:collapse}td,th{padding:13px 16px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{background:var(--ivory-soft);color:#6e6252}.muted,.summary-muted{color:var(--muted);font-size:13px}.summary-muted{margin-top:2px}.badge{display:inline-block;padding:5px 6px;border-radius:999px;background:var(--brand-100);color:var(--brand-800);font-size:12px;font-weight:700}.row{cursor:pointer}.row:hover{background:var(--ivory-soft)}.skeleton{height:18px;border-radius:8px;background:#ece9e3;background-size:200% 100%;animation:pulse 1.2s infinite}@keyframes pulse{to{background-position:-200% 0}}button{padding:11px 16px;border:1px solid transparent;border-radius:10px;background:var(--accent);color:#ffffff;font-family:inherit;font-weight:700;font-size:14px;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .15s ease,opacity .15s ease}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(252,175,23,.28);outline-offset:2px}input:focus,select:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(252,175,23,.16);outline:none}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.layout,.main{background:var(--surface-muted)}.main{padding:30px 36px;min-width:0}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.sidebar{position:-webkit-sticky;position:sticky;top:0;display:flex;flex-direction:column;height:100vh;padding:26px 20px;background:#ffffff;color:var(--charcoal-muted);border-right:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;margin-top:4px;margin-bottom:25px;padding:0 14px 0 10px}.brand-logo{width:45px;height:auto;object-fit:contain}.brand-title{font-size:22px;margin-right:10px;font-weight:900;line-height:1;color:var(--charcoal);white-space:nowrap}.nav{flex:1 1;overflow-y:auto}.nav a{display:flex;align-items:center;gap:11px;margin:5px 0;padding:11px 13px;border-radius:10px;color:#5f5f64;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s ease,color .15s ease}.nav a svg{color:#8a867e;transition:color .15s ease}.nav a.active,.nav a:hover,.nav a[aria-current=page]{background:var(--brand-50);color:var(--charcoal)}.nav a.active svg,.nav a:hover svg,.nav a[aria-current=page] svg{color:var(--accent-dark)}.nav-collapse{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows .25s ease,visibility 0s linear .25s}.is-open>.nav-collapse{grid-template-rows:1fr;visibility:visible;transition:grid-template-rows .25s ease,visibility 0s linear 0s}.nav-submenu{position:relative;min-height:0;overflow:hidden}.nav-submenu:before{content:"";position:absolute;top:6px;bottom:6px;left:21px;width:1px;background:#ddd9d1}@media (prefers-reduced-motion:reduce){.nav-collapse,.nav-group-chevron,.nav-group-title{transition:none}}.nav .nav-subitem{position:relative;margin-left:8px;padding-left:31px;color:#747477;font-size:13px}.nav .nav-subitem svg{color:#9a968f}.nav .nav-subitem:hover{background:var(--brand-50);color:var(--charcoal)}.sidebar-footer{display:flex;flex-direction:column;gap:12px;padding-top:2px;margin-top:8px;border-top:1px solid var(--border)}.user-profile{display:flex;align-items:center;margin-top:14px;gap:10px;min-width:0}.user-profile-avatar{flex-shrink:0;width:38px;height:38px;border-radius:50%;object-fit:cover}.user-profile-avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--accent-tint);color:var(--accent-dark);font-size:13px;font-weight:700}.user-profile-meta{min-width:0}.user-profile-email,.user-profile-name{margin-top:1px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.user-profile-name{margin-bottom:1px;color:var(--charcoal);font-size:13px;font-weight:700}.user-profile-email{color:var(--charcoal-muted);font-size:11px}.logout-btn{width:100%;margin-top:10px;padding:9px 12px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--danger);font-size:13px;font-weight:600;box-shadow:none}.logout-btn:hover{border-color:var(--danger-dark);background:var(--danger-tint);color:var(--danger)}.cards{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px}.card,.chart-card,.retention-chart-card,.summary-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:16px;background:rgba(255,255,255,.98);box-shadow:0 8px 24px rgba(49,45,38,.06);transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}.card{padding:18px 20px 30px}.summary-card{padding:18px 20px 23px}.chart-card{padding:22px 24px 30px}.card:hover{border-color:var(--brand-200)}.card:hover,.chart-card:hover{box-shadow:0 10px 26px rgba(49,45,38,.08);transform:translateY(-2px)}.chart-card:hover{border-color:var(--accent-dark)}.chart-card h3{font-size:18px;font-weight:600;margin-bottom:18px}.retention-chart-card{padding:25px 22px 30px}.retention-chart-card:hover{border-color:var(--accent-dark);box-shadow:0 10px 26px rgba(49,45,38,.08);transform:translateY(-2px)}.retention-chart-card h3{font-size:17px;font-weight:600;margin-bottom:18px}.card-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-header .muted{margin:0;font-weight:400}.stat-icon{flex-shrink:0;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px}.stat-icon svg{width:25px;height:25px}.kpi{margin-top:8px;font-size:24px;font-weight:800;letter-spacing:-.3px}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-top:16px}.chart{height:320px}.chart,.retention-chart{--chart-primary:var(--brand-500);--chart-secondary:var(--brand-600);--chart-grid:#eee5d6;--chart-axis:#8a7e6d;--chart-tooltip-bg:#fffdf5;--chart-tooltip-border:#f2dfb6}.retention-chart{margin-left:8px;margin-right:8px}.chart text{fill:#776b5c}.recharts-cartesian-grid line{stroke:var(--chart-grid)}.recharts-cartesian-axis-line,.recharts-xAxis line,.recharts-yAxis line{stroke:#dfd4c3}.recharts-default-tooltip{border:1px solid var(--chart-tooltip-border)!important;border-radius:10px!important;background:var(--chart-tooltip-bg)!important;box-shadow:0 8px 22px rgba(121,82,13,.12)!important}.recharts-legend-item-text{color:#776b5c!important}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.date-filter-trigger.is-loading{opacity:.8;cursor:progress}.date-filter-spinner{animation:filter-spin .8s linear infinite}@keyframes filter-spin{to{transform:rotate(1turn)}}.filter-loading-wrap{position:relative}.filter-loading-content{transition:opacity .15s ease}.filter-loading-wrap.is-loading .filter-loading-content{opacity:.45;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filter-loading-overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;gap:10px;font-size:18px;font-weight:600;color:var(--charcoal)}.filter-loading-spinner{width:32px;height:32px;border:3px solid var(--brand-100);border-top-color:var(--brand-600);border-radius:50%;animation:filter-spin .8s linear infinite}.table-card{margin-top:10px;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:#ffffff;box-shadow:0 1px 2px rgba(16,39,31,.04)}.filters{display:flex;flex-wrap:wrap;gap:10px;padding:16px;border-bottom:1px solid var(--border)}.donor-page{overflow:hidden;width:100%;min-width:0;max-width:100%}.sort-icon{cursor:pointer}.donor-filter-bar,.donor-filter-column{display:grid;grid-template-columns:minmax(280px,1.8fr) repeat(3,minmax(170px,1fr)) auto;align-items:start;grid-gap:15px;gap:15px;width:100%}.donor-filter-bar{margin-bottom:18px}.donor-filter-column{justify-content:end;margin-top:15px}.donor-filter-bar input,.donor-filter-bar select{width:100%;min-height:44px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:#ffffff;font-size:14px;outline:none}.donor-filter-bar input:focus,.donor-filter-bar select:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(252,175,23,.16)}.filter-search{position:relative;min-width:0}.filter-search label{font-size:.8rem;margin-bottom:2px}.btn-download,.btn-sync,.filter-search-field,.multi-select-trigger{box-sizing:border-box;height:46px;min-height:46px;border-radius:10px}.filter-search-field{position:relative;display:flex;align-items:center;width:100%;background:#ffffff;border:1px solid var(--border);transition:border-color .2s ease,box-shadow .2s ease}.filter-search-field:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(252,175,23,.16)}.filter-search-icon{position:absolute;left:13px;color:#9ca3af;pointer-events:none}.filter-search input{width:100%;height:100%;padding:0 14px 0 40px;border:none;outline:none;background:transparent;color:#111827;font-size:14px}.filter-search input::placeholder{color:#9ca3af}.filter-hint{position:absolute;top:calc(100% + 4px);margin-top:1.5px;margin-bottom:2px;left:2px;color:#9ca3af;font-size:11px;white-space:nowrap}.multi-select{position:relative;width:100%;min-width:0}.multi-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:0 13px;border:1px solid var(--border);background:#ffffff;color:#374151;font-family:inherit;font-size:14px;font-weight:500;text-align:left;cursor:pointer}.multi-select-trigger:hover{border-color:#d1d5db}.multi-select-trigger.is-open{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(252,175,23,.16)}.multi-select-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-select-trigger svg{flex-shrink:0;color:#6b7280;transition:transform .2s ease}.multi-select-placeholder{color:#6b7280;font-weight:400}.multi-select-dropdown{position:absolute;z-index:50;top:calc(100% + 7px);left:0;right:auto;width:max-content;min-width:220px;max-width:min(320px,calc(100vw - 24px));padding:6px;border:1px solid var(--ivory-soft);border-radius:12px;background:#ffffff;overflow:hidden}.multi-select-dropdown.align-right{left:auto;right:0}.column-selector-wrap{display:flex;justify-content:flex-end;width:100%;margin-top:6px}.column-selector-wrap .multi-select{min-height:auto;width:-moz-fit-content;width:fit-content}.column-selector-wrap .multi-select-trigger{width:auto;min-width:160px;white-space:nowrap;gap:8px}.column-selector-wrap .multi-select-dropdown{width:220px;max-width:220px;max-height:320px;overflow-y:auto}.column-selector-wrap .multi-select-options{max-height:240px;overflow-y:auto}.multi-select-options{max-height:230px;overflow-y:auto;padding-right:2px}.multi-select-option{display:flex;align-items:center;gap:9px;min-height:38px;padding:7px 8px;border-radius:7px;color:#374151;font-size:13px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .15s ease}.multi-select-option:hover{background:var(--brand-50)}.multi-select-option.selected{color:var(--brand-900);font-weight:600}.filter-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:1.5px solid #d1d5db;border-radius:5px;background:#ffffff;color:#ffffff;transition:background-color .15s ease,border-color .15s ease}.multi-select-option.selected .filter-checkbox{border-color:var(--brand-500);background:var(--brand-500)}.multi-select-divider{height:1px;margin:5px 4px;background:#f3f4f6}.multi-select-footer{display:flex;justify-content:flex-end;margin-top:5px;padding:7px 5px 2px;border-top:1px solid #f3f4f6}.multi-select-footer button{padding:4px 6px;border:none;background:transparent;color:var(--brand-700);box-shadow:none;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.multi-select-footer button:hover{background:var(--brand-50);color:var(--brand-900)}.donor-table td,.donor-table th{padding:12px 14px;border-bottom:1px solid #eeeeee;text-align:left;white-space:nowrap}.donor-table td{font-size:12px}.donor-table th{color:#6b7280;font-size:14px;font-weight:600}.donor-row{cursor:pointer;transition:background .15s ease}.donor-row:hover{background:var(--brand-50)}.donor-table{width:100%;min-width:900px;border-collapse:collapse}.donor-table thead th{padding:18px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#f9fafb;color:#6b7280}.data-table td,.data-table th{padding:12px 14px;border-bottom:1px solid #eeeeee;text-align:left;white-space:nowrap}.data-table td{font-size:12px}.data-table th{color:#6b7280;font-size:14px;font-weight:600}.data-row{cursor:pointer;transition:background .15s ease}.data-row:hover{background:var(--brand-50)}.empty-table{padding:40px;color:#6b7280;text-align:center}.table-scroll{max-width:100%;min-width:0;max-height:70vh;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.table-scroll,.table-scroll table{width:100%;border-collapse:collapse}.table-scroll table{min-width:max-content}.data-table{width:100%;min-width:900px;border-collapse:collapse}.data-table thead th{padding:18px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:1;background:#f9fafb;color:#6b7280}.segment-badge{display:inline-flex;justify-content:center;align-items:center;min-height:26px;min-width:105px;padding:4px 6px;border-radius:999px;background:#f3f4f6;color:#374151;font-size:12px;font-weight:600;white-space:nowrap}.segment-badge[data-segment=Champion]{background:var(--info-tint);color:var(--info-dark)}.segment-badge[data-segment=Active]{background:var(--success-tint);color:var(--success-dark)}.segment-badge[data-segment=Potential]{background:var(--violet-tint);color:var(--violet-dark)}.segment-badge[data-segment="New Donor"]{background:var(--brand-100);color:var(--brand-700)}.segment-badge[data-segment=Passive]{background:var(--danger-tint);color:var(--danger)}.segment-badge[data-blast=delivered],.segment-badge[data-valid=valid]{background:var(--success-tint);color:var(--success-dark)}.segment-badge[data-blast=read]{background:var(--brand-100);color:var(--brand-700)}.segment-badge[data-blast=failed],.segment-badge[data-valid="tidak valid"]{background:var(--danger-tint);color:var(--danger)}.table-footer{justify-content:space-between;gap:20px;padding:16px}.table-footer,.table-footer-info{display:flex;flex-wrap:wrap;align-items:center}.table-footer-info{gap:24px}.table-footer-info-text{color:#6b7280;font-size:12px}.page-size-selector{display:flex;align-items:center;gap:8px}.page-size-selector span{font-size:12px}.page-size-selector select{min-width:72px;height:38px;padding:0 30px 0 12px;border:1px solid var(--border);border-radius:8px;background:#ffffff;color:#0c1f19;font-size:12px;font-weight:600;cursor:pointer;outline:none}.page-size-selector select:hover{border-color:#d1d5db}.page-size-selector select:focus{border-color:var(--brand-500)}.pagination{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.pagination button{min-width:38px;height:38px;padding:0;border:1px solid var(--ivory-soft);border-radius:8px;background:#ffffff;color:#565e6d;box-shadow:none;cursor:pointer;font-size:11px;font-weight:500}.pagination button:hover:not(:disabled){border-color:var(--brand-400);background:var(--brand-50);box-shadow:none;transform:none}.pagination button:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.pagination button.active{border-color:var(--chart-2);background:var(--chart-2);color:#ffffff;box-shadow:0 4px 10px rgba(233,144,0,.25)}.pagination button.active:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}.pagination span{color:#9ca3af;font-size:12px}.filter-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.btn-download,.btn-sync{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 15px;border-radius:10px;font-family:inherit;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer;text-decoration:none;box-shadow:0 3px 10px rgba(43,40,35,.04);transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .15s ease,color .2s ease}.btn-sync{border:1px solid var(--secondary);background:#ffffff;color:var(--secondary)}.btn-sync:hover:not(:disabled){background:var(--secondary-tint);border-color:var(--secondary-dark);color:var(--secondary-dark)}.btn-sync:disabled{opacity:.6;cursor:not-allowed}.btn-download{border:1px solid var(--success-dark);background:#ffffff;color:var(--success-dark)}.btn-download-small:hover,.btn-download:hover{background:var(--success-tint);border-color:var(--success-dark);color:var(--success-dark)}.btn-download-small{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 10px;font-size:12px;gap:7px;border-radius:10px;font-family:inherit;font-weight:600;white-space:nowrap;cursor:pointer;text-decoration:none;box-shadow:0 3px 10px rgba(43,40,35,.04);border:1px solid var(--success-dark);background:#ffffff;color:var(--success-dark);transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .15s ease,color .2s ease}.btn-download-small:active,.btn-download:active,.btn-sync:active:not(:disabled){transform:translateY(1px)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.modal-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(42,39,34,.4);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.donor-modal{display:flex;flex-direction:column;width:min(1000px,100%);max-height:calc(100vh - 48px);overflow:hidden;border-radius:18px;background:#ffffff;box-shadow:0 24px 80px rgba(0,0,0,.18)}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px;border-bottom:1px solid #eeeeee}.modal-header h2{margin:0 0 3px}.modal-close{border:0;background:transparent;color:var(--brand-800);box-shadow:none;font-size:28px;line-height:1;cursor:pointer}.modal-close:hover{background:var(--brand-50);color:var(--brand-900)}.modal-body{padding:24px;overflow-y:auto}.modal-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:300px}.spinner{width:32px;height:32px;border:3px solid var(--brand-100);border-top-color:var(--brand-600);border-radius:50%;animation:donor-spin .7s linear infinite}@keyframes donor-spin{to{transform:rotate(1turn)}}.modal-error{margin:24px;padding:14px;border:1px solid #fecaca;border-radius:10px;background:#fef2f2;color:#b91c1c}.donor-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.profile-info{min-height:76px;padding:14px;border:1px solid #eeeeee;border-radius:12px;font-weight:600;background:#ffffff}.profile-info-value{margin-top:5px;word-break:break-word}.modal-section{margin-top:28px}.modal-section h3{margin-bottom:14px}.modal-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.modal-section-header-title{display:inline-flex;align-items:center;gap:6px}.modal-section-header h3{margin-bottom:0}.modal-table-wrapper{overflow-x:auto;border:1px solid #eeeeee;border-radius:12px;background:#ffffff}.modal-table{width:100%;border-collapse:collapse}.modal-table td,.modal-table th{padding:12px 14px;border-bottom:1px solid #eeeeee;text-align:left;font-size:12px}.modal-table th{background:var(--ivory-soft);color:#6e6252}.user-table{width:100%;border-collapse:collapse}.user-table td,.user-table th{padding:14px 16px;border-bottom:1px solid #eeeeee;text-align:left}.user-table th{background:var(--ivory-soft);color:#6b7280;font-size:14px;font-weight:600;white-space:nowrap}.user-table td:nth-child(4),.user-table th:nth-child(4){min-width:210px;width:210px}.header-add-wrapper{display:flex;flex-direction:column;gap:20px}.header-add-card{padding:24px;border:1px solid var(--border);border-radius:14px;background:#ffffff}.header-add-card h3{margin:0 0 6px}.header-add-card .muted{margin:0}.header-add-form{display:flex;align-items:center;flex-wrap:wrap;gap:10px;max-width:640px;margin-top:20px}.header-add-input-wrapper{position:relative;display:flex;align-items:center;flex:1 1;min-width:240px}.header-add-input-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--accent-dark);pointer-events:none}.header-add-input-wrapper input{width:100%;min-height:44px;padding:0 12px 0 40px;border:1px solid #d1d5db;border-radius:9px;background:#ffffff;color:#111827;font-size:13px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.header-add-input-wrapper input::placeholder{color:#9ca3af}.header-add-input-wrapper input:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(252,175,23,.16)}.header-add-input-wrapper input:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.header-add-form-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid var(--accent-dark);border-radius:9px;background:var(--accent-dark);color:#ffffff;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;transition:opacity .2s ease,transform .15s ease}.header-add-form-button:hover:not(:disabled){opacity:.9}.header-add-form-button:active:not(:disabled){transform:scale(.98)}.header-add-form-button:disabled{opacity:.55;cursor:not-allowed}.header-add-form-button svg{width:16px;height:16px;flex-shrink:0}.row-actions{display:inline-flex;gap:6px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:30px;height:36px;border-radius:10px;cursor:pointer}.icon-button:hover{opacity:.8}.icon-button svg{width:13px;height:13px;display:block;flex-shrink:0;color:var(--accent-tint)}.app-modal-backdrop{position:fixed;inset:0;z-index:1000;padding:16px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45)}.app-modal-card{width:100%;max-width:420px;padding:20px;border-radius:12px;background:var(--card-bg,#fff)}.app-modal-card,.app-modal-form{display:flex;flex-direction:column;gap:12px}.app-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.form-field{display:flex;flex-direction:column;gap:4px}.form-field input{padding:8px 10px;border:1px solid var(--border,#e5e7eb);border-radius:6px}.checkbox-field{display:flex;align-items:center;gap:8px}@media (max-width:640px){.header-add-form{flex-direction:column;align-items:stretch}.header-add-input-wrapper{width:100%;min-width:0}.header-add-form-button{width:100%}}.form-error,.form-success{margin-top:14px;padding:10px 12px;border-radius:8px;font-size:13px}.form-error{background:#fef2f2;color:#b91c1c}.form-success{background:#f0fdf4;color:#166534}.user-table-header{padding:20px 20px 12px}.user-table-header h3{margin:0 0 4px}.user-loading{padding:30px;color:#6b7280}.login{overflow:hidden;justify-content:center;min-height:100vh;padding:24px;background:var(--surface-muted)}.login,.login-card{position:relative;display:flex;align-items:center}.login-card{z-index:1;flex-direction:column;max-width:460px;padding:48px 40px 36px;border-radius:24px;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 24px 70px rgba(49,45,38,.11)}.login-card,.login-header{width:100%;text-align:center}.login-header{margin-bottom:12px}.login-logo-wrap{display:flex;min-height:74px;align-items:center;justify-content:center}.login-logo{width:auto;max-width:220px;height:auto;max-height:72px;object-fit:contain}.login-header h3{margin-top:22px;color:var(--charcoal);font-size:24px;font-weight:800;line-height:1.2;letter-spacing:-.025em}.login-header p{margin:7px 0 0;color:var(--charcoal-muted);font-size:15px;font-weight:500}.login-form{width:100%}.btn-google{display:grid;grid-template-columns:34px 1fr 20px;width:100%;min-height:56px;align-items:center;grid-gap:12px;gap:12px;margin-top:8px;padding:8px 16px 8px 10px;border:1px solid #dedbd4;border-radius:14px;background:#fff;color:#353537;font:inherit;font-size:14px;font-weight:650;cursor:pointer;box-shadow:0 3px 10px rgba(43,40,35,.05);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}.btn-google:hover:not(:disabled){transform:translateY(-1px);border-color:#c9a057;background:#fffcf7;box-shadow:0 8px 22px rgba(43,40,35,.09)}.btn-google:focus-visible{outline:3px solid rgba(247,168,35,.23);outline-offset:3px}.btn-google:disabled{cursor:wait;opacity:.7}.google-icon-box{display:flex;width:35px;height:35px;align-items:center;justify-content:center;border:1px solid #ece9e3;border-radius:10px;background:#fff}.google-icon{flex-shrink:0;width:20px;height:20px}.login-arrow{width:18px;height:18px;color:#a09b92}.login-note{margin:20px 0 0;color:var(--charcoal-muted);font-size:12px;line-height:1.5;text-align:center}.sync-log-page{width:100%}.sync-log-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.sync-log-header h1{margin:0;color:var(--charcoal);font-size:24px;font-weight:700}.sync-log-header p{margin:6px 0 0;color:#6b7280;font-size:14px}.sync-log-card{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#ffffff}.sync-log-table-wrapper{width:100%;overflow-x:auto}.sync-log-table{width:100%;min-width:950px;border-collapse:collapse}.sync-log-table td,.sync-log-table th{padding:14px 16px;border-bottom:1px solid #eeeeee;text-align:left;vertical-align:middle}.sync-log-table th{background:#f9fafb;color:#6b7280;font-size:13px;font-weight:600;white-space:nowrap;padding:18px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.sync-log-table td{color:#374151;font-size:12px}.sync-log-table tbody tr{transition:background .15s ease}.sync-log-row{cursor:pointer}.sync-log-table tbody tr:hover{background:var(--brand-50)}.sync-log-table tbody tr:last-child td{border-bottom:none}.sync-log-id{color:#6b7280;font-weight:600}.sync-status{display:inline-flex;align-items:center;justify-content:center;min-width:82px;min-height:28px;padding:4px 10px;border-radius:999px;background:#f3f4f6;color:#4b5563;font-size:12px;font-weight:600;text-transform:capitalize}.sync-status-success{background:var(--success-tint);color:var(--success-dark)}.sync-status-failed{background:var(--danger-tint);color:var(--danger-dark)}.sync-status-running{background:var(--brand-100);color:var(--brand-800)}.sync-log-message{max-width:360px;color:#6b7280!important;line-height:1.5;white-space:normal;word-break:break-word}.sync-log-empty{padding:40px!important;color:#9ca3af!important;text-align:center!important}.date-filter{position:relative;width:100%;min-width:0}.date-filter-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:46px;padding:0 13px;border:1px solid var(--border);border-radius:10px;background:#ffffff;color:#374151;font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.date-filter-trigger:hover{border-color:#d1d5db}.date-filter-trigger.is-open{border-color:var(--accent);box-shadow:0 0 0 3px rgba(252,175,23,.16)}.date-filter-label{display:flex;align-items:center;gap:8px;min-width:0}.date-filter-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-filter-panel{position:absolute;z-index:60;top:calc(100% + 7px);left:0;width:min(420px,calc(100vw - 24px));padding:18px;border:1px solid var(--border);border-radius:12px;background:#ffffff;box-shadow:0 14px 36px rgba(49,45,38,.11)}.date-filter-panel.align-right{left:auto;right:0}.date-filter-title{margin:0 0 15px;color:#111827;font-size:14px;font-weight:700}.date-filter-fields{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;grid-gap:10px;gap:10px}.date-filter-field{display:flex;flex-direction:column;gap:6px;min-width:0}.date-filter-field label{color:#6b7280;font-size:12px;font-weight:600}.date-filter-field input{width:100%;height:42px;min-height:42px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:#ffffff;color:#374151;font-family:inherit;font-size:13px}.date-filter-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px rgba(252,175,23,.16)}.date-filter-separator{padding-bottom:12px;color:#9ca3af;font-size:12px}.date-filter-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid #f3f4f6}.date-filter-apply,.date-filter-reset{height:36px;padding:0 14px;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}.date-filter-reset{border:1px solid var(--ivory-soft);background:var(--ivory);color:var(--brand-800);box-shadow:none}.date-filter-reset:hover{border:1px solid var(--brand-800)}.date-filter-apply{border:1px solid var(--accent-dark);background:var(--accent-dark);color:#ffffff;box-shadow:none}.date-filter-apply:hover{background-color:#a8461f}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:64px 24px;margin:20px 0;border:2px dashed #d8d2c4;border-radius:16px;background-color:#efece4;cursor:pointer;text-align:center;transition:border-color .2s ease,background-color .2s ease}.dropzone:hover{border-color:#c9c1ac;background-color:#ebe7dc}.dropzone.is-dragging{border-color:#c0552e;background-color:#f1e4d8}.dropzone.is-uploading{cursor:progress;opacity:.75}.dropzone-input{display:none}.dropzone-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:14px;background-color:#e2ddd0;color:#57534a;margin-bottom:6px}.dropzone-title{font-size:1.25rem;font-weight:600;color:#1f1d1a;margin:0}.dropzone-subtitle{font-size:.95rem;color:#6b6558;margin:0}.dropzone-browse{color:#c0552e;text-decoration:underline;font-weight:500}.dropzone-hint{margin:4px 0 0;font-size:.8rem;letter-spacing:.05em;color:#b6afa0}.blast-settings{display:flex;align-items:flex-end;gap:12px;margin:16px 0}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px;gap:12px;margin:16px 0}.summary-card{display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid #e2ddd0;border-radius:12px;background-color:var(--card)}.summary-card.highlight{background-color:#f1e4d8;border-color:#c0552e}.summary-label{font-size:.8rem;color:#6b6558}.summary-value{font-size:1.3rem;font-weight:700;color:#1f1d1a}.filter-field{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:#57534a}.filter-field input,.filter-field select{padding:8px 10px;border:1px solid #e2ddd0;border-radius:8px;background-color:#fff;font-size:.9rem}.status-valid{color:#2f7a3c;font-weight:600}.status-invalid{color:#b3541e;font-weight:600}@media (max-width:1200px){.donor-filter-bar{grid-template-columns:minmax(260px,2fr) repeat(2,minmax(170px,1fr))}.filter-actions{grid-column:span 2}}@media (max-width:1080px){.cards{grid-template-columns:repeat(2,1fr)}}.sidebar-toggle{display:none;align-items:center;justify-content:center;position:fixed;top:14px;left:14px;z-index:1100;width:42px;height:42px;padding:0;border:1px solid var(--border);border-radius:12px;background:#ffffff;color:var(--charcoal);box-shadow:0 4px 14px rgba(49,45,38,.12)}.sidebar-toggle:hover:not(:disabled){border-color:var(--accent);background:var(--brand-50);color:var(--accent-dark);box-shadow:0 4px 14px rgba(49,45,38,.12)}.sidebar-overlay{display:none;position:fixed;inset:0;z-index:999;background:rgba(42,39,34,.45);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);opacity:0;pointer-events:none;transition:opacity .2s ease}.summary-slider-wrap{position:relative;margin-top:20px;margin-bottom:16px}.summary-slider{display:flex;flex-wrap:nowrap;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:2px 4px}.summary-slider::-webkit-scrollbar{display:none}.summary-slider.dragging{cursor:-webkit-grabbing;cursor:grabbing}.summary-slider .summary-card{flex:0 0 auto;min-width:200px}.summary-slider-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:36px;height:36px;border-radius:50%;border:1px solid var(--border,#e5e7eb);background:var(--surface,#fff);color:#292c34;box-shadow:0 2px 8px rgba(0,0,0,.12);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer}.summary-slider-arrow:hover{color:var(--accent-dark,#c0552e);border-color:var(--accent,#c0552e)}.summary-slider-arrow svg{width:18px;height:18px;display:block;flex-shrink:0;color:#292c34;stroke:currentColor;stroke-width:2.5;opacity:1;visibility:visible}.summary-slider-arrow:hover svg{color:var(--accent-dark,#c0552e)}.summary-slider-arrow.left{left:2px}.summary-slider-arrow.right{right:2px}.retention-page{display:flex;flex-direction:column;gap:16px}.retention-filters{display:flex;flex-wrap:wrap;gap:12px}.retention-note{padding:14px 18px;border-radius:var(--radius);background:var(--accent-tint);color:var(--ink);font-size:14px;line-height:1.5}.retention-section{margin-top:0}.retention-sub{margin:-8px 0 14px;font-size:13px}.state-box{padding:28px;border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface);color:var(--muted);text-align:center}.stat-icon--brand{background:var(--accent-tint);color:var(--accent-dark)}.stat-icon--info{background:var(--info-tint);color:var(--info-dark)}.stat-icon--success{background:var(--success-tint);color:var(--success-dark)}.stat-icon--danger{background:var(--danger-tint);color:var(--danger)}.delta{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:13px;font-weight:600}.delta.is-up{color:var(--success-dark)}.delta.is-down{color:var(--danger)}.chart-tooltip{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--chart-tooltip-border);border-radius:10px;background:var(--chart-tooltip-bg);box-shadow:0 8px 22px rgba(121,82,13,.12);font-size:13px;color:var(--ink)}.retention-table-wrap{overflow-x:auto}.cohort-table,.retention-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.cohort-table td,.cohort-table th,.retention-table td,.retention-table th{padding:11px 12px;text-align:left}.cohort-table thead th,.retention-table thead th{border-bottom:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.cohort-table tbody th,.retention-table tbody th{font-weight:600;white-space:nowrap}.cohort-table .num,.retention-table .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.retention-table{min-width:520px}.retention-table tbody tr+tr>*{border-top:1px solid var(--border)}.retention-table .is-live>*{background:var(--surface-muted);color:var(--muted)}.badge-live{margin-left:8px;padding:4px 8px;border-radius:99px;background:var(--brand-100);color:var(--brand-800);font-size:11px;font-weight:600}.cohort-table{min-width:560px;border-spacing:4px}.cohort-table thead th{text-align:center;border-bottom:0}.cohort-table thead th:first-child{text-align:left}.cohort-table td.cell{border-radius:6px;color:var(--brand-900);font-weight:600;text-align:center}.cohort-table td.cell.is-partial{outline:1.5px dashed var(--brand-700);outline-offset:-2px}@media (max-width:1024px){.summary-slider-arrow.left{left:4px}.summary-slider-arrow.right{right:4px}}@media (max-width:640px){.summary-slider-arrow{display:none}.summary-slider{gap:10px;cursor:auto}.summary-slider .summary-card{min-width:160px}}@media (max-width:1000px){.layout{grid-template-columns:1fr;min-height:unset}.sidebar-toggle{display:inline-flex}.sidebar-overlay{display:block}.sidebar-overlay.is-open{opacity:1;pointer-events:auto}.sidebar{position:fixed;top:0;left:0;z-index:1000;width:270px;max-width:82vw;height:100vh;transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 20px 60px rgba(0,0,0,.22)}.sidebar.is-open{transform:translateX(0)}.brand{margin-top:40px}.main{padding:74px 18px 18px}.grid2{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr 1fr}}@media (max-width:900px){.donor-filter-bar{grid-template-columns:1fr 1fr}.donor-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:800px){.table-footer{flex-direction:column;align-items:flex-start}.table-footer-info{width:100%}}@media (max-width:768px){.donor-filter-bar{grid-template-columns:1fr}.filter-actions{grid-column:auto;width:100%}.btn-download,.btn-sync{flex:1 1}.multi-select-dropdown{min-width:100%}}@media (max-width:640px){.cards,.detail-grid{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:flex-start}.brand-title{font-size:18px}.chart-card h3{font-size:15px;font-weight:600;margin-bottom:18px}.card,.chart-card{padding:20px 20px 22px}}@media (max-width:600px){.donor-filter-bar,.donor-profile-grid{grid-template-columns:1fr}.modal-overlay{padding:10px}.donor-modal{max-height:calc(100vh - 20px)}.user-access-form{flex-direction:column}.user-access-form input{min-width:0}.date-filter-fields{grid-template-columns:1fr}.date-filter-separator{display:none}.pagination{justify-content:center}}@media (max-width:520px){.login{padding:20px}.login-card{padding:34px 22px 28px;border-radius:20px}.login-header{margin-bottom:28px}.login-header h1{font-size:26px}.btn-google,.login-header p{font-size:14px}.btn-google{min-height:48px}}@media (max-width:420px){.main{padding:14px}.stat-icon{width:34px;height:34px}.stat-icon svg{width:18px;height:18px}.sync-log-header{flex-direction:column;align-items:flex-start}}