.app-loader{flex:1;width:100%;height:100%;min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--bg-primary);color:var(--text-secondary)}.app-loader-mark{display:flex;flex-direction:column;align-items:center;gap:12px}.app-loader-mark strong{font-size:var(--text-2xl);font-weight:var(--weight-semibold);letter-spacing:-.025em;color:var(--text-primary)}.app-loader-spinner{width:26px;height:26px;border:2px solid var(--border);border-top-color:var(--accent-line);border-radius:var(--radius-full);animation:spin .7s linear infinite}.app-loader-label{margin:0;font-size:var(--text-xs);letter-spacing:.2px}@media(prefers-reduced-motion:reduce){.app-loader-spinner{animation:none;border-color:var(--accent-dim);border-top-color:var(--accent-line)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark light;--bg-canvas: #00254b;--bg-primary: #011a33;--bg-surface: #03213f;--bg-elevated: #122a45;--bg-hover: rgba(150, 205, 255, .07);--text-primary: #e7f2fc;--text-secondary: #b6cade;--text-muted: #8ca6c2;--brass: #f1c035;--brass-dim: rgba(150, 205, 255, .14);--brass-hover: #f9d46b;--brass-ink: #011a33;--mark-top: #fae08e;--mark-side: #c08f22;--mark-front: #f1c035;--mark-seam: #161f1c;--mark-void: #cea037;--mark-datum: #b78a2c;--mark-draft-cage: #4999b0;--cyan-cad: #6fe0ff;--cyan-cad-dim: rgba(111, 224, 255, .16);--cyan-cad-hover: #8ae8ff;--cyan-cad-ink: #001018;--accent-a: var(--brass);--accent-a-dim: var(--brass-dim);--accent-a-hover: var(--brass-hover);--accent-a-text: var(--brass-ink);--accent-a-strong: var(--accent-a);--accent-a-line: var(--accent-a);--accent-b: var(--cyan-cad);--accent-b-dim: var(--cyan-cad-dim);--accent-b-hover: var(--cyan-cad-hover);--accent-b-text: var(--cyan-cad-ink);--accent-b-strong: var(--accent-b);--accent: var(--accent-a);--accent-dim: var(--accent-a-dim);--accent-hover: var(--accent-a-hover);--accent-text: var(--accent-a-text);--accent-strong: var(--accent-a-strong);--accent-line: var(--accent-a-line);--info: var(--accent-b);--success: #4daa77;--success-dim: rgba(77, 170, 119, .16);--success-strong: #61be8a;--success-bg: rgba(77, 170, 119, .88);--danger: #ef7676;--danger-dim: rgba(239, 118, 118, .16);--danger-strong: #fe8383;--danger-text: var(--text-on-color);--danger-bg: rgba(239, 118, 118, .92);--warning: #fea47c;--warning-dim: rgba(254, 164, 124, .16);--warning-strong: var(--warning);--measure-accent: #ff8a3d;--ref-plane: #4488ff;--sel-face: #ffb5f7;--sel-edge: #71b1fe;--sel-vertex: #50c878;--viewport-accent: var(--accent-a);--border: #294f71;--border-focus: var(--accent-a-strong);--snap-color: var(--accent-b);--shadow: rgba(0, 0, 0, .7);--grid-major: rgba(200, 228, 255, .2);--grid-minor: rgba(100, 158, 225, .12);--grid-section: rgba(200, 228, 255, .2);--edge-default: #88aecd;--edge-selected: var(--accent-b);--toast-info-bg: rgba(11, 33, 56, .97);--panel-glass: rgba(11, 33, 56, .95);--panel-glass-strong: rgba(11, 33, 56, .96);--chip-bg: rgba(170, 215, 255, .07);--selection-bg: var(--accent-a-dim);--selection-ring: var(--accent-a);--target-bg: rgba(77, 170, 119, .1);--target-ring: rgba(77, 170, 119, .3);--overlay-scrim: rgba(1, 10, 28, .6);--diff-added: var(--success);--diff-added-dim: var(--success-dim);--diff-modified: var(--warning);--diff-modified-dim: var(--warning-dim);--diff-removed: var(--danger);--diff-removed-dim: var(--danger-dim);--bg-secondary: var(--bg-surface);--bg-tertiary: var(--bg-elevated);--text-xs: 12px;--text-sm: 13px;--text-base: 16px;--text-xl: 20px;--text-2xl: 24px;--text-5xl: 40px;--radius-2xs: 2px;--radius-xs: 3px;--radius-sm: 5px;--radius-md: 7px;--radius-lg: 10px;--radius-xl: 14px;--radius-2xl: 20px;--radius-full: 9999px;--sz-rail: 56px;--sz-tool-btn: 44px;--sz-icon-btn: 32px;--sz-ftb-btn: 36px;--sz-status-bar: 32px;--sz-panel: 280px;--sz-panel-outline: 200px;--sz-panel-props: 280px;--sz-cmdbar: 40px;--sz-cmdbar-sub: 36px;--sz-palette: 560px;--sz-mobile-dock: 56px;--sz-cam-corner: 60px;--sz-mobile-chrome-bottom: calc( var(--sz-status-bar) + env(safe-area-inset-bottom, 0px) );--z-panel: 12;--z-chrome: 20;--z-signed-out-cta: 28;--z-island: 30;--z-feature-panel: 40;--z-popover: 50;--z-rail-panel: 55;--z-disconnect-banner: 100;--z-br-stack: 120;--z-anchored-backdrop: 199;--z-anchored: 200;--z-anchored-popover: 210;--z-consent-banner: 900;--z-modal: 1000;--z-mobile-scrim: 38;--z-mobile-sheet: 40;--z-mobile-dock: 45;--z-mobile-sheet-raised: 50;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--font-ui: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", "Fira Code", "Cascadia Code", monospace;--transition-fast: .12s ease;--axis-x: #fe8481;--axis-x-dim: rgba(254, 132, 129, .18);--axis-y: #63c08b;--axis-y-dim: rgba(99, 192, 139, .18);--axis-z: #80afff;--axis-z-dim: rgba(128, 175, 255, .18);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .65);--text-on-color: #011a33}@media(prefers-color-scheme:light){:root{--bg-canvas: #e2f0fe;--bg-primary: #e8f1fc;--bg-surface: #f4f8fe;--bg-elevated: #ffffff;--bg-hover: rgba(0, 72, 150, .06);--text-primary: #062a52;--text-secondary: #21476f;--text-muted: #41648c;--accent-a: #eeb318;--accent-a-dim: rgba(238, 179, 24, .2);--accent-a-hover: #dd9e00;--accent-a-text: #062a52;--accent-a-strong: var(--text-primary);--accent-a-line: var(--accent-a-strong);--mark-top: #f5cc58;--mark-side: #ba8200;--mark-front: #eeb318;--mark-void: #a17000;--mark-datum: #b78a2c;--mark-draft-cage: #2c80a1;--accent-b: #0f6f94;--accent-b-dim: rgba(15, 111, 148, .12);--accent-b-hover: #0c5d7c;--accent-b-text: #ffffff;--accent-b-strong: var(--accent-b-hover);--border: #adc7e3;--border-focus: var(--accent-a-strong);--snap-color: var(--accent-b);--edge-default: #668aaf;--edge-selected: var(--accent-b);--success: #256f45;--success-dim: rgba(37, 111, 69, .12);--success-strong: #19653c;--success-bg: rgba(37, 111, 69, .9);--danger: #c42828;--danger-dim: rgba(196, 40, 40, .12);--danger-strong: #b00615;--danger-bg: rgba(196, 40, 40, .9);--warning: #8c3c02;--warning-dim: rgba(140, 60, 2, .12);--text-on-color: #ffffff;--measure-accent: #d86602;--ref-plane: #3f83fa;--sel-face: #9b2f6b;--sel-edge: #0a59a7;--sel-vertex: #016831;--viewport-accent: #af7e00;--axis-x: #a6242d;--axis-x-dim: rgba(166, 36, 45, .18);--axis-y: #01673d;--axis-y-dim: rgba(1, 103, 61, .18);--axis-z: #2b57a6;--axis-z-dim: rgba(43, 87, 166, .18);--shadow: rgba(8, 38, 74, .12);--shadow-sm: 0 1px 3px rgba(8, 38, 74, .1);--shadow-md: 0 4px 16px rgba(8, 38, 74, .12);--shadow-lg: 0 12px 40px rgba(8, 38, 74, .16);--shadow-xl: 0 20px 60px rgba(8, 38, 74, .22);--grid-major: rgba(39, 106, 143, .35);--grid-minor: rgba(110, 152, 204, .1);--grid-section: rgba(39, 106, 143, .35);--panel-glass: rgba(250, 252, 255, .93);--panel-glass-strong: rgba(250, 252, 255, .96);--chip-bg: rgba(0, 49, 83, .06);--selection-bg: var(--accent-a-dim);--target-bg: rgba(37, 111, 69, .1);--target-ring: rgba(37, 111, 69, .3);--toast-info-bg: rgba(250, 252, 255, .97)}}html,body,#root{height:100%;width:100%;overflow:hidden;font-family:var(--font-ui);background:var(--bg-primary);color:var(--text-primary)}html.blog-route,html.blog-route body,html.blog-route #root,html.review-route,html.review-route body,html.review-route #root,html.legal-route,html.legal-route body,html.legal-route #root{height:auto;overflow:visible}button{cursor:pointer;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);padding:6px 12px;border-radius:var(--radius-md);font-size:var(--text-base);transition:all .12s}button:where(:not(:disabled)):hover{background:var(--bg-hover)}button:disabled{opacity:.3;cursor:not-allowed}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-xs)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}button:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}input:focus-visible{outline:1px solid var(--border-focus);outline-offset:0}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.primary:where(:not(:disabled)):hover{background:var(--accent-hover)}kbd{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xs);padding:1px 5px;font-size:var(--text-sm);font-family:monospace;color:var(--text-primary);margin-right:4px}.cadre-mark{display:block;overflow:visible}.cadre-mark .f-top{fill:var(--mark-top)}.cadre-mark .f-side{fill:var(--mark-side)}.cadre-mark .f-front{fill:var(--mark-front)}.cadre-mark .f-top,.cadre-mark .f-side,.cadre-mark .f-front{stroke:var(--mark-seam);stroke-width:.7;stroke-linejoin:round}.cadre-mark .vd{fill:none;stroke:var(--mark-void);stroke-width:.34;stroke-dasharray:1.7 1.7;stroke-linejoin:round}.cadre-mark line{stroke:var(--mark-datum);stroke-width:.4;stroke-dasharray:2.4 2.4;stroke-linecap:round}.cadre-mark.cadre-mark--draft polygon{fill:none;stroke:var(--accent-b);stroke-width:.85;stroke-linejoin:round;stroke-linecap:round}.cadre-mark.cadre-mark--draft line{stroke:var(--mark-draft-cage);stroke-width:.6}@keyframes spin{to{transform:rotate(360deg)}}@keyframes obj-spawn{0%{transform:scale(.95);opacity:.6}to{transform:scale(1);opacity:1}}.obj-spawn{animation:obj-spawn .08s ease-out both}@keyframes snap-pulse{0%{opacity:1}60%{opacity:.3}to{opacity:1}}.snap-pulse{animation:snap-pulse .25s ease-out both}@keyframes tool-press{0%{transform:scale(1)}40%{transform:scale(.9)}to{transform:scale(1)}}.tool-press{animation:tool-press .1s ease-out both}.panel-resize-handle{position:absolute;top:0;bottom:0;width:6px;cursor:ew-resize;background:transparent;z-index:1;touch-action:none;transition:background var(--transition-fast)}.panel-resize-handle--left{left:0}.panel-resize-handle--right{right:0}.panel-resize-handle:hover{background:color-mix(in srgb,var(--accent) 35%,transparent)}.panel-resize-handle:focus-visible{background:var(--border-focus);outline:none}.panel-resize-handle:active{background:var(--accent-line)}@media(prefers-reduced-motion:reduce){.panel-resize-handle{transition:none}}@media(max-width:768px){.panel-resize-handle{display:none}}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-in{0%{opacity:0;transform:scale(.96) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes item-in{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.outliner-item-new{animation:item-in .12s ease-out both}@media(max-width:768px){button,.icon-btn{min-height:36px;min-width:36px}::-webkit-scrollbar{width:4px}}@media(hover:none)and (pointer:coarse){button:where(:not(:disabled)):hover{background:var(--bg-surface)}}@keyframes mobile-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-sheet-scrim{display:none}@media(max-width:768px){.mobile-sheet-scrim{display:block;position:fixed;inset:0;bottom:calc(var(--sz-mobile-dock) + var(--sz-mobile-chrome-bottom));background:var(--overlay-scrim);z-index:var(--z-mobile-scrim);animation:scrim-in .15s ease-out}}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){@keyframes mobile-sheet-in{0%{transform:translateY(0)}to{transform:translateY(0)}}@keyframes scrim-in{0%{opacity:1}to{opacity:1}}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.consent-banner{position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:var(--z-consent-banner);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px 16px;width:max-content;max-width:min(640px,calc(100vw - 24px));padding:14px 18px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 34px #00000073;animation:consent-banner-in .22s ease-out both}@keyframes consent-banner-in{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}.consent-banner__text{margin:0;max-width:44ch;font-size:var(--text-sm);line-height:1.5;color:var(--text-secondary)}.consent-banner__link{color:var(--accent-b);text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.consent-banner__actions{display:flex;gap:8px;flex-shrink:0}.consent-banner__btn{font:inherit;font-size:var(--text-sm);font-weight:600;padding:8px 14px;border-radius:8px;border:1px solid transparent;cursor:pointer;white-space:nowrap}.consent-banner__btn--ghost{background:transparent;border-color:var(--border);color:var(--text-secondary)}.consent-banner__btn--ghost:hover{color:var(--text-primary);border-color:var(--text-muted)}.consent-banner__btn--primary{background:var(--accent);color:var(--accent-text)}.consent-banner__btn--primary:hover{background:var(--accent-hover)}.consent-banner__btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){.consent-banner{animation:none;opacity:1;transform:translate(-50%)}}.analytics-notice{position:fixed;right:16px;bottom:calc(var(--sz-status-bar, 32px) + env(safe-area-inset-bottom,0px) + 8px);z-index:var(--z-consent-banner);display:flex;align-items:flex-start;gap:8px;max-width:min(380px,calc(100vw - 24px));padding:10px 10px 10px 14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 10px 34px #00000073;animation:analytics-notice-in .22s ease-out both}@keyframes analytics-notice-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.analytics-notice__text{margin:0;font-size:var(--text-sm);line-height:1.5;color:var(--text-secondary)}.analytics-notice__link{color:var(--accent-b);text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.analytics-notice__turn-off{font:inherit;font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:0;border:none;background:none;color:var(--accent-b);text-decoration:underline;text-underline-offset:2px;cursor:pointer;white-space:nowrap}.analytics-notice__dismiss{flex-shrink:0;margin:-2px 0 0;padding:2px 6px;font:inherit;font-size:var(--text-base);line-height:1;border:none;background:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-xs)}.analytics-notice__dismiss:hover{color:var(--text-primary)}.analytics-notice__link:focus-visible,.analytics-notice__turn-off:focus-visible,.analytics-notice__dismiss:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}@media(prefers-reduced-motion:reduce){.analytics-notice{animation:none;opacity:1;transform:none}}
