.ff-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.ff-shell .app-header{min-height:56px;flex:none}.free-form{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:8px}.free-form p{color:var(--muted);line-height:1.6;margin:8px 0}.free-form button,.free-form select{min-height:36px;padding:6px 12px;color:var(--text);background:var(--surface);border:1px solid var(--control-border);border-radius:8px;font:inherit;font-size:13px}.free-form button{cursor:pointer;font-weight:650}.free-form button:hover:not(:disabled){background:var(--surface-hover)}.free-form button:disabled{opacity:.6;cursor:not-allowed}.free-form .ff-primary,.free-form .ff-submit-button{color:#fff;background:var(--accent);border-color:var(--accent)}.free-form .ff-primary:hover:not(:disabled),.free-form .ff-submit-button:hover:not(:disabled){background:var(--accent-hover)}.free-form input:focus-visible,.free-form select:focus-visible,.free-form summary:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.free-form input{min-height:36px;padding:6px 10px;color:var(--text);background:var(--surface);border:1px solid var(--control-border);border-radius:8px;font:inherit;font-size:13px}.free-form [hidden]{display:none!important}.ff-topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;flex:none}.ff-topbar-start{position:relative;display:flex;align-items:center;gap:12px;min-width:0}.ff-topbar-title{min-width:0;overflow:hidden;font-size:14px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.ff-picker{position:absolute;top:calc(100% + 6px);left:0;z-index:30;width:min(560px,calc(100vw - 32px));padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px rgb(0 0 0/.18)}.ff-picker h2{margin:14px 0 8px;color:var(--muted);font-size:12px;font-weight:700}.ff-picker h2:first-of-type{margin-top:0}.ff-generator{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;align-items:end;gap:8px}.ff-generator label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:700}.ff-picker-list{display:flex;flex-wrap:wrap;gap:8px}.ff-detached,.ff-replace{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;color:var(--amber);background:var(--amber-soft);border:1px solid color-mix(in srgb,var(--amber) 25%,var(--border));border-radius:10px;font-size:13px}.ff-replace{margin-bottom:12px}.free-form .ff-error{color:var(--danger);font-size:13px}.ff-status{justify-self:end;display:flex;align-items:center;gap:8px;min-width:0;color:var(--text);font-size:13px;font-weight:700;white-space:nowrap}.ff-status-dot{flex:0 0 9px;width:9px;height:9px;border-radius:50%;background:var(--control-border)}.ff-status-complete{color:var(--success)}.ff-status-complete .ff-status-dot{background:var(--success)}.ff-status-invalid,.ff-status-offline{color:var(--danger)}.ff-status-invalid .ff-status-dot,.ff-status-offline .ff-status-dot{background:var(--danger)}.ff-status-checking .ff-status-dot{background:var(--accent)}.ff-topbar-actions{display:flex;gap:8px}.ff-solved-mark{color:var(--success)}.ff-panes{flex:1;min-height:0}.ff-pane{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:10px}.ff-pane>section{flex:1;min-height:0}.ff-pane>section,.ff-solver-panel{display:flex;flex-direction:column}.ff-solver{flex:1;min-height:0}.ff-separator{display:flex;align-items:center;justify-content:center;outline:none}.ff-panes>.ff-separator,.ff-solver>.ff-separator{flex:0 0 8px}.ff-separator:after{content:"";border-radius:2px;background:var(--border);transition:background .12s}.ff-panes>.ff-separator:after{width:2px;height:32px}.ff-solver>.ff-separator:after{width:32px;height:2px}.ff-separator:hover:after,.ff-separator[data-separator=active]:after,.ff-separator[data-separator=focus]:after,.ff-separator[data-separator=hover]:after{background:var(--accent)}.ff-panes>.ff-separator[data-separator=active]:after,.ff-panes>.ff-separator[data-separator=focus]:after{height:100%}.ff-solver>.ff-separator[data-separator=active]:after,.ff-solver>.ff-separator[data-separator=focus]:after{width:100%}.ff-pane-tabs{display:flex;flex:none;gap:4px;padding:4px 10px 0;border-bottom:1px solid var(--border)}.free-form .ff-pane-tabs button{min-height:34px;padding:6px 10px;color:var(--muted);background:transparent;border:0;border-bottom:2px solid transparent;border-radius:6px 6px 0 0;font-size:13px}.free-form .ff-pane-tabs button[aria-pressed=true]{color:var(--text);border-bottom-color:var(--accent)}.ff-pane-scroll{flex:1;min-height:0;overflow:auto}.ff-question-body{padding:16px 20px 24px}.ff-question-body h2{margin:0;font-size:20px;line-height:1.3;letter-spacing:-.03em}.ff-question-body h3{margin:20px 0 6px;font-size:13px}.ff-question-body p{font-size:13px}.ff-problem-tags{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 16px}.ff-problem-tags span{padding:4px 9px;border-radius:999px;color:var(--success);background:var(--accent-soft);font-size:11px;font-weight:650;text-transform:capitalize}.ff-problem-tags span+span{color:var(--muted);background:var(--surface-hover)}.ff-formula{padding:14px;overflow:auto;color:var(--text);background:var(--background);border:1px solid var(--border);border-radius:10px;font-size:20px}.ff-formula .math-expression{min-width:max-content}.ff-axioms,.ff-formula pre{overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.free-form .ff-conjecture-note{padding:10px 12px;color:var(--amber);background:var(--amber-soft);border-radius:8px}.ff-guide{margin-top:18px;padding-top:14px;border-top:1px solid var(--border);font-size:12px}.ff-guide summary{cursor:pointer;font-weight:650}.ff-guide ul{padding-left:20px;line-height:1.7}.ff-guide-panel{padding:16px 20px}.ff-guide-panel h2{margin:0 0 12px;font-size:17px}.ff-guide-panel p{margin-bottom:12px;font-size:13px}.ff-pane-header{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex:none;flex-wrap:wrap;padding:6px 8px;border-bottom:1px solid var(--border)}.ff-pane-header>:first-child{margin-right:auto}.free-form .ff-reset-button,.free-form .ff-reset-confirm button{min-height:30px;padding:4px 10px;font-size:12px}.ff-reset-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--text);font-size:12px}.free-form .ff-danger-button{color:#fff;background:var(--danger);border-color:var(--danger)}.free-form .ff-danger-button:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 85%,#000)}.ff-save-state{color:var(--muted);font-size:12px}.ff-save-failed{color:var(--amber)}.ff-portable{padding:2px 8px;border:1px solid var(--success-border);border-radius:999px;color:var(--success);background:var(--success-soft);font-size:12px;white-space:nowrap;cursor:help}.ff-portable-lean{border-color:var(--border);color:var(--muted);background:transparent}.ff-tabs{display:inline-flex;gap:3px;padding:3px;background:var(--surface-hover);border-radius:9px}.free-form .ff-tabs button{min-height:30px;padding:4px 10px;color:var(--muted);background:transparent;border-color:transparent;font-size:12px}.free-form .ff-tabs button[aria-selected=true]{color:var(--text);background:var(--surface);border-color:var(--border);box-shadow:var(--shadow)}.ff-library-modules{position:relative;font-size:12px}.ff-library-modules>summary{padding:6px 10px;border:1px solid var(--control-border);border-radius:8px;cursor:pointer;font-weight:650;list-style:none}.ff-library-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:20;width:min(380px,calc(100vw - 48px));padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgb(0 0 0/.18)}.ff-library-popover>label{display:block;margin-bottom:7px;font-weight:700}.ff-library-popover details>div,.ff-library-popover>div{display:flex;flex-wrap:wrap;gap:7px}.ff-library-popover input,.ff-library-popover select{flex:1 1 200px}.ff-library-popover details{margin-top:8px}.ff-library-popover summary{cursor:pointer}.ff-library-popover details>div{margin-top:8px}.ff-library-popover ul{margin:8px 0 0;padding-left:20px;overflow-wrap:anywhere}.ff-library-popover li{margin:4px 0}.free-form .ff-library-popover li button{min-height:28px;padding:2px 8px;margin-left:5px}.ff-tabpanel{flex:1;min-height:0;display:flex}.ff-ws{flex:1;min-width:0;min-height:0;display:grid;grid-template-columns:208px minmax(0,1fr)}.ff-palette{display:flex;flex-direction:column;gap:6px;min-height:0;padding:8px;background:var(--background);border-right:1px solid var(--border)}.free-form .ff-palette-search{width:100%;min-height:32px}.free-form .ff-palette-hint{margin:0 2px;font-size:11px;line-height:1.4}.ff-palette-list{flex:1;min-height:0;overflow:auto;margin:0 -4px;padding:0 4px}.ff-palette-section+.ff-palette-section{margin-top:4px}.ff-palette-tier+.ff-palette-tier{margin-top:10px;padding-top:8px;border-top:1px solid var(--border)}.ff-palette-tier-heading{padding:0 2px 4px}.ff-palette-tier-name{display:block;color:var(--text);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.free-form .ff-palette-tier-heading p{margin:2px 0 0;color:var(--muted);font-size:11px;line-height:1.35}.ff-palette-mark,.ff-palette-tier-foundations .ff-palette-tier-name{color:var(--success)}.ff-palette-mark{margin-right:5px;font-size:9px;vertical-align:1px}.free-form .ff-palette-heading{display:flex;align-items:center;gap:6px;width:100%;min-height:28px;padding:4px 2px;color:var(--muted);background:transparent;border:0;font-size:12px;font-weight:750;text-align:left}.free-form .ff-palette-heading:hover:not(:disabled){color:var(--text);background:transparent}.ff-palette-heading span{width:10px;font-size:10px}.ff-palette-suggested .ff-palette-heading{color:var(--success)}.ff-palette-group{display:block;margin:6px 2px 2px 18px;color:var(--muted);font-size:11px}.free-form .ff-palette-item{position:relative;display:block;width:100%;min-height:28px;margin:2px 0;padding:4px 8px 4px 9px;overflow:hidden;color:var(--text);background:transparent;border:1px solid transparent;border-left:4px solid hsl(var(--block-hue,155) 29.5% 50.4%);border-radius:6px;font-size:12.5px;font-weight:550;text-align:left;text-overflow:ellipsis;white-space:nowrap}.free-form .ff-palette-item:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border);border-left-color:hsl(var(--block-hue,155) 29.5% 50.4%)}.free-form .ff-palette-suggested .ff-palette-item{background:var(--accent-soft)}.ff-saved-actions{display:grid;gap:6px;padding-top:6px;border-top:1px solid var(--border);font-size:12px}.ff-saved-actions summary{cursor:pointer;color:var(--muted);font-weight:700}.ff-saved-actions[open] summary{margin-bottom:6px}.free-form .ff-saved-actions button,.free-form .ff-saved-actions input{width:100%;min-height:32px;margin-bottom:6px}.ff-canvas{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}.ff-blockly{position:relative;flex:1;min-height:140px}.ff-blockly .blocklySvg{border:0}.ff-blockly .blocklyText{font-size:14px!important}.ff-canvas-tools{position:absolute;top:8px;right:20px;z-index:5;display:flex;gap:4px}.free-form .ff-canvas-tools button{min-height:28px;padding:2px 10px;font-size:12px;box-shadow:var(--shadow)}.ff-canvas-notes{position:absolute;left:10px;right:110px;bottom:10px;z-index:5;pointer-events:none}.free-form .ff-canvas-notes p{display:table;margin:4px 0 0;padding:6px 10px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);font-size:12px}.ff-lean-editor{flex:none;padding:10px 12px;border-top:1px solid var(--border)}.ff-lean-editor label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}.ff-lean-editor textarea{width:100%;min-height:64px;resize:vertical;padding:8px;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:inherit;background:var(--background);border:1px solid var(--border);border-radius:6px}.free-form .ff-lean-editor p{margin:4px 0 0;font-size:12px}.ff-detached{flex:none;margin:0;border-width:1px 0 0;border-radius:0 0 10px 10px}.ff-feedback-body{padding:10px 16px 16px}.ff-feedback-body h2{margin:8px 0;font-size:13px}.ff-feedback-body p{font-size:13px}.free-form .ff-checker-caption{font-size:12px}.free-form .ff-accepted{padding:10px 12px;color:var(--success);background:var(--success-soft);border:1px solid var(--success-border);border-radius:9px;font-weight:650}.free-form .ff-built-pretty{margin:8px 0;padding:8px 10px;overflow-x:auto;background:var(--surface-hover);border-radius:8px;font-size:12px}.ff-built-box{margin:4px 0;padding:2px 0 2px 10px;border-left:2px solid hsl(285 29.5% 50.4%)}.ff-built-head,.ff-built-leaf{font-size:12.5px;line-height:1.6}.ff-built-children{padding-left:4px}.ff-built-mark{color:var(--success);font-size:9px;vertical-align:1px}.ff-built-role{margin-right:6px;color:var(--muted);font-size:11px}.ff-built-hole{color:var(--muted);font-style:italic}.free-form .ff-built-toggle{margin:2px 0;padding:2px 8px;font-size:11.5px}.ff-goal-card{padding:12px;margin-top:8px;background:var(--surface-hover);border-radius:9px}.ff-eyebrow{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.02em}.free-form .ff-goal-math{margin:6px 0 12px;color:var(--text);font-family:Cambria Math,Georgia,serif;font-size:18px;overflow-wrap:anywhere;white-space:pre-wrap}.ff-assumptions{margin:6px 0 0}.ff-assumptions>div{display:flex;gap:8px;margin:4px 0;font-size:13px}.ff-assumptions dt{color:var(--accent);font-weight:700}.ff-assumptions dd{margin:0;overflow-wrap:anywhere}.ff-proof-error{padding:10px 12px;margin:8px 0;color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger-border);border-radius:9px}.ff-proof-error p{color:inherit;white-space:pre-wrap;overflow-wrap:anywhere}.ff-start-tip{padding:10px 12px;background:var(--accent-soft);border-radius:9px}.ff-code{padding:10px 16px 16px}.ff-code-header{display:flex;align-items:start;gap:12px}.free-form .ff-code-header p{flex:1;margin:0;font-size:12px}.free-form .ff-code-header button{flex:none}.ff-code pre{margin:10px 0 0;padding:12px;overflow:auto;background:var(--surface-hover);border-radius:8px;font-size:13px;line-height:1.6}.free-form .ff-problem-tags .ff-tag-solved{color:var(--success);background:var(--success-soft)}.ff-submissions{padding:16px 20px 24px}.ff-verdict{padding:14px 16px;margin:0 0 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface-hover)}.ff-verdict strong{display:block;font-size:22px;letter-spacing:-.02em}.free-form .ff-verdict p{margin:6px 0;font-size:13px}.ff-verdict-complete{background:var(--success-soft);border-color:var(--success-border)}.ff-verdict-complete strong{color:var(--success)}.ff-verdict-invalid{background:var(--danger-soft);border-color:var(--danger-border)}.ff-verdict-invalid strong{color:var(--danger)}.ff-verdict-incomplete{background:var(--amber-soft);border-color:color-mix(in srgb,var(--amber) 25%,var(--border))}.ff-verdict-incomplete strong{color:var(--amber)}.free-form .ff-verdict-pending{color:var(--text)}.ff-verdict-error{max-height:160px;margin:8px 0;padding:8px 10px;overflow:auto;color:var(--danger);background:var(--surface);border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.ff-verdict-stats{display:flex;gap:24px;margin:10px 0 0}.ff-verdict-stats dt{color:var(--muted);font-size:11px;font-weight:700}.ff-verdict-stats dd{margin:2px 0 0;font-size:18px;font-weight:700}.ff-verdict-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.ff-empty-state h2,.ff-history-heading{margin:0 0 6px;font-size:14px}.ff-history{margin:0;padding:0;list-style:none}.ff-history li{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.ff-history-status{min-width:96px;font-weight:700}.ff-history-complete{color:var(--success)}.ff-history-invalid{color:var(--danger)}.ff-history-incomplete{color:var(--amber)}.ff-history-meta{flex:1;color:var(--muted)}.ff-history-confirm{display:flex;gap:6px}.free-form .ff-history button{min-height:28px;padding:2px 10px;font-size:12px}.ff-mobile-tabs{display:none}@media (max-width:900px){.ff-topbar{grid-template-columns:minmax(0,1fr) auto}.ff-topbar-title{display:none}.ff-status{grid-column:1/-1;grid-row:2;justify-self:start}.free-form .ff-separator{display:none!important}.free-form [data-panel]{flex:1 1 100%!important}.free-form[data-view=build] #ff-feedback,.free-form[data-view=build] #ff-problem,.free-form[data-view=goal] #ff-editor,.free-form[data-view=goal] #ff-problem,.free-form[data-view=problem] #ff-solver{display:none!important}.ff-mobile-tabs{display:flex;flex:none;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.free-form .ff-mobile-tabs button{flex:1;border-color:transparent;background:transparent;color:var(--muted)}.free-form .ff-mobile-tabs button[aria-pressed=true]{color:var(--text);background:var(--surface-hover)}}@media (max-width:560px){.ff-generator,.ff-ws{grid-template-columns:minmax(0,1fr)}.ff-ws{grid-template-rows:minmax(0,45%) minmax(0,1fr)}.ff-palette{border-right:0;border-bottom:1px solid var(--border)}.free-form .ff-palette-hint:not(:only-child){display:none}}.ff-canvas-formula{color:#fff;font-size:15px;line-height:1;cursor:pointer}.ff-canvas-formula .katex{font-size:1em}.ff-checkers{margin:8px 0 0;color:var(--muted);font-size:13px}.ff-checkers-complete{color:var(--success)}.ff-badges{margin:0 0 8px;color:var(--muted);font-size:13px}