:root{--ink:#17212b;--paper:#f4efe7;--panel:#fffcf6e0;--line:#17212b24;--accent:#0d5c63;--accent-strong:#07393c;--warn:#b84c2a;--ok:#1d6f42;--muted:#5c6770;--shadow:0 24px 60px #07393c1f;--radius:18px}body[data-theme=ocean]{--ink:#10212b;--paper:#eaf3f6;--panel:#f9fcfde0;--line:#10212b1f;--accent:#176087;--accent-strong:#0f3f5b;--warn:#c95b39;--ok:#1e7a76;--muted:#4f6573;--shadow:0 24px 60px #1760871f}body[data-theme=forest]{--ink:#1b251d;--paper:#eef3eb;--panel:#fbfdf9e0;--line:#1b251d1f;--accent:#2f6b3b;--accent-strong:#21492a;--warn:#af4e2f;--ok:#2f6b3b;--muted:#5d695f;--shadow:0 24px 60px #2f6b3b1f}body[data-theme=graphite]{--ink:#f0f2f4;--paper:#1c2024;--panel:#262a2feb;--line:#f0f2f41f;--accent:#d5b36a;--accent-strong:#f0d39a;--warn:#ea7a58;--ok:#6cc48a;--muted:#b2bcc6;--shadow:0 24px 60px #00000040}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{color:var(--ink);background:radial-gradient(circle at top left, #0d5c6324, transparent 28%), radial-gradient(circle at top right, #b84c2a1f, transparent 30%), linear-gradient(180deg, #f8f2ea 0%, var(--paper) 100%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Georgia,Iowan Old Style,Palatino Linotype,serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}main.shell{width:min(1180px,100vw - 32px);margin:0 auto;padding:32px 0 64px}main.shell.shell-grid{grid-template-columns:260px minmax(0,1fr);gap:24px;display:grid}.hero{gap:12px;margin-bottom:24px;display:grid}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--accent);font-size:.78rem;font-weight:700}.hero h1,.section-title{letter-spacing:-.03em;font-family:Times New Roman,Georgia,serif;font-weight:700}.hero h1{max-width:10ch;font-size:clamp(2.5rem,5vw,4.5rem);line-height:.92}.hero p{max-width:70ch;color:var(--muted);font-size:1.02rem;line-height:1.55}.hero-copy{max-width:70ch;color:var(--muted);margin-top:8px;font-size:1rem;line-height:1.5}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.topbar nav,.meta-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.action-row{align-items:flex-start}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.grid{gap:18px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{padding:20px}.collapsible-panel{padding:0}.collapsible-summary{cursor:pointer;justify-content:space-between;align-items:flex-start;gap:16px;padding:20px;list-style:none;display:flex}.collapsible-summary::-webkit-details-marker{display:none}.collapsible-pill:before{content:"−";margin-right:6px}.collapsible-panel:not([open]) .collapsible-pill:before{content:"+"}.collapsible-panel:not([open]) .collapsible-pill{opacity:.8}.collapsible-body{padding:0 20px 20px}.sidebar{height:fit-content;padding:20px;position:sticky;top:20px}.sidebar-title{font-size:1.8rem;line-height:1}.sidebar-nav .nav-link{color:var(--muted);border:1px solid #0000;border-radius:12px;padding:10px 12px}.sidebar-nav .nav-link:hover{border-color:var(--line);color:var(--ink);background:#ffffff52}.sidebar-user{border:1px solid var(--line);background:#ffffff61;border-radius:16px;gap:6px;margin-top:8px;padding:14px 16px;display:grid}.sidebar-user strong{line-height:1.2}.sidebar-user .muted{overflow-wrap:anywhere;margin:0}.section{margin-top:22px}.section-title{margin-bottom:14px;font-size:1.6rem}.section-header{gap:4px;display:grid}.muted{color:var(--muted)}.stack{gap:12px;display:grid}.pill,.button,button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;transition:transform .12s,border-color .12s,background .12s;display:inline-flex}.button.primary,button.primary{background:var(--accent);color:#fff;border-color:#0000}.button.ghost,button.ghost{background:0 0}.button.warn,button.warn{background:var(--warn);color:#fff;border-color:#0000}.button.soft,button.soft{background:color-mix(in srgb, var(--accent) 18%, white);color:var(--accent-strong);border-color:color-mix(in srgb, var(--accent) 26%, var(--line))}.button:hover,button:hover{transform:translateY(-1px)}.button:disabled,button:disabled{cursor:not-allowed;opacity:.56;transform:none}form{gap:12px;display:grid}label{color:var(--muted);gap:6px;font-size:.95rem;display:grid}.field-label{color:var(--muted);font-size:.95rem}input,select,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffd6;border-radius:14px;padding:12px 14px}textarea{resize:vertical;min-height:120px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 12px}th{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:.78rem}.table-wrap{overflow-x:auto}.center-cell{text-align:center}.action-cell{text-align:right;white-space:nowrap;width:132px}.projects-table th:nth-child(4),.projects-table td:nth-child(4){width:104px}.projects-table th:nth-child(5),.projects-table td:nth-child(5){width:132px}.data-sources-table{min-width:1040px}.data-sources-table th:nth-child(4),.data-sources-table td:nth-child(4){width:108px}.data-sources-table th:nth-child(5),.data-sources-table td:nth-child(5){width:96px}.data-sources-table th:nth-child(6),.data-sources-table td:nth-child(6){width:132px}.views-table{table-layout:fixed}.views-table th:first-child,.views-table td:first-child{width:72px}.views-table th:nth-child(3),.views-table td:nth-child(3){width:136px}.views-table th:nth-child(4),.views-table td:nth-child(4){width:200px}.views-table th:nth-child(6),.views-table td:nth-child(6){width:148px}.export-runs-table{table-layout:auto;min-width:1240px}.export-runs-table th:first-child,.export-runs-table td:first-child{width:168px}.export-runs-table th:nth-child(2),.export-runs-table td:nth-child(2){width:156px}.export-runs-table th:nth-child(3),.export-runs-table td:nth-child(3){width:180px}.export-runs-table th:nth-child(4),.export-runs-table td:nth-child(4){width:200px}.export-runs-table th:nth-child(5),.export-runs-table td:nth-child(5){min-width:340px}.export-runs-table th:nth-child(6),.export-runs-table td:nth-child(6){width:184px}.query-cell,.text-wrap-anywhere{overflow-wrap:anywhere;word-break:break-word}.query-cell{white-space:normal;-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.validation-snippet{-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35;display:-webkit-box;overflow:hidden}.view-actions{gap:8px;display:grid}.disabled-button{opacity:.45;pointer-events:none}.progress-toolbar{gap:12px;width:min(100%,620px);display:grid}.validation-progress{border:1px solid var(--line);background:#ffffff6b;border-radius:16px;gap:8px;padding:14px 16px;display:grid}.validation-progress-meta{justify-content:space-between;gap:12px;display:flex}.validation-progress-track{background:#17212b14;border-radius:999px;height:12px;overflow:hidden}.validation-progress-fill{background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 60%, white));border-radius:999px;height:100%;transition:width .18s}.client-list-scroll{border:1px solid var(--line);border-radius:18px;max-height:960px;overflow-y:auto}.audit-list-scroll{border:1px solid var(--line);border-radius:18px;max-height:980px;overflow-y:auto}.export-progress{gap:10px}.banner-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.export-history-progress{gap:6px;display:grid}.export-artifact-note{margin-top:10px}.export-message-cell .mono{overflow-wrap:anywhere;word-break:break-word;margin-top:8px;display:block}.export-actions-cell{white-space:nowrap}.toolbar-row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:14px;display:flex}.toolbar-row-split{justify-content:space-between;align-items:end}.toolbar-field{gap:6px;min-width:220px;display:grid}.compact-field{min-width:180px}.toggle-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.collapsed-panel-note{border:1px dashed var(--line);background:#ffffff47;border-radius:16px;padding:18px}.import-divider{border-top:1px dashed var(--line);margin:4px 0}.load-more-block{border-top:1px solid var(--line);justify-items:center;gap:12px;padding:18px;display:grid}.test-action-block{align-items:start;gap:10px;display:grid}.test-feedback-slot{min-height:58px}.test-feedback{align-items:center;min-height:58px;display:flex}.sql-editor{min-height:260px}.sql-preview{background:color-mix(in srgb, white 92%, var(--accent));border-color:color-mix(in srgb, var(--accent) 22%, var(--line))}.sql-preview-header{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px;font-size:.82rem}.sql-preview-code{white-space:pre-wrap;margin:0;line-height:1.55;overflow-x:auto}.sql-keyword{color:#2157d5;font-weight:700}.sql-string{color:#b6472e}.sql-number{color:#7b4bc2}.sql-parameter{color:#0a7f6f;font-weight:700}.sql-comment{color:#7f8c8d;font-style:italic}.sql-identifier{color:#21302d}.sql-punctuation{color:#6b5d46}.modal-overlay{z-index:1000;background:#1018206b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{background:var(--panel);width:min(100%,520px)}.status{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:700;display:inline-flex}.status.complete{color:#fff;background:var(--ok)}.status.partial{color:#fff;background:color-mix(in srgb, var(--accent) 76%, white)}.status.new{background:#17212b14}.status.invalid{color:#fff;background:var(--warn)}.danger{color:var(--warn)}.ok{color:var(--ok)}.ok-banner{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 30%, var(--line));background:color-mix(in srgb, white 88%, var(--ok))}.subtle-empty{background:#ffffff59}.warning-surface{gap:8px}.empty{border:1px dashed var(--line);color:var(--muted);border-radius:14px;padding:16px}.metric{margin-top:6px;font-size:clamp(2rem,4vw,3rem)}.stat-card,.stat-tile,.status-surface{background:#ffffff85}.stat-card{gap:8px;display:grid}.stat-card .metric{line-height:.95}.stat-tile{gap:8px;display:grid}.stat-tile strong{font-size:1.05rem}.compact-stats-grid,.admin-overview-grid{align-items:stretch}.readiness-grid{align-items:stretch;margin-bottom:22px}.readiness-card{background:#ffffff85;gap:10px;min-width:0;display:grid}.readiness-card strong{font-size:1.08rem}.readiness-card .muted,.readiness-card p,.readiness-card div{min-width:0}.readiness-wrap{overflow-wrap:anywhere;word-break:break-word;white-space:normal;max-width:100%}.project-link{gap:4px;display:grid}.theme-grid{gap:12px;display:grid}.theme-option{border:1px solid var(--line);background:#ffffff73;border-radius:14px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.theme-option input{width:auto;margin-top:2px}.theme-option span{gap:4px;display:grid}.theme-preview{border:1px solid #00000014;border-radius:12px;width:100%;height:54px;margin-bottom:6px}.theme-preview-linen{background:linear-gradient(135deg,#0d5c632e,#0000 50%),linear-gradient(#fbf5ec 0%,#efe6d9 100%)}.theme-preview-ocean{background:linear-gradient(135deg,#1760873d,#0000 50%),linear-gradient(#eef7fb 0%,#dce8ef 100%)}.theme-preview-forest{background:linear-gradient(135deg,#2f6b3b38,#0000 50%),linear-gradient(#f0f6ed 0%,#dfe8db 100%)}.theme-preview-graphite{background:linear-gradient(135deg,#d5b36a38,#0000 50%),linear-gradient(#2a3036 0%,#1b1f24 100%)}.theme-option small{color:var(--muted)}.mono{font-family:SFMono-Regular,Menlo,Monaco,monospace;font-size:.9rem}.auth-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{width:min(640px,100%);padding:28px}.auth-divider{background:linear-gradient(90deg, transparent 0%, var(--line) 18%, var(--line) 82%, transparent 100%);height:1px;margin:6px 0 2px}.footer-note{color:var(--muted);margin-top:10px;font-size:.88rem}.subnav{flex-wrap:wrap;gap:10px;display:flex}.subnav-link{border:1px solid var(--line);color:var(--muted);background:#ffffff85;border-radius:999px;align-items:center;padding:10px 14px;display:inline-flex}.subnav-link.active{background:var(--accent);color:#fff;border-color:#0000}.split{justify-content:space-between;gap:16px;display:flex}.inline-actions{min-width:220px}.client-access-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.client-access-actions{gap:10px;width:min(100%,280px);display:grid}.pending-access-card{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.pending-access-main{gap:6px;min-width:0;display:grid}.pending-access-actions{flex-wrap:wrap;justify-content:flex-end;align-items:end;gap:10px;display:flex}.color-pair{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.color-chip{border:1px solid var(--line);background:#ffffff85;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:.9rem;display:inline-flex}.color-swatch{border:1px solid #0000001f;border-radius:999px;width:16px;height:16px}.color-swatch.large{width:32px;height:32px}.logo-dropzone{border:2px dashed color-mix(in srgb, var(--accent) 35%, var(--line));background:linear-gradient(135deg, #ffffffc7, #ffffff80), radial-gradient(circle at top left, color-mix(in srgb, var(--accent) 16%, transparent), transparent 44%);cursor:pointer;border-radius:22px;align-items:center;gap:16px;min-height:240px;padding:18px;display:grid}.logo-dropzone-copy{color:var(--muted);gap:4px;display:grid}.logo-dropzone-copy strong{color:var(--ink);font-size:1.25rem}.dropzone-actions{flex-wrap:wrap;gap:8px;display:flex}.logo-preview-frame,.logo-thumbnail-wrap{border:1px solid var(--line);background-color:#0000;background-image:linear-gradient(45deg,#00000008 25%,#0000 25%),linear-gradient(-45deg,#00000008 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#00000008 75%),linear-gradient(-45deg,#0000 75%,#00000008 75%);background-position:0 0,0 9px,9px -9px,-9px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:18px 18px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;border-radius:16px;place-items:center;display:grid}.logo-preview-frame{min-height:160px;padding:18px}.logo-preview-image,.logo-thumbnail{object-fit:contain;max-width:100%;max-height:120px}.logo-thumbnail-card{align-content:start;gap:10px;min-height:170px;display:grid}.logo-thumbnail-wrap{width:140px;height:90px;padding:12px}.stable-logo-thumbnail-wrap{width:min(100%,220px);height:auto;min-height:140px;padding:16px}.logo-thumbnail{max-height:150px}.import-dropzone{min-height:210px}.import-file-summary{gap:4px;width:min(100%,460px);display:grid}.color-picker-card{border:1px solid var(--line);background:#ffffff73;border-radius:16px;gap:12px;padding:12px;display:grid}.color-picker-header{grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:10px;display:grid}.color-native-input{border-radius:12px;width:56px;min-width:56px;height:42px;padding:4px}.color-hex-input{text-transform:uppercase}.color-swatch-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.color-choice{aspect-ratio:1;border:2px solid #0000;border-radius:12px;width:100%;padding:0;box-shadow:inset 0 0 0 1px #0000001f}.color-choice.active{border-color:var(--ink)}.event-row{border:1px solid var(--line);background:#ffffff61;border-radius:14px;gap:8px;padding:14px 16px;display:grid}.event-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.audit-search-field{min-width:min(420px,100%)}.artifact-pruned-row{background:#17212b06}@media (max-width:900px){.grid.two,.grid.three,.grid.four,main.shell.shell-grid{grid-template-columns:1fr}main.shell{width:min(100vw - 20px,1180px);padding-top:20px}.topbar{flex-direction:column;align-items:flex-start}.split{flex-direction:column}.inline-actions{min-width:0}.client-access-row{flex-direction:column}.client-access-actions{width:100%}.pending-access-card{flex-direction:column}.pending-access-actions{justify-content:flex-start}.color-picker-header{grid-template-columns:auto 1fr}.color-hex-input{grid-column:1/-1}.toggle-row{flex-direction:column}.banner-row,.toolbar-row-split{flex-direction:column;align-items:flex-start}}
