@charset "UTF-8";:root{--n-color-primary: #4285f4;--n-color-primary-bright: #669df6;--n-color-primary-light: #8ab4f8;--n-color-primary-deep: #1a56c4;--n-color-secondary: #7b5cf6;--n-color-secondary-bright: #9d7bff;--n-color-secondary-deep: #5b3fcc;--n-color-tertiary: #d946ef;--n-color-tertiary-bright: #e879f9;--n-color-tertiary-deep: #a21caf;--n-color-success: #34a853;--n-color-warning: #fbbc05;--n-color-danger: #ea4335;--n-color-info: #4285f4;--n-color-primary-alpha-10: rgba(66, 133, 244, .1);--n-color-secondary-alpha-10: rgba(123, 92, 246, .1);--n-color-tertiary-alpha-10: rgba(217, 70, 239, .1);--n-color-success-alpha-10: rgba(52, 168, 83, .1);--n-color-warning-alpha-10: rgba(251, 188, 5, .1);--n-color-danger-alpha-10: rgba(234, 67, 53, .1);--n-color-info-alpha-10: rgba(66, 133, 244, .1);--n-bg-canvas: #06060e;--n-bg-base: #0a0a15;--n-surface-1: #0f0f1c;--n-surface-2: #141426;--n-surface-3: #1a1a2e;--n-surface-4: #202038;--n-overlay: rgba(6, 6, 14, .9);--n-shell-bg: color-mix(in srgb, var(--n-bg-base) 82%, var(--n-surface-1));--n-sidebar-bg: color-mix(in srgb, var(--n-surface-1) 88%, transparent);--n-toolbar-bg: color-mix(in srgb, var(--n-surface-2) 82%, transparent);--n-command-bar-bg: color-mix(in srgb, var(--n-surface-2) 76%, transparent);--n-stat-card-bg: color-mix(in srgb, var(--n-surface-2) 88%, transparent);--n-metric-card-bg: color-mix(in srgb, var(--n-surface-2) 90%, transparent);--n-data-card-bg: color-mix(in srgb, var(--n-surface-2) 88%, transparent);--n-table-header-bg: color-mix(in srgb, var(--n-surface-3) 86%, transparent);--n-table-row-hover-bg: color-mix(in srgb, var(--n-color-primary) 8%, transparent);--n-overlay-backdrop-bg: rgba(0, 0, 0, .62);--n-overlay-panel-bg: color-mix(in srgb, var(--n-surface-2) 96%, #000);--n-toast-bg: color-mix(in srgb, var(--n-surface-2) 96%, #000);--n-tooltip-bg: color-mix(in srgb, var(--n-surface-4) 96%, #000);--n-popover-bg: color-mix(in srgb, var(--n-surface-2) 96%, #000);--n-dropzone-bg: color-mix(in srgb, var(--n-surface-2) 84%, transparent);--n-dropzone-hover-bg: color-mix(in srgb, var(--n-color-primary) 7%, var(--n-surface-2));--n-file-card-bg: color-mix(in srgb, var(--n-surface-2) 88%, transparent);--n-media-preview-bg: color-mix(in srgb, var(--n-surface-1) 92%, #000);--n-image-compare-handle-bg: color-mix(in srgb, var(--n-surface-2) 96%, #000);--n-ai-surface-bg: color-mix(in srgb, var(--n-surface-2) 94%, #000);--n-ai-surface-border: var(--n-border-1);--n-ai-glow: var(--n-glow-gradient-sm);--n-prompt-bg: color-mix(in srgb, var(--n-surface-2) 94%, #000);--n-prompt-border: var(--n-border-1);--n-chat-user-bg: color-mix(in srgb, var(--n-color-primary) 12%, var(--n-surface-2));--n-chat-assistant-bg: color-mix(in srgb, var(--n-surface-1) 94%, #000);--n-chat-system-bg: color-mix(in srgb, var(--n-surface-3) 88%, #000);--n-chat-border-user: linear-gradient(135deg, rgba(66, 133, 244, .48), rgba(123, 92, 246, .34));--n-chat-border-assistant: linear-gradient(135deg, rgba(123, 92, 246, .48), rgba(217, 70, 239, .38));--n-text-1: rgba(255, 255, 255, .92);--n-text-2: rgba(255, 255, 255, .58);--n-text-3: rgba(255, 255, 255, .34);--n-text-4: rgba(255, 255, 255, .16);--n-border-0: rgba(255, 255, 255, .04);--n-border-1: rgba(255, 255, 255, .07);--n-border-2: rgba(255, 255, 255, .12);--n-border-3: rgba(255, 255, 255, .2);--n-sidebar-border: var(--n-border-1);--n-toolbar-border: var(--n-border-1);--n-data-card-border: var(--n-border-1);--n-table-border: var(--n-border-1);--n-timeline-line: var(--n-border-1);--n-overlay-panel-border: var(--n-border-2);--n-dropzone-border: var(--n-border-2);--n-dropzone-border-active: var(--n-color-primary-bright);--n-dropzone-border-error: var(--n-color-danger);--n-file-card-border: var(--n-border-1);--n-media-preview-border: var(--n-border-1);--n-image-compare-handle-border: rgba(255, 255, 255, .82);--n-pipeline-line: rgba(255, 255, 255, .08);--n-pipeline-step-bg: color-mix(in srgb, var(--n-surface-2) 90%, #000);--n-field-bg: rgba(255, 255, 255, .04);--n-field-bg-hover: rgba(255, 255, 255, .06);--n-field-border: var(--n-border-1);--n-field-border-hover: var(--n-border-2);--n-field-border-focus: var(--n-color-primary-bright);--n-field-placeholder: var(--n-text-3);--n-focus-ring: 0 0 0 3px rgba(66, 133, 244, .2);--n-gradient-gemini: linear-gradient(135deg, #4f8eff 0%, #7b5cf6 40%, #d946ef 72%, #f43f5e 100%);--n-gradient-gemini-90: linear-gradient(90deg, #4f8eff 0%, #7b5cf6 40%, #d946ef 72%, #f43f5e 100%);--n-gradient-gemini-soft: linear-gradient(135deg, rgba(79, 142, 255, .7) 0%, rgba(123, 92, 246, .7) 45%, rgba(217, 70, 239, .6) 75%, rgba(244, 63, 94, .5) 100%);--n-gradient-primary-secondary: linear-gradient(135deg, #4285f4 0%, #7b5cf6 100%);--n-gradient-secondary-tertiary: linear-gradient(135deg, #7b5cf6 0%, #d946ef 100%);--n-gradient-primary-cyan: linear-gradient(135deg, #4285f4 0%, #06b6d4 100%);--n-gradient-surface: linear-gradient(135deg, rgba(66, 133, 244, .06) 0%, rgba(123, 92, 246, .06) 50%, rgba(217, 70, 239, .04) 100%);--n-gradient-surface-strong: linear-gradient(135deg, rgba(66, 133, 244, .12) 0%, rgba(123, 92, 246, .1) 50%, rgba(217, 70, 239, .08) 100%);--n-gradient-border: linear-gradient(135deg, rgba(66, 133, 244, .45) 0%, rgba(123, 92, 246, .4) 50%, rgba(217, 70, 239, .3) 100%);--n-gradient-border-primary: linear-gradient(135deg, rgba(66, 133, 244, .35) 0%, rgba(123, 92, 246, .3) 100%);--n-gradient-border-secondary: linear-gradient(135deg, rgba(123, 92, 246, .4) 0%, rgba(217, 70, 239, .35) 100%);--n-gradient-border-subtle: linear-gradient(135deg, rgba(255, 255, 255, .08) 0%, rgba(255, 255, 255, .04) 100%);--n-font-display: "Plus Jakarta Sans", "Google Sans", system-ui, sans-serif;--n-font-body: "Plus Jakarta Sans", "Google Sans", system-ui, sans-serif;--n-font-mono: "JetBrains Mono", "Cascadia Code", monospace;--n-font-weight-light: 300;--n-font-weight-regular: 400;--n-font-weight-medium: 500;--n-font-weight-semibold: 600;--n-font-weight-bold: 700;--n-font-size-10: .625rem;--n-font-size-11: .6875rem;--n-font-size-12: .75rem;--n-font-size-13: .8125rem;--n-font-size-14: .875rem;--n-font-size-15: .9375rem;--n-font-size-16: 1rem;--n-font-size-18: 1.125rem;--n-font-size-20: 1.25rem;--n-font-size-24: 1.5rem;--n-font-size-28: 1.75rem;--n-font-size-32: 2rem;--n-font-size-36: 2.25rem;--n-font-size-40: 2.5rem;--n-font-size-48: 3rem;--n-font-size-56: 3.5rem;--n-font-size-64: 4rem;--n-space-1: 4px;--n-space-2: 8px;--n-space-3: 12px;--n-space-4: 16px;--n-space-5: 20px;--n-space-6: 24px;--n-space-8: 32px;--n-space-10: 40px;--n-space-12: 48px;--n-space-14: 56px;--n-space-16: 64px;--n-space-20: 80px;--n-space-24: 96px;--n-space-32: 128px;--n-sidebar-width-sm: 220px;--n-sidebar-width-md: 264px;--n-sidebar-width-lg: 312px;--n-toolbar-height: 60px;--n-page-header-gap: var(--n-space-4);--n-timeline-dot-size: 28px;--n-dialog-width-sm: 380px;--n-dialog-width-md: 560px;--n-dialog-width-lg: 720px;--n-dialog-width-xl: 920px;--n-drawer-width-sm: 320px;--n-drawer-width-md: 420px;--n-drawer-width-lg: 560px;--n-drawer-width-xl: 720px;--n-voice-orb-size-sm: 72px;--n-voice-orb-size-md: 112px;--n-voice-orb-size-lg: 148px;--n-voice-orb-gradient-primary: conic-gradient( from 0deg, #4285f4, #7b5cf6, #d946ef, #f43f5e, #4285f4 );--n-voice-orb-gradient-secondary: conic-gradient( from 120deg, #4285f4, #d946ef, #7b5cf6, #4285f4 );--n-voice-orb-core-bg: radial-gradient(circle at 38% 35%, #1a1a2e, #06060e);--n-icon-size-xs: 12px;--n-icon-size-sm: 16px;--n-icon-size-md: 20px;--n-icon-size-lg: 24px;--n-icon-size-xl: 32px;--n-avatar-bg: var(--n-gradient-primary-secondary);--n-progress-bg: rgba(255, 255, 255, .06);--n-progress-fill: var(--n-gradient-primary-secondary);--n-progress-fill-gemini: linear-gradient(90deg, #4f8eff 0%, #7b5cf6 50%, #d946ef 100%);--n-progress-fill-gemini-full: var(--n-gradient-gemini-90);--n-progress-fill-primary: linear-gradient(90deg, #4285f4 0%, #7b5cf6 100%);--n-progress-fill-secondary: linear-gradient(90deg, #7b5cf6 0%, #d946ef 100%);--n-progress-fill-success-blue: linear-gradient(90deg, #34a853 0%, #4285f4 100%);--n-radius-none: 0;--n-radius-xs: 4px;--n-radius-sm: 8px;--n-radius-md: 12px;--n-radius-lg: 16px;--n-radius-xl: 20px;--n-radius-2xl: 24px;--n-radius-3xl: 32px;--n-radius-full: 9999px;--n-elevation-0: none;--n-elevation-1: 0 1px 4px rgba(0, 0, 0, .65);--n-elevation-2: 0 4px 12px rgba(0, 0, 0, .6), 0 1px 4px rgba(0, 0, 0, .4);--n-elevation-3: 0 8px 24px rgba(0, 0, 0, .62), 0 3px 8px rgba(0, 0, 0, .4);--n-elevation-4: 0 16px 40px rgba(0, 0, 0, .66), 0 6px 16px rgba(0, 0, 0, .44);--n-elevation-5: 0 28px 60px rgba(0, 0, 0, .72), 0 12px 28px rgba(0, 0, 0, .5);--n-overlay-panel-shadow: var(--n-elevation-5);--n-glow-primary-xs: 0 0 8px rgba(66, 133, 244, .25);--n-glow-primary-sm: 0 0 18px rgba(66, 133, 244, .32);--n-glow-primary-md: 0 0 30px rgba(66, 133, 244, .38), 0 0 10px rgba(66, 133, 244, .2);--n-glow-primary-lg: 0 0 52px rgba(66, 133, 244, .44), 0 0 20px rgba(66, 133, 244, .26);--n-glow-secondary-sm: 0 0 18px rgba(123, 92, 246, .3);--n-glow-secondary-md: 0 0 30px rgba(123, 92, 246, .36);--n-glow-tertiary-sm: 0 0 18px rgba(217, 70, 239, .28);--n-glow-tertiary-md: 0 0 30px rgba(217, 70, 239, .34);--n-glow-gradient-sm: 0 0 24px rgba(79, 142, 255, .28), 0 0 48px rgba(217, 70, 239, .16);--n-glow-success-sm: 0 0 16px rgba(52, 168, 83, .28);--n-glow-danger-sm: 0 0 16px rgba(234, 67, 53, .28);--n-ease-standard: cubic-bezier(.2, 0, 0, 1);--n-ease-decelerate: cubic-bezier(0, 0, .2, 1);--n-ease-spring: cubic-bezier(.34, 1.56, .64, 1);--n-duration-fast: .15s;--n-duration-base: .25s;--n-duration-slow: .35s;--n-duration-slower: .55s;--n-transition-fast: var(--n-duration-fast) var(--n-ease-standard);--n-transition-base: var(--n-duration-base) var(--n-ease-standard);--n-transition-slow: var(--n-duration-slow) var(--n-ease-decelerate);--n-transition-spring: var(--n-duration-slower) var(--n-ease-spring);--n-z-sticky: 200;--n-z-overlay: 300;--n-z-modal: 400;--n-z-toast: 500}.n-theme-dark,[data-n-theme=dark]{color-scheme:dark;--n-bg-canvas: #06060e;--n-bg-base: #0a0a15;--n-surface-1: #0f0f1c;--n-surface-2: #141426;--n-surface-3: #1a1a2e;--n-surface-4: #202038;--n-text-1: rgba(255, 255, 255, .92);--n-text-2: rgba(255, 255, 255, .58);--n-text-3: rgba(255, 255, 255, .34);--n-text-4: rgba(255, 255, 255, .16)}.n-theme-light,[data-n-theme=light]{color-scheme:light}:root,.n-theme-dark,[data-n-theme=dark]{--mat-app-background-color: var(--n-bg-canvas);--mat-app-text-color: var(--n-text-1);--mat-sys-primary: var(--n-color-primary);--mat-sys-on-primary: #ffffff;--mat-sys-primary-container: rgba(66, 133, 244, .1);--mat-sys-on-primary-container: var(--n-color-primary);--mat-sys-secondary: var(--n-color-secondary);--mat-sys-on-secondary: #ffffff;--mat-sys-secondary-container: rgba(123, 92, 246, .1);--mat-sys-on-secondary-container: var(--n-color-secondary);--mat-sys-tertiary: var(--n-color-tertiary);--mat-sys-on-tertiary: #ffffff;--mat-sys-tertiary-container: rgba(217, 70, 239, .1);--mat-sys-on-tertiary-container: var(--n-color-tertiary);--mat-sys-surface: var(--n-surface-1);--mat-sys-surface-container-lowest: var(--n-bg-canvas);--mat-sys-surface-container-low: var(--n-bg-base);--mat-sys-surface-container: var(--n-surface-2);--mat-sys-surface-container-high: var(--n-surface-3);--mat-sys-surface-container-highest: var(--n-surface-4);--mat-sys-background: var(--n-bg-canvas);--mat-sys-on-surface: var(--n-text-1);--mat-sys-on-surface-variant: var(--n-text-2);--mat-sys-on-background: var(--n-text-1);--mat-sys-outline: var(--n-border-2);--mat-sys-outline-variant: var(--n-border-1);--mat-sys-error: var(--n-color-danger);--mat-sys-on-error: #ffffff;--mat-sys-shape-corner-extra-small: var(--n-radius-xs);--mat-sys-shape-corner-small: var(--n-radius-sm);--mat-sys-shape-corner-medium: var(--n-radius-md);--mat-sys-shape-corner-large: var(--n-radius-lg);--mat-sys-shape-corner-extra-large: var(--n-radius-xl);--mat-sys-shape-corner-full: var(--n-radius-full)}:root{--nn-bg-canvas: var(--n-bg-canvas);--nn-bg-base: var(--n-bg-base);--nn-overlay: var(--n-overlay);--nn-surface-1: var(--n-surface-1);--nn-surface-2: var(--n-surface-2);--nn-surface-3: var(--n-surface-3);--nn-surface-4: var(--n-surface-4);--nn-b0: var(--n-border-0);--nn-b1: var(--n-border-1);--nn-b2: var(--n-border-2);--nn-b3: var(--n-border-3);--nn-blue-primary: var(--n-color-primary);--nn-blue-bright: var(--n-color-primary-bright);--nn-blue-light: var(--n-color-primary-light);--nn-blue-deep: var(--n-color-primary-deep);--nn-violet-primary: var(--n-color-secondary);--nn-violet-deep: var(--n-color-secondary-deep);--nn-pink-primary: var(--n-color-tertiary);--nn-pink-bright: var(--n-color-tertiary-bright);--nn-pink-deep: var(--n-color-tertiary-deep);--nn-success: var(--n-color-success);--nn-warning: var(--n-color-warning);--nn-error: var(--n-color-danger);--nn-info: var(--n-color-info);--nn-t1: var(--n-text-1);--nn-t2: var(--n-text-2);--nn-t3: var(--n-text-3);--nn-t4: var(--n-text-4);--nn-font-d: var(--n-font-display);--nn-font-b: var(--n-font-body);--nn-font-m: var(--n-font-mono);--nn-r-none: var(--n-radius-none);--nn-r-xs: var(--n-radius-xs);--nn-r-sm: var(--n-radius-sm);--nn-r-md: var(--n-radius-md);--nn-r-lg: var(--n-radius-lg);--nn-r-xl: var(--n-radius-xl);--nn-r-full: var(--n-radius-full);--nn-grad-g: var(--n-gradient-gemini);--nn-grad-g-90: var(--n-gradient-gemini-90);--nn-grad-blue-v: var(--n-progress-fill-primary);--nn-grad-v-pink: var(--n-progress-fill-secondary);--nn-grad-surface: var(--n-gradient-surface);--nn-border-grad: var(--n-gradient-border);--nn-border-grad-b: var(--n-gradient-border-primary);--nn-border-grad-v: var(--n-gradient-border-secondary);--nn-border-subtle: var(--n-gradient-border-subtle);--nn-s1: var(--n-space-1);--nn-s2: var(--n-space-2);--nn-s3: var(--n-space-3);--nn-s4: var(--n-space-4);--nn-s5: var(--n-space-5);--nn-s6: var(--n-space-6);--nn-s8: var(--n-space-8);--nn-s10: var(--n-space-10);--nn-s12: var(--n-space-12);--nn-s14: var(--n-space-14);--nn-s16: var(--n-space-16);--nn-s20: var(--n-space-20);--nn-s24: var(--n-space-24);--nn-s32: var(--n-space-32);--nn-r-2xl: 28px;--nn-r-3xl: 40px;--nn-elev-0: var(--n-elevation-0);--nn-elev-1: var(--n-elevation-1);--nn-elev-2: var(--n-elevation-2);--nn-elev-3: var(--n-elevation-3);--nn-elev-4: var(--n-elevation-4);--nn-elev-5: var(--n-elevation-5);--nn-glow-teal-xs: var(--n-glow-primary-xs);--nn-glow-teal-sm: var(--n-glow-primary-sm);--nn-glow-teal-md: var(--n-glow-primary-md);--nn-glow-teal-lg: var(--n-glow-primary-lg);--nn-glow-blue-sm: var(--n-glow-secondary-sm);--nn-glow-blue-md: var(--n-glow-secondary-md);--nn-glow-violet-sm: var(--n-glow-tertiary-sm);--nn-glow-violet-md: var(--n-glow-tertiary-md);--nn-glow-g-sm: var(--n-glow-gradient-sm);--nn-glow-success-sm: var(--n-glow-success-sm);--nn-glow-error-sm: var(--n-glow-danger-sm);--nn-sz-10: var(--n-font-size-10);--nn-sz-11: var(--n-font-size-11);--nn-sz-12: var(--n-font-size-12);--nn-sz-13: var(--n-font-size-13);--nn-sz-14: var(--n-font-size-14);--nn-sz-15: var(--n-font-size-15);--nn-sz-16: var(--n-font-size-16);--nn-sz-18: var(--n-font-size-18);--nn-sz-20: var(--n-font-size-20);--nn-sz-24: var(--n-font-size-24);--nn-sz-28: var(--n-font-size-28);--nn-sz-32: var(--n-font-size-32);--nn-sz-36: var(--n-font-size-36);--nn-sz-40: var(--n-font-size-40);--nn-sz-48: var(--n-font-size-48);--nn-sz-56: var(--n-font-size-56);--nn-sz-64: var(--n-font-size-64);--nn-w-light: var(--n-font-weight-light);--nn-w-regular: var(--n-font-weight-regular);--nn-w-medium: var(--n-font-weight-medium);--nn-w-semibold: var(--n-font-weight-semibold);--nn-w-bold: var(--n-font-weight-bold);--nn-ease-std: var(--n-ease-standard);--nn-ease-decel: var(--n-ease-decelerate);--nn-ease-spring: var(--n-ease-spring);--nn-dur-sm: var(--n-duration-fast);--nn-dur-md: var(--n-duration-base);--nn-dur-lg: var(--n-duration-slow);--nn-dur-xl: var(--n-duration-slower);--nn-t-fast: var(--n-transition-fast);--nn-t-base: var(--n-transition-base);--nn-t-slow: var(--n-transition-slow);--nn-t-spring: var(--n-transition-spring);--nn-z-sticky: var(--n-z-sticky);--nn-z-overlay: var(--n-z-overlay);--nn-z-modal: var(--n-z-modal);--nn-z-toast: var(--n-z-toast);--nn-grad-blue-cyan: var(--n-gradient-primary-cyan);--nn-grad-g-soft: var(--n-gradient-gemini-soft);--nn-grad-surface-strong: var(--n-gradient-surface-strong);--nn-blue-10: var(--n-color-primary-alpha-10);--nn-blue-15: rgba(66, 133, 244, .15);--nn-blue-20: rgba(66, 133, 244, .2);--nn-violet-10: var(--n-color-secondary-alpha-10);--nn-violet-15: rgba(123, 92, 246, .15);--nn-violet-20: rgba(123, 92, 246, .2);--nn-pink-10: var(--n-color-tertiary-alpha-10);--nn-pink-15: rgba(217, 70, 239, .15);--nn-success-10: var(--n-color-success-alpha-10);--nn-warning-10: var(--n-color-warning-alpha-10);--nn-error-10: var(--n-color-danger-alpha-10);--nn-info-10: var(--n-color-info-alpha-10)}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;position:fixed;z-index:var(--n-z-modal)}.cdk-overlay-container{inset:0}.cdk-global-overlay-wrapper{display:flex;inset:0}.cdk-overlay-pane{pointer-events:auto;position:absolute}.n-dialog-overlay-panel,.n-drawer-overlay-panel,.n-toast-overlay-panel,.n-tooltip-overlay-panel,.n-popover-overlay-panel,.n-split-button-overlay-panel{pointer-events:auto}.n-overlay-backdrop,.n-overlay-transparent-backdrop{position:absolute;inset:0;pointer-events:auto}.n-overlay-backdrop{background:var(--n-overlay-backdrop-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.n-overlay-transparent-backdrop{background:transparent}.n-toast-overlay-panel{position:fixed}.n-glass-panel{padding:16px;border-radius:14px;min-width:200px;border:1px solid transparent;background:linear-gradient(#141426e0,#0f0f1ceb) padding-box,var(--n-gradient-border-primary) border-box;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 8px 28px #00000080}.n-ctx-menu{min-width:178px;border-radius:12px;padding:4px;border:1px solid transparent;background:linear-gradient(var(--n-surface-3),var(--n-surface-3)) padding-box,var(--n-gradient-border-subtle, var(--n-border-1)) border-box;box-shadow:0 8px 24px #0000008c}.n-ctx-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;font-size:12.5px;color:var(--n-text-2);cursor:pointer;transition:background var(--n-transition-fast),color var(--n-transition-fast)}.n-ctx-item:hover{background:#ffffff0d;color:var(--n-text-1)}.n-ctx-item.n-ctx-item--active{background:#4285f41a;color:var(--n-color-primary-bright, #4285F4)}.n-ctx-item--danger,.n-ctx-item--danger:hover{color:var(--n-color-danger, #EA4335)}.n-tooltip{position:relative;max-width:320px;padding:5px 10px;border:1px solid var(--n-border-2);border-radius:7px;background:var(--n-tooltip-bg);color:var(--n-text-2);box-shadow:0 4px 14px #00000080;font-size:11.5px;line-height:1.45;white-space:nowrap}.n-tooltip__arrow{position:absolute;width:0;height:0;border-style:solid;pointer-events:none}.n-tooltip--top .n-tooltip__arrow{top:100%;left:50%;transform:translate(-50%);border-width:5px 5px 0;border-color:var(--n-tooltip-bg) transparent transparent}.n-tooltip--bottom .n-tooltip__arrow{bottom:100%;left:50%;transform:translate(-50%);border-width:0 5px 5px;border-color:transparent transparent var(--n-tooltip-bg)}.n-tooltip--left .n-tooltip__arrow{left:100%;top:50%;transform:translateY(-50%);border-width:5px 0 5px 5px;border-color:transparent transparent transparent var(--n-tooltip-bg)}.n-tooltip--right .n-tooltip__arrow{right:100%;top:50%;transform:translateY(-50%);border-width:5px 5px 5px 0;border-color:transparent var(--n-tooltip-bg) transparent transparent}body{margin:0;background:var(--n-bg-canvas);color:var(--n-text-1);font-family:var(--n-font-body);font-size:var(--n-font-size-14);font-weight:var(--n-font-weight-regular);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}input[type=text],input[type=password],input[type=number],input[type=tel],input[type=email],input[type=url],input[type=search]{box-sizing:border-box;width:100%;min-width:0;height:44px;padding:0 var(--n-space-4, 16px);border:1px solid var(--n-field-border);border-radius:var(--n-radius-md);background:var(--n-field-bg);color:var(--n-text-1);font:inherit;letter-spacing:0;outline:none;transition:background var(--n-transition-fast),border-color var(--n-transition-fast),box-shadow var(--n-transition-fast),opacity var(--n-transition-fast)}input[type=text]:hover:not(:disabled),input[type=password]:hover:not(:disabled),input[type=number]:hover:not(:disabled),input[type=tel]:hover:not(:disabled),input[type=email]:hover:not(:disabled),input[type=url]:hover:not(:disabled),input[type=search]:hover:not(:disabled){background:var(--n-field-bg-hover);border-color:var(--n-field-border-hover)}input[type=text]:focus-visible,input[type=password]:focus-visible,input[type=number]:focus-visible,input[type=tel]:focus-visible,input[type=email]:focus-visible,input[type=url]:focus-visible,input[type=search]:focus-visible{border-color:var(--n-field-border-focus);box-shadow:var(--n-focus-ring)}input:disabled{opacity:.58;cursor:not-allowed}input::placeholder{color:var(--n-field-placeholder)}.nn-card{position:relative;display:block;padding:22px;border:1px solid transparent;border-radius:var(--nn-r-lg);background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box;color:var(--nn-t1);overflow:hidden;transition:transform var(--nn-t-base),box-shadow var(--nn-t-base),background var(--nn-t-base)}.nn-card:before{content:"";position:absolute;inset:0;background:var(--nn-grad-surface);opacity:0;transition:opacity var(--nn-t-base);pointer-events:none}.nn-card:hover:before{opacity:1}.nn-card:hover{transform:translateY(-2px);box-shadow:var(--nn-elev-3),var(--nn-glow-g-sm);background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad) border-box}.nn-card--blue,.nn-card.bv{background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-b) border-box}.nn-card--blue:hover,.nn-card.bv:hover{background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad-b) border-box}.nn-card--violet,.nn-card.vp{background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-v) border-box}.nn-card--violet:hover,.nn-card.vp:hover{background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad-v) border-box}.elev-0,.nn-elev-0{box-shadow:var(--nn-elev-0)}.elev-1,.nn-elev-1{box-shadow:var(--nn-elev-1)}.elev-2,.nn-elev-2{box-shadow:var(--nn-elev-2)}.elev-3,.nn-elev-3{box-shadow:var(--nn-elev-3)}.elev-4,.nn-elev-4{box-shadow:var(--nn-elev-4)}.elev-5,.nn-elev-5{box-shadow:var(--nn-elev-5)}.glow-blue-md{box-shadow:var(--nn-glow-teal-md)}.glow-violet-md{box-shadow:var(--nn-glow-blue-md)}.glow-pink-md{box-shadow:var(--nn-glow-violet-md)}.glow-gemini{box-shadow:var(--nn-glow-g-sm)}.glow-success{box-shadow:var(--nn-glow-success-sm)}.glow-error{box-shadow:var(--nn-glow-error-sm)}.n-glow-text-gemini{background:var(--n-gradient-gemini);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.n-glow-text-blue-v{background:var(--n-progress-fill-primary);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.n-glow-text-v-pink{background:var(--n-progress-fill-secondary);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.n-glow-text-white-fade{background:linear-gradient(90deg,#ffffffe6,#ffffff59);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.n-neon-chip{display:inline-flex;align-items:center;padding:12px 16px;border:1px solid transparent;border-radius:var(--n-radius-lg);font-size:13px;color:var(--n-text-2)}.n-neon-chip--blue{background:linear-gradient(var(--n-surface-2),var(--n-surface-2)) padding-box,var(--n-gradient-border-primary) border-box;box-shadow:var(--n-glow-primary-sm)}.n-neon-chip--violet{background:linear-gradient(var(--n-surface-2),var(--n-surface-2)) padding-box,var(--n-gradient-border-secondary) border-box;box-shadow:var(--n-glow-secondary-sm)}.n-neon-chip--gemini{background:linear-gradient(var(--n-surface-2),var(--n-surface-2)) padding-box,var(--n-gradient-border) border-box;box-shadow:var(--n-glow-gradient-sm);font-weight:600}.n-neon-chip--gemini .n-neon-chip__label{background:var(--n-gradient-gemini);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent}.n-neon-chip--success{border-color:#34a85380;background:#34a8530f;box-shadow:var(--n-glow-success-sm);font-family:var(--n-font-mono);font-size:12px;color:var(--n-color-success)}.n-neon-chip--error{border-color:#ea433580;background:#ea43350f;box-shadow:var(--n-glow-danger-sm);font-family:var(--n-font-mono);font-size:12px;color:var(--n-color-danger)}.r-none{border-radius:var(--nn-r-none)}.r-xs{border-radius:var(--nn-r-xs)}.r-sm{border-radius:var(--nn-r-sm)}.r-md{border-radius:var(--nn-r-md)}.r-lg{border-radius:var(--nn-r-lg)}.r-xl{border-radius:var(--nn-r-xl)}.r-2xl{border-radius:var(--nn-r-2xl)}.r-full{border-radius:var(--nn-r-full)}.sz-64{font-family:var(--nn-font-d);font-size:var(--nn-sz-64);font-weight:800;line-height:1.1;letter-spacing:-.04em}.sz-48{font-family:var(--nn-font-d);font-size:var(--nn-sz-48);font-weight:700;line-height:1.15;letter-spacing:-.03em}.sz-36{font-family:var(--nn-font-d);font-size:var(--nn-sz-36);font-weight:600;line-height:1.2;letter-spacing:-.02em}.sz-28{font-family:var(--nn-font-d);font-size:var(--nn-sz-28);font-weight:600;line-height:1.25;letter-spacing:-.02em}.sz-24{font-family:var(--nn-font-d);font-size:var(--nn-sz-24);font-weight:500;line-height:1.3;letter-spacing:-.01em}.sz-20{font-family:var(--nn-font-d);font-size:var(--nn-sz-20);font-weight:500;line-height:1.35}.sz-16{font-family:var(--nn-font-b);font-size:var(--nn-sz-16);font-weight:400;line-height:1.45}.sz-14{font-family:var(--nn-font-b);font-size:var(--nn-sz-14);font-weight:400;line-height:1.5}.sz-13{font-family:var(--nn-font-b);font-size:var(--nn-sz-13);font-weight:500;line-height:1.4}.sz-11{font-family:var(--nn-font-b);font-size:var(--nn-sz-11);font-weight:600;line-height:1.3;text-transform:uppercase;letter-spacing:.05em}.mono{font-family:var(--nn-font-m);font-size:13px;line-height:1.4}.p-s1{padding:var(--nn-s1)}.p-s2{padding:var(--nn-s2)}.p-s3{padding:var(--nn-s3)}.p-s4{padding:var(--nn-s4)}.p-s5{padding:var(--nn-s5)}.p-s6{padding:var(--nn-s6)}.p-s8{padding:var(--nn-s8)}.p-s10{padding:var(--nn-s10)}.p-s12{padding:var(--nn-s12)}.p-s16{padding:var(--nn-s16)}.m-s1{margin:var(--nn-s1)}.m-s2{margin:var(--nn-s2)}.m-s3{margin:var(--nn-s3)}.m-s4{margin:var(--nn-s4)}.m-s5{margin:var(--nn-s5)}.m-s6{margin:var(--nn-s6)}.m-s8{margin:var(--nn-s8)}.m-s10{margin:var(--nn-s10)}.m-s12{margin:var(--nn-s12)}.m-s16{margin:var(--nn-s16)}.gap-s1{gap:var(--nn-s1)}.gap-s2{gap:var(--nn-s2)}.gap-s3{gap:var(--nn-s3)}.gap-s4{gap:var(--nn-s4)}.gap-s5{gap:var(--nn-s5)}.gap-s6{gap:var(--nn-s6)}.gap-s8{gap:var(--nn-s8)}.gap-s10{gap:var(--nn-s10)}.gap-s12{gap:var(--nn-s12)}.gap-s16{gap:var(--nn-s16)}.n-badge-notification{position:absolute;top:-5px;right:-5px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border:2px solid var(--n-bg-canvas);border-radius:var(--n-radius-full);background:var(--n-color-danger);color:#fff;font-family:var(--n-font-mono);font-size:9px;font-weight:700;line-height:1;white-space:nowrap;pointer-events:none;z-index:var(--n-z-badge, 10)}.n-badge-notification--dot{top:-3px;right:-3px;width:9px;height:9px;min-width:0;padding:0}.n-badge-notification--neutral{background:var(--n-surface-3);border-color:var(--n-bg-canvas);color:var(--n-text-2)}.n-badge-notification--gradient{background:var(--n-gradient-gemini);color:#fff}.n-badge-notification--primary{background:var(--n-color-primary);color:#fff}.n-badge-notification--secondary{background:var(--n-color-secondary);color:#fff}.n-badge-notification--tertiary{background:var(--n-color-tertiary);color:#fff}.n-badge-notification--success{background:var(--n-color-success);color:#fff}.n-badge-notification--warning{background:var(--n-color-warning);color:#fff}.n-badge-notification--danger{background:var(--n-color-danger);color:#fff}.n-badge-notification--info{background:var(--n-color-info);color:#fff}:root{--tw-ambient: rgba(66, 133, 244, .07);--tw-card-glow-border: rgba(66, 133, 244, .25);--tw-card-glow-fill: rgba(66, 133, 244, .17);--tw-card-glow-soft: rgba(217, 70, 239, .08);--tw-oss-glow-border: rgba(123, 92, 246, .25);--tw-oss-glow-fill: rgba(123, 92, 246, .17);--tw-cta-glow: rgba(123, 92, 246, .16)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;overflow-x:clip}body{font-family:var(--nn-font-b);background:var(--nn-bg-canvas);color:var(--nn-t1);min-height:100vh;-webkit-font-smoothing:antialiased;overflow-x:clip;position:relative}.gemini-bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:var(--nn-bg-canvas)}.gb{position:absolute;border-radius:50%;filter:blur(110px);will-change:transform,opacity;mix-blend-mode:screen}.gb-1{width:56vw;height:56vw;max-width:820px;max-height:820px;top:-18%;left:-14%;background:radial-gradient(circle,#4285f46b,#4285f400 70%)}.gb-2{width:50vw;height:50vw;max-width:760px;max-height:760px;top:6%;right:-16%;background:radial-gradient(circle,#7b5cf661,#7b5cf600 70%)}.gb-3{width:52vw;height:52vw;max-width:780px;max-height:780px;bottom:-20%;left:8%;background:radial-gradient(circle,#d946ef4d,#d946ef00 70%)}.gb-4{width:38vw;height:38vw;max-width:560px;max-height:560px;bottom:-6%;right:6%;background:radial-gradient(circle,#06b6d43d,#06b6d400 70%)}.gb-5{width:34vw;height:34vw;max-width:480px;max-height:480px;top:38%;left:36%;background:radial-gradient(circle,#f43f5e29,#f43f5e00 70%)}.gemini-bg-grain{position:absolute;inset:0;background:radial-gradient(circle at 50% 0%,transparent 0%,var(--nn-bg-canvas) 92%)}.topnav,.page-wrap{position:relative;z-index:1}@media(prefers-reduced-motion:reduce){.gb{transition:none}}.g-text{background:var(--nn-grad-g);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.g-text-bv{background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.g-text-soft{background:linear-gradient(135deg,#fff,#a5c0ff 28%,#c4b0ff 54%,#f0abfc 78%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.g-border{border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box}.g-border-2{border:1px solid transparent;background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad) border-box}.g-border-b{border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-b) border-box}.g-border-v{border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-v) border-box}.topnav{position:fixed;top:0;left:0;right:0;z-index:var(--nn-z-sticky);height:58px;display:flex;align-items:center;padding:0 36px;background:#06060ee0;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--nn-b0)}.nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;cursor:pointer;flex-shrink:0;margin-right:28px;-webkit-user-select:none;user-select:none}.nav-logo-mark{width:30px;height:30px;border-radius:8px;background:var(--nn-grad-g);display:flex;align-items:center;justify-content:center;font-family:var(--nn-font-d);font-size:11px;font-weight:800;color:#fff;letter-spacing:-.04em;flex-shrink:0}.nav-logo-name{font-family:var(--nn-font-d);font-size:13.5px;font-weight:700;color:var(--nn-t1);letter-spacing:-.025em;line-height:1.2}.nav-logo-role{font-family:var(--nn-font-m);font-size:8.5px;color:var(--nn-t4);letter-spacing:.04em;display:block}.nav-links{display:flex;align-items:center;gap:1px;flex:1;overflow:hidden}.nav-link{display:flex;align-items:center;padding:5px 11px;border-radius:7px;font-size:12.5px;font-weight:500;color:var(--nn-t2);text-decoration:none;cursor:pointer;transition:all var(--nn-t-fast);position:relative;white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;background:transparent}.nav-link:hover{color:var(--nn-t1);background:#ffffff0a}.nav-link.active{color:var(--nn-t1);background:#4285f414}.nav-link.active:after{content:"";position:absolute;bottom:-1px;left:10px;right:10px;height:2px;border-radius:2px 2px 0 0;background:var(--nn-grad-blue-v)}.nav-cta{margin-left:auto;padding:7px 18px;border-radius:var(--nn-r-full);font-size:12.5px;font-weight:600;color:#fff;background:var(--nn-grad-blue-v);border:none;cursor:pointer;transition:all var(--nn-t-base);flex-shrink:0;text-decoration:none;display:inline-flex;align-items:center}.nav-cta:hover{opacity:.88;transform:translateY(-1px);box-shadow:var(--nn-glow-teal-sm)}.page-wrap{padding-top:58px;min-height:100vh}.page-wrap--chromeless{padding-top:0;min-height:100dvh;overflow-x:clip}.page{display:none}.page.active{display:block}.content{max-width:1200px;margin:0 auto;padding:0 40px}.content-narrow{max-width:860px;margin:0 auto;padding:0 40px}.btn-primary{display:inline-flex;align-items:center;gap:7px;padding:11px 26px;border-radius:var(--nn-r-full);font-size:13.5px;font-weight:600;color:#fff;background:var(--nn-grad-blue-v);border:none;cursor:pointer;transition:all var(--nn-t-base);text-decoration:none}.btn-primary:hover{opacity:.88;transform:translateY(-2px);box-shadow:var(--nn-glow-teal-md)}.btn-secondary{display:inline-flex;align-items:center;gap:7px;padding:10px 22px;border-radius:var(--nn-r-full);font-size:13.5px;font-weight:600;color:var(--nn-blue-bright);background:var(--nn-blue-10);border:1px solid rgba(66,133,244,.22);cursor:pointer;transition:all var(--nn-t-base);text-decoration:none}.btn-secondary:hover{color:var(--nn-blue-light);background:var(--nn-blue-15);border-color:#4285f459;box-shadow:var(--nn-glow-teal-xs)}.btn-sm{display:inline-flex;align-items:center;gap:5px;padding:6px 15px;border-radius:var(--nn-r-full);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--nn-t-fast);text-decoration:none;border:none}.btn-sm-primary{color:#fff;background:var(--nn-grad-blue-v)}.btn-sm-primary:hover{opacity:.85}.btn-sm-ghost{color:var(--nn-t2);background:#ffffff0d;border:1px solid var(--nn-b1)}.btn-sm-ghost:hover{color:var(--nn-t1);background:#ffffff14}.breadcrumb{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--nn-t3);padding:20px 0 0;font-family:var(--nn-font-m)}.breadcrumb-link{color:var(--nn-t2);cursor:pointer;transition:color var(--nn-t-fast);text-decoration:none}.breadcrumb-link:hover{color:var(--nn-t1)}.breadcrumb-sep{color:var(--nn-t4)}.breadcrumb-current{color:var(--nn-t1);font-weight:500}.page-hero{padding:72px 0 52px;border-bottom:1px solid var(--nn-b0);margin-bottom:56px}.page-hero-tag{font-family:var(--nn-font-m);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;display:block;margin-bottom:12px}.page-hero-h1{font-family:var(--nn-font-d);font-size:clamp(2rem,4vw,3.2rem);font-weight:800;letter-spacing:-.04em;line-height:1.06;margin-bottom:14px}.page-hero-p{font-size:15px;color:var(--nn-t2);line-height:1.7;max-width:580px}.sec{margin-bottom:64px}.sec-h{font-family:var(--nn-font-m);font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;margin-bottom:24px;display:flex;align-items:center;gap:14px;background:linear-gradient(90deg,#669df6,#9d7bff 30%,#e879f9,#669df6 80%,#9d7bff);background-size:250% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:secHShimmer 7s linear infinite}.sec-h:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--nn-b1),transparent)}@keyframes secHShimmer{0%{background-position:0% 50%}to{background-position:250% 50%}}@media(prefers-reduced-motion:reduce){.sec-h{animation:none}}.sec-title{font-family:var(--nn-font-d);font-size:24px;font-weight:700;letter-spacing:-.03em;color:var(--nn-t1);margin-bottom:8px}.sec-desc{font-size:14px;color:var(--nn-t2);line-height:1.65;max-width:560px}.home-hero{position:relative;min-height:calc(100vh - 58px);display:flex;align-items:center;justify-content:center;overflow:hidden}.hero-canvas{position:absolute;inset:0;width:100%;height:100%;transition:opacity .6s ease}.hero-inner{position:relative;z-index:2;text-align:center;max-width:880px;padding:0 40px}.hero-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 16px;border-radius:var(--nn-r-full);border:1px solid rgba(66,133,244,.22);background:#4285f412;font-family:var(--nn-font-m);font-size:9.5px;letter-spacing:.08em;color:var(--nn-blue-light);margin-bottom:28px;text-transform:uppercase}.hero-badge-dot{width:5px;height:5px;border-radius:50%;background:var(--nn-blue-bright);box-shadow:0 0 8px #4285f4b3}.hero-title{font-family:var(--nn-font-d);font-size:clamp(2.6rem,6vw,5rem);font-weight:800;letter-spacing:-.045em;line-height:1.03;margin-bottom:20px;text-wrap:pretty}.hero-sub{font-size:clamp(.95rem,1.8vw,1.1rem);color:var(--nn-t2);line-height:1.7;max-width:640px;margin:0 auto 32px;font-weight:400}.hero-actions{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.stats-strip{border-top:1px solid var(--nn-b0);border-bottom:1px solid var(--nn-b0);background:linear-gradient(90deg,var(--nn-bg-canvas),var(--nn-surface-1),var(--nn-bg-canvas));padding:24px 0}.stats-grid{display:flex;justify-content:center;max-width:1200px;margin:0 auto;padding:0 40px}.stat-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:0 24px;border-right:1px solid var(--nn-b0)}.stat-item:last-child{border-right:none}.stat-val{font-family:var(--nn-font-d);font-size:26px;font-weight:800;letter-spacing:-.04em;background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-lbl{font-size:11px;color:var(--nn-t2);font-weight:500;text-align:center;line-height:1.4}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.projects-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.project-card{border-radius:var(--nn-r-xl);padding:26px;cursor:pointer;transition:all var(--nn-t-base);position:relative;overflow:hidden;border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box}.project-card:hover{transform:translateY(-3px);box-shadow:var(--nn-elev-3),var(--nn-glow-g-sm);background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad) border-box}.project-card:before{content:"";position:absolute;inset:0;background:var(--nn-grad-surface);opacity:0;transition:opacity var(--nn-t-base);pointer-events:none}.project-card:hover:before{opacity:1}.pc-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px;position:relative;z-index:1}.pc-icon{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--nn-grad-surface-strong);flex-shrink:0;font-size:0}.pc-icon svg{width:18px;height:18px;stroke-width:1.75}.pc-title{font-family:var(--nn-font-d);font-size:17px;font-weight:700;letter-spacing:-.025em;color:var(--nn-t1);margin-bottom:6px;position:relative;z-index:1}.pc-desc{font-size:13px;color:var(--nn-t2);line-height:1.6;margin-bottom:16px;position:relative;z-index:1}.pc-tags{display:flex;flex-wrap:wrap;gap:5px;position:relative;z-index:1}.pc-footer{display:flex;align-items:center;justify-content:space-between;margin-top:18px;padding-top:14px;border-top:1px solid var(--nn-b0);position:relative;z-index:1}.pc-cta{font-size:12px;font-weight:500;background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-family:var(--nn-font-m)}.project-card-featured{grid-column:span 2;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:center;padding:32px}.pc-featured-visual{border-radius:var(--nn-r-lg);background:var(--nn-grad-surface-strong);border:1px solid var(--nn-b1);min-height:170px;display:flex;align-items:center;justify-content:center;overflow:hidden}.tag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--nn-r-full);font-family:var(--nn-font-m);font-size:9.5px;font-weight:500;color:var(--nn-t2);border:1px solid var(--nn-b2);background:#ffffff0b;white-space:nowrap}.tag-b{color:var(--nn-blue-bright);border-color:#4285f433;background:#4285f40f}.tag-v{color:var(--nn-violet-bright);border-color:#7b5cf633;background:#7b5cf60f}.tag-p{color:var(--nn-pink-bright);border-color:#d946ef33;background:#d946ef0f}.tag-g{color:#4ade80;border-color:#4ade8033;background:#4ade800d}.tag-c{color:#22d3ee;border-color:#22d3ee33;background:#22d3ee0d}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 11px;border-radius:var(--nn-r-full);font-family:var(--nn-font-m);font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;flex-shrink:0}.badge-production{color:var(--nn-success);background:var(--nn-success-10);border:1px solid rgba(52,168,83,.2)}.badge-production:before{background:var(--nn-success);box-shadow:0 0 6px #34a85399}.badge-opensource{color:var(--nn-blue-bright);background:#4285f414;border:1px solid rgba(66,133,244,.2)}.badge-opensource:before{background:var(--nn-blue-bright);box-shadow:0 0 6px #4285f480}.badge-incubating{color:var(--nn-warning);background:var(--nn-warning-10);border:1px solid rgba(251,188,5,.2)}.badge-incubating:before{background:var(--nn-warning);box-shadow:0 0 6px #fbbc0580}.badge-casestudy{color:var(--nn-violet-bright);background:#7b5cf614;border:1px solid rgba(123,92,246,.2)}.badge-casestudy:before{background:var(--nn-violet-bright)}.badge-research{color:var(--nn-pink-bright);background:#d946ef14;border:1px solid rgba(217,70,239,.2)}.badge-research:before{background:var(--nn-pink-bright)}.badge-course{color:#22d3ee;background:#06b6d414;border:1px solid rgba(6,182,212,.2)}.badge-course:before{background:#22d3ee}.arch-diagram{border-radius:var(--nn-r-xl);padding:28px 32px;background:var(--nn-bg-base);border:1px solid var(--nn-b1);position:relative;overflow:hidden}.arch-diagram:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 50%,rgba(66,133,244,.05) 0%,transparent 55%),radial-gradient(circle at 80% 50%,rgba(123,92,246,.04) 0%,transparent 55%);pointer-events:none}.arch-title{font-family:var(--nn-font-m);font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--nn-t4);margin-bottom:20px;position:relative;z-index:1}.arch-layer{display:flex;align-items:center;gap:10px;margin-bottom:10px;position:relative;z-index:1}.arch-layer-label{font-family:var(--nn-font-m);font-size:8.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--nn-t3);width:70px;flex-shrink:0;text-align:right;padding-right:10px;border-right:1px solid var(--nn-b0)}.arch-nodes{display:flex;gap:8px;flex-wrap:wrap}.arch-node{padding:7px 14px;border-radius:var(--nn-r-md);font-family:var(--nn-font-m);font-size:10.5px;font-weight:500;white-space:nowrap}.arch-node-default{color:var(--nn-t1);border:1px solid var(--nn-b2);background:var(--nn-surface-2)}.arch-node-primary{color:var(--nn-blue-bright);border:1px solid rgba(66,133,244,.25);background:#4285f414;font-weight:600}.arch-node-accent{color:var(--nn-violet-bright);border:1px solid rgba(123,92,246,.25);background:#7b5cf614}.arch-node-pink{color:var(--nn-pink-bright);border:1px solid rgba(217,70,239,.25);background:#d946ef14}.arch-node-green{color:#4ade80;border:1px solid rgba(74,222,128,.2);background:#4ade800f}.arch-connector{padding:0 0 0 80px;margin-bottom:4px;position:relative;z-index:1;font-family:var(--nn-font-m);font-size:11px;color:var(--nn-t3)}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:1px;background:linear-gradient(180deg,var(--nn-blue-primary),var(--nn-violet-primary),transparent)}.tl-item{position:relative;margin-bottom:28px;padding-bottom:28px;border-bottom:1px solid var(--nn-b0)}.tl-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.tl-dot{position:absolute;left:-32px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--nn-grad-blue-v);box-shadow:0 0 10px #4285f466}.tl-period{font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t4);letter-spacing:.05em;margin-bottom:4px;text-transform:uppercase}.tl-role{font-family:var(--nn-font-d);font-size:16px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em;margin-bottom:3px}.tl-org{font-size:13px;color:var(--nn-blue-bright);font-weight:500;margin-bottom:8px}.tl-desc{font-size:13px;color:var(--nn-t2);line-height:1.6}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.skill-group{padding:18px 20px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-1);transition:all var(--nn-t-base)}.skill-group:hover{border-color:var(--nn-b1);background:var(--nn-surface-2);transform:translateY(-1px)}.sg-title{font-family:var(--nn-font-d);font-size:12.5px;font-weight:700;color:var(--nn-t1);margin-bottom:7px;letter-spacing:-.01em;display:flex;align-items:center;gap:7px}.sg-dot{width:5px;height:5px;border-radius:50%;background:var(--nn-grad-blue-v);flex-shrink:0}.sg-skills{font-size:11.5px;color:var(--nn-t2);line-height:1.6;font-family:var(--nn-font-m)}.articles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.article-card{border-radius:var(--nn-r-lg);padding:20px;cursor:pointer;transition:all var(--nn-t-base);border:1px solid var(--nn-b0);background:var(--nn-surface-1);display:flex;flex-direction:column;gap:8px}.article-card:hover{border-color:var(--nn-b1);background:var(--nn-surface-2);transform:translateY(-2px)}.ac-cat{font-family:var(--nn-font-m);font-size:8.5px;text-transform:uppercase;letter-spacing:.1em;background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ac-title{font-family:var(--nn-font-d);font-size:14px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em;line-height:1.35}.ac-desc{font-size:12px;color:var(--nn-t2);line-height:1.6;flex:1}.ac-meta{display:flex;align-items:center;justify-content:space-between;font-family:var(--nn-font-m);font-size:9px;color:var(--nn-t3);padding-top:10px;border-top:1px solid var(--nn-b0);margin-top:auto}.article-featured{border-radius:var(--nn-r-xl);padding:32px;margin-bottom:20px;cursor:pointer;transition:all var(--nn-t-base);border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box;display:grid;grid-template-columns:1fr 280px;gap:28px;align-items:center}.article-featured:hover{transform:translateY(-2px);box-shadow:var(--nn-elev-3)}.af-badge{font-family:var(--nn-font-m);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--nn-blue-bright);background:#4285f414;border:1px solid rgba(66,133,244,.2);padding:3px 10px;border-radius:var(--nn-r-full);margin-bottom:12px;display:inline-block}.af-title{font-family:var(--nn-font-d);font-size:21px;font-weight:800;color:var(--nn-t1);letter-spacing:-.03em;line-height:1.2;margin-bottom:10px}.af-desc{font-size:13.5px;color:var(--nn-t2);line-height:1.65;margin-bottom:16px}.af-visual{height:150px;border-radius:var(--nn-r-lg);background:var(--nn-grad-surface-strong);border:1px solid var(--nn-b1);display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden}.cat-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:24px}.cat-pill{padding:5px 14px;border-radius:var(--nn-r-full);font-size:11.5px;font-weight:500;color:var(--nn-t2);border:1px solid var(--nn-b1);background:transparent;cursor:pointer;transition:all var(--nn-t-fast)}.cat-pill:hover{color:var(--nn-t1);border-color:var(--nn-b2)}.cat-pill.active{color:var(--nn-blue-bright);border-color:#4285f459;background:#4285f414}.courses-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.course-card{border-radius:var(--nn-r-xl);padding:0 0 28px;cursor:pointer;transition:all var(--nn-t-base);border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-b) border-box;position:relative;overflow:hidden}.course-card:hover{background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad) border-box;transform:translateY(-2px);box-shadow:var(--nn-elev-3)}.cc-cover{width:100%;height:150px;position:relative;overflow:hidden;margin-bottom:22px}.cc-cover img{width:100%;height:100%;object-fit:cover;display:block;filter:brightness(.8);transition:transform var(--nn-t-slow)}.course-card:hover .cc-cover img{transform:scale(1.06)}.cc-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,var(--nn-surface-1) 100%)}.cc-body{padding:0 28px}.cc-num{font-family:var(--nn-font-m);font-size:34px;font-weight:600;color:var(--nn-b1);line-height:1;margin-bottom:14px;letter-spacing:-.05em}.cc-title{font-family:var(--nn-font-d);font-size:17px;font-weight:700;color:var(--nn-t1);letter-spacing:-.025em;line-height:1.25;margin-bottom:8px}.cc-desc{font-size:13px;color:var(--nn-t2);line-height:1.6;margin-bottom:18px}.cc-footer{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.oss-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.oss-card{border-radius:var(--nn-r-xl);padding:30px;border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box;transition:all var(--nn-t-base)}.oss-card:hover{transform:translateY(-2px);box-shadow:var(--nn-elev-3),var(--nn-glow-g-sm)}.oss-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px}.oss-title{font-family:var(--nn-font-d);font-size:21px;font-weight:800;color:var(--nn-t1);letter-spacing:-.03em;margin-bottom:4px}.oss-subtitle{font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t2);letter-spacing:.04em}.oss-desc{font-size:13.5px;color:var(--nn-t2);line-height:1.65;margin-bottom:18px}.oss-focus{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}.oss-focus-item{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--nn-t2)}.oss-focus-item:before{content:"";width:4px;height:4px;border-radius:50%;background:var(--nn-grad-blue-v);flex-shrink:0}.oss-actions{display:flex;gap:7px;flex-wrap:wrap;padding-top:18px;border-top:1px solid var(--nn-b0)}.lab-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.lab-card{border-radius:var(--nn-r-xl);padding:28px;border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad-v) border-box;transition:all var(--nn-t-base)}.lab-card:hover{transform:translateY(-2px);box-shadow:var(--nn-elev-3)}.lab-card-title{font-family:var(--nn-font-d);font-size:20px;font-weight:800;color:var(--nn-t1);letter-spacing:-.03em;margin-bottom:6px}.lab-card-desc{font-size:13.5px;color:var(--nn-t2);line-height:1.65;margin-bottom:18px}.contact-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:44px}.co{padding:18px 20px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-1);cursor:pointer;transition:all var(--nn-t-base);text-decoration:none;display:flex;align-items:center;gap:12px}.co:hover{border-color:var(--nn-b2);background:var(--nn-surface-2);transform:translateY(-2px)}.co-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--nn-grad-surface-strong);flex-shrink:0;font-size:0}.co-icon svg{width:17px;height:17px;stroke-width:1.75}.co-label{font-family:var(--nn-font-d);font-size:13px;font-weight:600;color:var(--nn-t1);margin-bottom:1px;letter-spacing:-.01em}.co-val{font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t2)}.contact-form{padding:32px;border-radius:var(--nn-r-xl);border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box;max-width:660px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.form-label{font-size:11.5px;font-weight:600;color:var(--nn-t2);letter-spacing:.02em}.form-input,.form-select,.form-textarea{background:var(--nn-bg-base);border:1px solid var(--nn-b1);border-radius:var(--nn-r-md);color:var(--nn-t1);font-family:var(--nn-font-b);font-size:14px;padding:9px 13px;outline:none;transition:border-color var(--nn-t-fast);width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--nn-blue-primary);box-shadow:0 0 0 3px #4285f41a}.form-input::placeholder,.form-textarea::placeholder{color:var(--nn-t4)}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='rgba(255,255,255,0.25)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px;cursor:pointer}.form-select option{background:var(--nn-surface-3)}.form-textarea{resize:vertical;min-height:100px;line-height:1.5}.cta-band{background:linear-gradient(135deg,#4285f412,#7b5cf614,#d946ef0d);border-top:1px solid var(--nn-b1);border-bottom:1px solid var(--nn-b0);padding:60px 0;text-align:center;position:relative;overflow:hidden}.cta-band:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(123,92,246,.09) 0%,transparent 60%);pointer-events:none}.cta-band-tag{font-family:var(--nn-font-m);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--nn-t4);margin-bottom:12px;display:block;position:relative;z-index:1}.cta-band-title{font-family:var(--nn-font-d);font-size:clamp(1.5rem,3vw,2.6rem);font-weight:800;letter-spacing:-.04em;margin-bottom:10px;position:relative;z-index:1}.cta-band-sub{font-size:15px;color:var(--nn-t2);margin-bottom:26px;max-width:480px;margin-left:auto;margin-right:auto;line-height:1.65;position:relative;z-index:1}.cta-band-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;position:relative;z-index:1}.footer{background:linear-gradient(180deg,var(--nn-bg-canvas) 0%,var(--nn-surface-1) 100%);border-top:1px solid var(--nn-b1);padding:52px 0 0;position:relative;overflow:hidden}.footer:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:600px;height:200px;background:radial-gradient(ellipse at top,rgba(123,92,246,.08) 0%,transparent 70%);pointer-events:none}.footer-top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:32px;padding-bottom:36px;position:relative;z-index:1}.footer-brand{display:flex;flex-direction:column;gap:12px;align-items:flex-start}.footer-brand-tag{font-size:12.5px;color:var(--nn-t2);line-height:1.6;max-width:230px}.footer-col{display:flex;flex-direction:column;gap:11px}.footer-col-h{font-family:var(--nn-font-m);font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--nn-t3);margin-bottom:3px}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px}.footer-links{display:flex;flex-direction:column;gap:11px}.footer-link{font-size:13px;color:var(--nn-t2);text-decoration:none;cursor:pointer;transition:color var(--nn-t-fast);background:none;border:none;text-align:left;padding:0;width:fit-content;font-family:var(--nn-font-b)}.footer-link:hover{color:var(--nn-blue-bright)}.footer-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:20px 0;border-top:1px solid var(--nn-b1);position:relative;z-index:1}.footer-copy{font-family:var(--nn-font-m);font-size:11px;color:var(--nn-t3);letter-spacing:.02em}.footer-phrase{font-family:var(--nn-font-m);font-size:10px;color:var(--nn-t3);letter-spacing:.05em}@media(max-width:768px){.footer-top{grid-template-columns:1fr 1fr;gap:24px}.footer-brand{grid-column:span 2}.footer-bottom{flex-direction:column;align-items:flex-start;gap:8px}}.cs-hero{display:grid;grid-template-columns:1fr auto;align-items:start;gap:24px;margin-bottom:48px;padding-top:32px}.cs-badges{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.cs-title{font-family:var(--nn-font-d);font-size:clamp(2rem,4vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1.05;margin-bottom:12px}.cs-sub{font-size:15px;color:var(--nn-t2);line-height:1.7;max-width:560px}.cs-meta{font-family:var(--nn-font-m);font-size:10px;color:var(--nn-t3);text-transform:uppercase;letter-spacing:.08em}.cs-overview{border-radius:var(--nn-r-xl);padding:32px;border:1px solid var(--nn-b0);background:var(--nn-surface-1);margin-bottom:32px}.cs-overview p{font-size:14px;color:var(--nn-t2);line-height:1.75;margin-bottom:12px}.cs-overview p:last-child{margin-bottom:0}.cs-section-h{font-family:var(--nn-font-d);font-size:18px;font-weight:700;letter-spacing:-.025em;color:var(--nn-t1);margin-bottom:18px}.features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:32px}.feature-item{padding:16px 18px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-1)}.fi-icon{font-size:0;margin-bottom:10px}.fi-icon svg{width:16px;height:16px;stroke-width:1.75;color:var(--nn-blue-bright)}.fi-title{font-size:12.5px;font-weight:700;color:var(--nn-t1);margin-bottom:4px;letter-spacing:-.01em}.fi-desc{font-size:11.5px;color:var(--nn-t2);line-height:1.5}.about-hero{display:grid;grid-template-columns:auto 1fr;gap:36px;align-items:start;margin-bottom:56px;padding-top:32px}.avatar{width:90px;height:90px;border-radius:var(--nn-r-xl);background:var(--nn-grad-g);display:flex;align-items:center;justify-content:center;font-family:var(--nn-font-d);font-size:32px;font-weight:800;color:#fff;letter-spacing:-.04em;flex-shrink:0;position:relative}.avatar:after{content:"";position:absolute;inset:-4px;border-radius:calc(var(--nn-r-xl) + 4px);background:var(--nn-grad-g-soft);filter:blur(14px);opacity:.5;z-index:-1}.about-name{font-family:var(--nn-font-d);font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:800;letter-spacing:-.04em;line-height:1.08;margin-bottom:6px}.about-title{font-family:var(--nn-font-m);font-size:12px;color:var(--nn-blue-bright);letter-spacing:.04em;margin-bottom:12px}.about-bio{font-size:15px;color:var(--nn-t2);line-height:1.7;max-width:580px}.about-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:16px}.about-meta-item{display:flex;align-items:center;gap:5px;font-family:var(--nn-font-m);font-size:10px;color:var(--nn-t2)}.about-meta-item svg{width:12px;height:12px;stroke-width:1.75}@media(max-width:1024px){.projects-grid{grid-template-columns:1fr}.project-card-featured{grid-column:span 1;grid-template-columns:1fr}.pc-featured-visual{display:none}.articles-grid{grid-template-columns:repeat(2,1fr)}.article-featured{grid-template-columns:1fr}.af-visual{display:none}.courses-grid,.oss-grid,.lab-grid{grid-template-columns:1fr}.contact-options,.features-grid{grid-template-columns:repeat(2,1fr)}.about-hero{grid-template-columns:1fr}.avatar{width:72px;height:72px;font-size:26px}}@media(max-width:768px){.topnav{padding:0 16px}.nav-links .nav-link:nth-child(n+5){display:none}.nav-logo-role{display:none}.content,.content-narrow{padding:0 20px}.page-hero{padding:48px 0 32px;margin-bottom:36px}.form-row,.articles-grid,.projects-grid-3,.skills-grid{grid-template-columns:1fr}.contact-options{grid-template-columns:1fr 1fr}.stats-grid{flex-wrap:wrap}.stat-item{min-width:140px;flex:none;border-right:none;border-bottom:1px solid var(--nn-b0)}.stat-item:last-child{border-bottom:none}.cs-hero{grid-template-columns:1fr}}.topnav{transition:background var(--nn-t-base),box-shadow var(--nn-t-base)}.topnav.scrolled{background:#06060ef7;box-shadow:0 1px 0 var(--nn-b1),0 4px 32px #00000080}.nav-right{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.nav-dropdown-wrap{position:relative}.nav-dropdown-wrap>.nav-link{display:flex;align-items:center;gap:4px}.nav-dropdown-wrap>.nav-link svg{flex-shrink:0;opacity:.35;transition:all var(--nn-t-fast)}.nav-dropdown-wrap:hover>.nav-link svg{opacity:.8;transform:rotate(180deg)}.nav-dropdown{position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%) translateY(-6px);width:224px;background:var(--nn-bg-base);border:1px solid var(--nn-b1);border-radius:var(--nn-r-lg);padding:6px;box-shadow:var(--nn-elev-4);opacity:0;pointer-events:none;transition:all var(--nn-t-fast);z-index:20}.nav-dropdown-wrap:hover .nav-dropdown{opacity:1;pointer-events:all;transform:translate(-50%) translateY(0)}.nav-drop-item{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:9px;font-size:13px;font-weight:500;color:var(--nn-t2);background:transparent;border:none;cursor:pointer;transition:all var(--nn-t-fast);width:100%;text-align:left}.nav-drop-item:hover{color:var(--nn-t1);background:#ffffff0d}.nd-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.nd-dot-b{background:var(--nn-blue-bright)}.nd-dot-v{background:var(--nn-violet-bright)}.nav-hamburger{display:none;flex-direction:column;gap:4px;width:36px;height:36px;border-radius:9px;border:1px solid var(--nn-b1);background:transparent;cursor:pointer;align-items:center;justify-content:center;padding:0;transition:all var(--nn-t-fast)}.nav-hamburger span{display:block;width:16px;height:1.5px;background:var(--nn-t2);border-radius:2px;transition:all var(--nn-t-base);transform-origin:center}.nav-hamburger:hover{border-color:var(--nn-b2);background:#ffffff0a}.nav-hamburger.open span:nth-child(1){transform:rotate(45deg) translate(2.5px,2.5px);width:18px}.nav-hamburger.open span:nth-child(2){opacity:0;transform:scaleX(0)}.nav-hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(2.5px,-2.5px);width:18px}.mob-overlay{position:fixed;inset:0;background:#06060eb8;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);z-index:calc(var(--nn-z-overlay) - 1);opacity:0;pointer-events:none;transition:opacity var(--nn-t-base)}.mob-overlay.open{opacity:1;pointer-events:all}.mobile-drawer{position:fixed;top:0;right:0;bottom:0;width:min(320px,100vw);background:var(--nn-bg-base);border-left:1px solid var(--nn-b1);z-index:var(--nn-z-overlay);transform:translate(100%);transition:transform var(--nn-t-slow);display:flex;flex-direction:column;overflow-y:auto}.mobile-drawer.open{transform:translate(0)}.mob-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--nn-b0);flex-shrink:0}.mob-close{width:32px;height:32px;border-radius:8px;border:1px solid var(--nn-b1);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--nn-t2);transition:all var(--nn-t-fast)}.mob-close:hover{background:#ffffff0f;color:var(--nn-t1)}.mob-nav{flex:1;padding:10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.mob-link{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;font-size:14px;font-weight:500;color:var(--nn-t2);background:transparent;border:none;cursor:pointer;transition:all var(--nn-t-fast);text-align:left;width:100%;text-decoration:none}.mob-link--has-sub{align-items:flex-start;padding-top:10px;padding-bottom:10px}.mob-link:hover{color:var(--nn-t1);background:#ffffff0a;text-decoration:none}.mob-link.active{color:var(--nn-blue-bright);background:#4285f412}.mob-link-icon{flex-shrink:0;width:28px;height:28px;border-radius:7px;background:#ffffff0a;border:1px solid var(--nn-b0);display:flex;align-items:center;justify-content:center;color:var(--nn-t3);font-size:0;transition:all var(--nn-t-fast)}.mob-link--has-sub .mob-link-icon{margin-top:1px}.mob-link.active .mob-link-icon{background:#4285f41a;border-color:#4285f433;color:var(--nn-blue-bright)}.mob-link-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.mob-link-label{line-height:1.25}.mob-link-sub{font-family:var(--nn-font-m);font-size:10px;color:var(--nn-t4);letter-spacing:.03em;line-height:1.35}.mob-link.active .mob-link-sub{color:#669df6b8}.mob-divider{height:1px;background:var(--nn-b0);margin:4px 10px}.mob-footer{padding:14px;border-top:1px solid var(--nn-b0);display:flex;flex-direction:column;gap:10px;flex-shrink:0}.mob-phrase{font-family:var(--nn-font-m);font-size:8px;color:var(--nn-t4);letter-spacing:.07em;text-align:center}@media(max-width:960px){.nav-hamburger{display:flex}.nav-links{display:none!important}.nav-cta{display:none}}@media(max-width:480px){.mob-link-sub{font-size:9.5px}}.blog-featured-pair{display:grid;grid-template-columns:3fr 2fr;gap:14px;margin-bottom:36px}.blog-featured-main{border-radius:var(--nn-r-xl);border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box;overflow:hidden;cursor:pointer;transition:all var(--nn-t-base)}.blog-featured-main:hover{background:linear-gradient(var(--nn-surface-2),var(--nn-surface-2)) padding-box,var(--nn-border-grad) border-box;transform:translateY(-2px);box-shadow:var(--nn-elev-3)}.bfm-cover{height:220px;background:var(--nn-grad-surface-strong);border-bottom:1px solid var(--nn-b0);position:relative;overflow:hidden}.bfm-cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.62) saturate(1.05);transition:transform var(--nn-t-slow)}.blog-featured-main:hover .bfm-cover-img{transform:scale(1.045)}.bfm-cover-code{font-family:var(--nn-font-m);font-size:11.5px;line-height:1.75;position:relative;z-index:1;color:var(--nn-t2);padding:20px}.bfm-cover-fade{position:absolute;bottom:0;left:0;right:0;height:110px;background:linear-gradient(transparent,var(--nn-surface-1));z-index:2}.bfm-cover-badge{position:absolute;top:16px;right:16px;z-index:3;font-family:var(--nn-font-m);font-size:8.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--nn-blue-bright);background:#4285f41a;border:1px solid rgba(66,133,244,.2);padding:3px 10px;border-radius:var(--nn-r-full)}.bfm-body{padding:22px 24px 24px}.bfm-title{font-family:var(--nn-font-d);font-size:19px;font-weight:800;color:var(--nn-t1);letter-spacing:-.03em;line-height:1.25;margin-bottom:8px}.bfm-desc{font-size:13px;color:var(--nn-t2);line-height:1.6;margin-bottom:14px}.bfm-meta{display:flex;align-items:center;justify-content:space-between}.blog-featured-secondary{display:flex;flex-direction:column;gap:14px}.blog-feat-sm{flex:1;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-1);padding:14px;cursor:pointer;transition:all var(--nn-t-base);display:flex;align-items:flex-start;gap:12px}.blog-feat-sm:hover{border-color:var(--nn-b1);background:var(--nn-surface-2);transform:translateY(-1px);box-shadow:var(--nn-elev-2)}.bfs-thumb{width:64px;height:64px;border-radius:10px;object-fit:cover;flex-shrink:0;filter:saturate(1.05)}.bfs-body{display:flex;flex-direction:column;gap:6px;min-width:0}.bfs-title{font-family:var(--nn-font-d);font-size:14px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em;line-height:1.32}.bfs-meta{font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t3)}.cat-count{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;border-radius:var(--nn-r-full);font-size:9px;font-weight:700;background:#ffffff0f;color:var(--nn-t4);margin-left:4px;font-family:var(--nn-font-m);vertical-align:middle}.cat-pill.active .cat-count{background:#4285f433;color:var(--nn-blue-bright)}.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.blog-article-card{border-radius:var(--nn-r-xl);border:1px solid var(--nn-b0);background:var(--nn-surface-1);overflow:hidden;cursor:pointer;transition:all var(--nn-t-base);display:flex;flex-direction:column}.blog-article-card:hover{border-color:var(--nn-b1);background:var(--nn-surface-2);transform:translateY(-3px);box-shadow:var(--nn-elev-3)}.bac-cover{height:130px;position:relative;overflow:hidden;flex-shrink:0}.bac-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--nn-t-slow);filter:brightness(.82)}.blog-article-card:hover .bac-cover img{transform:scale(1.07)}.bac-accent{height:3px;flex-shrink:0}.bac-accent-frontend{background:linear-gradient(90deg,#4285f4,#669df6)}.bac-accent-angular{background:linear-gradient(90deg,#4285f4,#7b5cf6)}.bac-accent-ai{background:linear-gradient(90deg,#7b5cf6,#d946ef)}.bac-accent-python{background:linear-gradient(90deg,#06b6d4,#4ade80)}.bac-accent-testing{background:linear-gradient(90deg,#34a853,#4ade80)}.bac-body{padding:18px 20px;flex:1;display:flex;flex-direction:column}.bac-eyebrow{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.bac-cat-label{font-family:var(--nn-font-m);font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--nn-t3)}.bac-type-label{font-family:var(--nn-font-m);font-size:8px;color:var(--nn-t4);background:var(--nn-surface-3);padding:2px 7px;border-radius:var(--nn-r-full);border:1px solid var(--nn-b0)}.bac-title{font-family:var(--nn-font-d);font-size:15px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em;line-height:1.3;margin-bottom:8px;flex:1}.bac-desc{font-size:12.5px;color:var(--nn-t3);line-height:1.6;margin-bottom:14px}.bac-footer{display:flex;align-items:center;justify-content:space-between;padding-top:12px;border-top:1px solid var(--nn-b0)}.bac-time{font-family:var(--nn-font-m);font-size:9px;color:var(--nn-t4)}.bac-read{font-family:var(--nn-font-m);font-size:9px;font-weight:600;background:var(--nn-grad-blue-v);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;opacity:0;transition:opacity var(--nn-t-fast)}.blog-article-card:hover .bac-read{opacity:1}.article-detail-wrap{max-width:720px;margin:0 auto;padding:0 40px 80px}.article-header{padding:32px 0 36px;border-bottom:1px solid var(--nn-b0);margin-bottom:40px}.article-meta-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:20px}.article-meta-sep{color:var(--nn-t4);font-size:12px}.article-title-h1{font-family:var(--nn-font-d);font-size:clamp(1.75rem,3.5vw,2.6rem);font-weight:800;letter-spacing:-.04em;line-height:1.1;margin-bottom:16px}.article-lead{font-size:16px;color:var(--nn-t2);line-height:1.75}.article-content{font-size:15px;color:var(--nn-t2);line-height:1.82}.article-content h2{font-family:var(--nn-font-d);font-size:21px;font-weight:800;color:var(--nn-t1);letter-spacing:-.03em;margin:44px 0 16px;padding-top:8px;border-top:1px solid var(--nn-b0)}.article-content h3{font-family:var(--nn-font-d);font-size:16px;font-weight:700;color:var(--nn-t1);margin:28px 0 10px}.article-content p{margin-bottom:18px}.article-content ul{margin:0 0 18px 24px}.article-content li{margin-bottom:7px}.article-content strong{color:var(--nn-t1);font-weight:600}.article-content code{font-family:var(--nn-font-m);font-size:12px;color:var(--nn-blue-bright);background:#4285f414;padding:2px 7px;border-radius:5px;border:1px solid rgba(66,133,244,.12)}.code-block{background:var(--nn-bg-base);border:1px solid var(--nn-b1);border-radius:var(--nn-r-lg);padding:18px 20px;margin:20px 0;overflow-x:auto;font-family:var(--nn-font-m);font-size:12.5px;line-height:1.65;white-space:pre}.code-block .cf{color:#669df6}.code-block .ck{color:#9d7bff}.code-block .cs{color:#4ade80}.code-block .cc{color:#ffffff47}.code-block .ct{color:#e879f9}.article-callout{border-left:3px solid var(--nn-blue-primary);background:#4285f40d;border-radius:0 var(--nn-r-md) var(--nn-r-md) 0;padding:14px 18px;margin:22px 0;font-size:14px;color:var(--nn-t2);line-height:1.65}.article-cover{width:100%;height:280px;border-radius:var(--nn-r-xl);overflow:hidden;margin-top:24px;border:1px solid var(--nn-b1)}.article-cover img{width:100%;height:100%;object-fit:cover;display:block}.article-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px}.article-related{border-top:1px solid var(--nn-b0);margin-top:56px;padding-top:36px}.article-related-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}@media(max-width:1024px){.blog-featured-pair{grid-template-columns:1fr}.blog-featured-secondary{flex-direction:row}.blog-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.blog-grid{grid-template-columns:1fr}.blog-featured-secondary{flex-direction:column}.article-detail-wrap{padding:0 20px 60px}.article-related-grid{grid-template-columns:1fr}}.gh-panel{border-radius:var(--nn-r-xl);padding:28px 30px 30px;border:1px solid transparent;background:linear-gradient(var(--nn-surface-1),var(--nn-surface-1)) padding-box,var(--nn-border-grad) border-box}.gh-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:12px}.gh-panel-id{display:flex;align-items:center;gap:14px}.gh-panel-name{font-family:var(--nn-font-d);font-size:15px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em}.gh-panel-sub{font-size:12px;color:var(--nn-t2);margin-top:2px}.gh-stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:22px}.gh-stat-card{padding:16px 14px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-2);text-align:center}.gh-stat-val{font-family:var(--nn-font-d);font-size:22px;font-weight:800;letter-spacing:-.03em;color:var(--nn-t1);margin-bottom:3px}.gh-stat-lbl{font-size:10.5px;color:var(--nn-t2);line-height:1.4}.gh-row{display:grid;grid-template-columns:1fr 260px;gap:14px;margin-bottom:14px}.gh-cal-card{padding:20px 22px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-2);overflow-x:auto}.gh-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px;flex-wrap:wrap}.gh-cal-title{font-size:12.5px;color:var(--nn-t1);font-weight:600}.gh-cal-legend{display:flex;align-items:center;gap:4px;font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t3)}.gh-lvl{width:10px;height:10px;border-radius:3px;display:inline-block;margin:0 1px}.gh-lvl-0{background:var(--nn-surface-3);border:1px solid var(--nn-b1)}.gh-lvl-1{background:#4285f447}.gh-lvl-2{background:#4285f485}.gh-lvl-3{background:#4285f4bf}.gh-lvl-4{background:#4285f4;box-shadow:0 0 6px #4285f480}.gh-heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,10px);gap:3px;min-width:600px}.gh-heatmap-cell{width:10px;height:10px;border-radius:3px}.gh-streak-card{padding:20px 18px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-2);display:flex;flex-direction:column;justify-content:center;gap:14px}.gh-streak-item{text-align:center}.gh-streak-val{font-family:var(--nn-font-d);font-size:26px;font-weight:800;letter-spacing:-.03em;color:var(--nn-t1);margin-bottom:2px}.gh-streak-lbl{font-size:10.5px;color:var(--nn-t2)}.gh-streak-divider{height:1px;background:var(--nn-b0)}.gh-row-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.gh-lang-card,.gh-repos-card{padding:20px 22px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b0);background:var(--nn-surface-2)}.gh-lang-bar{display:flex;width:100%;height:10px;border-radius:var(--nn-r-full);overflow:hidden;margin-bottom:14px}.gh-lang-bar span{height:100%}.gh-lang-legend{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}.gh-lang-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--nn-t2)}.gh-lang-item b{color:var(--nn-t1);font-weight:600;margin-left:auto}.gh-lang-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.gh-repo-mini{padding:12px 0;border-bottom:1px solid var(--nn-b0)}.gh-repo-mini:last-child{border-bottom:none;padding-bottom:0}.gh-repo-mini:first-child{padding-top:0}.gh-repo-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.gh-repo-name{display:flex;align-items:center;gap:6px;font-family:var(--nn-font-m);font-size:12.5px;font-weight:600;color:var(--nn-blue-bright)}.gh-repo-lang{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--nn-t3);flex-shrink:0}.gh-repo-desc{font-size:12px;color:var(--nn-t2);line-height:1.55;margin-bottom:8px}.gh-repo-meta{display:flex;gap:14px;font-family:var(--nn-font-m);font-size:10.5px;color:var(--nn-t3)}.gh-repo-meta span{display:flex;align-items:center;gap:4px}@media(max-width:1024px){.gh-stats-grid{grid-template-columns:repeat(3,1fr)}.gh-row,.gh-row-2{grid-template-columns:1fr}}@media(max-width:768px){.gh-stats-grid{grid-template-columns:repeat(2,1fr)}.gh-lang-legend{grid-template-columns:1fr}}.oa-demo-panel{border-radius:var(--nn-r-xl);display:grid;grid-template-columns:1fr 1fr;overflow:hidden;min-height:400px}.oa-demo-info{padding:36px 38px;display:flex;flex-direction:column;justify-content:center}.oa-hint{display:flex;align-items:center;gap:6px;font-family:var(--nn-font-m);font-size:10px;color:var(--nn-t3);letter-spacing:.02em}.oa-canvas-wrap{position:relative;min-height:400px;background:radial-gradient(circle at 55% 35%,rgba(123,92,246,.14) 0%,transparent 65%),var(--nn-bg-base);border-left:1px solid var(--nn-b0)}.oa-canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.oa-mini-canvas-wrap{position:relative;height:190px;margin:-30px -30px 20px;border-radius:var(--nn-r-xl) var(--nn-r-xl) 0 0;overflow:hidden;background:radial-gradient(circle at 55% 40%,rgba(123,92,246,.16) 0%,transparent 65%),var(--nn-bg-base);border-bottom:1px solid var(--nn-b0)}.oa-mini-canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.oa-mini-badge{position:absolute;top:12px;right:12px;font-family:var(--nn-font-m);font-size:8.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--nn-success);background:#34a8531a;border:1px solid rgba(52,168,83,.25);padding:3px 9px;border-radius:var(--nn-r-full);display:flex;align-items:center;gap:5px}.oa-mini-badge:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--nn-success);box-shadow:0 0 6px #34a85399}@media(max-width:1024px){.oa-demo-panel{grid-template-columns:1fr}.oa-canvas-wrap{min-height:300px;border-left:none;border-top:1px solid var(--nn-b0)}}.hero-canvas-3d{opacity:0;transition:opacity .6s ease}.home-hero[data-hero-variant=centered] .hero-canvas-3d{opacity:.62;filter:blur(.5px)}.home-hero[data-hero-variant=centered] #heroCanvas{opacity:0}.hero-split-wrap,.hero-orb-wrap{display:none}.home-hero[data-hero-variant=split]{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:48px;padding:0 clamp(24px,6vw,80px);text-align:left;max-width:1400px;margin:0 auto}.home-hero[data-hero-variant=split] #heroCanvas,.home-hero[data-hero-variant=split] .hero-canvas-3d{opacity:0}.home-hero[data-hero-variant=split] .hero-inner{margin:0;max-width:none;text-align:left;padding:0}.home-hero[data-hero-variant=split] .hero-actions{justify-content:flex-start}.home-hero[data-hero-variant=split] .hero-sub{margin-left:0;margin-right:0}.home-hero[data-hero-variant=split] .hero-split-wrap{display:block;position:relative;height:min(64vh,520px);border-radius:var(--nn-r-xl);overflow:hidden;border:1px solid var(--nn-b1);background:radial-gradient(circle at 55% 35%,rgba(123,92,246,.16) 0%,transparent 65%),var(--nn-bg-base)}.hero-split-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.home-hero[data-hero-variant=floating] .hero-orb-wrap{display:block;width:130px;height:130px;margin:30px auto 0;position:relative}.hero-orb-wrap canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}@media(max-width:900px){.home-hero[data-hero-variant=split]{grid-template-columns:1fr;text-align:center;gap:28px;padding:40px 24px}.home-hero[data-hero-variant=split] .hero-inner{text-align:center}.home-hero[data-hero-variant=split] .hero-actions{justify-content:center}.home-hero[data-hero-variant=split] .hero-split-wrap{height:320px}}.tweaks-panel{position:fixed;bottom:20px;right:20px;z-index:600;width:270px;border-radius:var(--nn-r-lg);border:1px solid var(--nn-b2);background:var(--nn-surface-2);box-shadow:var(--nn-elev-4);padding:16px;display:none;font-family:var(--nn-font-b)}.tweaks-panel.open{display:block}.tw-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.tw-title{font-family:var(--nn-font-d);font-size:13px;font-weight:700;color:var(--nn-t1);letter-spacing:-.02em}.tw-close{width:24px;height:24px;border-radius:7px;border:1px solid var(--nn-b1);background:transparent;color:var(--nn-t3);cursor:pointer;display:flex;align-items:center;justify-content:center}.tw-close:hover{color:var(--nn-t1);background:#ffffff0d}.tw-label{font-family:var(--nn-font-m);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--nn-t3);margin-bottom:8px}.tw-options{display:flex;flex-direction:column;gap:6px}.tw-opt{padding:9px 12px;border-radius:9px;border:1px solid var(--nn-b1);background:transparent;color:var(--nn-t2);font-size:12px;font-weight:500;cursor:pointer;text-align:left;transition:all var(--nn-t-fast)}.tw-opt:hover{border-color:var(--nn-b2);color:var(--nn-t1)}.tw-opt.active{border-color:#4285f466;background:#4285f414;color:var(--nn-blue-bright);font-weight:600}.arch3d-wrap{position:relative;height:420px;border-radius:var(--nn-r-xl);overflow:hidden;border:1px solid var(--nn-b1);background:radial-gradient(circle at 50% 30%,rgba(66,133,244,.09) 0%,transparent 65%),var(--nn-bg-base)}.arch3d-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}.arch3d-title-bar{position:absolute;top:14px;left:18px;font-family:var(--nn-font-m);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--nn-t3);z-index:2;pointer-events:none}.arch3d-hint{position:absolute;bottom:12px;left:18px;font-family:var(--nn-font-m);font-size:9.5px;color:var(--nn-t3);display:flex;align-items:center;gap:5px;z-index:2;pointer-events:none}.arch-tooltip{position:absolute;transform:translate(-50%,-100%);pointer-events:none;background:var(--nn-surface-2);border:1px solid var(--nn-b2);border-radius:var(--nn-r-md);padding:9px 13px;max-width:230px;display:none;box-shadow:var(--nn-elev-3);z-index:5}.arch-tt-name{font-family:var(--nn-font-d);font-size:12.5px;font-weight:700;color:var(--nn-t1);margin-bottom:3px}.arch-tt-detail{font-size:11px;color:var(--nn-t2);line-height:1.45}@media(max-width:768px){.arch3d-wrap{height:340px}}
