:root{color-scheme:light;--bg: #f7f6f3;--surface: #ffffff;--surface-2: #f1efea;--border: #e3e0d8;--ink: #1c1b18;--ink-2: #57534b;--ink-3: #8a857a;--accent: #2f6f5b;--accent-ink: #ffffff;--accent-soft: #e7f0ec;--ok: #2f6f5b;--warn: #9a6a1b;--err: #b3402e;--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 30px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--shadow-1: 0 1px 2px rgba(28,27,24,.06), 0 1px 3px rgba(28,27,24,.04);--shadow-2: 0 4px 16px rgba(28,27,24,.08);--t-fast: .12s ease;--t-med: .2s ease}[data-theme=dark]{color-scheme:dark;--bg: #17181a;--surface: #1e2022;--surface-2: #26292c;--border: #34383d;--ink: #e9eaec;--ink-2: #aeb1b6;--ink-3: #7c8086;--accent: #5cbb95;--accent-ink: #0d1411;--accent-soft: #1d2c26;--ok: #5cbb95;--warn: #d6a24c;--err: #e07a64;--shadow-1: 0 1px 2px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.32);--shadow-2: 0 6px 20px rgba(0,0,0,.5)}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;transition:background var(--t-med),color var(--t-med)}html,body,#root{margin:0;padding:0;height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;font-family:var(--font-sans);background:var(--bg);color:var(--ink)}.app-root{display:flex;flex-direction:column;height:100vh;height:100dvh}.app-shell{display:flex;height:100vh;height:100dvh;overflow:hidden}.app-main{display:flex;flex-direction:column;flex:1;min-width:0}.app-content{flex:1;min-height:0;display:flex;overflow:auto}.app-content>*{flex:1;min-height:0}.topbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);background:var(--surface);border-bottom:1px solid var(--border)}.topbar-burger{width:38px;height:38px;font-size:var(--fs-xl);line-height:1;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.topbar-burger:hover{background:var(--surface);color:var(--ink);border-color:var(--ink-3)}.topbar-brand{font-size:var(--fs-lg);font-weight:600;margin:0;letter-spacing:-.01em}.topbar-spacer{flex:1}.nav-drawer{display:flex;flex-direction:column;justify-content:space-between;width:232px;flex:0 0 232px;background:var(--surface);border-right:1px solid var(--border);padding:var(--sp-4) var(--sp-3);transition:flex-basis var(--t-med),width var(--t-med);overflow:hidden}.nav-drawer.collapsed{width:60px;flex-basis:60px}.nav-group-top{display:flex;flex-direction:column;gap:var(--sp-2);min-height:0}.nav-head{display:flex;justify-content:flex-end}.nav-drawer.collapsed .nav-head{justify-content:center}.nav-list,.nav-bottom{display:flex;flex-direction:column;gap:var(--sp-1)}.nav-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-3);background:transparent;border:0;border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--fs-sm);font-weight:500;cursor:pointer;text-align:left;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-item-icon{width:20px;flex:0 0 20px;display:inline-flex;align-items:center;justify-content:center}.nav-drawer.collapsed .nav-item-label{display:none}.nav-collapse{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border);border-radius:var(--r-sm);color:var(--ink-3);cursor:pointer}.nav-collapse:hover{color:var(--ink);border-color:var(--ink-3)}.nav-backdrop{display:none;position:fixed;inset:0;z-index:30;background:#0000006b;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.dashboard{flex:1;min-height:0;overflow:auto;padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-6);width:100%}.dash-section{display:flex;flex-direction:column;gap:var(--sp-3)}.dash-h{font-size:var(--fs-lg);font-weight:600;margin:0}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-4)}.dash-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-4);min-height:96px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);cursor:pointer;text-align:left;transition:box-shadow var(--t-fast),border-color var(--t-fast),transform var(--t-fast)}.dash-card:hover:not(:disabled){box-shadow:var(--shadow-2);border-color:var(--ink-3);transform:translateY(-1px)}.dash-card:disabled{cursor:default;opacity:.6}.dash-card-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-md);background:var(--accent-soft);color:var(--accent)}.dash-card-label{font-size:var(--fs-md);font-weight:600;color:var(--ink)}.dash-card-sub{font-size:var(--fs-xs);color:var(--ink-3)}.dash-rows{display:flex;flex-direction:column;gap:var(--sp-1)}.dash-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);color:var(--ink);cursor:pointer;text-align:left;transition:background var(--t-fast),border-color var(--t-fast)}.dash-row:hover{background:var(--surface-2);border-color:var(--ink-3)}.dash-row-icon{color:var(--accent);flex:0 0 auto}.dash-row-title{flex:1;min-width:0;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-row-meta{flex:0 0 auto;font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap}.dash-row-add{color:var(--accent);border-style:dashed}.dash-row-add .dash-row-title{flex:0 0 auto;color:var(--accent)}.profile{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:var(--sp-6);overflow:auto}.profile-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:var(--sp-6);min-width:320px}.profile-avatar{width:64px;height:64px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:var(--accent-ink);font-size:var(--fs-2xl);font-weight:700}.profile-name{font-size:var(--fs-xl);font-weight:600}.profile-meta{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.profile-role{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;padding:1px var(--sp-2);border-radius:999px;background:var(--surface-2);color:var(--ink-2)}.profile-role.admin{background:var(--accent-soft);color:var(--accent);font-weight:600}.profile-since{font-size:var(--fs-sm);color:var(--ink-3)}.profile-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap;justify-content:center}.profile-actions button{font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-3);background:var(--surface);color:var(--ink-2);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer}.profile-actions button:hover{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.account{flex:1;min-height:0;overflow:auto;width:100%;max-width:720px;margin:0 auto;padding:var(--sp-6) var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-5)}.account-head{display:flex;align-items:center;gap:var(--sp-4)}.account-name{font-size:var(--fs-xl);font-weight:600}.account-sub{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1)}.account-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.account-h{margin:0;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);background:var(--surface-2);border-radius:var(--r-lg) var(--r-lg) 0 0}.account-rows{display:flex;flex-direction:column}.account-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.account-row:last-child{border-bottom:0}.account-row-label{display:inline-flex;align-items:center;gap:var(--sp-2);flex:0 0 140px;color:var(--ink-2);font-size:var(--fs-sm);font-weight:500}.account-row-icon{display:inline-flex;color:var(--ink-3)}.account-row-value{flex:1;min-width:0;font-size:var(--fs-sm);color:var(--ink)}.account-row-action{flex:0 0 auto}.account-muted{color:var(--ink-3)}.account-badge{font-size:var(--fs-xs);padding:1px var(--sp-2);border-radius:999px;background:var(--accent-soft);color:var(--accent);font-weight:600}.account-link{display:inline-flex;align-items:center;gap:var(--sp-1);background:transparent;border:0;color:var(--accent);font-size:var(--fs-sm);font-weight:600;cursor:pointer;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm)}.account-link:hover{background:var(--surface-2)}.account-signout{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);background:var(--surface);color:var(--ink-2);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer}.account-signout:hover{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.credits{flex:1;min-height:0;overflow:auto;width:100%;padding:var(--sp-5)}.credits-head{display:flex;flex-wrap:wrap;gap:var(--sp-5);align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);padding:var(--sp-5);margin-bottom:var(--sp-5)}.credits-plan{display:flex;flex-direction:column;gap:var(--sp-1);padding-right:var(--sp-5);border-right:1px solid var(--border);min-width:160px}.credits-plan-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}.credits-plan-name{font-size:var(--fs-2xl);font-weight:700;color:var(--ink);line-height:1.1}.credits-plan-note{font-size:var(--fs-xs);color:var(--ink-3)}.credits-meter{flex:1;min-width:240px;display:flex;flex-direction:column;gap:var(--sp-2)}.credits-meter-top{display:flex;justify-content:space-between;gap:var(--sp-3);font-size:var(--fs-sm);color:var(--ink-2)}.credits-spend{color:var(--ink-3)}.credits-bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.credits-bar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width var(--t-med)}.credits-add{align-self:flex-start;margin-top:var(--sp-2)}@media(max-width:760px){.nav-drawer{position:fixed;top:0;left:0;bottom:0;z-index:40;width:min(82vw,288px);flex-basis:min(82vw,288px);padding:var(--sp-4) var(--sp-3);border-right:1px solid var(--border);box-shadow:var(--shadow-2);transform:translate(0);transition:transform var(--t-med)}.nav-drawer.collapsed{width:min(82vw,288px);flex-basis:min(82vw,288px);padding:var(--sp-4) var(--sp-3);transform:translate(-100%)}.nav-drawer.collapsed .nav-item-label{display:inline}.nav-backdrop{display:block}.nav-item{padding:var(--sp-3);font-size:var(--fs-md)}.topbar{padding:var(--sp-3) var(--sp-4);gap:var(--sp-2)}.topbar-brand{font-size:var(--fs-md)}.app-user{display:none}.dashboard,.credits,.usage,.history-pane,.account,.profile,.viewer-pane{padding:var(--sp-4)}.app-body{padding:var(--sp-4);gap:var(--sp-4)}.history-header{padding:var(--sp-4) var(--sp-4) var(--sp-3)}.credits-plan{border-right:0;border-bottom:1px solid var(--border);padding-right:0;padding-bottom:var(--sp-4)}.credits-head{padding:var(--sp-4);gap:var(--sp-4)}.nav-btn,.variant-btn,.mode-tab,.editor-actions button,.canvas-control-reset,.questions-nav button{min-height:38px}.usage-table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.scene-toolbar-right{flex-wrap:wrap}}.app-header{display:flex;align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);background:var(--surface);color:var(--ink);border-bottom:1px solid var(--border)}.app-header h1{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em;margin:0}.app-subtitle{font-size:var(--fs-sm);color:var(--ink-3)}.app-header-spacer{flex:1}.app-user{font-size:var(--fs-sm);color:var(--ink-3)}.app-user strong{color:var(--ink);font-weight:600}.app-logout{font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-3);background:var(--surface);color:var(--ink-2);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.app-logout:hover{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.app-theme-toggle{width:34px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-lg);line-height:1;background:var(--surface);color:var(--ink-2);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.app-theme-toggle:hover{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.app-tabs{display:inline-flex;align-self:flex-start;gap:var(--sp-1);margin:var(--sp-4) var(--sp-5) 0;padding:var(--sp-1);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md)}.app-tab{background:transparent;border:0;border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;gap:var(--sp-2);transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}.app-tab:hover:not(.active){color:var(--ink)}.app-tab.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);font-weight:600}.app-tab-count{font-size:var(--fs-xs);background:var(--accent-soft);color:var(--accent);padding:1px var(--sp-2);border-radius:999px;font-variant-numeric:tabular-nums;font-weight:600}.app-tab.active .app-tab-count{background:var(--accent);color:var(--accent-ink)}.history-pane{flex:1;min-height:0;width:100%;padding:var(--sp-5);display:flex}.history-pane>*{flex:1;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);overflow:hidden}.app-body{display:flex;flex:1;min-height:0;gap:var(--sp-5);width:100%;padding:var(--sp-5)}.editor-pane.sidebar{flex:0 0 clamp(340px,32%,460px);transition:flex-basis var(--t-med)}.editor-pane.sidebar.collapsed{flex-basis:48px}.viewer-pane{flex:1 1 auto}.editor-pane,.viewer-pane{min-width:0}.sidebar-rail{display:none}.editor-pane.sidebar.collapsed .sidebar-rail{display:flex;flex:1;flex-direction:column;align-items:center;gap:var(--sp-4);width:100%;padding:var(--sp-4) 0;background:transparent;border:0;border-radius:var(--r-lg);color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.editor-pane.sidebar.collapsed .sidebar-rail:hover{background:var(--surface-2);color:var(--ink)}.sidebar-rail-icon{font-size:var(--fs-xl);font-weight:700;line-height:1;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}.sidebar-rail-label{writing-mode:vertical-rl;text-orientation:mixed;white-space:nowrap;font-size:var(--fs-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.sidebar-content{display:flex;flex:1;flex-direction:column;min-height:0}.editor-pane.sidebar.collapsed .sidebar-content{display:none}.sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-3) var(--sp-2);border-bottom:1px solid var(--border)}.sidebar-head-title{font-size:var(--fs-sm);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.sidebar-toggle{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-xl);line-height:1;color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.sidebar-toggle:hover{background:var(--surface);color:var(--ink);border-color:var(--ink-3)}@media(prefers-reduced-motion:reduce){.editor-pane.sidebar{transition:none}}.editor-pane,.viewer-pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);display:flex;flex-direction:column;min-height:0;position:relative}.editor-pane.drag-active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.editor-pane.drag-active:after{content:"Drop image to transcribe";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent-soft) 70%,transparent);border:2px dashed var(--accent);border-radius:var(--r-lg);color:var(--accent);font-size:var(--fs-md);font-weight:600;pointer-events:none;z-index:5}.editor-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:var(--surface-2);border-radius:var(--r-lg) var(--r-lg) 0 0}.editor-header label{font-weight:600;font-size:var(--fs-sm)}.mode-switch{display:inline-flex;gap:var(--sp-1);padding:3px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}.mode-tab{padding:var(--sp-1) var(--sp-3);border:0;background:transparent;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:500;cursor:pointer;color:var(--ink-2);transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}.mode-tab:hover:not(.active){color:var(--ink)}.mode-tab.active{background:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:var(--shadow-1)}.problem-textarea{font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.6}.unsupported-banner{border-top:1px solid color-mix(in srgb,var(--warn) 35%,var(--border));background:color-mix(in srgb,var(--warn) 8%,var(--surface));color:var(--warn);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);line-height:1.55}.unsupported-banner strong{color:var(--warn)}.unsupported-banner .unsupported-hint{margin-top:var(--sp-2);font-size:var(--fs-xs);color:var(--warn);line-height:1.7}.unsupported-banner code{font-family:var(--font-mono);background:color-mix(in srgb,var(--warn) 14%,var(--surface));padding:0 var(--sp-1);border-radius:var(--r-sm);font-size:var(--fs-xs)}.editor-actions{display:inline-flex;gap:var(--sp-2)}.editor-actions button{padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-2);font-size:var(--fs-sm);font-weight:500;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.editor-actions button:hover:not(:disabled){background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.editor-actions button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.editor-actions button.primary:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000);color:var(--accent-ink);border-color:var(--accent)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;padding:var(--sp-2) var(--sp-4);background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:background var(--t-fast)}.btn-primary:hover{background:color-mix(in srgb,var(--accent) 88%,#000)}.editor-actions button:disabled{color:var(--ink-3);cursor:not-allowed;opacity:.7}.editor-actions button.primary:disabled{background:var(--accent);color:var(--accent-ink)}.editor-textarea{flex:1;min-height:0;resize:none;border:1px solid transparent;outline:none;margin:var(--sp-4);padding:var(--sp-4);border-radius:var(--r-md);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.55;color:var(--ink);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.editor-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.editor-textarea::placeholder{color:var(--ink-3)}.validation-errors{border-top:1px solid color-mix(in srgb,var(--err) 30%,var(--border));background:color-mix(in srgb,var(--err) 7%,var(--surface));color:var(--err);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-xs);max-height:35%;overflow-y:auto}.validation-errors strong{color:var(--err);font-size:var(--fs-sm)}.validation-errors ul{margin:var(--sp-2) 0 0 0;padding-left:var(--sp-5)}.validation-errors code{font-family:var(--font-mono);background:color-mix(in srgb,var(--err) 12%,var(--surface));padding:0 var(--sp-1);border-radius:var(--r-sm);font-size:var(--fs-xs)}.err-type{color:var(--err);opacity:.8;font-size:10px;margin-left:var(--sp-1)}.viewer-pane{overflow-y:auto;padding:var(--sp-5)}.empty-viewer{color:var(--ink-3);font-size:var(--fs-md);line-height:1.7;padding:var(--sp-6);text-align:center;margin:auto}.empty-viewer strong{color:var(--ink-2)}.empty-viewer code{font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--surface-2);padding:1px var(--sp-1);border-radius:var(--r-sm)}.scene{display:flex;flex-direction:column;gap:var(--sp-3);min-height:0}.scene-question{padding:var(--sp-3) var(--sp-4);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 25%,var(--border));border-left:3px solid var(--accent);border-radius:var(--r-md);font-size:var(--fs-md);line-height:1.5;color:var(--ink);display:flex;gap:var(--sp-3);align-items:baseline}.scene-question-label{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--accent);background:var(--surface);padding:2px var(--sp-2);border-radius:var(--r-sm);flex:0 0 auto}.scene-question-text{flex:1;font-weight:500}.scene-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-1) 0;flex-wrap:wrap}.scene-toolbar-left{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.scene-toolbar-right{display:flex;align-items:center;gap:var(--sp-2)}.step-indicator{font-size:var(--fs-sm);color:var(--ink-2);font-weight:500;font-variant-numeric:tabular-nums}.variant-btn,.nav-btn{padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);font-size:var(--fs-xs);font-weight:500;color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.variant-btn:hover:not(:disabled),.nav-btn:hover:not(:disabled){background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}.variant-btn.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.variant-btn.eliminated{border-color:color-mix(in srgb,var(--err) 45%,var(--border));color:var(--err);background:color-mix(in srgb,var(--err) 7%,var(--surface))}.variant-btn.eliminated:hover:not(:disabled){background:color-mix(in srgb,var(--err) 13%,var(--surface))}.variant-btn.eliminated.active{background:var(--err);color:var(--accent-ink);border-color:var(--err)}.nav-btn:disabled{color:var(--ink-3);cursor:not-allowed;background:var(--surface-2);opacity:.8}.scene-body{display:grid;grid-template-columns:minmax(0,3fr) minmax(220px,1.25fr);gap:var(--sp-3);min-height:0;flex:1}.scene-viz,.scene-side{display:flex;flex-direction:column;min-width:0}.scene-canvas{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);overflow:auto}.scene-canvas-zoom{transition:width 80ms linear;min-width:100%}.scene-canvas-zoom>svg{display:block}.canvas-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--fs-xs);color:var(--ink-2)}.canvas-control{display:inline-flex;align-items:center;gap:var(--sp-2)}.canvas-control-label{font-weight:600;color:var(--ink-2);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em}.canvas-control input[type=range]{width:110px;accent-color:var(--accent);cursor:pointer}.canvas-control-value{font-variant-numeric:tabular-nums;font-size:var(--fs-xs);color:var(--ink);min-width:36px;text-align:right}.canvas-control-reset{font-size:var(--fs-xs);padding:2px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.canvas-control-reset:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-3)}.canvas-control-reset:disabled{color:var(--ink-3);cursor:not-allowed;background:var(--surface-2);opacity:.8}.clues-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-3);overflow-y:auto;min-height:0}.clues-heading{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border);margin-bottom:var(--sp-2)}.clues-list ul{list-style:none;margin:0;padding:0}.clue-item{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-2) var(--sp-2);margin:3px 0;border-radius:var(--r-sm);font-size:var(--fs-sm);line-height:1.45;color:var(--ink-3);border:1px solid transparent;transition:background var(--t-fast),color var(--t-fast)}.clue-bullet{flex:0 0 auto;font-weight:700;color:var(--ink-3)}.clue-text{flex:1}.clue-item.partial{background:color-mix(in srgb,var(--warn) 10%,var(--surface));color:var(--warn);border-color:color-mix(in srgb,var(--warn) 30%,var(--border));font-weight:500}.clue-item.partial .clue-bullet{color:var(--warn)}.clue-item.used{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,var(--border));font-weight:500}.clue-item.used .clue-bullet{color:var(--accent)}.clue-item.current{background:var(--accent-soft);color:var(--ink);border:2px solid var(--accent);padding:7px var(--sp-2);font-weight:600;box-shadow:0 0 0 3px var(--accent-soft)}.clue-item.current .clue-bullet{color:var(--accent)}.questions-panel{margin-top:var(--sp-3);background:var(--surface);border:1px solid color-mix(in srgb,var(--accent) 28%,var(--border));border-left:3px solid var(--accent);border-radius:var(--r-md);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.questions-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:var(--sp-2)}.questions-title{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--accent);font-variant-numeric:tabular-nums}.questions-nav{display:flex;gap:var(--sp-1)}.questions-nav button{padding:3px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-2);font-size:var(--fs-xs);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.questions-nav button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.questions-nav button:disabled{color:var(--ink-3);border-color:var(--border);cursor:not-allowed;opacity:.7}.question-text{margin:0;font-size:var(--fs-sm);line-height:1.45;color:var(--ink);font-weight:500}.options-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.option-item{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2);font-size:var(--fs-sm);color:var(--ink-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface)}.option-item.answer{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:600}.option-letter{flex:0 0 auto;font-weight:700;min-width:18px}.option-label{flex:1}.question-justification{font-size:var(--fs-sm);line-height:1.45;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 25%,var(--border));border-radius:var(--r-sm);padding:var(--sp-2)}.scene-error{padding:var(--sp-5);color:var(--err);background:color-mix(in srgb,var(--err) 7%,var(--surface));border:1px solid color-mix(in srgb,var(--err) 30%,var(--border));border-radius:var(--r-md)}.scene-error code{font-family:var(--font-mono)}.auth-loading{display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;color:var(--ink-3);font-size:var(--fs-md)}.auth-root{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:var(--sp-5);background:var(--bg)}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-5);box-shadow:var(--shadow-2)}.auth-title{margin:0;font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em;color:var(--ink)}.auth-mode-switch{display:flex;gap:var(--sp-1);padding:var(--sp-1);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md)}.auth-tab{flex:1;background:transparent;border:0;border-radius:var(--r-sm);padding:var(--sp-2) 0;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}.auth-tab:hover:not(.active){color:var(--ink)}.auth-tab.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);font-weight:600}.auth-form{display:flex;flex-direction:column;gap:var(--sp-4)}.auth-label{display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:500;color:var(--ink-2)}.auth-label input{font-size:var(--fs-md);padding:var(--sp-3) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.auth-label input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.auth-error{font-size:var(--fs-sm);padding:var(--sp-3) var(--sp-3);background:color-mix(in srgb,var(--err) 7%,var(--surface));border:1px solid color-mix(in srgb,var(--err) 30%,var(--border));color:var(--err);border-radius:var(--r-sm)}.auth-submit{font-size:var(--fs-md);font-weight:600;padding:var(--sp-3) var(--sp-4);background:var(--accent);color:var(--accent-ink);border:0;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t-fast),box-shadow var(--t-fast)}.auth-submit:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000);box-shadow:var(--shadow-1)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-hint{margin:0;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.5}.history-loading,.history-empty{padding:var(--sp-6) var(--sp-5);color:var(--ink-3);font-size:var(--fs-sm);line-height:1.6}.history-empty strong{display:block;color:var(--ink);font-size:var(--fs-md);margin-bottom:var(--sp-2)}.history-empty-hint{color:var(--ink-3)}.history-empty code,.history-empty-hint code{font-family:var(--font-mono);background:var(--surface-2);padding:0 var(--sp-1);border-radius:var(--r-sm);font-size:var(--fs-xs)}.history-list{display:flex;flex-direction:column;flex:1;min-height:0}.history-header{display:flex;align-items:baseline;justify-content:space-between;padding:var(--sp-4) var(--sp-5) var(--sp-3);border-bottom:1px solid var(--border)}.history-header strong{font-size:var(--fs-md);font-weight:600;color:var(--ink)}.history-count{font-size:var(--fs-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.history-list ul{list-style:none;margin:0;padding:var(--sp-3);overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:var(--sp-2)}.history-item{border:0}.history-row{width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);cursor:pointer;display:flex;flex-direction:column;gap:var(--sp-1);transition:box-shadow var(--t-fast),border-color var(--t-fast),transform var(--t-fast)}.history-row:hover:not(:disabled){box-shadow:var(--shadow-2);border-color:var(--ink-3);transform:translateY(-1px)}.history-row:disabled{opacity:.6;cursor:wait}.history-row-top{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-xs);color:var(--ink-3)}.history-family{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;background:var(--accent-soft);color:var(--accent);padding:1px var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:500}.history-date{font-variant-numeric:tabular-nums}.history-title{font-size:var(--fs-md);font-weight:600;color:var(--ink)}.history-preview{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.history-loading-badge{font-size:var(--fs-xs);color:var(--accent);font-weight:500}.usage{padding:var(--sp-5);overflow-y:auto;height:100%}.usage-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-6)}.usage-card{display:flex;flex-direction:column;gap:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:var(--sp-4)}.usage-card-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600}.usage-card-value{font-size:var(--fs-2xl);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.usage-h{font-size:var(--fs-lg);font-weight:600;color:var(--ink);margin:var(--sp-6) 0 var(--sp-3);letter-spacing:-.01em}.usage-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;font-variant-numeric:tabular-nums}.usage-table thead th{position:sticky;top:0;text-align:left;font-weight:600;color:var(--ink-2);background:var(--surface-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em}.usage-table tbody td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border);color:var(--ink)}.usage-table tbody tr:last-child td{border-bottom:0}.usage-table tbody tr:nth-child(2n){background:var(--surface-2)}.usage-table tbody td:first-child{color:var(--ink-2)}.usage-row-fail td{color:var(--err);background:color-mix(in srgb,var(--err) 7%,var(--surface))!important}.similar-panel{margin:var(--sp-2) var(--sp-4) var(--sp-4);padding:var(--sp-3);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 22%,var(--border));border-radius:var(--r-md);display:flex;flex-direction:column;gap:var(--sp-3)}.similar-panel-header{display:flex;flex-direction:column;gap:2px}.similar-panel-header strong{font-size:var(--fs-sm);font-weight:600;color:var(--accent)}.similar-panel-hint{font-size:var(--fs-xs);color:var(--ink-2)}.similar-match-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.similar-match{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.similar-match.near-identical{border-color:var(--accent);background:var(--accent-soft)}.similar-match-top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2);font-size:var(--fs-xs)}.similar-family{font-family:var(--font-mono);background:var(--surface-2);color:var(--ink-2);padding:2px var(--sp-2);border-radius:var(--r-sm)}.similar-match.near-identical .similar-family{background:var(--surface);color:var(--accent)}.similar-score{color:var(--ink-2);font-variant-numeric:tabular-nums}.similar-title{font-size:var(--fs-sm);font-weight:600;color:var(--ink)}.similar-preview{font-size:var(--fs-xs);color:var(--ink-2);line-height:1.45;white-space:pre-wrap}.similar-actions{display:flex;justify-content:flex-end}.similar-actions button{font-size:var(--fs-sm);padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast)}.similar-actions button:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-3);color:var(--ink)}.similar-panel-footer{display:flex;justify-content:flex-end}.generate-fresh{font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-4)!important;background:var(--accent)!important;color:var(--accent-ink)!important;border-color:var(--accent)!important}.generate-fresh:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000)!important}.diagram-canvas,.diagram-canvas-zoom{width:100%}@media(max-width:900px){.app-content{overflow-y:auto}.app-body{flex-direction:column;flex:1 0 auto;min-height:0}.editor-pane.sidebar,.editor-pane.sidebar.collapsed{flex:0 0 auto}.editor-pane.sidebar.collapsed .sidebar-rail{flex-direction:row}.sidebar-rail-label{writing-mode:horizontal-tb}.editor-textarea{flex:0 0 auto;height:240px;min-height:200px;resize:vertical}.viewer-pane{flex:0 0 auto;min-height:70vh;overflow:visible}.scene-body{grid-template-columns:1fr}}@media(max-width:540px){.dash-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--sp-3)}.usage-cards{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--sp-2)}.account-row{flex-wrap:wrap}.account-row-label{flex:0 0 100%}.account-row-value{flex:1 1 auto}.account-head{gap:var(--sp-3)}.scene-question{flex-direction:column;gap:var(--sp-2)}.scene-question-label{align-self:flex-start}.editor-header{flex-wrap:wrap;gap:var(--sp-2)}.editor-actions{flex-wrap:wrap}.profile-actions{width:100%}.credits-meter-top{flex-direction:column;gap:var(--sp-1)}.app-tabs{margin:var(--sp-3) var(--sp-4) 0}}
