.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--primary: #ff7a03;--on-primary: #ffffff;--primary-hover: #ff9433;--primary-focus: #e06800;--primary-tint: color-mix(in srgb, var(--primary) 12%, var(--surface-1));--primary-tint-border: color-mix(in srgb, var(--primary) 30%, var(--hairline));--ink: #1a1a2e;--ink-muted: #3d3d56;--ink-subtle: #7878a0;--ink-tertiary: #ababc4;--canvas: #f0f1f6;--surface-1: #ffffff;--surface-2: #f5f6fa;--surface-3: #ecedf3;--surface-4: #e4e5ed;--surface-warm: #eee4e0;--hairline: #e2e4ec;--hairline-strong: #cccedd;--hairline-tertiary: #b8bacc;--success: #1e9e4a;--danger: #e5534b;--sql-kw: #b5470a;--sql-fn: #5b54c9;--sql-str: #1e7d3c;--sql-num: #0e7c86;--sql-comment: #9a9ab5;--sql-punc: #7878a0;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-pill: 9999px;--s-xxs: 4px;--s-xs: 8px;--s-sm: 12px;--s-md: 16px;--s-lg: 24px;--s-xl: 32px;--fs-9: 9px;--fs-10: 10px;--fs-10-5: 10.5px;--fs-11: 11px;--fs-11-5: 11.5px;--fs-12: 12px;--fs-12-5: 12.5px;--fs-13: 13px;--fs-13-5: 13.5px;--fs-14: 14px;--fs-15: 15px;--fs-16: 16px;--fs-17: 17px;--fs-18: 18px;--fs-19: 19px;--fs-20: 20px;--fs-22: 22px;--fs-24: 24px;--fs-26: 26px;--fs-28: 28px;--fs-40: 40px;--nav-h: 56px;--chat-w: 380px;--sidebar-w: 240px;--sidebar-w-collapsed: 60px;--library-w: 300px;--filters-w: 288px;--font-display: "Inter", "SF Pro Display", -apple-system, system-ui, "Segoe UI", Roboto, sans-serif;--font-text: "Inter", "SF Pro Text", -apple-system, system-ui, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--canvas);color:var(--ink);font-family:var(--font-text);font-size:var(--fs-16);line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:var(--font-text);cursor:pointer}.app{--col-sidebar: var(--sidebar-w);--col-library: 0px;--col-filters: 0px;--col-chat: var(--chat-w);display:grid;grid-template-rows:var(--nav-h) 1fr;grid-template-columns:var(--col-sidebar) var(--col-library) var(--col-filters) 1fr var(--col-chat);grid-template-areas:"header  header  header  header  header" "sidebar library filters canvas chat";height:100%;transition:grid-template-columns .18s ease}.app--landing{grid-template-rows:0 1fr}.app--sidebar-collapsed{--col-sidebar: var(--sidebar-w-collapsed)}.app--library-open{--col-library: var(--library-w)}.app--filters-open{--col-filters: var(--filters-w)}.app--chat-collapsed{--col-chat: 0}.app--chat-collapsed .chat{overflow:hidden;border-left:none}.lib{grid-area:library;min-width:0;overflow:hidden;display:flex;flex-direction:column;background:var(--surface-1);border-right:1px solid var(--hairline)}.lib__head{padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline);display:flex;flex-direction:column;gap:var(--s-sm)}.lib__title-row{display:flex;align-items:center;gap:var(--s-xs)}.lib__title{margin:0;font-size:var(--fs-14);font-weight:650;display:flex;align-items:center;gap:var(--s-xs)}.lib__count{font-size:var(--fs-11);font-weight:700;background:#fff1e3;color:var(--primary-focus);padding:1px 8px;border-radius:var(--r-pill)}.lib__close{margin-left:auto;display:grid;place-items:center;width:26px;height:26px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);cursor:pointer}.lib__close:hover{background:var(--surface-3);color:var(--ink)}.lib__search{display:flex;align-items:center;gap:var(--s-xs);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:7px 10px;color:var(--ink-subtle)}.lib__search:focus-within{border-color:var(--hairline-strong)}.lib__search input{flex:1;min-width:0;border:none;background:transparent;font:inherit;font-size:var(--fs-13);color:var(--ink);outline:none}.lib__cat{position:relative;display:flex}.lib__cat-select{width:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none;font:inherit;font-size:var(--fs-13);color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:7px 28px 7px 10px;cursor:pointer}.lib__cat-select:hover{border-color:var(--hairline-strong)}.lib__cat-select:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.lib__cat-chev{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:var(--ink-subtle);pointer-events:none}.lib__pills{display:flex;flex-wrap:wrap;gap:5px}.lib__pill{font-size:var(--fs-11-5);padding:3px 9px;border-radius:var(--r-pill);background:var(--surface-2);border:1px solid var(--hairline);color:var(--ink-muted);cursor:pointer;white-space:nowrap}.lib__pill:hover{border-color:var(--hairline-strong)}.lib__pill--active{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:600}.lib__list{flex:1;overflow-y:auto;padding:var(--s-xs);display:flex;flex-direction:column;gap:6px}.lib__empty{margin:var(--s-md);font-size:var(--fs-13);color:var(--ink-subtle);text-align:center}.lib-card{display:flex;align-items:center;gap:var(--s-sm);padding:8px 10px;border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-1)}.lib-card:hover{border-color:var(--hairline-strong);background:var(--surface-2)}.lib-card__thumb{flex:none;width:38px;height:38px;border-radius:var(--r-sm);background:var(--surface-3);display:grid;place-items:center}.lib-card__info{min-width:0;flex:1;display:flex;flex-direction:column}.lib-card__name{font-size:var(--fs-13);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-card__meta{font-size:var(--fs-11);color:var(--ink-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-card__add{flex:none;width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:var(--surface-1);color:var(--ink-muted);cursor:pointer}.lib-card__add:hover:not(:disabled){background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.lib-card__add:disabled{opacity:.45;cursor:default}.lib-card--adding{border-color:var(--primary);background:#fff8f1}.lib-card--adding .lib-card__add,.lib-card--adding .lib-card__add:disabled{opacity:1;color:var(--primary);border-color:var(--primary)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:60;background:var(--ink);color:#fff;font-size:var(--fs-13);font-weight:500;padding:10px 16px;border-radius:var(--r-md);box-shadow:0 8px 24px #1a1a2e38;max-width:80vw}@media (prefers-reduced-motion: no-preference){.toast{animation:toast-in .16s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}}.bundles{margin-bottom:var(--s-xl)}.bundles__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--s-md)}.bundle-card{text-align:left;border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--surface-1);padding:0;overflow:hidden;cursor:pointer;display:flex;flex-direction:column}.bundle-card:hover{border-color:var(--hairline-strong)}.bundle-card:disabled{opacity:.6;cursor:default}.bundle-card__thumb{height:64px;background:linear-gradient(120deg,#0e2d55,#134686);display:flex;align-items:flex-end;gap:5px;padding:0 16px 12px}.bundle-card__thumb i{display:block;width:12px;border-radius:2px 2px 0 0;background:var(--c3, #FEB21A)}.bundle-card__body{padding:var(--s-sm) var(--s-md) var(--s-md);display:flex;flex-direction:column;gap:6px}.bundle-card__name{font-size:var(--fs-15);font-weight:650;color:var(--ink)}.bundle-card__q{font-size:var(--fs-12-5);color:var(--ink-subtle);flex:1}.bundle-card__tags{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.bundle-card__tag{font-size:var(--fs-11);padding:2px 8px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--ink-muted)}.bundle-card__count{font-size:var(--fs-11);color:var(--ink-tertiary);margin-left:auto}.sidebar{grid-area:sidebar;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--surface-1);border-right:1px solid var(--hairline)}.sidebar__toggle{display:flex;align-items:center;gap:var(--s-xs);margin:var(--s-xs) var(--s-sm) 0;padding:var(--s-xs);border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);font-size:var(--fs-13)}.sidebar__toggle svg{flex:none;color:var(--ink-tertiary)}.sidebar__toggle:hover{background:var(--surface-3);color:var(--ink)}.sidebar__toggle:hover svg{color:var(--ink-muted)}.sidebar__nav{flex:1;min-height:0;overflow-y:auto;padding:var(--s-md) var(--s-sm);display:flex;flex-direction:column;gap:var(--s-lg)}.sidebar__section{display:flex;flex-direction:column;gap:2px}.sidebar__section-title{padding:0 var(--s-xs) var(--s-xxs);font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-tertiary)}.sidebar__item{display:flex;align-items:center;gap:var(--s-xs);width:100%;padding:var(--s-xs) var(--s-xs);border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-muted);font-size:var(--fs-14);text-align:left}.sidebar__item svg{flex:none;color:var(--ink-tertiary)}.sidebar__item:hover{background:var(--surface-3);color:var(--ink)}.sidebar__item:hover svg{color:var(--ink-muted)}.sidebar__item--active{background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary);font-weight:600}.sidebar__item--active svg{color:var(--primary)}.sidebar__item--active:hover{background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary)}.sidebar__item--active:hover svg{color:var(--primary)}.sidebar__item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__badge{flex:none;min-width:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--surface-4);color:var(--ink-muted);font-size:var(--fs-12);font-weight:600;line-height:18px;text-align:center}.sidebar__item--active .sidebar__badge{background:var(--primary);color:var(--on-primary)}.sidebar__user{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm);border-top:1px solid var(--hairline)}.sidebar__avatar{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:var(--r-pill);background:var(--primary);color:var(--on-primary);font-size:var(--fs-12);font-weight:700}.sidebar__user-meta{display:flex;flex-direction:column;min-width:0}.sidebar__user-name{font-size:var(--fs-13);font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__user-role{font-size:var(--fs-11);color:var(--ink-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__version{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-xs) var(--s-sm);border-top:1px solid var(--hairline)}.sidebar__version-icon{flex:none;color:var(--ink-tertiary)}.sidebar__version-num{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__version-tag{flex:none;max-width:96px;padding:2px 8px;border-radius:var(--r-pill);border:1px solid color-mix(in srgb,var(--primary) 32%,transparent);background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary-focus);font-family:var(--font-mono);font-size:var(--fs-10);font-weight:600;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar--collapsed .sidebar__item-label,.sidebar--collapsed .sidebar__badge,.sidebar--collapsed .sidebar__section-title,.sidebar--collapsed .sidebar__user-meta,.sidebar--collapsed .sidebar__version-num,.sidebar--collapsed .sidebar__version-tag{display:none}.sidebar--collapsed .sidebar__toggle,.sidebar--collapsed .sidebar__item{justify-content:center}.sidebar--collapsed .sidebar__nav{padding-left:var(--s-xs);padding-right:var(--s-xs)}.sidebar--collapsed .sidebar__user,.sidebar--collapsed .sidebar__version{justify-content:center}.header{grid-area:header;display:flex;align-items:center;gap:var(--s-md);padding:0 var(--s-lg);background:var(--canvas);border-bottom:1px solid var(--hairline)}.header__brand{display:flex;align-items:center;gap:var(--s-xs);font-family:var(--font-display);font-weight:600}.header__mark{width:18px;height:18px;border-radius:var(--r-sm);background:var(--primary)}.header__badge{flex:none;padding:2px 8px;border-radius:var(--r-pill);border:1px solid color-mix(in srgb,var(--primary) 32%,transparent);background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary-focus);font-family:var(--font-mono);font-size:var(--fs-10);font-weight:600;white-space:nowrap;text-transform:uppercase}.header__title{font-family:var(--font-display);font-weight:500;font-size:var(--fs-15);color:var(--ink-muted)}.header__spacer{flex:1}.header__meta{display:flex;flex-direction:column;align-items:flex-end;gap:1px;line-height:1.2}.header__meta-line{font-family:var(--font-mono);font-size:var(--fs-12);color:var(--ink-tertiary);white-space:pre}.header__slogan{font-family:var(--font-mono);font-size:var(--fs-9);text-transform:uppercase;color:var(--ink-tertiary);opacity:.7}.header__meta-char{display:inline-block;animation:metaBlinkWave 2.4s ease-in-out infinite}@keyframes metaBlinkWave{0%,to{opacity:.3}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.header__meta-char{animation:none;opacity:1}}.dash-picker{position:relative;display:flex;align-items:center}.dash-picker__btn{display:inline-flex;align-items:center;gap:6px;max-width:280px;background:transparent;border:1px solid transparent;border-radius:var(--r-md);padding:5px var(--s-xs);font-family:var(--font-display);font-weight:500;font-size:var(--fs-15);color:var(--ink-muted);transition:background .12s ease,border-color .12s ease,color .12s ease}.dash-picker__btn:hover{background:var(--surface-3);color:var(--ink)}.dash-picker__btn svg{flex:none;color:var(--ink-tertiary)}.dash-picker__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dash-rename{width:220px;background:var(--surface-1);border:1px solid var(--primary);border-radius:var(--r-md);padding:5px var(--s-xs);font-family:var(--font-display);font-weight:500;font-size:var(--fs-15);color:var(--ink);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.dash-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:100;min-width:260px;max-height:360px;overflow-y:auto;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-md);box-shadow:0 8px 28px #00000024;padding:var(--s-xxs);animation:fade-in .12s ease both}.dash-menu__empty{padding:var(--s-xs) var(--s-sm);font-size:var(--fs-13);color:var(--ink-tertiary)}.dash-menu__item{display:flex;align-items:center;gap:var(--s-xs);padding:7px var(--s-xs);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-14);color:var(--ink-muted);transition:background .1s ease,color .1s ease}.dash-menu__item:hover{background:var(--surface-3);color:var(--ink)}.dash-menu__item--active{color:var(--ink)}.dash-menu__check{flex:none;width:14px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary)}.dash-menu__title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dash-menu__count{flex:none;font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-tertiary);background:var(--surface-3);border-radius:var(--r-pill);padding:1px 7px}.dash-menu__delete{flex:none;background:transparent;border:none;color:var(--ink-tertiary);font-size:var(--fs-16);line-height:1;padding:2px 5px;border-radius:var(--r-sm);opacity:0;transition:opacity .1s ease,background .1s ease,color .1s ease}.dash-menu__item:hover .dash-menu__delete{opacity:1}.dash-menu__delete:hover{background:var(--surface-4);color:#c0001a}.dash-actions{position:relative;display:flex;align-items:center;gap:var(--s-xs);flex:none}.dash-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);color:var(--ink-muted);transition:background .12s ease,border-color .12s ease,color .12s ease}.dash-actions__btn:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-tertiary)}.dash-actions__btn--active{background:var(--surface-3);color:var(--ink)}.dash-actions__btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.dash-menu--right{left:auto;right:0;min-width:200px}.dash-menu__action{width:100%;background:transparent;border:none;text-align:left}.dash-menu__action-icon{flex:none;color:var(--ink-tertiary)}.dash-menu__action:hover .dash-menu__action-icon{color:var(--ink)}.dash-menu__action:disabled{opacity:.55;cursor:default;color:var(--ink-tertiary)}.dash-menu__action:disabled:hover{background:transparent}.widget__action--menu{margin-left:auto}.widget__action--menu.is-active{opacity:1;color:var(--ink)}.widget-menu{z-index:100;min-width:180px;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-md);box-shadow:0 8px 28px #00000024;padding:var(--s-xxs);animation:fade-in .12s ease both}.widget-menu__item{display:flex;align-items:center;gap:var(--s-xs);width:100%;padding:7px var(--s-xs);background:transparent;border:none;border-radius:var(--r-sm);text-align:left;cursor:pointer;font-size:var(--fs-14);color:var(--ink-muted);transition:background .1s ease,color .1s ease}.widget-menu__item:hover{background:var(--surface-3);color:var(--ink)}.widget-menu__icon{flex:none;color:var(--ink-tertiary)}.widget-menu__item:hover .widget-menu__icon{color:var(--ink)}.widget-menu__title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.widget-menu__item:disabled{opacity:.55;cursor:default;color:var(--ink-tertiary)}.widget-menu__item:disabled:hover{background:transparent;color:var(--ink-tertiary)}.widget-menu__item:disabled:hover .widget-menu__icon{color:var(--ink-tertiary)}.widget-menu__sub{max-height:280px;overflow-y:auto;margin-top:2px;padding-top:2px;border-top:1px solid var(--hairline)}.widget-menu__subitem{padding-left:30px}.widget-menu__hint{color:var(--ink-tertiary);font-size:var(--fs-11);flex:none}.widget-menu__subitem.widget-menu__hint{padding-top:6px;padding-bottom:2px;font-weight:650;text-transform:uppercase;color:var(--ink-subtle)}.query-modal{width:min(92vw,760px);height:auto;max-height:min(82vh,620px)}.query-modal__copy{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--hairline-strong);color:var(--ink-muted);font-size:var(--fs-12);padding:3px 9px;border-radius:var(--r-sm);cursor:pointer;transition:background .1s ease,color .1s ease}.query-modal__copy:hover{background:var(--surface-3);color:var(--ink)}.query-modal__body{overflow:auto}.query-modal__hint{margin:0 0 var(--s-xs);font-size:var(--fs-12);color:var(--ink-muted)}.query-modal__sql{margin:0;font-family:var(--font-mono);font-size:var(--fs-13);line-height:1.55;color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md);padding:var(--s-sm);white-space:pre-wrap;word-break:break-word}.sql-tok--kw{color:var(--sql-kw);font-weight:600}.sql-tok--fn{color:var(--sql-fn)}.sql-tok--str{color:var(--sql-str)}.sql-tok--num{color:var(--sql-num)}.sql-tok--ident{color:var(--ink-muted)}.sql-tok--comment{color:var(--sql-comment);font-style:italic}.sql-tok--punc{color:var(--sql-punc)}.query-modal__status{display:flex;align-items:center;gap:var(--s-xs);color:var(--ink-muted);font-size:var(--fs-13);padding:var(--s-sm)}.expand-modal.export-modal{width:min(92vw,400px);height:auto;max-height:min(82vh,540px)}.expand-modal__body.export-modal__body{flex:none;overflow:auto;display:flex;flex-direction:column;gap:var(--s-md);padding:var(--s-md)}.export-modal__group{display:flex;flex-direction:column;gap:var(--s-xs)}.export-modal__label{font-family:var(--font-display);font-weight:600;font-size:var(--fs-12);text-transform:uppercase;color:var(--ink-subtle)}.export-modal__opt{display:flex;align-items:center;gap:var(--s-xs);font-size:var(--fs-14);color:var(--ink);cursor:pointer}.export-modal__opt--off{color:var(--ink-tertiary);cursor:default}.export-modal__opt input{accent-color:var(--primary)}.export-modal__hint{margin:0;font-size:var(--fs-12);color:var(--ink-tertiary)}.export-modal__actions{display:flex;justify-content:flex-end;gap:var(--s-xs);margin-top:var(--s-xs)}.export-modal__status{display:flex;flex-direction:column;gap:var(--s-sm);font-size:var(--fs-14);color:var(--ink)}.export-modal__progress{display:flex;align-items:center;gap:var(--s-xs);color:var(--ink-muted)}.export-modal__warn{margin:0;font-size:var(--fs-13);color:var(--warning, #b5470a)}.export-modal__error{font-size:var(--fs-13);color:var(--danger)}.app-picker{position:relative;display:flex;align-items:center}.app-picker__btn{max-width:240px}.app-picker__btn--unset{color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}.app-picker__btn--unset:hover{background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary)}.app-picker__tag{flex:none;font-family:var(--font-mono);font-size:var(--fs-10);font-weight:600;color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);border-radius:var(--r-pill);padding:1px 6px}.app-menu{min-width:300px;padding-top:var(--s-xxs)}.app-menu__search{width:100%;box-sizing:border-box;margin-bottom:var(--s-xxs);background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);padding:6px var(--s-xs);font-family:var(--font-display);font-size:var(--fs-13);color:var(--ink);outline:none}.app-menu__search:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.app-menu__list{max-height:280px;overflow-y:auto}.app-menu__add{display:flex;align-items:center;gap:var(--s-xs);width:100%;box-sizing:border-box;margin-top:var(--s-xxs);padding:8px var(--s-xs);border:none;border-top:1px solid var(--hairline);background:transparent;font-family:var(--font-display);font-size:var(--fs-13);font-weight:500;color:var(--primary);cursor:pointer;border-radius:0 0 var(--r-sm) var(--r-sm);transition:background .1s ease}.app-menu__add:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.dash-btn{background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:6px 12px;font-family:var(--font-text);font-weight:500;font-size:var(--fs-13);color:var(--ink-muted);transition:background .12s ease,border-color .12s ease,color .12s ease}.dash-btn:hover:not(:disabled){background:var(--surface-3);color:var(--ink);border-color:var(--hairline-tertiary)}.dash-btn:disabled{opacity:.45;cursor:default}.dash-btn--primary{background:var(--primary);border-color:transparent;color:var(--on-primary);min-width:64px}.dash-btn--primary:hover:not(:disabled){background:var(--primary-hover);color:var(--on-primary);border-color:transparent}.dash-btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.dash-btn--layout{display:inline-flex;align-items:center;gap:6px;min-height:36px}.dash-btn--active{background:color-mix(in srgb,var(--primary) 10%,var(--surface-2));border-color:var(--primary);color:var(--primary-focus)}.dash-btn--active:hover{background:color-mix(in srgb,var(--primary) 16%,var(--surface-2));border-color:var(--primary);color:var(--primary-focus)}.dash-btn--dirty,.dash-btn--dirty:hover{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 26%,transparent)}.dash-unsaved{display:inline-flex;align-items:center;gap:var(--s-xs);padding-right:var(--s-sm);margin-right:var(--s-xs);border-right:1px solid var(--hairline)}.dash-unsaved__dot{width:7px;height:7px;flex:none;border-radius:var(--r-pill);background:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)}.dash-unsaved__label{font-family:var(--font-text);font-size:var(--fs-12);font-weight:500;color:var(--ink-subtle);margin-right:var(--s-xxs);white-space:nowrap}.layout-switch{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:6px 10px;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);font-family:var(--font-text);font-weight:500;font-size:var(--fs-13);color:var(--ink-muted);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.layout-switch:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-tertiary)}.layout-switch:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.layout-switch svg{flex:none}.layout-switch__text{line-height:1}.layout-switch__track{position:relative;width:30px;height:16px;flex:none;border-radius:var(--r-pill);background:var(--hairline-tertiary);transition:background .14s ease}.layout-switch__thumb{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:var(--r-pill);background:var(--surface-1);box-shadow:0 1px 2px #0003;transition:transform .14s ease}.layout-switch--on{background:color-mix(in srgb,var(--primary) 10%,var(--surface-2));border-color:var(--primary);color:var(--primary-focus)}.layout-switch--on:hover{background:color-mix(in srgb,var(--primary) 16%,var(--surface-2));border-color:var(--primary)}.layout-switch--on .layout-switch__track{background:var(--primary)}.layout-switch--on .layout-switch__thumb{transform:translate(14px)}.header__user{display:flex;align-items:center;gap:var(--s-xs);margin-left:var(--s-sm)}.header__username{max-width:160px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--font-display);font-weight:500;font-size:var(--fs-13);color:var(--ink-muted)}.header__logout{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);color:var(--ink-muted);transition:background .12s ease,border-color .12s ease,color .12s ease}.header__logout:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-tertiary)}.header__logout:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.auth-gate{height:100%;display:flex;align-items:center;justify-content:center;background:var(--canvas)}.auth-gate__spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--hairline-strong);border-top-color:var(--primary);animation:spin .7s linear infinite}.login{height:100%;display:flex;align-items:center;justify-content:center;padding:var(--s-lg);background:var(--canvas)}.login__card{width:100%;max-width:380px;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);box-shadow:0 8px 28px #0000001a,0 2px 8px #0000000a;padding:var(--s-xl) var(--s-lg);display:flex;flex-direction:column;gap:var(--s-sm);animation:modal-in .22s cubic-bezier(.22,1,.36,1) both}.login__brand{display:flex;align-items:center;gap:var(--s-xs);margin-bottom:var(--s-xs)}.login__mark{width:20px;height:20px;border-radius:var(--r-sm);background:var(--primary)}.login__brand-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-15);color:var(--ink)}.login__brand-sub{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-tertiary)}.login__title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-22);color:var(--ink);margin:0}.login__subtitle{font-size:var(--fs-13);color:var(--ink-subtle);margin:0 0 var(--s-xs)}.login__field{display:flex;flex-direction:column;gap:var(--s-xxs)}.login__label{font-size:var(--fs-12);font-weight:500;color:var(--ink-muted)}.login__input{width:100%;box-sizing:border-box;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:9px var(--s-sm);font-family:var(--font-text);font-size:var(--fs-14);color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.login__input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.login__error{font-size:var(--fs-13);color:#c0001a;background:#fff0f2;border:1px solid #fcc;border-radius:var(--r-md);padding:var(--s-xs) var(--s-sm)}.login__submit{margin-top:var(--s-xs);width:100%}.embed-status{height:100%;display:flex;align-items:center;justify-content:center;padding:var(--s-lg);background:var(--canvas)}.embed-status__card{width:100%;max-width:420px;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);box-shadow:0 8px 28px #0000001a,0 2px 8px #0000000a;padding:var(--s-xl) var(--s-lg);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--s-sm);animation:modal-in .24s cubic-bezier(.22,1,.36,1) both}.embed-status__brand{display:flex;align-items:center;gap:var(--s-xs);margin-bottom:var(--s-xs)}.embed-status__mark{width:20px;height:20px;border-radius:var(--r-sm);background:var(--primary)}.embed-status__brand-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-15);color:var(--ink)}.embed-status__brand-sub{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-tertiary)}.embed-status__icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin-top:var(--s-xs);color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent)}.embed-status__icon--preparing{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);animation:embed-pulse 2s ease-in-out infinite}.embed-status__icon--connecting{background:color-mix(in srgb,var(--primary) 10%,transparent)}.embed-status__icon--denied,.embed-status__icon--session,.embed-status__icon--error{color:#c0001a;background:#fff0f2}@keyframes embed-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--primary) 22%,transparent)}50%{box-shadow:0 0 0 10px color-mix(in srgb,var(--primary) 0%,transparent)}}.embed-status__spinner{width:26px;height:26px;border-radius:50%;border:2.5px solid color-mix(in srgb,var(--primary) 25%,transparent);border-top-color:var(--primary);animation:spin .8s linear infinite}.embed-status__title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-20);color:var(--ink);margin:var(--s-xs) 0 0}.embed-status__body{font-size:var(--fs-14);line-height:1.65;color:var(--ink-subtle);margin:0;max-width:34ch}.embed-status__meta{font-size:var(--fs-12);color:var(--ink-faint);margin:0;max-width:34ch}.embed-status__meta-id{font-family:var(--font-mono)}.embed-status__retry{margin-top:var(--s-sm);min-width:140px}.expand-modal.coming-soon-modal{width:min(92vw,420px);height:auto;max-height:min(86vh,400px)}.expand-modal__body.coming-soon-modal__body{display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--s-xl) var(--s-md)}.coming-soon-modal__notice{margin:0;font-size:var(--fs-15);line-height:1.6;color:var(--ink-muted)}.expand-modal.prompt-modal{width:min(92vw,400px);height:auto;max-height:min(86vh,360px)}.expand-modal__body.prompt-modal__body{display:flex;flex-direction:column;gap:var(--s-sm);padding:var(--s-md)}.prompt-modal__label{font-size:var(--fs-13);font-weight:600;color:var(--ink-tertiary)}.prompt-modal__message{margin:0 0 var(--s-xs);font-size:var(--fs-14);line-height:1.6;color:var(--ink-muted)}.prompt-modal__input{width:100%;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:10px var(--s-sm);font-family:var(--font-text);font-size:var(--fs-14);color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.prompt-modal__input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.prompt-modal__footer{display:flex;justify-content:flex-end;gap:var(--s-sm);margin-top:var(--s-sm)}.prompt-modal__footer .dash-btn{padding:8px 18px;font-size:var(--fs-14)}.expand-modal.guide-modal{width:min(94vw,460px);height:auto;max-height:min(88vh,520px)}.expand-modal.add-app-modal{width:min(92vw,420px);height:auto;max-height:min(88vh,480px)}.expand-modal__body.guide-modal__body{display:flex;flex-direction:column;gap:var(--s-sm);padding:var(--s-md)}.guide-modal__lead{margin:0;font-size:var(--fs-14);color:var(--ink-muted)}.guide-modal__choices{display:flex;flex-direction:column;gap:var(--s-sm)}.guide-choice{display:flex;align-items:center;gap:var(--s-sm);width:100%;text-align:left;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:var(--s-sm) var(--s-md);cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.guide-choice:hover:not(:disabled){border-color:var(--primary);background:color-mix(in srgb,var(--primary) 6%,transparent)}.guide-choice:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.guide-choice:disabled{opacity:.5;cursor:not-allowed}.guide-choice__icon{display:flex;align-items:center;justify-content:center;flex:none;width:38px;height:38px;border-radius:var(--r-md);background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary)}.guide-choice__text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.guide-choice__title{font-size:var(--fs-14);font-weight:600;color:var(--ink)}.guide-choice__desc{font-size:var(--fs-12-5);line-height:1.4;color:var(--ink-muted)}.guide-choice__arrow{flex:none;color:var(--ink-tertiary)}.dash-btn--danger{min-width:64px;background:var(--danger);color:#fff;border-color:transparent}.dash-btn--danger:hover{background:color-mix(in srgb,var(--danger) 86%,#000);color:#fff;border-color:transparent}.expand-modal.share-modal{width:min(92vw,460px);height:auto;max-height:min(86vh,600px)}.expand-modal__body.share-modal__body{display:flex;flex-direction:column;gap:var(--s-md);overflow-y:auto}.share-modal__loading,.share-list__empty{font-size:var(--fs-13);color:var(--ink-subtle);padding:var(--s-xs) 0}.share-modal__error{font-size:var(--fs-13);color:#c0001a;background:#fff0f2;border:1px solid #fcc;border-radius:var(--r-md);padding:var(--s-xs) var(--s-sm)}.share-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.share-list__row{display:flex;align-items:center;gap:var(--s-sm);padding:8px var(--s-xs);border-bottom:1px solid var(--hairline)}.share-list__row:last-child{border-bottom:none}.share-list__name{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-14);color:var(--ink)}.share-list__role{flex:none;font-family:var(--font-mono);font-size:var(--fs-11);text-transform:capitalize;color:var(--ink-tertiary);background:var(--surface-3);border-radius:var(--r-pill);padding:2px 8px}.share-list__role--owner{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent)}.share-list__revoke{flex:none;display:inline-flex;align-items:center;background:transparent;border:none;color:var(--ink-tertiary);padding:4px 5px;border-radius:var(--r-sm);cursor:pointer;transition:color .1s ease,background .1s ease}.share-list__revoke:hover{color:var(--danger);background:var(--surface-3)}.share-list__revoke:disabled{opacity:.5;cursor:default}.share-form{display:flex;flex-direction:column;gap:var(--s-xs);border-top:1px solid var(--hairline);padding-top:var(--s-md)}.share-form__label{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;color:var(--ink-tertiary)}.share-form__row{display:flex;gap:var(--s-xs);align-items:center}.share-form__input{flex:1;min-width:0;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:8px var(--s-sm);font-family:var(--font-text);font-size:var(--fs-14);color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.share-form__input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.share-form__select{flex:none;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:8px var(--s-xs);font-family:var(--font-text);font-size:var(--fs-13);color:var(--ink);outline:none;cursor:pointer}.share-form__select:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.share-form__submit{flex:none;padding:8px 16px}.expand-modal.schedule-modal{width:min(94vw,480px);height:auto;max-height:min(86vh,580px)}.expand-modal__body.schedule-modal__body{display:flex;flex-direction:column;gap:var(--s-md)}.schedule-modal__toggle-row{display:flex;align-items:center;gap:var(--s-sm);font-size:var(--fs-14);color:var(--ink);cursor:pointer}.schedule-modal__checkbox-row{display:flex;align-items:center;gap:var(--s-sm);font-size:var(--fs-13);color:var(--ink-subtle);cursor:pointer}.schedule-modal__composer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-xs);padding-left:calc(16px + var(--s-sm))}.schedule-modal__composer p{margin:0;font-size:var(--fs-14);color:var(--ink);white-space:nowrap}.schedule-modal__composer-label{font-weight:500}.schedule-modal__field{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-13);color:var(--ink-subtle);padding-left:calc(16px + var(--s-sm))}.schedule-modal__select,.schedule-modal__cron-input{background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:6px var(--s-xs);font-family:var(--font-text);font-size:var(--fs-14);color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.schedule-modal__select{cursor:pointer}.schedule-modal__select--time{width:68px}.schedule-modal__select--tz{width:100%}.schedule-modal__cron-input{width:100%;font-family:var(--font-mono)}.schedule-modal__select:focus,.schedule-modal__cron-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.schedule-modal__hint{font-size:var(--fs-13);color:var(--ink-subtle);margin:0}.schedule-modal__warning{font-size:var(--fs-13);color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface-1));border:1px solid color-mix(in srgb,var(--danger) 24%,var(--hairline));border-radius:var(--r-md);padding:var(--s-xs) var(--s-sm);margin:0}.schedule-modal__actions{display:flex;justify-content:flex-end;gap:var(--s-xs);border-top:1px solid var(--hairline);padding-top:var(--s-md)}.canvas{grid-area:canvas;overflow:auto;--canvas-pad: var(--s-lg);padding:var(--canvas-pad);position:relative;display:flex;flex-direction:column}.dashbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-md);flex:none;padding:0 var(--s-md);margin-bottom:var(--s-xs)}.dashbar__lead{display:flex;align-items:center;gap:var(--s-xs);min-width:0}.dashbar__icon{flex:none;color:var(--ink-tertiary)}.dashbar__rename{flex:none;display:inline-flex;align-items:center;justify-content:center;padding:4px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink-tertiary);opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.dashbar__lead:hover .dashbar__rename,.dashbar__rename:focus-visible{opacity:1}.dashbar__rename:hover{background:var(--surface-3);color:var(--ink)}.dashbar__rename:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.dashbar__title{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--font-display);font-weight:600;font-size:var(--fs-20);color:var(--ink);cursor:default;-webkit-user-select:none;user-select:none}.dashbar__sep{flex:none;align-self:center;width:4px;height:4px;border-radius:50%;background:var(--hairline-strong)}.dashbar__app{flex:0 1 auto;min-width:0;max-width:28ch;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--font-display);font-weight:500;font-size:var(--fs-13);color:var(--ink-subtle);-webkit-user-select:none;user-select:none}.dashbar__updated{flex:none;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-family:var(--font-display);font-weight:500;font-size:var(--fs-13);color:var(--ink-subtle);-webkit-user-select:none;user-select:none}.dashbar__updated svg{color:var(--ink-tertiary)}.dashbar__updated--warn,.dashbar__updated--warn svg{color:var(--danger)}.canvas__generating{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-md);text-align:center;background:#f0f1f6d1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.canvas__generating .spinner{margin:0;width:34px;height:34px;border-width:3px}.canvas__generating p{margin:0;font-size:var(--fs-14);color:var(--ink-muted)}.canvas__generating strong{color:var(--ink);font-weight:600}.canvas.is-editing .widget__head{cursor:grab}.canvas.is-editing .react-draggable-dragging .widget__head{cursor:grabbing}.canvas.is-editing .widget{border-color:color-mix(in srgb,var(--primary) 45%,var(--hairline));border-style:dashed}.canvas.is-editing .widget:hover{border-color:var(--primary)}.canvas__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--ink-subtle);gap:var(--s-sm);padding:var(--s-lg)}.canvas__empty-badge{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);margin-bottom:var(--s-xxs);animation:empty-badge-float 3.2s ease-in-out infinite}.canvas__empty-bar{transform-box:fill-box;transform-origin:bottom;animation:empty-bar-grow 2.4s ease-in-out infinite}.canvas__empty-bar.b1{animation-delay:0s}.canvas__empty-bar.b2{animation-delay:.28s}.canvas__empty-bar.b3{animation-delay:.56s}@keyframes empty-bar-grow{0%,to{transform:scaleY(.32);opacity:.65}50%{transform:scaleY(1);opacity:1}}@keyframes empty-badge-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@media (prefers-reduced-motion: reduce){.canvas__empty-badge,.canvas__empty-bar{animation:none}.canvas__empty-bar{transform:scaleY(1);opacity:1}}.canvas__empty h2{font-family:var(--font-display);font-weight:600;font-size:var(--fs-22);color:var(--ink);margin:0}.canvas__empty-lead{margin:0;max-width:46ch;font-size:var(--fs-14);line-height:1.6;color:var(--ink-subtle)}.canvas__empty-starters{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-xs);max-width:620px;margin-top:var(--s-xxs)}.canvas__empty-chip{font-family:var(--font-text);font-size:var(--fs-13);color:var(--ink-muted);background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-pill);padding:7px 14px;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease,transform .12s ease}.canvas__empty-chip:hover{color:var(--primary-focus);border-color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,var(--surface-1));transform:translateY(-1px)}.canvas__empty-chip:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.canvas__empty-hint{margin:var(--s-xxs) 0 0;font-size:var(--fs-12-5);color:var(--ink-tertiary)}.canvas__empty-actions{margin-top:var(--s-sm);padding-top:var(--s-sm);border-top:1px solid var(--hairline);width:100%;max-width:340px;display:flex;justify-content:center}.canvas__empty-newdash{display:inline-flex;align-items:center;gap:6px}.canvas__scrolltop-anchor{position:sticky;bottom:calc(-1 * var(--canvas-pad));align-self:stretch;height:0;z-index:20;pointer-events:none}.canvas__scrolltop{position:absolute;left:0;bottom:var(--s-md);display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--hairline-strong);background:var(--surface-1);color:var(--ink-muted);box-shadow:0 8px 28px #00000024;cursor:pointer;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .18s ease,transform .18s ease,color .15s ease,border-color .15s ease}.canvas__scrolltop.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}.canvas__scrolltop:hover{color:var(--primary);border-color:var(--primary)}.canvas__scrolltop:focus-visible{outline:none;box-shadow:0 8px 28px #00000024,0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.widget{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a;display:flex;flex-direction:column;overflow:hidden;height:100%;animation:widget-in .42s cubic-bezier(.22,1,.36,1) both;transition:border-color .16s ease,box-shadow .16s ease}.widget:hover{border-color:var(--hairline-strong);box-shadow:0 4px 16px #0000001a}@keyframes widget-in{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.widget--focus{position:relative;z-index:5;border-color:var(--primary);animation:widget-focus-pulse 1.5s cubic-bezier(.22,1,.36,1) both}@keyframes widget-focus-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--primary) 55%,transparent),0 4px 16px #0000001a}60%{box-shadow:0 0 0 7px color-mix(in srgb,var(--primary) 0%,transparent),0 4px 16px #0000001a}to{box-shadow:0 0 color-mix(in srgb,var(--primary) 0%,transparent),0 1px 4px #0000000f,0 2px 8px #0000000a}}.widget--emitter .widget__action--xf{color:color-mix(in srgb,var(--primary) 70%,var(--ink-tertiary))}.widget--emitter .widget__body{cursor:pointer}.widget--emitting{border-color:var(--primary)}.widget__action--xf.is-active{color:var(--primary)}.widget__head{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline)}.widget__icon{flex:none;color:var(--ink-tertiary);opacity:.7}.widget__icon--spin{animation:spin 1.4s linear infinite;color:var(--primary);opacity:1}.widget-refresh-indicator{display:inline-flex;flex:none;align-items:center;justify-content:center;color:var(--primary-focus);overflow:hidden}.widget-refresh-indicator__icon{display:block;animation:widget-chart-refresh 1.45s cubic-bezier(.22,1,.36,1) infinite;filter:drop-shadow(0 2px 3px color-mix(in srgb,var(--primary) 22%,transparent));transform-origin:center;will-change:transform,opacity,filter}@keyframes widget-chart-refresh{0%{opacity:0;transform:translate3d(-28%,12%,0) scale(.96);filter:brightness(.92) drop-shadow(0 1px 2px color-mix(in srgb,var(--primary) 16%,transparent))}24%,48%{opacity:1;transform:translateZ(0) scale(1);filter:brightness(1.08) drop-shadow(0 3px 5px color-mix(in srgb,var(--primary) 28%,transparent))}54%{opacity:.3;transform:translate3d(1%,0,0) scale(.985)}61%{opacity:1;transform:translate3d(2%,0,0) scale(1)}82%,to{opacity:0;transform:translate3d(30%,-12%,0) scale(.96);filter:brightness(.94) drop-shadow(0 1px 2px color-mix(in srgb,var(--primary) 14%,transparent))}}.widget--loading{cursor:progress}.widget__loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--surface-1) 70%,transparent);z-index:6;animation:widget-loading-in .14s ease both}@keyframes widget-loading-in{0%{opacity:0}to{opacity:1}}.widget__title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:500;font-size:var(--fs-14);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-body{width:100%;height:100%}.chart-body--rendering{animation:chart-body-render-in .62s cubic-bezier(.22,1,.36,1) both;transform-origin:50% 65%}@keyframes chart-body-render-in{0%{opacity:.18;transform:translateY(8px) scale(.985);filter:saturate(.82)}58%{opacity:1}to{opacity:1;transform:translateY(0) scale(1);filter:saturate(1)}}.widget__body{position:relative;flex:1;min-height:0;padding:var(--s-xs)}.widget__action,.widget__remove{background:transparent;border:none;color:var(--ink-tertiary);line-height:1;padding:3px 5px;border-radius:var(--r-sm);display:flex;align-items:center;cursor:pointer;opacity:0;transition:opacity .12s ease,color .12s ease,background .12s ease}.widget__remove{font-size:var(--fs-16);margin-left:auto}.widget__action{margin-left:auto}.widget__action+.widget__remove{margin-left:0}.widget:hover .widget__action,.widget:hover .widget__remove{opacity:1}.widget__action:hover,.widget__remove:hover{color:var(--ink);background:var(--surface-3)}.widget__action+.widget__action{margin-left:0}.widget__action.is-active{opacity:1;color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent)}.widget__help{flex:none;display:inline-flex;align-items:center;position:relative;color:var(--ink-subtle);cursor:help;border-radius:var(--r-sm);transition:color .12s ease}.widget__help:hover,.widget__help:focus-visible{color:var(--ink-tertiary);outline:none}.widget__help-tip{position:fixed;transform:translate(-50%);z-index:20;display:flex;flex-direction:column;gap:2px;min-width:max-content;padding:var(--s-xs) var(--s-sm);background:var(--surface-3);border:1px solid var(--hairline);border-radius:var(--r-sm);box-shadow:0 4px 16px #0000001f,0 1px 4px #00000014;font-family:var(--font-display);pointer-events:none;animation:fade-in .12s ease both}.widget__help-tip-label{font-size:var(--fs-10);font-weight:600;text-transform:uppercase;color:var(--ink-subtle)}.widget__help-tip-time{font-size:var(--fs-12);color:var(--ink);white-space:nowrap}.widget__help-tip-usage{display:flex;flex-direction:column;gap:3px;margin-top:var(--s-xxs);padding-top:var(--s-xs);border-top:1px solid var(--hairline)}.widget__help-tip-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-lg);font-size:var(--fs-12);color:var(--ink-subtle);white-space:nowrap}.widget__help-tip-row strong{color:var(--ink);font-weight:600}.widget__help-tip-shared{max-width:220px;font-size:var(--fs-10);color:var(--ink-subtle);white-space:normal}.insight{flex:none;border-top:1px solid var(--hairline);border-left:2px solid var(--primary);background:var(--surface-2);padding:var(--s-xs) var(--s-sm);display:flex;flex-direction:column;gap:5px;max-height:45%;overflow:auto;animation:insight-in .28s cubic-bezier(.22,1,.36,1) both}@keyframes insight-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.insight__head{display:flex;align-items:center;gap:6px}.insight__icon{flex:none;color:var(--primary)}.insight__label{font-family:var(--font-display);font-weight:600;font-size:var(--fs-11);text-transform:uppercase;color:var(--ink-muted)}.insight__hint{font-size:var(--fs-11);color:var(--ink-subtle);font-style:italic}.insight__btn{background:transparent;border:none;color:var(--ink-tertiary);padding:2px 4px;border-radius:var(--r-sm);display:flex;align-items:center;cursor:pointer;transition:color .12s ease,background .12s ease}.insight__head .insight__btn:first-of-type{margin-left:auto}.insight__btn:hover{color:var(--ink);background:var(--surface-3)}.insight__body{font-size:var(--fs-13);line-height:1.5;color:var(--ink)}.insight__body .md p{margin:0}.insight__body .md strong{color:var(--ink);font-weight:650}.insight__error{font-size:var(--fs-12-5);color:var(--danger)}.insight__skeleton{display:flex;flex-direction:column;gap:5px}.insight__skeleton i{height:9px;border-radius:var(--r-xs);display:block}.insight__skeleton i:last-child{width:70%}.expand-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fade-in .18s ease both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.expand-modal{background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);box-shadow:0 24px 64px #00000073;display:flex;flex-direction:column;width:min(92vw,1080px);height:min(86vh,720px);animation:modal-in .22s cubic-bezier(.22,1,.36,1) both}@keyframes modal-in{0%{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.expand-modal__head{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline);flex:none}.expand-modal__title{font-family:var(--font-display);font-weight:500;font-size:var(--fs-15);color:var(--ink)}.expand-modal__close{margin-left:auto;background:transparent;border:none;color:var(--ink-tertiary);padding:4px 6px;border-radius:var(--r-sm);display:flex;align-items:center;cursor:pointer}.expand-modal__close:hover{color:var(--ink);background:var(--surface-3)}.expand-modal__body{flex:1;min-height:0;padding:var(--s-sm)}.sedit{width:min(94vw,1080px);height:min(88vh,700px)}.sedit__body{flex:1;min-height:0;display:flex}.sedit__preview{flex:1;min-width:0;padding:var(--s-md);border-right:1px solid var(--hairline);display:flex;align-items:stretch}.sedit__preview>div{flex:1}.sedit__kpi-frame{margin:auto;width:min(360px,100%);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-1)}.sedit__rail{width:300px;flex:none;overflow-y:auto;padding:var(--s-sm) var(--s-md)}.sedit__section{margin-bottom:var(--s-md)}.sedit__section-title{font-size:var(--fs-11);font-weight:650;text-transform:uppercase;color:var(--ink-subtle);padding-bottom:var(--s-xxs);border-bottom:1px solid var(--hairline);margin-bottom:var(--s-xxs)}.sedit__row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-xs);padding:5px 0;min-height:28px}.sedit__label{font-size:var(--fs-12-5);color:var(--ink-muted);flex:none;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sedit__control{display:flex;align-items:center;gap:var(--s-xxs);min-width:0}.sedit__control select,.sedit__input{font:inherit;font-size:var(--fs-12-5);color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);padding:3px 6px;max-width:150px}.sedit__input--short{max-width:72px}.sedit__control select:focus-visible,.sedit__input:focus-visible{outline:none;border-color:var(--primary)}.sedit__toggle{accent-color:var(--primary);width:15px;height:15px;cursor:pointer}.sedit__slider{display:flex;align-items:center;gap:6px}.sedit__slider input[type=range]{width:92px;accent-color:var(--primary)}.sedit__slider-val{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-subtle);min-width:32px;text-align:right}.sedit__swatch-wrap{display:inline-flex;align-items:center;gap:4px}.sedit__swatch{width:26px;height:20px;padding:1px;border:1px solid var(--hairline-strong);border-radius:var(--r-xs);background:var(--surface-1);cursor:pointer}.sedit__swatch-clear{background:transparent;border:none;color:var(--ink-tertiary);font-size:var(--fs-13);line-height:1;padding:2px;cursor:pointer;border-radius:var(--r-xs)}.sedit__swatch-clear:hover{color:var(--danger);background:var(--surface-3)}.sedit__palettes{display:flex;flex-direction:column;gap:4px;margin:var(--s-xxs) 0 var(--s-xs)}.sedit__palette{display:flex;align-items:center;justify-content:space-between;gap:var(--s-xs);padding:5px 8px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);cursor:pointer;font:inherit}.sedit__palette:hover{background:var(--surface-3)}.sedit__palette.is-active{border-color:var(--primary);background:var(--surface-1)}.sedit__palette-name{font-size:var(--fs-12);color:var(--ink-muted)}.sedit__palette.is-active .sedit__palette-name{color:var(--ink);font-weight:550}.sedit__palette-strip{display:flex;gap:2px}.sedit__palette-strip i{width:12px;height:12px;border-radius:3px;display:inline-block}.sedit__foot{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);border-top:1px solid var(--hairline);flex:none}.sedit__foot-spacer{flex:1}.sedit__reset{color:var(--ink-subtle)}@media (max-width: 768px){.sedit{width:100vw;height:100vh;border-radius:0}.sedit__body{flex-direction:column;overflow-y:auto}.sedit__preview{border-right:none;border-bottom:1px solid var(--hairline);min-height:240px;flex:none;height:260px}.sedit__rail{width:auto;flex:1}}.kpi{display:flex;flex-direction:column;justify-content:center;height:100%;padding:var(--s-md)}.kpi--with-trend{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--s-md)}.kpi__main{display:flex;flex-direction:column;justify-content:center}.kpi__sparkline{flex:none;cursor:crosshair;opacity:.95;transition:opacity .16s ease;animation:sparkline-in .5s cubic-bezier(.22,1,.36,1) both .1s}.kpi__sparkline:hover{opacity:1}@keyframes sparkline-in{0%{opacity:0;transform:scaleX(.7);transform-origin:right}to{opacity:.95;transform:scaleX(1)}}.kpi__spark-line{transition:stroke-width .14s ease}.kpi__sparkline.is-hover .kpi__spark-line{stroke-width:2.3}.kpi__spark-dot{transition:r .12s ease}.kpi__spark-bubble rect{fill:var(--ink);opacity:.92}.kpi__spark-bubble text{font-family:var(--font-mono);font-size:var(--fs-9);font-weight:600;fill:var(--surface-1)}.kpi__value{font-family:var(--font-display);font-weight:600;font-size:var(--fs-40);line-height:1.1;font-variant-numeric:tabular-nums}.kpi__value-a11y{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.kpi__value-number{display:inline}.kpi__unit{font-size:var(--fs-16);color:var(--ink-subtle);margin-left:6px}.kpi__delta{margin-top:var(--s-xs);font-size:var(--fs-13);color:var(--ink-subtle)}.kpi__delta--up{color:var(--success)}.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-13)}.tbl th,.tbl td{text-align:left;padding:6px var(--s-sm);border-bottom:1px solid var(--hairline)}.tbl th{color:var(--ink-subtle);font-weight:500}.tbl td{color:var(--ink-muted)}.tbl__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.tbl__th--sortable:hover{color:var(--ink)}.tbl__sort{margin-left:4px;font-size:var(--fs-9);color:var(--primary)}.tbl-wrap{display:flex;flex-direction:column;height:100%;position:relative}.tbl-wrap__scroll{flex:1 1 auto;overflow:auto;min-height:0;transition:opacity .18s ease}.tbl thead th{position:sticky;top:0;z-index:1;background:var(--surface-1)}.tbl-progress{flex:0 0 auto;height:2px;overflow:hidden;background:transparent}.tbl-progress:before{content:"";display:block;height:100%;width:38%;border-radius:2px;background:var(--primary);transform:translate(-110%)}.tbl-wrap.is-loading .tbl-progress:before{animation:tbl-indet 1.05s cubic-bezier(.4,0,.2,1) infinite}.tbl-wrap.is-loading .tbl-wrap__scroll{opacity:.45;pointer-events:none}@keyframes tbl-indet{0%{transform:translate(-110%)}to{transform:translate(360%)}}.tbl__rows-in{animation:tbl-rows-in .26s ease}@keyframes tbl-rows-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.tbl-pager{flex:0 0 auto;display:flex;align-items:center;gap:var(--s-sm);justify-content:flex-end;padding:var(--s-xs) var(--s-sm);border-top:1px solid var(--hairline);font-size:var(--fs-12);color:var(--ink-subtle)}.tbl-pager__info{font-variant-numeric:tabular-nums}.tbl-pager__btn{background:transparent;border:1px solid var(--hairline);border-radius:var(--r-sm);color:var(--ink-muted);padding:2px var(--s-sm);cursor:pointer;font-size:var(--fs-12)}.tbl-pager__btn:hover:not(:disabled){color:var(--ink);border-color:var(--ink-subtle)}.tbl-pager__btn:disabled{opacity:.4;cursor:default}.tbl-pager__funnel{margin-right:auto;display:inline-flex;align-items:center;gap:5px;padding:3px 8px;position:relative}.tbl-pager__funnel.is-active{color:var(--on-primary);background:var(--primary);border-color:var(--primary)}.tbl-pager__pending{position:absolute;top:-3px;right:-3px;width:7px;height:7px;border-radius:50%;background:var(--primary);animation:tbl-pulse 1s ease-in-out infinite}@keyframes tbl-pulse{0%,to{opacity:.4}50%{opacity:1}}.tbl__filter-row th{padding:2px var(--s-sm) 6px;background:var(--surface-1)}.tbl__filter-input{width:100%;min-width:60px;box-sizing:border-box;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);color:var(--ink);padding:2px 6px;font-size:var(--fs-12)}.tbl__filter-input:focus{outline:none;border-color:var(--primary);background:var(--surface-1)}.tbl__filter-input::placeholder{color:var(--ink-subtle)}@media (prefers-reduced-motion: reduce){.tbl-progress:before,.tbl__rows-in,.tbl-pager__pending{animation:none}.tbl-wrap__scroll{transition:none}}.md{padding:var(--s-md);color:var(--ink-muted);font-size:var(--fs-14);white-space:pre-wrap}.skeletons{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--s-md);margin-top:var(--s-md)}.skeleton-card{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);height:232px;display:flex;flex-direction:column;overflow:hidden;animation:widget-in .42s cubic-bezier(.22,1,.36,1) both}.skeleton-card__head{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline)}.skeleton-card__title{font-family:var(--font-display);font-weight:500;font-size:var(--fs-14);color:var(--ink-subtle);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.skeleton-card__body{flex:1;padding:var(--s-md);min-height:0}.spinner{margin-left:auto;flex:none;width:14px;height:14px;border-radius:50%;border:2px solid var(--hairline-strong);border-top-color:var(--primary);animation:spin .7s linear infinite}.widget--placeholder{border-color:#5e6ad259;animation:widget-in .38s cubic-bezier(.22,1,.36,1) both,placeholder-glow 2.4s ease-in-out infinite .4s}.widget--placeholder .widget__title{color:var(--ink-subtle)}@keyframes placeholder-glow{0%,to{border-color:#5e6ad240;box-shadow:0 0 #5e6ad200}50%{border-color:#5e6ad28c;box-shadow:0 0 12px 1px #5e6ad21f}}@keyframes body-reveal{0%{opacity:0;transform:scale(.97);filter:blur(2px)}to{opacity:1;transform:scale(1);filter:blur(0)}}.widget__body--reveal{animation:body-reveal .35s cubic-bezier(.22,1,.36,1) both}.shimmer{background:linear-gradient(90deg,var(--surface-2) 20%,rgba(94,106,210,.13) 40%,var(--surface-3) 50%,rgba(94,106,210,.13) 60%,var(--surface-2) 80%);background-size:250% 100%;animation:shimmer 1.6s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-bars{display:flex;align-items:flex-end;gap:10px;height:100%;padding-bottom:4px}.skeleton-bars i{flex:1;border-radius:var(--r-xs) var(--r-xs) 0 0;display:block;transform-origin:bottom;animation:bar-breathe 2s ease-in-out infinite}.skeleton-bars i:nth-child(1){height:42%;animation-delay:0s}.skeleton-bars i:nth-child(2){height:72%;animation-delay:.18s}.skeleton-bars i:nth-child(3){height:56%;animation-delay:.36s}.skeleton-bars i:nth-child(4){height:90%;animation-delay:.54s}.skeleton-bars i:nth-child(5){height:64%;animation-delay:.72s}@keyframes bar-breathe{0%,to{transform:scaleY(1);opacity:.55}50%{transform:scaleY(1.1);opacity:.85}}.skeleton-kpi{display:flex;flex-direction:column;justify-content:center;gap:var(--s-sm);height:100%}.skeleton-block{border-radius:var(--r-sm)}.skeleton-block--lg{height:44px;width:60%}.skeleton-block--sm{height:16px;width:35%}.chat{position:relative;grid-area:chat;display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--surface-1);border-left:1px solid var(--hairline)}.chat__head{display:flex;align-items:center;gap:var(--s-xs);padding:0 var(--s-lg);height:var(--nav-h);border-bottom:1px solid var(--hairline);font-family:var(--font-display);font-weight:600;font-size:var(--fs-13);color:var(--ink)}.chat__head-icon{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);flex-shrink:0}.chat__head-toggle{margin-left:auto;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid transparent;border-radius:var(--r-md);background:transparent;color:var(--ink-subtle);flex-shrink:0;transition:background .12s ease,color .12s ease,border-color .12s ease}.chat__head-toggle:hover{background:var(--surface-3);color:var(--ink)}.chat__head-toggle:focus-visible{outline:2px solid color-mix(in srgb,var(--primary-focus) 50%,transparent);outline-offset:1px}.chat__head-feedback,.chat__head-new,.chat__head-history{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid transparent;border-radius:var(--r-md);background:transparent;color:var(--ink-subtle);flex-shrink:0;transition:background .12s ease,color .12s ease,border-color .12s ease}.chat__head-feedback{margin-left:auto}.chat__head-feedback:hover,.chat__head-new:hover,.chat__head-history:hover{background:var(--surface-3);color:var(--ink)}.chat__head-feedback:disabled,.chat__head-new:disabled{opacity:.5;cursor:default}.chat__head-feedback:focus-visible,.chat__head-new:focus-visible,.chat__head-history:focus-visible{outline:2px solid color-mix(in srgb,var(--primary-focus) 50%,transparent);outline-offset:1px}.chat__head-feedback+.chat__head-new{margin-left:0}.chat__head-new+.chat__head-history{margin-left:0}.chat__head-history+.chat__head-toggle{margin-left:0}.chat-drawer .chat__head-toggle{display:none}.expand-modal.chat-history{width:min(92vw,520px);height:auto;max-height:min(86vh,640px)}.chat-history__search{display:flex;align-items:center;gap:var(--s-xs);margin:var(--s-md) var(--s-lg) 0;padding:0 var(--s-sm);height:34px;border:1px solid var(--hairline-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-subtle);flex-shrink:0}.chat-history__search:focus-within{border-color:var(--primary)}.chat-history__search input{flex:1;border:none;background:transparent;color:var(--ink);font-size:var(--fs-13);outline:none}.chat-history__list{display:flex;flex-direction:column;gap:2px;padding:var(--s-sm) var(--s-md) var(--s-md);overflow-y:auto}.chat-history__msg{font-size:var(--fs-13);color:var(--ink-subtle);padding:var(--s-md) var(--s-sm);text-align:center}.chat-history__msg--error{color:#c0001a}.chat-history__row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-md);width:100%;text-align:left;padding:var(--s-sm) var(--s-md);border:1px solid transparent;border-radius:var(--r-md);background:transparent;cursor:pointer;transition:background .12s ease,border-color .12s ease}.chat-history__row:hover{background:var(--surface-2)}.chat-history__row:disabled{opacity:.5;cursor:default}.chat-history__row--active{background:color-mix(in srgb,var(--primary) 8%,transparent);border-color:color-mix(in srgb,var(--primary) 32%,transparent)}.chat-history__row-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.chat-history__row-title{display:flex;align-items:center;gap:var(--s-xs);font-weight:600;font-size:var(--fs-13);color:var(--ink)}.chat-history__dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}.chat-history__row-preview{font-size:var(--fs-12);color:var(--ink-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.chat-history__row-meta{display:flex;align-items:center;gap:4px;font-size:var(--fs-11);color:var(--ink-subtle);white-space:nowrap;flex-shrink:0;padding-top:2px}.chat-reopen{position:fixed;bottom:var(--s-md);right:var(--s-md);z-index:40;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid transparent;border-radius:var(--r-lg);background:var(--primary);color:var(--on-primary);box-shadow:0 4px 16px color-mix(in srgb,var(--primary) 30%,transparent);transition:background .12s ease,box-shadow .12s ease,transform .12s ease}.chat-reopen:hover{background:var(--primary-hover);box-shadow:0 6px 20px color-mix(in srgb,var(--primary) 38%,transparent)}.chat-reopen:active{transform:scale(.96)}.chat-reopen:focus-visible{outline:none;box-shadow:0 4px 16px color-mix(in srgb,var(--primary) 30%,transparent),0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}@media (prefers-reduced-motion: reduce){.chat-reopen{transition:background .12s ease}.chat-reopen:active{transform:none}}.chat__log{flex:1;overflow-y:auto;padding:var(--s-lg) var(--s-md);display:flex;flex-direction:column;gap:var(--s-md)}.chat__empty{margin:auto;text-align:center;color:var(--ink-subtle);font-size:var(--fs-14);line-height:1.6;padding:var(--s-xl) var(--s-lg);max-width:340px}.chat__empty p{margin:0 0 var(--s-xs)}.chat__empty-title{font-family:var(--font-display);font-weight:500;font-size:var(--fs-15);color:var(--ink)}.chat__empty-hint{font-size:var(--fs-13);color:var(--ink-tertiary)}.chat__empty em{font-style:normal;color:var(--primary)}.chat__suggestions{margin-top:var(--s-lg);display:flex;flex-direction:column;gap:var(--s-xs);text-align:left}.chat__suggestions-label{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-tertiary);margin-bottom:var(--s-xxs)}.chat__suggestion{display:flex;align-items:center;gap:var(--s-xs);width:100%;padding:8px 12px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md);color:var(--ink-muted);font-family:var(--font-text);font-size:var(--fs-13);line-height:1.4;text-align:left;transition:background .12s ease,border-color .12s ease,color .12s ease}.chat__suggestion:before{content:"›";color:var(--primary);font-weight:700;flex-shrink:0}.chat__suggestion:hover:not(:disabled){background:var(--surface-3);border-color:var(--hairline-strong);color:var(--ink)}.chat__suggestion:focus-visible{outline:2px solid color-mix(in srgb,var(--primary-focus) 50%,transparent);outline-offset:1px}.chat__suggestion:disabled{opacity:.5;cursor:default}.msg{position:relative;display:flex}.msg--user{justify-content:flex-end}.msg__avatar{position:absolute;top:-8px;left:-8px;z-index:1;width:22px;height:22px;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;font-size:var(--fs-10);font-weight:700;background:var(--surface-3);color:var(--ink-subtle);border:1px solid var(--hairline);box-shadow:0 1px 3px #0000001f}.msg--user .msg__avatar{left:auto;right:-8px;background:var(--primary);color:var(--on-primary);border-color:transparent}.msg__body{display:flex;flex-direction:column;gap:6px;max-width:94%}.msg--user .msg__body{align-items:flex-end}.msg-actions{display:flex;align-items:center;gap:2px;min-height:28px;color:var(--ink-subtle);opacity:0;transition:opacity .12s ease}.msg:hover .msg-actions,.msg:focus-within .msg-actions{opacity:1}.msg--user .msg-actions{justify-content:flex-end}.msg-actions__button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);transition:color .12s ease,background .12s ease,border-color .12s ease}.msg-actions__button:hover:not(:disabled){color:var(--ink);background:var(--surface-3)}.msg-actions__button--selected{color:var(--primary-focus);background:color-mix(in srgb,var(--primary) 11%,var(--surface-1));border-color:color-mix(in srgb,var(--primary) 28%,var(--hairline))}.msg-actions__button:disabled{opacity:.45;cursor:default}.msg-actions__button:focus-visible{outline:2px solid color-mix(in srgb,var(--primary-focus) 50%,transparent);outline-offset:1px}.msg-actions__status{min-width:0;margin-left:3px;font-size:var(--fs-11);color:var(--ink-subtle);white-space:nowrap}@media (hover: none),(max-width: 1024px){.msg-actions{opacity:1}.msg-actions__button{width:40px;height:40px}}.msg__bubble{background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-lg);border-top-left-radius:var(--r-xs);padding:var(--s-xs) var(--s-sm);font-size:var(--fs-14);color:var(--ink);white-space:pre-wrap;line-height:1.55}.msg--user .msg__bubble{background:var(--primary);color:var(--on-primary);border-color:transparent;border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-xs)}.msg__typewriter{white-space:pre-wrap}.msg__cursor{display:inline-block;width:8px;height:8px;margin-left:3px;border-radius:50%;background:var(--primary);vertical-align:baseline;animation:cursor-pulse 1.05s ease-in-out infinite}@keyframes cursor-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}@media (prefers-reduced-motion: reduce){.msg__cursor{animation:none}}.md{white-space:normal}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 8px}.md h1,.md h2,.md h3,.md h4{margin:14px 0 6px;font-family:var(--font-display);font-weight:600;line-height:1.3}.md h1{font-size:var(--fs-18)}.md h2{font-size:var(--fs-16)}.md h3{font-size:var(--fs-15)}.md h4{font-size:var(--fs-14)}.md ul,.md ol{margin:0 0 8px;padding-left:20px}.md li{margin:2px 0}.md li>p{margin:0}.md a{color:var(--primary);text-decoration:none}.md a:hover{text-decoration:underline}.md strong{font-weight:600}.md em{font-style:italic}.md code{font-family:var(--font-mono);font-size:.86em;background:var(--surface-3);border:1px solid var(--hairline);border-radius:var(--r-xs);padding:1px 5px}.md pre{margin:0 0 8px;padding:var(--s-xs) var(--s-sm);background:var(--surface-3);border:1px solid var(--hairline);border-radius:var(--r-sm);overflow-x:auto}.md pre code{background:none;border:none;padding:0;font-size:var(--fs-12-5);line-height:1.5}.md blockquote{margin:0 0 8px;padding:2px 0 2px 12px;border-left:3px solid var(--hairline-strong);color:var(--ink-muted)}.md hr{border:none;border-top:1px solid var(--hairline);margin:12px 0}.md table{border-collapse:collapse;margin:0 0 8px;font-size:var(--fs-13);width:100%}.md th,.md td{border:1px solid var(--hairline);padding:4px 8px;text-align:left}.md th{background:var(--surface-3);font-weight:600}.msg__bubble--typing{padding:10px var(--s-sm);min-width:52px}.typing-dots{display:inline-flex;gap:4px;align-items:center}.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--ink-subtle);animation:typing-bounce 1.2s ease-in-out infinite}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}.tool-activity{display:flex;flex-direction:column;gap:6px}.tool-activity__chips{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.tool-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface-2);color:var(--ink-muted);border:1px solid var(--hairline);border-radius:var(--r-pill);padding:2px 8px 2px 7px;font-size:var(--fs-11);line-height:1.5;white-space:nowrap}.tool-chip__icon{color:var(--ink-subtle);flex-shrink:0}.tool-chip__label{font-weight:500}.tool-chip__count{display:inline-flex;align-items:center;justify-content:center;min-width:15px;height:15px;padding:0 4px;margin-left:1px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--primary) 14%,var(--surface-3));color:var(--primary-focus);font-family:var(--font-mono);font-size:var(--fs-10);font-weight:600}.tool-chip--active{border-color:color-mix(in srgb,var(--primary) 45%,var(--hairline));background:color-mix(in srgb,var(--primary) 7%,var(--surface-2));color:var(--ink)}.tool-chip--active .tool-chip__icon{color:var(--primary)}.tool-chip__pulse{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0;animation:cursor-pulse 1.05s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.tool-chip__pulse{animation:none}}.tool-activity__toggle{display:inline-flex;align-items:center;gap:3px;padding:2px 8px 2px 5px;border:1px solid transparent;border-radius:var(--r-pill);background:none;color:var(--ink-subtle);font-size:var(--fs-11);font-weight:500}.tool-activity__toggle:hover{color:var(--ink-muted);background:var(--surface-2);border-color:var(--hairline)}.tool-activity__chevron{transition:transform .15s ease}.tool-activity__toggle.is-open .tool-activity__chevron{transform:rotate(90deg)}.tool-activity__detail{list-style:none;margin:0;padding:var(--s-xs) var(--s-sm);display:flex;flex-direction:column;gap:5px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md)}.tool-call{display:flex;align-items:baseline;gap:7px;font-size:var(--fs-11-5);line-height:1.45}.tool-call__idx{flex-shrink:0;min-width:16px;text-align:right;color:var(--ink-tertiary);font-family:var(--font-mono);font-size:var(--fs-10)}.tool-call__icon{color:var(--ink-subtle);flex-shrink:0;align-self:center}.tool-call__name{flex-shrink:0;color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-11);font-weight:500}.tool-call__args{color:var(--ink-subtle);font-family:var(--font-mono);font-size:var(--fs-10-5);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg__error{color:#c0001a;font-size:var(--fs-13);padding:var(--s-xs) var(--s-sm);background:#fff0f2;border:1px solid #fcc;border-radius:var(--r-md)}.chat-feedback{position:absolute;inset:var(--nav-h) 0 0;z-index:30;display:flex;align-items:flex-end;min-height:0}.chat-feedback__scrim{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:0;border:0;background:color-mix(in srgb,#000 24%,transparent)}.chat-feedback__sheet{position:relative;width:100%;max-height:min(78%,590px);overflow-y:auto;padding:var(--s-lg) var(--s-md) var(--s-md);border-top:1px solid var(--hairline-strong);border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--surface-1);box-shadow:0 -8px 24px color-mix(in srgb,#000 12%,transparent)}.chat-feedback__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-sm)}.chat-feedback__head h2{margin:0;color:var(--ink);font-family:var(--font-display);font-size:var(--fs-16);font-weight:600}.chat-feedback__head p{margin:3px 0 0;color:var(--ink-subtle);font-size:var(--fs-12)}.chat-feedback__close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:none;padding:0;border:1px solid transparent;border-radius:var(--r-md);background:transparent;color:var(--ink-subtle)}.chat-feedback__close:hover{color:var(--ink);background:var(--surface-3)}.chat-feedback__rating,.chat-feedback__reasons{min-width:0;margin:var(--s-md) 0 0;padding:0;border:0}.chat-feedback__rating legend,.chat-feedback__reasons legend{margin-bottom:var(--s-xs);color:var(--ink-muted);font-size:var(--fs-12);font-weight:600}.chat-feedback__rating-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s-xs)}.chat-feedback__rating-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;height:46px;padding:0;border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-subtle);font-size:var(--fs-10)}.chat-feedback__rating-button:hover{border-color:var(--hairline-strong);color:var(--ink)}.chat-feedback__rating-button--selected{border-color:color-mix(in srgb,var(--primary) 44%,var(--hairline));background:color-mix(in srgb,var(--primary) 10%,var(--surface-1));color:var(--primary-focus)}.chat-feedback__chips{display:flex;flex-wrap:wrap;gap:6px}.chat-feedback__chip{min-height:32px;padding:5px 10px;border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink-muted);font-size:var(--fs-12)}.chat-feedback__chip:hover{border-color:var(--hairline-strong);color:var(--ink)}.chat-feedback__chip--selected{border-color:color-mix(in srgb,var(--primary) 40%,var(--hairline));background:color-mix(in srgb,var(--primary) 10%,var(--surface-1));color:var(--primary-focus)}.chat-feedback__comment{display:flex;flex-direction:column;margin-top:var(--s-md);color:var(--ink-muted);font-size:var(--fs-12);font-weight:600}.chat-feedback__comment>span{color:var(--ink-tertiary);font-weight:400}.chat-feedback__comment textarea{width:100%;margin-top:6px;padding:var(--s-xs) var(--s-sm);resize:vertical;border:1px solid var(--hairline-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink);font:inherit;font-weight:400;line-height:1.45}.chat-feedback__comment textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.chat-feedback__comment small{align-self:flex-end;margin-top:3px;color:var(--ink-tertiary);font-size:var(--fs-10);font-weight:400}.chat-feedback__error{margin-top:var(--s-xs);color:#c0001a;font-size:var(--fs-12)}.chat-feedback__actions{display:flex;justify-content:flex-end;gap:var(--s-xs);margin-top:var(--s-sm)}.chat-feedback__actions .dash-btn{display:inline-flex;align-items:center;gap:5px}.chat-feedback__spinner{animation:spin .7s linear infinite}.chat-feedback__success{padding:var(--s-xl) var(--s-md);text-align:center;color:var(--ink);font-size:var(--fs-14);font-weight:600}.chat__composer{border-top:1px solid var(--hairline);padding:var(--s-sm) var(--s-md);background:var(--surface-1)}.confirm-build{margin:0 var(--s-md) var(--s-sm);padding:var(--s-sm) var(--s-md);border:1px solid color-mix(in srgb,var(--primary) 40%,var(--hairline-strong));border-radius:var(--r-md);background:color-mix(in srgb,var(--primary) 6%,var(--surface-1))}.confirm-build__eyebrow{font-size:var(--fs-11);font-weight:650;text-transform:uppercase;color:var(--primary-focus);margin-bottom:3px}.confirm-build__head{font-size:var(--fs-13);font-weight:600;color:var(--ink)}.confirm-build__hint{font-size:var(--fs-12);color:var(--ink-subtle);margin-top:2px}.confirm-build__items{margin:var(--s-xs) 0 0;padding-left:1.1rem;display:flex;flex-direction:column;gap:2px;font-size:var(--fs-12-5);color:var(--ink-muted)}.confirm-build__actions{display:flex;justify-content:flex-end;gap:var(--s-sm);margin-top:var(--s-sm)}.composer__box{background:var(--canvas);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);display:flex;flex-direction:column;transition:border-color .15s ease,box-shadow .15s ease}.composer__box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.composer__chip{display:flex;align-items:center;gap:6px;margin:var(--s-xs) var(--s-xs) 0;padding:4px 6px 4px 10px;font-size:var(--fs-12);color:var(--ink);background:color-mix(in srgb,var(--primary) 10%,var(--surface-3));border:1px solid color-mix(in srgb,var(--primary) 26%,var(--hairline));border-radius:var(--r-pill)}.composer__chip-icon{flex:none;color:var(--primary)}.composer__chip-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-muted)}.composer__chip-title{color:var(--ink);font-weight:500}.composer__chip-clear{flex:none;display:flex;align-items:center;background:transparent;border:none;color:var(--ink-tertiary);line-height:1;padding:2px;border-radius:var(--r-sm);cursor:pointer;transition:color .1s ease,background .1s ease}.composer__chip-clear:hover{color:var(--ink);background:var(--surface-2)}.composer__box--dragover{border-color:var(--primary);border-style:dashed;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.composer__box--locked{background:var(--surface-2);border-style:dashed;opacity:.75}.composer__box--locked:focus-within{border-color:var(--hairline-strong);box-shadow:none}.chat__limit-banner{display:flex;align-items:flex-start;gap:var(--s-sm);margin:0 0 var(--s-sm);padding:var(--s-sm) var(--s-md);border:1px solid color-mix(in srgb,var(--danger) 28%,var(--hairline-strong));border-radius:var(--r-md);background:color-mix(in srgb,var(--danger) 7%,var(--surface-1))}.chat__limit-banner-icon{flex:none;color:var(--danger);margin-top:2px}.chat__limit-banner-text{display:flex;flex-direction:column;gap:2px;min-width:0}.chat__limit-banner-title{font-size:var(--fs-13);font-weight:600;color:var(--danger)}.chat__limit-banner-detail,.chat__limit-banner-contact{font-size:var(--fs-12);color:var(--ink-subtle)}.composer__thumbs{display:flex;flex-wrap:wrap;gap:var(--s-xs);margin:var(--s-xs) var(--s-sm) 0}.composer__thumb{position:relative;width:52px;height:52px;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--hairline-strong);background:var(--surface-2)}.composer__thumb img{width:100%;height:100%;object-fit:cover;display:block}.composer__thumb-remove{position:absolute;top:2px;right:2px;display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:var(--r-sm);color:#fff;background:color-mix(in srgb,#000 55%,transparent);cursor:pointer;transition:background .1s ease}.composer__thumb-remove:hover{background:color-mix(in srgb,#000 75%,transparent)}.composer__actions-left{display:flex;align-items:center;gap:8px;min-width:0}.composer__attach{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;background:transparent;border:none;border-radius:var(--r-sm);color:var(--ink-tertiary);cursor:pointer;transition:color .12s ease,background .12s ease}.composer__attach:hover:not(:disabled){color:var(--primary);background:var(--surface-2)}.composer__attach:disabled{opacity:.35;cursor:default}.composer__token-donut{width:12px;height:12px;flex:none;border-radius:50%;background:conic-gradient(var(--primary) calc(var(--pct, 1) * 360deg),var(--surface-3) 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2.5px));transition:background .3s ease}.composer__token-donut--low{background:conic-gradient(var(--danger) calc(var(--pct, 1) * 360deg),var(--surface-3) 0)}.msg__images{display:flex;flex-wrap:wrap;gap:var(--s-xs);margin-bottom:var(--s-xs)}.msg__image{max-width:180px;max-height:140px;border-radius:var(--r-md);border:1px solid var(--hairline);object-fit:cover}.chat__input{flex:1;resize:none;background:transparent;color:var(--ink);border:none;outline:none;padding:var(--s-sm) var(--s-md);font-family:var(--font-text);font-size:var(--fs-14);line-height:1.55;max-height:120px}.chat__input::placeholder{color:var(--ink-tertiary)}.composer__actions{display:flex;align-items:center;justify-content:space-between;padding:6px var(--s-xs) 6px var(--s-md);border-top:1px solid var(--hairline)}.composer__hint{font-size:var(--fs-11);color:var(--ink-tertiary);font-family:var(--font-mono)}.btn-send{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--primary);color:var(--on-primary);border:none;border-radius:var(--r-md);flex-shrink:0;transition:background .14s ease,opacity .14s ease}.btn-send:hover:not(:disabled){background:var(--primary-hover)}.btn-send:disabled{opacity:.35;cursor:default}.btn-send__spinner{display:block;width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--on-primary) 40%,transparent);border-top-color:var(--on-primary);animation:spin .7s linear infinite}.btn-primary{background:var(--primary);color:var(--on-primary);border:none;border-radius:var(--r-md);padding:8px 14px;font-weight:500;font-size:var(--fs-14)}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{opacity:.5;cursor:default}.react-grid-item,.react-grid-item.cssTransforms{transition:transform .28s cubic-bezier(.22,1,.36,1),width .24s cubic-bezier(.22,1,.36,1),height .24s cubic-bezier(.22,1,.36,1)}.react-grid-item.resizing,.react-grid-item.react-draggable-dragging{transition:none;z-index:3}.react-grid-item.react-draggable-dragging .widget{border-color:var(--hairline-strong);box-shadow:0 8px 24px #0000001f}.react-grid-item.react-grid-placeholder{background:color-mix(in srgb,var(--primary) 30%,transparent);border-radius:var(--r-lg);opacity:.6;transition:transform .2s ease}.react-grid-item>.react-resizable-handle:after{border-right-color:var(--hairline-strong);border-bottom-color:var(--hairline-strong)}*{scrollbar-width:thin;scrollbar-color:var(--hairline-strong) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:var(--r-pill)}@media (prefers-reduced-motion: reduce){.widget,.widget--placeholder,.widget--focus,.widget__body--reveal,.skeleton-card{animation:none}.shimmer{animation:none;background:var(--surface-2)}.skeleton-bars i{animation:none}.spinner{animation-duration:1.4s}.react-grid-item,.react-grid-item.cssTransforms,.react-grid-item.react-grid-placeholder,.chat-drawer,.sidebar-drawer{transition:none}.drawer-scrim{animation:none}.widget-refresh-indicator__icon{animation:none;opacity:1}.chart-body--rendering{animation:none}}@media (hover: none),(max-width: 1024px){.widget__action,.widget__remove,.dash-menu__delete{opacity:1}}@media (min-width: 769px) and (max-width: 1024px){:root{--chat-w: 300px}.header__meta{display:none}.kpi{padding:var(--s-sm)}.kpi__value{font-size:var(--fs-28)}.kpi--with-trend{flex-direction:column;align-items:stretch;gap:var(--s-xxs)}.kpi--with-trend .kpi__sparkline{width:100%;height:26px}}@media (max-width: 768px){.app{grid-template-columns:1fr;grid-template-areas:"header" "canvas"}.header{padding:0 var(--s-md);gap:var(--s-xs)}.header__meta,.header__spacer,.header__brand span:not(.header__mark){display:none}.dash-picker__btn{max-width:40vw;min-height:40px}.dash-btn{min-height:40px;padding:6px 10px}.dash-btn--layout,.layout-switch,.dashbar__sep,.dashbar__app,.dashbar__updated{display:none}.canvas{--canvas-pad: var(--s-md)}.dashbar{padding-left:0;padding-right:0}.mstack{display:flex;flex-direction:column;gap:var(--s-md)}.mstack__item--kpi{min-height:128px}.mstack__item--chart,.mstack__item--placeholder{height:280px}.mstack__item--table{height:360px}.mstack__item--markdown{height:auto}.chat-fab{position:fixed;right:var(--s-md);bottom:calc(var(--s-md) + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:var(--r-pill);background:var(--primary);color:var(--on-primary);border:none;box-shadow:0 4px 16px #0003;z-index:200;display:flex;align-items:center;justify-content:center}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:205;animation:fade-in .18s ease both}.chat-drawer{position:fixed;left:0;right:0;bottom:0;height:80vh;max-height:80vh;background:var(--surface-1);border-top:1px solid var(--hairline-strong);border-radius:var(--r-xl) var(--r-xl) 0 0;transform:translateY(100%);transition:transform .24s cubic-bezier(.22,1,.36,1);z-index:210;display:flex;flex-direction:column;box-shadow:0 -8px 30px #0000002e}.chat-drawer--open{transform:translateY(0)}.chat-drawer .chat{border-left:none;height:100%;min-height:0}.chat-drawer__close{position:absolute;top:8px;right:8px;width:40px;height:40px;z-index:1;background:transparent;border:none;color:var(--ink-subtle);font-size:var(--fs-22);line-height:1;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center}.chat-drawer__close:hover{color:var(--ink);background:var(--surface-3)}.chat__composer{padding-bottom:calc(var(--s-sm) + env(safe-area-inset-bottom))}.chat__input{font-size:var(--fs-16)}.expand-modal{width:96vw;height:90vh}.expand-modal__close{width:40px;height:40px;justify-content:center}.header__menu-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border:none;background:transparent;color:var(--ink-muted);border-radius:var(--r-sm)}.header__menu-btn:hover{background:var(--surface-3);color:var(--ink)}.sidebar-drawer{position:fixed;top:0;left:0;bottom:0;width:min(84vw,300px);background:var(--surface-1);border-right:1px solid var(--hairline-strong);transform:translate(-100%);transition:transform .24s cubic-bezier(.22,1,.36,1);z-index:210;display:flex;flex-direction:column;box-shadow:8px 0 30px #0000002e}.sidebar-drawer--open{transform:translate(0)}.sidebar-drawer .sidebar{flex:1;min-height:0;width:100%;border-right:none}.sidebar-drawer__close{position:absolute;top:8px;right:8px;width:40px;height:40px;z-index:1;background:transparent;border:none;color:var(--ink-subtle);font-size:var(--fs-22);line-height:1;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center}.sidebar-drawer__close:hover{color:var(--ink);background:var(--surface-3)}}.mydash{grid-area:canvas;overflow:auto;padding:var(--s-lg)}.mydash__header{margin-bottom:var(--s-lg)}.mydash__title{margin:0 0 var(--s-xxs);font-family:var(--font-display);font-weight:600;font-size:var(--fs-26);color:var(--ink)}.mydash__subtitle{margin:0;font-size:var(--fs-14);color:var(--ink-subtle)}.mydash__toolbar{display:flex;align-items:center;gap:var(--s-xs);flex-wrap:wrap;margin-bottom:var(--s-lg);padding-bottom:var(--s-md);border-bottom:1px solid var(--hairline)}.mydash__toolbar>.mydash__count{margin-left:var(--s-xxs)}.mydash__section-label{display:flex;align-items:center;gap:var(--s-xs);font-family:var(--font-display);font-weight:600;font-size:var(--fs-14);color:var(--ink)}.mydash__count{font-family:var(--font-mono);font-size:var(--fs-11);color:var(--ink-tertiary);background:var(--surface-3);border-radius:var(--r-pill);padding:2px 8px}.mydash__actions{display:flex;align-items:center;gap:var(--s-xs);margin-left:auto;flex-wrap:wrap}.mydash__actions .dash-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px}.mydash__save{min-width:0}.mydash__toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:2px}.mydash__toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-muted);font-family:var(--font-text);font-weight:500;font-size:var(--fs-13);transition:background .12s ease,color .12s ease}.mydash__toggle-btn:hover{color:var(--ink)}.mydash__toggle-btn--active{background:var(--surface-1);color:var(--primary-focus);box-shadow:0 1px 3px #00000014}.mydash__toggle-btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.mydash__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--s-md)}.mydash-card{display:flex;flex-direction:column;gap:var(--s-sm);background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a;padding:var(--s-md);cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.mydash-card:hover{border-color:var(--hairline-strong);box-shadow:0 4px 16px #0000001a;transform:translateY(-1px)}.mydash-card--current{border-color:color-mix(in srgb,var(--primary) 55%,var(--hairline))}.mydash-card--current:hover{border-color:var(--primary)}.mydash-card__head{display:flex;align-items:flex-start;gap:var(--s-xs)}.mydash-card__title{flex:1;min-width:0;font-family:var(--font-display);font-weight:600;font-size:var(--fs-15);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mydash-card__current{flex:none;font-family:var(--font-mono);font-size:var(--fs-10);font-weight:600;text-transform:uppercase;color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);border-radius:var(--r-pill);padding:2px 8px}.mydash-card__meta{display:flex;align-items:center;gap:var(--s-xs)}.mydash-card__widgets{font-size:var(--fs-13);color:var(--ink-subtle)}.mydash-card__owner{min-width:0;max-width:16ch;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-13);color:var(--ink-muted)}.mydash-card__updated{font-size:var(--fs-12);color:var(--ink-tertiary);white-space:nowrap}.mydash-card__owner+.mydash-card__updated:before{content:"·";margin-right:var(--s-xs);color:var(--ink-tertiary)}.mydash-card__meta .mydash-card__tag{margin-left:auto}.mydash-card__tag{min-width:0;max-width:14ch;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--font-display);font-size:var(--fs-11);font-weight:600;color:var(--ink-muted);background:var(--surface-3);border-radius:var(--r-pill);padding:1px 8px}.mydash-card__actions{display:flex;align-items:center;gap:var(--s-xs);margin-top:auto}.mydash-card__open{display:inline-flex;align-items:center;gap:6px;flex:1;justify-content:center;min-height:34px}.mydash-card__delete{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);color:var(--ink-tertiary);transition:background .12s ease,color .12s ease,border-color .12s ease}.mydash-card__delete:hover{background:var(--surface-3);color:var(--danger);border-color:var(--hairline-tertiary)}.mydash-card__delete:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent)}.mydash__table-wrap{overflow-x:auto;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a}.mydash-table{width:100%;border-collapse:collapse;font-size:var(--fs-14)}.mydash-table th{text-align:left;padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline);font-family:var(--font-display);font-weight:600;font-size:var(--fs-12);text-transform:uppercase;color:var(--ink-tertiary);white-space:nowrap}.mydash-table td{padding:var(--s-sm) var(--s-md);border-bottom:1px solid var(--hairline);color:var(--ink-muted);vertical-align:middle}.mydash-table__row{cursor:pointer;transition:background .12s ease}.mydash-table__row:hover{background:var(--surface-2)}.mydash-table__row:last-child td{border-bottom:none}.mydash-table__row--current{background:color-mix(in srgb,var(--primary) 6%,transparent)}.mydash-table__row--current:hover{background:color-mix(in srgb,var(--primary) 10%,transparent)}.mydash-table__name{font-weight:500;color:var(--ink);margin-right:var(--s-xs)}.mydash-table__num{font-family:var(--font-mono);font-size:var(--fs-13);text-align:right;white-space:nowrap}.mydash-table th.mydash-table__num,.mydash-table th.mydash-table__actions-col{text-align:right}.mydash-table__muted{color:var(--ink-tertiary)}.mydash-table__app{color:var(--ink-muted)}.mydash-table__actions-col{text-align:right;width:1%;white-space:nowrap}.mydash-table__actions{display:inline-flex;align-items:center;gap:var(--s-xs);justify-content:flex-end}.mydash-table__owner{color:var(--ink-muted)}.mydash-table__updated{color:var(--ink-tertiary);font-size:var(--fs-13);white-space:nowrap}.mydash-table__empty{text-align:center;color:var(--ink-tertiary);padding:var(--s-lg) var(--s-md)}.mydash-table__sort{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:0;margin:0;cursor:pointer;font:inherit;text-transform:inherit;color:inherit}.mydash-table__sort:hover{color:var(--ink-muted)}.mydash-table__sort--active{color:var(--ink)}.mydash-table__sort svg{color:var(--primary)}.mydash__controls{display:flex;align-items:center;gap:var(--s-sm);flex-wrap:wrap;margin-bottom:var(--s-md)}.mydash__filter{display:flex;align-items:center;gap:var(--s-xs);padding:0 var(--s-sm);background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-md, 8px);flex:1;min-width:200px;max-width:360px}.mydash__filter-icon{color:var(--ink-tertiary);flex:none}.mydash__filter-input{flex:1;border:none;background:none;outline:none;padding:var(--s-xs) 0;font:inherit;font-size:var(--fs-14);color:var(--ink)}.mydash__filter-input::placeholder{color:var(--ink-tertiary)}.mydash__sort{display:flex;align-items:center;gap:var(--s-xs);flex:none}.mydash__sort-label{font-size:var(--fs-12);color:var(--ink-tertiary);text-transform:uppercase}.mydash__sort-select{border:1px solid var(--hairline);background:var(--surface-1);border-radius:var(--r-md, 8px);padding:var(--s-xs) var(--s-sm);font:inherit;font-size:var(--fs-14);color:var(--ink);cursor:pointer}.mydash__sort-dir{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--hairline);background:var(--surface-1);border-radius:var(--r-md, 8px);color:var(--ink-muted);cursor:pointer}.mydash__sort-dir:hover{color:var(--primary);border-color:var(--primary)}.mydash__no-match{padding:var(--s-lg) var(--s-md);text-align:center;color:var(--ink-tertiary)}.mydash__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--s-xs);padding:var(--s-xl) var(--s-lg);color:var(--ink-subtle)}.mydash__empty svg{color:var(--ink-tertiary);margin-bottom:var(--s-xs)}.mydash__empty h2{margin:0;font-family:var(--font-display);font-weight:600;font-size:var(--fs-18);color:var(--ink-muted)}.mydash__empty p{margin:0 0 var(--s-sm);font-size:var(--fs-14)}.mydash__empty .dash-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px}@media (max-width: 768px){.mydash{padding:var(--s-md)}.mydash__actions{margin-left:0;width:100%}.mydash__save{flex:1}.mydash__grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}.filterbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-xs);position:sticky;top:calc(-1 * var(--canvas-pad));z-index:30;margin:0 calc(-1 * var(--canvas-pad));padding:var(--s-xs) calc(var(--canvas-pad) + var(--s-md));border-bottom:1px solid var(--hairline);background:var(--surface-2);box-shadow:0 6px 12px -10px #0000004d}.filterbar__label{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);margin-right:var(--s-xxs)}.filter-chip{display:inline-flex;align-items:center;background:color-mix(in srgb,var(--primary) 8%,var(--surface-1));border:1px solid color-mix(in srgb,var(--primary) 32%,var(--hairline));border-radius:var(--r-pill);overflow:hidden}.filter-chip__body{background:transparent;border:none;padding:3px 4px 3px 10px;font-size:var(--fs-12);font-weight:500;color:var(--ink-muted);cursor:pointer;white-space:nowrap}.filter-chip__body:hover{color:var(--ink)}.filter-chip__x{display:inline-flex;align-items:center;background:transparent;border:none;padding:3px 7px 3px 3px;color:var(--ink-tertiary);cursor:pointer}.filter-chip__x:hover:not(:disabled){color:var(--danger)}.filter-chip__x:disabled{opacity:.4;cursor:default}.filter-chip--cross{background:color-mix(in srgb,var(--primary) 16%,var(--surface-1));border-color:color-mix(in srgb,var(--primary) 55%,var(--hairline))}.filter-chip__body--static{display:inline-flex;align-items:center;gap:5px;cursor:default;color:color-mix(in srgb,var(--primary) 75%,var(--ink))}.filter-chip__body--static:hover{color:color-mix(in srgb,var(--primary) 75%,var(--ink))}.filterbar__status{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-12);color:var(--ink-subtle);font-variant-numeric:tabular-nums}.filterbar__copy{margin-left:auto;display:inline-flex;align-items:center;gap:5px;background:transparent;border:none;font-size:var(--fs-12);color:var(--primary);cursor:pointer;padding:3px 6px;border-radius:var(--r-sm)}.filterbar__copy:hover{background:var(--surface-3)}.filterbar__clear{background:transparent;border:none;font-size:var(--fs-12);color:var(--ink-subtle);cursor:pointer;padding:3px 6px;border-radius:var(--r-sm)}.filterbar__clear:hover:not(:disabled){color:var(--ink);background:var(--surface-3)}.filterbar__clear:disabled{opacity:.45;cursor:default}.fpanel{grid-area:filters;min-width:0;overflow:hidden;display:flex;flex-direction:column;background:var(--surface-1);border-right:1px solid var(--hairline)}.fpanel__head{flex:none;display:flex;align-items:center;gap:var(--s-xxs);padding:var(--s-sm) var(--s-md) var(--s-xs)}.fpanel__title{flex:1;margin:0;font-size:var(--fs-15);font-weight:680;color:var(--ink)}.fpanel__icon{display:inline-grid;place-items:center;width:28px;height:28px;border:none;background:transparent;cursor:pointer;color:var(--ink-subtle);border-radius:var(--r-sm)}.fpanel__icon:hover{background:var(--surface-3);color:var(--ink)}.fpanel__add{flex:none;display:flex;align-items:center;gap:7px;margin:0 var(--s-md) var(--s-xs);padding:8px 10px;font-size:var(--fs-13);font-weight:640;font-family:inherit;color:var(--primary-focus);cursor:pointer;border:1px dashed color-mix(in srgb,var(--primary) 45%,var(--hairline));border-radius:var(--r-md);background:color-mix(in srgb,var(--primary) 5%,var(--surface-1))}.fpanel__add:hover{background:color-mix(in srgb,var(--primary) 9%,var(--surface-1))}.fpanel__add:disabled{opacity:.5;cursor:default}.fpanel__body{flex:1;min-height:0;overflow-y:auto;padding:var(--s-xs) var(--s-md) var(--s-md);display:flex;flex-direction:column;gap:var(--s-md)}.fpanel__empty{font-size:var(--fs-13);color:var(--ink-subtle);line-height:1.5}.fpanel-row{position:relative;display:flex;flex-direction:column;gap:5px}.fpanel-row__label{display:flex;align-items:center;gap:6px;font-size:var(--fs-12);font-weight:620;color:var(--ink-muted)}.fpanel-row__remove{margin-left:auto;display:inline-flex;background:transparent;border:none;color:var(--ink-tertiary);cursor:pointer;padding:2px 4px;border-radius:var(--r-sm)}.fpanel-row__remove:hover{color:var(--danger);background:var(--surface-3)}.fpanel-row__drop{display:flex;align-items:center;gap:8px;width:100%;text-align:left;cursor:pointer;font-family:inherit;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-md);padding:8px 10px;font-size:var(--fs-13);color:var(--ink)}.fpanel-row__drop:hover{border-color:var(--hairline-tertiary)}.fpanel-row__drop[data-set=true]{border-color:color-mix(in srgb,var(--primary) 40%,var(--hairline));background:color-mix(in srgb,var(--primary) 5%,var(--surface-1))}.fpanel-row__val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fpanel-row__drop[data-set=false] .fpanel-row__val{color:var(--ink-tertiary)}.fpanel-row__chev{flex:none;color:var(--ink-tertiary);transition:transform .15s ease}.fpanel-row__drop[aria-expanded=true] .fpanel-row__chev{transform:rotate(180deg)}.fpanel-row__reach{display:flex}.fpanel-row__reachcount{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-10);font-weight:600;color:var(--ink-subtle);cursor:default;outline:none}.fpanel-row__reachcount:focus-visible{color:var(--primary)}.fpanel-row__reachpop{position:fixed;z-index:1100;width:260px;padding:9px 10px;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);box-shadow:0 6px 20px #00000029}.fpanel-reach{margin-top:10px}.fpanel-reach__head{font-size:var(--fs-10);font-weight:700;text-transform:uppercase;color:var(--ink-subtle);margin-bottom:6px}.fpanel-reach__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;max-height:196px;overflow-y:auto}.fpanel-reach__item{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);color:var(--ink)}.fpanel-reach__dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--ink-tertiary)}.fpanel-reach__item--applied .fpanel-reach__dot{background:var(--primary)}.fpanel-reach__item--noop,.fpanel-reach__item--out{color:var(--ink-tertiary)}.fpanel-reach__item--noop .fpanel-reach__dot,.fpanel-reach__item--out .fpanel-reach__dot{background:transparent;border:1px solid var(--hairline-strong)}.fpanel-reach__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fpanel-reach__tag{flex:none;font-size:var(--fs-10);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);background:var(--surface-3);border-radius:var(--r-sm);padding:1px 5px}.fpanel-reach__empty{font-size:var(--fs-12);color:var(--ink-tertiary);margin:0}.widget-wrap,.mstack__item{transition:opacity .15s ease,filter .15s ease}.is-fdim{opacity:.3;filter:saturate(.55)}.is-fhl .widget{box-shadow:0 0 0 2px var(--primary)}.fpanel__viewer-note{flex:none;display:flex;align-items:center;gap:var(--s-xs);margin:0;padding:var(--s-sm) var(--s-md);border-top:1px solid var(--hairline);font-size:var(--fs-11-5);line-height:1.4;color:var(--ink-subtle)}.fpanel__viewer-note svg{flex:none;color:var(--primary)}.fpanel__foot{flex:none;display:flex;align-items:center;gap:var(--s-sm);padding:var(--s-sm) var(--s-md);border-top:1px solid var(--hairline)}.fpanel__hint{flex:1;font-size:var(--fs-11);color:var(--ink-subtle)}.fpanel__clear{border:none;background:transparent;color:var(--ink-subtle);font-size:var(--fs-12-5);font-weight:600;cursor:pointer;font-family:inherit;padding:4px}.fpanel__clear:hover:not(:disabled){color:var(--danger)}.fpanel__clear:disabled{opacity:.45;cursor:default}.fpanel-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:240}.fpanel-pop{position:fixed;z-index:250;width:280px;max-width:calc(100vw - 24px);max-height:min(70vh,460px);overflow-y:auto;background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-lg);box-shadow:0 18px 44px -16px #1a1a2e66;padding:var(--s-sm);animation:fade-in .12s ease both}.fpanel-pop__title{margin:0 0 var(--s-xs);font-size:var(--fs-13);font-weight:700;color:var(--ink);display:flex;align-items:center;gap:6px}.dashbar__filter{position:relative;flex:none;display:inline-grid;place-items:center;width:30px;height:30px;border:1px solid var(--hairline);background:var(--surface-1);border-radius:var(--r-md);cursor:pointer;color:var(--ink-muted)}.dashbar__filter:hover{border-color:var(--hairline-strong);color:var(--ink)}.dashbar__filter--active{color:var(--primary-focus);border-color:color-mix(in srgb,var(--primary) 40%,var(--hairline));background:color-mix(in srgb,var(--primary) 6%,var(--surface-1))}.dashbar__filter-badge{position:absolute;top:-5px;right:-5px;min-width:15px;height:15px;padding:0 3px;display:grid;place-items:center;font-size:var(--fs-9);font-weight:700;line-height:1;color:var(--on-primary);background:var(--primary);border-radius:var(--r-pill)}@media (max-width: 768px){.app--filters-open{--col-filters: 0px}.fpanel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:220;border-right:none;box-shadow:0 0 48px #00000047}}.filter-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;justify-content:flex-end;z-index:200;animation:fade-in .18s ease both}.filter-drawer{width:min(92vw,360px);height:100%;background:var(--surface-1);border-left:1px solid var(--hairline-strong);box-shadow:-16px 0 48px #00000038;display:flex;flex-direction:column;animation:drawer-in .22s cubic-bezier(.22,1,.36,1) both}@keyframes drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.filter-drawer__body{flex:1;min-height:0;overflow-y:auto;padding:var(--s-md);display:flex;flex-direction:column;gap:var(--s-lg)}.filter-sec{display:flex;flex-direction:column;gap:var(--s-xs)}.filter-sec__title{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle)}.filter-row{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2);padding:var(--s-sm)}.filter-row__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s-xs)}.filter-row__name{font-size:var(--fs-13);font-weight:600;color:var(--ink)}.filter-row__remove{display:inline-flex;background:transparent;border:none;color:var(--ink-tertiary);cursor:pointer;padding:2px 4px;border-radius:var(--r-sm)}.filter-row__remove:hover{color:var(--danger);background:var(--surface-3)}.filter-row__values{display:flex;flex-direction:column;gap:6px}.filter-radio,.filter-check{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--ink-muted);cursor:pointer}.filter-radio input,.filter-check input{accent-color:var(--primary);cursor:pointer}.filter-row__name{flex:1 1 auto}.filter-row__req{color:var(--primary);font-weight:700}.filter-row__reqtoggle{display:inline-flex;align-items:center;gap:5px;margin-right:var(--s-xs);font-size:var(--fs-11);color:var(--ink-tertiary);cursor:pointer}.filter-row__reqtoggle input{accent-color:var(--primary);cursor:pointer}.filter-row__reqhint{margin:6px 0 0;font-size:var(--fs-11);color:var(--danger)}.filter-row__range{display:flex;align-items:center;gap:8px}.filter-range__input{flex:1 1 0;min-width:0;font-size:var(--fs-13);color:var(--ink);background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:6px 8px}.filter-range__input:focus{outline:none;border-color:var(--primary)}.filter-range__sep{font-size:var(--fs-12);color:var(--ink-subtle);flex:none}.filter-row__scope{display:flex;flex-direction:column;gap:6px;margin-top:var(--s-xs);padding-top:var(--s-xs);border-top:1px dashed var(--hairline)}.filter-row__scope-list{display:flex;flex-direction:column;gap:6px;margin-left:var(--s-md)}.filter-drawer__foot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);padding:var(--s-sm) var(--s-md);border-top:1px solid var(--hairline)}.filter-drawer__hint{font-size:var(--fs-12);color:var(--ink-subtle)}.lib__pill,.filter-row__name{display:inline-flex;align-items:center;gap:4px}.filter-tip{position:relative;display:inline-flex;align-items:center;color:var(--ink-tertiary);cursor:help;outline:none}.filter-tip:hover,.filter-tip:focus-visible{color:var(--primary)}.filter-tip__bubble{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:10;width:max-content;max-width:220px;padding:6px 9px;font-size:var(--fs-11);font-weight:400;line-height:1.4;color:var(--ink);background:var(--surface-1);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);box-shadow:0 6px 20px #00000029}.filter-tip:hover .filter-tip__bubble,.filter-tip:focus-visible .filter-tip__bubble{display:block}.filter-row__numeric{display:flex;flex-direction:column;gap:8px}.filter-num__mode{align-self:flex-start;font-size:var(--fs-12);color:var(--ink);background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:5px 8px;cursor:pointer}.filter-num__mode:focus{outline:none;border-color:var(--primary)}.filter-enum__controls{display:flex;align-items:center;gap:6px;margin-bottom:8px}.filter-enum__search{flex:1 1 auto;display:flex;align-items:center;gap:5px;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:4px 7px;color:var(--ink-tertiary)}.filter-enum__search input{flex:1 1 0;min-width:0;border:none;background:transparent;font-size:var(--fs-12);color:var(--ink);outline:none}.filter-enum__sort{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-11);color:var(--ink-subtle);background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:4px 7px;cursor:pointer}.filter-enum__sort:hover{color:var(--ink);border-color:var(--hairline-strong)}.filter-enum__empty{font-size:var(--fs-12);color:var(--ink-tertiary);padding:2px 0}.filter-row__note{margin:8px 0 0;font-size:var(--fs-11);line-height:1.4;color:var(--ink-subtle);padding:6px 8px;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm)}.filter-check__tag{margin-left:6px;font-size:var(--fs-10);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);background:var(--surface-3);border-radius:var(--r-sm);padding:1px 5px}.filter-row__ident{display:flex;flex-direction:column;gap:8px}.filter-ident__selected{display:flex;align-items:flex-start;gap:6px}.filter-ident__chips{display:flex;flex-wrap:wrap;gap:5px;flex:1 1 auto;min-width:0}.filter-ident__chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;font-size:var(--fs-11);color:var(--ink-muted);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:2px 6px;cursor:pointer}.filter-ident__chip:hover{border-color:var(--hairline-strong)}.filter-ident__chip:focus-visible{outline:2px solid var(--primary-focus);outline-offset:1px}.filter-ident__chip svg{flex:none;color:var(--ink-tertiary)}.filter-ident__chip:hover svg{color:var(--danger)}.filter-ident__chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-ident__clear{flex:none;font-size:var(--fs-11);color:var(--ink-subtle);background:none;border:none;padding:2px;cursor:pointer}.filter-ident__clear:hover{color:var(--danger)}.filter-row__ident .filter-enum__search:focus-within{border-color:var(--primary-tint-border);background:var(--primary-tint)}.filter-ident__results{max-height:240px;min-height:120px;overflow-y:auto}.filter-ident__loading{display:flex;align-items:center;justify-content:center;gap:6px;min-height:96px;font-size:var(--fs-12);color:var(--ink-subtle)}.filter-ident__loading svg{color:var(--ink-subtle)}.filter-typeahead__more{margin:0;font-size:var(--fs-11);color:var(--ink-subtle);border-top:1px solid var(--hairline);padding-top:var(--s-xxs);margin-top:var(--s-xxs)}.ds-page{grid-area:canvas;overflow-y:auto;padding:var(--s-lg) var(--s-xl);background:var(--canvas)}.ds-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-md);margin-bottom:var(--s-lg)}.ds-head__lead{display:flex;flex-direction:column}.ds-head__titlerow{display:flex;gap:var(--s-sm);align-items:center}.ds-head__icon{color:var(--primary);flex:none}.ds-head__title{font-family:var(--font-display);font-size:var(--fs-22);line-height:28px;font-weight:600;color:var(--ink)}.ds-head__sub{font-size:var(--fs-13);color:var(--ink-subtle);max-width:64ch;margin-top:2px;margin-left:calc(20px + var(--s-sm))}.ds-head__count{font-size:var(--fs-12);color:var(--ink-subtle);font-family:var(--font-mono);white-space:nowrap}.ds-empty{color:var(--ink-subtle);font-size:var(--fs-14)}.ds-empty code{font-family:var(--font-mono);background:var(--surface-3);padding:1px 6px;border-radius:var(--r-xs)}.ds-tab-content{display:flex;flex-direction:column}.ds-section:not([hidden]){display:flex;flex-direction:column;gap:var(--s-sm)}.ds-section__hint{font-size:var(--fs-12);color:var(--ink-subtle);max-width:64ch}.ds-section__empty{color:var(--ink-subtle);font-size:var(--fs-14)}.set-cards{display:flex;flex-direction:column;gap:var(--s-md);max-width:760px}.set-card{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:var(--s-md) var(--s-lg)}.set-card__head{display:flex;gap:var(--s-sm);align-items:flex-start;margin-bottom:var(--s-md)}.set-card__icon{color:var(--primary);margin-top:2px;flex:none}.set-card__title{font-size:var(--fs-15);font-weight:600;color:var(--ink)}.set-card__sub{font-size:var(--fs-12);color:var(--ink-subtle);margin-top:2px;max-width:60ch}.set-note{font-size:var(--fs-12);color:var(--ink-subtle);margin-top:var(--s-sm);max-width:60ch}.set-color__row{display:flex;align-items:center;gap:var(--s-sm)}.set-color__swatch{width:40px;height:32px;padding:0;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:none;cursor:pointer}.set-color__hex{width:110px;font-family:var(--font-mono);font-size:var(--fs-13);padding:6px 8px;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);color:var(--ink);background:var(--surface-1)}.set-color__hex:focus{outline:none;border-color:var(--primary)}.set-color__presets{display:flex;gap:var(--s-xs);margin-top:var(--s-sm)}.set-color__preset{width:24px;height:24px;border-radius:var(--r-pill);border:2px solid var(--hairline);cursor:pointer}.set-color__preset--on{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface-1) inset}.set-budget__row{display:flex;align-items:center;gap:var(--s-xs)}.set-budget__prefix,.set-budget__suffix{font-size:var(--fs-13);color:var(--ink-subtle)}.set-budget__input{width:110px;font-family:var(--font-mono);font-size:var(--fs-13);padding:6px 8px;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);color:var(--ink);background:var(--surface-1)}.set-budget__input:focus{outline:none;border-color:var(--primary)}.set-budget__error{font-size:var(--fs-12);color:var(--danger);margin-top:var(--s-xs)}.set-btn{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-13);color:var(--ink-muted);padding:6px 10px;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:var(--surface-1);cursor:pointer}.set-btn:hover:not(:disabled){background:var(--surface-2)}.set-btn:disabled{opacity:.5;cursor:default}.set-radio{display:flex;gap:var(--s-sm);flex-wrap:wrap}.set-radio__opt{flex:1 1 200px;text-align:left;display:flex;flex-direction:column;gap:2px;padding:var(--s-sm) var(--s-md);border:1px solid var(--hairline-strong);border-radius:var(--r-md);background:var(--surface-1);cursor:pointer}.set-radio__opt:hover{border-color:var(--hairline-tertiary)}.set-radio__opt--on{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}.set-radio__label{font-size:var(--fs-14);font-weight:500;color:var(--ink)}.set-radio__hint{font-size:var(--fs-12);color:var(--ink-subtle)}:root[data-density=compact]{--s-md: 12px;--s-lg: 18px;--s-xl: 24px}.ds-table-wrap{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);overflow:hidden}.ds-table{width:100%;border-collapse:collapse;font-size:var(--fs-13)}.ds-table thead th{text-align:left;font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);padding:var(--s-xs) var(--s-md);border-bottom:1px solid var(--hairline);background:var(--surface-2)}.ds-table th.ds-num,.ds-table td.ds-num{text-align:right;font-variant-numeric:tabular-nums}.ds-table tbody tr{cursor:pointer;transition:background .1s ease}.ds-table tbody tr:hover{background:var(--surface-2)}.ds-table td{padding:10px var(--s-md);border-bottom:1px solid var(--hairline);color:var(--ink-muted);vertical-align:middle}.ds-table tbody tr:last-child td{border-bottom:none}.ds-table__name{font-family:var(--font-mono);font-size:var(--fs-12-5);color:var(--ink);font-weight:500}.ds-table__name-text{display:block}.ds-prov{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:5px;font-family:var(--font-mono)}.ds-prov__tag{font-size:var(--fs-10-5);line-height:1.4;font-weight:500;color:var(--ink-muted);background:var(--surface-3);border:1px solid var(--hairline);border-radius:var(--r-xs);padding:1px 6px;white-space:nowrap}.ds-prov__tag--table{color:var(--ink-subtle);background:none;border-color:transparent;padding-left:2px;padding-right:2px}.ds-prov__sep{font-size:var(--fs-9);color:var(--ink-tertiary)}.ds-table__note{color:var(--ink-subtle);max-width:42ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ds-flags{display:inline-flex;gap:5px;flex-wrap:wrap}.ds-badge{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-10-5);font-weight:600;padding:2px 7px;border-radius:var(--r-pill);white-space:nowrap}.ds-badge--scoped{background:color-mix(in srgb,var(--primary) 12%,var(--surface-1));color:var(--primary-focus)}.ds-badge--pii{background:color-mix(in srgb,var(--danger) 12%,var(--surface-1));color:var(--danger)}.ds-badge--private{background:color-mix(in srgb,var(--ink) 8%,var(--surface-1));color:var(--ink-muted)}.ds-badge--pending{background:color-mix(in srgb,var(--primary) 10%,var(--surface-1));color:var(--primary-focus)}.ds-status-action{min-height:24px;padding:2px 7px;font-size:var(--fs-12)}.ds-table tbody tr.ds-group-row{cursor:default;background:var(--surface-warm);box-shadow:inset 3px 0 0 0 var(--primary)}.ds-table tbody tr.ds-group-row:hover{background:var(--surface-warm)}.ds-table tbody tr.ds-group-row td{padding:var(--s-xs) var(--s-md)}.ds-table--grouped tbody tr:not(.ds-group-row) td:first-child{padding-left:calc(var(--s-md) + 14px)}.ds-table--grouped tbody tr:not(.ds-group-row){box-shadow:inset 3px 0 0 0 var(--primary-tint-border)}.ds-group-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);flex-wrap:wrap}.ds-group-head__id{display:flex;align-items:center;gap:var(--s-sm);flex-wrap:wrap;min-width:0}.ds-group-head__title{display:inline-flex;align-items:center;gap:5px;color:var(--ink)}.ds-group-head__schema{font-family:var(--font-mono);font-size:var(--fs-12-5);font-weight:600;color:var(--ink)}.ds-group-head__catalog{color:var(--ink-subtle);font-weight:500}.ds-group-head__meta{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);color:var(--ink-subtle);white-space:nowrap}.ds-group-head__meta--count{font-family:var(--font-mono);color:var(--ink-tertiary)}.ds-schema__actions{display:flex;align-items:center;gap:var(--s-xs);flex:none;flex-wrap:wrap}.ds-schema__locked{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);color:var(--ink-subtle);white-space:nowrap}.ds-schema__owner-edit{display:inline-flex;align-items:center;gap:var(--s-xs);flex:none}.ds-schema__owner-edit .ds-select{flex:none;width:auto;max-width:220px;text-overflow:ellipsis}.ds-icon-btn{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:none}.ds-type-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:thin;margin-bottom:var(--s-md);border-bottom:1px solid var(--hairline)}.ds-type-tab{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 12px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ink-muted);cursor:pointer;white-space:nowrap}.ds-type-tab:hover{color:var(--ink);background:var(--surface-2)}.ds-type-tab--active{color:var(--primary-focus);font-weight:600;border-bottom-color:var(--primary)}.ds-type-tab:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;border-radius:var(--r-sm)}.ds-type-tab__count{min-width:20px;padding:1px 6px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--ink-subtle);font:10.5px var(--font-mono);text-align:center}.ds-type-tab--active .ds-type-tab__count{background:color-mix(in srgb,var(--primary) 12%,var(--surface-1));color:var(--primary-focus)}.ds-error{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);padding:var(--s-sm);color:var(--danger);background:color-mix(in srgb,var(--danger) 7%,var(--surface-1));border:1px solid color-mix(in srgb,var(--danger) 24%,var(--hairline));border-radius:var(--r-md);font-size:var(--fs-13)}.token-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 180px;gap:var(--s-sm);margin-bottom:var(--s-md);max-width:720px}.token-table-wrap{overflow-x:auto}.token-table-wrap .ds-table{min-width:980px}.token-prefix{font:12px var(--font-mono);color:var(--ink-muted);white-space:nowrap}.token-status--active{color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-1))}.token-status--revoked{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface-1))}.token-status--expired{color:var(--ink-subtle);background:var(--surface-3)}.token-validation{margin:0;color:var(--danger);font-size:var(--fs-12)}.token-secret{width:min(92vw,620px)!important}.token-secret__warning{color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface-1));border:1px solid color-mix(in srgb,var(--danger) 24%,var(--hairline));border-radius:var(--r-md);padding:var(--s-sm)}.token-secret__value{display:block;padding:var(--s-md);overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);font:13px/1.6 var(--font-mono)}.token-details{display:flex;flex-direction:column;gap:var(--s-md)}.token-details>div{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-md);font-size:var(--fs-13)}.token-details>div>span:first-child{color:var(--ink-subtle)}.token-details strong{color:var(--ink);font-weight:500;text-align:right}.token-usage{display:flex;flex-direction:column;gap:6px}.token-usage__row{display:grid;grid-template-columns:auto minmax(120px,1fr) auto auto auto;align-items:center;gap:var(--s-xs);padding:var(--s-xs);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-sm);font-size:var(--fs-11)}.token-usage__row code{overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.token-usage__row time{color:var(--ink-subtle)}.token-usage__error{color:var(--danger)}@media (max-width: 760px){.token-toolbar{grid-template-columns:1fr}}.ds-drawer{width:min(94vw,460px)}.ds-input{width:100%;font-family:var(--font-text);font-size:var(--fs-13);color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);padding:8px 10px}.ds-input:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent);border-color:var(--primary)}.ds-textarea{resize:vertical;line-height:1.5}.ds-head__actions{display:flex;align-items:center;gap:var(--s-sm);flex:none}.ds-select{cursor:pointer;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.ds-select:disabled{opacity:.6;cursor:default}.ds-schema-filter{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s-sm);margin-bottom:var(--s-sm)}.ds-schema-filter__label{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-13);color:var(--ink-subtle);flex:none}.ds-schema-filter .ds-select{width:auto;max-width:260px}.ds-schema-filter__count{font-size:var(--fs-12);color:var(--ink-subtle);font-family:var(--font-mono);white-space:nowrap;margin-left:auto}.ds-onboard-block{font-size:var(--fs-12);line-height:1.45;color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface-2));border:1px solid color-mix(in srgb,var(--danger) 28%,transparent);border-radius:var(--r-sm);padding:var(--s-xs) var(--s-sm)}.ds-cols-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm)}.ds-cols{display:flex;flex-direction:column;gap:6px}.ds-col{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2);padding:var(--s-xs) var(--s-sm)}.ds-col__head{display:flex;align-items:center;gap:var(--s-xs)}.ds-col__name{font-family:var(--font-mono);font-size:var(--fs-12-5);color:var(--ink);font-weight:500}.ds-col__type{font-size:var(--fs-11);color:var(--ink-tertiary);font-family:var(--font-mono)}.ds-col__toggles{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm);margin-top:5px}.ds-col__enums{font-size:var(--fs-11);color:var(--ink-subtle)}.ds-col__ftype{gap:6px}.ds-col__ftype-label{font-size:var(--fs-12);color:var(--ink-subtle)}.ds-col__ftype-select{width:auto;min-width:108px;padding-top:3px;padding-bottom:3px;font-size:var(--fs-12)}.ds-foot{justify-content:space-between}.ds-btn--danger{color:var(--danger)}.ds-btn--danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 10%,var(--surface-2));border-color:var(--danger);color:var(--danger)}.users-badge--admin{background:color-mix(in srgb,var(--primary) 14%,var(--surface-1));color:var(--primary-focus);border:1px solid color-mix(in srgb,var(--primary) 30%,transparent)}.users-badge--member{background:var(--surface-3);color:var(--ink-subtle)}.users-source{border:1px solid transparent}.users-source--embed{background:color-mix(in srgb,var(--primary) 13%,var(--surface-1));color:var(--primary-focus);border-color:color-mix(in srgb,var(--primary) 28%,transparent)}.users-source--manual{background:var(--surface-3);color:var(--ink-subtle)}.users-source--seed{background:color-mix(in srgb,var(--ink) 7%,var(--surface-1));color:var(--ink-muted)}.users-source--demo{background:color-mix(in srgb,var(--ink) 5%,var(--surface-1));color:var(--ink-tertiary)}.users-row-btn{justify-content:center;margin-top:2px}.users-hint{font-size:var(--fs-12);color:var(--ink-subtle)}.users-perms{display:flex;flex-direction:column;gap:4px;margin-top:6px}.users-perm{display:flex;align-items:flex-start;gap:var(--s-sm);padding:var(--s-xs) var(--s-sm);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2);cursor:pointer}.users-perm:hover{border-color:color-mix(in srgb,var(--primary) 30%,var(--hairline))}.users-perm input{margin-top:2px;accent-color:var(--primary);cursor:pointer}.users-perm input:disabled{cursor:default}.users-perm__text{display:flex;flex-direction:column;gap:1px}.users-perm__label{display:flex;align-items:center;gap:var(--s-xs);font-size:var(--fs-13);color:var(--ink);font-weight:500}.users-perm__hint{font-size:var(--fs-11-5);color:var(--ink-subtle)}.users-perm__tag{font-size:var(--fs-10);text-transform:uppercase;padding:1px 5px;border-radius:var(--r-sm);background:var(--surface-3);color:var(--ink-tertiary);font-family:var(--font-mono);font-weight:500}.users-apps{max-height:280px;overflow-y:auto}.users-private-note{display:flex;align-items:center;gap:6px;padding:8px;font-size:var(--fs-12);color:var(--ink-muted);background:color-mix(in srgb,var(--primary) 7%,var(--surface-1));border:1px solid color-mix(in srgb,var(--primary) 20%,var(--hairline));border-radius:var(--r-sm)}.users-schema-list{display:flex;flex-direction:column;gap:var(--s-sm);margin-top:var(--s-xs)}.users-schema{padding:var(--s-sm);border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2)}.users-schema__head{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--s-xs)}.users-schema__head span{display:flex;align-items:center;gap:5px;font:600 12px var(--font-mono);color:var(--ink)}.users-schema__head small{color:var(--ink-subtle)}.users-schema__modes{display:flex;flex-wrap:wrap;gap:var(--s-sm);font-size:var(--fs-12);color:var(--ink-muted)}.users-schema__modes label{display:inline-flex;align-items:center;gap:4px}.users-schema__modes input,.users-schema__tables input{accent-color:var(--primary)}.users-schema__tables{margin:var(--s-xs) 0 0 var(--s-sm)}.users-dataset-subtitle{margin-top:var(--s-md)}@media (max-width: 760px){.ds-type-tab{min-height:44px}}.tu-demo-badge{font-size:var(--fs-10-5);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);background:var(--surface-3);border:1px solid var(--hairline-strong);border-radius:var(--r-pill);padding:2px 8px;white-space:nowrap;cursor:help}.tu-filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s-sm);margin-bottom:var(--s-md)}.tu-filter{display:flex;flex-direction:column;gap:3px;flex:1 1 150px;min-width:130px;max-width:220px}.tu-filter--inline{flex:0 0 auto;min-width:0;max-width:none}.tu-filter__label{font-size:var(--fs-10-5);font-weight:600;text-transform:uppercase;color:var(--ink-subtle)}.tu-filter__reset{flex:none;align-self:flex-end}.tu-group-tabs{margin-bottom:0;border-bottom:none;gap:0}.tu-group-tabs .ds-type-tab{min-height:28px;padding:4px 8px;font-size:var(--fs-12)}.tu-overview{display:flex;flex-direction:column;gap:var(--s-lg)}.tu-kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--s-md)}.tu-kpi{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:var(--s-md);display:flex;flex-direction:column;gap:4px}.tu-kpi__label{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle)}.tu-kpi__value{font-family:var(--font-display);font-size:var(--fs-24);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.tu-kpi__value--sm{font-size:var(--fs-19)}.tu-kpi__sub{font-size:var(--fs-12);color:var(--ink-subtle)}.tu-kpi__delta{font-size:var(--fs-11-5);color:var(--ink-subtle)}.tu-kpi__delta--flat{color:var(--ink-tertiary)}.tu-split-bar{display:flex;height:6px;border-radius:var(--r-pill);overflow:hidden;background:var(--surface-3);margin:2px 0}.tu-split-bar span{display:block;height:100%}.tu-panel{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:var(--s-md)}.tu-panel__title{font-size:var(--fs-13);font-weight:600;color:var(--ink);margin-bottom:var(--s-sm)}.tu-panel__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);margin-bottom:var(--s-sm)}.tu-panel__head .tu-panel__title{margin-bottom:0}.tu-budget-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(280px,1.6fr);gap:var(--s-md)}.tu-budget,.tu-insights{min-width:0}.tu-budget__amounts{font-size:var(--fs-20);color:var(--ink);margin-bottom:var(--s-xs)}.tu-budget__amounts strong{font-family:var(--font-display);font-weight:600}.tu-budget__amounts span{font-size:var(--fs-13);color:var(--ink-subtle)}.tu-budget__bar{height:8px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden;margin-bottom:var(--s-xs)}.tu-budget__fill{display:block;height:100%;border-radius:var(--r-pill);transition:width .3s ease}.tu-budget__fill--ok{background:var(--success)}.tu-budget__fill--warning{background:#d68a00}.tu-budget__fill--danger{background:var(--danger)}.tu-budget__meta{font-size:var(--fs-12);color:var(--ink-subtle)}.tu-insight-list{display:flex;flex-direction:column;gap:var(--s-xs);list-style:none;margin:0;padding:0}.tu-insight{display:flex;gap:var(--s-xs);align-items:flex-start;padding:var(--s-xs) var(--s-sm);border-radius:var(--r-md);border-left:3px solid var(--hairline-strong);background:var(--surface-2)}.tu-insight svg{flex:none;margin-top:2px}.tu-insight--warning{border-left-color:#d68a00}.tu-insight--warning svg{color:#d68a00}.tu-insight--info{border-left-color:var(--sql-fn)}.tu-insight--info svg{color:var(--sql-fn)}.tu-insight--positive{border-left-color:var(--success)}.tu-insight--positive svg{color:var(--success)}.tu-insight__title{font-size:var(--fs-13);font-weight:600;color:var(--ink)}.tu-insight__detail{font-size:var(--fs-12);color:var(--ink-muted);margin-top:1px}.tu-chart-row{display:grid;gap:var(--s-md)}.tu-chart-row--2{grid-template-columns:1fr 1fr}.tu-chart-row--3{grid-template-columns:1fr 1fr 1fr}.tu-log-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);margin-bottom:var(--s-sm);flex-wrap:wrap}.tu-search{display:flex;align-items:center;gap:6px;flex:1 1 320px;max-width:420px;color:var(--ink-subtle)}.tu-search .ds-input{flex:1}.tu-table-wrap{overflow-x:auto}.tu-table-wrap .ds-table{min-width:940px}.tu-sort-btn{display:inline-flex;align-items:center;gap:3px;background:none;border:none;padding:0;font:inherit;font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:inherit;cursor:pointer}.tu-sort-btn:hover{color:var(--ink)}.tu-status--success{color:var(--success);background:color-mix(in srgb,var(--success) 10%,var(--surface-1))}.tu-status--error{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface-1))}.tu-status--timeout{color:#d68a00;background:color-mix(in srgb,#d68a00 12%,var(--surface-1))}.tu-pager{display:flex;align-items:center;justify-content:space-between;gap:var(--s-md);margin-top:var(--s-sm);flex-wrap:wrap}.tu-pager__nav{display:flex;align-items:center;gap:var(--s-sm);font-size:var(--fs-12-5);color:var(--ink-subtle)}.tu-drawer__idrow{display:flex;align-items:center;gap:var(--s-xs);margin-top:var(--s-xs)}.tu-copy-btn{display:inline-flex;background:transparent;border:none;color:var(--ink-tertiary);cursor:pointer;padding:2px}.tu-copy-btn:hover{color:var(--ink)}.tu-mono{font-family:var(--font-mono);font-size:var(--fs-12)}.tu-rate-note{font-size:var(--fs-11-5);color:var(--ink-subtle);margin:var(--s-sm) 0 0}.tu-privacy-note{font-size:var(--fs-12);color:var(--ink-subtle);font-style:italic;margin-top:var(--s-sm)}@media (max-width: 900px){.tu-budget-row,.tu-chart-row--2,.tu-chart-row--3{grid-template-columns:1fr}}@media (max-width: 760px){.tu-filter{flex:1 1 100%;max-width:none}.ds-page.tu-page{padding:var(--s-md)}}.sqllab{grid-area:canvas;display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--canvas)}.sqllab__tabs{display:flex;align-items:stretch;gap:2px;padding:var(--s-xs) var(--s-sm) 0;background:var(--surface-2);border-bottom:1px solid var(--hairline);overflow-x:auto}.sqllab__tab{display:flex;align-items:center;gap:var(--s-xxs);padding-right:var(--s-xs);font-size:var(--fs-13);color:var(--ink-muted);background:var(--surface-3);border:1px solid var(--hairline);border-bottom:none;border-radius:var(--r-sm) var(--r-sm) 0 0;white-space:nowrap}.sqllab__tab--active{background:var(--surface-1);color:var(--ink);font-weight:500}.sqllab__tab-select{max-width:160px;overflow:hidden;text-overflow:ellipsis;padding:var(--s-xs) var(--s-sm);color:inherit;font:inherit;cursor:pointer;background:none;border:none}.sqllab__tab-select:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.sqllab__tab-close,.sqllab__tab-add{display:inline-flex;align-items:center;justify-content:center;color:var(--ink-subtle);background:none;border:none;border-radius:var(--r-xs);padding:2px}.sqllab__tab-close:hover{background:var(--surface-4);color:var(--ink)}.sqllab__tab-add{align-self:center;margin-left:var(--s-xxs);padding:var(--s-xs);color:var(--ink-subtle)}.sqllab__tab-add:hover{color:var(--primary)}.sqllab__body{flex:1;display:grid;grid-template-columns:260px 1fr;min-height:0}.sqllab__side{border-right:1px solid var(--hairline);background:var(--surface-1);overflow-y:auto;padding:var(--s-md);display:flex;flex-direction:column;gap:var(--s-md)}.sqllab__side-group{display:flex;flex-direction:column;gap:var(--s-xxs)}.sqllab__side-label{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--primary)}.sqllab__side-label-row{display:flex;align-items:center;justify-content:space-between}.sqllab__select{width:100%;font-size:var(--fs-13);color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-sm);padding:var(--s-xs) var(--s-sm)}.sqllab__select--inline{width:auto;padding:2px var(--s-xs)}.sqllab__icon-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--ink-subtle);background:none;border:none;padding:3px;border-radius:var(--r-xs)}.sqllab__icon-btn:hover{color:var(--primary);background:var(--surface-3)}.sqllab__schema{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-2);overflow:hidden}.sqllab__schema-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s-xs) var(--s-sm);border-bottom:1px solid var(--hairline);background:var(--surface-3)}.sqllab__schema-title{display:inline-flex;align-items:center;gap:var(--s-xxs);font-size:var(--fs-13);font-weight:600;color:var(--ink)}.sqllab__mini-btn,.sqllab__btn,.sqllab__run{font-size:var(--fs-12);font-family:var(--font-text);border-radius:var(--r-sm);cursor:pointer}.sqllab__mini-btn{padding:2px var(--s-xs);color:var(--primary);border:1px solid var(--hairline-strong);background:var(--surface-1)}.sqllab__mini-btn:hover{border-color:var(--primary)}.sqllab__schema-note{padding:var(--s-xs) var(--s-sm);font-size:var(--fs-12);color:var(--ink-subtle)}.sqllab__cols{max-height:280px;overflow-y:auto}.sqllab__col{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-sm);width:100%;padding:4px var(--s-sm);font-family:var(--font-mono);font-size:var(--fs-12);color:var(--ink-muted);text-align:left;background:none;border:none}.sqllab__col:hover{background:var(--surface-3);color:var(--ink)}.sqllab__col-type{color:var(--ink-tertiary);font-size:var(--fs-11);text-transform:uppercase}.sqllab__col-name{display:inline-flex;align-items:center;gap:var(--s-xxs);min-width:0;overflow:hidden;text-overflow:ellipsis}.sqllab__pii-badge,.sqllab__pii-dot{font-family:var(--font-text);font-size:var(--fs-9);font-weight:700;color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent);border-radius:var(--r-pill);padding:0 5px;flex:none}.sqllab__pii-badge{margin-left:var(--s-xxs)}.sqllab__mini-note{font-size:var(--fs-11);font-style:italic;color:var(--ink-subtle);white-space:nowrap}.sqllab__saved{max-height:280px;overflow-y:auto}.sqllab__saved-list{display:flex;flex-direction:column;gap:2px}.sqllab__saved-item{display:flex;align-items:center;gap:var(--s-xxs)}.sqllab__saved-open{flex:1;text-align:left;font-size:var(--fs-13);color:var(--ink-muted);padding:var(--s-xxs) var(--s-xs);border-radius:var(--r-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:none}.sqllab__saved-open:hover{background:var(--surface-3);color:var(--primary)}.sqllab__main{display:flex;flex-direction:column;min-width:0;min-height:0}.sqllab__editor{display:flex;flex-direction:column;border-bottom:1px solid var(--hairline);background:var(--surface-1)}.sqllab__editor-area{display:flex;height:200px;overflow:hidden}.sqllab__gutter{width:44px;flex:none;overflow:hidden;padding:var(--s-sm) 0;text-align:right;background:var(--surface-2);border-right:1px solid var(--hairline);color:var(--ink-tertiary);font-family:var(--font-mono);font-size:var(--fs-13);line-height:1.5;-webkit-user-select:none;user-select:none}.sqllab__gutter-line{padding-right:var(--s-xs)}.sqllab__textarea{flex:1;resize:none;border:none;outline:none;padding:var(--s-sm) var(--s-md);font-family:var(--font-mono);font-size:var(--fs-13);line-height:1.5;color:var(--ink);background:var(--surface-1);white-space:pre;overflow:auto}.sqllab__toolbar{display:flex;align-items:center;gap:var(--s-sm);padding:var(--s-xs) var(--s-md);background:var(--surface-2)}.sqllab__run{display:inline-flex;align-items:center;gap:var(--s-xxs);padding:var(--s-xs) var(--s-md);font-weight:600;color:var(--on-primary);background:var(--primary);border:none}.sqllab__run:hover:not(:disabled){background:var(--primary-hover)}.sqllab__run:disabled{opacity:.5;cursor:not-allowed}.sqllab__btn{display:inline-flex;align-items:center;gap:var(--s-xxs);padding:var(--s-xs) var(--s-sm);color:var(--ink-muted);background:var(--surface-1);border:1px solid var(--hairline-strong)}.sqllab__btn:hover{border-color:var(--primary);color:var(--primary)}.sqllab__limit{display:inline-flex;align-items:center;gap:var(--s-xxs);font-size:var(--fs-12);color:var(--ink-subtle)}.sqllab__toolbar-spacer{flex:1}.sqllab__spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sqllab__results{flex:1;display:flex;flex-direction:column;min-height:0}.sqllab__results-tabs{display:flex;gap:var(--s-md);padding:0 var(--s-md);border-bottom:1px solid var(--hairline);background:var(--surface-1)}.sqllab__rtab{padding:var(--s-sm) 0;font-size:var(--fs-12);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer}.sqllab__rtab--active{color:var(--primary);border-bottom-color:var(--primary)}.sqllab__results-body{flex:1;min-height:0;min-width:0;overflow:auto;background:var(--surface-1)}.sqllab__empty,.sqllab__placeholder{padding:var(--s-xl);color:var(--ink-subtle);font-size:var(--fs-14);text-align:center}.sqllab__placeholder{display:flex;flex-direction:column;gap:var(--s-sm);align-items:center;justify-content:center;height:100%;color:var(--ink-tertiary)}.sqllab__error{padding:var(--s-md) var(--s-lg);color:var(--danger);font-size:var(--fs-13)}.sqllab__error p{margin-top:var(--s-xxs);font-family:var(--font-mono);color:var(--ink-muted)}.sqllab__grid-wrap{display:flex;flex-direction:column;min-height:0;min-width:0;max-height:100%}.sqllab__grid-meta{padding:var(--s-xs) var(--s-md);font-size:var(--fs-12);color:var(--ink-subtle);font-family:var(--font-mono)}.sqllab__truncated{color:var(--primary-focus)}.sqllab__grid-scroll{flex:1;min-height:0;min-width:0;overflow:auto}.sqllab__grid,.sqllab__history{width:100%;border-collapse:collapse;font-size:var(--fs-13)}.sqllab__grid th,.sqllab__history th{position:sticky;top:0;text-align:left;font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);background:var(--surface-2);padding:var(--s-xs) var(--s-sm);border-bottom:1px solid var(--hairline);white-space:nowrap}.sqllab__grid td,.sqllab__history td{padding:var(--s-xs) var(--s-sm);border-bottom:1px solid var(--hairline);font-family:var(--font-mono);color:var(--ink-muted);white-space:nowrap}.sqllab__grid td{max-width:360px;overflow:hidden;text-overflow:ellipsis}.sqllab__grid td em{color:var(--ink-tertiary);font-style:italic}.sqllab__num{text-align:right;font-variant-numeric:tabular-nums}.sqllab__history tbody tr{cursor:pointer}.sqllab__history tbody tr:hover{background:var(--surface-2)}.sqllab__history-sql{max-width:480px;overflow:hidden;text-overflow:ellipsis}.sqllab__status{font-family:var(--font-text);font-size:var(--fs-11);font-weight:600;padding:1px 6px;border-radius:var(--r-pill)}.sqllab__status--ok{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.sqllab__status--err{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}@media (max-width: 900px){.sqllab__body{grid-template-columns:1fr}.sqllab__side{display:none}}.di-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-sm);padding:var(--s-xl);margin-bottom:var(--s-lg);border:2px dashed var(--hairline-strong);border-radius:var(--r-lg);background:var(--surface-1);color:var(--ink-subtle);cursor:pointer;transition:border-color .12s ease,background .12s ease}.di-drop:hover,.di-drop--over{border-color:var(--primary);background:var(--surface-2)}.di-drop svg{color:var(--primary)}.di-drop__lead{font-size:var(--fs-14)}.di-drop__input{display:none}.di-subhead{font-family:var(--font-display);font-size:var(--fs-16);font-weight:600;color:var(--ink);margin-bottom:var(--s-sm)}.di-badge{font-size:var(--fs-10);font-weight:700;color:var(--ink-subtle);background:var(--surface-3);border-radius:var(--r-pill);padding:1px 7px;margin-left:var(--s-xxs)}.di-review__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-md);margin-bottom:var(--s-md)}.di-warn{display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);margin-bottom:var(--s-md);font-size:var(--fs-13);color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:var(--r-md)}.di-warn svg{flex:none}.di-form{display:flex;gap:var(--s-md);margin-bottom:var(--s-md);flex-wrap:wrap}.di-field{display:flex;flex-direction:column;gap:var(--s-xxs);flex:1;min-width:220px}.di-field>span{font-size:var(--fs-12);font-weight:600;color:var(--ink-subtle)}.di-cols td{vertical-align:middle}.di-col-name{width:100%}.di-sample{font-family:var(--font-mono);font-size:var(--fs-12);color:var(--ink-tertiary);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.di-row--pii{background:color-mix(in srgb,var(--danger) 7%,transparent)}.di-actions{display:flex;justify-content:flex-end;gap:var(--s-sm);margin-top:var(--s-md)}.pedit{width:min(96vw,1180px);height:min(90vh,760px)}.pedit__body{flex:1;min-height:0;display:flex}.pedit__preview{flex:1;min-width:0;overflow:auto;padding:var(--s-md);border-right:1px solid var(--hairline);background:var(--surface-2)}.pedit__preview .pivot-wrap{min-height:220px;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-md);overflow:hidden}.pedit__state{height:100%;min-height:220px;display:grid;place-items:center;color:var(--ink-subtle);font-size:var(--fs-13)}.pedit__rail{width:360px;flex:none;overflow-y:auto;padding:var(--s-sm) var(--s-md)}.pedit__group{border:0;margin:0 0 var(--s-md);padding:0;min-width:0}.pedit__group legend{width:100%;padding:0 0 var(--s-xxs);margin-bottom:var(--s-xs);border-bottom:1px solid var(--hairline);color:var(--ink-subtle);font-size:var(--fs-11);font-weight:650;text-transform:uppercase}.pedit__label,.pedit__value label span{display:block;margin-bottom:3px;color:var(--ink-muted);font-size:var(--fs-12)}.pedit__group>select,.pedit__value select,.pedit__value input{width:100%;min-width:0;border:1px solid var(--hairline-strong);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink);font:inherit;font-size:var(--fs-12-5);padding:5px 7px}.pedit__group>select{min-height:86px}.pedit__group>select:focus-visible,.pedit__value select:focus-visible,.pedit__value input:focus-visible{outline:none;border-color:var(--primary)}.pedit__hint{display:block;margin-top:4px;color:var(--ink-tertiary);font-size:var(--fs-11)}.pedit__values{display:flex;flex-direction:column;gap:var(--s-xs)}.pedit__value{display:grid;grid-template-columns:minmax(0,1fr) 92px 30px;gap:var(--s-xs);align-items:end;padding:var(--s-xs);border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-2)}.pedit__value-label{grid-column:1 / 3}.pedit__icon-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-1);color:var(--ink-subtle)}.pedit__icon-btn:hover{color:var(--danger);border-color:var(--hairline-strong)}.pedit__add{display:flex;align-items:center;gap:var(--s-xxs);margin-top:var(--s-xs)}.pedit__toggles{display:flex;flex-wrap:wrap;gap:var(--s-md)}.pedit__toggles legend{flex-basis:100%}.pedit__toggles label{display:flex;align-items:center;gap:var(--s-xxs);color:var(--ink-muted);font-size:var(--fs-12-5)}.pedit__toggles input{accent-color:var(--primary)}.pedit__error{padding:var(--s-xs);border:1px solid color-mix(in srgb,var(--danger) 35%,var(--hairline));border-radius:var(--r-sm);background:color-mix(in srgb,var(--danger) 7%,var(--surface-1));color:var(--danger);font-size:var(--fs-12-5)}.pedit__loading{display:flex;align-items:center;gap:var(--s-xs);color:var(--ink-muted);font-size:var(--fs-12-5)}@media (max-width: 768px){.pedit{width:100vw;height:100vh;border-radius:0}.pedit__body{flex-direction:column;overflow-y:auto}.pedit__preview{flex:none;min-height:260px;border-right:0;border-bottom:1px solid var(--hairline)}.pedit__rail{width:auto;overflow:visible}}.pivot__note{padding:var(--s-sm) var(--s-md);font-size:var(--fs-13);color:var(--ink-subtle)}.pivot th{text-align:center;white-space:nowrap}.pivot__subtotal-row,.pivot__grand-row{font-weight:600;color:var(--ink);background:var(--surface-2)}.pivot__subtotal-row td,.pivot__grand-row td{border-top:1px solid var(--hairline-strong)}.pivot__grand-row td{border-top-width:2px}.api-docs__layout{display:grid;grid-template-columns:200px minmax(0,72ch);gap:var(--s-xl);align-items:start;margin-top:var(--s-lg)}.api-docs__nav{position:sticky;top:var(--s-lg);display:flex;flex-direction:column;gap:2px;font-size:var(--fs-12-5)}.api-docs__nav a{color:var(--ink-subtle);text-decoration:none;padding:5px var(--s-xs);border-radius:var(--r-sm);border-left:2px solid transparent;transition:background .1s ease,color .1s ease}.api-docs__nav a:hover{background:var(--surface-2);color:var(--ink)}.api-docs__nav a:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent);color:var(--ink)}.api-docs__content{min-width:0}.api-docs__content section{scroll-margin-top:calc(var(--nav-h) + var(--s-md));padding-bottom:var(--s-xl);margin-bottom:var(--s-xl);border-bottom:1px solid var(--hairline)}.api-docs__content section:last-child{border-bottom:none;margin-bottom:0}.api-docs__content h2{font-family:var(--font-display);font-size:var(--fs-17);font-weight:600;color:var(--ink);margin:0 0 var(--s-sm)}.api-docs__content h3{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);margin:var(--s-md) 0 var(--s-xs)}.api-docs__content p{color:var(--ink-muted);font-size:var(--fs-13-5);line-height:1.6;margin:0 0 var(--s-xs)}.api-docs__content p:last-child{margin-bottom:0}.api-docs__content code{font-family:var(--font-mono);font-size:var(--fs-12);background:var(--surface-3);border-radius:var(--r-xs);padding:1px 6px;color:var(--ink)}.api-docs__content label{display:flex;flex-direction:column;gap:5px;font-size:var(--fs-12-5);color:var(--ink-muted);margin-bottom:var(--s-sm);max-width:480px}.api-docs__code{font-family:var(--font-mono);font-size:var(--fs-12);line-height:1.55;color:var(--ink);background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--r-md);padding:var(--s-sm);overflow-x:auto;white-space:pre;margin:0}.api-endpoint{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);padding:var(--s-md);margin-bottom:var(--s-md)}.api-endpoint:last-child{margin-bottom:0}.api-endpoint__head{display:flex;align-items:center;gap:var(--s-xs);margin-bottom:var(--s-xs)}.api-endpoint__head code{background:transparent;padding:0;font-size:var(--fs-12-5)}.api-endpoint>p{margin-bottom:var(--s-sm)}.api-method{font-family:var(--font-mono);font-size:var(--fs-11);font-weight:700;padding:3px 8px;border-radius:var(--r-xs);flex:none}.api-method--get{background:color-mix(in srgb,var(--success) 14%,var(--surface-1));color:var(--success)}.api-method--post{background:color-mix(in srgb,var(--primary) 14%,var(--surface-1));color:var(--primary-focus)}.api-try__disabled{font-size:var(--fs-13);color:var(--ink-subtle)}@media (max-width: 860px){.api-docs__layout{grid-template-columns:1fr}.api-docs__nav{position:static;flex-direction:row;flex-wrap:wrap;gap:var(--s-xs);border-bottom:1px solid var(--hairline);padding-bottom:var(--s-md);margin-bottom:var(--s-md)}}.tabset{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 1px 4px #0000000f,0 2px 8px #0000000a;display:flex;flex-direction:column;overflow:hidden;height:100%;transition:border-color .16s ease,box-shadow .16s ease}.tabset:hover{border-color:var(--hairline-strong)}.tabset--drag-source{border-color:var(--ink-tertiary);border-style:dashed;box-shadow:0 0 0 2px color-mix(in srgb,var(--ink-tertiary) 14%,transparent)}.tabstrip{display:flex;align-items:center;gap:4px;padding:6px 8px;min-height:40px;flex:none;background:var(--surface-2);border-bottom:1px solid var(--hairline)}.grip{display:flex;align-items:center;flex:none;padding:4px 2px;border-radius:var(--r-sm);color:var(--ink-tertiary);cursor:grab;transition:background .12s ease,color .12s ease}.grip:hover{background:var(--surface-3);color:var(--ink-muted)}.grip:active{cursor:grabbing}.tabstrip__arrow{display:flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);cursor:pointer}.tabstrip__arrow:hover:not(:disabled){background:var(--surface-3);color:var(--ink)}.tabstrip__arrow:disabled{opacity:.35;cursor:default}.tabstrip__arrow:focus-visible{outline:2px solid var(--primary);outline-offset:-1px}.tabstrip__scroll{display:flex;align-items:center;gap:2px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.tabstrip__scroll::-webkit-scrollbar{display:none}.tabbar__item-wrap{display:flex;align-items:center;flex:0 0 auto}.tab{flex:none;max-width:180px;font-family:var(--font-text);font-size:var(--fs-12-5);font-weight:500;color:var(--ink-subtle);background:transparent;border:1px solid transparent;border-radius:var(--r-sm);padding:6px 10px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tab:hover{color:var(--ink);background:var(--surface-3)}.tab.active{color:var(--primary-focus);font-weight:600;background:var(--primary-tint);border-color:var(--primary-tint-border)}.tab:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 20%,transparent)}.tabbar__input{width:120px;font-family:var(--font-text);font-size:var(--fs-12-5);font-weight:500;color:var(--ink);background:var(--surface-1);border:1px solid var(--primary);border-radius:var(--r-sm);padding:5px 8px;outline:none}.tabbar__delete{display:flex;align-items:center;justify-content:center;flex:none;width:20px;height:20px;margin-right:2px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink-tertiary);cursor:pointer}.tabbar__delete:hover{background:color-mix(in srgb,var(--danger) 14%,var(--surface-1));color:var(--danger)}.tab-add{display:flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;font-size:var(--fs-15);line-height:1;border:1px dashed var(--hairline-strong);border-radius:var(--r-sm);background:transparent;color:var(--ink-subtle);cursor:pointer}.tab-add:hover{color:var(--primary-focus);border-color:var(--primary);background:var(--primary-tint)}.tabstrip__menu-wrap{position:relative;flex:none}.tabstrip__list.open{background:var(--surface-3);color:var(--ink)}.tabstrip__menu{position:absolute;top:calc(100% + 4px);right:0;z-index:20;display:flex;flex-direction:column;gap:2px;min-width:200px;max-width:300px;max-height:340px;overflow-y:auto;padding:6px;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:0 8px 24px #00000024}.tabstrip__menu-item{flex:none;text-align:left;padding:7px 10px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-muted);font-size:var(--fs-12-5);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.tabstrip__menu-item:hover{background:var(--surface-2);color:var(--ink)}.tabstrip__menu-item.active{color:var(--primary-focus);font-weight:600;background:color-mix(in srgb,var(--primary) 10%,var(--surface-1))}.panelbody{flex:1 1 auto;min-height:0;padding:var(--s-sm);overflow:auto}.tabset__inner{height:100%}.tabset__empty{padding:var(--s-lg);color:var(--ink-subtle);font-size:var(--fs-13);text-align:center}.tab.is-droptarget{color:var(--primary-focus);font-weight:600;background:var(--primary-tint);border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 25%,transparent)}.panelbody.is-droptarget{outline:2px dashed var(--primary);outline-offset:-2px;background:color-mix(in srgb,var(--primary) 6%,transparent);border-radius:var(--r-md)}.canvas__ejectzone{display:flex;align-items:center;justify-content:center;flex:none;margin-bottom:var(--s-sm);padding:var(--s-sm) var(--s-md);border:1.5px dashed var(--hairline-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-subtle);font-family:var(--font-text);font-size:var(--fs-12-5);font-weight:500;text-align:center;transition:border-color .12s ease,background .12s ease,color .12s ease}.canvas__ejectzone.is-droptarget{border-color:var(--primary);background:var(--primary-tint);color:var(--primary-focus);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 20%,transparent)}.canvas__grid.is-droptarget{outline:2px dashed var(--primary);outline-offset:-8px;border-radius:var(--r-lg);background:color-mix(in srgb,var(--primary) 4%,transparent)}.canvas__layout-tools{flex:none;padding:0 var(--s-md);margin-bottom:var(--s-sm)}.btn.add-el{display:inline-flex;align-items:center;gap:7px;background:var(--surface-2);border:1px solid var(--hairline-strong);border-radius:var(--r-md);padding:7px 12px;font-family:var(--font-text);font-weight:500;font-size:var(--fs-13);color:var(--ink-muted);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn.add-el:hover{background:var(--surface-3);color:var(--ink);border-color:var(--hairline-tertiary)}.btn.add-el[aria-expanded=true]{color:var(--primary-focus);border-color:var(--primary-tint-border);background:var(--primary-tint)}.btn.add-el svg:last-child{color:var(--ink-tertiary)}.pop{position:fixed;z-index:300;width:300px;background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:0 8px 28px #00000024,0 2px 8px #00000014;padding:var(--s-xs);display:flex;flex-direction:column;gap:2px}.pop .head{font-size:var(--fs-11);font-weight:600;text-transform:uppercase;color:var(--ink-subtle);padding:6px 8px 4px}.pop .el{display:flex;align-items:flex-start;gap:var(--s-sm);width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--r-md);padding:var(--s-xs) var(--s-sm);cursor:pointer;font-family:inherit;transition:background .12s ease,border-color .12s ease}.pop .el:hover{background:var(--surface-2);border-color:var(--hairline)}.pop .el .ic{flex:none;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-sm);background:var(--primary-tint);color:var(--primary-focus)}.pop .el b{display:block;font-size:var(--fs-13-5);font-weight:600;color:var(--ink)}.pop .el p{margin:2px 0 0;font-size:var(--fs-12);line-height:1.4;color:var(--ink-subtle)}.pop .note{margin:var(--s-xs) 4px 2px;padding-top:var(--s-xs);border-top:1px solid var(--hairline);font-size:var(--fs-11-5);line-height:1.5;color:var(--ink-tertiary)}
