*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;hanging-punctuation:first last}body{min-height:100dvh;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}table{border-collapse:collapse;border-spacing:0}@viewport{width:device-width;zoom:1}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:root{--color-black: oklch(7% .01 260);--color-gray-950: oklch(12% .01 260);--color-gray-900: oklch(16% .01 260);--color-gray-800: oklch(22% .01 260);--color-gray-700: oklch(30% .01 260);--color-gray-600: oklch(40% .01 260);--color-gray-500: oklch(50% .01 260);--color-gray-400: oklch(62% .008 260);--color-gray-300: oklch(73% .006 260);--color-gray-200: oklch(84% .004 260);--color-gray-100: oklch(92% .003 260);--color-gray-50: oklch(96% .002 260);--color-white: oklch(98% .002 260);--surface-page: var(--color-white);--surface-raised: oklch(99% .002 260);--surface-sunken: var(--color-gray-50);--surface-overlay: oklch(7% .01 260 / 60%);--text-primary: var(--color-black);--text-secondary: var(--color-gray-600);--text-tertiary: var(--color-gray-400);--text-inverse: var(--color-white);--text-on-accent: var(--color-white);--border-default: var(--color-gray-200);--border-subtle: var(--color-gray-100);--border-strong: var(--color-gray-300);--border-focus: var(--color-black);--color-accent: var(--color-black);--color-accent-hover: var(--color-gray-800);--color-success: oklch(62% .19 145);--color-success-subtle: oklch(94% .05 145);--color-success-text: oklch(35% .12 145);--color-warning: oklch(75% .18 75);--color-warning-subtle: oklch(95% .06 75);--color-warning-text: oklch(40% .1 75);--color-error: oklch(55% .22 25);--color-error-subtle: oklch(94% .04 25);--color-error-text: oklch(35% .14 25);--color-info: var(--color-gray-500);--color-info-subtle: var(--color-gray-50);--color-info-text: var(--color-gray-700);--badge-draft-bg: var(--color-gray-100);--badge-draft-text: var(--color-gray-600);--badge-pending-bg: var(--color-warning-subtle);--badge-pending-text: var(--color-warning-text);--badge-review-bg: var(--color-info-subtle);--badge-review-text: var(--color-info-text);--badge-adjusted-bg: var(--color-warning-subtle);--badge-adjusted-text: var(--color-warning-text);--badge-payment-bg: oklch(94% .03 250);--badge-payment-text: oklch(38% .1 250);--badge-paid-bg: var(--color-success-subtle);--badge-paid-text: var(--color-success-text);--badge-printing-bg: oklch(92% .04 250);--badge-printing-text: oklch(38% .12 250);--badge-qa-bg: oklch(93% .04 200);--badge-qa-text: oklch(35% .1 200);--badge-shipped-bg: oklch(93% .04 280);--badge-shipped-text: oklch(35% .1 280);--badge-delivered-bg: var(--color-success-subtle);--badge-delivered-text: var(--color-success-text);--badge-cancelled-bg: var(--color-error-subtle);--badge-cancelled-text: var(--color-error-text);--badge-refunded-bg: var(--color-gray-100);--badge-refunded-text: var(--color-gray-600);--shadow-color-light: oklch(7% .01 260 / 5%);--shadow-color-medium: oklch(7% .01 260 / 8%);--shadow-xs: 0 1px 2px var(--shadow-color-light);--shadow-sm: 0 1px 3px var(--shadow-color-light), 0 1px 2px var(--shadow-color-light);--shadow-md: 0 4px 6px var(--shadow-color-light), 0 2px 4px var(--shadow-color-light);--shadow-lg: 0 10px 15px var(--shadow-color-medium), 0 4px 6px var(--shadow-color-light);--shadow-focus: 0 0 0 3px var(--shadow-color-medium);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 300;--z-modal: 400;--z-toast: 500;--z-tooltip: 600;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--space-24: 96px;--space-icon-gap: var(--space-2);--space-input-padding: var(--space-3);--space-element: var(--space-4);--space-card: var(--space-6);--space-group: var(--space-8);--space-section: var(--space-12);--space-region: var(--space-16);--space-hero: var(--space-24);--max-width: 1200px;--max-width-prose: 65ch;--sidebar-width: 260px;--nav-height: 64px;--admin-row-height: 36px;--admin-cell-padding: 8px 12px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--border-width: 1px;--ease-default: cubic-bezier(.25, .1, .25, 1);--ease-in: cubic-bezier(.55, 0, 1, .45);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--duration-fast: .1s;--duration-normal: .2s;--duration-slow: .3s;--duration-slower: .5s}[data-theme=dark]{--surface-page: var(--color-gray-950);--surface-raised: var(--color-gray-900);--surface-sunken: var(--color-black);--text-primary: var(--color-gray-50);--text-secondary: var(--color-gray-400);--text-tertiary: var(--color-gray-600);--border-default: var(--color-gray-800);--border-subtle: var(--color-gray-900);--border-strong: var(--color-gray-700);--border-focus: var(--color-gray-300);--color-accent: var(--color-gray-50);--color-accent-hover: var(--color-gray-100);--text-on-accent: var(--color-black);--color-success: oklch(65% .14 145);--color-success-subtle: oklch(20% .04 145);--color-success-text: oklch(75% .1 145);--color-warning: oklch(72% .14 75);--color-warning-subtle: oklch(20% .04 75);--color-warning-text: oklch(78% .1 75);--color-error: oklch(60% .16 25);--color-error-subtle: oklch(20% .04 25);--color-error-text: oklch(75% .1 25);--badge-draft-bg: var(--color-gray-800);--badge-draft-text: var(--color-gray-300);--badge-pending-bg: var(--color-warning-subtle);--badge-pending-text: var(--color-warning-text);--badge-printing-bg: oklch(22% .04 250);--badge-printing-text: oklch(72% .08 250);--badge-shipped-bg: oklch(20% .04 280);--badge-shipped-text: oklch(72% .08 280);--badge-delivered-bg: var(--color-success-subtle);--badge-delivered-text: var(--color-success-text);--badge-cancelled-bg: var(--color-error-subtle);--badge-cancelled-text: var(--color-error-text);--shadow-color-light: transparent;--shadow-color-medium: transparent}@font-face{font-family:Space Grotesk;src:url(/fonts/space-grotesk-var.ttf) format("truetype");font-weight:500 700;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/outfit-var.ttf) format("truetype");font-weight:300 700;font-display:swap}@font-face{font-family:Space-Grotesk-Fallback;src:local("Arial");size-adjust:105%;ascent-override:95%;descent-override:23%;line-gap-override:0%}@font-face{font-family:Outfit-Fallback;src:local("Arial");size-adjust:103%;ascent-override:92%;descent-override:22%;line-gap-override:0%}:root{--font-heading: "Space Grotesk", "Space-Grotesk-Fallback", system-ui, sans-serif;--font-body: "Outfit", "Outfit-Fallback", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-display: 700 clamp(2.25rem, 5vw + 1rem, 3.5rem)/1.1 var(--font-heading);--text-h1: 700 clamp(1.75rem, 3vw + 1rem, 2.5rem)/1.2 var(--font-heading);--text-h2: 600 1.5rem/1.3 var(--font-heading);--text-h3: 600 1.125rem/1.35 var(--font-heading);--text-body: 400 1rem/1.5 var(--font-body);--text-sm: 400 .875rem/1.5 var(--font-body)}body{font:var(--text-body);color:var(--text-primary);font-kerning:normal}h1{font:var(--text-h1)}h2{font:var(--text-h2)}h3{font:var(--text-h3)}.text-display{font:var(--text-display)}.text-h1{font:var(--text-h1)}.text-h2{font:var(--text-h2)}.text-h3{font:var(--text-h3)}.text-body{font:var(--text-body)}.text-sm{font:var(--text-sm)}.data-table,.price{font-variant-numeric:tabular-nums}abbr{font-variant-caps:all-small-caps}code{font-family:var(--font-mono);font-variant-ligatures:none}.prose{max-width:var(--max-width-prose)}[data-theme=dark]{--text-body: 350 1rem/1.55 var(--font-body);--text-sm: 350 .875rem/1.55 var(--font-body)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:var(--space-element)}@media(min-width:768px){.container{padding-inline:var(--space-card)}}@media(min-width:1024px){.container{padding-inline:var(--space-group)}}.page{min-height:100dvh;display:flex;flex-direction:column}.page-main{flex:1}.dashboard-layout{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:calc(100dvh - var(--nav-height))}@media(max-width:1023px){.dashboard-layout{grid-template-columns:1fr}}.grid{display:grid;gap:var(--space-element)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}@media(max-width:767px){.grid-2,.grid-3{grid-template-columns:1fr}}@media(min-width:768px)and (max-width:1023px){.grid-3{grid-template-columns:repeat(2,1fr)}}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.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)}.viewer-container,.main-content,.sidebar-container{container-type:inline-size}@container (min-width: 500px){.quote-calculator{grid-template-columns:1fr 1fr}}@container (max-width: 499px){.quote-calculator{grid-template-columns:1fr}}@container (min-width: 700px){.viewer-controls-layout{grid-template-columns:1fr auto}}@container (max-width: 699px){.viewer-controls-layout{grid-template-columns:1fr}}.section{padding-block:var(--space-section)}.section-lg{padding-block:var(--space-region)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-icon-gap);font:var(--text-sm);font-weight:600;border-radius:var(--radius-md);transition:background-color var(--duration-fast) var(--ease-default),opacity var(--duration-fast) var(--ease-default),transform var(--duration-fast) var(--ease-default);cursor:pointer;white-space:nowrap;text-decoration:none;min-height:44px}.btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px}.btn-primary{background:var(--color-accent);color:var(--text-on-accent);padding:12px 24px}.btn-primary:hover{background:var(--color-accent-hover)}.btn-secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border-default);padding:12px 24px}.btn-secondary:hover{border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 12px}.btn-ghost:hover{color:var(--text-primary);background:var(--surface-sunken)}.btn-danger{background:var(--color-error);color:var(--color-white);padding:12px 24px}.btn-danger:hover{opacity:.9}.btn:disabled,.btn[aria-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none}.btn-loading{position:relative;color:transparent;pointer-events:none}.btn-loading:after{content:"";position:absolute;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:var(--radius-full);animation:btn-spin .6s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.input{height:44px;padding:0 16px;font:var(--text-body);color:var(--text-primary);background:var(--surface-page);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-md);width:100%;transition:border-color var(--duration-fast) var(--ease-default)}.input:focus{outline:none;border:2px solid var(--border-focus);padding:0 15px}.input::placeholder{color:var(--color-gray-400)}.input:disabled{opacity:.4;background:var(--surface-sunken);cursor:not-allowed}.input-error{border-color:var(--color-error)}.input-error:focus{border-color:var(--color-error)}.textarea{min-height:120px;padding:12px 16px;resize:vertical}.label{display:block;font:var(--text-sm);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-1)}.input-helper{font:var(--text-sm);color:var(--text-secondary);margin-top:var(--space-1)}.input-error-text{font:var(--text-sm);color:var(--color-error-text);margin-top:var(--space-1)}.field{display:flex;flex-direction:column;gap:var(--space-1)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 256 256'%3E%3Cpath fill='%23666' d='m216.49 104.49-80 80a12 12 0 0 1-17 0l-80-80a12 12 0 0 1 17-17L128 159l71.51-71.52a12 12 0 0 1 17 17Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}.card{background:var(--surface-raised);border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-card);box-shadow:var(--shadow-xs);transition:border-color var(--duration-fast) var(--ease-default)}.card:hover{border-color:var(--border-default)}.card-header{margin-bottom:var(--space-element)}.card-title{font:var(--text-h3)}.card-body{color:var(--text-secondary)}.card-footer{margin-top:var(--space-element);padding-top:var(--space-element);border-top:var(--border-width) solid var(--border-subtle)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);font:var(--text-sm);font-weight:600;padding:4px 10px;border-radius:var(--radius-full);white-space:nowrap}.badge-draft{background:var(--badge-draft-bg);color:var(--badge-draft-text)}.badge-pending-review{background:var(--badge-review-bg);color:var(--badge-review-text)}.badge-offer-adjusted{background:var(--badge-adjusted-bg);color:var(--badge-adjusted-text)}.badge-awaiting-payment{background:var(--badge-payment-bg);color:var(--badge-payment-text)}.badge-paid{background:var(--badge-paid-bg);color:var(--badge-paid-text)}.badge-printing{background:var(--badge-printing-bg);color:var(--badge-printing-text)}.badge-quality-check{background:var(--badge-qa-bg);color:var(--badge-qa-text)}.badge-shipped{background:var(--badge-shipped-bg);color:var(--badge-shipped-text)}.badge-delivered{background:var(--badge-delivered-bg);color:var(--badge-delivered-text)}.badge-cancelled{background:var(--badge-cancelled-bg);color:var(--badge-cancelled-text)}.badge-refunded{background:var(--badge-refunded-bg);color:var(--badge-refunded-text)}.nav{position:sticky;top:0;z-index:var(--z-sticky);height:var(--nav-height);background:var(--surface-page);border-bottom:var(--border-width) solid var(--border-subtle);display:flex;align-items:center;padding-inline:var(--space-element)}@media(min-width:768px){.nav{padding-inline:var(--space-card)}}.nav-inner{width:100%;max-width:var(--max-width);margin-inline:auto;display:flex;align-items:center;justify-content:space-between}.nav-logo{display:flex;align-items:center;gap:var(--space-icon-gap);font-family:var(--font-heading);font-weight:700;font-size:20px;color:var(--text-primary);text-decoration:none}.nav-links{display:flex;align-items:center;gap:var(--space-element)}.nav-link{font:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:color var(--duration-fast) var(--ease-default);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);min-height:44px;display:inline-flex;align-items:center}.nav-link:hover,.nav-link[aria-current=page]{color:var(--text-primary)}.nav-toggle{display:none;min-height:44px;min-width:44px;align-items:center;justify-content:center}@media(max-width:639px){.nav-links{display:none}.nav-toggle{display:inline-flex}.nav-links[data-open]{display:flex;flex-direction:column;position:absolute;top:var(--nav-height);left:0;right:0;background:var(--surface-page);border-bottom:var(--border-width) solid var(--border-subtle);padding:var(--space-element);z-index:var(--z-dropdown)}}.lang-select{position:relative}.lang-select-trigger{cursor:pointer;background:none;border:none;display:inline-flex;align-items:center;justify-content:center}.lang-select-menu{display:none;position:absolute;top:calc(100% + var(--space-2));right:0;min-width:140px;background:var(--surface-page);border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:0 4px 16px #01010214;padding:var(--space-1) 0;z-index:var(--z-dropdown);opacity:0;transform:translateY(-4px)}.lang-select.is-open .lang-select-menu{display:block;animation:langMenuIn .15s ease-out forwards}@keyframes langMenuIn{to{opacity:1;transform:translateY(0)}}.lang-select-option{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);font:var(--text-sm);font-weight:500;color:var(--text-secondary);text-decoration:none;transition:background var(--duration-fast) var(--ease-default),color var(--duration-fast) var(--ease-default)}.lang-select-option:hover{background:var(--surface-sunken);color:var(--text-primary)}.lang-select-option.is-active{color:var(--text-primary)}.footer-lang-select{display:inline-flex}.footer-lang-select .lang-select-trigger{font:var(--text-sm);gap:0;padding:0}.footer-lang-select .lang-select-menu{top:auto;bottom:calc(100% + var(--space-2));right:auto;left:0;transform:translateY(4px)}.footer-lang-select.is-open .lang-select-menu{animation:langMenuUp .15s ease-out forwards}@keyframes langMenuUp{to{opacity:1;transform:translateY(0)}}.sidebar{width:var(--sidebar-width);background:var(--surface-raised);border-right:var(--border-width) solid var(--border-subtle);padding-top:var(--space-element);height:calc(100dvh - var(--nav-height));position:sticky;top:var(--nav-height);overflow-y:auto}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-1)}.sidebar-item{display:flex;align-items:center;gap:var(--space-icon-gap);padding:12px 20px;font:var(--text-sm);color:var(--text-secondary);border-left:3px solid transparent;transition:all var(--duration-fast) var(--ease-default);min-height:44px;text-decoration:none}.sidebar-item:hover{color:var(--text-primary);background:var(--surface-sunken)}.sidebar-item[aria-current=page],.sidebar-item.active{color:var(--text-primary);font-weight:600;border-left-color:var(--color-accent)}.sidebar-section-title{font:var(--text-sm);font-weight:600;color:var(--text-tertiary);padding:var(--space-element) 20px var(--space-2);text-transform:uppercase;letter-spacing:.05em}@media(max-width:1023px){.sidebar{width:64px}.sidebar-item span,.sidebar-section-title{display:none}.sidebar-item{justify-content:center;padding:12px}}@media(max-width:767px){.sidebar{display:none}}.upload-zone{border:2px dashed var(--border-default);border-radius:var(--radius-lg);background:var(--surface-sunken);min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-element);padding:var(--space-group);text-align:center;cursor:pointer;transition:border-color var(--duration-normal) var(--ease-default),background-color var(--duration-normal) var(--ease-default)}.upload-zone:hover{border-color:var(--border-strong)}.upload-zone[data-drag-active],.upload-zone.drag-active{border-color:var(--color-black);background:var(--color-gray-100)}.upload-zone-icon{color:var(--text-tertiary)}.upload-zone-title{font:var(--text-h3);color:var(--text-primary)}.upload-zone-subtitle{font:var(--text-sm);color:var(--text-secondary)}.upload-zone-formats{font:var(--text-sm);color:var(--text-tertiary)}.upload-progress{width:100%;max-width:300px}.upload-progress-bar{height:4px;background:var(--color-gray-200);border-radius:var(--radius-full);overflow:hidden}.upload-progress-fill{height:100%;background:var(--color-accent);transition:width var(--duration-normal) var(--ease-out)}.upload-progress-text{font:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text-secondary);margin-top:var(--space-2)}.viewer{background:var(--surface-sunken);border:var(--border-width) solid var(--border-default);border-radius:var(--radius-lg);overflow:hidden;position:relative;aspect-ratio:16 / 9}@media(max-width:767px){.viewer{aspect-ratio:4 / 3}}.viewer canvas{width:100%!important;height:100%!important;display:block}.viewer-toolbar{position:absolute;top:var(--space-3);right:var(--space-3);display:flex;gap:var(--space-2);z-index:1}.viewer-dimensions{position:absolute;bottom:var(--space-3);left:var(--space-3);display:flex;gap:var(--space-3);font:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text-secondary);background:var(--surface-page);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.viewer-dim-label{color:var(--text-tertiary);margin-right:var(--space-1)}.viewer-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.viewer-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-card);text-align:center}.viewer-error-icon{color:var(--color-error)}.viewer-error-message{font:var(--text-sm);color:var(--text-secondary);max-width:300px}.timeline{display:flex;flex-direction:column;gap:0}.timeline-step{display:grid;grid-template-columns:24px 1fr;gap:var(--space-3);position:relative}.timeline-step:not(:last-child) .timeline-track:after{content:"";position:absolute;top:24px;left:11px;bottom:-1px;width:2px}.timeline-track{display:flex;align-items:flex-start;justify-content:center;position:relative;padding-top:4px}.timeline-dot{width:12px;height:12px;border-radius:var(--radius-full);flex-shrink:0}.timeline-content{padding-bottom:var(--space-card)}.timeline-label{font:var(--text-sm);font-weight:600}.timeline-date{font:var(--text-sm);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.timeline-step-completed .timeline-dot{background:var(--color-accent)}.timeline-step-completed .timeline-track:after{background:var(--color-accent)}.timeline-step-completed .timeline-label{color:var(--text-primary)}.timeline-step-current .timeline-dot{background:var(--surface-page);border:3px solid var(--color-accent)}.timeline-step-current .timeline-track:after{background:var(--color-gray-300);border:none;background:repeating-linear-gradient(to bottom,var(--color-gray-300) 0,var(--color-gray-300) 4px,transparent 4px,transparent 8px)}.timeline-step-current .timeline-label{color:var(--text-primary)}.timeline-step-upcoming .timeline-dot{background:transparent;border:2px solid var(--color-gray-300)}.timeline-step-upcoming .timeline-track:after{background:repeating-linear-gradient(to bottom,var(--color-gray-200) 0,var(--color-gray-200) 4px,transparent 4px,transparent 8px)}.timeline-step-upcoming .timeline-label{color:var(--text-tertiary)}@media(prefers-reduced-motion:reduce){.timeline-step-current .timeline-dot{animation:none}}.toast-container{position:fixed;top:var(--space-card);right:var(--space-card);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3);pointer-events:none}.toast{width:min(400px,calc(100vw - 48px));background:var(--surface-raised);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-3) var(--space-element);display:flex;align-items:flex-start;gap:var(--space-3);pointer-events:auto;animation:toast-in var(--duration-slow) var(--ease-out) forwards}.toast-exiting{animation:toast-out var(--duration-normal) var(--ease-default) forwards}.toast-success{border-left:4px solid var(--color-success)}.toast-error{border-left:4px solid var(--color-error)}.toast-warning{border-left:4px solid var(--color-warning)}.toast-info{border-left:4px solid var(--color-info)}.toast-icon{flex-shrink:0;margin-top:2px}.toast-success .toast-icon{color:var(--color-success)}.toast-error .toast-icon{color:var(--color-error)}.toast-warning .toast-icon{color:var(--color-warning)}.toast-info .toast-icon{color:var(--color-info)}.toast-content{flex:1;min-width:0}.toast-title{font:var(--text-sm);font-weight:600;color:var(--text-primary)}.toast-message{font:var(--text-sm);color:var(--text-secondary);margin-top:var(--space-1)}.toast-close{flex-shrink:0;color:var(--text-tertiary);min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;margin:-8px -8px -8px 0}@keyframes toast-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.skeleton{background:var(--color-gray-100);border-radius:var(--radius-md);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,oklch(98% .002 260 / 50%) 50%,transparent 100%);animation:skeleton-shimmer 1.5s ease-in-out infinite}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.skeleton-text{height:1rem;width:100%}.skeleton-text-sm{height:.875rem;width:60%}.skeleton-heading{height:1.5rem;width:40%}.skeleton-avatar{width:40px;height:40px;border-radius:var(--radius-full)}.skeleton-card{height:200px;border-radius:var(--radius-lg)}.skeleton-row{height:44px;width:100%}.skeleton-button{height:44px;width:120px;border-radius:var(--radius-md)}[data-theme=dark] .skeleton{background:var(--color-gray-800)}[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,transparent 0%,oklch(22% .01 260 / 30%) 50%,transparent 100%)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-region) var(--space-card);gap:var(--space-element)}.empty-state-icon{color:var(--color-gray-300)}.empty-state-title{font:var(--text-h3);color:var(--text-primary)}.empty-state-description{font:var(--text-body);color:var(--text-secondary);max-width:400px}.empty-state-action{margin-top:var(--space-2)}.data-table{width:100%;font-variant-numeric:tabular-nums}.data-table th{font:var(--text-sm);font-weight:600;color:var(--text-primary);text-align:left;padding:12px 16px;border-bottom:var(--border-width) solid var(--border-default);white-space:nowrap}.data-table td{padding:12px 16px;border-bottom:var(--border-width) solid var(--border-subtle);color:var(--text-primary);font:var(--text-sm)}.data-table tr{min-height:44px}.data-table tbody tr:nth-child(2n){background:var(--surface-sunken)}.data-table tbody tr:hover{background:var(--color-gray-100)}.data-table-sort{display:inline-flex;align-items:center;gap:var(--space-1);cursor:pointer;user-select:none}.data-table-sort:hover{color:var(--text-primary)}.data-table-compact th,.data-table-compact td{padding:var(--admin-cell-padding)}.data-table-compact tr{min-height:var(--admin-row-height)}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}[data-theme=dark] .data-table tbody tr:nth-child(2n){background:var(--surface-sunken)}[data-theme=dark] .data-table tbody tr:hover{background:var(--color-gray-800)}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-region) var(--space-element);position:relative;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,var(--color-gray-200) 1px,transparent 1px);background-size:32px 32px;opacity:0;animation:gridFadeIn 1.5s .3s ease-out forwards;pointer-events:none;mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 30%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black 30%,transparent 100%)}@keyframes gridFadeIn{to{opacity:.6}}.hero-title{max-width:750px;line-height:1.06;letter-spacing:-.03em;position:relative;z-index:1}.hero-word{display:inline-block;clip-path:inset(0 0 100% 0);opacity:0;transform:translateY(40px);animation:wordReveal .8s cubic-bezier(.16,1,.3,1) forwards}.hero-word:nth-child(1){animation-delay:.1s}.hero-word:nth-child(2){animation-delay:.2s}.hero-word:nth-child(3){animation-delay:.28s}.hero-word:nth-child(4){animation-delay:.36s}.hero-word:nth-child(5){animation-delay:.44s}.hero-word:nth-child(6){animation-delay:.5s}.hero-word:nth-child(7){animation-delay:.56s}.hero-word:nth-child(8){animation-delay:.62s}.hero-word:nth-child(9){animation-delay:.68s}@keyframes wordReveal{to{clip-path:inset(0 0 -10% 0);opacity:1;transform:translateY(0)}}.hero-subtitle{font:var(--text-body-lg);color:var(--text-secondary);margin-top:var(--space-element);max-width:520px;position:relative;z-index:1;opacity:0;transform:translateY(20px);animation:subtitleReveal .7s cubic-bezier(.16,1,.3,1) .6s forwards}@keyframes subtitleReveal{to{opacity:1;transform:translateY(0)}}.hero .upload-zone{max-width:480px;width:100%;margin-top:var(--space-group);position:relative;z-index:1;opacity:0;transform:scale(.85) translateY(30px);animation:uploadSpring .9s cubic-bezier(.34,1.4,.64,1) .85s forwards;transition:transform .3s cubic-bezier(.34,1.4,.64,1),border-color .2s var(--ease-default),box-shadow .3s var(--ease-default);background:#fbfcfd03;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.hero .upload-zone:hover{transform:scale(1.02) translateY(-3px);box-shadow:0 12px 40px -8px #0101021f}@keyframes uploadSpring{to{opacity:1;transform:scale(1) translateY(0)}}.upload-zone-icon{color:var(--text-tertiary);animation:iconFloat 3s ease-in-out infinite;transition:color .2s var(--ease-default)}.upload-zone:hover .upload-zone-icon{color:var(--text-primary)}@keyframes iconFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.upload-zone.drag-active{border-color:var(--color-black);background:var(--color-gray-100);animation:dragPulse 1.2s ease-in-out infinite}@keyframes dragPulse{0%,to{box-shadow:0 0 #01010233}50%{box-shadow:0 0 0 12px #01010200}}.upload-progress-fill{position:relative;overflow:hidden}.upload-progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,oklch(98% .002 260 / 40%),transparent);animation:progressShimmer 1.5s ease-in-out infinite}@keyframes progressShimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.hero .quote-flow{opacity:0;animation:quoteSlideUp .6s cubic-bezier(.16,1,.3,1) .1s forwards}@keyframes quoteSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline: scroll()){.hero-title{animation:wordReveal .8s cubic-bezier(.16,1,.3,1) forwards,heroParallax linear forwards;animation-timeline:auto,scroll();animation-range:normal,0% 50vh}.hero-subtitle{animation:subtitleReveal .7s cubic-bezier(.16,1,.3,1) .6s forwards,heroParallaxSlow linear forwards;animation-timeline:auto,scroll();animation-range:normal,0% 50vh}@keyframes heroParallax{0%{transform:translateY(0)}to{transform:translateY(-60px);opacity:0}}@keyframes heroParallaxSlow{0%{transform:translateY(0)}to{transform:translateY(-30px);opacity:0}}}.reveal{opacity:0;transform:translateY(32px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.reveal.is-visible,.reveal.is-visible .step-card,.reveal.is-visible .material-card,.reveal.is-visible .trust-item{opacity:1;transform:translateY(0)}.step-card,.material-card,.trust-item{opacity:0;transform:translateY(24px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.reveal.is-visible .step-card:nth-child(2){transition-delay:.08s}.reveal.is-visible .step-card:nth-child(3){transition-delay:.18s}.reveal.is-visible .step-card:nth-child(4){transition-delay:.28s}.reveal.is-visible .material-card:nth-child(1){transition-delay:.05s}.reveal.is-visible .material-card:nth-child(2){transition-delay:.1s}.reveal.is-visible .material-card:nth-child(3){transition-delay:.15s}.reveal.is-visible .material-card:nth-child(4){transition-delay:.2s}.reveal.is-visible .material-card:nth-child(5){transition-delay:.25s}.reveal.is-visible .material-card:nth-child(6){transition-delay:.3s}.reveal.is-visible .material-card:nth-child(7){transition-delay:.35s}.reveal.is-visible .material-card:nth-child(8){transition-delay:.4s}.reveal.is-visible .material-card:nth-child(9){transition-delay:.45s}.reveal.is-visible .material-card:nth-child(10){transition-delay:.5s}.reveal.is-visible .material-card:nth-child(11){transition-delay:.55s}.reveal.is-visible .material-card:nth-child(12){transition-delay:.6s}.reveal.is-visible .trust-item:nth-child(1){transition-delay:.06s}.reveal.is-visible .trust-item:nth-child(2){transition-delay:.16s}.reveal.is-visible .trust-item:nth-child(3){transition-delay:.26s}.landing-section{padding:var(--space-region) var(--space-element);max-width:var(--max-width);margin-inline:auto}.landing-section-header{text-align:center;margin-bottom:var(--space-group)}.landing-section-title{font:var(--text-h1)}.landing-section-subtitle{font:var(--text-body-lg);color:var(--text-secondary);margin-top:var(--space-2);max-width:500px;margin-inline:auto}.steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-card);position:relative}.steps-connector{position:absolute;top:104px;left:0;right:0;width:100%;height:2px;z-index:0;overflow:visible;pointer-events:none}.steps-connector-line{stroke:var(--color-gray-300);stroke-width:1.5;stroke-linecap:round;fill:none;transition:stroke-dashoffset 1.4s cubic-bezier(.16,1,.3,1)}.reveal.is-visible .steps-connector-line{stroke-dashoffset:0}@media(max-width:639px){.steps-grid{grid-template-columns:1fr}.steps-connector{display:none}}.step-card{text-align:center;padding:var(--space-card);position:relative;z-index:1}.step-icon-wrap{display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin:0 auto var(--space-element);color:var(--text-tertiary);transition:color .4s var(--ease-default)}.reveal.is-visible .step-icon-wrap{color:var(--text-primary)}.step-icon{opacity:0;transition:opacity .4s var(--ease-default)}.reveal.is-visible .step-icon{opacity:1}.step-icon--upload{transform:translateY(8px)}.step-icon--printer{transform:scale(.7)}.step-icon--package{transform:translateY(-8px) scale(.8)}.reveal.is-visible .step-icon--upload{animation:iconRise .7s .2s cubic-bezier(.16,1,.3,1) forwards}.reveal.is-visible .step-icon--printer{animation:iconPulse .7s .6s cubic-bezier(.16,1,.3,1) forwards}.reveal.is-visible .step-icon--package{animation:iconDrop .7s 1s cubic-bezier(.16,1,.3,1) forwards}@keyframes iconRise{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes iconPulse{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.1);opacity:1}to{transform:scale(1);opacity:1}}@keyframes iconDrop{0%{transform:translateY(-8px) scale(.8);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.step-number{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-full);border:2px solid var(--color-accent);background:transparent;color:var(--color-accent);font-family:var(--font-heading);font-weight:700;font-size:18px;margin-bottom:var(--space-element);position:relative;z-index:1;transition:background .4s cubic-bezier(.16,1,.3,1),color .4s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.34,1.4,.64,1)}.reveal.is-visible .step-card:nth-child(2) .step-number{transition-delay:.25s}.reveal.is-visible .step-card:nth-child(3) .step-number{transition-delay:.55s}.reveal.is-visible .step-card:nth-child(4) .step-number{transition-delay:.85s}.reveal.is-visible .step-number{background:var(--color-accent);color:var(--text-on-accent);transform:scale(1)}.reveal.is-visible .step-card:nth-child(2) .step-number{animation:stepPop .5s .35s cubic-bezier(.34,1.4,.64,1) forwards}.reveal.is-visible .step-card:nth-child(3) .step-number{animation:stepPop .5s .65s cubic-bezier(.34,1.4,.64,1) forwards}.reveal.is-visible .step-card:nth-child(4) .step-number{animation:stepPop .5s .95s cubic-bezier(.34,1.4,.64,1) forwards}@keyframes stepPop{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}.step-title{font:var(--text-h3);margin-bottom:var(--space-2)}.step-desc{font:var(--text-body);color:var(--text-secondary)}.materials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-element)}.material-card{padding:var(--space-card);background:var(--surface-raised);border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-lg);transition:border-color var(--duration-normal) var(--ease-default),transform var(--duration-normal) var(--ease-out-quart),box-shadow var(--duration-normal) var(--ease-default);transform-style:preserve-3d;will-change:transform}.material-card:hover{border-color:var(--border-default);transform:perspective(600px) rotateX(-2deg) rotateY(2deg) translateY(-4px);box-shadow:0 8px 24px -6px #0101021a}.material-card:nth-child(2n):hover{transform:perspective(600px) rotateX(-2deg) rotateY(-2deg) translateY(-4px)}.material-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.material-name{font:var(--text-h3)}.material-tech{font:var(--text-sm);color:var(--text-tertiary);padding:2px 8px;border:var(--border-width) solid var(--border-subtle);border-radius:var(--radius-full);transition:border-color var(--duration-fast) var(--ease-default)}.material-card:hover .material-tech{border-color:var(--border-default)}.material-props{font:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.material-price{font:var(--text-h3);font-variant-numeric:tabular-nums}.material-price-unit{font:var(--text-sm);color:var(--text-tertiary)}.material-colors{display:flex;gap:var(--space-1);margin-top:var(--space-3)}.material-color-dot{width:16px;height:16px;border-radius:var(--radius-full);border:1px solid var(--border-subtle);transition:transform var(--duration-fast) var(--ease-out-quart)}.material-card:hover .material-color-dot{transform:scale(1.15)}.trust-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-card);text-align:center}@media(max-width:639px){.trust-grid{grid-template-columns:1fr}}.trust-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-card)}.trust-icon{color:var(--color-accent);transition:transform .3s var(--ease-out-quart)}.trust-item:hover .trust-icon{transform:scale(1.12)}.trust-title{font:var(--text-h3)}.trust-desc{font:var(--text-sm);color:var(--text-secondary);max-width:280px}.footer{border-top:var(--border-width) solid var(--border-subtle);padding:var(--space-group) var(--space-element);margin-top:var(--space-region)}.footer-inner{max-width:var(--max-width);margin-inline:auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-element)}.footer-links{display:flex;flex-wrap:wrap;gap:var(--space-element)}.footer-link{font:var(--text-sm);color:var(--text-secondary);transition:color var(--duration-fast) var(--ease-default);min-height:44px;display:inline-flex;align-items:center}.footer-link:hover{color:var(--text-primary)}.footer-copy{font:var(--text-sm);color:var(--text-tertiary)}@media(prefers-reduced-motion:reduce){.hero-word{clip-path:none;opacity:1;transform:none;animation:none}.hero-subtitle,.hero .upload-zone{opacity:1;transform:none;animation:none}.hero:before{opacity:.6;animation:none}.upload-zone-icon,.upload-zone.drag-active{animation:none}.reveal,.step-card,.material-card,.trust-item{opacity:1;transform:none;transition:none}.reveal.is-visible .step-number{animation:none}.steps-connector-line{stroke-dashoffset:0!important;transition:none}.step-icon{opacity:1;transform:none;animation:none!important}.step-icon-wrap{color:var(--text-primary);transition:none}.step-number{background:var(--color-accent);color:var(--text-on-accent);transition:none}.material-card:hover{transform:none}}
