/* StitchDB native Studio (06-studio.md §4). Tokens only. */
.dash .page.page--studio{padding:0;max-width:none}
.page--studio > .crumbs,.page--studio > .page-banners:empty{display:none}
.page--studio > .page-banners{padding:12px 16px 0}
.page--studio > .page-banners .banner{margin:0}
.studio-pane{display:grid;grid-template-rows:auto minmax(0,1fr);height:calc(100vh - 56px);min-height:420px;background:var(--surface)}
.pane-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:6px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap;background:var(--surface)}
.pane-title{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.pane-title h1{font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40ch}
.pane-crumb{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:8px}
.pane-crumb::after{content:"›";color:var(--faint)}
.pane-crumb:only-child::after{content:none}
.pane-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pane-body{min-height:0;overflow:auto}
.st-pad{padding:16px}
.st-split{display:grid;grid-template-columns:240px minmax(0,1fr);overflow:hidden}
.st-left{border-right:1px solid var(--border);background:var(--bg-2);min-height:0;overflow:auto}
.st-left-inner{display:flex;flex-direction:column;min-height:100%}
.st-left-head{padding:10px;display:grid;gap:8px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-2);z-index:2}
.st-main{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.st-list{padding:6px 6px 16px;display:grid;gap:1px;align-content:start}
.st-group{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:12px 8px 4px;display:flex;justify-content:space-between;align-items:center}
.st-item{display:flex;align-items:center;gap:8px;min-height:32px;padding:4px 8px;border-radius:var(--r-2);font-size:13.5px;color:var(--text-2);background:none;border:0;width:100%;text-align:left;cursor:pointer;min-width:0}
.st-item svg{width:15px;height:15px;color:var(--faint);flex:none}
.st-item:hover{background:var(--surface-2);color:var(--text)}
.st-item[aria-current="page"]{background:var(--surface);color:var(--text);box-shadow:var(--sh-1);font-weight:500}
.st-item[aria-current="page"] svg{color:var(--accent-text)}
.st-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-item .badge{height:18px;padding:0 5px;font-size:10.5px}
.st-item-sub{font-size:12px;color:var(--faint)}
.st-item-row{display:flex;align-items:center;gap:2px}
.st-item-row .st-item{flex:1}
.st-item-row .menu-wrap .btn{opacity:.6}
.st-item-row:hover .menu-wrap .btn{opacity:1}
.st-warn{color:var(--warn);display:inline-flex}
.st-warn svg{width:14px;height:14px;color:var(--warn)}
.st-none{font-size:13px;color:var(--faint);padding:4px 8px;margin:0}
.st-mobile-pick{display:none;padding:10px 12px;border-bottom:1px solid var(--border)}
.input-sm{height:32px;font-size:13px;padding:0 10px}
select.input-sm{padding-right:28px;background-position:right 8px center}
.input-icon .input-sm{padding-left:32px}
.input-icon:has(.input-sm) > svg{top:8px;left:10px}
.btn-split{display:inline-flex}
.btn-split > .btn{border-radius:var(--r-pill) 0 0 var(--r-pill);padding-right:12px}
.btn-split .menu-wrap .btn{border-radius:0 var(--r-pill) var(--r-pill) 0;border-left-color:rgba(255,255,255,.3);width:32px;padding-right:2px}
.studio-callout{margin:12px 16px 0}

/* ---------- data grid ---------- */
.te-main{display:flex;flex-direction:column;min-height:0;height:100%}
.te-grid{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}
.te-grid > .st-pad{overflow:auto}
.sgrid-wrap{flex:1;min-height:0;overflow:auto;background:var(--surface)}
.sgrid{border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:13px;min-width:100%;width:max-content}
.sgrid th{position:sticky;top:0;z-index:2;background:var(--bg-2);border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:0;text-align:left;font-weight:500;height:36px}
.sg-th{display:flex;align-items:center;gap:6px;padding:0 6px 0 10px;height:36px;min-width:0}
.sg-name{font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;min-width:0}
.sg-pk{display:inline-flex;color:var(--warn)} .sg-pk svg{width:12px;height:12px}
.sg-type{font:11px var(--font-mono);color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.sg-hmenu{background:none;border:0;padding:2px;border-radius:4px;color:var(--faint);cursor:pointer;display:inline-flex;opacity:0}
.sgrid th:hover .sg-hmenu,.sg-hmenu[aria-expanded="true"],.sg-hmenu:focus-visible{opacity:1}
.sg-hmenu:hover{background:var(--surface-2);color:var(--text)}
.sg-hmenu svg{width:14px;height:14px}
.sgrid th .menu{font-weight:400}
.sg-resize{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:3}
.sg-resize:hover{background:var(--accent-border)}
.sgrid th{position:sticky}
.sgrid td{height:34px;padding:0 10px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono);font-size:12.5px;color:var(--text);position:relative;max-width:0}
.sgrid td:focus{outline:2px solid var(--focus);outline-offset:-2px;border-radius:0}
.sgrid td.is-editing{padding:0;overflow:visible}
.sgrid td.is-saving{opacity:.55}
.sgrid tbody tr:hover td{background:var(--surface-2)}
.sgrid tr.is-selected td{background:var(--accent-soft)}
.sg-check{width:40px;text-align:center;position:sticky !important;left:0;z-index:1;background:var(--surface)}
th.sg-check{z-index:3;background:var(--bg-2)}
.sg-check input{accent-color:var(--accent);width:15px;height:15px;margin:0;vertical-align:middle}
.sgrid td.sg-check{padding:0;max-width:none}
.sgrid td.sg-int,.sgrid td.sg-num{text-align:right}
.cell-null{font-style:italic;color:var(--faint)}
.cell-bool.yes{color:var(--success)} .cell-bool.no{color:var(--muted)}
.cell-json{color:var(--text-2)}
.sg-input{width:100%;height:33px;border:2px solid var(--accent);background:var(--surface);color:var(--text);font:12.5px var(--font-mono);padding:0 8px;outline:none;border-radius:0}
.sg-fk{position:absolute;right:4px;top:7px;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 3px;color:var(--muted);cursor:pointer;display:none}
.sg-fk svg{width:12px;height:12px}
.sgrid td:hover .sg-fk,.sgrid td:focus .sg-fk{display:inline-flex}
.sgrid-empty{flex:1;display:grid;place-items:center;padding:24px}
.te-foot{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--border);font-size:13px;color:var(--muted);background:var(--surface);flex-wrap:wrap}
.te-foot .spacer{flex:1}
.te-sel{display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.te-sel[hidden]{display:none}
.te-banner{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:13px;background:var(--warn-soft);border-bottom:1px solid var(--warn-border);color:var(--text-2)}
.te-banner svg{width:16px;height:16px;color:var(--warn);flex:none}
.te-banner.is-info{background:var(--info-soft);border-color:var(--info-border)} .te-banner.is-info svg{color:var(--info)}
.te-frow{display:grid;grid-template-columns:1.2fr .9fr 1.4fr 32px;gap:8px;margin-bottom:8px}
@media (max-width:480px){.te-frow{grid-template-columns:1fr 1fr}.te-frow .input[data-f=value]{grid-column:1/-1}}

/* row drawer + table dialog */
.rf-label{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rf-label .badge{height:18px;font-size:11px}
.rf-flags{margin-left:auto;display:inline-flex;gap:12px}
.rf-flags .checkbox input{margin-top:2px}
.modal.tc-dialog{width:min(980px,100%)}
.tc-cols{display:grid;gap:6px;overflow-x:auto;padding-bottom:4px}
.tc-row{display:grid;grid-template-columns:minmax(120px,1.2fr) minmax(120px,1fr) minmax(130px,1.2fr) auto auto auto minmax(70px,auto) auto auto;gap:6px;align-items:center;min-width:820px}
.tc-row .checkbox{gap:4px;white-space:nowrap}
.tc-row .checkbox input{margin-top:0}
.tc-fk{max-width:180px;overflow:hidden;text-overflow:ellipsis;justify-content:flex-start}
.tc-fk.has-fk{border-color:var(--accent-border);color:var(--accent-text)}
.tc-opts{display:grid;gap:10px;padding:14px;border:1px solid var(--border);border-radius:var(--r-3);background:var(--bg-2)}
.sql-preview{border:1px solid var(--border);border-radius:var(--r-3);overflow:hidden}
.sql-preview > summary{display:flex;gap:8px;align-items:center;padding:8px 12px;cursor:pointer;font-size:13px;font-weight:500;color:var(--muted);list-style:none}
.sql-preview > summary::-webkit-details-marker{display:none}
.sql-preview > summary svg{width:15px;height:15px}
.sql-preview .code{margin:0;border-radius:0;border:0}
.json-view{margin:0;padding:12px;background:var(--code-bg);color:var(--code-text);border-radius:var(--r-3);font:12.5px/1.6 var(--font-mono);overflow:auto;max-height:420px}

/* ---------- SQL editor ---------- */
.sq-name{font:600 15px var(--font-sans);border:1px solid transparent;background:none;border-radius:var(--r-2);padding:4px 6px;color:var(--text);min-width:0;width:min(32ch,50vw)}
.sq-name:hover{border-color:var(--border)}
.sq-name:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.sq-name.is-dirty{font-style:italic}
.sq-tpl{max-height:360px;overflow:auto}
.sq-wrap{--sq-res:280px;display:grid;grid-template-rows:minmax(120px,1fr) 6px minmax(160px,var(--sq-res));height:100%;min-height:0}
.sq-editor{display:grid;grid-template-columns:auto minmax(0,1fr);min-height:0;background:var(--surface);font:13px/20px var(--font-mono)}
.sq-gutter{padding:12px 8px 12px 12px;text-align:right;color:var(--faint);user-select:none;overflow:hidden;background:var(--bg-2);border-right:1px solid var(--border);min-width:44px}
.sq-gutter span{display:block;height:20px}
.sq-stack{position:relative;min-width:0;min-height:0}
.sq-hl,.sq-input{position:absolute;inset:0;margin:0;padding:12px 14px;font:inherit;white-space:pre;overflow:auto;tab-size:2;letter-spacing:0;word-spacing:0;border:0}
.sq-hl{pointer-events:none;color:var(--text);overflow:hidden}
.sq-hl .tok-k{color:#7c3aed} .sq-hl .tok-s{color:#15803d} .sq-hl .tok-c{color:var(--faint)} .sq-hl .tok-f{color:#1d4ed8} .sq-hl .tok-n{color:#c2410c}
:root[data-theme="dark"] .sq-hl .tok-k{color:var(--tok-k)} :root[data-theme="dark"] .sq-hl .tok-s{color:var(--tok-s)} :root[data-theme="dark"] .sq-hl .tok-f{color:var(--tok-f)} :root[data-theme="dark"] .sq-hl .tok-n{color:var(--tok-n)}
.sq-input{background:transparent;color:transparent;caret-color:var(--text);resize:none;outline:none}
.sq-input::selection{background:rgba(37,99,235,.25);color:transparent}
.sq-input::placeholder{color:var(--faint)}
.sq-split{background:var(--border);cursor:row-resize}
.sq-split:hover{background:var(--accent-border)}
.sq-results{display:flex;flex-direction:column;min-height:0;background:var(--surface)}
.sq-empty{display:flex;align-items:center;gap:8px;justify-content:center;flex:1;color:var(--muted);font-size:13px;padding:20px}
.sq-res-head{display:flex;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.sq-res-head .spacer{flex:1}
.sq-res-head .tabs--pill [role="tab"]{padding:4px 10px;font-size:12.5px}
.sq-res-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}
.sq-res-body .callout{margin:0}
.sq-grid{flex:1;min-height:0;display:flex;flex-direction:column}
.sq-hist{align-items:flex-start;flex-wrap:nowrap}
.sq-hist .st-item-label{font-size:12px}
.sq-time{font-size:11.5px;color:var(--faint);flex:none;margin-top:1px}
.sq-x{color:var(--danger);font-size:12px;flex:none}
.sq-hist.is-error .st-item-label{color:var(--danger)}

@media (max-width:768px){
  .st-split{grid-template-columns:minmax(0,1fr)}
  .st-split > .st-left{display:none}
  .st-mobile-pick{display:block}
  .studio-pane{height:auto;min-height:calc(100vh - 56px)}
  .te .st-main{min-height:calc(100vh - 140px)}
  .hide-sm{display:none}
  .pane-head{padding:8px 12px}
  .sqled .st-split > .st-left{display:block;border-right:0;border-bottom:1px solid var(--border);max-height:180px}
  .sqled .st-split{grid-template-rows:auto minmax(0,1fr)}
  .sq-wrap{min-height:calc(100vh - 300px);grid-template-rows:minmax(200px,1fr) 6px minmax(200px,var(--sq-res))}
}
.studio-note{padding:10px 16px 0;background:var(--surface)}
.studio-note .callout{margin:0}
.studio-note + .studio-pane{height:calc(100vh - 56px - 64px)}

/* ---- database/api/realtime/advisors ---- */
.dbx-body,.apix-body,.advx-body{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:max-content;gap:16px;align-content:start}
.apix-body{flex:1;min-height:0;overflow:auto}
.rtx-log .empty[hidden]{display:none}
.dbx-lead{margin:0}
.dbx-acts{display:flex;gap:6px;justify-content:flex-end;align-items:center}
.dbx-def > td{background:var(--bg-2)}
.dbx-def .code{margin:0}
.dbx-code{font-size:12px;white-space:normal;overflow-wrap:anywhere}
.dbx-pub h2{font-size:15px;font-weight:600}
.dbx-pub p{margin:4px 0 0}
.dbx .callout{margin:0}
.ext-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ext-grid > .card{margin:0}
.advx-acts a{text-decoration:none}
.ext-card{display:grid;gap:8px;align-content:start;padding:16px}
.ext-card[hidden]{display:none}
.ext-card p{margin:0}
.ext-card .badge{justify-self:start}
.ext-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ext-foot:empty{display:none}
.ext-group{margin:20px 0 8px;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.ext-group:first-of-type{margin-top:4px}
.ext-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.ext-name{min-width:0;display:grid;gap:2px}
.ext-name h3{font-size:14px;font-weight:600;overflow-wrap:anywhere}
.ni-modal .modal-body{grid-template-columns:minmax(0,1fr)}
.ni-cols{border:0;padding:0;margin:0;min-width:0}
.ni-list{display:grid;gap:8px;max-height:220px;overflow:auto;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--bg-2)}
.ni-ord{color:var(--accent-text);font-size:12px}
.apix-body > *{max-width:900px}
.apix-body > p{margin:0}
.apix-h{font-size:16px;font-weight:600;margin-top:8px}
.apix-sec h3{font-size:14.5px;font-weight:600}
.apix-sec p{margin:4px 0 0}
.apix-sec .code{margin:10px 0 0}
.apix-badges{flex-wrap:wrap;gap:6px}
.apix-kv{padding:16px 18px}
.apix-kv2{max-width:640px}
.apix-def summary{cursor:pointer;font-size:14px;font-weight:500}
.apix .callout{margin:0}
.rtx .st-split{grid-template-columns:300px minmax(0,1fr)}
.rtx-form{display:grid;gap:12px;align-content:start}
.rtx-send{border-top:1px solid var(--border)}
.rtx-set{border:0;padding:0;margin:0;display:grid;gap:8px}
.rtx-pg{display:grid;gap:10px;padding:10px 0 0 26px}
.rtx-pg[hidden]{display:none}
.rtx-h{font-size:13px;font-weight:600;margin-top:4px}
.rtx-ta{min-height:72px}
.rtx-logbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);flex:none}
.rtx-log{flex:1;min-height:0;overflow:auto;padding:12px 16px}
.rtx-table td{vertical-align:top}
.rtx-payload{max-width:520px;overflow-wrap:anywhere}
.rtx-payload summary{cursor:pointer}
.rtx-payload .json-view{margin-top:6px;max-height:280px;overflow:auto}
.advx-sum{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.advx-group{display:grid;gap:10px}
.advx-h{font-size:15px;font-weight:600;display:flex;gap:8px;align-items:center}
.advx-item{margin:0}
.advx-sql{margin:8px 0 0;padding:8px 10px;background:var(--code-bg);color:var(--code-text);border-radius:var(--r-2);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.advx-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
@media (max-width:768px){
  .rtx .st-split{grid-template-columns:minmax(0,1fr)}
  .rtx .st-split > .st-left{display:block;border-right:0;border-bottom:1px solid var(--border)}
  .rtx .rtx-log{min-height:320px}
  .dbx-acts{justify-content:flex-start}
}

/* ---- auth/storage/policies ---- */
.st-narrow{max-width:1100px}
.st-dense{font-size:13px}
.st-dense th{padding:8px 12px}
.st-dense td{padding:8px 12px}
.st-dense .cell-primary{font-size:13.5px}
.st-dense .cell-primary:hover{text-decoration:underline}
.au-search .input{width:240px}
.au-kv{grid-template-columns:130px minmax(0,1fr)}
.au-actions{display:flex;flex-wrap:wrap;gap:8px}
.au-h{font-size:14px;font-weight:600;margin-bottom:8px}
.pol-card{padding:0;overflow:hidden;margin-bottom:16px}
.pol-card .card-head{padding:14px 16px;margin:0;border-bottom:1px solid var(--border)}
.pol-card .card-head h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px}
.pol-card .card-head h2 svg{width:16px;height:16px;color:var(--faint)}
.pol-card .table-wrap{border:0;border-radius:0}
.pol-card > .callout{margin:12px 16px}
.pol-none{margin:0;padding:14px 16px}
.pol-expr{max-width:280px}
.pol-expr code{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:0;padding:0}
.pe-fs{border:0;margin:0;padding:0;display:grid;gap:8px;min-width:0}
.pe-fs legend{padding:0;margin-bottom:6px}
.pe-cmd{flex-wrap:wrap}
.pe-cmd [role="radio"]{padding:6px 12px;font-size:13px;border:0;background:none;border-radius:6px;cursor:pointer;color:var(--muted)}
.pe-cmd [role="radio"][aria-checked="true"]{background:var(--surface);box-shadow:var(--sh-1);color:var(--text)}
.pe-cmd [role="radio"]:disabled{opacity:.4;cursor:not-allowed}
.drawer.pe-drawer{width:min(640px,100%)}
.bk-adv > summary{cursor:pointer;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:10px}
.bk-danger{grid-template-columns:1fr;gap:10px;padding:16px}
/* files */
.sto-main{display:flex;flex-direction:column;min-height:0;height:100%}
.sto-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.sto-bar .spacer{flex:1}
.sto-selbar{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.sto-selbar[hidden]{display:none}
.sto-search .input{width:200px}
.sto-upload{cursor:pointer}
.sto-drop-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.sto-list{flex:1;min-height:0;overflow:auto}
.sto-table{border:0;border-radius:0}
.sto-list .table-foot{padding:10px 14px}
.sto-check{width:40px}
.sto-check input{accent-color:var(--accent);width:15px;height:15px;margin:0;vertical-align:middle}
.sto-name{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;color:var(--text);font:inherit;font-weight:500;cursor:pointer;text-align:left;max-width:100%;min-width:0}
.sto-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sto-name svg{width:16px;height:16px;color:var(--faint);flex:none}
.sto-name:hover span{text-decoration:underline}
.sto-mime{color:var(--muted);font-family:var(--font-mono);font-size:12px}
.sto-drop{position:absolute;inset:8px;border:2px dashed var(--accent);border-radius:var(--r-4);background:var(--accent-soft);display:grid;place-items:center;z-index:5;pointer-events:none}
.sto-drop[hidden]{display:none}
.sto-drop div{display:grid;justify-items:center;gap:8px;color:var(--accent-text);text-align:center;padding:16px}
.sto-drop svg{width:28px;height:28px}
.sto-tray{position:fixed;right:20px;bottom:20px;width:min(360px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--border);border-radius:var(--r-3);box-shadow:var(--sh-3);z-index:var(--z-dropdown);font-size:13px}
.sto-tray-head{display:flex;align-items:center;justify-content:space-between;padding:6px 6px 6px 14px;border-bottom:1px solid var(--border)}
.sto-tray-list{list-style:none;margin:0;padding:8px 14px;display:grid;gap:10px;max-height:280px;overflow:auto}
.sto-job{display:grid;gap:5px}
.sto-job-top{display:flex;align-items:center;gap:8px;min-height:28px}
.sto-job-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sto-job-meta{color:var(--muted);font-variant-numeric:tabular-nums}
.sto-job .meter-bar{height:6px}
.sto-job.is-done .meter-bar > i{background:var(--success)}
.sto-job.is-error .meter-bar > i{background:var(--danger)}
.sto-job-err{color:var(--danger);font-size:12px}
.sto-prev{display:grid;place-items:center;min-height:120px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-3);margin-bottom:16px;overflow:hidden}
.sto-prev img,.sto-prev video{max-width:100%;max-height:360px;display:block}
.sto-prev iframe{width:100%;height:420px;border:0;background:#fff}
.sto-prev pre{width:100%;max-height:360px;margin:0;border-radius:0;white-space:pre-wrap}
.sto-kv{grid-template-columns:120px minmax(0,1fr)}
@media (max-width:768px){
  .au-search .input,.sto-search .input{width:100%}
  .au-search,.sto-search{flex:1 1 100%}
  .sto-bar .crumbs{flex:1 1 100%}
  .pol-expr{max-width:none}
  .sto-tray{right:16px;left:16px;width:auto;bottom:16px}
}
#stoActs{display:contents}
.sto .st-item{flex-wrap:wrap;row-gap:0;padding-top:6px;padding-bottom:6px}
.sto .st-item-sub{flex-basis:100%;padding-left:23px}
@media (max-width:768px){.sto-table td.sto-check{display:block;padding:0 0 4px}}
.menu.is-open[style*="fixed"]{z-index:calc(var(--z-toast) + 1)}

/* ---- phone layout ---- */
.show-sm{display:none}
.sq-empty{display:block;text-align:center;margin:auto 0;line-height:2}
.sq-empty .spinner{vertical-align:middle;margin-right:6px}
@media (max-width:768px){
  .show-sm{display:inline-flex}
  .sqled .st-split > .st-left{display:none;max-height:260px}
  .sqled.is-list .st-split > .st-left{display:block}
  .pane-head{gap:8px}
  .pane-title h1{max-width:60vw}
  .pane-actions .btn-sm{height:32px}
}
/* Authentication settings pages */
.au-stack{gap:16px}
.au-sw{align-items:flex-start}
.au-sw .switch{margin-top:1px}
.au-sw .field-help{display:block;margin-top:2px}
.au-sw-label{font-weight:500}
.au-num{max-width:280px}
.au-num .input{min-width:0}
.au-unit{display:flex;align-items:center;padding:0 2px;font-size:13px;color:var(--muted);white-space:nowrap}
.au-urls{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--r-2,6px)}
.au-urls li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 6px 6px 12px;min-width:0}
.au-urls li + li{border-top:1px solid var(--border)}
.au-urls code{overflow-wrap:anywhere;font-size:13px}
.au-preview{width:100%;height:560px;border:1px solid var(--border);border-radius:var(--r-2,6px);background:#fff}
.au-vars{grid-template-columns:minmax(0,1fr);font-size:12px;margin-top:10px;gap:2px}
.au-vars dd{margin:0 0 6px;color:var(--muted)}
.au-vars code{font-size:12px;white-space:nowrap}
.au-note{margin-top:16px}
.au-prov td{vertical-align:middle}
.au-prov .t-right{text-align:right}
.au-tpl-acts{gap:8px}
.au-langs{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.au-lang{display:inline-flex;align-items:center;gap:6px;padding:2px 2px 2px 10px}
.au-lang code{font-size:11.5px;color:var(--muted)}
.au-lang .icon-btn{width:22px;height:22px;padding:0}
.au-lang-add{gap:8px;flex-wrap:wrap}.au-lang-add .input{flex:1 1 220px;width:auto}
.au-tpl-langs{flex-wrap:wrap;margin-bottom:0}
@media (max-width:768px){.au-num{max-width:none}.au-vars code{white-space:normal;overflow-wrap:anywhere}}
/* Integrations: cron jobs, queues, vault, HTTP requests */
.int-body{display:grid;gap:12px}
.int-h2{font-size:15px;margin:16px 0 0}
.int-actions{display:inline-flex;gap:6px;align-items:center}
.int-cmd{display:inline-block;max-width:420px;white-space:pre-wrap;word-break:break-word}
@media (max-width:720px){.int-cmd{max-width:100%}}
.int-steps{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:10px}
.int-step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.int-step h3{font-size:14px;margin:2px 0 4px}
.int-step p{margin:6px 0 0}
.int-step-n{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--surface-2);font-size:12.5px;font-weight:600;color:var(--muted)}
.int-step.is-done .int-step-n{background:var(--success-soft);color:var(--success)}
.int-step-n svg{width:14px;height:14px}
.int-copy{display:flex;gap:8px;align-items:center;margin-top:8px;min-width:0}
.int-copy code{flex:1;min-width:0;overflow-wrap:anywhere;padding:6px 8px;border-radius:8px;background:var(--surface-2)}
.int-events{margin-top:8px}
.int-events summary{cursor:pointer;color:var(--muted)}
.int-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.int-stats>div>div{margin-top:4px}

/* ---- Row Level Security alerts ---- */
.badge.rls-off svg,.badge.rls-bypass svg{width:12px;height:12px;color:currentColor}
.st-item .badge.rls-off,.st-item .badge.rls-bypass{gap:3px}
.st-item .badge.rls-off svg,.st-item .badge.rls-bypass svg{width:10px;height:10px;color:currentColor}
.rls-banner{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap;padding:10px 14px;font-size:13.5px;line-height:1.45;border-bottom:1px solid;color:var(--text-2)}
.rls-banner > svg{width:18px;height:18px;flex:none}
.rls-banner-text{flex:1 1 280px;min-width:0}
.rls-banner-text b{color:var(--text);font-weight:600}
.rls-banner-acts{display:flex;gap:6px;flex-wrap:wrap}
.rls-banner-acts a{text-decoration:none}
.rls-banner.is-danger{background:var(--danger-soft);border-color:var(--danger-border)} .rls-banner.is-danger > svg{color:var(--danger)}
.rls-banner.is-info{background:var(--info-soft);border-color:var(--info-border)} .rls-banner.is-info > svg{color:var(--info)}
.rls-banner.is-warn{background:var(--warn-soft);border-color:var(--warn-border)} .rls-banner.is-warn > svg{color:var(--warn)}
.rls-strip{display:flex;align-items:center;gap:8px 12px;padding:8px 12px 8px 16px;background:var(--danger-soft);border-bottom:1px solid var(--danger-border);font-size:13.5px;color:var(--text-2)}
.rls-strip > svg{width:16px;height:16px;color:var(--danger);flex:none}
.rls-strip p{margin:0;flex:1;min-width:0}
.rls-strip b{color:var(--text);font-weight:600}
.rls-strip .btn{flex:none;text-decoration:none}
.rls-strip ~ .studio-pane{height:calc(100vh - 56px - var(--rls-strip-h,45px))}
.rls-strip ~ .studio-note + .studio-pane{height:calc(100vh - 56px - 64px - var(--rls-strip-h,45px))}
.rls-ov{margin:0 0 16px}
.rls-ov .ctas{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.rls-ov .ctas a.btn{text-decoration:none}
.rls-ov .ctas a.btn-primary{color:var(--on-accent)}
.rls-ov .ctas a.btn-ghost{color:var(--text-2)}
.rls-confirm-sql{display:block;margin-top:10px}
.rls-confirm-sql code{white-space:normal;overflow-wrap:anywhere}
.tc-rls-warn{margin:2px 0 0 28px}
.side-link .side-count{margin-left:auto;height:18px;min-width:18px;padding:0 6px;justify-content:center;font-size:11px}
/* advisors */
.advx-tabs{margin-bottom:0}
.advx-list{display:grid;gap:14px;align-content:start}
.advx-list[aria-busy="true"]{opacity:.6}
.advx-lint{padding:16px;display:grid;gap:8px;border-left:3px solid var(--border)}
.advx-lint.is-error{border-left-color:var(--danger)} .advx-lint.is-warn{border-left-color:var(--warn)} .advx-lint.is-info{border-left-color:var(--info)}
.advx-lint-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.advx-lint-head > svg{width:18px;height:18px;flex:none}
.advx-lint.is-error .advx-lint-head > svg{color:var(--danger)} .advx-lint.is-warn .advx-lint-head > svg{color:var(--warn)} .advx-lint.is-info .advx-lint-head > svg{color:var(--info)}
.advx-lint-head h2{font-size:15px;font-weight:600;margin:0;flex:1 1 200px;min-width:0}
.advx-desc{margin:0;font-size:14px;color:var(--text-2)}
.advx-sub{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-top:4px}
.advx-objs{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--r-2);overflow:hidden}
.advx-obj{display:flex;align-items:center;gap:8px 12px;padding:8px 10px;flex-wrap:wrap}
.advx-obj + .advx-obj{border-top:1px solid var(--border)}
.advx-obj-main{flex:1 1 240px;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.advx-obj-name{font-size:13px;overflow-wrap:anywhere}
.advx-obj-detail{flex-basis:100%}
.advx-obj-acts{display:flex;gap:6px;flex-wrap:wrap}
.advx-obj-acts a{text-decoration:none}
.advx-passed{border:1px solid var(--border);border-radius:var(--r-3);padding:10px 14px;background:var(--surface)}
.advx-passed summary{cursor:pointer;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--text-2)}
.advx-passed summary svg{width:16px;height:16px;color:var(--success)}
.advx-passed ul{list-style:none;margin:10px 0 2px;padding:0;display:grid;gap:6px}
.advx-passed li{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;color:var(--muted)}
.advx-passed li svg{width:14px;height:14px;color:var(--success);flex:none;margin-top:3px}
@media (max-width:768px){
  .rls-strip ~ .studio-pane,.rls-strip ~ .studio-note + .studio-pane{height:auto}
  .rls-strip-sub{display:none}
  .rls-banner{padding:10px 12px}
  .advx-lint{padding:14px 12px}
}

/* ---------- Edge Functions (studio-functions.js) ---------- */
.fnx .st-split{grid-template-columns:220px minmax(0,1fr)}
.fnx .st-main{overflow:auto}
.fnx-none{padding:4px 8px;margin:0}
.fnx-main{display:grid;gap:14px;align-content:start;min-width:0}
.fnx-usage{max-width:560px}
.fnx-usage .t-small{margin:6px 0 0}
.fnx-tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.fnx-tpl{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-3);background:var(--surface);color:var(--text)}
.fnx-tpl:hover{border-color:var(--accent-border);box-shadow:var(--sh-1)}
.fnx-new{display:grid;gap:14px;min-width:0}
.fnx-new-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.fnx-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.fnx-check .switch{flex:none;margin-top:1px}
.fnx-edhost{border:1px solid var(--border);border-radius:var(--r-3);overflow:hidden;height:clamp(280px,52vh,640px);min-width:0}
.fnx-edhost .sq-editor{height:100%}
.fnx-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fnx-bar .spacer,.fnx-logbar .spacer{flex:1}
.fnx-files{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fnx-file{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--surface);color:var(--text-2);font:500 12.5px var(--font-mono);cursor:pointer;max-width:100%}
.fnx-file svg{width:14px;height:14px;color:var(--faint)}
.fnx-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fnx-file[aria-pressed="true"]{border-color:var(--accent-border);background:var(--accent-soft);color:var(--text)}
.fnx-file .badge{height:16px;font-size:10px;font-family:var(--font-sans)}
.fnx-tab{display:grid;gap:14px;margin-top:14px;min-width:0}
.fnx-urlrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0}
.fnx-url{font:12.5px var(--font-mono);word-break:break-all;min-width:0}
.fnx-urlrow .fnx-url{flex:1;padding:7px 10px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--bg-2)}
.fnx-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.fnx-metric{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-3);background:var(--surface)}
.fnx-metric b{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}
.fnx-test{display:grid;gap:12px;min-width:0}
.fnx-test-row{display:grid;grid-template-columns:140px minmax(0,1fr) 190px;gap:12px}
.fnx-path{display:flex;align-items:center;gap:6px;min-width:0}
.fnx-path .input{flex:1;min-width:0}
.fnx-res{border:1px solid var(--border);border-radius:var(--r-3);padding:12px;display:grid;gap:8px;background:var(--surface);min-width:0}
.fnx-res-head{display:flex;gap:10px;align-items:center}
.fnx-pre{margin:0;padding:10px;background:var(--bg-2);border-radius:var(--r-2);overflow:auto;max-height:420px;font:12.5px/1.5 var(--font-mono);white-space:pre-wrap;word-break:break-word}
.fnx-logbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fnx-logbar .input[type=search]{width:min(260px,100%)}
.fnx-live{align-items:center}
.fnx-logs{border:1px solid var(--border);border-radius:var(--r-3);background:var(--surface);max-height:62vh;overflow:auto;min-width:0}
.fnx-log{display:grid;grid-template-columns:auto auto auto minmax(0,1fr);gap:8px;align-items:baseline;padding:6px 10px;border-bottom:1px solid var(--border)}
.fnx-log:last-child{border-bottom:0}
.fnx-log-error{background:color-mix(in srgb,var(--danger) 6%,transparent)}
.fnx-msg{margin:0;font:12.5px/1.45 var(--font-mono);white-space:pre-wrap;word-break:break-word;min-width:0}
.fnx-inline{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:768px){
  .fnx .st-split{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .fnx .st-split > .st-left{display:block;border-right:0;border-bottom:1px solid var(--border);max-height:170px}
  .fnx-new-grid,.fnx-test-row{grid-template-columns:minmax(0,1fr)}
  .fnx-log{grid-template-columns:auto auto minmax(0,1fr)}
  .fnx-log > .t-small.faint:nth-of-type(2){display:none}
  .fnx-log .fnx-msg{grid-column:1/-1}
  .fnx-edhost{height:clamp(260px,55vh,520px)}
}

/* ---------- AI agents (studio-agents.js) ---------- */
.agx .st-split{grid-template-columns:220px minmax(0,1fr)}
.agx .st-main{overflow:auto}
.agx-main{display:grid;gap:14px;align-content:start;min-width:0}
.agx-intro{margin:0;max-width:760px}
.agx-h2{font-size:15px;font-weight:600;margin:6px 0 0}
.agx-row-actions{display:flex;gap:6px;justify-content:flex-end}
.agx-sql{font:12.5px/1.45 var(--font-mono);white-space:pre-wrap;word-break:break-word;display:block;min-width:0}
.agx-log td{vertical-align:top}
.agx-live{display:inline-flex;align-items:center;gap:6px}
.agx-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:agxPulse 1.6s ease-in-out infinite}
@keyframes agxPulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.agx-dot{animation:none}}
.agx-list{display:grid;gap:10px}
.agx-appr{display:grid;gap:6px;padding:12px 14px;color:inherit;text-decoration:none}
.agx-appr:hover{border-color:var(--border-strong)}
.agx-appr-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.agx-detail{display:grid;gap:12px;max-width:900px;min-width:0}
.agx-reasons{margin:0;padding-left:18px;display:grid;gap:4px}
.agx-decide{display:grid;gap:10px;border-top:1px solid var(--border);padding-top:12px}
.agx-decide-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.agx-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.agx-stats .card{display:grid;gap:2px;padding:12px 14px}
.agx-stats b{font-size:20px;font-variant-numeric:tabular-nums}
.agx-ddl{display:grid;gap:4px;padding:10px 12px}
.agx-plan{display:grid;gap:10px;padding:14px 16px}
.agx-changes summary{cursor:pointer;font-weight:600;padding:6px 0}
.agx-form{display:grid;gap:14px}
.agx-presets{display:grid;gap:8px}
.agx-preset{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius,10px);padding:10px 12px;cursor:pointer}
.agx-preset:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.agx-preset input{margin-top:3px;flex:none}
.agx-preset > span{display:grid;gap:2px}
.agx-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.agx-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px}
.agx-checks .check{display:flex;gap:8px;align-items:flex-start}
.agx-toggles{display:grid;gap:10px}
.agx-toggle{display:flex;gap:14px;align-items:center;justify-content:space-between}
.agx-toggle p{margin:2px 0 0}
.is-muted td{opacity:.55}
/* ---------- Exposure check (studio-exposure.js) ---------- */
.exp-main{display:grid;gap:14px;align-content:start;min-width:0}
.exp-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:12px}
.exp-card{display:flex;gap:12px;align-items:flex-start;padding:14px 16px}
.exp-card > svg{width:22px;height:22px;flex:none}
.exp-card > div{display:grid;gap:2px}
.exp-card.is-bad > svg{color:var(--danger)}
.exp-card.is-good > svg{color:var(--accent)}
.exp-card:has(.exp-toggle){flex-direction:column;gap:12px}
.exp-toggle{display:flex;gap:14px;align-items:center;justify-content:space-between;width:100%}
.exp-toggle p{margin:2px 0 0}
.exp-h2{font-size:15px;font-weight:600;margin:6px 0 0}
.exp-findings{display:grid;gap:10px}
.exp-finding{display:grid;gap:6px;padding:12px 14px;border-left:3px solid var(--border-strong)}
.exp-finding.is-critical{border-left-color:var(--danger)}
.exp-finding.is-warning{border-left-color:var(--warn)}
.exp-finding p{margin:0}
.exp-f-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.exp-f-top > svg{width:16px;height:16px;flex:none}
.exp-finding.is-critical .exp-f-top > svg{color:var(--danger)}
.exp-finding.is-warning .exp-f-top > svg{color:var(--warn)}
.exp-fix{display:grid;gap:8px;min-width:0}
.exp-pre{margin:0;overflow:auto;max-width:100%;font-size:12.5px;padding:10px 12px}
.exp-fix-btns{display:flex;gap:8px;flex-wrap:wrap}
.exp-matrix th.exp-grp{text-align:center;border-bottom:1px solid var(--border)}
.exp-c{text-align:center;white-space:nowrap}
.exp-no{color:var(--faint)}
.exp-no svg,.exp-yes svg{width:14px;height:14px;vertical-align:-2px}
.exp-yes{display:inline-flex;gap:4px;align-items:center;font-size:12.5px;font-weight:600}
.exp-yes.is-read{color:var(--warn)}
.exp-yes.is-write{color:var(--danger)}
.exp-risk-critical td:first-child{box-shadow:inset 3px 0 0 var(--danger)}
@media (max-width:768px){
  .agx .st-split{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .agx .st-split > .st-left{display:block;border-right:0;border-bottom:1px solid var(--border);max-height:170px}
  .agx-grid2,.agx-checks,.agx-stats,.exp-summary{grid-template-columns:minmax(0,1fr)}
  .exp-c{text-align:right}
  .exp-matrix thead tr:first-child{display:none}
}
/* Database → Webhooks (studio-webhooks.js) */
.wh-url{overflow-wrap:anywhere;word-break:break-all}
.wh-warn{color:var(--danger)}
.wh-note{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border:1px solid var(--warn-border);background:var(--warn-soft);color:var(--text);border-radius:8px;font-size:13px;margin:10px 0}
.wh-note svg{width:16px;height:16px;flex:none;color:var(--warn);margin-top:1px}
.wh-resp{margin:0;padding:10px 12px;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;font:12px/1.5 var(--mono, ui-monospace, monospace);white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;overflow:auto}
.wh-log tr.is-clickable{cursor:pointer}
.wh-log tr.is-clickable:hover td{background:var(--surface-2)}
.wh-log tr.is-clickable:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.wh-tables{max-height:200px;overflow:auto;padding:2px}
/* Authentication → Emails → Sending (P30) */
.au-dns code{overflow-wrap:anywhere;word-break:break-all;font-size:12px}
.au-dns-v{display:flex;gap:6px;align-items:flex-start}
.au-dom-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.au-dom-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.au-dom{border-top:1px solid var(--border);padding-top:12px}

/* Authentication → Organizations (studio-orgs.js) */
.eo-list { margin: 0 0 10px; padding-left: 18px; display: grid; gap: 6px; }
.eo-list code { word-break: break-word; }
.rl-grid2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.rl-methods { display: flex; flex-wrap: wrap; gap: 6px 16px; }
.rl-methods .check { display: flex; gap: 6px; align-items: center; }
.rl-limit { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.rl-limit #rlLimit { width: 110px; }
.rl-limit select { width: auto; }
.rl-presets { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.st-pad > .rl-presets { justify-content: flex-start; }
@media (max-width: 560px) { .rl-grid2 { grid-template-columns: minmax(0, 1fr); } }
/* Database › Export & import (P35) */
.ex-list { margin: 0; padding-left: 18px; display: grid; gap: 4px; }
.ex-sha { word-break: break-all; }
.ex-ready .check { display: flex; margin-top: 6px; }
.ex-bar { height: 6px; border-radius: 3px; background: var(--surface-3, var(--border)); overflow: hidden; margin-top: 10px; }
.ex-bar span { display: block; height: 100%; width: 0; background: var(--accent); transition: width .2s; }
.sto-rz:empty { display: none; }
.sto-rz img { max-height: 320px; }
/* Shared views (assets/studio-sharedviews.js): one filter per line; the value takes the room left. */
.sv-filter{align-items:center;flex-wrap:nowrap!important}
.sv-filter .sel-trigger{width:auto;flex:0 1 auto;min-width:0;max-width:40%}
.sv-filter .input{flex:1 1 120px;width:auto;min-width:0}
.sv-url{overflow-wrap:anywhere}
.sv-open{background:none;border:0;padding:0;cursor:pointer;text-align:left;color:inherit;font:inherit}
@media (max-width:640px){.sv-filter{flex-wrap:wrap!important}.sv-filter .sel-trigger{max-width:none;flex:1 1 40%}.sv-filter .input{flex:1 1 calc(100% - 48px)}}
/* Change history (assets/studio-history.js). */
.hi-diff code{font-size:12px}.hi-diff > div{overflow-wrap:anywhere}
.hi-pk{background:none;border:0;padding:0;cursor:pointer;font:inherit}
.hi-table td{vertical-align:top}
@media (max-width:640px){.hi-tools .input{max-width:none!important;flex:1 1 100%}}
.hi-table td:nth-child(2) code,.hi-pk code{white-space:nowrap;word-break:normal}
/* Database › Typed clients (studio-types.js) */
.ty-card{margin-bottom:16px}
.ty-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 16px}
.ty-status{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;margin:12px 0}
.ty-err{color:var(--danger);margin:8px 0;overflow-wrap:anywhere}
.ty-urls .ty-url{overflow-wrap:anywhere;word-break:break-all}
.ty-code .code pre{max-height:480px;overflow:auto}
#tyCli{margin-bottom:12px}
.sr-card{margin-bottom:16px}
.sr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px}
.sr-warn{color:var(--warning,var(--danger));margin-top:4px}
.sr-act{white-space:nowrap;text-align:right}
.sr-try{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.sr-results{margin:10px 0 0;padding-left:20px;display:grid;gap:6px}
.sr-results code{overflow-wrap:anywhere;word-break:break-all}
.sy-card{margin-bottom:16px}
.sy-warn{color:var(--warning,var(--danger));margin-top:4px}
.sy-rule{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sy-rule .sel-trigger{max-width:190px}
.sy-res{max-width:220px}
.sy-res[hidden]{display:none}
.jb-card{margin-bottom:16px}
.jb-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px}
.card.jb-stat{display:flex;flex-direction:column;gap:2px;padding:12px 14px;margin:0;text-align:left;font:inherit;color:inherit}
button.jb-stat{cursor:pointer}button.jb-stat:hover{border-color:var(--border-strong,var(--accent))}button.jb-stat.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.jb-stat b{font-size:1.35rem;font-variant-numeric:tabular-nums}
.jb-runs tbody tr{cursor:pointer}.jb-runs tbody tr:hover,.jb-runs tbody tr.on{background:var(--surface-2)}
.jb-res code,.jb-out{overflow-wrap:anywhere;word-break:break-word}
.jb-err{color:var(--danger)}
.jb-errbox{margin:10px 0;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--danger) 9%,transparent);overflow-wrap:anywhere}
.jb-meta{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;color:var(--text-muted,inherit)}
.jb-steps{list-style:none;margin:14px 0;padding:0 0 0 14px;border-left:2px solid var(--border);display:grid;gap:12px}
.jb-step{position:relative}.jb-step::before{content:'';position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--border);box-shadow:0 0 0 3px var(--surface)}
.jb-step.completed::before{background:var(--success,var(--accent))}.jb-step.failed::before{background:var(--danger)}.jb-step.sleeping::before{background:var(--info,var(--accent))}
.jb-step-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.jb-out{display:block;margin-top:4px}
.jb-pre{margin:8px 0 0;padding:10px;border-radius:8px;background:var(--surface-2);overflow:auto;max-height:240px}
.jb-list{margin:0 0 14px;padding-left:18px}
.jb-runs td[data-label="Job"] code{white-space:nowrap}
.jb-mini{display:flex;align-items:center;gap:8px;min-width:110px}.jb-mini .progress{flex:1;height:6px}.jb-mini>span{font-variant-numeric:tabular-nums}
.jb-prog{display:grid;gap:6px;margin:14px 0}
.jb-loghead{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:14px 0 6px}
.jb-log{max-height:340px;overflow:auto;padding:10px 12px;border-radius:8px;background:var(--surface-2);line-height:1.55;margin-bottom:12px}
.jb-line{white-space:pre-wrap;overflow-wrap:anywhere}.jb-line.warn{color:var(--warn,#b45309)}.jb-line.error{color:var(--danger)}
.sy-card td code,.sy-card td .faint{white-space:nowrap}

/* Serverless SQL (studio-sqlhttp.js) */
.qh-card{margin-bottom:16px}
.qh-list{margin:0 0 14px;padding-left:18px}
.qh-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.qh-new{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
.qh-new .input:not(.sel-trigger){flex:1;min-width:180px;max-width:360px}
.qh-act{text-align:right;white-space:nowrap}
.qh-card .callout{margin:0 0 12px}
.qh-off{display:flex;gap:16px;align-items:center;justify-content:space-between;border-top:1px solid var(--border);margin-top:16px;padding-top:16px}
@media (max-width:720px){.qh-grid{grid-template-columns:1fr}.qh-off{flex-direction:column;align-items:flex-start}}

/* Check access (studio-rlscheck.js) */
.rc-card{margin-bottom:16px}
.rc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.rc-who{margin-bottom:14px;flex-wrap:wrap;max-width:100%}
.rc-more{margin-top:4px}.rc-more summary{cursor:pointer;color:var(--muted)}.rc-more textarea{margin-top:8px}
.rc-result.is-ok{border-color:var(--success-border)}.rc-result.is-bad{border-color:var(--danger-border)}
.rc-verdict{display:flex;gap:12px;align-items:flex-start}
.rc-verdict>svg{flex:none;width:28px;height:28px;padding:5px;border-radius:50%;stroke:currentColor;fill:none;stroke-width:2.4}
.rc-result.is-ok .rc-verdict>svg{color:var(--success);background:var(--success-soft)}.rc-result.is-bad .rc-verdict>svg{color:var(--danger);background:var(--danger-soft)}
.rc-verdict h2{margin:2px 0 8px;font-size:16px}
.rc-reasons{margin:0 0 8px;padding-left:18px}.rc-reasons li{margin:2px 0}
.rc-warn{color:var(--warn)}.rc-warn svg{width:14px;height:14px;vertical-align:-2px}
.rc-why{max-width:520px;word-break:break-word}
.rc-act{text-align:right;white-space:nowrap}
.rc-foot{margin-top:12px}
.rc-raw summary{cursor:pointer}.rc-raw .rc-grid{margin:12px 0 0}.rc-raw pre{white-space:pre-wrap;word-break:break-all;max-height:260px;overflow:auto;font-size:12px}
@media (max-width:720px){.rc-grid{grid-template-columns:1fr}}
/* Policy builder (studio-policies.js) */
.pb{border:1px solid var(--border);border-radius:var(--r-md,8px);padding:12px;background:var(--surface-2)}
.pb-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.pb-row .sel-trigger,.pb-row .input{width:auto;max-width:100%}
.pb-row input.input{flex:1;min-width:120px}
.pb-row>:not(button){flex:0 1 auto;min-width:0}.pb-row>button{flex:none}.pb-row .sel-trigger{max-width:34%}@media (max-width:640px){.pb-row .sel-trigger{max-width:none;flex:1 1 40%}}
.pb-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pb-head .sel-trigger,.pb-head .input{width:auto}
/* Collaborative docs (studio-collab.js) */
.cl-card{margin-bottom:16px}
.cl-list{margin:0 0 14px;padding-left:18px}.cl-list li{margin:3px 0}
.cl-search{flex:0 1 280px}.cl-search .input{width:100%}
.cl-rules th{width:90px;font-weight:600;font-size:13px;white-space:nowrap}
.cl-act{text-align:right;white-space:nowrap}
.cl-new{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.cl-new .input:first-child{flex:1 1 220px}
.cl-off{display:flex;gap:16px;align-items:center;justify-content:space-between}
.cl-dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 24px;margin:0}.cl-dl dt{font-size:12px;color:var(--muted)}.cl-dl dd{margin:2px 0 0;word-break:break-word}
.cl-editors{list-style:none;margin:0;padding:0}.cl-editors li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--border)}.cl-editors li:first-child{border-top:0}
@media (max-width:720px){.cl-off{flex-direction:column;align-items:flex-start}.cl-search{flex:1 1 100%}}
/* Inbound webhooks (studio-inbound.js) */
.ib-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 16px}.ib-grid .field{margin:0 0 12px}
.ib-url{font-family:var(--font-mono);word-break:break-all}
.ib-ev{background:none;border:0;padding:0;font:inherit;font-weight:500;cursor:pointer;text-align:left;word-break:break-word}
.ib-h3{font-size:13px;font-weight:600;margin:16px 0 8px}
.ib-dl{margin-bottom:12px}
/* Test data (studio-testdata.js) */
.td-tools{display:flex;gap:8px;align-items:center}
.td-check{width:36px}
.td-n{width:110px}
.td-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 16px}
.td-runs{list-style:none;margin:0;padding:0}.td-runs li{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;padding:10px 0;border-top:1px solid var(--border)}.td-runs li:first-child{border-top:0}
.td-note{display:flex;gap:6px;align-items:flex-start;color:var(--muted);margin-top:4px}.td-note svg{width:14px;height:14px;flex:none;margin-top:2px;color:var(--warn,#b45309)}
.td-pv+.td-pv{margin-top:8px}.td-pvt td,.td-pvt th{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.progress{height:8px;border-radius:99px;background:var(--surface-2,rgba(127,127,127,.15));overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .3s}
@media (max-width:720px){.td-n{width:100%}.td-runs li{flex-direction:column}}
/* Feature flags (studio-flags.js) */
.fl-key{font-family:var(--font-mono);font-size:13px;word-break:break-all}
.fl-desc{max-width:420px}
.fl-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fl-table td:last-child{width:1%}
.fl-cond{display:grid;grid-template-columns:minmax(160px,1.3fr) minmax(130px,.8fr) minmax(120px,1.4fr) auto;gap:8px;align-items:center;margin:0 0 8px}
.fl-cond [data-c="values"][hidden]{display:none}
.fl-rule{border:1px solid var(--border);border-radius:var(--radius,8px);padding:12px;margin:0 0 12px;background:var(--surface-2,transparent)}
.fl-rule-head{display:flex;gap:8px;align-items:center;margin:0 0 10px}
.fl-rule-head .input{flex:1;min-width:0}
.fl-rule-tools{display:flex;gap:2px;margin-left:auto}
.fl-seg,.fl-serve{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.fl-seg .input,.fl-serve>.input{width:auto;min-width:180px}
.fl-split{display:flex;gap:12px;flex-wrap:wrap;align-items:center;flex-basis:100%}
.fl-split[hidden]{display:none}
.fl-pct{display:flex;gap:6px;align-items:center}
.fl-pct .input{width:84px}
.fl-sum{color:var(--danger,#c33)}
.fl-default{border-style:dashed}
.fl-var{display:grid;grid-template-columns:minmax(120px,200px) 1fr auto;gap:8px;align-items:start;margin:0 0 8px}
.fl-var .fl-val{align-self:center}
.fl-var:has(.fl-val){grid-template-columns:64px minmax(120px,240px)}
.fl-savebar{position:sticky;bottom:12px;z-index:5;display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:10px 12px;margin:0 0 16px;border:1px solid var(--border);border-radius:var(--radius,8px);background:var(--surface,#fff);box-shadow:0 4px 16px rgba(0,0,0,.12)}
.fl-savebar>span{margin-right:auto}
.fl-savebar[hidden]{display:none}
.fl-stats{display:grid;gap:8px}
.fl-stat{display:grid;grid-template-columns:minmax(80px,160px) 1fr minmax(90px,auto);gap:12px;align-items:center}
.fl-diff{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:720px){.fl-cond{grid-template-columns:1fr 1fr auto}.fl-cond [data-c="attr"]{grid-column:1/-1}.fl-var{grid-template-columns:1fr auto}.fl-var [data-v="value"]{grid-column:1/-1}.fl-diff{grid-template-columns:1fr}.fl-stat{grid-template-columns:1fr auto}.fl-stat .progress{grid-column:1/-1;grid-row:2}}

/* Integrations › Scheduled reports (studio-reports.js) */
.rp-desc{max-width:420px}
.rp-dests{display:flex;flex-wrap:wrap;gap:6px 12px}
.rp-dest{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.rp-dest svg,.rp-d-type svg,.rp-dl svg{width:14px;height:14px;flex:none}
.rp-table td:last-child{width:1%}
.rp-on{display:inline-flex;align-items:center;gap:8px}
.rp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:0 16px}
.rp-sql{width:100%;min-height:160px;resize:vertical;font-size:13px;line-height:1.5;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}
.rp-prev{margin-top:12px;display:grid;gap:6px}
.rp-prev-table td{white-space:nowrap;font-variant-numeric:tabular-nums}
.rp-sched{display:flex;flex-wrap:wrap;gap:0 16px;align-items:flex-start}
.rp-sched>.field{min-width:150px;flex:0 1 auto}
.rp-sched>.field[hidden]{display:none}
.rp-sched #rpCron{min-width:200px}
.rp-sched #rpTz{max-width:260px}
.rp-warn{display:flex;gap:6px;align-items:flex-start;color:var(--warn);margin-bottom:4px}
.rp-warn svg{width:14px;height:14px;flex:none;margin-top:2px}
.rp-err{color:var(--danger)}
.rp-add{display:flex;flex-wrap:wrap;gap:4px}
.rp-d{border:1px solid var(--border);border-radius:var(--radius,8px);padding:10px 12px;margin-bottom:8px;background:var(--surface-2)}
.rp-d-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;min-height:28px}
.rp-d-type{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.rp-d-tools{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}
.rp-wh{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:8px}
.rp-dl{display:flex;gap:6px;align-items:flex-start}
.rp-dl svg{margin-top:2px}
.rp-dl-failed{color:var(--danger)}
.rp-dls{display:grid;gap:2px;justify-items:start}
.rp-dl span{white-space:nowrap}
.rp-only{margin-top:12px;align-items:flex-start}
.rp-only input{margin-top:2px;flex:none}
.rp-runs .rp-err{max-width:360px;word-break:break-word}
@media (max-width:640px){.rp-grid{grid-template-columns:1fr}.rp-sched>.field{flex:1 1 100%}.rp-sched #rpTz{max-width:none}.rp-wh{grid-template-columns:1fr}}
/* Integrations → Status page (studio-statuspage.js) */
.sp-head-tools{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;align-items:center}
.sp-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.sp-link code{overflow-wrap:anywhere}
.sp-domain{margin:-4px 0 12px}.sp-domain code{overflow-wrap:anywhere}
.sp-notify-sec{padding:12px 0;border-top:1px solid var(--border)}.card-head + .sp-notify-sec{border-top:0;padding-top:0}
.sp-sub-help{display:block;margin-top:2px}.sp-subs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 0 26px}
.sp-sec-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.sp-hooks{display:grid;gap:6px;margin-top:10px}.sp-hook{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--border);border-radius:8px}
.sp-hook-main{display:flex;align-items:center;gap:8px;min-width:0}.sp-hook-main svg{flex:none;width:16px;height:16px;color:var(--muted)}.sp-hook-main code{overflow-wrap:anywhere}
.sp-hook-ev{display:block}.sp-checks-col{flex-direction:column;align-items:flex-start}
.sp-hero{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:var(--radius,8px);border:1px solid var(--border);background:var(--surface-2);margin-bottom:8px}
.sp-hero-down{border-color:var(--danger-border);background:var(--danger-soft)}
.sp-hero-degraded{border-color:var(--warn-border);background:var(--warn-soft)}
.sp-comps{display:grid}
.sp-comp{padding:12px 0;border-top:1px solid var(--border)}
.sp-comp:first-child{border-top:0}
.sp-comp-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.sp-comp-head .faint{overflow-wrap:anywhere}
.sp-comp-state{display:inline-flex;align-items:center;gap:8px}
.sp-bars{display:flex;gap:2px;height:24px;margin-top:8px}
.sp-b{flex:1;min-width:1px;border-radius:2px;background:var(--border)}
.sp-b-operational{background:var(--success)}
.sp-b-degraded{background:var(--warn)}
.sp-b-down{background:var(--danger)}
.sp-scale{display:flex;justify-content:space-between;margin-top:2px}
.sp-inc{border:1px solid var(--border);border-left:4px solid var(--warn);border-radius:var(--radius,8px);padding:10px 12px;margin-bottom:8px;background:var(--surface-2)}
.sp-inc-major,.sp-inc-critical{border-left-color:var(--danger)}
.sp-inc-maintenance{border-left-color:var(--info)}
.sp-inc-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-bottom:2px}
.sp-inc-head .badge{margin-left:4px}
.sp-ups{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.sp-ups li{position:relative}
.sp-ups p{margin:2px 0 0;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}
.sp-up-edit{margin-left:6px;padding-top:0;padding-bottom:0;min-height:0;height:22px}
.sp-past{margin-top:8px}
.sp-past summary{cursor:pointer;margin-bottom:8px}
.sp-ed{display:grid;grid-template-columns:200px minmax(0,1fr) minmax(0,1.3fr) auto;gap:8px;align-items:center;margin-bottom:8px}
.sp-ed>[hidden]{display:none}
.sp-ed:has(> input[data-f="url"][hidden]){grid-template-columns:200px minmax(0,1fr) auto}
.sp-ed-tools{display:flex;gap:2px}
.sp-color{display:flex;gap:8px;align-items:center}
.sp-color input[type=color]{width:36px;height:32px;padding:0;border:1px solid var(--border);border-radius:6px;background:none;flex:none}
.sp-badge{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.sp-fs{border:0;padding:0;margin:0 0 12px}
.sp-checks{display:flex;flex-wrap:wrap;gap:6px 16px}
@media (max-width:720px){
  .sp-ed,.sp-ed:has(> input[data-f="url"][hidden]){grid-template-columns:minmax(0,1fr) auto;padding:10px;border:1px solid var(--border);border-radius:var(--radius,8px)}
  .sp-ed>select{grid-column:1}
  .sp-ed>input{grid-column:1/-1}
  .sp-ed-tools{grid-column:2;grid-row:1}
  .sp-bars{gap:1px;height:20px}
}
.sp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 16px}
@media (max-width:640px){.sp-grid{grid-template-columns:1fr}}

/* Usage metering (studio-metering.js) */
.mt-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:0 0 16px}
.mt-tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius,8px)}
.mt-tile strong{font-size:1.35rem;font-variant-numeric:tabular-nums;line-height:1.3}
.mt-quota-head{display:flex;justify-content:space-between;gap:8px;margin:0 0 6px}
.mt-bar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}
.mt-bar>span{display:block;height:100%;border-radius:4px;background:var(--accent)}
.mt-bar>span.mt-bar-hot{background:var(--danger)}
.mt-range{display:grid;grid-template-columns:minmax(0,160px) minmax(0,160px) minmax(0,1fr);gap:0 12px}
@media (max-width:640px){.mt-range{grid-template-columns:1fr 1fr}.mt-search{grid-column:1/-1}}
.mt-group{width:auto;min-width:120px}
.mt-cust .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.mt-cust-id{font-family:var(--font-mono);font-size:.85rem;background:none;border:0;padding:0;cursor:pointer;text-align:left;word-break:break-all}
.mt-ed{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.2fr) minmax(0,.8fr) minmax(0,.9fr) auto 32px;gap:8px;align-items:center;margin:0 0 8px}
.mt-ed-head{margin-bottom:4px}
.mt-ed .check{white-space:nowrap;margin:0}
@media (max-width:720px){.mt-ed{grid-template-columns:1fr 1fr}.mt-ed-head{display:none}.mt-ed .check{grid-column:1/2}}
.mt-series{margin:0 0 18px}
.mt-series-head{display:flex;justify-content:space-between;gap:8px;margin:0 0 6px}
.mt-bars{display:flex;align-items:flex-end;gap:2px;height:64px}
.mt-b{flex:1;min-width:2px;height:100%;display:flex;align-items:flex-end}
.mt-b>span{display:block;width:100%;border-radius:2px 2px 0 0;background:var(--accent)}

/* Hosted sign-in (P56) */
.hl-url{max-width:720px}
.hl-warn{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;padding:8px 10px;border:1px solid var(--warn);border-radius:6px;background:var(--surface-2)}
.hl-warn svg{flex:none;width:16px;height:16px;color:var(--warn);margin-top:2px}
.hl-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:16px;align-items:start}
.hl-cols>div>.card{margin-bottom:16px}
@media (max-width:1100px){.hl-cols{grid-template-columns:1fr}}
.hl-checks{display:flex;flex-wrap:wrap;gap:8px 20px}
.hl-save{display:flex;justify-content:flex-end;margin:-4px 0 16px}
.hl-prev-card{position:sticky;top:16px}
.hl-prev{width:100%;height:620px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
@media (max-width:640px){.hl-url{flex-wrap:wrap;gap:8px}.hl-url .input{flex:1 1 100%;border-radius:6px}.hl-url .btn{border-radius:6px}}

/* Auth settings: fake sign-up protection */
.au-sg-stats { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--s-3) var(--s-6); padding: var(--s-3) var(--s-4); border: 1px solid var(--border); border-radius: var(--r-3); }
.au-sg-stats > div { display: flex; flex-direction: column; gap: 2px; }
.au-sg-stats b { font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.au-sg-stats > span { margin-left: auto; }
.au-sg-recent td:first-child, .au-sg-recent td.mono { white-space: nowrap; }

/* Crashes (P63) */
.cr-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius,8px)}
.cr-item+.cr-item{border-top:1px solid var(--border)}
.cr-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 64px 64px;gap:12px;align-items:center;padding:10px 12px;color:inherit;text-decoration:none}
.cr-row:hover{background:var(--surface-2)}
.cr-main{min-width:0;display:flex;flex-direction:column;gap:2px}
.cr-title{display:flex;gap:8px;min-width:0}
.cr-title strong{flex:none}
.cr-msg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-2,inherit)}
.cr-meta code{font-size:.8rem}
.cr-meta .badge{vertical-align:middle}
.cr-num{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums}
.cr-spark{height:28px}
.cr-bars .mt-b>span{background:var(--danger)}
.cr-bad{color:var(--danger)}
.cr-head-msg{font-size:1.05rem;margin:0 0 6px;word-break:break-word}
.cr-h{font-size:.85rem;font-weight:600;margin:16px 0 8px}
.cr-frames{list-style:none;margin:0 0 8px;padding:0;border:1px solid var(--border);border-radius:6px;font-size:.85rem}
.cr-frames li{padding:5px 10px;word-break:break-all}
.cr-frames li+li{border-top:1px solid var(--border)}
.cr-frames .cr-lib{opacity:.6}
.cr-frames.cr-hide-lib .cr-lib{display:none}
.cr-ctx{margin:6px 0 2px;padding:6px 0;background:var(--surface-2);border-radius:4px;font-size:.78rem;line-height:1.5;overflow-x:auto;white-space:pre;word-break:normal}
.cr-ctx>span{display:block;padding:0 10px}
.cr-ctx-n{display:inline-block;min-width:3.5ch;margin-right:10px;text-align:right;color:var(--faint);user-select:none}
.cr-ctx-hot{background:var(--warn-soft)}
.cr-stack{max-height:360px;overflow:auto;font-size:.8rem;padding:10px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);white-space:pre-wrap;word-break:break-all}
.cr-crumbs{list-style:none;margin:0;padding:0;border-left:2px solid var(--border)}
.cr-crumbs li{display:grid;grid-template-columns:80px auto minmax(0,1fr);gap:8px;align-items:baseline;padding:3px 0 3px 10px;word-break:break-word}
.cr-crumbs .cr-crumb-err{border-left:2px solid var(--danger);margin-left:-2px}
.cr-path{word-break:break-all}
.cr-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 24px}
.cr-kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;padding:2px 0;word-break:break-word}
@media (max-width:720px){.cr-row{grid-template-columns:minmax(0,1fr) 56px 56px}.cr-row .cr-spark{display:none}.cr-crumbs li{grid-template-columns:auto minmax(0,1fr)}.cr-crumbs li>.faint{grid-column:1/-1}}

/* Analytics (P64) */
.an-bars .mt-b>span{background:var(--accent)}
.an-tile-link{color:inherit;text-decoration:none}
.an-tile-link:hover{border-color:var(--accent)}
.an-ctl{display:flex;flex-wrap:wrap;gap:0 12px;align-items:flex-end}
.an-ctl .field{min-width:130px}
.an-ctl-funnel{margin-top:4px}
.an-ctl-funnel>.btn{margin-bottom:16px}
.an-step{display:flex;gap:8px;align-items:center;margin:0 0 8px;max-width:520px}
.an-step-n{flex:none;width:22px;height:22px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-size:.75rem;font-weight:600}
.an-funnel{list-style:none;margin:8px 0;padding:0}
.an-funnel li{margin:0 0 10px}
.an-f-head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;margin:0 0 4px}
.an-f-bar{height:14px}
.an-share{width:30%;min-width:80px}
.an-share>span{display:block;height:8px;border-radius:4px;background:var(--accent)}
.an-ret td,.an-ret th{white-space:nowrap}
.an-ret-cell{background:color-mix(in srgb,var(--accent) var(--p),transparent)}
.an-user{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.an-user .field{flex:1;min-width:220px;margin-bottom:0}
@media (max-width:640px){.an-ctl .field{flex:1 1 45%}}

/* Job monitoring (P65) */
.hb-sq{display:inline-flex;gap:2px;align-items:center;vertical-align:middle}
.hb-sq i{display:block;width:6px;height:16px;border-radius:2px;background:var(--border)}
.hb-sq i.hb-ok{background:var(--success)}
.hb-sq i.hb-failed{background:var(--danger)}
.hb-sq i.hb-missed{background:var(--warn)}
.hb-sq i.hb-running{background:var(--accent)}
.hb-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 16px}
.hb-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}
.hb-tile{display:flex;flex-direction:column;gap:4px;padding:12px 14px;margin:0!important}
.hb-tile b{font-size:18px;font-weight:600}
.hb-msg{white-space:pre-wrap;word-break:break-word;font-size:12px}
.hb-table td,.hb-runs td{vertical-align:top}
@media (max-width:900px){.hb-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.hb-sq i{width:4px}}
/* Links (P66) */
.lk-search{width:220px;max-width:100%;height:32px}
.lk-h3{font-size:.875rem;font-weight:600;margin:16px 0 8px}
.lk-h3:first-child{margin-top:0}
.lk-app{border-bottom:1px solid var(--border);padding-bottom:4px;margin-bottom:12px}
.lk-app3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}
.lk-dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:12px 0 0}
.lk-dl dt{color:var(--text-muted)}
.lk-dl dd{margin:0;min-width:0;overflow-wrap:anywhere}
.lk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.lk-grid>.card{margin:0!important}
.lk-share{width:100%}
.lk-share td{padding:6px 8px;border:0}
.lk-share td:first-child{padding-left:0;overflow-wrap:anywhere}
.lk-more{margin:4px 0 12px}
.lk-more summary{cursor:pointer;color:var(--text-muted);margin-bottom:12px}
.mt-axis{display:flex;justify-content:space-between;margin-top:4px}
@media (max-width:720px){.lk-app3,.lk-grid{grid-template-columns:1fr}.lk-dl{grid-template-columns:1fr}.lk-dl dt{margin-top:4px}.lk-search{width:100%}}
.lk-more .field{margin-bottom:12px}
/* Advisors › Health (P70) */
.advx-health{display:flex;flex-wrap:wrap;gap:8px 28px;margin:2px 0 0}
.advx-health div{display:grid;gap:2px}
.advx-health dt{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint)}
.advx-health dd{margin:0;font-size:15px;font-weight:600;color:var(--text)}
.advx-health dd .faint{font-weight:400;font-size:13px}
.advx-next{margin:0;font-size:14px;color:var(--text-2)}
.advx-note{display:flex;gap:6px;align-items:flex-start;margin:0}
.advx-note svg{width:14px;height:14px;flex:none;margin-top:3px}
.advx-ver{margin:0}
/* Database › Connections (P70) */
.cx-body{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-content:start}
.cx-intro{margin:0}
.cx-live{display:inline-flex;align-items:center;gap:6px}
.cx-dot{width:7px;height:7px;border-radius:50%;background:var(--success);display:inline-block}
.cx .pane-actions .input,.cx-tools .input{width:auto;display:inline-flex}
.cx .pane-actions .input{min-width:120px}
.cx-tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.cx-tile{display:flex;flex-direction:column;gap:4px;padding:12px 14px;margin:0!important}
.cx-tile b{font-size:18px;font-weight:600}
.cx-tile.is-warn{border-color:var(--warn)} .cx-tile.is-bad{border-color:var(--danger)}
.cx-tools{display:flex;gap:10px 16px;flex-wrap:wrap;align-items:center}
.cx-long{display:inline-flex;gap:8px;align-items:center}
.cx-blocked{padding:12px 14px;border-left:3px solid var(--danger);display:grid;gap:8px}
.cx-bh{display:flex;gap:8px;align-items:center}
.cx-bh svg{width:18px;height:18px;color:var(--danger);flex:none}
.cx-bh h2{font-size:15px;font-weight:600;margin:0}
.cx-blocked ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.cx-blocked li{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;font-size:13.5px}
.cx-table{min-width:820px}
.cx-wait{margin-top:4px;white-space:nowrap}
.cx-dur{margin:0;display:grid;gap:2px;font-size:12.5px}
.cx-dur div{display:flex;gap:6px;justify-content:space-between;white-space:nowrap}
.cx-dur dt{color:var(--muted)}
.cx-dur dd{margin:0;font-variant-numeric:tabular-nums}
.cx-table td{vertical-align:top}
.cx-table td:first-child code{white-space:nowrap}
.cx-role{white-space:nowrap;font-size:12px}
.cx-table td.num{white-space:nowrap}
.cx-table tr.is-warn td:first-child{box-shadow:inset 3px 0 0 var(--warn)}
.cx-table tr.is-bad td:first-child{box-shadow:inset 3px 0 0 var(--danger)}
.cx-table tr.is-flash td{background:var(--accent-soft, var(--surface-2))}
.cx-qcell{min-width:200px;max-width:420px}
.cx-q{display:block;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:4.8em;overflow:hidden}
.cx-flags{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.cx-acts{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.cx-acts .btn{white-space:nowrap}
.cx-app{margin-top:4px;color:var(--text-2)}
.cx-term{color:var(--danger)}
.cx-confirm-q{display:block;margin:10px 0 0;padding:8px 10px;background:var(--code-bg);color:var(--code-text);border-radius:var(--r-2);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;overflow:auto}
@media (max-width:1000px){.cx-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:720px){.cx-table{min-width:0}.cx-table td{flex-wrap:wrap}.cx-wait{white-space:normal}.cx-table tr.is-warn td:first-child,.cx-table tr.is-bad td:first-child{box-shadow:none}.cx-table tr.is-warn{box-shadow:inset 3px 0 0 var(--warn)}.cx-table tr.is-bad{box-shadow:inset 3px 0 0 var(--danger)}.cx-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.cx-qcell{max-width:none}.cx-table td.cx-qcell{display:block;text-align:left}.cx-table td.cx-qcell::before{display:block;margin-bottom:4px}.cx-acts{flex-direction:row;flex-wrap:wrap;justify-content:flex-end}.pane-actions .cx-live{display:none}}

/* Import from Postgres (studio-migrate.js) */
.mig-kv { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px 16px; margin: 0 0 12px; }
.mig-kv dt { color: var(--muted); }
.mig-kv dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.mig-more { margin: 6px 0 10px; }
.mig-more > summary { cursor: pointer; color: var(--muted); margin-bottom: 8px; }
.mig-more[open] > summary { color: var(--text); }
.mig-steps { margin: 0 0 12px; padding-left: 18px; display: grid; gap: 4px; }
.mig-notes { color: var(--warn-text, var(--text)); }
.mig-check { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.mig-check li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; align-items: start; overflow-wrap: anywhere; }
.mig-mark { width: 18px; height: 18px; margin-top: 1px; border: 1.5px solid var(--border-strong); border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; }
.mig-check li.is-done .mig-mark { background: var(--success); border-color: var(--success); color: var(--bg, #fff); }
.mig-check li.is-done > span:last-child { color: var(--muted); }
.mig-mark svg { width: 12px; height: 12px; }
@media (max-width: 560px) { .mig-kv { grid-template-columns: minmax(0, 1fr); gap: 2px; } .mig-kv dd { margin-bottom: 6px; } }

/* Database › Roles */
.input-addon{display:flex;align-items:center;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--surface-2);color:var(--muted);font-size:13px;white-space:nowrap}
#roleSchemas{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 16px}
#roleSchemas legend{width:100%;margin-bottom:4px}
#roleSchemas:disabled{opacity:.5}
.role-actions{white-space:nowrap;text-align:right}
@media (max-width:720px){.role-actions{white-space:normal;text-align:left}}
.role-name .cell-sub{word-break:break-all;font-size:11px}
@media (min-width:721px){.role-name{max-width:220px}}
/* Database › Query performance */
.qp-intro{margin:0 0 16px;max-width:80ch}
.qp-tiles{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}
.qp-open{all:unset;cursor:pointer;display:block;border-radius:4px}
.qp-open:hover .cx-q{color:var(--text)} .qp-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qp-qcell{max-width:46ch}
.qp-role{margin-top:4px}
.qp-share{display:flex;align-items:center;gap:8px;white-space:nowrap}
.qp-bar{display:inline-block;width:64px;height:6px;border-radius:3px;background:var(--border);overflow:hidden}
.qp-bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.qp-table td.num,.qp-table th.num{text-align:right;white-space:nowrap}
.qp-table tr.is-warn td:first-child{box-shadow:inset 3px 0 0 var(--warn)} .qp-table tr.is-bad td:first-child{box-shadow:inset 3px 0 0 var(--danger)}
.qp .pane-actions .input{width:auto;display:inline-flex;min-width:150px}
.qp-sql{margin:0;max-height:40vh;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:12.5px/1.55 var(--font-mono,ui-monospace,monospace);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;color:var(--text)}
.qp-mean{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end}
.qp-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px 16px;margin:14px 0}
.qp-stats dt{font-size:12px;color:var(--muted)} .qp-stats dd{margin:2px 0 0;font-weight:600}
@media (max-width:720px){.qp-table tr.is-warn td:first-child,.qp-table tr.is-bad td:first-child{box-shadow:none}.qp-table tr.is-warn{box-shadow:inset 3px 0 0 var(--warn)}.qp-table tr.is-bad{box-shadow:inset 3px 0 0 var(--danger)}.qp-qcell{max-width:none}.qp-table td.qp-qcell{display:block;text-align:left}.qp-table td.qp-qcell::before{display:block;margin-bottom:4px}.qp-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.qp-table td.num{text-align:right}}
