html,body{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:var(--font-family-sans);background-color:hsl(var(--color-background));color:hsl(var(--color-foreground));line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;max-height:100vh;overflow:hidden}:root{--header-height: 64px;--header-height-mobile: 56px;--color-primary: 217 91% 60%;--color-primary-light: 217 91% 70%;--color-primary-dark: 217 91% 50%;--color-secondary: 220 13% 91%;--color-secondary-light: 220 13% 96%;--color-secondary-dark: 220 13% 85%;--color-accent: 173 80% 36%;--color-accent-light: 173 80% 46%;--color-accent-dark: 173 80% 26%;--color-success: 142 100% 50%;--color-warning: 45 100% 50%;--color-error: 0 100% 60%;--color-info: 200 100% 50%;--color-white: 0 0% 100%;--color-black: 0 0% 0%;--color-gray-50: 0 0% 98%;--color-gray-100: 0 0% 96%;--color-gray-200: 0 0% 90%;--color-gray-300: 0 0% 83%;--color-gray-400: 0 0% 64%;--color-gray-500: 0 0% 45%;--color-gray-600: 0 0% 32%;--color-gray-700: 0 0% 25%;--color-gray-800: 0 0% 15%;--color-gray-900: 0 0% 9%;--font-family-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-family-mono: "JetBrains Mono", "Fira Code", monospace;--font-family-display: var(--font-family-sans);--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 2;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--border-width: 1px;--border-width-2: 2px;--border-width-4: 4px;--radius-none: 0;--radius-sm: .125rem;--radius: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-3xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--primary: var(--color-primary);--primary-foreground: 0 0% 100%;--secondary: var(--color-secondary);--secondary-foreground: 0 0% 100%;--accent: var(--color-accent);--accent-foreground: 0 0% 100%;--destructive: var(--color-error);--destructive-foreground: 0 0% 100%;--background: var(--color-background);--foreground: var(--color-foreground);--card: var(--color-card);--card-foreground: var(--color-card-foreground);--popover: var(--color-card);--popover-foreground: var(--color-card-foreground);--muted: var(--color-muted);--muted-foreground: var(--color-muted-foreground);--border: var(--color-border);--input: var(--color-input);--ring: var(--color-primary);--font-sans: var(--font-family-sans);--font-mono: var(--font-family-mono);--glow-primary: 0 0 20px hsl(var(--color-primary) / .5);--glow-secondary: 0 0 20px hsl(var(--color-secondary) / .5);--glow-accent: 0 0 20px hsl(var(--color-accent) / .5)}[data-theme=light]{--color-background: 0 0% 100%;--color-foreground: 222 84% 5%;--color-card: 0 0% 99%;--color-card-foreground: 222 84% 5%;--color-muted: 210 40% 97%;--color-muted-foreground: 215 16% 45%;--color-border: 214 32% 88%;--color-input: 214 32% 88%;--color-text-primary: 222 84% 5%;--color-text-secondary: 215 16% 45%;--color-text-muted: 215 16% 45%;--color-icon-primary: 222 84% 5%;--color-icon-secondary: 215 16% 45%;--color-badge-bg: 217 91% 60%;--color-badge-text: 0 0% 100%;--color-button-primary: 217 91% 60%;--color-button-primary-text: 0 0% 100%;--color-button-secondary: 220 13% 94%;--color-button-secondary-text: 222 84% 5%;--color-card-hover: 0 0% 96%;--color-border-hover: 214 32% 82%;--color-shadow-light: 0 1px 3px 0 rgb(0 0 0 / .08);--color-shadow-medium: 0 4px 6px -1px rgb(0 0 0 / .08)}[data-theme=dark]{--color-background: 222 84% 5%;--color-foreground: 210 40% 98%;--color-card: 222 84% 7%;--color-card-foreground: 210 40% 98%;--color-muted: 217 33% 17%;--color-muted-foreground: 215 20% 65%;--color-border: 217 33% 17%;--color-input: 217 33% 17%;--color-text-primary: 210 40% 98%;--color-text-secondary: 215 20% 65%;--color-text-muted: 215 20% 65%;--color-icon-primary: 210 40% 98%;--color-icon-secondary: 215 20% 65%;--color-badge-bg: 217 91% 60%;--color-badge-text: 0 0% 100%;--color-button-primary: 217 91% 60%;--color-button-primary-text: 0 0% 100%;--color-button-secondary: 217 33% 17%;--color-button-secondary-text: 210 40% 98%}[data-theme=neon]{--color-background: 220 25% 8%;--color-foreground: 0 0% 98%;--color-card: 220 25% 12%;--color-card-foreground: 0 0% 98%;--color-muted: 220 25% 16%;--color-muted-foreground: 0 0% 70%;--color-border: 220 25% 20%;--color-input: 220 25% 16%;--color-text-primary: 0 0% 98%;--color-text-secondary: 0 0% 70%;--color-text-muted: 0 0% 70%;--color-icon-primary: 0 0% 98%;--color-icon-secondary: 0 0% 70%;--color-badge-bg: 217 91% 60%;--color-badge-text: 0 0% 100%;--color-button-primary: 217 91% 60%;--color-button-primary-text: 0 0% 100%;--color-button-secondary: 220 25% 16%;--color-button-secondary-text: 0 0% 98%}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-family-sans);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{background-color:hsl(var(--color-background));color:hsl(var(--color-foreground));font-size:var(--text-base);line-height:var(--leading-normal);overflow:hidden;min-height:100vh;max-height:100vh;margin:0;padding:0}.app-container{background-color:hsl(var(--color-background));height:100vh;display:grid;grid-template-rows:var(--header-height, 64px) 1fr;grid-template-areas:"header" "main";overflow:hidden;max-height:100vh}.main-content{background-color:hsl(var(--color-background));grid-area:main;display:grid;grid-template-columns:1fr auto;grid-template-areas:"viewer panel";position:relative;height:100%;overflow:hidden;margin-top:0;padding-top:0;max-height:100%}.viewport-container{background-color:hsl(var(--color-background));grid-area:viewer;position:relative;overflow:hidden;height:100%;width:100%}.viewport{background-color:hsl(var(--color-background));width:100%;height:100%;position:absolute;top:0;left:0}.config-panel{background-color:hsl(var(--color-card));border-left:var(--border-width) solid hsl(var(--color-border));width:400px;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);height:100%;grid-area:panel;position:relative;z-index:200;top:0;left:0;max-height:100%}@media (max-width: 768px){.app-container{height:100vh}.main-content{height:calc(100vh - var(--header-height, 64px));grid-template-columns:1fr;grid-template-areas:"viewer"}.config-panel{width:100%;position:fixed;bottom:0;left:0;right:0;height:60vh;z-index:var(--z-modal);border-left:none;border-top:var(--border-width) solid hsl(var(--color-border));grid-area:unset;transform:translateY(100%);transition:transform .3s ease-in-out}.config-panel.open{transform:translateY(0)}.panel-toggle{position:fixed;bottom:1rem;right:1rem;width:3rem;height:3rem;border-radius:50%;background-color:hsl(var(--color-primary));color:#fff;border:none;box-shadow:var(--shadow-lg);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;font-size:1.25rem;cursor:pointer;transition:all .2s ease}.panel-toggle:hover{background-color:hsl(var(--color-primary-dark));transform:scale(1.1)}.panel-toggle:active{transform:scale(.95)}.size-options{grid-template-columns:repeat(3,1fr)}.floor-color-options{grid-template-columns:repeat(4,1fr)}.custom-size{grid-template-columns:1fr}}@media (min-width: 769px){.panel-toggle{display:none!important}}.panel-header{background-color:hsl(var(--color-card));border-bottom:var(--border-width) solid hsl(var(--color-border));padding:var(--space-4)}.panel-header h3{color:hsl(var(--color-text-primary));font-size:var(--text-lg);font-weight:var(--font-weight-semibold);margin:0}.config-tabs{background-color:hsl(var(--color-card));border-bottom:var(--border-width) solid hsl(var(--color-border));display:flex;padding:0 var(--space-2)}.panel-content{background-color:hsl(var(--color-background));flex:1;overflow-y:auto;overflow-x:hidden;padding:0;height:0;min-height:0}.container{width:100%;margin-left:auto;margin-right:auto;padding-left:var(--space-4);padding-right:var(--space-4)}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}.flex{display:flex}.inline-flex{display:inline-flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.grid{display:grid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}@media (min-width: 640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.p-0{padding:var(--space-0)}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-0{padding-left:var(--space-0);padding-right:var(--space-0)}.px-1{padding-left:var(--space-1);padding-right:var(--space-1)}.px-2{padding-left:var(--space-2);padding-right:var(--space-2)}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.px-6{padding-left:var(--space-6);padding-right:var(--space-6)}.px-8{padding-left:var(--space-8);padding-right:var(--space-8)}.py-0{padding-top:var(--space-0);padding-bottom:var(--space-0)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.py-2{padding-top:var(--space-2);padding-bottom:var(--space-2)}.py-3{padding-top:var(--space-3);padding-bottom:var(--space-3)}.py-4{padding-top:var(--space-4);padding-bottom:var(--space-4)}.py-6{padding-top:var(--space-6);padding-bottom:var(--space-6)}.py-8{padding-top:var(--space-8);padding-bottom:var(--space-8)}.m-0{margin:var(--space-0)}.m-1{margin:var(--space-1)}.m-2{margin:var(--space-2)}.m-3{margin:var(--space-3)}.m-4{margin:var(--space-4)}.m-6{margin:var(--space-6)}.m-8{margin:var(--space-8)}.mx-auto{margin-left:auto;margin-right:auto}.my-auto{margin-top:auto;margin-bottom:auto}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.font-light{font-weight:var(--font-weight-light)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.font-extrabold{font-weight:var(--font-weight-extrabold)}.leading-none{line-height:var(--leading-none)}.leading-tight{line-height:var(--leading-tight)}.leading-snug{line-height:var(--leading-snug)}.leading-normal{line-height:var(--leading-normal)}.leading-relaxed{line-height:var(--leading-relaxed)}.leading-loose{line-height:var(--leading-loose)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-primary{color:hsl(var(--color-primary))}.text-secondary{color:hsl(var(--color-secondary))}.text-accent{color:hsl(var(--color-accent))}.text-muted{color:hsl(var(--color-muted-foreground))}.text-foreground{color:hsl(var(--color-foreground))}.bg-primary{background-color:hsl(var(--color-primary))}.bg-secondary{background-color:hsl(var(--color-secondary))}.bg-accent{background-color:hsl(var(--color-accent))}.bg-muted{background-color:hsl(var(--color-muted))}.bg-background{background-color:hsl(var(--color-background))}.bg-card{background-color:hsl(var(--color-card))}.border{border:var(--border-width) solid hsl(var(--color-border))}.border-0{border:0}.border-2{border-width:var(--border-width-2)}.border-4{border-width:var(--border-width-4)}.border-t{border-top:var(--border-width) solid hsl(var(--color-border))}.border-r{border-right:var(--border-width) solid hsl(var(--color-border))}.border-b{border-bottom:var(--border-width) solid hsl(var(--color-border))}.border-l{border-left:var(--border-width) solid hsl(var(--color-border))}.rounded-none{border-radius:var(--radius-none)}.rounded-sm{border-radius:var(--radius-sm)}.rounded{border-radius:var(--radius)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-none{box-shadow:none}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow{box-shadow:var(--shadow)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.shadow-2xl{box-shadow:var(--shadow-2xl)}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.hidden{display:none}.w-full{width:100%}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-max{width:-moz-max-content;width:max-content}.w-min{width:-moz-min-content;width:min-content}.h-full{height:100%}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-max{height:-moz-max-content;height:max-content}.h-min{height:-moz-min-content;height:min-content}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-dropdown{z-index:var(--z-dropdown)}.z-sticky{z-index:var(--z-sticky)}.z-fixed{z-index:var(--z-fixed)}.z-modal{z-index:var(--z-modal)}.z-popover{z-index:var(--z-popover)}.z-tooltip{z-index:var(--z-tooltip)}@media (min-width: 640px){.sm\:hidden{display:none}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}}@media (min-width: 768px){.md\:hidden{display:none}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}}@media (min-width: 1024px){.lg\:hidden{display:none}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}}@media (min-width: 1280px){.xl\:hidden{display:none}.xl\:block{display:block}.xl\:flex{display:flex}.xl\:grid{display:grid}}.project-name-label{font-size:var(--text-xs);color:hsl(var(--color-text-secondary));font-weight:var(--font-weight-medium);white-space:nowrap;margin-bottom:var(--space-1)}.project-name{background-color:hsl(var(--color-input))!important;border:var(--border-width) solid hsl(var(--color-border))!important;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:hsl(var(--color-text-primary))!important;text-align:center;padding:var(--space-1) var(--space-2);border-radius:var(--radius);width:auto;min-width:180px}.project-name:focus{outline:none;background-color:hsl(var(--color-muted))!important;color:hsl(var(--color-text-primary))!important}.project-name::-moz-placeholder{color:hsl(var(--color-text-secondary))}.project-name::placeholder{color:hsl(var(--color-text-secondary))}.project-status{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:hsl(var(--color-text-secondary))}.project-status i{color:hsl(var(--color-icon-primary))}.theme-btn{padding:var(--space-2);border-radius:var(--radius);background:transparent;border:var(--border-width) solid transparent;color:hsl(var(--color-icon-secondary));cursor:pointer;font-size:var(--text-sm)}.theme-btn:hover{background-color:hsl(var(--color-muted));color:hsl(var(--color-icon-primary))}.theme-btn.active{background-color:hsl(var(--color-button-primary));color:hsl(var(--color-button-primary-text));border-color:hsl(var(--color-button-primary))}.total-amount{font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:hsl(var(--color-text-primary))}.total-label{font-size:var(--text-xs);color:hsl(var(--color-text-secondary))}.action-buttons .btn{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:hsl(var(--color-button-secondary-text));background-color:hsl(var(--color-button-secondary))}.action-buttons .btn:hover:not(:disabled){background-color:hsl(var(--color-muted));color:hsl(var(--color-text-primary))}.action-buttons .btn:disabled{opacity:.5;cursor:not-allowed;color:hsl(var(--color-text-muted))}.action-buttons .btn-ghost{padding:var(--space-2);min-width:auto;color:hsl(var(--color-icon-secondary));background:transparent}.action-buttons .btn-ghost:hover:not(:disabled){color:hsl(var(--color-icon-primary));background-color:hsl(var(--color-muted))}.action-buttons .btn-ghost:disabled{opacity:.5;cursor:not-allowed;color:hsl(var(--color-text-muted))}.search-box i{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:hsl(var(--color-icon-secondary));font-size:var(--text-sm)}.search-input{color:hsl(var(--color-text-primary));background-color:hsl(var(--color-input));border:var(--border-width) solid hsl(var(--color-border));padding:var(--space-2) var(--space-3);width:100%;border-radius:var(--radius);font-size:var(--text-sm)}.search-input:focus{border-color:var(--modal-primary, hsl(var(--color-primary)));color:hsl(var(--color-text-primary));outline:none}.filter-select{color:hsl(var(--color-text-primary));background-color:hsl(var(--color-input));border:var(--border-width) solid hsl(var(--color-border))}.filter-select:focus{border-color:var(--modal-primary, hsl(var(--color-primary)));color:hsl(var(--color-text-primary))}.config-section h4{color:hsl(var(--color-text-primary));font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2);font-size:var(--text-base)}.lighting-controls{display:flex;flex-direction:column;gap:var(--space-3)}.lighting-control{display:flex;flex-direction:column;gap:var(--space-2)}.lighting-control label{color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-medium)}.lighting-control input[type=range]{width:100%;height:6px;background:hsl(var(--color-muted));border-radius:var(--radius-full);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.lighting-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background:hsl(var(--color-primary));border-radius:var(--radius-full);cursor:pointer;border:2px solid hsl(var(--color-card));box-shadow:var(--shadow-sm)}.lighting-control input[type=range]::-moz-range-thumb{width:18px;height:18px;background:hsl(var(--color-primary));border-radius:var(--radius-full);cursor:pointer;border:2px solid hsl(var(--color-card));box-shadow:var(--shadow-sm)}.lighting-value{color:hsl(var(--color-text-secondary));font-size:var(--text-xs);font-weight:var(--font-weight-medium);text-align:right}.size-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--space-2);margin-bottom:var(--space-2)}.size-btn{padding:var(--space-3) var(--space-2);border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);background-color:hsl(var(--color-card));color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease;text-align:center;min-height:44px;display:flex;align-items:center;justify-content:center}.size-btn:hover{background-color:hsl(var(--color-muted));border-color:var(--modal-primary, hsl(var(--color-primary)))}.size-btn.active{background-color:hsl(var(--color-primary));color:#fff;border-color:var(--modal-primary, hsl(var(--color-primary)))}.floor-color-options{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin-bottom:var(--space-2)}.color-btn{width:48px;height:48px;border:3px solid hsl(var(--color-border));border-radius:var(--radius-lg);cursor:pointer;transition:all .2s ease;position:relative}.color-btn:hover{border-color:var(--modal-primary, hsl(var(--color-primary)));transform:scale(1.05)}.color-btn.active{border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 3px hsl(var(--color-primary) / .3)}.color-btn.active:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:hsl(var(--color-primary));font-weight:var(--font-weight-bold);font-size:var(--text-lg);text-shadow:0 0 4px hsl(var(--color-card))}.custom-size{margin-top:var(--space-2);padding:var(--space-3);background-color:hsl(var(--color-muted));border-radius:var(--radius-lg);border:var(--border-width) solid hsl(var(--color-border));display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.input-group{display:flex;flex-direction:column;gap:var(--space-2)}.input-group label{color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-medium);margin-bottom:var(--space-1)}.input-group input[type=number]{padding:var(--space-3) var(--space-3);border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);background-color:hsl(var(--color-input));color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-medium);text-align:center}.input-group input[type=number]:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 3px hsl(var(--color-primary) / .1)}.pricing-breakdown{display:flex;flex-direction:column;background:hsl(var(--color-card));border:2px solid hsl(var(--color-border));border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md)}.pricing-breakdown:before{content:"";display:block;height:4px;background:linear-gradient(90deg,hsl(var(--color-primary)),hsl(var(--color-accent)))}.price-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid hsl(var(--color-border) / .3);transition:background-color .2s ease}.price-item:hover{background-color:hsl(var(--color-muted) / .5)}.price-item:last-child{border-bottom:none}.price-item span:first-child{color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-medium);display:flex;align-items:center;gap:var(--space-2)}.price-item span:last-child{color:hsl(var(--color-text-primary));font-size:var(--text-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-mono);background:hsl(var(--color-muted));padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);min-width:60px;text-align:right}.price-item.subtotal{background:hsl(var(--color-muted) / .05);border-top:2px solid hsl(var(--color-border));border-bottom:none;margin-top:var(--space-2);font-weight:var(--font-weight-semibold)}.price-item.subtotal span:first-child{color:hsl(var(--color-text-primary))}.price-item.subtotal span:last-child{font-weight:var(--font-weight-bold);color:hsl(var(--color-primary));background:hsl(var(--color-primary) / .05);border:1px solid hsl(var(--color-primary) / .2);padding:var(--space-1) var(--space-2);border-radius:var(--radius);min-width:70px}.price-item.total{background:linear-gradient(135deg,hsl(var(--color-primary) / .1),hsl(var(--color-accent) / .1));border-top:2px solid hsl(var(--color-primary) / .3);border-bottom:none;margin-top:var(--space-2)}.price-item.total span:first-child{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:hsl(var(--color-primary))}.price-item.total span:last-child{font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:hsl(var(--color-primary));background:hsl(var(--color-primary) / .1);border:1px solid hsl(var(--color-primary) / .3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);min-width:80px}.pricing-breakdown:after{content:"";display:block;height:2px;background:linear-gradient(90deg,hsl(var(--color-primary)),hsl(var(--color-accent)));margin-top:var(--space-2)}.tab-btn{padding:var(--space-2) var(--space-4);border:none;background:transparent;color:hsl(var(--color-text-secondary));font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease}.tab-btn:hover{color:hsl(var(--color-text-primary));background-color:hsl(var(--color-muted))}.tab-btn.active{color:hsl(var(--color-primary));border-bottom-color:hsl(var(--color-primary));background-color:hsl(var(--color-muted))}.tab-content{display:none;padding:0}.tab-content.active{display:block;padding:6px}.config-section{margin-bottom:var(--space-3);padding:var(--space-3);background-color:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.config-section:last-child{margin-bottom:0}[data-theme=light] .config-section{box-shadow:var(--color-shadow-light);border-color:hsl(var(--color-border))}[data-theme=light] .config-section:hover{box-shadow:var(--color-shadow-medium);border-color:hsl(var(--color-border-hover))}[data-theme=light] .size-btn{background-color:hsl(var(--color-card));border-color:hsl(var(--color-border));color:hsl(var(--color-text-primary))}[data-theme=light] .size-btn:hover{background-color:hsl(var(--color-card-hover));border-color:hsl(var(--color-border-hover))}[data-theme=light] .size-btn.active{background-color:hsl(var(--color-primary));color:#fff;border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 2px 8px hsl(var(--color-primary) / .3)}[data-theme=light] .lighting-control input[type=range]{background:hsl(var(--color-muted))}[data-theme=light] .lighting-control input[type=range]::-webkit-slider-thumb{background:hsl(var(--color-primary));border:2px solid hsl(var(--color-card));box-shadow:0 2px 4px #0000001a}[data-theme=light] .lighting-control input[type=range]::-moz-range-thumb{background:hsl(var(--color-primary));border:2px solid hsl(var(--color-card));box-shadow:0 2px 4px #0000001a}[data-theme=light] .price-item{background-color:hsl(var(--color-muted));border-color:hsl(var(--color-border))}[data-theme=light] .price-item:hover{background-color:hsl(var(--color-card-hover));border-color:hsl(var(--color-border-hover))}[data-theme=light] .tab-btn{color:hsl(var(--color-text-secondary))}[data-theme=light] .tab-btn:hover{color:hsl(var(--color-text-primary));background-color:hsl(var(--color-muted))}[data-theme=light] .tab-btn.active{color:hsl(var(--color-primary));background-color:hsl(var(--color-muted));border-bottom-color:hsl(var(--color-primary))}[data-theme=light] .custom-size{background-color:hsl(var(--color-muted));border-color:hsl(var(--color-border))}[data-theme=light] .input-group input[type=number]{background-color:hsl(var(--color-card));border-color:hsl(var(--color-border));color:hsl(var(--color-text-primary))}[data-theme=light] .input-group input[type=number]:focus{border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 3px hsl(var(--color-primary) / .1)}[data-theme=light] .color-btn{border-color:hsl(var(--color-border))}[data-theme=light] .color-btn:hover{border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 2px 8px #0000001a}[data-theme=light] .color-btn.active{border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 2px hsl(var(--color-primary) / .3),0 2px 8px #0000001a}.header{background-color:hsl(var(--color-card));border-bottom:var(--border-width) solid hsl(var(--color-border));padding:var(--space-2) var(--space-4);position:relative;z-index:100;height:var(--header-height, 64px);box-sizing:border-box;grid-area:header;display:flex;align-items:center;min-height:var(--header-height, 64px);max-height:var(--header-height, 64px)}.header-content{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);max-width:1400px;margin:0 auto;width:100%;height:100%}.logo-section{display:flex;flex-direction:column;gap:var(--space-1);min-width:200px}.logo{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-base);font-weight:var(--font-weight-bold)}.breadcrumb{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:hsl(var(--color-muted-foreground))}.breadcrumb-item{padding:var(--space-1);border-radius:var(--radius)}.breadcrumb-item.active{color:hsl(var(--color-foreground));font-weight:var(--font-weight-medium)}.header-center{flex:1;display:flex;justify-content:center;max-width:400px;position:relative}.project-info{display:flex;flex-direction:row;align-items:center;gap:var(--space-1);width:100%;justify-content:center}.project-status{position:absolute;right:0;display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:hsl(var(--color-muted-foreground));white-space:nowrap;padding:var(--space-1);margin-left:var(--space-3)}.text-success{color:hsl(var(--color-success))}.header-actions{display:flex;align-items:center;gap:var(--space-3);min-width:300px}.theme-switcher{display:flex;gap:var(--space-1)}.theme-btn{padding:var(--space-2);border-radius:var(--radius);background:transparent;border:var(--border-width) solid transparent;color:hsl(var(--color-muted-foreground));cursor:pointer;font-size:var(--text-sm)}.theme-btn:hover{background-color:hsl(var(--color-muted));color:hsl(var(--color-foreground))}.theme-btn.active{background-color:hsl(var(--color-primary));color:#fff;border-color:var(--modal-primary, hsl(var(--color-primary)))}.btn-full{width:100%}.total-price-display{display:flex;flex-direction:column;gap:0;min-width:120px;padding:0}.budget-info{display:flex;align-items:center;gap:var(--space-1);justify-content:flex-end}.total-label{font-size:var(--text-xs);color:hsl(var(--color-muted-foreground));white-space:nowrap}.total-amount{font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:hsl(var(--color-foreground))}.budget-indicator{width:100%;height:4px;background-color:hsl(var(--color-muted));border-radius:var(--radius-full);overflow:hidden}.budget-bar{height:100%;background:linear-gradient(90deg,hsl(var(--color-success)),hsl(var(--color-primary)));border-radius:var(--radius-full);transition:width .3s ease}.action-buttons{display:flex;align-items:center;gap:var(--space-1)}.action-buttons .btn{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.action-buttons .btn-ghost{padding:var(--space-2);min-width:auto}.btn-text{display:inline}.search-filter-container{display:flex;gap:var(--space-3);margin-bottom:var(--space-4);align-items:center}.search-box{position:relative;flex:1;max-width:300px}.search-box i{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:hsl(var(--color-muted-foreground));font-size:var(--text-sm)}.search-input{width:100%;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-8);border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);background-color:hsl(var(--color-background));color:hsl(var(--color-foreground));font-size:var(--text-sm)}.search-input:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 2px hsl(var(--color-primary) / .1)}.filter-options{display:flex;gap:var(--space-2)}.filter-select{padding:var(--space-2) var(--space-3);border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);background-color:hsl(var(--color-background));color:hsl(var(--color-foreground));font-size:var(--text-sm);cursor:pointer}.filter-select:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)))}.results-count{font-size:var(--text-xs);color:hsl(var(--color-muted-foreground));margin-bottom:var(--space-2);padding:var(--space-1) var(--space-2);background-color:hsl(var(--color-muted));border-radius:var(--radius);display:none}.quote-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--modal-overlay-bg, rgba(0, 0, 0, .8));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:none;justify-content:center;align-items:center;z-index:var(--z-modal);padding:var(--space-4)}.quote-modal{background-color:var(--modal-background, hsl(var(--color-card)));color:var(--modal-foreground, hsl(var(--color-card-foreground)));border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-width:800px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.quote-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);border-bottom:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));background-color:var(--modal-background, hsl(var(--color-card)))}.quote-modal-header h3{margin:0;font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--modal-foreground, hsl(var(--color-card-foreground)))}.close-btn{background:transparent;border:none;color:var(--modal-muted-foreground, hsl(var(--color-muted-foreground)));cursor:pointer;padding:var(--space-2);border-radius:var(--radius);font-size:var(--text-lg)}.close-btn:hover{background-color:var(--modal-muted, hsl(var(--color-muted)));color:var(--modal-foreground, hsl(var(--color-foreground)))}.quote-modal-content{flex:1;overflow-y:auto;padding:var(--space-4)}.form-section{margin-bottom:var(--space-6)}.form-section h4{margin:0 0 var(--space-3) 0;font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--modal-text-primary, hsl(var(--color-foreground)))}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-3)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--modal-text-primary, hsl(var(--color-foreground)))}.form-group input,.form-group textarea{padding:var(--space-2) var(--space-3);border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));border-radius:var(--radius);background-color:var(--modal-background, hsl(var(--color-background)));color:var(--modal-text-primary, hsl(var(--color-foreground)));font-size:var(--text-sm)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 2px hsl(var(--color-primary) / .2)}.form-group input.error,.form-group textarea.error{border-color:hsl(var(--color-error));box-shadow:0 0 0 3px hsl(var(--color-error) / .1)}.error-message{color:hsl(var(--color-error));font-size:var(--text-xs);margin-top:var(--space-1)}.design-preview{display:grid;grid-template-columns:1fr auto;gap:var(--space-4);align-items:start}.preview-images{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-2)}.preview-item{display:flex;flex-direction:column;gap:var(--space-1)}.preview-image{width:100%;height:100px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius);border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)))}.preview-caption{font-size:var(--text-xs);color:var(--modal-muted-foreground, hsl(var(--color-muted-foreground)));text-align:center}.preview-info{display:flex;flex-direction:column;gap:var(--space-2);min-width:150px}.info-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2);background-color:var(--modal-muted, hsl(var(--color-muted)));border-radius:var(--radius)}.info-item .label{font-size:var(--text-sm);color:var(--modal-muted-foreground, hsl(var(--color-muted-foreground)))}.info-item .value{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--modal-text-primary, hsl(var(--color-foreground)))}.quote-modal-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4);border-top:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));background-color:var(--modal-background, hsl(var(--color-card)))}.card{background-color:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm)}.card-header{margin-bottom:var(--space-3)}.card-title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:hsl(var(--color-foreground));margin-bottom:var(--space-2)}.card-description{color:hsl(var(--color-muted-foreground));font-size:var(--text-sm)}.card-content{margin-bottom:var(--space-3)}.card-footer{margin-top:var(--space-3);padding-top:var(--space-3);border-top:var(--border-width) solid hsl(var(--color-border))}.card.card-gallery{height:120px!important;display:flex!important;flex-direction:column!important;overflow:visible!important;padding:var(--space-3)!important;border:var(--border-width) solid hsl(var(--color-border))!important;background-color:hsl(var(--color-card))!important;border-radius:var(--radius-xl)!important;box-shadow:var(--shadow-md)!important;transition:all var(--transition-normal)!important;cursor:pointer!important}.card.card-gallery:hover{transform:translateY(-2px)!important;box-shadow:var(--shadow-lg)!important;border-color:hsl(var(--color-primary))!important}.card.card-gallery .card-content{flex:1!important;display:flex!important;flex-direction:column!important;overflow:visible!important;margin-bottom:0!important;padding:0!important;justify-content:space-between!important}.card.card-gallery .card-title{max-height:2.4em!important;line-height:1.2!important;overflow:hidden!important;text-overflow:ellipsis!important;display:-webkit-box!important;-webkit-line-clamp:2!important;line-clamp:2!important;-webkit-box-orient:vertical!important;word-break:break-word!important;-webkit-hyphens:auto!important;hyphens:auto!important;font-size:var(--text-xs)!important;margin-bottom:0!important;font-weight:var(--font-weight-semibold)!important;color:hsl(var(--color-foreground))!important}@media (min-width: 640px){.card.card-gallery{height:130px!important}}@media (min-width: 768px){.card.card-gallery{height:140px!important}}@media (min-width: 1024px){.card.card-gallery{height:150px!important}}.btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:var(--space-2)!important;padding:var(--space-2) var(--space-4)!important;font-size:var(--text-sm)!important;font-weight:var(--font-weight-medium)!important;border-radius:var(--radius)!important;border:var(--border-width) solid transparent!important;cursor:pointer!important;text-decoration:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important;white-space:nowrap!important;background-color:transparent!important;color:hsl(var(--color-foreground))!important}.btn:disabled{opacity:.5!important;cursor:not-allowed!important}.btn-primary{background:linear-gradient(135deg,hsl(var(--color-primary)),hsl(var(--color-primary-light)))!important;color:hsl(var(--color-button-primary-text))!important;border-color:hsl(var(--color-primary))!important;box-shadow:0 4px 14px hsl(var(--color-primary) / .3)!important;transition:all var(--transition-normal)!important}.btn-primary:hover{transform:translateY(-1px)!important;box-shadow:0 6px 20px hsl(var(--color-primary) / .4)!important}.btn-secondary{background-color:hsl(var(--color-muted))!important;color:hsl(var(--color-foreground))!important;border-color:hsl(var(--color-border))!important}.btn-ghost{background-color:transparent!important;color:hsl(var(--color-foreground))!important;border-color:transparent!important}.btn-sm{padding:var(--space-1) var(--space-2)!important;font-size:var(--text-xs)!important;min-height:auto!important;line-height:1!important}.btn-xs{padding:var(--space-1)!important;font-size:var(--text-xs)!important;min-height:auto!important;line-height:1!important;width:auto!important;height:auto!important}.btn-lg{padding:var(--space-3) var(--space-6)!important;font-size:var(--text-base)!important}.badge{display:inline-flex!important;align-items:center!important;padding:var(--space-1) var(--space-2)!important;font-size:var(--text-xs)!important;font-weight:var(--font-weight-semibold)!important;border-radius:var(--radius)!important;background-color:hsl(var(--color-muted))!important;color:hsl(var(--color-foreground))!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;min-width:-moz-fit-content!important;min-width:fit-content!important;border:none!important}.badge-primary{background-color:hsl(var(--color-primary))!important;color:hsl(var(--color-button-primary-text))!important}.badge-secondary{background-color:hsl(var(--color-secondary))!important;color:hsl(var(--color-button-primary-text))!important}.badge-accent{background-color:hsl(var(--color-accent))!important;color:hsl(var(--color-button-primary-text))!important}.input{display:block;width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);background-color:hsl(var(--color-background));color:hsl(var(--color-foreground))}.input:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)))}.input:disabled{opacity:.5;cursor:not-allowed}.tooltip{position:fixed;background-color:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius-lg);padding:var(--space-3);box-shadow:var(--shadow-xl);z-index:999999;max-width:280px;min-width:220px;opacity:0;visibility:hidden;pointer-events:none;white-space:normal;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;overflow:visible;isolation:isolate}.tooltip,.tooltip *{z-index:999999!important}.tooltip.active{opacity:1;visibility:visible;pointer-events:auto}.tooltip h5{color:hsl(var(--color-foreground));font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2)}.tooltip p{color:hsl(var(--color-muted-foreground));line-height:var(--leading-normal);margin-bottom:var(--space-2)}.tooltip .space-y-1>div{color:hsl(var(--color-foreground));line-height:var(--leading-tight)}.tooltip .font-medium{color:hsl(var(--color-foreground));font-weight:var(--font-weight-medium)}.tooltip:before{content:"";position:absolute;bottom:-6px;left:50%;transform:translate(-50%);width:0;height:0;border:6px solid transparent;border-top-color:hsl(var(--color-border))}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:hsl(var(--color-background) / .8);z-index:var(--z-modal-backdrop);opacity:0;visibility:hidden}.modal-overlay.active{opacity:1;visibility:visible}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius-lg);box-shadow:var(--shadow-2xl);z-index:var(--z-modal);max-width:90vw;max-height:90vh;overflow:auto;opacity:0;visibility:hidden}.modal.active{opacity:1;visibility:visible}.modal-header{padding:var(--space-6);border-bottom:var(--border-width) solid hsl(var(--color-border))}.modal-title{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:hsl(var(--color-foreground))}.modal-content{padding:var(--space-6)}.modal-footer{padding:var(--space-6);border-top:var(--border-width) solid hsl(var(--color-border));display:flex;gap:var(--space-3);justify-content:flex-end}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 20% 80%,hsl(var(--color-primary) / .1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,hsl(var(--color-accent) / .1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,hsl(var(--color-secondary) / .05) 0%,transparent 50%);pointer-events:none;z-index:-1;transition:opacity var(--transition-normal)}[data-theme=light] body:before{opacity:.3}[data-theme=dark] body:before{opacity:.1}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2;letter-spacing:-.025em}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}.viewport-controls{position:absolute;top:var(--space-5);right:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);z-index:50}.grid-toggle-btn{background:hsl(var(--color-primary));color:hsl(var(--color-primary-foreground));border:none;border-radius:var(--radius);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:var(--text-base)}.grid-toggle-btn:hover{background:hsl(var(--color-primary) / .9);transform:scale(1.05)}.grid-toggle-btn.active{background:hsl(var(--color-accent));color:hsl(var(--color-accent-foreground))}.control-btn{align-items:center;background:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);color:hsl(var(--color-foreground));cursor:pointer;display:flex;font-size:var(--text-base);height:44px;justify-content:center;width:44px}.view-presets{display:flex;flex-direction:column;gap:4px}.preset-btn{background:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius);color:hsl(var(--color-text-secondary));cursor:pointer;font-size:var(--text-xs);font-weight:var(--font-weight-medium);padding:var(--space-2) var(--space-3);text-align:center}.preset-btn.active{background:hsl(var(--color-primary) / .2);border-color:var(--modal-primary, hsl(var(--color-primary)));color:hsl(var(--color-primary))}.selection-hint{position:absolute;bottom:var(--space-5);left:50%;transform:translate(-50%);background:hsl(var(--color-card));border:var(--border-width) solid hsl(var(--color-border));border-radius:var(--radius-lg);color:hsl(var(--color-text-secondary));display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);font-size:var(--text-sm);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-lg);z-index:50}.selection-hint i{color:hsl(var(--color-primary));font-size:var(--text-base)}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);margin-top:var(--space-4)}@media (min-width: 640px){.gallery{grid-template-columns:repeat(3,1fr);gap:var(--space-3)}}@media (min-width: 768px){.gallery{grid-template-columns:repeat(4,1fr)}}@media (min-width: 1024px){.gallery{grid-template-columns:repeat(5,1fr)}}.gallery-item{cursor:pointer;position:relative}.gallery-item.dragging{opacity:.5;transform:rotate(5deg) scale(.95)}.gallery-item.empty-state-card{cursor:default}.gallery-item.selected .card{border:2px solid hsl(var(--color-primary));box-shadow:0 0 0 2px hsl(var(--color-primary) / .2)}.booth-model-card{height:auto!important;min-height:80px;max-height:80px;cursor:pointer}.booth-model-card .card-content{padding:.75rem;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.booth-model-card .card-thumbnail{height:50px;display:flex;align-items:center;justify-content:center}.booth-model-card .card-thumbnail svg{max-width:100%;max-height:100%;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.gallery-loading{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center;padding:40px 20px;text-align:center}.loading-spinner{border:2px solid hsl(var(--color-border));border-top-color:hsl(var(--color-primary));border-radius:50%;height:24px;width:24px}.gallery-loading p{color:hsl(var(--color-text-secondary));font-size:var(--text-sm)}.text-gradient{background:linear-gradient(135deg,hsl(var(--color-primary)),hsl(var(--color-accent)));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.glass-effect{background:hsl(var(--color-muted));border:var(--border-width) solid hsl(var(--color-border))}.shadow-glow{box-shadow:var(--shadow-lg),var(--glow-primary)}*:focus-visible{outline:2px solid hsl(var(--color-primary));outline-offset:2px}::-moz-selection{background:hsl(var(--color-primary) / .2);color:hsl(var(--color-primary))}::selection{background:hsl(var(--color-primary) / .2);color:hsl(var(--color-primary))}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsl(var(--color-border));border-radius:4px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--color-primary))}@media (max-width: 768px){.app-container{height:100vh}.main-content{height:calc(100vh - var(--header-height, 64px));grid-template-columns:1fr;grid-template-areas:"viewer"}.config-panel{width:100%;position:fixed;bottom:0;left:0;right:0;height:60vh;z-index:var(--z-modal);border-left:none;border-top:var(--border-width) solid hsl(var(--color-border));grid-area:unset;transform:translateY(100%);transition:transform .3s ease-in-out}.config-panel.open{transform:translateY(0)}.panel-toggle{position:fixed;bottom:1rem;right:1rem;width:3rem;height:3rem;border-radius:50%;background-color:hsl(var(--color-primary));color:#fff;border:none;box-shadow:var(--shadow-lg);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;font-size:1.25rem;cursor:pointer;transition:all .2s ease}.panel-toggle:hover{background-color:hsl(var(--color-primary-dark));transform:scale(1.1)}.panel-toggle:active{transform:scale(.95)}.header{padding:0 var(--space-3);height:var(--header-height-mobile, 56px)}.header-content{gap:var(--space-2);padding:0 16px}.logo-section{min-width:120px}.logo{font-size:var(--text-sm);gap:var(--space-1)}.header-center{max-width:200px}.project-info{gap:var(--space-1)}.project-name-label{display:none}.project-name{font-size:var(--text-sm);max-width:150px}.project-status{position:static;margin-left:var(--space-1)}.header-actions{min-width:200px;gap:var(--space-2)}.total-price-display{min-width:80px}.budget-info{flex-direction:column;align-items:flex-end;gap:0}.total-label{font-size:var(--text-xs)}.total-amount{font-size:var(--text-base)}.action-buttons{gap:var(--space-1)}.btn{min-height:40px;min-width:40px;padding:var(--space-2)}.btn-text{display:none}.viewport-controls{top:16px;right:16px}.control-btn{height:40px;width:40px}.selection-hint{bottom:16px;left:16px;right:16px;transform:none;font-size:13px;padding:10px 16px}.size-options{grid-template-columns:repeat(3,1fr)}.floor-color-options{grid-template-columns:repeat(4,1fr)}.custom-size{grid-template-columns:1fr}.search-filter-container{flex-direction:column;align-items:stretch}.search-box{max-width:none}.filter-options{justify-content:stretch}.filter-select{flex:1}.quote-modal{margin:var(--space-2);max-height:calc(100vh - var(--space-4))}.form-grid,.design-preview{grid-template-columns:1fr}.preview-images{grid-template-columns:repeat(2,1fr)}.quote-modal-footer{flex-direction:column}}@media (max-width: 480px){.header{padding:0 var(--space-2);height:var(--header-height-mobile, 56px)}.header-content{gap:var(--space-1)}.logo-section{min-width:80px}.logo{font-size:var(--text-xs);gap:var(--space-1)}.logo .text-gradient{display:none}.header-center{max-width:120px}.project-info{gap:0}.project-name{font-size:var(--text-xs);max-width:100px}.project-status{display:none}.header-actions{min-width:120px;gap:var(--space-1)}.theme-switcher{gap:0}.theme-btn{padding:var(--space-1);font-size:var(--text-xs)}.total-price-display{min-width:60px}.budget-info{flex-direction:column;align-items:flex-end;gap:0}.total-label{font-size:var(--text-xs);display:none}.total-amount{font-size:var(--text-sm)}.budget-indicator{height:2px}.action-buttons{gap:var(--space-1)}.btn{min-height:36px;min-width:36px;padding:var(--space-1);font-size:var(--text-xs)}.btn-text,.btn[data-action=undo],.btn[data-action=redo]{display:none}}@media (max-width: 320px){.header{padding:0 var(--space-1)}.header-content{gap:var(--space-1)}.logo-section{min-width:40px}.logo{font-size:var(--text-xs)}.logo i{font-size:var(--text-sm)}.header-center{max-width:80px}.project-name{max-width:70px;font-size:var(--text-xs)}.header-actions{min-width:80px;gap:var(--space-1)}.total-price-display{min-width:40px}.total-amount{font-size:var(--text-xs)}.budget-indicator{display:none}.action-buttons{gap:var(--space-1)}.btn{min-height:32px;min-width:32px;padding:var(--space-1)}.btn[data-action=save]{display:none}}@media print{.header,.config-panel,.viewport-controls,.selection-hint{display:none!important}.main-content{display:block!important}#viewport{height:100vh!important}}.quote-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5) var(--space-6);border-bottom:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));background:var(--modal-muted, hsl(var(--color-muted)));border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;transition:all var(--transition-base)}.quote-modal-header h3{margin:0;color:var(--modal-text-primary, hsl(var(--color-foreground)));font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);font-family:var(--font-family-display)}.close-btn{background:transparent;border:none;color:var(--modal-text-secondary, hsl(var(--color-muted-foreground)));font-size:var(--text-xl);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);transition:all var(--transition-base);display:flex;align-items:center;justify-content:center}.close-btn:hover{background:hsl(var(--bg-hover));color:var(--modal-text-primary, hsl(var(--color-foreground)));transform:scale(1.05)}.quote-modal-content{padding:var(--space-6);font-family:var(--font-family-sans)}.form-section{margin-bottom:var(--space-8)}.form-section h4{color:var(--modal-text-primary, hsl(var(--color-foreground)));font-size:var(--text-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));font-family:var(--font-family-display);transition:color var(--transition-base)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-group{display:flex;flex-direction:column}.form-group label{color:var(--modal-text-secondary, hsl(var(--color-muted-foreground)));font-size:var(--text-sm);font-weight:var(--font-weight-medium);margin-bottom:var(--space-2);font-family:var(--font-family-sans);transition:color var(--transition-base)}.form-group input,.form-group textarea{padding:var(--space-3);border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));border-radius:var(--radius-lg);background:var(--modal-muted, hsl(var(--color-muted)));color:var(--modal-text-primary, hsl(var(--color-foreground)));font-size:var(--text-base);font-family:var(--font-family-sans);transition:all var(--transition-base);line-height:var(--leading-normal)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:0 0 0 3px hsl(var(--color-primary) / .1);background:var(--modal-background, hsl(var(--color-card)))}.form-group textarea{resize:vertical;min-height:80px;font-family:var(--font-family-sans)}.form-group input.error,.form-group textarea.error{border-color:hsl(var(--color-error));box-shadow:0 0 0 3px hsla(var(--color-error) / .1)}.error-message{color:hsl(var(--color-error));font-size:var(--text-xs);margin-top:var(--space-1);font-weight:var(--font-weight-medium);font-family:var(--font-family-sans)}.design-preview{background:var(--modal-muted, hsl(var(--color-muted)));border-radius:var(--radius-lg);padding:var(--space-4);border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));transition:all var(--transition-base)}.preview-images{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);margin-bottom:var(--space-4)}.screenshot-container{display:flex;flex-direction:column;align-items:center;transition:transform var(--transition-base)}.screenshot-container:hover{transform:scale(1.02)}.screenshot-label{font-size:var(--text-xs);color:var(--modal-text-secondary, hsl(var(--color-muted-foreground)));margin-top:var(--space-1);text-align:center;font-weight:var(--font-weight-medium);font-family:var(--font-family-sans);transition:color var(--transition-base)}.preview-images img{width:100%;height:120px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-md);border:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));transition:all var(--transition-base)}.preview-images img:hover{border-color:var(--modal-primary, hsl(var(--color-primary)));box-shadow:var(--shadow-lg)}.preview-info{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.info-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0}.info-item .label{color:var(--modal-text-secondary, hsl(var(--color-muted-foreground)));font-size:var(--text-sm);font-family:var(--font-family-sans);transition:color var(--transition-base)}.info-item .value{color:var(--modal-text-primary, hsl(var(--color-foreground)));font-weight:var(--font-weight-semibold);font-family:var(--font-family-sans);transition:color var(--transition-base)}.quote-modal-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6);border-top:var(--border-width) solid var(--modal-border, hsl(var(--color-border)));background:var(--modal-muted, hsl(var(--color-muted)));border-radius:0 0 var(--radius-2xl) var(--radius-2xl);transition:all var(--transition-base)}@media (max-width: 480px){.preview-images{grid-template-columns:1fr}.quote-modal-header h3{font-size:var(--text-xl)}}
