:root{--bg:#f6f6f8;--surface:#fff;--surface-2:#f3f3f6;--surface-3:#ebebf0;--border:#e3e3e9;--border-strong:#cfcfd8;--text:#16161d;--text-2:#55555f;--text-3:#8a8a95;--accent:#5b5bd6;--accent-hover:#4a4ac4;--accent-soft:#eeeefc;--accent-text:#3f3fb3;--danger:#d4383d;--danger-soft:#fdeded;--warn:#a8660b;--warn-soft:#fdf4e3;--ok:#18864b;--ok-soft:#e6f5ec;--info:#1f6fb8;--info-soft:#e8f1fb;--row-hover:#f7f7fb;--row-selected:#eeeefc;--shadow-sm:0 1px 2px #1414280f;--shadow:0 1px 2px #1414280d, 0 8px 24px #14142814;--shadow-lg:0 24px 64px #1414282e;--radius:10px;--radius-sm:7px;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--t-text:#55555f;--t-text-bg:#efeff3;--t-integer:#1f6fb8;--t-integer-bg:#e8f1fb;--t-boolean:#18864b;--t-boolean-bg:#e6f5ec;--t-datetime:#a8660b;--t-datetime-bg:#fdf4e3;--t-json:#8a3fbf;--t-json-bg:#f4ebfb;--t-reference:#0f7f7a;--t-reference-bg:#e3f5f4;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f0f14;--surface:#17171e;--surface-2:#1e1e27;--surface-3:#272731;--border:#2a2a35;--border-strong:#3a3a47;--text:#ececf1;--text-2:#a9a9b6;--text-3:#75757f;--accent:#7b7bf0;--accent-hover:#8e8ef5;--accent-soft:#25254a;--accent-text:#b4b4ff;--danger:#f0676b;--danger-soft:#3a1d20;--warn:#e0a444;--warn-soft:#36291a;--ok:#4cc27f;--ok-soft:#173024;--info:#6aa9ea;--info-soft:#172a3d;--row-hover:#1c1c25;--row-selected:#23234a;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000059;--shadow-lg:0 24px 64px #0009;--t-text:#b8b8c4;--t-text-bg:#262630;--t-integer:#7fb5ee;--t-integer-bg:#172a3d;--t-boolean:#6fd29a;--t-boolean-bg:#173024;--t-datetime:#e7b565;--t-datetime-bg:#36291a;--t-json:#c99af0;--t-json-bg:#2c1d3a;--t-reference:#5fd0c9;--t-reference-bg:#13302e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,p{margin:0}a{color:var(--accent-text);text-decoration:none}code,pre,.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--text-3)}.row{align-items:center;gap:8px;display:flex}.row-wrap{flex-wrap:wrap}.spacer{flex:1}.stack{flex-direction:column;gap:12px;display:flex}.stack-lg{flex-direction:column;gap:20px;display:flex}.btn{border-radius:var(--radius-sm);height:34px;font:inherit;cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13.5px;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{height:28px;padding:0 9px;font-size:12.5px}.btn-icon{width:34px;padding:0}.btn-sm.btn-icon{width:28px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost{color:var(--text-2);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.95)}.icon-close{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-2);cursor:pointer;background:0 0;border:0;place-items:center;display:inline-grid}.icon-close:hover{background:var(--surface-3)}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field-label{color:var(--text-2);font-size:12.5px;font-weight:600}.field-hint{color:var(--text-3);font-size:12px}.field-error{color:var(--danger);font-size:12px}.input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;height:34px;color:var(--text);font:inherit;outline:none;padding:0 10px;font-size:13.5px;transition:border-color .12s,box-shadow .12s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.invalid{border-color:var(--danger)}.input:disabled{background:var(--surface-2);color:var(--text-3)}.input-sm{height:28px;padding:0 8px;font-size:12.5px}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-3) 50%), linear-gradient(135deg, var(--text-3) 50%, transparent 50%);background-position:calc(100% - 14px),calc(100% - 9px);background-repeat:no-repeat;background-size:5px 5px;padding-right:28px}.textarea{resize:vertical;height:auto;min-height:84px;font-family:var(--mono);padding:8px 10px;font-size:12.5px;line-height:1.55}.checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:13.5px;display:inline-flex}.checkbox input{width:15px;height:15px;accent-color:var(--accent);margin:0}.segmented{background:var(--surface-3);border-radius:9px;gap:2px;padding:3px;display:inline-flex}.segmented button{font:inherit;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-flex}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;height:20px;padding:0 7px;font-size:11.5px;font-weight:600;display:inline-flex}.badge-neutral{background:var(--surface-3);color:var(--text-2)}.badge-accent{background:var(--accent-soft);color:var(--accent-text)}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.type-badge{font-family:var(--mono);border-radius:4px;padding:0 6px;font-size:11px;font-weight:500;line-height:18px;display:inline-block}.type-text{color:var(--t-text);background:var(--t-text-bg)}.type-integer,.type-real{color:var(--t-integer);background:var(--t-integer-bg)}.type-boolean{color:var(--t-boolean);background:var(--t-boolean-bg)}.type-datetime{color:var(--t-datetime);background:var(--t-datetime-bg)}.type-json{color:var(--t-json);background:var(--t-json-bg)}.type-reference{color:var(--t-reference);background:var(--t-reference-bg)}.shell{grid-template-columns:248px minmax(0,1fr);height:100%;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;min-height:0;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:10px;padding:16px 16px 12px;font-size:15px;font-weight:700;display:flex}.brand-mark{background:var(--accent);color:#fff;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.project-pill{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);margin:0 12px 8px;padding:9px 11px}.project-pill-name{align-items:center;gap:6px;font-size:13.5px;font-weight:600;display:flex}.project-pill-meta{color:var(--text-3);font-size:12px}.nav{flex:1;padding:4px 8px 12px;overflow-y:auto}.nav-section{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);padding:14px 10px 5px;font-size:11px;font-weight:700}.nav-item{border-radius:var(--radius-sm);height:30px;color:var(--text-2);align-items:center;gap:9px;padding:0 10px;font-size:13.5px;font-weight:500;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent-text)}.nav-item .nav-count{color:var(--text-3);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11.5px}.nav-item.active .nav-count{color:var(--accent-text)}.nav-empty{color:var(--text-3);padding:4px 10px;font-size:12.5px}.sidebar-footer{border-top:1px solid var(--border);padding:10px 12px}.main{min-width:0;min-height:0;overflow:auto}.page{max-width:1180px;margin:0 auto;padding:28px 32px 96px}.page-wide{flex-direction:column;max-width:none;height:100%;padding:20px 24px 24px;display:flex}.page-header{align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-header-text{flex:1;min-width:0}.page-header h1{letter-spacing:-.02em;align-items:center;gap:10px;font-size:21px;font-weight:700;display:flex}.page-header p{color:var(--text-2);max-width:720px;margin-top:4px}.page-header-actions{align-items:center;gap:8px;display:flex}.page-loading{place-items:center;height:50vh;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-width:0}.card-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:12px 16px;display:flex}.card-header h3{flex:1;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.card-actions{gap:6px;display:flex}.card-body{padding:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.stat{padding:14px 16px}.stat-label{color:var(--text-2);align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:flex}.stat-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:6px;font-size:26px;font-weight:700}.callout{border-radius:var(--radius-sm);border:1px solid #0000;flex-direction:column;gap:3px;padding:11px 14px;font-size:13.5px;display:flex}.callout ul{margin:4px 0 0;padding-left:18px}.callout-info{background:var(--info-soft);color:var(--text);border-color:color-mix(in srgb, var(--info) 25%, transparent)}.callout-warn{background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 30%, transparent)}.callout-danger{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 30%, transparent)}.callout-ok{background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 30%, transparent)}.callout-action{align-self:flex-start;margin-top:6px}.empty{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:48px 24px;display:flex}.empty-icon{background:var(--accent-soft);width:48px;height:48px;color:var(--accent-text);border-radius:14px;place-items:center;margin-bottom:8px;display:grid}.empty h3{font-size:16px}.empty p{color:var(--text-2);max-width:460px}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;display:flex}.overlay{z-index:50;background:#0a0a146b;place-items:center;padding:24px;animation:.12s ease-out fade;display:grid;position:fixed;inset:0}.overlay-drawer{place-items:stretch end;padding:0}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{opacity:0;transform:translate(24px)}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.modal{background:var(--surface);max-width:100%;max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);border-radius:14px;flex-direction:column;animation:.14s ease-out pop;display:flex}.modal-header,.drawer-header{flex:none;align-items:flex-start;gap:12px;padding:16px 18px 12px;display:flex}.modal-header h2,.drawer-header h2{flex:1;font-size:16px;font-weight:650}.drawer-header>div{flex:1;min-width:0}.drawer-subtitle{color:var(--text-3);margin-top:2px;font-size:12.5px}.modal-body{min-height:0;padding:4px 18px 18px;overflow:auto}.modal-footer,.drawer-footer{border-top:1px solid var(--border);flex:none;justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.drawer{background:var(--surface);max-width:100vw;height:100%;min-height:0;box-shadow:var(--shadow-lg);flex-direction:column;animation:.16s ease-out slide;display:flex;overflow:hidden}.drawer-body{flex:auto;min-height:0;padding:4px 18px 18px;overflow:auto}.confirm-message{color:var(--text-2)}.toasts{z-index:100;flex-direction:column;gap:8px;width:380px;max-width:calc(100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);align-items:flex-start;gap:9px;padding:11px 12px;font-size:13.5px;animation:.14s ease-out pop;display:flex}.toast>svg{flex-shrink:0;margin-top:2px}.toast-ok>svg{color:var(--ok)}.toast-error>svg{color:var(--danger)}.toast-info>svg{color:var(--info)}.toast-message{word-break:break-word;flex:1;min-width:0}.toast button{color:var(--text-3);cursor:pointer;background:0 0;border:0;padding:2px}.code-block{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);min-width:0;overflow:hidden}.code-block-bar{border-bottom:1px solid var(--border);color:var(--text-3);justify-content:space-between;align-items:center;min-height:32px;padding:2px 4px 2px 12px;font-size:12px;display:flex}.code-block pre{white-space:pre;margin:0;padding:12px;line-height:1.55;overflow:auto}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 12px}.table tr:last-child td{border-bottom:0}.table tr.dim td{color:var(--text-3)}.connect{background:radial-gradient(1200px 500px at 50% -10%, var(--accent-soft), transparent 70%), var(--bg);place-items:center;min-height:100%;padding:32px 16px;display:grid}.auth-note{text-align:center;margin:0;font-size:12.5px}.connect-card{width:480px;max-width:100%}.connect-brand{text-align:center;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px;display:flex}.connect-brand .brand-mark{border-radius:12px;width:44px;height:44px}.connect-brand h1{letter-spacing:-.02em;font-size:24px}.connect-brand p{color:var(--text-2)}.project-row{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:10px 12px;display:flex}.key-reveal{border-radius:var(--radius-sm);background:var(--surface-2);border:1px dashed var(--border-strong);font-family:var(--mono);word-break:break-all;align-items:center;gap:6px;padding:8px 8px 8px 12px;font-size:12.5px;display:flex}.key-reveal span{flex:1}.data-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.data-title{letter-spacing:-.01em;align-items:center;gap:8px;margin-right:6px;font-size:18px;font-weight:700;display:flex}.filter-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin-bottom:10px;padding:12px;display:flex}.filter-row{grid-template-columns:38px 190px 150px minmax(0,1fr) 30px;align-items:center;gap:6px;display:grid}.filter-join{color:var(--text-3);text-align:center;font-size:12px;font-weight:600}.grid-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:1;min-height:200px;overflow:auto}.grid{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.grid th{z-index:2;background:var(--surface-2);text-align:left;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;padding:0;font-weight:600;position:sticky;top:0}.grid th .th-inner{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:7px 10px;display:flex}.grid th .th-inner:hover{background:var(--surface-3)}.grid th.sys{color:var(--text-3)}.grid th.col-check,.grid td.col-check{z-index:1;text-align:center;width:40px;min-width:40px;padding:0;position:sticky;left:0}.grid th.col-check{z-index:3}.grid td.col-check{background:var(--surface)}.grid td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:var(--surface);max-width:320px;height:36px;padding:0}.grid tr:hover td{background:var(--row-hover)}.grid tr.selected td{background:var(--row-selected)}.cell{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;height:35px;padding:0 10px;display:flex;overflow:hidden}.cell>span.ellipsis{text-overflow:ellipsis;overflow:hidden}.cell-editable{cursor:text}.cell-num{font-variant-numeric:tabular-nums;justify-content:flex-end}.cell-null{color:var(--text-3);font-size:12px;font-style:italic}.cell-mono{font-family:var(--mono);color:var(--text-2);font-size:12px}.cell-editing{padding:2px}.cell-editing .input{border-radius:5px;height:31px}.bool-chip{border-radius:4px;align-items:center;gap:3px;padding:0 6px;font-size:12px;font-weight:600;line-height:20px;display:inline-flex}.bool-true{background:var(--ok-soft);color:var(--ok)}.bool-false{background:var(--surface-3);color:var(--text-3)}.ref-link{background:var(--t-reference-bg);color:var(--t-reference);font-family:var(--mono);border-radius:4px;align-items:center;gap:4px;padding:0 6px;font-size:12px;line-height:20px;display:inline-flex}.ref-link:hover{text-decoration:underline}.row-open{opacity:0;color:var(--text-3);cursor:pointer;background:0 0;border:0;place-items:center;padding:2px;display:grid}.grid tr:hover .row-open{opacity:1}.check-cell{justify-content:center;align-items:center;gap:2px;height:35px;display:flex}.check-cell input{accent-color:var(--accent)}.grid-footer{color:var(--text-2);align-items:center;gap:10px;padding-top:10px;font-size:13px;display:flex}.grid-empty{text-align:center;color:var(--text-3);padding:56px 16px}.designer{grid-template-columns:240px minmax(0,1fr);align-items:start;gap:16px;display:grid}.table-list{flex-direction:column;gap:2px;padding:8px;display:flex}.table-list-item{border-radius:var(--radius-sm);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 9px;font-size:13.5px;display:flex}.table-list-item:hover{background:var(--surface-2)}.table-list-item.active{background:var(--accent-soft);color:var(--accent-text)}.table-list-item.removed{color:var(--text-3);text-decoration:line-through}.table-list-item .name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.col-grid{border-collapse:collapse;width:100%}.col-grid th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:0 6px 6px;font-size:11.5px;font-weight:600}.col-grid td{vertical-align:middle;padding:4px 6px}.col-grid tr.sys td{color:var(--text-3)}.col-grid tr.sys .mono{color:var(--text-2)}.col-grid tr.invalid td:first-child{box-shadow:inset 2px 0 0 var(--danger)}.renamed-note{color:var(--text-3);margin-top:2px;padding-left:2px;font-size:11.5px}.issues{color:var(--danger);margin:0;padding-left:18px;font-size:13px}.save-bar{z-index:10;background:var(--text);color:var(--bg);box-shadow:var(--shadow-lg);border-radius:12px;align-items:center;gap:10px;margin-top:20px;padding:10px 12px 10px 16px;display:flex;position:sticky;bottom:16px}.save-bar .btn-secondary{color:var(--bg);border-color:color-mix(in srgb, var(--bg) 35%, transparent);box-shadow:none;background:0 0}.save-bar .btn-secondary:hover:not(:disabled){background:color-mix(in srgb, var(--bg) 12%, transparent)}.save-bar-text{flex:1;font-weight:500}.save-bar-text .issue-count{color:#ff9da0;margin-left:8px}.op-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.op-item{border-radius:var(--radius-sm);background:var(--surface-2);align-items:flex-start;gap:9px;padding:8px 10px;font-size:13.5px;display:flex}.op-item>svg{flex-shrink:0;margin-top:2px}.op-item.danger>svg{color:var(--danger)}.op-item.add>svg{color:var(--ok)}.op-item.change>svg{color:var(--info)}.op-reasons{color:var(--text-2);margin:3px 0 0;padding-left:16px;font-size:12.5px}details.sql summary{cursor:pointer;color:var(--text-2);margin-bottom:8px;font-size:13px;font-weight:600}.template-grid{text-align:left;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:100%;max-width:820px;margin-top:18px;display:grid}.template-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;font:inherit;color:inherit;text-align:left;flex-direction:column;gap:6px;padding:16px;transition:border-color .12s,box-shadow .12s;display:flex}.template-card:hover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.template-card h4{align-items:center;gap:8px;margin:0;font-size:14.5px;display:flex}.template-card p{color:var(--text-2);font-size:13px}.template-tables{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.roles-layout{grid-template-columns:240px minmax(0,1fr);align-items:start;gap:16px;display:grid}.role-item{border-radius:var(--radius-sm);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;display:flex}.role-item:hover{background:var(--surface-2)}.role-item.active{background:var(--accent-soft);color:var(--accent-text)}.role-item .name{flex:1;font-weight:500}.perm-cell{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.perm-toggle{border:1px solid var(--border-strong);background:var(--surface);height:26px;color:var(--text-3);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:600;display:inline-flex}.perm-toggle.on{background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 40%, transparent);color:var(--ok)}.perm-summary{color:var(--text-3);cursor:pointer;text-align:left;font-size:11.5px;font:inherit;background:0 0;border:0;padding:0;font-size:11.5px}.perm-summary:hover{color:var(--accent-text);text-decoration:underline}.column-checks{border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;padding:10px 12px;display:grid}.preset-row{grid-template-columns:160px minmax(0,1fr) 30px;align-items:center;gap:6px;display:grid}.quick-actions{flex-wrap:wrap;gap:6px;display:flex}.explorer{grid-template-columns:420px minmax(0,1fr);align-items:start;gap:16px;display:grid}.method{min-width:52px;font-family:var(--mono);text-align:center;border-radius:4px;padding:0 6px;font-size:11.5px;font-weight:700;line-height:20px;display:inline-block}.method-GET{background:var(--info-soft);color:var(--info)}.method-POST{background:var(--ok-soft);color:var(--ok)}.method-PATCH{background:var(--warn-soft);color:var(--warn)}.method-DELETE{background:var(--danger-soft);color:var(--danger)}.request-line{font-family:var(--mono);word-break:break-all;align-items:center;gap:8px;font-size:12.5px;display:flex}.timeline{flex-direction:column;gap:10px;display:flex}.timeline-item summary{cursor:pointer;align-items:center;gap:10px;padding:12px 16px;list-style:none;display:flex}.timeline-item summary::-webkit-details-marker{display:none}.timeline-body{padding:0 16px 14px}.checklist{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.checklist li{align-items:center;gap:10px;padding:8px 4px;display:flex}.check-dot{border:1.5px solid var(--border-strong);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;display:grid}.check-dot.done{background:var(--ok);border-color:var(--ok)}.overview-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.table-cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.table-card{border:1px solid var(--border);border-radius:var(--radius-sm);color:inherit;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.table-card:hover{border-color:var(--accent)}.table-card strong{align-items:center;gap:6px;display:flex}@media (width<=960px){.shell{grid-template-columns:1fr}.sidebar{display:none}.designer,.roles-layout,.explorer,.overview-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.template-grid{grid-template-columns:1fr}.page{padding:20px 16px 80px}}.section-title{align-items:center;gap:8px;font-size:15px;font-weight:650;display:flex}.section-title .muted{font-size:13px;font-weight:400}.stats-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:560px}.stack-lg>.stats{margin-bottom:0}.cloud-page{max-width:980px}.cloud-header{align-items:center;gap:10px;margin-bottom:28px;font-size:15px;display:flex}.project-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.project-card{flex-direction:column;gap:6px;min-height:150px;padding:16px;display:flex}.project-card-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:15px;overflow:hidden}.project-card-error{border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);word-break:break-word;align-items:flex-start;gap:6px;padding:7px 9px;font-size:12.5px;display:flex}.project-card-error svg{flex-shrink:0;margin-top:2px}.diagram{border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-2);background-image:radial-gradient(var(--border-strong) 1px, transparent 1px);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background-size:22px 22px;flex:1;min-height:420px;position:relative;overflow:hidden}.diagram.panning{cursor:grabbing}.diagram-canvas{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.diagram-edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.diagram-edge{pointer-events:auto;color:var(--text-3);transition:opacity .12s}.diagram-edge-hit{fill:none;stroke:#0000;stroke-width:14px}.diagram-edge-line,.diagram-edge-mark{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round}.diagram-edge.optional .diagram-edge-line,.legend-mark.optional .diagram-edge-line{stroke-dasharray:5 4}.diagram-edge-ring{fill:var(--surface);stroke:currentColor;stroke-width:1.5px}.diagram-edge:hover,.diagram-edge.hot{color:var(--accent)}.diagram-edge:hover .diagram-edge-line,.diagram-edge.hot .diagram-edge-line,.diagram-edge.hot .diagram-edge-mark{stroke-width:2px}.diagram-edge.dim{opacity:.18}.diagram-edge.change-new{color:var(--ok)}.diagram-edge.change-modified{color:var(--warn)}.diagram-edge.change-removed{color:var(--danger);opacity:.6}.diagram-card{border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-sm);cursor:default;border-radius:9px;flex-direction:column;transition:opacity .12s,box-shadow .12s,border-color .12s;display:flex;position:absolute;overflow:hidden}.diagram-card:hover,.diagram-card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft), var(--shadow);z-index:2}.diagram-card.match{border-color:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}.diagram-card.dim{opacity:.3}.diagram-card.change-new{border-color:var(--ok)}.diagram-card.change-modified{border-color:var(--warn)}.diagram-card.change-removed{border-color:var(--danger);opacity:.65;border-style:dashed}.diagram-card.change-removed .diagram-card-name,.diagram-row.change-removed .diagram-row-name{text-decoration:line-through}.diagram-card-header{border-bottom:1px solid var(--border);background:var(--surface-2);cursor:grab;flex-shrink:0;align-items:center;gap:6px;padding:0 6px 0 11px;display:flex}.diagram-card-header:active{cursor:grabbing}.diagram-card-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);flex:1;font-size:12.5px;font-weight:600;overflow:hidden}.diagram-count{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:11px}.diagram-tag{border-radius:999px;padding:0 6px;font-size:10.5px;font-weight:700;line-height:17px}.tag-new{background:var(--ok-soft);color:var(--ok)}.tag-modified{background:var(--warn-soft);color:var(--warn)}.tag-removed{background:var(--danger-soft);color:var(--danger)}.diagram-card-actions{opacity:0;transition:opacity .12s;display:flex}.diagram-card:hover .diagram-card-actions,.diagram-card.selected .diagram-card-actions{opacity:1}.diagram-card-actions button{width:22px;height:22px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:5px;place-items:center;display:grid}.diagram-card-actions button:hover{background:var(--surface-3);color:var(--accent-text)}.diagram-row{flex-shrink:0;align-items:center;gap:6px;padding:0 10px 0 8px;font-size:12px;display:flex}.diagram-row+.diagram-row{border-top:1px solid color-mix(in srgb, var(--border) 60%, transparent)}.diagram-row-icon{width:14px;color:var(--text-3);place-items:center;display:grid}.diagram-row.kind-pk .diagram-row-icon{color:var(--warn)}.diagram-row.kind-fk .diagram-row-icon,.diagram-row.kind-fk .diagram-row-type{color:var(--t-reference)}.diagram-row-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);flex:1;overflow:hidden}.diagram-row.kind-pk .diagram-row-name{font-weight:600}.diagram-row-required{color:var(--danger);font-weight:700}.diagram-row-type{font-family:var(--mono);color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;max-width:96px;font-size:11px;overflow:hidden}.diagram-row.change-new{background:var(--ok-soft)}.diagram-row.change-modified{background:var(--warn-soft)}.diagram-card-footer{border-top:1px solid var(--border);color:var(--text-3);flex-shrink:0;align-items:center;padding:0 10px;font-size:11px;display:flex}.diagram-toolbar,.diagram-legend{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 94%, transparent);box-shadow:var(--shadow-sm);cursor:default;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);align-items:center;gap:8px;padding:6px 8px;font-size:12.5px;display:flex;position:absolute;left:12px}.diagram-toolbar{flex-wrap:wrap;max-width:calc(100% - 24px);top:12px}.diagram-legend{color:var(--text-2);flex-wrap:wrap;gap:14px;max-width:calc(100% - 24px);font-size:12px;bottom:12px}.diagram-legend span{align-items:center;gap:5px;display:inline-flex}.legend-mark{color:var(--text-2)}.legend-dot{border-radius:50%;width:9px;height:9px;display:inline-block}.diagram-search{color:var(--text-3);align-items:center;gap:6px;display:flex}.diagram-search .input{width:190px}.diagram-toolbar-sep{background:var(--border);width:1px;height:18px}.diagram-zoom{text-align:center;min-width:38px;color:var(--text-2);font-variant-numeric:tabular-nums}.diagram-chip{background:var(--accent-soft);height:24px;color:var(--accent-text);font:inherit;font-family:var(--mono);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:5px;padding:0 8px;font-size:12px;display:inline-flex}.relation-list{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.relation-list li{align-items:center;gap:8px;font-size:13px;display:flex}.designer[hidden]{display:none}.designer-diagram{height:calc(100vh - 230px);min-height:460px;display:flex}.legend-dot.tag-new{background:var(--ok)}.legend-dot.tag-modified{background:var(--warn)}.legend-dot.tag-removed{background:var(--danger)}.files-page{position:relative}.breadcrumbs{font-family:var(--mono);flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:12px;font-size:13px;display:flex}.file-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));align-content:start;gap:12px;display:grid}.file-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:inherit;flex-direction:column;gap:4px;min-width:0;padding:8px;display:flex}.file-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.file-card.folder:hover{border-color:var(--accent)}.file-thumb{aspect-ratio:4/3;border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-3);place-items:center;display:grid;overflow:hidden}.file-card.folder .file-thumb{color:var(--accent)}.file-thumb img{object-fit:cover;width:100%;height:100%}.file-name{text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:12.5px;overflow:hidden}.file-meta{padding:0 2px;font-size:11.5px}.file-actions{align-items:center;gap:2px;display:flex}.upload-list{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:4px;margin-bottom:12px;padding:10px 12px;font-size:12.5px;display:flex}.upload-item{gap:10px;padding-bottom:4px;display:flex;position:relative}.upload-progress{background:var(--accent);border-radius:1px;height:2px;transition:width .2s;position:absolute;bottom:0;left:0}.upload-item.done .muted{color:var(--ok)}.upload-item.failed .muted{color:var(--danger)}.drop-empty{border:2px dashed var(--border-strong);border-radius:var(--radius)}.drop-overlay{z-index:20;border:2px dashed var(--accent);border-radius:var(--radius);background:color-mix(in srgb, var(--accent-soft) 85%, transparent);color:var(--accent-text);pointer-events:none;justify-content:center;align-items:center;gap:10px;font-weight:600;display:flex;position:absolute;inset:12px}.perm-scope{width:132px}.perm-note{border-top:1px solid var(--border);padding:10px 12px;font-size:12.5px}button.file-thumb{cursor:zoom-in;border:0;width:100%;padding:0}button.file-name{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;display:block}button.file-name:hover{color:var(--accent-text)}.viewer{z-index:45;color:#f1f1f5;background:#0c0c12f7;flex-direction:column;animation:.12s ease-out fade;display:flex;position:fixed;inset:0}.viewer-bar{border-bottom:1px solid #ffffff14;align-items:center;gap:8px;padding:10px 16px;display:flex}.viewer-bar .btn-ghost,.viewer-bar .icon-close{color:#d8d8e0}.viewer-bar .muted{color:#9a9aa6}.viewer-name{text-overflow:ellipsis;white-space:nowrap;max-width:50vw;overflow:hidden}.viewer-main{flex:1;min-height:0;display:flex}.viewer-stage{flex:1;place-items:center;min-width:0;padding:16px;display:grid;overflow:auto}.viewer-media{object-fit:contain;border-radius:var(--radius-sm);background:#000;max-width:100%;max-height:calc(100vh - 110px)}.viewer-pdf{border-radius:var(--radius-sm);background:#fff;border:0;width:100%;height:calc(100vh - 100px)}.viewer-text{border-radius:var(--radius-sm);background:#1b1b24;place-self:stretch stretch;overflow:auto}.viewer-text pre{font:12.5px/1.55 var(--mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:14px 16px}.viewer-note{color:#9a9aa6;padding:8px 16px 0}.viewer-none{color:#c8c8d2;justify-items:center;gap:10px;display:grid}.viewer-nav{border-radius:var(--radius-sm);color:#d8d8e0;cursor:pointer;background:0 0;border:0;align-self:center;margin:0 4px;padding:10px 4px}.viewer-nav:hover:not(:disabled){background:#ffffff14}.viewer-nav:disabled{opacity:.25;cursor:default}.viewer-info{border-left:1px solid #ffffff14;flex-shrink:0;width:280px;padding:16px;font-size:13px;overflow:auto}.viewer-info .kv dt{color:#9a9aa6}.viewer-info .kv dd{word-break:break-all}.kv{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;display:grid}.kv dt{color:var(--text-3)}.kv dd{min-width:0;margin:0}@media (width<=760px){.viewer-info{display:none}}.state-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:4px 0 16px;display:grid}.state-tab{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);gap:2px;padding:12px 14px;text-decoration:none;display:grid}.state-tab:hover{border-color:var(--border-strong)}.state-tab.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.state-tab.danger .state-count{color:var(--danger)}.state-count{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.state-name{color:var(--text-2);font-size:12.5px}.table-click tbody tr{cursor:pointer}.msg-preview{text-overflow:ellipsis;white-space:nowrap;max-width:460px;font-size:12px;overflow:hidden}.msg-error{text-overflow:ellipsis;white-space:nowrap;max-width:260px;color:var(--danger);font-size:12.5px;overflow:hidden}@media (width<=760px){.state-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}.queue-integrate{margin-top:16px}.resource-layout{grid-template-columns:236px minmax(0,1fr);min-height:100vh;display:grid}.resource-list{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:8px;height:100vh;padding:16px 10px;display:flex;position:sticky;top:0;overflow:auto}.resource-list-header{align-items:center;gap:4px;display:flex}.resource-list-title{border-radius:var(--radius-sm);color:var(--text);flex:1;align-items:center;gap:8px;padding:6px 8px;font-weight:600;text-decoration:none;display:flex}.resource-list-title:hover,.resource-list-title.active{background:var(--surface-2)}.resource-count{color:var(--text-3);margin-left:auto;font-size:12px;font-weight:500}.resource-search{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-3);align-items:center;gap:6px;padding:5px 8px;display:flex}.resource-search input{min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:13px}.resource-items{flex-direction:column;gap:1px;display:flex}.resource-item{border-radius:var(--radius-sm);color:var(--text-2);align-items:center;gap:8px;padding:6px 8px;font-size:13px;text-decoration:none;display:flex}.resource-item:hover{background:var(--row-hover);color:var(--text)}.resource-item.active{background:var(--accent-soft);color:var(--accent-text)}.resource-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.resource-meta{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12px}.resource-empty{color:var(--text-3);padding:8px;font-size:12.5px}.resource-main{min-width:0}@media (width<=900px){.resource-layout{grid-template-columns:minmax(0,1fr)}.resource-list{border-right:0;border-bottom:1px solid var(--border);height:auto;max-height:220px;position:static}}.kv-search{background:var(--surface);margin-bottom:12px}.worker-layout{grid-template-columns:minmax(0,1fr) 380px;gap:16px;min-height:0;margin-top:12px;display:grid}.code-editor-host{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);height:calc(100vh - 170px);min-height:360px;overflow:hidden}.code-editor-loading{place-items:center;display:grid}.code-editor-host .cm-editor{height:100%}:root{--code-keyword:#8b3fd9;--code-string:#1a7f37;--code-number:#b35900;--code-comment:#8a8a95;--code-function:#2659c9;--code-property:#0b6e8a;--code-variable:#16161d;--code-type:#b31d6a}@media (prefers-color-scheme:dark){:root{--code-keyword:#c792ea;--code-string:#a5d6a7;--code-number:#f5a97f;--code-comment:#7d7d8c;--code-function:#82aaff;--code-property:#7fdbca;--code-variable:#e6e6ee;--code-type:#f78c9c}}.code-editor-host .tok-keyword,.code-editor-host .tok-controlKeyword,.code-editor-host .tok-definitionKeyword,.code-editor-host .tok-moduleKeyword,.code-editor-host .tok-operatorKeyword{color:var(--code-keyword)}.code-editor-host .tok-string,.code-editor-host .tok-string2{color:var(--code-string)}.code-editor-host .tok-number,.code-editor-host .tok-bool,.code-editor-host .tok-atom{color:var(--code-number)}.code-editor-host .tok-comment,.code-editor-host .tok-lineComment,.code-editor-host .tok-blockComment{color:var(--code-comment);font-style:italic}.code-editor-host .tok-variableName.tok-definition,.code-editor-host .tok-function{color:var(--code-function)}.code-editor-host .tok-propertyName{color:var(--code-property)}.code-editor-host .tok-variableName{color:var(--code-variable)}.code-editor-host .tok-typeName,.code-editor-host .tok-className{color:var(--code-type)}.worker-side{min-width:0}.worker-error{max-height:260px;font:12px/1.5 var(--mono);white-space:pre-wrap;word-break:break-word;margin:6px 0 0;overflow:auto}.template-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.template-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;font:inherit;gap:4px;padding:12px;font-size:13px;display:grid}.template-card:hover{border-color:var(--border-strong)}.template-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot-ok{background:var(--ok)}.dot-warn{background:var(--warn)}.dot-muted{background:var(--border-strong)}@media (width<=1100px){.worker-layout{grid-template-columns:minmax(0,1fr)}}:root{--log-error:#d03b3b;--log-warn:#fab219;--log-info:#8a8a95;--log-debug:#cfcfd8}@media (prefers-color-scheme:dark){:root{--log-info:#75757f;--log-debug:#3a3a47}}.lvl-error{background:var(--log-error)}.lvl-warn{background:var(--log-warn)}.lvl-info{background:var(--log-info)}.lvl-debug{background:var(--log-debug)}.log-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.log-filters .select{width:auto}.log-search{background:var(--surface);flex:1;min-width:220px}.log-chips{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.log-chip{border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.log-histogram-head{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12.5px;display:flex}.log-legend{color:var(--text-2);gap:12px;display:flex}.log-legend-item{align-items:center;gap:5px;display:inline-flex}.log-swatch{border-radius:2px;width:9px;height:9px;display:inline-block}.log-plot{border-bottom:1px solid var(--border);height:96px;padding-top:14px;position:relative}.log-ymax{color:var(--text-3);font-size:11px;position:absolute;top:0;left:0}.log-columns{align-items:flex-end;gap:2px;height:100%;display:flex}.log-column{cursor:pointer;background:0 0;border:0;flex:1;justify-content:center;align-items:flex-end;height:100%;padding:0;display:flex}.log-column.hover{background:var(--row-hover)}.log-stack{border-radius:4px 4px 0 0;flex-direction:column-reverse;gap:2px;width:100%;max-width:24px;min-height:0;display:flex;overflow:hidden}.log-seg{flex-basis:0;min-height:2px}.log-tip{z-index:5;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:150px;box-shadow:var(--shadow);pointer-events:none;padding:8px 10px;font-size:12px;position:absolute;top:14px}.log-tip-time{margin-bottom:4px;font-weight:600}.log-tip-row{align-items:center;gap:6px;display:flex}.log-tip-count{font-variant-numeric:tabular-nums;margin-left:auto}.log-tip-hint{margin-top:4px}.log-xaxis{justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.log-card{margin-top:12px}.log-table td{vertical-align:top}.log-time{white-space:nowrap;font-size:12px}.log-message{white-space:pre-wrap;word-break:break-word;font-size:12.5px}.lvl-row-error td:first-child{box-shadow:inset 3px 0 0 var(--log-error)}.lvl-row-warn td:first-child{box-shadow:inset 3px 0 0 var(--log-warn)}.log-tip.tip-center{transform:translate(-50%)}.log-tip.tip-right{transform:translate(calc(-100% - 12px))}.log-tip.tip-left{transform:translate(12px)}.trigger-layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:16px;display:grid}.trigger-next{gap:2px;margin-top:-6px;font-size:12.5px;display:grid}.activity{gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.activity li{grid-template-columns:90px minmax(0,1fr);gap:8px;display:grid}.activity-error span:last-child{color:var(--danger)}@media (width<=1000px){.trigger-layout{grid-template-columns:minmax(0,1fr)}}.gql-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.gql-toolbar .select,.gql-toolbar select{width:auto}.gql-sub{width:200px}.gql-endpoint{text-overflow:ellipsis;white-space:nowrap;max-width:360px;font-size:12px;overflow:hidden}.gql-layout{grid-template-columns:200px minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:14px;min-height:0;display:grid}.gql-examples{max-height:calc(100vh - 230px);padding:0 8px 10px;overflow:auto}.gql-explorer-head{flex-direction:column;align-items:flex-start;gap:2px;padding:12px 8px 3px;display:flex}.gql-explorer-head .gql-examples-title{padding:0}.gql-explorer-head .muted,.gql-explorer-hint{font-size:10.5px}.gql-explorer-hint{color:var(--text-3);padding:0 8px 10px;line-height:1.35}.gql-examples-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:2px 8px 8px;font-size:11.5px;font-weight:600}.gql-examples-empty{padding:0 8px;font-size:12.5px}.gql-realtime{border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px}.gql-section-title{align-items:center;gap:5px;padding-top:6px;display:flex}.gql-section-toggle{cursor:pointer;text-align:left;justify-content:flex-start}.gql-section-heading,.gql-op-heading{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:5px;padding:5px 8px 3px;font-size:10px;font-weight:600;display:flex}.gql-op-group{margin:3px 0 7px}.gql-op-method{color:var(--accent);letter-spacing:.04em;opacity:.8;margin-left:auto;font-size:9px;font-weight:600}.gql-op-mutation{color:var(--warning)}.gql-realtime-example{color:var(--accent)}.gql-changefeed-example{padding-left:38px;font-size:11.5px}.gql-table,.gql-example{width:100%;color:var(--text);text-align:left;cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;display:flex}.gql-example-list{border-left:1px solid var(--border);margin:0 0 5px 14px;padding:2px 0 2px 4px}.gql-schema-details{background:color-mix(in srgb, var(--panel) 70%, var(--row-hover));border-radius:5px;margin:2px 4px 7px;padding:7px 8px}.gql-schema-label{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;font-size:9px;font-weight:600}.gql-schema-details code{color:var(--text-2);overflow-wrap:anywhere;max-height:3.1em;font-size:10.5px;line-height:1.45;display:block;overflow:hidden}.gql-schema-help{color:var(--text-3);margin-top:4px;font-size:10px;line-height:1.35}.gql-arg-doc{border-top:1px solid color-mix(in srgb, var(--border) 70%, transparent);margin-top:5px;padding-top:4px}.gql-arg-name{color:var(--text);margin-right:5px;font-size:10.5px;font-weight:600}.gql-arg-check{cursor:pointer;align-items:center;gap:5px;display:inline-flex}.gql-arg-check input{accent-color:var(--accent);margin:0}.gql-arg-type{color:var(--accent);font-family:var(--font-mono);font-size:10px}.gql-input-fields{gap:1px;max-height:7.5em;margin:3px 0 0 8px;display:grid;overflow:auto}.gql-input-fields code{color:var(--text-3);max-height:none;font-size:9.5px;line-height:1.35}.gql-field-picker-label{border-top:1px solid var(--border);color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;margin-top:7px;padding-top:7px;font-size:9px;font-weight:600}.gql-field-picker{gap:1px;max-height:135px;margin-top:3px;display:grid;overflow:auto}.gql-field-check{cursor:pointer;border-radius:4px;align-items:center;gap:5px;padding:3px 2px;font-size:10.5px;display:flex}.gql-field-check:hover{background:var(--row-hover)}.gql-field-check input{accent-color:var(--accent);margin:0}.gql-field-check em{color:var(--text-3);font-family:var(--font-mono);margin-left:auto;font-size:9px;font-style:normal}.gql-schema-mutation{border-top:1px solid var(--border);margin-top:5px;padding-top:5px}.gql-example-list .gql-example{padding-left:10px;padding-right:8px}.gql-table{padding:6px 8px;font-size:13px}.gql-example{color:var(--text-2);padding:5px 8px 5px 28px;font-size:12.5px}.gql-table:hover,.gql-example:hover{background:var(--row-hover);color:var(--text)}.gql-editor-col{flex-direction:column;gap:12px;min-width:0;display:flex}.code-editor-host.gql-editor{height:calc(100vh - 380px);min-height:320px}.gql-editor-hint{color:var(--text-3);margin-top:-5px;font-size:11px;line-height:1.35}.auth-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px;display:grid}.auth-panel-nav{gap:8px;margin:0 0 14px;display:flex}.search-page .page-header{margin-bottom:16px}.search-bar{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);align-items:center;gap:10px;padding:6px 6px 6px 14px;display:flex}.search-bar:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-bar-icon{color:var(--text-3);flex:none}.search-bar-input{min-width:0;height:36px;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:15px}.search-bar-input::placeholder{color:var(--text-3)}.search-results{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.search-index{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;font-size:12px;display:flex}.search-index-label{color:var(--text-3);font-weight:600}.search-index-group{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:5px;display:inline-flex}.search-source{border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);font-family:var(--mono);border-radius:999px;padding:2px 8px;font-size:11.5px}.search-index-status{color:var(--text-3)}.search-error{background:color-mix(in srgb, var(--danger) 10%, transparent);border:1px solid color-mix(in srgb, var(--danger) 35%, transparent);color:var(--danger);border-radius:8px;margin-top:10px;padding:9px 11px;font-size:12px}.search-score{background:var(--ok-soft);color:var(--ok);border-radius:999px;padding:3px 7px;font-size:11px;font-weight:650}.search-result{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:16px;transition:border-color .12s,transform .12s}.search-result:hover{border-color:var(--border-strong);transform:translateY(-1px)}.search-result-meta{justify-content:space-between;align-items:center;margin-bottom:11px;display:flex}.search-result-source{color:var(--text-3);text-transform:uppercase;letter-spacing:.045em;align-items:center;gap:5px;font-size:11px;display:inline-flex}.search-result h3{margin:0;font-size:15px;line-height:1.35}.search-result p{color:var(--text-2);overflow-wrap:anywhere;margin:8px 0 0;font-size:12.5px;line-height:1.55}.search-results-heading{align-items:baseline;gap:9px;margin:22px 2px 11px;display:flex}.search-results-heading span{color:var(--text-3);font-size:12px}.search-empty{color:var(--text-3);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:56px 0 24px;display:flex}@media (width<=900px){.search-results{grid-template-columns:1fr}}.secrets-layout{grid-template-columns:minmax(0,1.4fr) minmax(300px,.8fr);gap:14px;display:grid}.secrets-list{gap:0;display:grid}.secret-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:13px 0;display:flex}.secret-row:last-child{border-bottom:0}.secret-description{margin-top:4px;font-size:12px;display:block}.secret-row-actions{align-items:center;gap:7px;display:flex}.secret-form-actions{justify-content:flex-end;gap:8px;display:flex}@media (width<=850px){.secrets-layout{grid-template-columns:minmax(0,1fr)}.secret-row{flex-direction:column;align-items:flex-start}}.auth-provider{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:11px 0;display:flex}.auth-provider:first-child{padding-top:0}.auth-provider:last-child{border-bottom:0}.auth-provider p{margin:4px 0 0;font-size:12px}.auth-callback{overflow-wrap:anywhere;font-size:11px}.auth-form{gap:10px;display:grid}.auth-users-toolbar{justify-content:space-between;gap:10px;margin-bottom:14px;display:flex}.auth-user-search{flex:1;align-items:center;gap:8px;max-width:420px;display:flex}.auth-user-search .input{width:100%}.auth-user-table-wrap{overflow-x:auto}.auth-user-table{min-width:700px}.auth-user-email{margin-top:3px;font-size:12px;display:block}.auth-user-actions{justify-content:flex-end;gap:6px;display:flex}@media (width<=650px){.auth-users-toolbar{flex-direction:column;align-items:stretch}.auth-user-search{max-width:none}}@media (width<=850px){.auth-grid{grid-template-columns:minmax(0,1fr)}}.gql-result-col{min-width:0}@media (width<=1100px){.gql-layout{grid-template-columns:minmax(0,1fr)}.gql-examples{max-height:none}.code-editor-host.gql-editor{height:360px}}.consumer-row{grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.text-danger{color:var(--danger)}.lifecycle-row{grid-template-columns:auto minmax(0,1fr) auto 72px auto auto;align-items:center;gap:8px;display:grid}.perm-head{align-items:center;gap:12px;display:flex}.perm-head h3{flex:1;align-items:center;gap:8px;min-width:0;margin:0;font-size:15px;display:flex}.perm-tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:4px;display:flex;overflow:auto hidden}.perm-tab{color:var(--text-2);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:500;display:inline-flex}.perm-tab:hover{color:var(--text)}.perm-tab.active{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.perm-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.perm-services-note{color:var(--text-3);margin:-4px 0 0;font-size:12px}.security-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.security-tabs button{color:var(--text-3);cursor:pointer;font:inherit;background:0 0;border:0;padding:10px 14px}.security-tabs button.active{color:var(--text);box-shadow:inset 0 -2px var(--accent)}.security-rule{border-top:1px solid var(--border);grid-template-columns:1.3fr 1fr 1fr 1fr auto auto;align-items:end;gap:10px;padding:14px 0;display:grid}.security-enabled{white-space:nowrap;align-items:center;gap:6px;height:36px;display:flex}.security-note{color:var(--text-3);align-items:center;gap:8px;margin-top:14px;display:flex}.backup-settings{align-items:end;gap:24px;display:flex}.backup-runs{gap:8px;display:grid}.backup-run{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.backup-run span{word-break:break-all;margin-top:4px;font-size:12px;display:block}.backup-run-actions{align-items:center;gap:8px;display:flex}@media (width<=1000px){.security-rule{grid-template-columns:repeat(2,minmax(0,1fr))}}.roles-layout>*{min-width:0}@media (width<=900px){.roles-layout{grid-template-columns:minmax(0,1fr)}:is(.roles-layout .card:has(>.table),.roles-layout .card:has(>table)){overflow-x:auto}}.nav-jump{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);height:32px;color:var(--text-3);font:inherit;cursor:pointer;align-items:center;gap:8px;margin:0 12px 6px;padding:0 10px;font-size:13px;display:flex}.nav-jump:hover{border-color:var(--border-strong);color:var(--text-2)}.nav-jump kbd,.palette-foot kbd{border:1px solid var(--border);background:var(--surface-2);color:var(--text-3);font-family:var(--font);border-radius:4px;padding:1px 5px;font-size:11px}.nav-jump kbd{margin-left:auto}.nav-item .nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-group{margin-top:10px}.nav-group-head{border-radius:var(--radius-sm);width:100%;color:var(--text-3);font:inherit;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:700;display:flex}.nav-group-head:hover{color:var(--text-2)}.nav-group-chevron{transition:transform .12s}.nav-group-head[aria-expanded=true] .nav-group-chevron{transform:rotate(90deg)}.nav-group-body{margin-top:2px}.nav-sub{border-left:1px solid var(--border);margin:1px 0 4px 17px;padding-left:8px}.nav-sub .nav-item{height:27px;padding:0 8px;font-size:13px}.nav-divider{background:var(--border);height:1px;margin:10px 4px}.palette-overlay{z-index:90;background:#0a0a1473;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.palette{border:1px solid var(--border);background:var(--surface);width:min(600px,100%);max-height:70vh;box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.palette-input{border-bottom:1px solid var(--border);color:var(--text-3);align-items:center;gap:10px;padding:12px 14px;display:flex}.palette-input input{min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:15px}.palette-list{padding:4px 6px 6px;overflow-y:auto}.palette-group{color:var(--text-3);padding:10px 10px 4px;font-size:11px;font-weight:600}.palette-item{border-radius:var(--radius-sm);height:34px;color:var(--text-3);cursor:pointer;align-items:center;gap:10px;padding:0 10px;font-size:13.5px;display:flex}.palette-item.active{background:var(--accent-soft);color:var(--accent-text)}.palette-label{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.palette-item.active .palette-label{color:var(--accent-text)}.palette-hint{color:var(--text-3);font-size:12px}.palette-empty{color:var(--text-3);text-align:center;margin:0;padding:28px 12px}.palette-foot{border-top:1px solid var(--border);color:var(--text-3);align-items:center;gap:5px;padding:8px 12px;font-size:11.5px;display:flex}.mobile-bar{display:none}@media (width<=900px){.mobile-bar{z-index:20;border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:10px;padding:10px 16px;display:flex;position:sticky;top:0}.mobile-bar .brand-mark{width:24px;height:24px}.mobile-bar .nav-jump{margin:0}.mobile-bar-project{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}}.link-button{color:var(--accent-text);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-size:12.5px;font-weight:500;display:inline-flex}.link-button:hover{text-decoration:underline}.table th.num,.table td.num{text-align:right;font-variant-numeric:tabular-nums}.browser-page{gap:16px;overflow-y:auto}.browser-page .page-header{margin-bottom:0}.browser-tabs{display:flex}.browser-play{grid-template-columns:minmax(340px,440px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.browser-result{position:sticky;top:0}.browser-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;display:grid}.browser-label-row{align-items:center;gap:8px;display:flex}.browser-label-row .link-button{margin-left:auto}.browser-examples{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.browser-inline{flex-wrap:wrap;gap:8px 16px;display:flex}.browser-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;display:grid}.browser-row>.btn{justify-self:start}.browser-run{flex-wrap:wrap;align-items:center;gap:10px;padding-top:4px;font-size:12px;display:flex}.browser-options{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.browser-options>summary{cursor:pointer;align-items:center;gap:8px;padding:9px 12px;font-size:13px;font-weight:600;list-style:none;display:flex}.browser-options>summary::-webkit-details-marker{display:none}.browser-options>summary .muted{font-size:12px;font-weight:400}.browser-options-chevron{transition:transform .12s;transform:rotate(-90deg)}.browser-options[open] .browser-options-chevron{transform:none}.browser-options-body{flex-direction:column;gap:12px;padding:4px 12px 12px;display:flex}.browser-devices{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.browser-device{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-2);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:7px 4px;font-size:12px;display:flex}.browser-device .muted{font-variant-numeric:tabular-nums;font-size:10.5px}.browser-device.active{border-color:var(--accent);color:var(--accent-text);box-shadow:0 0 0 1px var(--accent)}.browser-result{min-height:420px}.browser-result-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.browser-meta{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;font-size:12.5px;display:flex}.browser-meta-title{text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-weight:600;overflow:hidden}.browser-loading{min-height:320px;color:var(--text-2);justify-content:center;align-items:center;gap:10px;display:flex}.browser-file{flex-direction:column;gap:10px;display:flex}.browser-file-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font-size:12.5px;display:flex}.browser-file-bar .input{max-width:280px}.browser-text{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);max-height:620px;font-family:var(--mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:14px 16px;font-size:12.5px;line-height:1.6;overflow:auto}.browser-frame,.browser-pdf{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;width:100%;height:620px}.browser-image{border:1px solid var(--border);border-radius:var(--radius-sm);background:repeating-conic-gradient(var(--surface-2) 0% 25%, var(--surface) 0% 50%) 50% / 16px 16px;max-height:720px;overflow:auto}.browser-image img{width:100%;height:auto;display:block}.browser-links{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:620px;margin:0;padding:0;list-style:none;overflow:auto}.browser-links li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:5px 6px 5px 12px;font-size:12.5px;display:flex}.browser-links li:last-child{border-bottom:0}.browser-links li:hover{background:var(--row-hover)}.browser-links li>.mono{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.browser-link-actions{flex-shrink:0;gap:2px;display:flex}.browser-scrape{border:1px solid var(--border);border-radius:var(--radius-sm)}.browser-scrape header{border-bottom:1px solid var(--border);background:var(--surface-2);justify-content:space-between;align-items:center;padding:8px 12px;font-size:12.5px;display:flex}.browser-scrape ol{max-height:320px;margin:0;padding:6px 12px 8px 34px;font-size:13px;overflow:auto}.browser-scrape li{flex-direction:column;padding:3px 0;display:flex}.browser-scrape li .mono{word-break:break-all;font-size:11.5px}.browser-hosts{min-width:240px}.browser-overview-link{margin-left:auto}.budget-meter{flex-direction:column;gap:6px;min-width:200px;display:flex}.budget-meter.compact{gap:4px;min-width:220px}.budget-label{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.budget-meter.compact .budget-label{color:var(--text-2);text-align:right;font-size:12px;font-weight:500}.meter{background:var(--accent-soft);border-radius:999px;height:8px;display:block;overflow:hidden}.meter-fill{background:var(--accent);border-radius:999px;height:100%;display:block}.budget-warn .meter{background:var(--warn-soft)}.budget-warn .meter-fill{background:var(--warn)}.budget-danger .meter,.budget-off .meter{background:var(--danger-soft)}.budget-danger .meter-fill,.budget-off .meter-fill{background:var(--danger)}.budget-off .meter-fill{width:0!important}.browser-usage-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.browser-usage-top p{margin:0}.browser-days>summary{border-top:1px solid var(--border);color:var(--text-2);cursor:pointer;padding:10px 16px;font-size:12.5px}.usage-chart{grid-template-rows:180px auto;grid-template-columns:auto minmax(0,1fr);column-gap:8px;display:grid}.usage-axis{color:var(--text-3);font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;align-items:flex-end;height:calc(100% + 1em);font-size:11px;display:flex;transform:translateY(-.5em)}.usage-plot{position:relative}.usage-grid{pointer-events:none;flex-direction:column;justify-content:space-between;display:flex;position:absolute;inset:0}.usage-grid span{border-top:1px solid var(--border)}.usage-columns{align-items:stretch;gap:2px;display:flex;position:absolute;inset:0}.usage-column{cursor:default;background:0 0;border:0;border-radius:4px 4px 0 0;flex:1;justify-content:center;align-items:flex-end;padding:0;display:flex}.usage-column.active,.usage-column:focus-visible{background:var(--row-hover);outline:none}.usage-bar{background:var(--accent);border-radius:4px 4px 0 0;width:100%;max-width:24px;display:block}.usage-tip{z-index:5;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-width:170px;box-shadow:var(--shadow);pointer-events:none;flex-direction:column;gap:2px;padding:8px 10px;font-size:12px;display:flex;position:absolute;top:4px;transform:translate(-50%)}.usage-tip.tip-left{transform:translate(calc(-100% - 12px))}.usage-tip.tip-right{transform:translate(12px)}.usage-tip-row{justify-content:space-between;gap:12px;display:flex}.usage-xaxis{color:var(--text-3);grid-column:2;justify-content:space-between;padding-top:6px;font-size:11px;display:flex}@media (width<=1000px){.browser-play,.browser-usage-top{grid-template-columns:minmax(0,1fr)}.browser-result{position:static}}@media (width<=640px){.browser-devices{grid-template-columns:repeat(3,minmax(0,1fr))}.budget-meter.compact{width:100%;min-width:0}.budget-meter.compact .budget-label{text-align:left}}.browser-thumbs{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;max-height:420px;padding:8px;display:grid;overflow:auto}.browser-thumbs a{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);display:block;overflow:hidden}.browser-thumbs img{object-fit:cover;width:100%;height:100%}.dot-danger{background:var(--danger)}.table-scroll{overflow-x:auto}.fn-table td{vertical-align:middle}.fn-runtime{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.fn-url{align-items:center;gap:2px;min-width:0;max-width:100%;display:inline-flex}.fn-url-text{text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);max-width:360px;font-size:12px;overflow:hidden}.fn-note{margin:0;font-size:12.5px}.fn-issues{margin:4px 0 0;padding-left:18px}.fn-starters{grid-template-columns:repeat(3,minmax(0,1fr))}.fn-starter-files{color:var(--text-3);font-size:11.5px}.fn-drop{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-2);cursor:pointer;align-items:center;gap:10px;padding:14px;display:flex;position:relative}.fn-drop:hover{border-color:var(--accent)}.fn-drop input{opacity:0;cursor:pointer;position:absolute;inset:0}.fn-page{min-width:0}.fn-toolbar .fn-url-text{max-width:420px}.fn-tabs{margin-bottom:16px}.fn-tabs .perm-tab{text-decoration:none}.fn-loading{place-items:center;min-height:160px;display:grid}.fn-code-bar,.fn-file-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fn-file-path{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.fn-code{grid-template-columns:240px minmax(0,1fr);align-items:stretch;gap:12px;display:grid}.fn-code .fn-tree{flex-direction:column;display:flex}.fn-code .fn-tree-items{flex:1;max-height:none}.fn-tree{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.fn-tree-head{border-bottom:1px solid var(--border);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;align-items:center;padding:6px 6px 6px 12px;font-size:12px;font-weight:600;display:flex}.fn-tree-items{min-height:120px;max-height:calc(100vh - 300px);padding:4px 0;overflow:auto}.fn-tree-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:5px 8px;font-size:13px;display:flex}.fn-tree-item:hover{background:var(--row-hover)}.fn-tree-item.active{background:var(--row-selected);color:var(--accent-text)}.fn-tree-folder{color:var(--text-2)}.fn-tree-binary{color:var(--text-3)}.fn-tree-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fn-tree-dirty{background:var(--warn);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:auto}.fn-editor{min-width:0}.fn-editor-host{height:calc(100vh - 300px);min-height:360px}.fn-editor-empty{border:1px dashed var(--border);border-radius:var(--radius)}.fn-deploy-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:4px;display:grid}.fn-deploy-summary strong{margin:2px 0;font-size:15px;display:block}.fn-deploy-grid{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.fn-row-active td{background:var(--row-selected)}.fn-log{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);min-height:120px;max-height:420px;color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px 12px;font-size:12px;line-height:1.55;overflow:auto}.fn-log-lines{white-space:normal}.fn-log-line{grid-template-columns:150px minmax(0,1fr);gap:10px;display:grid}.fn-log-time{color:var(--text-3);white-space:nowrap}.fn-log-message{white-space:pre-wrap;word-break:break-word}.fn-logs-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.fn-logs-filter{color:var(--text-3);flex:260px;align-items:center;gap:6px;display:flex}.fn-logs-actions{flex-wrap:wrap}.fn-test{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.fn-test-line{grid-template-columns:110px minmax(0,1fr) auto;gap:8px;display:grid}.fn-kv-rows{gap:6px}.fn-kv-row{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;align-items:center;gap:6px;display:grid}.fn-headers summary{cursor:pointer;color:var(--text-2);font-size:13px}.fn-header-value{word-break:break-all}.fn-detected{grid-template-columns:110px minmax(0,1fr);gap:8px 12px;margin:0;font-size:13.5px;display:grid}.fn-detected dt{color:var(--text-2)}.fn-detected dd{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;margin:0;display:flex}.fn-command{font-family:var(--mono);background:var(--surface-2);overflow-wrap:anywhere;border-radius:5px;padding:2px 6px;font-size:12px}.fn-settings-save{z-index:5;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex;position:sticky;bottom:12px;box-shadow:0 6px 24px #00000014}.fn-card-note{font-size:12px}.fn-overrides{border-top:1px solid var(--border);padding-top:12px}.fn-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.fn-head-main{flex-direction:column;gap:6px;min-width:0;display:flex}.fn-head-title{align-items:center;gap:10px;min-width:0;display:flex}.fn-head-title h1{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:20px;font-weight:650;overflow:hidden}.fn-head-title .dot{width:7px;height:7px}.fn-head-icon{background:var(--accent-soft);width:32px;height:32px;color:var(--accent-text);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.fn-head-meta{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;display:flex}.fn-head-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.fn-head-actions .btn{align-items:center;gap:6px;display:inline-flex}.fn-endpoint{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);align-items:center;gap:4px;min-width:0;max-width:100%;padding:4px 4px 4px 10px;display:flex}.fn-head-url{align-self:flex-start}.fn-endpoint-url{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12.5px;overflow:hidden}.fn-overview .card-header{min-height:53px}.fn-overview{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.fn-facts{flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;display:flex}.fn-facts>span{align-items:center;gap:6px;display:inline-flex}.fn-first{flex-direction:column;gap:14px;display:flex}.fn-first-text{flex-direction:column;gap:4px;display:flex}.fn-first-text strong{font-size:15px}.fn-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.fn-steps li{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);align-items:center;gap:10px;padding:10px 12px;font-size:13px;display:flex}.fn-steps li>span{background:var(--accent-soft);width:22px;height:22px;color:var(--accent-text);border-radius:50%;flex-shrink:0;place-items:center;font-size:12px;font-weight:650;display:grid}.fn-steps li.done>span{background:var(--ok);color:#fff}.fn-danger{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.fn-danger p{flex:320px;margin:0}.fn-perm-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px 12px;display:grid}@media (width<=1100px){.fn-test,.fn-deploy-grid,.fn-overview{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.fn-head{flex-direction:column}.fn-head-actions{width:100%}.fn-head-actions>*{flex:1;justify-content:center}.fn-steps,.fn-code{grid-template-columns:minmax(0,1fr)}.fn-code .fn-tree-items,.fn-tree-items{max-height:220px}.fn-editor-host{height:60vh}.fn-starters,.fn-deploy-summary{grid-template-columns:minmax(0,1fr)}.fn-test-line{grid-template-columns:96px minmax(0,1fr)}.fn-test-line .btn{grid-column:1/-1}.fn-kv-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.fn-log-line{grid-template-columns:minmax(0,1fr);gap:0}.fn-url-text,.fn-toolbar .fn-url-text{max-width:200px}.fn-detected{grid-template-columns:minmax(0,1fr);gap:2px}.fn-detected dd{margin-bottom:8px}}
