:root{--page-padding: 24px;--panel-gap: 16px;--space-section: 20px;--space-card: 16px;--radius: 10px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--font: "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--font-xs: 12px;--font-sm: 12px;--font-base: 13px;--font-md: 14px;--font-lg: 16px;--font-xl: 20px;--font-2xl: 26px;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--title-size: 24px;--title-weight: 700;--title-tracking: -.02em;--label-size: 12px;--label-weight: 600;--label-tracking: .04em;--nav-width: 220px;--sidebar-width: var(--nav-width);--sidebar-collapsed-width: 60px;--ffast-topbar-h: 44px;--bg: #f1f3f6;--surface: #ffffff;--surface-alt: #f6f7f9;--surface-raised: #ffffff;--surface-disabled: #e2e8f0;--bg-light: #f8fafc;--bg-hover: #eef3fa;--table-head-bg: #eef1f5;--card-head-bg: #f6f7f9;--card: var(--surface);--border: #d0d7de;--border-strong: #b4bdc8;--shadow-card: 0 1px 2px rgba(16, 24, 40, .06);--tab-bar-bg: #e2e5ea;--text: #111827;--text-mid: #475569;--text-secondary: #4d5a6d;--text-muted: #566579;--text-inverse: #ffffff;--accent: #b45309;--accent-bg: #fff7ed;--accent-text: #7c2d12;--accent-border: #fed7aa;--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: rgba(79, 70, 229, .08);--primary-border: rgba(79, 70, 229, .25);--pass: #22c55e;--pass-bg: #dcfce7;--warn: #f59e0b;--warn-bg: #fff7ed;--warn-border: #fed7aa;--fail: #ef4444;--fail-bg: #fee2e2;--skip: #566579;--success-bg: #dcfce7;--success-text: #166534;--success-border: #bbf7d0;--danger-bg: #fef2f2;--danger-text: #991b1b;--danger-border: #fecaca;--warning-bg: #fef3c7;--warning-text: #92400e;--warning-border: #fde68a;--info-bg: #dbeafe;--info-text: #1e40af;--info-border: #93c5fd;--accent-ai: #7c3aed;--accent-ai-light: rgba(124, 58, 237, .08);--accent-ai-border: rgba(124, 58, 237, .25);--toast-success-bg: #dcfce7;--toast-success-text: #166534;--toast-success-border: #bbf7d0;--toast-error-bg: #fef2f2;--toast-error-text: #991b1b;--toast-error-border: #fecaca;--toast-info-bg: #dbeafe;--toast-info-text: #1e40af;--toast-info-border: #93c5fd;--banner-bg: #fef3c7;--banner-text: #92400e;--inflight-text: #8a5f0f;--inflight-bg: #fdf6e7;--inflight-edge: #f0dfb6;--chip-pos-bg: #dcfce7;--chip-pos-text: #16a34a;--chip-neg-bg: #fee2e2;--chip-neg-text: #dc2626;--chip-neutral-bg: #f1f5f9;--chip-neutral-text: #64748b;--col-highlight-bg: #eef2ff;--col-highlight-text: #4f46e5;--code-bg: #1e293b;--code-text: #e2e8f0;--terminal-bg: #1e293b;--terminal-text: #e2e8f0;--terminal-text-muted:#94a3b8;--terminal-border: #334155;--terminal-font: var(--font-mono);--nav-bg: #1e293b;--nav-text: #c8d5e4;--nav-text-bright: #f1f5f9;--nav-text-strong: #e2e8f0;--nav-text-dim: #8fa0b4;--nav-active: #f59e0b;--nav-active-soft: #fbbf24;--nav-active-bg: #0f172a;--nav-option-bg: #1a1b23;--nav-divider: #131e2b;--nav-rule: #2d3f52;--nav-sep-text: #94a3b8;--nav-danger-soft: #fca5a5;--sidebar-bg: var(--nav-bg);--sidebar-surface: rgba(255, 255, 255, .04);--sidebar-text: var(--nav-text);--sidebar-text-hover: rgba(255, 255, 255, .9);--sidebar-hover: rgba(255, 255, 255, .06);--sidebar-active-bg: var(--nav-active-bg);--sidebar-active-text: var(--nav-active);--sidebar-active-border: var(--nav-active);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 1px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .06);--modal-scrim: rgba(0, 0, 0, .4);--highlighter-ink-1: #facc15;--highlighter-ink-2: #4ade80;--highlighter-ink-3: #f472b6;--highlighter-ink-4: #60a5fa;--highlighter-ink-5: #ef4444;--chart-series-1: #2563eb;--chart-series-2: #c2410c;--chart-series-3: #15803d;--chart-series-4: #7e22ce;--chart-series-5: #0e7490;--chart-series-6: #be185d;--chart-series-7: #854d0e;--chart-series-8: #475569;color-scheme:light}@media screen{[data-theme=dark]{--bg: #0b1018;--surface: #141a24;--surface-alt: #1c2331;--surface-raised: #1c2331;--surface-disabled: #283142;--bg-light: #1c2331;--bg-hover: #232c3c;--table-head-bg: #1e2636;--card-head-bg: #1c2331;--border: #324158;--border-strong: #3a455c;--shadow-card: 0 1px 2px rgba(0, 0, 0, .45);--tab-bar-bg: #1c2331;--text: #f2f5f9;--text-mid: #d5deea;--text-secondary: #b8c4d4;--text-muted: #9db0c6;--text-inverse: #0b1018;--accent: #f59e0b;--accent-bg: rgba(245, 158, 11, .12);--accent-text: #fcd34d;--accent-border: rgba(245, 158, 11, .35);--primary: #818cf8;--primary-hover: #a5b4fc;--primary-light: rgba(129, 140, 248, .16);--primary-border: rgba(129, 140, 248, .35);--pass: #4ade80;--pass-bg: rgba(34, 197, 94, .16);--warn: #fbbf24;--warn-bg: rgba(245, 158, 11, .16);--warn-border: rgba(245, 158, 11, .35);--fail: #f87171;--fail-bg: rgba(239, 68, 68, .16);--skip: #94a3b8;--success-bg: rgba(34, 197, 94, .16);--success-text: #86efac;--success-border: rgba(34, 197, 94, .35);--danger-bg: rgba(239, 68, 68, .16);--danger-text: #fca5a5;--danger-border: rgba(239, 68, 68, .35);--warning-bg: rgba(245, 158, 11, .16);--warning-text: #fcd34d;--warning-border: rgba(245, 158, 11, .35);--info-bg: rgba(96, 165, 250, .16);--info-text: #93c5fd;--info-border: rgba(96, 165, 250, .35);--accent-ai: #a78bfa;--accent-ai-light: rgba(167, 139, 250, .16);--accent-ai-border: rgba(167, 139, 250, .35);--toast-success-bg: rgba(34, 197, 94, .18);--toast-success-text: #86efac;--toast-success-border: rgba(34, 197, 94, .35);--toast-error-bg: rgba(239, 68, 68, .18);--toast-error-text: #fca5a5;--toast-error-border: rgba(239, 68, 68, .35);--toast-info-bg: rgba(96, 165, 250, .18);--toast-info-text: #93c5fd;--toast-info-border: rgba(96, 165, 250, .35);--banner-bg: rgba(245, 158, 11, .16);--banner-text: #fcd34d;--inflight-text: #f6d9a4;--inflight-bg: #241f14;--inflight-edge: #4a3410;--chip-pos-bg: rgba(74, 222, 128, .14);--chip-pos-text: #7ce8a8;--chip-neg-bg: rgba(248, 113, 113, .14);--chip-neg-text: #f79a9a;--chip-neutral-bg: rgba(157, 176, 198, .12);--chip-neutral-text: #b2b6ca;--col-highlight-bg: rgba(129, 140, 248, .1);--col-highlight-text: #a5b4fc;--code-bg: #0b1018;--code-text: #e2e8f0;--terminal-bg: #0b1018;--terminal-text: #e2e8f0;--terminal-text-muted:#94a3b8;--terminal-border: #283142;--nav-divider: #0b1018;--nav-rule: #283142;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 1px 4px rgba(0, 0, 0, .5), 0 0 0 1px rgba(255, 255, 255, .04);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .04);--modal-scrim: rgba(0, 0, 0, .4);--highlighter-ink-1: #facc15;--highlighter-ink-2: #4ade80;--highlighter-ink-3: #f472b6;--highlighter-ink-4: #60a5fa;--highlighter-ink-5: #ef4444;--chart-series-1: #60a5fa;--chart-series-2: #fb923c;--chart-series-3: #4ade80;--chart-series-4: #e879f9;--chart-series-5: #22d3ee;--chart-series-6: #f472b6;--chart-series-7: #facc15;--chart-series-8: #94a3b8;color-scheme:dark}}.ffast-topbar{display:flex;align-items:center;gap:16px;height:44px;padding:0 16px;background:var(--surface);color:var(--text);border-bottom:1px solid var(--border);font-family:inherit;box-sizing:border-box}.ffast-topbar__brand{font-weight:700;letter-spacing:.02em;color:var(--text);text-decoration:none}.ffast-topbar__tabs{display:flex;gap:4px;flex:1}.ffast-topbar__tab{padding:4px 12px;border-radius:6px;color:var(--text-mid);text-decoration:none;font-size:14px}.ffast-topbar__tab:hover{background:var(--bg-hover)}.ffast-topbar__tab--active{background:var(--bg-hover);color:var(--text);font-weight:600}.ffast-topbar__tab{display:inline-flex;align-items:center;gap:7px}.ffast-topbar__badge{min-width:18px;height:18px;padding:0 6px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;background:#49b8ff;color:#06263b}.ffast-topbar__user{display:flex;align-items:center;gap:12px;font-size:13px}.ffast-usermenu{position:relative;display:flex;align-items:center}.ffast-usermenu__button{display:flex;align-items:center;gap:8px;padding:3px 6px;border:none;border-radius:6px;background:none;color:var(--text);font-size:13px;font-family:inherit;cursor:pointer}.ffast-usermenu__button:hover{background:var(--bg-hover)}.ffast-usermenu__avatar{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;overflow:hidden;background:var(--nav-bg);color:var(--nav-text-bright);font-size:12px;font-weight:700}.ffast-usermenu__avatar img{display:block;width:100%;height:100%;object-fit:cover}.ffast-usermenu__name{color:var(--text-mid)}.ffast-usermenu__chevron{display:flex;color:var(--text-mid)}.ffast-usermenu__panel{position:absolute;top:calc(100% + 6px);right:0;width:220px;padding:4px;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md);z-index:50;box-sizing:border-box}.ffast-usermenu__item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:none;text-align:left;color:var(--text);font-size:13px;font-family:inherit;cursor:pointer;text-decoration:none;box-sizing:border-box}.ffast-usermenu__item:hover{background:var(--bg-hover)}.ffast-usermenu__item-note{margin-left:auto;color:var(--text-mid);font-size:12px}.ffast-usermenu__hint{margin:2px 4px 6px;padding:8px 10px;border-radius:6px;background:var(--bg-hover);color:var(--text-mid);font-size:12px;line-height:1.4}.ffast-usermenu__head{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}.ffast-usermenu__head-name{color:var(--text);font-size:13px;font-weight:600}.ffast-usermenu__head-email{color:var(--text-secondary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ffast-usermenu__kbd{margin-left:auto;padding:1px 5px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-mono);font-size:12px}.ffast-usermenu__sep{height:1px;margin:4px 0;background:var(--border)}.ffast-bell{position:relative;display:flex;align-items:center}.ffast-bell__button{position:relative;display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:6px;background:none;color:var(--text-mid);cursor:pointer}.ffast-bell__button:hover{background:var(--bg-hover);color:var(--text)}.ffast-bell__badge{position:absolute;top:1px;right:1px;min-width:16px;height:16px;padding:0 3px;border-radius:999px;background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border);font-size:12px;line-height:14px;font-weight:700;text-align:center}.ffast-bell__panel{position:absolute;top:calc(100% + 6px);right:0;width:320px;max-height:380px;display:flex;flex-direction:column;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md);z-index:50;overflow:hidden}.ffast-bell__empty{padding:20px 16px;text-align:center;color:var(--text-mid);font-size:13px}.ffast-bell__list{list-style:none;margin:0;padding:4px;overflow-y:auto}.ffast-bell__item{margin:0}.ffast-bell__item-button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:none;text-align:left;cursor:pointer}.ffast-bell__item-button:hover{background:var(--bg-hover)}.ffast-bell__item-title{font-size:13px;font-weight:600;color:var(--text)}.ffast-bell__item-body{font-size:12px;color:var(--text-mid)}.ffast-bell__item-time{font-size:12px;color:var(--text-mid);opacity:.8}.ffast-bell__footer{border-top:1px solid var(--border);padding:6px}.ffast-bell__mark-all{width:100%;padding:6px 8px;border:none;border-radius:6px;background:none;color:var(--text-mid);font-size:12px;cursor:pointer}.ffast-bell__mark-all:hover{background:var(--bg-hover);color:var(--text)}@media(max-width:767px){.ffast-topbar__tabs{display:none}.ffast-topbar__user{margin-left:auto}}.ffast-bugreport{position:relative;display:inline-flex}.ffast-bugreport__button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer}.ffast-bugreport__button:hover{background:var(--bg-hover);color:var(--text)}.ffast-bugreport__button:disabled{cursor:default}.ffast-bugreport__button--busy{animation:ffast-bugreport-pulse 1s ease-in-out infinite}@keyframes ffast-bugreport-pulse{0%,to{opacity:1}50%{opacity:.45}}.ffast-bugreport__overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.ffast-bugreport__modal{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:20px;width:420px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;gap:12px;font-family:var(--font);color:var(--text)}.ffast-bugreport__preview{width:100%;max-height:200px;object-fit:contain;border-radius:var(--radius-md);border:1px solid var(--border)}.ffast-bugreport__preview--empty{display:flex;align-items:center;justify-content:center;height:120px;color:var(--text-muted);font-size:var(--font-sm)}.ffast-bugreport__replace{font-size:var(--font-sm);color:var(--text-secondary)}.ffast-bugreport__field{display:flex;flex-direction:column;gap:4px;font-size:var(--font-sm);color:var(--text-secondary)}.ffast-bugreport__field textarea{border:1px solid var(--border);border-radius:var(--radius-md);padding:8px;font-family:var(--font);font-size:var(--font-base);color:var(--text);background:var(--surface);resize:vertical}.ffast-bugreport__pills{display:flex;align-items:center;gap:6px}.ffast-bugreport__pills-label{font-size:var(--font-sm);color:var(--text-muted);width:56px}.ffast-bugreport__pill{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);border-radius:999px;padding:4px 12px;font-size:var(--font-sm);cursor:pointer}.ffast-bugreport__pill--active{background:var(--primary);border-color:var(--primary);color:var(--text-inverse)}.ffast-bugreport__error{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border);border-radius:var(--radius-md);padding:8px 10px;font-size:var(--font-sm)}.ffast-bugreport__actions{display:flex;justify-content:flex-end;gap:8px}.ffast-bugreport__cancel{background:transparent;border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-md);padding:6px 14px;cursor:pointer}.ffast-bugreport__submit{background:var(--primary);border:1px solid var(--primary);color:var(--text-inverse);border-radius:var(--radius-md);padding:6px 14px;cursor:pointer}.ffast-bugreport__submit:hover{background:var(--primary-hover)}.ffast-bugreport__submit:disabled{opacity:.6;cursor:not-allowed}.ffast-bugreport__toast{position:absolute;top:40px;right:0;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:10px 14px;font-size:var(--font-sm);color:var(--text);white-space:nowrap;z-index:1000}.ffast-bugreport__toast a{color:var(--primary)}@media print{.ffast-topbar{display:none}}.ffast-highlighter{position:relative;display:inline-flex}.ffast-highlighter__button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer}.ffast-highlighter__button:hover,.ffast-highlighter__button--active{background:var(--bg-hover);color:var(--text)}.ffast-highlighter__canvas{display:block;overflow:visible;position:fixed;inset:0;width:100vw;height:100vh;z-index:1001;pointer-events:none}.ffast-highlighter__canvas--drawing,.ffast-highlighter__canvas--erasing{pointer-events:auto;cursor:crosshair;touch-action:none}.ffast-highlighter__canvas--erasing{cursor:cell}.ffast-highlighter__toolbar{user-select:none;position:fixed;top:56px;right:16px;z-index:1002;display:flex;flex-direction:column;gap:6px;width:max-content;box-sizing:border-box;max-width:calc(100vw - 32px);padding:8px 12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-family:var(--font);font-size:var(--font-sm);color:var(--text)}.ffast-highlighter__controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.ffast-highlighter__swatches{position:relative;display:flex;align-items:center;gap:6px}.ffast-highlighter__swatch,.ffast-highlighter__custom{position:relative;width:22px;height:22px;padding:0;border:2px solid var(--border);border-radius:50%;cursor:pointer;overflow:hidden}.ffast-highlighter__swatch--active{border-color:var(--text);box-shadow:0 0 0 2px var(--surface-raised),0 0 0 4px var(--text)}.ffast-highlighter__custom{background:conic-gradient(var(--highlighter-ink-1),var(--highlighter-ink-2),var(--highlighter-ink-4),var(--highlighter-ink-3),var(--highlighter-ink-5),var(--highlighter-ink-1))}.ffast-highlighter__tools{display:flex;align-items:center;gap:4px}.ffast-highlighter__tool{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-secondary);cursor:pointer}.ffast-highlighter__tool:hover{background:var(--bg-hover);color:var(--text)}.ffast-highlighter__tool--active{border-color:var(--text);background:var(--bg-hover);color:var(--text)}.ffast-highlighter__width{display:flex;align-items:center;gap:6px;color:var(--text-secondary)}.ffast-highlighter__width input{width:96px}.ffast-highlighter__width input:disabled{opacity:.4}.ffast-highlighter__width-value{min-width:36px;font-variant-numeric:tabular-nums;color:var(--text)}.ffast-highlighter__actions{display:flex;gap:6px}.ffast-highlighter__tip{width:0;min-width:100%;margin:0;line-height:1.6;color:var(--text-secondary);font-size:var(--font-sm)}.ffast-highlighter__tip kbd{padding:1px 5px;border:1px solid var(--border);border-radius:4px;background:var(--surface-alt);color:var(--text);font-family:var(--font);font-size:var(--font-sm)}.ffast-highlighter__action{padding:4px 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-family:var(--font);font-size:var(--font-sm);cursor:pointer}.ffast-highlighter__action:hover:not(:disabled){background:var(--bg-hover)}.ffast-highlighter__action:disabled{color:var(--text-muted);cursor:default}.ffast-highlighter__action--primary{background:var(--primary);border-color:var(--primary);color:var(--text-inverse)}.ffast-highlighter__action--primary:hover:not(:disabled){background:var(--primary-hover)}.ffast-colourpicker{position:absolute;top:calc(100% + 10px);left:0;z-index:1;display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-family:var(--font);font-size:var(--font-sm);color:var(--text)}.ffast-colourpicker__grid{display:grid;grid-template-columns:repeat(12,18px);gap:3px}.ffast-colourpicker__cell{width:18px;height:18px;padding:0;border:1px solid var(--border);border-radius:4px;cursor:pointer}.ffast-colourpicker__cell--active{outline:2px solid var(--text);outline-offset:1px}.ffast-colourpicker__row{display:flex;align-items:center;gap:8px}.ffast-colourpicker__preview{width:32px;height:24px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.ffast-colourpicker__hex{display:flex;align-items:center;gap:2px;color:var(--text-secondary)}.ffast-colourpicker__hex input{width:72px;padding:3px 6px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-family:var(--font);font-size:var(--font-sm);font-variant-numeric:tabular-nums}.ffast-colourpicker__actions{display:flex;justify-content:flex-end;gap:6px}.ffast-tb2__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.ffast-tb2__menu-wrap{position:relative;display:inline-flex}.ffast-tb2__icon-btn,.ffast-tb2__trigger,.ffast-tb2__search,.ffast-tb2__pj,.ffast-tb2__area{position:relative;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--text-mid);font:inherit;font-size:13px;line-height:1;text-decoration:none;cursor:pointer;box-sizing:border-box}.ffast-tb2__icon-btn{width:30px;padding:0;justify-content:center}.ffast-tb2__icon-btn:hover,.ffast-tb2__trigger:hover,.ffast-tb2__pj:hover,.ffast-tb2__area:hover{background:var(--bg-hover);color:var(--text)}.ffast-tb2__trigger-text{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:var(--font-medium)}.ffast-tb2__chevron{font-size:12px;color:var(--text-secondary)}.ffast-tb2__icon-btn:focus-visible,.ffast-tb2__trigger:focus-visible,.ffast-tb2__search:focus-visible,.ffast-tb2__pj:focus-visible,.ffast-tb2__area:focus-visible,.ffast-tb2__item:focus-visible,.ffast-tb2__app:focus-visible,.ffast-tb2__tool:focus-visible,.ffast-tb2__legacy:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.ffast-tb2__areas{display:flex;align-self:stretch;gap:2px}.ffast-tb2__area{height:100%;padding:0 12px;border:0;border-radius:0;font-size:14px;font-weight:500}.ffast-tb2__area:hover{background:transparent;color:var(--text)}.ffast-tb2__area--active{background:var(--bg-hover);color:var(--text);font-weight:var(--font-semibold)}.ffast-tb2__area--active:hover{background:var(--bg-hover)}.ffast-tb2__group{--ffast-tb2-group-accent: var(--border-strong);display:inline-flex;align-items:center;gap:4px;padding:3px;border:1.5px solid var(--ffast-tb2-group-accent);border-radius:var(--radius-md);background:var(--surface);box-sizing:border-box;flex:none}.ffast-tb2__group-divider{flex:none;width:1px;height:18px;background:var(--border)}.ffast-tb2__group .ffast-tb2__areas{align-self:center;align-items:center}.ffast-tb2__group .ffast-tb2__area,.ffast-tb2__group .ffast-tb2__trigger{height:28px;border-radius:var(--radius-sm)}.ffast-tb2__trigger--boxed{border:1px solid var(--border);border-radius:var(--radius-sm)}.ffast-tb2__group-icon{flex:none;color:var(--text-secondary)}.ffast-tb2__search{width:260px;border-color:var(--border);background:var(--surface-alt);color:var(--text-secondary)}[data-bp=lg] .ffast-tb2__search{width:200px}.ffast-tb2__search--icon,[data-bp=lg] .ffast-tb2__search--icon{width:30px;padding:0;justify-content:center}.ffast-tb2__search-text{flex:1;text-align:left}.ffast-tb2__kbd{padding:1px 5px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);font-family:var(--font-mono);font-size:12px}.ffast-tb2__pj--icon{width:30px;padding:0;justify-content:center}.ffast-tb2__pj--active{background:var(--primary-light);border-color:var(--primary-border);color:var(--primary)}.ffast-tb2__anchor-inner{display:inline-flex;align-items:center;gap:6px}@keyframes ffast-tb2-fade{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:none}}.ffast-tb2__panel{position:absolute;top:calc(100% + 6px);left:0;z-index:1000;min-width:200px;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-md);font-size:13px;box-sizing:border-box;animation:ffast-tb2-fade .12s ease-out}.ffast-tb2__help{left:auto;right:0}@media(prefers-reduced-motion:reduce){.ffast-tb2__panel{animation:none}}.ffast-tb2__item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:inherit;font-size:13px;text-align:left;text-decoration:none;cursor:pointer;box-sizing:border-box}.ffast-tb2__item:hover{background:var(--bg-hover)}.ffast-tb2__item--checked{font-weight:var(--font-semibold)}.ffast-tb2__check{width:14px;color:var(--primary)}.ffast-tb2__apps{width:460px;padding:12px}.ffast-tb2__section+.ffast-tb2__section{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.ffast-tb2__section-title{margin:0 0 8px;color:var(--text-secondary);font-size:12px;font-weight:var(--font-semibold);letter-spacing:.04em;text-transform:uppercase}.ffast-tb2__app-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.ffast-tb2__tool-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.ffast-tb2__app,.ffast-tb2__tool,.ffast-tb2__legacy{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;text-decoration:none;box-sizing:border-box}.ffast-tb2__tool{flex-direction:column;justify-content:center;gap:4px;text-align:center;font-size:12px}.ffast-tb2__entry-icon{display:inline-flex;flex:0 0 auto;width:20px;height:20px}.ffast-tb2__entry-icon svg,.ffast-tb2__entry-icon img{width:100%;height:100%}.ffast-tb2__entry-label{min-width:0}.ffast-tb2__app:hover,.ffast-tb2__tool:hover,.ffast-tb2__legacy:hover{background:var(--bg-hover)}.ffast-tb2__app--current,.ffast-tb2__app--current:hover{background:var(--primary-light);border-color:var(--primary-border);color:var(--primary);font-weight:var(--font-semibold)}.ffast-tb2__legacy{justify-content:space-between}.ffast-tb2__legacy-name{display:inline-flex;align-items:center;gap:8px}.ffast-tb2__pill{padding:2px 8px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:var(--font-semibold)}.ffast-tb2__pill--warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}.ffast-tb2__dot{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;background:var(--primary)}.ffast-tb2__dot--inline{position:static;margin-left:auto}.ffast-tb2__backdrop{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;background:var(--modal-scrim)}.ffast-tb2__modal{width:min(440px,calc(100vw - 32px));padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-md);animation:ffast-tb2-fade .12s ease-out}@media(prefers-reduced-motion:reduce){.ffast-tb2__modal{animation:none}}.ffast-tb2__modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.ffast-tb2__modal-title{margin:0;font-size:15px;font-weight:var(--font-semibold)}.ffast-tb2__shortcuts{width:100%;border-collapse:collapse;font-size:13px}.ffast-tb2__shortcuts td{padding:6px 0;border-top:1px solid var(--border)}.ffast-tb2__shortcuts td:first-child{width:50%}.ffast-tb2{display:flex;align-items:center;justify-content:space-between;gap:12px;height:44px;padding:0 16px;background:var(--surface);color:var(--text);border-bottom:1px solid var(--border);font-family:inherit;box-sizing:border-box}.ffast-tb2__left,.ffast-tb2__right{display:flex;align-items:center;gap:6px;min-width:0}.ffast-tb2__right{flex-shrink:0}.ffast-tb2__logo{width:20px;height:20px;object-fit:contain}.ffast-tb2__app-switch{display:inline-flex;align-items:center;gap:2px}.ffast-tb2__app-btn{position:relative;display:inline-flex;align-items:center;height:30px;padding:0 12px;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text-mid);font-size:14px;font-weight:500;line-height:1;text-decoration:none;white-space:nowrap;box-sizing:border-box}.ffast-tb2__app-btn:hover{background:var(--bg-hover);color:var(--text)}.ffast-tb2__app-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.ffast-tb2__app-btn--active{background:transparent;color:var(--text);font-weight:700;box-shadow:inset 0 -2px 0 var(--primary)}.ffast-tb2__app-btn--muted{color:var(--text-secondary);font-weight:400}.ffast-tb2__app-btn--muted.ffast-tb2__app-btn--active{color:var(--text);font-weight:700}.ffast-tb2__home{display:inline-flex;align-items:center;height:30px;padding:0 4px;border-radius:var(--radius-md);color:var(--text);text-decoration:none}.ffast-tb2__home-logo{display:block;width:28px;height:28px}.ffast-tb2__home:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.ffast-tb2__app-btn-dot{position:absolute;top:3px;right:3px;width:8px;height:8px;border-radius:999px;background:var(--danger-text);border:1px solid var(--danger-border)}@media print{.ffast-tb2{display:none}}.ffast-bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;height:calc(58px + env(safe-area-inset-bottom,0px));padding:4px 6px calc(6px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--border);box-sizing:border-box}.ffast-bottomnav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding-top:4px;text-decoration:none;color:var(--text-mid);font-size:12px;font-weight:600}.ffast-bottomnav__tab svg{width:22px;height:22px}.ffast-bottomnav__tab--active{font-weight:700}.ffast-bottomnav__tab:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}@media print{.ffast-bottomnav{display:none}}.ffast-host{width:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif}.home__main{max-width:860px;margin:0 auto;padding:48px 24px}.legacy-frame{position:fixed;top:var(--shell-chrome-offset, 44px);left:0;width:100%;height:calc(100dvh - var(--shell-chrome-offset, 44px));border:0;background:var(--bg)}.home__title{font-size:28px;margin:0 0 24px}.home__denied{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border);border-radius:8px;padding:12px 16px;margin-bottom:24px}.home__layout-error{position:fixed;top:calc(var(--shell-chrome-offset, 44px) + 8px);right:16px;z-index:1000;display:flex;align-items:center;gap:12px;background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border);border-radius:8px;padding:10px 14px;font-size:13px}.home__layout-error-close{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;line-height:1;padding:0}.home__tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.home__tile{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:20px;text-decoration:none;color:var(--text)}.home__tile:hover{background:var(--bg-hover)}.home__tile-heading{display:flex;align-items:center;gap:10px}.home__tile-icon{width:28px;height:28px;object-fit:contain;flex-shrink:0}.home__tile-label{font-weight:600;font-size:17px}.home__tile-blurb{color:var(--text-mid);font-size:13px}.remote-unavailable{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:40px;text-align:center;color:var(--text)}.remote-unavailable h2{font-size:20px;font-weight:700;margin-bottom:8px}.remote-unavailable p{color:var(--text-mid);font-size:14px;margin-bottom:20px;max-width:400px}.remote-unavailable__reload{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:8px 20px;font-size:14px;cursor:pointer}.remote-unavailable__reload:hover{background:var(--bg-hover)}.remote-unavailable__stack{margin-top:24px;padding:16px;background:var(--terminal-bg);color:var(--terminal-text);border-radius:var(--radius);font-size:12px;max-width:80vw;overflow:auto;text-align:left}.frame-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:60vh;color:var(--text-mid)}.frame-loading__spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--text-mid);border-radius:50%;animation:frame-loading-spin .8s linear infinite}.frame-loading__label{font-size:14px}@keyframes frame-loading-spin{to{transform:rotate(360deg)}}@media(max-width:767px){.home__main{padding:24px 16px calc(88px + env(safe-area-inset-bottom,0px))}}.legacy-desktop-only{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;padding:40px 24px calc(96px + env(safe-area-inset-bottom,0px));text-align:center;color:var(--text)}.legacy-desktop-only h2{font-size:20px;font-weight:700;margin:0 0 8px}.legacy-desktop-only p{color:var(--text-mid);font-size:14px;max-width:360px;margin:0}.tfa-gate-input{width:100%;padding:10px 12px;font-size:14px;border:1px solid var(--border);border-radius:var(--radius-md);outline:none;background:var(--surface);color:var(--text)}.tfa-gate-input:focus{border-color:var(--primary)}.tfa-gate-btn{padding:8px 16px;border-radius:var(--radius-sm);border:none;cursor:pointer;font-size:14px;font-weight:600;background:var(--surface-alt);color:var(--text)}.tfa-gate-btn:disabled{opacity:.6;cursor:not-allowed}.tfa-gate-btn-primary{background:var(--accent);color:var(--text-inverse)}@media print{html,body,#root,.ffast-host{height:auto!important;overflow:visible!important}html,body{background:none!important}}
