@charset "UTF-8";:root{--bg:#fcfcfd;--bg-alt:#f8fafc;--surface:#fff;--surface-raised:#fff;--text-primary:#0f1729;--text-secondary:#4b5563;--text-muted:#586474;--text-faint:#8996a9;--primary:#3c83f6;--primary-dark:#1d4fd7;--primary-tint:#ecf3fe;--success:#21c45d;--success-dark:#1b9d4a;--success-tint:#e4fbed;--success-edge:rgba(27,157,74,.16);--warning:#f59f0a;--warning-dark:#ce6b09;--warning-tint:#fef3c8;--warning-edge:rgba(206,107,9,.16);--danger:#ef4343;--danger-dark:#e11414;--danger-tint:#fee1e1;--danger-edge:rgba(225,20,20,.18);--terracotta:#954523;--terracotta-dark:#74361b;--terracotta-tint:#fbe9df;--neutral:#4b5563;--neutral-tint:#f1f5f9;--border:#e1e7ef;--border-soft:#eef2f6;--border-strong:#c8d0da;--scrim:rgba(15,23,41,.42);--shadow-sm:0 1px 2px 0 rgba(12,27,46,.04);--shadow-md:0 4px 12px -2px rgba(12,27,46,.08);--shadow-lg:0 16px 32px -8px rgba(12,27,46,.12);--radius:.5rem;--radius-sm:.375rem;--radius-lg:.75rem;--radius-full:9999px;--font-display:"Urbanist",ui-sans-serif,system-ui,sans-serif;--font-body:"Epilogue",ui-sans-serif,system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:22px;--sp-6:28px;--sp-8:44px;--ease-std:cubic-bezier(.22,.61,.36,1);--dur-fast:.14s;--dur-mid:.22s;--dur-slow:.4s}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-display)}button{background:none;border:none;color:inherit;cursor:pointer;padding:0}button,input{font:inherit}.page{margin:0 auto;max-width:1536px;min-height:100vh;padding:var(--sp-6) clamp(22px,2.6vw,44px) var(--sp-8);transition:padding-right var(--dur-mid) var(--ease-std),max-width var(--dur-mid) var(--ease-std)}.app-shell__main>.page{min-height:0}body.drawer-open .page{max-width:none;padding-right:calc(520px + clamp(22px,2.6vw,44px))}@media(max-width:1023px){body.drawer-open .page{padding-right:clamp(22px,2.6vw,44px)}body.drawer-open{overflow:hidden;overscroll-behavior:contain}}.app-shell__header{padding:var(--sp-3) clamp(22px,2.6vw,44px) 0;transition:padding-right var(--dur-mid) var(--ease-std)}.app-shell__header-inner{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:var(--sp-4);margin:0 auto;max-width:1536px;padding:10px var(--sp-5);transition:max-width var(--dur-mid) var(--ease-std)}.app-shell__brand{align-items:center;color:var(--text-primary);display:inline-flex;flex:0 0 auto;font-family:var(--font-display);font-size:18px;font-weight:700;gap:10px;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}.app-shell__brand:focus-visible,.app-shell__brand:hover{color:var(--text-primary);text-decoration:none}.app-shell__brand:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--primary);outline-offset:2px}.app-shell__brand-logo{display:block;flex:0 0 auto;height:36px;-o-object-fit:contain;object-fit:contain;width:36px}.app-shell__divider{background:var(--border);flex:0 0 auto;height:22px;margin:0 4px;width:1px}.app-shell__spacer{flex:1 1 auto}body.drawer-open .app-shell__header{padding-right:calc(520px + clamp(22px,2.6vw,44px))}body.drawer-open .app-shell__header-inner{max-width:none}@media(max-width:1023px){body.drawer-open .app-shell__header{padding-right:clamp(22px,2.6vw,44px)}}.lead-block{margin-bottom:28px;max-width:min(1040px,100%)}.lead-label{align-items:center;color:var(--primary);display:inline-flex;font-family:var(--font-mono);font-size:10px;font-weight:600;gap:8px;letter-spacing:.18em;margin:0 0 10px;text-transform:uppercase}.lead-label:before{background:var(--primary);border-radius:var(--radius-full);content:"";display:inline-block;height:2px;width:18px}.lead{font-family:var(--font-display);font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1.15;margin:0}.lead,.lead .num{color:var(--text-primary)}.lead .num{font-feature-settings:"tnum","lnum";font-weight:700}.lead .n-ready{color:var(--success-dark)}.lead .n-away{color:var(--warning-dark)}.lead .n-fail{color:var(--danger-dark)}.lead .soft{color:var(--text-secondary);font-weight:400}.lead--editorial{color:var(--text-secondary);font-size:22px;font-weight:500;letter-spacing:-.01em}.lead--editorial strong{color:var(--text-primary);font-feature-settings:"tnum","lnum";font-weight:700}.insight-icon{font-size:16px;margin-right:4px;vertical-align:middle}.insight-headline{display:inline}.insight-count{cursor:pointer;font-weight:700;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;transition:color .12s}.insight-count-success{color:var(--success-dark)}.insight-count-success:hover{color:var(--success)}.insight-count-warning{color:var(--warning-dark)}.insight-count-warning:hover{color:var(--warning)}.insight-count-danger{color:var(--danger-dark)}.insight-count-danger:hover{color:var(--danger)}.insight-toggle{background:transparent;border:none;color:var(--primary);cursor:pointer;display:inline-block;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.06em;margin-left:12px;padding:4px 0;transition:color .12s}.insight-toggle:hover{color:var(--primary-dark)}@media(max-width:768px){.insight-toggle{min-height:44px;padding:12px 0}}.insight-list{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--text-secondary);display:flex;flex-direction:column;font-family:var(--font-body);font-size:14px;gap:6px;line-height:1.4;list-style:none;margin:8px 0 0;padding:10px 16px}.insight-list li .insight-icon{font-size:14px;margin-right:6px}.learner-badges{border-bottom:1px solid var(--border-soft);display:flex;flex-wrap:wrap;gap:6px;padding:10px 26px}.l-badge{align-items:center;border-radius:var(--radius-full);display:inline-flex;font-family:var(--font-mono);font-size:10px;font-weight:600;gap:5px;letter-spacing:.04em;padding:5px 12px}.l-badge-icon{font-size:13px;line-height:1}.l-badge-warning{background:var(--warning-tint);border:1px solid rgba(245,159,10,.2);color:var(--warning-dark)}.l-badge-success{background:var(--success-tint);border:1px solid rgba(33,196,93,.2);color:var(--success-dark)}.l-badge-danger{background:var(--danger-tint);border:1px solid rgba(239,67,67,.2);color:var(--danger-dark)}.tiles{margin-bottom:18px}.tiles .row-label{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.14em;margin:0 0 6px;text-transform:uppercase}.tiles .tile-row{display:block;margin-bottom:14px}.tiles .tile-row:last-of-type{margin-bottom:0}.tile-grid{display:grid;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr))}.tile-row[data-row=lifecycle] .tile-grid{grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:1180px){.tile-grid{gap:8px}.tile-row[data-row=lifecycle] .tile-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.tile-grid{gap:6px}.tile-grid,.tile-row[data-row=lifecycle] .tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-row[data-row=lifecycle] .tile-grid>.tile:nth-child(5){grid-column:1/-1}.tile{min-height:80px;padding:10px 12px 8px}.tile-value{font-size:24px}}.tile{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--text-muted);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;display:grid;gap:2px;grid-template-rows:auto 1fr auto;min-height:96px;padding:12px 14px 10px;position:relative;text-align:left;transition:transform .16s var(--ease-std),box-shadow .16s var(--ease-std),border-color .16s var(--ease-std),background .16s var(--ease-std)}.tile:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.tile.col-neutral{border-left-color:var(--text-muted)}.tile.col-tobacco{border-left-color:var(--warning)}.tile.col-forest{border-left-color:var(--success)}.tile.col-oxblood{border-left-color:var(--danger)}.tile.col-terracotta{border-left-color:var(--terracotta)}.tile.col-terracotta .tile-meta.highlight{color:var(--terracotta-dark)}.tile.active{background:var(--primary-tint);border-color:var(--primary);border-left-color:var(--primary);box-shadow:0 0 0 3px #3c83f61f,var(--shadow-sm)}.tile.active .tile-label{color:var(--primary-dark)}.tile.active .tile-value{color:var(--text-primary)}.tile-header{align-items:flex-start;display:flex;gap:4px;min-height:20px}.tile-dot{display:none}.tile-label{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.1em;line-height:1.3;text-transform:uppercase}.tile-value{align-self:end;color:var(--text-primary);font-family:var(--font-display);font-feature-settings:"tnum","lnum";font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1}.tile-meta{align-items:flex-end;color:var(--text-muted);display:flex;font-family:var(--font-mono);font-size:9px;letter-spacing:.02em;line-height:1.35;min-height:20px}.tile-meta.highlight{color:var(--primary-dark);font-weight:500}.tile.col-tobacco .tile-meta.highlight{color:var(--warning-dark)}.tile.col-oxblood .tile-meta.highlight{color:var(--danger-dark)}.filters{margin:0 0 22px}.filters .filter-bar{align-items:flex-end;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:grid;gap:14px;grid-template-columns:minmax(200px,1.3fr) repeat(4,minmax(150px,1fr));padding:16px 18px}@media(max-width:1180px){.filters .filter-bar{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.filters .filter-bar{gap:10px;grid-template-columns:1fr;padding:14px}.filters .ctrl-input{height:44px}}.filters .ctrl{display:flex;flex-direction:column;gap:6px;min-width:0;position:relative}.filters .ctrl-label{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.filters .ctrl-input{align-items:center;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);cursor:pointer;display:flex;font-family:var(--font-body);font-size:13px;height:38px;justify-content:space-between;min-width:0;padding:10px 12px;position:relative;transition:border-color .16s,background .16s,box-shadow .16s}.filters .ctrl-input:hover{background:var(--surface);border-color:var(--border-strong)}.filters .ctrl-input.focused,.filters .ctrl-input:focus{background:var(--surface);border-color:var(--primary);box-shadow:0 0 0 3px #3c83f624;outline:none}.filters .ctrl-input .val{color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters .ctrl-input .chev{color:var(--text-muted);font-size:10px;margin-left:10px;transform:translateY(-1px)}.filters .ctrl-input.search{padding-left:36px;padding-right:10px}.filters .ctrl-input.search .ctrl-icon{color:var(--text-muted);left:13px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.filters .ctrl-input.search input{all:unset;color:var(--text-primary);flex:1;font-family:var(--font-body);font-size:13px;min-width:0;width:100%}.filters .ctrl-input.search input::-moz-placeholder{color:var(--text-faint)}.filters .ctrl-input.search input::placeholder{color:var(--text-faint)}.search-clear{align-items:center;background:var(--neutral-tint);border:none;border-radius:50%;color:var(--text-muted);cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:12px;height:16px;justify-content:center;line-height:1;margin-left:6px;transition:background .12s,color .12s;width:16px}.search-clear:hover{background:var(--text-muted);color:#fff}.chip-strip{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding:0 2px}.chip-strip[hidden]{display:none}.chip-strip .chip{align-items:center;background:var(--primary-tint);border:1px solid rgba(60,131,246,.22);border-radius:var(--radius-full);color:var(--primary-dark);display:inline-flex;font-family:var(--font-body);font-size:12px;font-weight:500;gap:6px;line-height:1;padding:5px 8px 5px 12px;white-space:nowrap}.chip-strip .chip .key{color:var(--primary-dark);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.08em;opacity:.75;text-transform:uppercase}.chip-strip .chip .chip-x{align-items:center;background:#3c83f62e;border:none;border-radius:50%;color:var(--primary-dark);cursor:pointer;display:inline-flex;font-size:11px;height:16px;justify-content:center;line-height:1;transition:background .12s;width:16px}.chip-strip .chip .chip-x:hover{background:var(--primary);color:#fff}.chip-strip .chip-clear-all{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:12px;font-weight:500;margin-left:auto;padding:5px 10px;transition:color .12s,background .12s}.chip-strip .chip-clear-all:hover{background:var(--primary-tint);color:var(--primary)}.dropdown-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);left:0;padding:6px;position:absolute;right:0;top:calc(100% + 6px);z-index:200}.dropdown-menu.gear-menu{display:flex;flex-direction:column;max-height:calc(100vh - 180px);overflow:hidden;padding:0}.gear-menu .gear-head{align-items:center;background:var(--bg-alt);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:12px 14px 10px}.gear-menu .gear-title{color:var(--text-secondary);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.gear-menu .gear-reset{background:transparent;border:none;border-radius:var(--radius-sm);color:var(--primary);cursor:pointer;font-family:var(--font-body);font-size:11px;font-weight:500;padding:3px 8px;transition:background .12s}.gear-menu .gear-reset:hover{background:var(--primary-tint)}.gear-menu .gear-list{flex:1;overflow-y:auto;padding:6px}.gear-menu .gear-item{align-items:center;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;font-family:var(--font-body);font-size:13px;gap:10px;padding:8px 10px;transition:background .12s,color .12s}.gear-menu .gear-item:hover{background:var(--bg-alt)}.gear-menu .gear-item.on{color:var(--text-primary);font-weight:500}.gear-menu .gear-item input[type=checkbox]{accent-color:var(--primary);cursor:pointer;flex:0 0 14px;height:14px;width:14px}.gear-menu .gear-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-item{align-items:center;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:flex;font-family:var(--font-body);font-size:13px;justify-content:space-between;padding:8px 10px;transition:background .12s}.dropdown-item:hover{background:var(--neutral-tint)}.dropdown-item.active{background:var(--primary-tint);color:var(--primary-dark);font-weight:600}.dropdown-item.active:after{color:var(--primary);content:"✓";font-size:13px;line-height:0}.dropdown-item.approved{font-weight:600}.dd-list{max-height:320px;overflow-y:auto;padding:0 2px;scrollbar-width:thin}.dd-list::-webkit-scrollbar{width:6px}.dd-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.dropdown-menu.searchable{padding-top:0}.dd-search{background:var(--bg-alt);border:none;border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;box-sizing:border-box;color:var(--text-primary);display:block;font-family:var(--font-body);font-size:13px;outline:none;padding:10px 12px;width:100%}.dd-search::-moz-placeholder{color:var(--text-faint)}.dd-search::placeholder{color:var(--text-faint)}.dd-search:focus{background:var(--surface)}.date-picker-menu{display:flex;flex-direction:column;padding:0}.date-picker-menu .dd-list{max-height:240px;padding:6px}.dd-custom-range{background:var(--bg-alt);border-radius:0 0 var(--radius) var(--radius);border-top:1px solid var(--border);padding:12px 14px}.dd-custom-label{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;margin-bottom:8px;text-transform:uppercase}.dd-date-row{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin-bottom:10px}.dd-date-label{color:var(--text-secondary);display:flex;flex-direction:column;font-family:var(--font-body);font-size:11px;gap:4px}.dd-date-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-mono);font-size:12px;outline:none;padding:6px 8px}.dd-date-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #3c83f624}.dd-apply-btn{background:var(--primary);border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-family:var(--font-body);font-size:12px;font-weight:600;padding:8px;transition:background .12s;width:100%}.dd-apply-btn:hover{background:var(--primary-dark)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.tbl-scroll{overflow-x:auto;overflow-y:visible;scrollbar-width:thin}.tbl-scroll::-webkit-scrollbar{height:8px}.tbl-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.tbl-scroll::-webkit-scrollbar-track{background:transparent}.table-wrap .tbl-bar{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:16px 22px 14px}.tbl-count{color:var(--text-primary);font-family:var(--font-display);font-size:16px;font-weight:600;line-height:1}.tbl-count strong{color:var(--text-primary);font-weight:700}.tbl-count .of{color:var(--text-muted);font-weight:500;margin-left:4px}.tbl-meta{align-items:center;color:var(--text-muted);display:flex;font-family:var(--font-mono);font-size:10px;gap:14px;letter-spacing:.08em;text-transform:uppercase}.tbl-meta .pulse{background:var(--success);border-radius:50%;display:inline-block;height:5px;margin-right:5px;transform:translateY(-1px);width:5px}.tbl-gear{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:inline-flex;height:32px;justify-content:center;transition:border-color .12s,color .12s,background .12s;width:32px}.tbl-gear:hover{background:var(--primary-tint);border-color:var(--primary);color:var(--primary)}.tbl-gear svg{display:block}table.atlas{border-collapse:collapse;color:var(--text-primary);font-family:var(--font-body);font-size:12px;width:100%}table.atlas td,table.atlas th{border-bottom:1px solid var(--border-soft);box-sizing:border-box;height:40px;padding:10px 8px;text-align:left;vertical-align:middle}table.atlas thead.cols th{background:var(--bg-alt);border-bottom:1px solid var(--border);color:var(--text-muted);cursor:pointer;font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;padding:14px 8px 10px;text-transform:uppercase;transition:color .12s;white-space:nowrap}table.atlas thead.cols th:hover{color:var(--text-primary)}table.atlas thead.cols th .arrow{display:inline-block;font-size:8px;margin-left:4px;opacity:.5;transform:translateY(-1px)}table.atlas thead.cols th.sorted{color:var(--primary)}table.atlas thead.cols th.sorted .arrow{color:var(--primary);opacity:1}table.atlas tbody tr{box-shadow:inset 3px 0 0 var(--text-muted);cursor:pointer;transition:background .12s}table.atlas tbody tr:hover{background:var(--primary-tint)}table.atlas tbody tr.active{background:#3c83f61a;box-shadow:inset 3px 0 0 var(--primary)}table.atlas tbody tr.active:hover{background:#3c83f624}table.atlas tbody tr.b-passed{box-shadow:inset 3px 0 0 var(--success)}table.atlas tbody tr.b-writing{box-shadow:inset 3px 0 0 var(--warning)}table.atlas tbody tr.b-failed{box-shadow:inset 3px 0 0 var(--danger)}table.atlas tbody tr.b-notwrite{box-shadow:inset 3px 0 0 var(--text-muted)}.name{color:var(--text-primary);display:block;font-weight:600;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}td.name-cell{padding-left:12px}.agent{color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;font-weight:500}.agent.miss{color:var(--text-faint)}.agent .warn{color:var(--warning-dark);cursor:help;margin-left:3px}.email{color:var(--text-muted);display:block;font-size:11px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.study{align-items:center;display:flex;gap:8px;width:84px}.study-bar{background:var(--neutral-tint);flex:1;height:5px;overflow:hidden}.study-bar,.study-bar>span{border-radius:var(--radius-full)}.study-bar>span{background:var(--primary);display:block;height:100%}.study-bar.b-pass>span{background:var(--success)}.study-bar.b-write>span{background:var(--warning)}.study-bar.b-fail>span{background:var(--danger)}.study-bar.b-not>span{background:var(--text-faint)}.study-pct{color:var(--text-secondary);font-size:10px;font-weight:500;min-width:26px;text-align:right}.pill,.study-pct{font-family:var(--font-mono)}.pill{align-items:center;border:0;border-radius:var(--radius-full);display:inline-flex;font-size:9px;font-weight:600;letter-spacing:.08em;line-height:15px;padding:3px 10px;text-transform:uppercase;white-space:nowrap}.pill.passed{background:var(--success-tint);color:var(--success-dark)}.pill.writing{background:var(--warning-tint);color:var(--warning-dark)}.pill.failed{background:var(--danger-tint);color:var(--danger-dark)}.pill.notwrite{background:var(--neutral-tint);color:var(--text-secondary)}.pill.active{background:var(--success-tint);color:var(--success-dark)}.pill.expired{background:var(--danger-tint);color:var(--danger-dark)}.pill.cert-period{background:var(--terracotta-tint);color:var(--terracotta-dark)}.pill.newenr{background:var(--primary-tint);color:var(--primary-dark)}.pill.invited{background:var(--neutral-tint);color:var(--text-secondary)}.pill.gap{background:var(--warning-tint);color:var(--warning-dark)}.cert-cell{font-family:var(--font-mono);font-feature-settings:"tnum";font-size:11px;font-weight:500;white-space:nowrap}.cert-cell .grade{color:var(--text-primary);font-weight:600}.cert-cell .att{color:var(--text-muted);font-size:10px;font-weight:500;margin-left:2px}.cert-cell.pass .grade{color:var(--success-dark)}.cert-cell.pass .att{color:var(--success)}.cert-cell.fail .grade{color:var(--danger-dark)}.cert-cell.fail .att{color:var(--danger)}.cert-cell.writing .grade{color:var(--warning-dark)}.cert-cell.writing .att{color:var(--warning)}.cert-cell.empty{color:var(--text-faint);text-align:center}.last-act{color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;font-weight:500}.last-act.never{color:var(--text-faint)}.evcid-cell{background:var(--primary-tint);border-radius:var(--radius-full);color:var(--primary-dark);display:inline-block;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.06em;padding:2px 7px}.cipr-cell{font-size:10.5px;font-weight:500;letter-spacing:0}.cipr-cell,.days-left{color:var(--text-secondary);font-family:var(--font-mono)}.days-left{font-size:11px;font-weight:600}.days-left.urgent{color:var(--warning-dark)}.days-left.expired{color:var(--danger-dark)}.variant-cell{color:var(--text-secondary);display:block;font-size:11px;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pract-cell{font-family:var(--font-mono);font-size:11px;font-weight:600}.pract-cell.full{color:var(--success-dark)}.pract-cell.partial{color:var(--warning-dark)}.pract-cell.empty{color:var(--text-faint)}.study-time{color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;font-weight:500}.study-time.suspect{color:var(--warning-dark);cursor:help}.pagn{background:var(--bg-alt);border-top:1px solid var(--border);color:var(--text-muted);font-family:var(--font-mono);font-size:10px;justify-content:space-between;letter-spacing:.06em;padding:14px 22px;text-transform:uppercase}.pagn,.pagn .left{align-items:center;display:flex}.pagn .left{gap:10px}.pagn .pp{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:inline-flex;font-weight:500;gap:6px;padding:6px 10px;transition:border-color .12s,background .12s}.pagn .pp:hover{background:var(--primary-tint);border-color:var(--primary)}.pagn .right{align-items:center;display:flex;gap:8px}.pagn .nav{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:inline-flex;font-size:12px;height:26px;justify-content:center;transition:border-color .12s,background .12s,color .12s;width:26px}.pagn .nav:hover{background:var(--primary-tint);border-color:var(--primary);color:var(--primary)}.pagn .nav.dim{cursor:not-allowed}.pagn .nav.dim,.pagn .nav.dim:hover{background:var(--bg-alt);color:var(--text-faint)}.pagn .nav.dim:hover{border-color:var(--border)}table.atlas .col-hidden{display:none}.drawer{background:var(--surface);border-left:1px solid var(--border);bottom:0;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-width:100vw;overflow:hidden;position:fixed;right:0;top:0;transform:translate(100%);transition:transform var(--dur-mid) var(--ease-std);width:520px;z-index:100}.drawer.open{transform:translate(0)}@media(max-width:1023px){.drawer{border-left:none;width:100vw}}@media(max-width:768px){.drw-close{height:44px;right:12px;top:12px;width:44px}.drw-head{padding:18px 22px 16px}.drw-name{margin-right:56px}}.drw-head{background:var(--bg-alt);border-bottom:1px solid var(--border);padding:24px 26px 20px;position:relative}.drw-close{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:inline-flex;font-size:16px;height:30px;justify-content:center;line-height:1;position:absolute;right:18px;top:18px;transition:border-color .12s,color .12s,background .12s;width:30px}.drw-close:hover{background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}.drw-name{color:var(--text-primary);font-family:var(--font-display);font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0 60px 8px 0}.drw-meta{align-items:center;color:var(--text-muted);display:flex;font-family:var(--font-mono);font-size:10px;gap:14px;letter-spacing:.08em;text-transform:uppercase}.drw-meta .pulse{background:var(--success);border-radius:50%;display:inline-block;height:5px;margin-right:5px;width:5px}.drw-meta .refresh{color:var(--primary);cursor:pointer;margin-left:auto;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.sub-status{align-items:center;background:var(--primary-tint);border-bottom:1px solid var(--border);color:var(--primary-dark);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:8px;padding:12px 26px}.sub-status .ss-label{color:var(--primary-dark);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.sub-status .ss-sep{color:var(--primary);opacity:.5}.sub-status .ss-variant{color:var(--text-primary);font-family:var(--font-body);font-size:12px;font-weight:600}.sub-status .ss-days{font-weight:600}.sub-status .ss-date{color:var(--primary-dark)}.sub-status.urgent{background:var(--warning-tint);border-bottom-color:var(--warning)}.sub-status.urgent,.sub-status.urgent .ss-date,.sub-status.urgent .ss-label{color:var(--warning-dark)}.sub-status.urgent .ss-sep{color:var(--warning)}.sub-status.expired{background:var(--danger-tint);border-bottom-color:var(--danger)}.sub-status.expired,.sub-status.expired .ss-date,.sub-status.expired .ss-label{color:var(--danger-dark)}.sub-status.expired .ss-sep{color:var(--danger)}.sub-status.unknown{background:var(--neutral-tint);border-bottom-color:var(--border);color:var(--text-muted)}.sub-status.unknown .ss-label{color:var(--text-secondary)}.sub-status.unknown .ss-sep{color:var(--text-faint)}.sub-status.unknown .ss-variant{color:var(--text-secondary)}.sub-status .ss-note{color:var(--text-faint);font-style:italic}.drw-grid{border-bottom:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr 1fr}.drw-cell{border-bottom:1px solid var(--border-soft);border-right:1px solid var(--border-soft);padding:16px 20px}.drw-cell:nth-child(3n){border-right:none}.drw-cell:nth-last-child(-n+3){border-bottom:none}.drw-cell .lbl{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;margin:0 0 6px;text-transform:uppercase}.drw-cell .val{color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:500;line-height:1.35;overflow-wrap:anywhere;word-break:break-word}.drw-cell .val.mono{font-family:var(--font-mono);font-size:12px}.drw-cell .val a{color:inherit;text-decoration:none}.drw-body{flex:1;overflow-y:auto;padding:0}.acc{border-bottom:1px solid var(--border)}.acc:last-child{border-bottom:none}.acc-head{align-items:center;cursor:pointer;display:flex;justify-content:space-between;padding:16px 26px 14px;transition:background .12s}.acc-head:hover{background:var(--bg-alt)}.acc-head .title{align-items:center;color:var(--primary);display:inline-flex;font-family:var(--font-mono);font-size:10px;font-weight:600;gap:10px;letter-spacing:.12em;text-transform:uppercase}.acc-head .title .rule{background:var(--primary);border-radius:var(--radius-full);display:inline-block;height:2px;width:18px}.acc-head .count{color:var(--text-muted);font-family:var(--font-mono);font-size:10px;font-weight:500;margin-left:auto;margin-right:14px}.acc-head .chev{color:var(--text-muted);font-size:12px;transition:transform .16s}.acc-body{padding:0 26px 20px}.acc.collapsed .acc-body{display:none}.acc.collapsed .acc-head .chev{transform:rotate(-90deg)}.practice-body{padding:0}.practice-empty{color:var(--text-faint);font-family:var(--font-mono);font-size:11px;font-style:italic;margin:0;padding:10px 0}.practice-list{list-style:none;margin:0;padding:0}.practice-subject-card{border-top:1px solid var(--border-soft);padding:14px 0}.practice-subject-card:first-child{border-top:1px solid var(--border)}.practice-subject-name{color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:600;margin-bottom:8px}.practice-pair{align-items:stretch;display:grid;gap:8px;grid-template-columns:1fr 1fr}.practice-cell{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:5px;min-width:0;padding:10px 11px}.practice-cell .practice-kind{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.practice-cell .practice-grade{color:var(--text-primary);font-family:var(--font-mono);font-feature-settings:"tnum";font-size:13px;font-weight:700}.practice-cell .practice-grade.pass{color:var(--success-dark)}.practice-cell .practice-grade.fail{color:var(--danger-dark)}.practice-cell .practice-grade.empty{color:var(--text-faint);font-weight:500}.practice-cell .pill{align-self:flex-start}.practice-cell .practice-duration{color:var(--text-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.02em}.practice-cell .practice-duration.capped{color:var(--warning-dark);cursor:help}.att-toggle{background:transparent;border:1px solid rgba(60,131,246,.22);border-radius:var(--radius-full);color:var(--primary);cursor:pointer;font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.04em;padding:3px 8px;transition:background .12s,border-color .12s;white-space:nowrap}.att-toggle.expanded,.att-toggle:hover{background:var(--primary-tint);border-color:var(--primary)}.att-toggle.expanded{color:var(--primary-dark)}.practice-cell .attempt-list{border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:4px;list-style:none;margin:6px 0 0;padding:8px 0 0}.practice-cell .att-item{align-items:baseline;color:var(--text-muted);display:grid;font-family:var(--font-mono);font-size:10px;gap:6px;grid-template-columns:22px auto auto 1fr;padding:2px 0}.practice-cell .att-item .att-n{color:var(--text-faint);font-weight:600}.practice-cell .att-item .att-grade{color:var(--text-secondary);font-weight:600;min-width:32px}.practice-cell .att-item .att-dur{color:var(--text-muted)}.practice-cell .att-item .att-when{color:var(--text-faint);font-size:9px;text-align:right}.practice-cell .att-pass .att-grade{color:var(--success-dark)}.practice-cell .att-fail .att-grade{color:var(--danger-dark)}.practice-cell .att-writing .att-grade{color:var(--warning-dark)}.practice-summary{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;margin-bottom:10px;padding:10px 12px}.practice-summary .ps-label{color:var(--text-muted);font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.practice-summary .ps-nums{color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:500}.practice-summary .ps-nums strong{color:var(--success-dark);font-weight:700}.practice-summary .ps-note{color:var(--text-faint);font-family:var(--font-mono);font-size:9px;font-style:italic}.cert-list{list-style:none;margin:0;padding:0}.cert-row{align-items:center;border-top:1px solid var(--border-soft);display:grid;gap:10px;grid-template-columns:1fr auto auto auto;padding:12px 0}.cert-list li:first-child .cert-row{border-top:1px solid var(--border)}.cert-list .attempt-list{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;list-style:none;margin:4px 0 8px;padding:8px 12px}.cert-list .att-item{align-items:baseline;color:var(--text-muted);display:grid;font-family:var(--font-mono);font-size:10px;gap:6px;grid-template-columns:22px auto 1fr;padding:2px 0}.cert-list .att-item .att-n{color:var(--text-faint);font-weight:600}.cert-list .att-item .att-grade{color:var(--text-secondary);font-weight:600;min-width:32px}.cert-list .att-item .att-when{color:var(--text-faint);font-size:9px;text-align:right}.cert-list .att-pass .att-grade{color:var(--success-dark)}.cert-list .att-fail .att-grade{color:var(--danger-dark)}.cert-list .att-writing .att-grade{color:var(--warning-dark)}.cert-list li{border:none;padding:0}.cert-list .subject{color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:600}.cert-list .subject .when{color:var(--text-muted);display:block;font-family:var(--font-mono);font-size:10px;font-weight:400;margin-top:3px}.cert-list .grade-cell{font-family:var(--font-mono);font-size:13px;font-weight:600;text-align:right}.cert-list .grade-cell.pass{color:var(--success-dark)}.cert-list .grade-cell.fail{color:var(--danger-dark)}.cert-list .grade-cell .att{color:var(--text-muted);font-size:10px;font-weight:500;margin-left:4px}.study-list{list-style:none;margin:0;padding:0}.bucket-card{border-top:1px solid var(--border-soft);padding:14px 0}.study-list .bucket-card:first-child{border-top:1px solid var(--border)}.bucket-head{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:8px}.bucket-head .name{color:var(--text-primary);font-family:var(--font-body);font-size:13px;font-weight:600}.bucket-head .num{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;font-weight:500;text-align:right}.bucket-head .num strong{color:var(--text-primary);font-weight:600}.bucket-progress{margin-bottom:4px}.bucket-progress .bar-dual{background:var(--neutral-tint);border-radius:var(--radius-full);display:flex;height:6px;overflow:hidden}.bucket-progress .bar-done{background:var(--success);border-radius:var(--radius-full) 0 0 var(--radius-full)}.bucket-progress .bar-accessed,.bucket-progress .bar-done{height:100%;min-width:0;transition:width .3s var(--ease-std)}.bucket-progress .bar-accessed{background:repeating-linear-gradient(-45deg,var(--warning-tint),var(--warning-tint) 2px,var(--warning) 2px,var(--warning) 4px)}.bucket-progress .bar-done:last-child{border-radius:var(--radius-full)}.bucket-legend{color:var(--text-muted);display:flex;font-family:var(--font-mono);font-size:9px;gap:12px;letter-spacing:.02em}.bucket-legend .leg-done:before{background:var(--success)}.bucket-legend .leg-accessed:before,.bucket-legend .leg-done:before{border-radius:2px;content:"";display:inline-block;height:8px;margin-right:4px;vertical-align:middle;width:8px}.bucket-legend .leg-accessed:before{background:var(--warning)}.bucket-sub{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.bucket-sub-item{background:var(--bg-alt);border-radius:var(--radius-full);color:var(--text-faint);font-family:var(--font-mono);font-size:9px;padding:2px 8px}.bucket-meta{color:var(--text-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.02em}.id-list{list-style:none;margin:0;padding:0}.id-list li{border-top:1px solid var(--border-soft);display:grid;gap:14px;grid-template-columns:120px 1fr;padding:9px 0}.id-list li:first-child{border-top:1px solid var(--border)}.id-list .key{color:var(--text-muted);font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.1em;padding-top:2px;text-transform:uppercase}.id-list .val{color:var(--text-primary);font-family:var(--font-body);font-size:12px;font-weight:500;line-height:1.4}.id-list .val.mono{color:var(--text-secondary);font-weight:500}.id-list .val .accent,.id-list .val.mono{font-family:var(--font-mono);font-size:11px}.id-list .val .accent{background:var(--warning-tint);border-radius:var(--radius-full);color:var(--warning-dark);font-weight:600;margin-left:6px;padding:2px 7px}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.page.loading .lead-block{animation:fade-up .34s var(--ease-std) .12s both}.page.loading .tiles .tile-row:first-of-type{animation:fade-up .42s var(--ease-std) .9s both}.page.loading .tiles .tile-row:nth-of-type(2){animation:fade-up .42s var(--ease-std) 1.3s both}.page.loading .filters{animation:fade-up .34s var(--ease-std) 1.7s both}.page.loading .table-wrap{animation:scale-in .38s var(--ease-std) 1.9s both}@media(prefers-reduced-motion:reduce){.page.loading .filters,.page.loading .lead-block,.page.loading .table-wrap,.page.loading .tiles .tile-row{animation:none}}@keyframes sk-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.sk-block,.sk-line{animation:sk-shimmer 1.4s ease-in-out infinite;background:linear-gradient(90deg,var(--neutral-tint) 0,var(--bg-alt) 50%,var(--neutral-tint) 100%);background-size:200% 100%;border-radius:var(--radius-sm);display:inline-block;vertical-align:middle}.sk-line{height:10px}.sk-block{display:block}.acc .acc-head:focus-visible,.dropdown-item:focus-visible,.insight-count:focus-visible,.tile:focus-visible,table.atlas tbody tr:focus-visible,table.atlas thead.cols th:focus-visible{border-radius:var(--radius-sm);box-shadow:0 0 0 3px #3c83f68c;outline:none}.dropdown-item[aria-selected=true]:focus-visible{background:var(--primary-tint)}.skip-to-main{background:var(--primary);border-radius:var(--radius-sm);color:var(--surface);font-family:var(--font-body);font-size:13px;font-weight:600;left:8px;padding:8px 14px;position:absolute;text-decoration:none;top:8px;transform:translateY(-200%);transition:transform var(--dur-fast) var(--ease-std);z-index:1000}.skip-to-main:focus,.skip-to-main:focus-visible{outline:2px solid var(--surface);outline-offset:2px;transform:translateY(0)}.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}@media(prefers-reduced-motion:reduce){.sk-block,.sk-line{animation:none;background:var(--neutral-tint)}.page.loading .filters,.page.loading .lead-block,.page.loading .table-wrap,.page.loading .tiles .tile-row{animation:none!important}.skip-to-main{transition:none}}.auth-shell{align-items:center;background:linear-gradient(180deg,var(--bg-alt),var(--bg));display:flex;justify-content:center;min-height:100dvh;padding:2rem 1rem}.auth-shell__card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);max-width:420px;padding:2rem;width:100%}.auth-shell__logo{display:block;height:auto;margin:0 auto 1.25rem;max-width:100%;width:240px}.auth-shell__title{color:var(--text-primary);font-family:var(--font-display);font-size:1.125rem;font-weight:700;line-height:1.3;margin:0 0 .375rem;text-align:center}.auth-shell__subtitle{color:var(--text-secondary);font-family:var(--font-body);font-size:.875rem;line-height:1.45;margin:0 0 1.5rem;text-align:center}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-form__title{color:var(--text-primary);font-family:var(--font-display);font-size:1.25rem;font-weight:700;margin:0 0 .25rem}.auth-form__remember{align-items:center;color:var(--text-secondary);cursor:pointer;display:flex;font-size:.9rem;gap:.5rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.auth-form__submit{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--primary);border:1px solid var(--primary-dark);border-radius:var(--radius);color:#fff;cursor:pointer;font-family:var(--font-display);font-size:1rem;font-weight:600;padding:.75rem 1rem;transition:background .12s ease,transform .12s ease}.auth-form__submit:hover:not(:disabled){background:var(--primary-dark)}.auth-form__submit:disabled{cursor:not-allowed;opacity:.6}.auth-form__submit--secondary{background:var(--surface);border-color:var(--border);color:var(--text-primary);display:inline-block;text-align:center;text-decoration:none}.auth-form__submit--secondary:hover:not(:disabled){background:var(--bg-alt);border-color:var(--border-strong);color:var(--text-primary)}.auth-form__error{padding:.75rem}.auth-form__error,.auth-form__reasons{background:var(--danger-tint);border:1px solid var(--danger);border-radius:var(--radius);color:var(--danger-dark);font-size:.875rem;margin:.5rem 0 0}.auth-form__reasons{padding:.75rem .75rem .75rem 1.5rem}.auth-form__reasons li{margin:.125rem 0}.auth-form__invitee{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius);padding:.75rem 1rem}.auth-form__invitee-label{color:var(--text-muted);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.auth-form__invitee-name{color:var(--text-primary);font-family:var(--font-display);font-size:1rem;font-weight:600;margin-top:.125rem}.auth-form__invitee-email{color:var(--text-secondary);font-size:.875rem}.auth-form__forgot{font-size:.875rem;margin:4px 0 12px;text-align:right}.auth-form__forgot a{color:var(--primary-dark);text-decoration:none;transition:-webkit-text-decoration .12s ease;transition:text-decoration .12s ease;transition:text-decoration .12s ease,-webkit-text-decoration .12s ease}.auth-form__forgot a:hover{text-decoration:underline}.auth-form__access-footer{border-top:1px solid var(--border);color:var(--text-secondary);font-size:.875rem;margin-top:1rem;padding-top:1rem;text-align:center}.auth-form__access-footer a{color:var(--primary-dark);font-weight:600;text-decoration:none;transition:-webkit-text-decoration .12s ease;transition:text-decoration .12s ease;transition:text-decoration .12s ease,-webkit-text-decoration .12s ease}.auth-form__access-footer a:hover{text-decoration:underline}.form-field{display:flex;flex-direction:column;gap:.25rem}.form-field__label{color:var(--text-secondary);font-size:.8rem;font-weight:600}.form-field__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font:inherit;font-size:.95rem;padding:.6rem .75rem;transition:border-color .12s ease,box-shadow .12s ease}.form-field__input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint);outline:none}.form-field__input:disabled{background:var(--bg-alt);color:var(--text-muted);cursor:not-allowed}.form-field--invalid .form-field__input{border-color:var(--danger)}.form-field__helper{color:var(--text-muted);font-size:.8rem}.form-field__error{color:var(--danger-dark);font-size:.8rem}.captcha{margin-top:.25rem}.captcha__box{align-items:center;background:var(--bg-alt);border:1px dashed var(--border-strong);border-radius:var(--radius);display:flex;gap:.75rem;padding:.625rem .875rem}.captcha__icon{font-size:1.25rem}.captcha__title{color:var(--text-primary);font-size:.875rem;font-weight:600}.captcha__sub{color:var(--text-muted);font-size:.75rem}.pw-meter{align-items:center;display:flex;gap:.75rem}.pw-meter__track{display:flex;flex:1;gap:4px}.pw-meter__seg{background:var(--border-soft);border-radius:3px;flex:1;height:6px;transition:background .12s ease}.pw-meter[data-level="1"] .pw-meter__seg--on{background:var(--warning)}.pw-meter[data-level="2"] .pw-meter__seg--on{background:var(--warning-dark)}.pw-meter[data-level="3"] .pw-meter__seg--on{background:var(--success)}.pw-meter[data-level="4"] .pw-meter__seg--on{background:var(--success-dark)}.pw-meter__label{color:var(--text-muted);font-size:.75rem;min-width:90px;text-align:right}.app-shell{display:flex;flex-direction:column;min-height:100dvh}.app-shell__main{flex:1;min-height:0}.user-bar{flex:0 0 auto;position:relative}.user-bar__trigger{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-primary);cursor:pointer;display:inline-flex;font:inherit;gap:10px;padding:4px 10px 4px 14px;transition:background .12s ease,border-color .12s ease}.user-bar__trigger:hover,.user-bar__trigger[aria-expanded=true]{background:var(--bg-alt);border-color:var(--border-strong)}.user-bar__avatar{align-items:center;background:linear-gradient(135deg,var(--primary) 0,var(--primary-dark) 100%);border-radius:50%;box-shadow:var(--shadow-sm);color:#fff;display:inline-flex;flex:0 0 auto;font-family:var(--font-display);font-size:11px;font-weight:700;height:30px;justify-content:center;letter-spacing:.04em;order:2;width:30px}.user-bar__name{color:var(--text-secondary);font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:-.005em;order:1;white-space:nowrap}.user-bar__caret{color:var(--text-muted);margin-left:-2px;order:3}.user-bar__menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:240px;padding:.5rem;position:absolute;right:0;top:calc(100% + 8px);z-index:30}.user-bar__menu-header{padding:.5rem .75rem}.user-bar__menu-name{color:var(--text-primary);font-size:.875rem;font-weight:600}.user-bar__menu-email{color:var(--text-muted);font-size:.8125rem}.user-bar__menu-sep{background:var(--border-soft);height:1px;margin:.25rem 0}.user-bar__menu-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:block;font:inherit;font-size:.875rem;padding:.5rem .75rem;text-align:left;transition:background .12s ease;width:100%}.user-bar__menu-item:hover:not(:disabled){background:var(--bg-alt)}.user-bar__menu-item:disabled{color:var(--text-muted);cursor:default}.landing{align-items:center;display:flex;justify-content:center;min-height:100dvh;padding:2rem 1rem}.landing__card{max-width:420px;text-align:center}.landing__title{color:var(--primary-dark);font-family:var(--font-display);font-size:2.25rem;font-weight:800;letter-spacing:-.02em;margin:0 0 .5rem}.landing__subtitle{color:var(--text-secondary);margin:0 0 1.5rem}.landing__actions{display:flex;justify-content:center}.landing__btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--primary);border:1px solid var(--primary-dark);border-radius:var(--radius);color:#fff;cursor:pointer;font-family:var(--font-display);font-weight:600;padding:.6rem 1.25rem;text-decoration:none;transition:background .12s ease}.landing__btn:hover{background:var(--primary-dark)}.notice-stack{display:flex;flex-direction:column;gap:.5rem;max-width:min(400px,100vw - 2rem);pointer-events:none;position:fixed;right:1rem;top:64px;z-index:40}.notice-stack__item{align-items:flex-start;animation:notice-in .16s ease-out;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);color:var(--text-primary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.6rem .75rem;pointer-events:auto}.notice-stack__item--error{background:var(--danger-tint);border-color:var(--danger);color:var(--danger-dark)}.notice-stack__item--warning{background:var(--warning-tint,var(--bg-alt));border-color:var(--warning);color:var(--warning-dark,var(--text-primary))}.notice-stack__item--success{background:var(--success-tint,var(--bg-alt));border-color:var(--success);color:var(--success-dark,var(--text-primary))}.notice-stack__item--info{background:var(--surface);border-color:var(--border-strong)}.notice-stack__message{flex:1;line-height:1.35}.notice-stack__close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:inherit;cursor:pointer;font-size:1.25rem;line-height:1;opacity:.7;padding:0 .25rem}.notice-stack__close:hover{opacity:1}@keyframes notice-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.login-reason{background:var(--bg-alt);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius);color:var(--text-primary);font-size:.875rem;margin-bottom:1rem;padding:.625rem .875rem}.forbidden{margin:4rem auto;max-width:560px;padding:2rem;text-align:center}.forbidden__title{color:var(--text-primary);font-family:var(--font-display);font-size:1.5rem;font-weight:700;margin:0 0 .5rem}.forbidden__body{color:var(--text-secondary);line-height:1.5;margin:0 0 1.5rem}.forbidden__actions{display:flex;justify-content:center}.accept-invite{display:flex;flex-direction:column;gap:1rem}.accept-invite__loading{color:var(--text-muted);padding:1rem;text-align:center}.accept-invite__expired{display:flex;flex-direction:column;gap:1rem;text-align:center}.accept-invite__expired p{color:var(--text-secondary);margin:0}.admin-shell{margin:0 auto;max-width:1200px;padding:1.5rem}@media(max-width:1023.98px){.admin-shell{padding:1.25rem 1rem}}@media(max-width:768px){.admin-shell{padding:1rem .75rem}}.admin-shell__title{color:var(--text-primary);font-family:var(--font-display);font-size:1.5rem;font-weight:700;margin:0 0 1rem}.admin-shell__toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.admin-shell__search{flex:1;max-width:400px;min-width:200px}.admin-shell__actions{display:flex;gap:.5rem;margin-left:auto}.admin-shell--landing{padding-top:4rem;text-align:center}.admin-shell__hint{color:var(--text-muted);font-family:var(--font-body);font-size:.9375rem;margin:0}.admin-table{background:var(--surface);border:1px solid var(--border);border-collapse:separate;border-radius:var(--radius);border-spacing:0;width:100%}.admin-table td,.admin-table th{border-bottom:1px solid var(--border-soft);font-size:.875rem;padding:.625rem .75rem;text-align:left}.admin-table thead th{background:var(--bg-alt);color:var(--text-secondary);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.admin-table thead tr:first-child th:first-child{border-top-left-radius:var(--radius)}.admin-table thead tr:first-child th:last-child{border-top-right-radius:var(--radius)}.admin-table tbody tr:last-child td:first-child{border-bottom-left-radius:var(--radius)}.admin-table tbody tr:last-child td:last-child{border-bottom-right-radius:var(--radius)}.admin-table tbody tr{transition:background .12s ease}.admin-table tbody tr:hover{background:var(--bg-alt);cursor:pointer}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table__empty{color:var(--text-muted);padding:2rem;text-align:center}.admin-table__actions{text-align:right;white-space:nowrap;width:1%}@media(max-width:1023.98px){.admin-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.admin-table td,.admin-table th{padding:.5rem .625rem;white-space:nowrap}}@media(max-width:768px){.admin-table td,.admin-table th{font-size:13px;padding:.5rem}.admin-table thead th{font-size:11px}}.status-badge{align-items:center;border-radius:var(--radius-full);display:inline-flex;font-size:.75rem;font-weight:600;letter-spacing:.04em;padding:2px 8px;text-transform:uppercase}.status-badge--invited{background:var(--warning-tint,#fff4d6);color:var(--warning-dark,#8a5a00)}.status-badge--active{background:var(--success-tint,#d9f5e3);color:var(--success-dark,#0f7a44)}.status-badge--disabled{background:var(--danger-tint);color:var(--danger-dark)}.role-badge{align-items:center;background:var(--primary-tint);border-radius:var(--radius-full);color:var(--primary-dark);display:inline-flex;font-size:.75rem;font-weight:600;gap:.375rem;padding:2px 8px}.role-badge__close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;opacity:.6;padding:0}.role-badge__close:hover{opacity:1}.row-actions{position:relative}.row-actions__trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:1rem;padding:.25rem .5rem}.row-actions__trigger:hover{background:var(--bg-alt);color:var(--text-primary)}.row-actions__menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:160px;padding:.25rem;position:absolute;right:0;top:calc(100% + 4px);z-index:20}.row-actions__item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:block;font-size:.875rem;padding:.5rem .75rem;text-align:left;width:100%}.row-actions__item:hover{background:var(--bg-alt)}.row-actions__item--danger{color:var(--danger-dark)}.admin-pagination{align-items:center;display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}.admin-pagination__info{color:var(--text-muted);font-size:.875rem}.admin-pagination__btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-size:.875rem;padding:.375rem .75rem}.admin-pagination__btn:hover:not(:disabled){background:var(--bg-alt)}.admin-pagination__btn:disabled{cursor:not-allowed;opacity:.5}.admin-detail{display:flex;flex-direction:column;gap:1.25rem;margin:0 auto;max-width:960px;padding:1.5rem}.admin-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem}.admin-section__title{color:var(--text-primary);font-family:var(--font-display);font-size:1rem;font-weight:600;margin:0 0 .75rem}.admin-section__grid{display:grid;font-size:.875rem;gap:.5rem 1rem;grid-template-columns:140px 1fr}.admin-section__grid dt{color:var(--text-muted);font-weight:500}.admin-section__grid dd{color:var(--text-primary);margin:0}.admin-section__empty{color:var(--text-muted);font-size:.875rem;padding:.5rem 0}.admin-section__badges{display:flex;flex-wrap:wrap;gap:.5rem}.admin-section--danger{border-color:var(--danger)}.modal{align-items:center;background:#00000073;display:flex;inset:0;justify-content:center;padding:2rem 1rem;position:fixed;z-index:50}.modal__panel{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:90vh;max-width:560px;overflow-x:hidden;overflow-y:auto;width:100%}.modal__body .form-field__input{min-width:0;width:100%}.modal__header{align-items:center;border-bottom:1px solid var(--border-soft);display:flex;padding:1rem 1.25rem}.modal__header-title{font-family:var(--font-display);font-size:1.125rem;font-weight:700;margin:0}.modal__header-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:1.25rem;margin-left:auto;padding:.25rem .5rem}.modal__header-close:hover{background:var(--bg-alt);color:var(--text-primary)}.modal__body{display:flex;flex-direction:column;gap:.875rem;padding:1.25rem}.modal__footer{background:var(--bg-alt);border-radius:0 0 var(--radius-lg) var(--radius-lg);border-top:1px solid var(--border-soft);display:flex;gap:.5rem;justify-content:flex-end;padding:.875rem 1.25rem}.provider-rows{display:flex;flex-direction:column;gap:.5rem}.provider-rows__row{align-items:center;display:grid;gap:.5rem;grid-template-columns:1fr 1fr 1.5fr auto}.provider-rows__remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--danger-dark);cursor:pointer;font-size:1rem}.provider-rows__remove:hover{color:var(--danger)}.provider-rows__add{align-self:flex-start;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:.875rem;padding:.375rem .75rem}.provider-rows__add:hover{border-color:var(--primary);color:var(--primary-dark)}.permission-checklist{display:flex;flex-direction:column;gap:1rem}.permission-checklist__category{background:var(--bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius);padding:.75rem 1rem}.permission-checklist__category-head{align-items:center;color:var(--text-primary);display:flex;font-size:.875rem;font-weight:600;gap:.5rem;margin-bottom:.5rem;text-transform:capitalize}.permission-checklist__category-count{color:var(--text-muted);font-size:.75rem;font-weight:400}.permission-checklist__category-all{align-items:center;color:var(--text-secondary);cursor:pointer;display:inline-flex;font-size:.75rem;gap:.25rem;margin-left:auto}.permission-checklist__items{display:grid;gap:.375rem 1rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.permission-checklist__item{align-items:flex-start;cursor:pointer;display:flex;font-size:.8125rem;gap:.5rem;line-height:1.3;-webkit-user-select:none;-moz-user-select:none;user-select:none}.permission-checklist__item input[type=checkbox]{margin-top:2px}.permission-checklist__item-code{color:var(--text-primary);font-family:var(--font-mono,monospace);font-weight:500}.permission-checklist__item-desc{color:var(--text-muted);font-size:.75rem}.permission-checklist[data-disabled=true]{opacity:.7;pointer-events:none}.template-diff{display:flex;flex-direction:column;gap:.5rem}.template-diff__group{border:1px solid var(--border-soft);border-radius:var(--radius);padding:.5rem .75rem}.template-diff__group-title{font-size:.8125rem;font-weight:600;margin:0 0 .25rem}.template-diff__group ul{font-family:var(--font-mono,monospace);font-size:.8125rem;margin:0;padding-left:1.25rem}.template-diff__group--added{background:var(--success-tint,#d9f5e3);border-color:var(--success,#0f7a44)}.template-diff__group--removed{background:var(--danger-tint);border-color:var(--danger,#c6334d)}.template-diff__affected{color:var(--text-primary);font-weight:600}.template-diff__system-warning{background:var(--warning-tint,#fff4d6);border:1px solid var(--warning,#d9a400);border-radius:var(--radius);color:var(--warning-dark,#8a5a00);font-size:.8125rem;padding:.625rem .75rem}.permission-inspector{display:flex;flex-direction:column;gap:.5rem}.permission-inspector__category{border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden}.permission-inspector__category-head{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-alt);border:none;cursor:pointer;display:flex;font-size:.8125rem;font-weight:600;gap:.5rem;padding:.5rem .75rem;text-align:left;text-transform:capitalize;width:100%}.permission-inspector__category-head:hover{background:var(--surface)}.permission-inspector__chevron{color:var(--text-secondary)}.permission-inspector__count{color:var(--text-muted);font-size:.75rem;font-weight:400;margin-left:auto}.permission-inspector__items{display:flex;flex-direction:column;gap:.375rem;padding:.5rem .75rem}.permission-inspector__row{align-items:center;display:flex;font-size:.8125rem;gap:.5rem}.permission-inspector__code{color:var(--text-primary);font-family:var(--font-mono,monospace);font-weight:500}.permission-inspector__code--denied{color:var(--text-muted);text-decoration:line-through}.permission-inspector__suppressed{color:var(--danger-dark);font-size:.75rem}.source-badge{align-items:center;border-radius:var(--radius-full);display:inline-flex;font-size:.6875rem;font-weight:600;letter-spacing:0;margin-left:auto;padding:1px 8px;text-transform:none}.source-badge--role{background:var(--primary-tint);color:var(--primary-dark)}.source-badge--grant{background:var(--success-tint,#d9f5e3);color:var(--success-dark,#0f7a44)}.source-badge--deny{background:var(--danger-tint);color:var(--danger-dark)}.parent-picker{position:relative}.parent-picker__menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);left:0;max-height:240px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 2px);z-index:10}.parent-picker__item{cursor:pointer;font-size:.875rem;padding:.5rem .75rem}.parent-picker__item--active,.parent-picker__item:hover{background:var(--bg-alt)}.parent-picker__item-name{color:var(--text-primary);font-weight:600}.parent-picker__item-meta{color:var(--text-muted);font-size:.75rem}.parent-picker__empty{color:var(--text-muted);font-size:.875rem;padding:.75rem;text-align:center}.admin-filter-bar{align-items:flex-end;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:1rem;padding:16px 18px}.admin-filter-bar__group{display:flex;flex-direction:column;gap:6px;min-width:0}.admin-filter-bar__group--grow{flex:1 1 16rem;min-width:16rem}.admin-filter-bar__action{align-self:flex-end;margin-left:auto}.admin-filter-bar .filter-chip,.admin-filter-bar .form-field__input,.admin-filter-bar .status-filter,.admin-filter-bar select.form-field__input,.admin-filter-bar__action{box-sizing:border-box;height:43px;min-height:43px}.admin-filter-bar__group.form-field,.admin-filter-bar__group>.form-field{gap:6px}@media(max-width:768px){.admin-filter-bar{align-items:stretch;flex-direction:column;gap:12px;padding:14px}.admin-filter-bar__group{width:100%}.admin-filter-bar__group--grow{flex:1 1 auto;min-width:0}.admin-filter-bar__action{align-self:stretch;margin-left:0;width:100%}}.status-filter{align-items:center;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;gap:2px;padding:3px}.status-filter__btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:500;letter-spacing:-.005em;padding:5px 12px;transition:background var(--dur-fast,.14s) var(--ease-std,ease),color var(--dur-fast,.14s) var(--ease-std,ease)}.status-filter__btn:hover{color:var(--text-primary)}.status-filter__btn--active{background:var(--surface);box-shadow:var(--shadow-sm);color:var(--primary-dark)}.status-filter__btn:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.filter-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:500;padding:6px 12px;transition:background var(--dur-fast,.14s) var(--ease-std,ease),color var(--dur-fast,.14s) var(--ease-std,ease),border-color var(--dur-fast,.14s) var(--ease-std,ease)}.filter-chip:hover{border-color:var(--border-strong);color:var(--text-primary)}.filter-chip--active{background:#ecf3fe;border-color:var(--primary);color:var(--primary-dark)}.filter-chip:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.app-error[data-v-ae5f5882]{font-family:var(--font-body);margin:4rem auto;max-width:560px;padding:2rem;text-align:center}.app-error__code[data-v-ae5f5882]{color:var(--text-faint);font-family:var(--font-mono);font-feature-settings:"tnum","lnum";font-size:11px;letter-spacing:.18em;margin:0 0 .75rem;text-transform:uppercase}.app-error__title[data-v-ae5f5882]{color:var(--text-primary);font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:-.01em;margin:0 0 .5rem}.app-error__body[data-v-ae5f5882]{color:var(--text-secondary);font-size:14px;line-height:1.5;margin:0 0 1.5rem}.app-error__actions[data-v-ae5f5882]{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center}.app-error__action[data-v-ae5f5882]{align-items:center;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;display:inline-flex;font-family:var(--font-body);font-size:13px;font-weight:600;justify-content:center;min-height:36px;padding:0 1rem;transition:border-color .12s,background .12s,color .12s}.app-error__action[data-v-ae5f5882]:hover{background:var(--primary-tint);border-color:var(--primary);color:var(--primary-dark)}.app-error__action--primary[data-v-ae5f5882]{background:var(--primary);border-color:var(--primary);color:var(--surface)}.app-error__action--primary[data-v-ae5f5882]:hover{background:var(--primary-dark);border-color:var(--primary-dark);color:var(--surface)}
