:root{--primary:#00a651;--primary-dark:#008a44;--primary-tint:#e6f6ee;--primary-text:#00813f;--text:#1f2933;--text-secondary:#4b5563;--muted:#9ca3af;--bg:#f6f8fa;--card:#ffffff;--border:#e5e7eb;--warning:#f59e0b;--warning-tint:#fffbeb;--error:#dc2626;--error-tint:#fef2f2;--error-border:#fecaca}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text)}#__next,body,body>div,html{height:100%}.app-shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:var(--card);border-bottom:1px solid var(--border);flex:0 0 auto}.topbar h1{font-size:16px;font-weight:600;margin:0;color:var(--text)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:30px;height:30px;object-fit:contain;display:block}.topbar .user{display:flex;align-items:center;gap:12px}.btn,.topbar .user{font-size:13px;color:var(--text-secondary)}.btn{border:1px solid var(--border);background:var(--card);padding:6px 14px;border-radius:6px;cursor:pointer;text-decoration:none}.btn:hover{background:var(--bg)}.content-area{flex:1 1 auto;position:relative;min-height:0}.dash-layout{display:flex;height:100%}.dash-sidebar{flex:0 0 220px;border-right:1px solid var(--border);background:var(--card);overflow-y:auto;padding:8px}.dash-link{display:block;width:100%;text-align:left;border:none;background:transparent;padding:10px 12px;border-radius:6px;font-size:13px;color:var(--text-secondary);cursor:pointer}a.dash-link{box-sizing:border-box;text-decoration:none}.dash-link:hover{background:var(--bg)}.dash-home{margin-bottom:4px}.home-wrap{position:absolute;inset:0;overflow-y:auto;background:radial-gradient(900px 400px at 50% -10%,var(--primary-tint),transparent 60%),var(--bg)}.home-inner{max-width:980px;margin:0 auto;padding:40px 32px 48px}.home-title{font-size:26px;font-weight:700;color:var(--text);margin:0}.home-sub{font-size:15px;color:var(--text-secondary);margin:6px 0 28px}.home-notice{background:var(--warning-tint);border:1px solid var(--warning);color:var(--text);border-radius:8px;padding:10px 14px;font-size:14px;margin-bottom:24px}.home-section{margin-bottom:28px}.home-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px}.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:12px;gap:12px}.home-card{display:flex;align-items:center;gap:14px;padding:16px;background:var(--card);border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--text);transition:border-color .15s,box-shadow .15s}.home-card:hover{border-color:var(--primary);box-shadow:0 2px 10px rgba(0,0,0,.06)}.home-card-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:8px;background:var(--primary-tint);color:var(--primary-text)}.home-card-icon.data{background:var(--bg);color:var(--text-secondary)}.home-card-text{display:flex;flex-direction:column;min-width:0}.home-card-name{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-card-kind{font-size:12px;color:var(--muted);margin-top:2px}.home-tip{font-size:13px;color:var(--muted);margin-top:8px}.home-tip code{background:var(--card);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--text-secondary)}.dash-link.active{background:var(--primary-tint);color:var(--primary-text);font-weight:600}.report-area{flex:1 1 auto;position:relative;min-height:0;min-width:0}.dash-section{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:12px 12px 4px}.datatable-wrap{display:flex;flex-direction:column;height:100%;background:var(--bg)}.datatable-toolbar{justify-content:flex-start;gap:12px 24px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--border);flex:0 0 auto}.datatable-toolbar,.datatable-toolbar-left{display:flex;align-items:center;flex-wrap:wrap}.datatable-toolbar-left{gap:16px}.datatable-title{font-size:15px;font-weight:600;color:var(--text)}.datatable-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.datatable-segments{gap:4px;padding:3px;background:var(--bg);border:1px solid var(--border);border-radius:8px}.datatable-segments,.seg-btn{display:inline-flex;align-items:center}.seg-btn{gap:6px;padding:5px 12px;border:none;border-radius:6px;background:none;font:inherit;font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer}.seg-btn:hover:not(:disabled){background:var(--card);color:var(--text)}.seg-btn.is-active{background:var(--primary);color:#fff}.seg-btn:disabled{color:var(--muted);cursor:default}.datatable-extra{display:inline-flex;align-items:center;flex-wrap:wrap;gap:10px;padding:3px 3px 3px 10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:500;color:var(--text-secondary)}.extra-toggle-count{margin-left:6px;padding:1px 6px;border-radius:999px;background:var(--primary);color:#fff;font-size:11px;font-weight:600}.extra-field{display:inline-flex;align-items:center;gap:6px}.extra-select{padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--card);font:inherit;color:var(--text);cursor:pointer}.extra-select:disabled{color:var(--muted);cursor:default}.extra-select.is-active{border-color:var(--primary);background:var(--primary);color:#fff}.extra-select option{background:var(--card);color:var(--text)}.seg-count{font-size:11px;font-weight:600;opacity:.75}.datatable-scroll{flex:1 1 auto;overflow:auto;min-height:0;overflow-anchor:none}.datatable{border-collapse:collapse;table-layout:fixed;font-size:13px;min-width:100%}.datatable td,.datatable th{text-align:left;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.datatable thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--card);color:var(--text-secondary);font-weight:600;font-size:12px;z-index:1}.datatable-th{-webkit-user-select:none;-moz-user-select:none;user-select:none}.datatable tfoot td{position:-webkit-sticky;position:sticky;bottom:0;z-index:1;background:var(--primary-tint);border-top:2px solid var(--primary);border-bottom:none;font-weight:600;color:var(--text)}.datatable tfoot td.is-num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.btn.is-on{background:var(--primary-tint);border-color:var(--primary);color:var(--primary-text)}.col-resizer{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;touch-action:none;z-index:2}.col-resizer:after{content:"";position:absolute;top:25%;bottom:25%;right:3px;width:2px;border-radius:1px;background:transparent}.datatable-th:hover .col-resizer:after{background:var(--border)}.col-resizer:hover:after,body.is-col-resizing .col-resizer:active:after{background:var(--primary)}body.is-col-resizing,body.is-col-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.datatable-th-inner{display:flex;align-items:center;gap:6px;justify-content:space-between}.datatable-sort{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}.datatable-sort:hover{color:var(--text)}.datatable-filter-btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:18px;height:18px;padding:0;border:none;border-radius:4px;background:none;color:var(--muted);cursor:pointer;opacity:.55}.datatable-filter-btn.is-open,.datatable-filter-btn:hover{background:var(--primary-tint);color:var(--primary-text);opacity:1}.datatable-filter-btn.is-active{color:var(--primary);opacity:1}.filter-dropdown{position:fixed;z-index:50;width:260px;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(31,41,51,.16);padding:8px;gap:6px}.filter-dropdown-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.filter-dropdown-col{font-size:12px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-dropdown-close{border:none;background:none;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:0 2px}.filter-dropdown-close:hover{color:var(--text)}.filter-dropdown-search{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;color:var(--text)}.filter-dropdown-search:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.filter-dropdown-links{display:flex;gap:12px}.filter-dropdown-links button{border:none;background:none;padding:0;font-size:12px;color:var(--primary-text);cursor:pointer;text-decoration:underline}.filter-dropdown-values{max-height:210px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--border);padding-top:6px}.filter-value{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text);padding:2px;border-radius:4px;cursor:pointer;min-width:0}.filter-value:hover{background:var(--bg)}.filter-value>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-value>input[type=checkbox]{width:auto;flex:0 0 auto;margin:0;accent-color:var(--primary)}.filter-dropdown-note,.filter-empty{font-size:12px;padding:4px 2px}.datatable tbody tr.is-even td{background:rgba(0,0,0,.015)}.datatable tbody tr.datatable-row:hover td{background:var(--primary-tint)}.datatable tbody tr.datatable-spacer td{padding:0;border:none;background:none}.datatable td.cell-editable{background:var(--primary-tint);cursor:text;position:relative}.datatable tbody tr.datatable-row:hover td.cell-editable{background:#d8f0e3}.datatable td.cell-editable.is-editing{padding-top:3px;padding-bottom:3px}.datatable td.cell-editable.has-error{background:var(--error-tint);box-shadow:inset 0 0 0 1px var(--error-border)}.datatable .cell-link{color:var(--primary-text);font-weight:500;text-decoration:none;cursor:pointer}.datatable .cell-link:hover{text-decoration:underline}.cell-edit-btn{height:18px;margin:-3px 0 -3px 6px;padding:0 6px;border:1px solid var(--border);border-radius:4px;background:var(--card);color:var(--primary-text);font:inherit;font-size:12px;line-height:16px;vertical-align:middle;cursor:pointer}.datatable td.cell-editable.is-link .cell-edit-btn:first-child{margin-left:0}.cell-edit-btn:hover{border-color:var(--primary);background:var(--primary-tint)}.datatable td.cell-editable.is-link.is-editing{overflow:visible}.cell-input.cell-input-link{position:absolute;top:3px;left:4px;z-index:2;width:max(calc(100% - 8px),480px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.datatable td.cell-editable.is-saving{opacity:.6}.datatable td.is-pinned,.datatable th.is-pinned{position:-webkit-sticky;position:sticky;left:0;z-index:2;box-shadow:1px 0 0 var(--border),6px 0 6px -6px rgba(0,0,0,.25)}.datatable tbody td.is-pinned{background:var(--card)}.datatable tbody tr.is-even td.is-pinned{background:linear-gradient(rgba(0,0,0,.015),rgba(0,0,0,.015)),var(--card)}.datatable tbody tr.datatable-row:hover td.is-pinned{background:var(--primary-tint)}.datatable tfoot td.is-pinned,.datatable thead th.is-pinned{z-index:4}.cell-input{box-sizing:border-box;width:100%;min-width:0;height:26px;padding:2px 4px;border:1px solid var(--primary);border-radius:4px;font:inherit;color:var(--text);background:var(--card)}.cell-input:focus{outline:none;box-shadow:0 0 0 2px var(--primary-tint)}.cell-badge{margin-left:6px;font-size:11px;color:var(--text-secondary)}.cell-badge.error{color:var(--error);font-weight:700}.report-container,.report-container iframe{width:100%;height:100%;border:none}.centered{padding:24px;color:var(--text-secondary)}.centered,.pending-wrap{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.pending-wrap{flex-direction:column;padding:32px;gap:6px;background:radial-gradient(900px 500px at 50% -10%,var(--primary-tint),transparent 60%),var(--bg)}.pending-logo{width:120px;height:120px;object-fit:contain;margin-bottom:12px}.pending-title{font-size:22px;font-weight:700;color:var(--text);margin:0}.pending-text{font-size:15px;color:var(--text-secondary);max-width:460px;line-height:1.5;margin:8px 0 0}.pending-sub{font-size:13px;color:var(--muted);margin:0 0 16px}.signin-wrap{display:flex;align-items:center;justify-content:center;height:100vh;background:radial-gradient(1200px 600px at 50% -10%,var(--primary-tint),transparent 60%),var(--bg)}.signin-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:40px;width:380px;max-width:90vw;box-shadow:0 10px 40px rgba(31,41,51,.1);text-align:center}.signin-logo{width:88px;height:88px;object-fit:contain;margin:0 auto 16px;display:block}.signin-card h1{font-size:20px;margin:0 0 6px;color:var(--text)}.signin-card p{color:var(--text-secondary);font-size:14px;margin:0 0 24px}.provider-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px;margin-bottom:12px;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:14px;font-weight:500;color:var(--text);cursor:pointer}.provider-btn:hover{background:var(--bg)}.error-text{color:var(--error);font-size:13px;margin-top:8px}.provider-btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.provider-btn-primary:hover{background:var(--primary-dark)}.signin-external{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);text-align:left}.signin-external summary{cursor:pointer;font-size:13px;color:var(--text-secondary);text-align:center;list-style-position:inside}.signin-card .signin-note{font-size:13px;margin:12px 0}.signin-email-form input{width:100%;box-sizing:border-box;padding:10px 12px;margin-bottom:10px;border:1px solid var(--border);border-radius:8px;font-size:14px;color:var(--text);background:var(--card)}.signin-email-form input:focus{outline:2px solid var(--primary-tint);border-color:var(--primary)}.admin-main{flex:1 1 auto;overflow-y:auto;padding:24px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));grid-gap:20px;gap:20px;max-width:1400px;margin:0 auto}.admin-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px}.admin-card h2{font-size:16px;margin:0 0 4px;color:var(--text)}.admin-hint{color:var(--text-secondary);font-size:12px;margin:0 0 14px}.admin-flash{grid-column:1/-1;padding:10px 14px;border-radius:8px;font-size:13px}.admin-flash.ok{background:var(--primary-tint);color:var(--primary-text)}.admin-flash.error{background:var(--error-tint);color:var(--error)}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table td,.admin-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table th{color:var(--text-secondary);font-weight:600;font-size:12px}.admin-card>select,.admin-table select,.report-form input,.row input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;width:100%;color:var(--text)}.admin-inline-num{width:80px!important}.admin-inline-sort{display:flex;gap:6px;align-items:center}.admin-inline-sort select:first-child{flex:1 1 auto;min-width:0}.admin-inline-sort select:last-child{flex:0 0 auto;width:auto!important}.admin-card-wide{grid-column:1/-1}.table-scroll{overflow-x:auto}.users-search{display:flex;align-items:center;gap:12px;margin-bottom:10px}.users-search input{width:320px;max-width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:13px;color:var(--text);background:var(--card)}.users-search input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.users-scroll{overflow-y:auto;border-bottom:1px solid var(--border)}.users-scroll thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:var(--card);box-shadow:inset 0 -1px 0 var(--border)}.extra-filter-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.extra-filter-col{min-width:220px;font-size:13px;color:var(--text)}.extra-filter-row input{width:200px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:13px;color:var(--text)}.group-select{min-width:150px;width:auto}.row-blocked td{background:var(--error-tint)}.row-blocked td:first-child{color:var(--error)}.admin-card>select:focus,.admin-table select:focus,.report-form input:focus,.row input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--text-secondary)}.muted{color:var(--muted)}.admin-list{list-style:none;padding:0;margin:14px 0 0}.admin-list li{justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:14px}.admin-list li,.row{display:flex;align-items:center}.row{gap:8px}.report-form{display:grid;grid-gap:8px;gap:8px;margin-bottom:16px}.checklist{margin:12px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:6px 16px;gap:6px 16px;align-content:start;grid-auto-rows:min-content;max-height:320px;overflow-y:auto;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.checkrow{display:flex;align-items:center;gap:8px;font-size:14px;line-height:1.5;min-height:21px;min-width:0;white-space:nowrap}.checkrow-name{overflow:hidden;text-overflow:ellipsis}.checkrow-type{flex:0 0 auto}.checkrow>input[type=checkbox]{width:auto;flex:0 0 auto;padding:0;margin:0;accent-color:var(--primary)}.access-label{font-size:12px;font-weight:600;color:var(--text-secondary);margin:12px 0 2px}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;white-space:nowrap}.btn.primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn.danger{color:var(--error);border-color:var(--error-border)}.btn.danger:hover{background:var(--error-tint)}.insights-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:20px;gap:20px;max-width:1400px;margin:20px auto 0}@media (max-width:900px){.insights-grid{grid-template-columns:1fr}}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px;max-width:1400px;margin:0 auto}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px 20px}.stat-value{font-size:28px;font-weight:700;color:var(--primary);line-height:1.1}.stat-value.danger{color:var(--error)}.stat-label{font-size:12px;color:var(--text-secondary);margin-top:4px}.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filter-chip{padding:5px 12px;border-radius:999px;border:1px solid var(--border);font-size:12px;color:var(--text-secondary);text-decoration:none;background:var(--card)}.filter-chip:hover{background:var(--bg)}.filter-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600;background:#f1f3f5;color:var(--text-secondary)}.badge-ok{background:var(--primary-tint);color:var(--primary-text)}.badge-info{background:#eff6ff;color:#1e40af}.badge-danger{background:var(--error-tint);color:var(--error)}.nowrap{white-space:nowrap}.denied-alert{display:block;max-width:1400px;margin:0 auto 16px;padding:12px 16px;border-radius:10px;background:var(--warning-tint);border:1px solid var(--warning);color:#92590a;font-size:14px;font-weight:600;text-decoration:none}.denied-alert:hover{filter:brightness(.98)}@media (max-width:768px){.topbar{padding:8px 12px;gap:8px}.topbar h1{font-size:14px;line-height:1.2}.brand-mark{width:24px;height:24px}.topbar .user{gap:8px;font-size:11px}.topbar .user>span{display:none}.dash-layout{flex-direction:column}.dash-sidebar{flex:0 0 auto;width:100%;display:flex;gap:6px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border);padding:8px;-webkit-overflow-scrolling:touch}.dash-link{width:auto;white-space:nowrap;border:1px solid var(--border);border-radius:999px;padding:8px 14px}.dash-link.active{border-color:var(--primary)}.report-area{flex:1 1 auto;min-height:70vh}.dash-home{margin-bottom:0}.home-inner{padding:24px 16px 32px}.home-title{font-size:22px}.admin-main{padding:12px}.admin-grid{grid-template-columns:1fr;gap:14px}.admin-card{padding:16px;overflow-x:auto}}@media (max-width:420px){.topbar .user>span{display:none}}.badge-external{margin-left:8px;background:var(--warning-tint);color:#92400E}.access-until{display:inline-flex;align-items:center;gap:4px;margin-left:8px;font-size:12px;color:var(--text-secondary);white-space:nowrap}.access-until input{font-size:12px;padding:2px 4px}