@font-face{font-family:PW Centra No2;src:url(/fonts/PWCentraNo2-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:PW Centra No2;src:url(/fonts/PWCentraNo2-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:PW Centra No2;src:url(/fonts/PWCentraNo2-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:light;--accent: oklch(.4 .03 250);--accent-weak: oklch(.4 .03 250 / .08);--bg: oklch(.985 .002 90);--surface: oklch(1 0 0);--surface-sunken: oklch(.97 .002 90);--border: oklch(.923 .003 90 / .8);--border-strong: oklch(.81 .004 90);--text: oklch(.17 .004 90);--text-dim: oklch(.55 .004 90);--text-faint: oklch(.68 .004 90);--ink: oklch(.14 0 0);--ring-track: oklch(.93 .002 90);--ring-value: var(--ink);--ring-benchmark: oklch(.6 .004 90);--pos: oklch(.5 .03 250);--neg: oklch(.5 .14 25);--radius: 10px;--radius-sm: 7px;--radius-pill: 999px;--shadow-panel: 0 1px 3px rgba(30, 40, 70, .05), 0 1px 2px rgba(30, 40, 70, .04);--shadow-modal: 0 12px 40px rgba(20, 20, 20, .16), 0 2px 8px rgba(20, 20, 20, .08);--pad: 24px;--gap: 20px;--row-h: 52px;--header-h: auto;--ff-display: "PW Centra No2", -apple-system, "Segoe UI", Inter, Helvetica, Arial, sans-serif;--ff-body: "PW Centra No2", -apple-system, "Segoe UI", Inter, Helvetica, Arial, sans-serif;--ff-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--review-fs-sm: 12.5px;--review-fs-md: 14px;--review-fs-lg: 16px;--review-fs: var(--review-fs-md);--review-lh: 1.55;--motion-fast: .18s;--motion-med: .42s;--motion-slow: .9s;--ease-out: cubic-bezier(.16, 1, .3, 1)}@media(prefers-reduced-motion:reduce){:root{--motion-fast: 0ms;--motion-med: 0ms;--motion-slow: 0ms}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--ff-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--ff-display);margin:0;font-weight:600;letter-spacing:-.01em}p{margin:0}a{color:var(--accent)}button{font-family:var(--ff-body)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-panel)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;transition:background var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out)}.btn:hover{background:var(--surface-sunken)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-primary:hover:not(:disabled){background:#000}.btn-primary:disabled{background:var(--text-faint);border-color:var(--text-faint)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--surface-sunken)}.btn-reviewed-active{background:var(--surface-sunken);border-color:var(--border-strong);color:var(--text)}.btn-reviewed-active:hover{background:var(--surface);border-color:var(--text-faint)}.btn-sm{height:32px;padding:0 12px;font-size:13px}.chip{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border);font-size:12px;color:var(--text-dim);white-space:nowrap}.oq-tip{position:relative}.oq-tip[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:12px;line-height:1.4;padding:6px 10px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--motion-fast) var(--ease-out);z-index:20}.oq-tip:hover[data-tip]:after,.oq-tip:focus-visible[data-tip]:after{opacity:1}.oq-tip--wide[data-tip]:after{white-space:normal;width:220px;line-height:1.5}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell{min-height:100%;display:flex;flex-direction:column}.dash-header{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--border);padding:12px var(--pad) 0}.dash-header__top{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);flex-wrap:wrap}.dash-header__identity{display:flex;align-items:center;gap:12px}.dash-header__logo{height:24px;width:auto;max-width:200px;flex-shrink:0}.dash-header__title{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--text)}.dash-header__utility{display:flex;align-items:center;gap:10px}.menu-trigger{display:inline-flex;flex-direction:column;align-items:stretch;justify-content:center;gap:4px;width:34px;height:34px;padding:9px 8px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.menu-trigger:hover{background:var(--surface-sunken)}.menu-trigger span{display:block;height:1.5px;background:var(--text);border-radius:1px}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14141447;z-index:110}.drawer-panel{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:84vw;background:var(--surface);box-shadow:var(--shadow-modal);display:flex;flex-direction:column;padding:18px;animation:drawer-in var(--motion-med) var(--ease-out)}@keyframes drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.drawer-panel{animation:none}}.drawer-panel__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.drawer-panel__title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.drawer-panel__nav{display:flex;flex-direction:column;gap:2px}.drawer-panel__link{display:block;text-align:left;border:none;background:none;padding:11px 10px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--text);text-decoration:none;cursor:pointer}.drawer-panel__link:hover{background:var(--surface-sunken)}.drawer-panel__divider{height:1px;background:var(--border);margin:16px 0}.drawer-panel__section{display:flex;flex-direction:column;gap:8px;padding:0 10px}.drawer-panel__label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.dash-header__controls-row{--table-row-h: 32px;--table-head-h: 42px;display:flex;align-items:flex-start;gap:var(--gap);margin-top:10px}.dash-header__filters{display:flex;flex-direction:column;align-items:stretch;gap:8px;width:240px;flex-shrink:0;flex-grow:0}.mode-toggle{display:inline-flex;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px;gap:2px}.mode-toggle__btn{flex:1;border:none;background:transparent;height:32px;padding:0 16px;border-radius:5px;font-size:var(--review-fs-sm);font-weight:500;color:var(--text-dim);cursor:pointer;transition:background var(--motion-fast) var(--ease-out),color var(--motion-fast) var(--ease-out)}.mode-toggle__btn[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-panel)}.insight-panel{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;width:340px;height:calc(var(--table-row-h) * 4 + var(--table-head-h));flex-shrink:0}.insight-cell{display:flex;flex-direction:column;justify-content:center;gap:5px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:0}.insight-cell--ring{flex-direction:row;align-items:center;justify-content:space-between;gap:6px}.insight-cell__label{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);line-height:1.3}.insight-cell__value{font-size:18px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.insight-cell__value--muted{font-size:13px;font-weight:500;color:var(--text-dim);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.text-size-control{display:inline-flex;align-items:center;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.text-size-control__btn{border:none;background:var(--surface);height:32px;min-width:32px;padding:0 8px;font-size:13px;color:var(--text-dim);cursor:pointer;border-left:1px solid var(--border)}.text-size-control__btn:first-child{border-left:none}.text-size-control__btn[aria-pressed=true]{background:var(--ink);color:#fff}.project-table-wrap{flex:1;min-width:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.project-table-scroll{height:calc(var(--table-row-h) * 4 + var(--table-head-h));overflow-y:auto}.project-table{width:100%;border-collapse:collapse;table-layout:fixed}.project-table thead{position:sticky;top:0;z-index:5;background:var(--surface)}.project-table thead tr{height:var(--table-head-h)}.project-table th{text-align:left;font-size:var(--review-fs-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:600;padding:4px 10px;border-bottom:1px solid var(--border);white-space:normal;line-height:1.25;vertical-align:middle}.project-table col.col-key,.project-table col.col-score{width:10%}.project-table col.col-name{width:32%}.project-table col.col-flag{width:9%}.project-table col.col-reviewed{width:12%}.project-row{height:var(--table-row-h);cursor:pointer;border-bottom:1px solid var(--border);transition:background var(--motion-fast) var(--ease-out)}.project-row:last-child{border-bottom:none}.project-row:hover{background:var(--surface-sunken)}.project-row td{padding:0 10px;font-size:var(--review-fs-sm);color:var(--text);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.project-row--selected{background:var(--surface-sunken)}.project-row--selected td:first-child{box-shadow:inset 3px 0 0 var(--ink)}.project-row__key{font-variant-numeric:tabular-nums;color:var(--text-dim);font-size:var(--review-fs-sm)}.project-row__score{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600;font-size:var(--review-fs-sm)}.project-row__name-link{color:var(--text);text-decoration:none}.project-row__name-link:hover{text-decoration:underline;color:var(--accent)}.project-row__flag{text-align:center;color:var(--text-faint);font-size:var(--review-fs-sm)}.project-row__flag--yes{color:var(--text)}.reviewed-pill{display:inline-flex;align-items:center;height:17px;padding:0 7px;border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border-strong);color:var(--text-dim);font-size:10px;font-weight:500}.project-table-empty{height:calc(var(--table-row-h) * 4 + var(--table-head-h));display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:13px}.score-ring{display:inline-flex;align-items:center;justify-content:center;position:relative}.score-ring__value{position:absolute;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.category-header{min-height:var(--row-h);display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border)}.category-header__title{font-size:12.5px;font-weight:600;color:var(--text);line-height:1.3}.review-region{padding:18px var(--pad) 64px;flex:1}.review-region[data-text-size=sm]{--review-fs: var(--review-fs-sm)}.review-region[data-text-size=md]{--review-fs: var(--review-fs-md)}.review-region[data-text-size=lg]{--review-fs: var(--review-fs-lg)}.review-grid{display:flex;align-items:stretch;flex-wrap:wrap;gap:12px}.review-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-panel);display:flex;flex-direction:column;flex:1 1 200px;min-width:200px;overflow:hidden}.review-panel__body{padding:16px;overflow-y:auto;flex:1}.review-panel__text{font-size:var(--review-fs);line-height:var(--review-lh);color:var(--text-dim);white-space:pre-wrap}.review-panel__empty{font-size:var(--review-fs);color:var(--text-faint);font-style:italic}.practices-column{display:flex;flex-direction:column;gap:12px;flex:1 1 220px;min-width:220px}.practices-column .review-panel{flex:1;min-width:0}.practice-header{min-height:var(--row-h);display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border)}.practice-header__title{font-size:12.5px;font-weight:600;color:var(--text)}.reviewed-bar{margin-top:18px;display:flex;align-items:center;gap:12px}.reviewed-bar__confirm{font-size:13px;color:var(--text-dim);display:inline-flex;align-items:center;gap:6px}.empty-state{height:480px;position:relative;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden;display:flex;align-items:center;justify-content:center}.empty-state__caption{position:absolute;bottom:20px;left:50%;transform:translate(-50%);font-size:12px;color:var(--text-faint);letter-spacing:.02em;z-index:2}.empty-state__fragment{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;opacity:0;color:var(--border-strong)}.empty-state__fragment svg{width:72%;height:72%}.empty-state__fragment--a{animation:drift-a var(--drawing-duration, 26s) var(--ease-out) infinite}.empty-state__fragment--b{animation:drift-b var(--drawing-duration, 30s) var(--ease-out) infinite;animation-delay:-8s}.empty-state__fragment--c{animation:drift-c var(--drawing-duration, 34s) var(--ease-out) infinite;animation-delay:-18s}@keyframes drift-a{0%{opacity:0;transform:scale(1) translate(0)}8%{opacity:.55}45%{opacity:.55;transform:scale(1.015) translate(6px,-4px)}85%{opacity:0;transform:scale(1.03) translate(10px,-8px)}to{opacity:0}}@keyframes drift-b{0%{opacity:0}10%{opacity:.4}50%{opacity:.4;transform:scale(1.02) translate(-8px,6px)}88%{opacity:0;transform:scale(1.03) translate(-12px,10px)}to{opacity:0}}@keyframes drift-c{0%{opacity:0}12%{opacity:.5}55%{opacity:.5;transform:scale(1.01) translate(4px,8px)}90%{opacity:0;transform:scale(1.02) translate(6px,12px)}to{opacity:0}}.empty-state--reduced-motion .empty-state__fragment{opacity:.4;position:relative;inset:auto}.empty-state--reduced-motion .empty-state__fragment:not(:first-child){display:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14141452;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal-panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-modal);max-width:560px;width:100%;max-height:80vh;overflow-y:auto;padding:28px}.modal-panel h2{font-size:18px;margin-bottom:4px}.modal-panel h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin-top:20px;margin-bottom:8px}.modal-panel p{font-size:14px;line-height:1.6;color:var(--text-dim)}.modal-close{position:absolute;top:20px;right:20px}.admin-shell{max-width:980px;margin:0 auto;padding:40px var(--pad) 80px}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.admin-nav{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:28px}.admin-nav__tab{border:none;background:none;padding:10px 4px;margin-right:24px;font-size:13px;font-weight:500;color:var(--text-faint);cursor:pointer;border-bottom:2px solid transparent}.admin-nav__tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--ink)}.admin-section{margin-bottom:32px}.admin-section h2{font-size:15px;margin-bottom:14px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat-card{padding:16px}.stat-card__label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin-bottom:6px}.stat-card__value{font-size:18px;font-weight:600}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.upload-slot{padding:20px;display:flex;flex-direction:column;gap:10px}.upload-slot__label{font-size:13px;font-weight:600}.upload-slot__filename{font-size:12.5px;color:var(--text-dim);font-family:var(--ff-mono)}.validation-report{padding:18px;background:#fff6f5;background:oklch(.98 .02 25);border:1px solid oklch(.85 .06 25)}.validation-report__list{font-family:var(--ff-mono);font-size:12.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow-y:auto;background:var(--surface);border-radius:var(--radius-sm);padding:12px;border:1px solid var(--border);margin-top:10px}.validation-summary{padding:18px;background:#f1fcf4;border:1px solid oklch(.85 .05 155)}.validation-summary__row{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;color:var(--text-dim)}.version-table{width:100%;border-collapse:collapse}.version-table th,.version-table td{text-align:left;padding:10px 12px;font-size:13px;border-bottom:1px solid var(--border)}.version-table th{font-size:11px;text-transform:uppercase;color:var(--text-faint)}.access-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.access-list li{font-size:13px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;justify-content:space-between}.switch{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch__track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border-strong);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--motion-fast) var(--ease-out)}.switch__track:before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform var(--motion-fast) var(--ease-out)}.switch input:checked+.switch__track{background:var(--ink)}.switch input:checked+.switch__track:before{transform:translate(18px)}.state-page{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding:40px}.state-page__inner{max-width:420px;display:flex;flex-direction:column;gap:10px;align-items:center}.state-page__title{font-size:17px;font-weight:600}.state-page__body{font-size:14px;color:var(--text-dim);line-height:1.6}@media(max-width:900px){.dash-header__controls-row{flex-direction:column;align-items:stretch}}@media(max-width:400px){.insight-panel{width:100%}}@media(max-width:720px){.review-grid{flex-direction:column}.review-panel{min-width:0}.practices-column{flex-direction:column}.category-header,.practice-header{height:auto;min-height:var(--row-h)}.dash-header{padding:10px 16px 0}.dash-header__identity{flex-direction:column;align-items:flex-start;gap:6px}.dash-header__logo{height:18px;max-width:140px}.review-region{padding:10px 16px 48px}.dash-header__title{font-size:16px}.project-table-scroll{overflow-x:auto}.project-table{min-width:640px}.admin-shell{padding:24px 16px 60px}.upload-grid{grid-template-columns:1fr}}
