@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Archivo:wght@600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-surface-2: #edf0f4;--color-ink: #0e1420;--color-ink-2: #1b2434;--color-ink-muted: #5b6675;--color-border: #dfe4eb;--color-border-strong: #c6cdd8;--color-accent: #17325c;--color-accent-hover: #0f2545;--color-accent-soft: #e7ecf5;--color-accent-fg: #ffffff;--color-focus: #3b6fb6;--color-danger: #b3261e;--color-danger-soft: #fdecea;--color-success: #1c7c54;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Archivo", "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-xs: .8125rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.0625rem;--text-xl: 1.25rem;--text-2xl: 1.75rem;--text-3xl: 3rem;--leading-tight: 1.05;--leading-snug: 1.3;--leading-body: 1.55;--tracking-tight: -.02em;--tracking-label: .08em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(14, 20, 32, .06);--shadow-md: 0 6px 18px rgba(14, 20, 32, .09);--shadow-lg: 0 16px 40px rgba(14, 20, 32, .16);--container: 1200px;--control-h: 44px;--scrim: rgba(14, 20, 32, .45);--ease: cubic-bezier(.2, .7, .2, 1);--dur-fast: .15s;--dur-panel: .22s;--bg: var(--color-bg);--surface: var(--color-surface);--ink: var(--color-ink);--ink-soft: var(--color-ink-muted);--line: var(--color-border);--accent: var(--color-accent);--accent-hover: var(--color-accent-hover);--accent-fg: var(--color-accent-fg);--danger: var(--color-danger);--font: var(--font-sans)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);background:var(--color-bg);color:var(--color-ink);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight)}code,kbd,samp{font-family:var(--font-mono)}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-inner{max-width:var(--container);height:64px;margin:0 auto;padding:0 var(--space-5);display:flex;align-items:center;justify-content:space-between}.logo{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;color:var(--color-ink)}.logo-mark{background:var(--color-accent);color:var(--color-accent-fg);font-family:var(--font-display);font-weight:700;font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);letter-spacing:.05em}.logo-text{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:var(--tracking-tight)}.cart-btn{position:relative;font:inherit;font-weight:600;padding:0 var(--space-4);height:var(--control-h);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-ink);cursor:pointer;transition:border-color var(--dur-fast) ease-out,background var(--dur-fast) ease-out}.cart-btn:hover{background:var(--color-surface-2);border-color:var(--color-border-strong)}.cart-badge{position:absolute;top:-8px;right:-8px;background:var(--color-accent);color:var(--color-accent-fg);font-family:var(--font-mono);font-size:.75rem;font-weight:500;min-width:20px;height:20px;border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-1)}.hero{background:linear-gradient(115deg,#ffffff0a,#fff0 42%),linear-gradient(150deg,var(--color-ink) 0%,var(--color-ink-2) 62%,var(--color-accent-hover) 130%);color:#f2f5fa}.hero-inner{max-width:var(--container);margin:0 auto;padding:var(--space-8) var(--space-5)}.hero-kicker{text-transform:uppercase;letter-spacing:var(--tracking-label);font-size:var(--text-xs);font-weight:600;color:#9fb4d8;margin:0 0 var(--space-3)}.hero h1{margin:0 0 var(--space-4);font-size:clamp(var(--text-2xl),4.5vw,var(--text-3xl));font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);max-width:22ch}.hero-sub{margin:0;max-width:62ch;color:#c6d2e4;font-size:var(--text-base)}.main{flex:1;width:100%;max-width:var(--container);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-8)}.notice{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-ink-muted);margin:0 0 var(--space-5)}.filters{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-6)}.filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.filter-label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-ink-muted);min-width:88px}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{font:inherit;font-size:var(--text-sm);font-weight:500;padding:0 var(--space-4);height:40px;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-ink);cursor:pointer;transition:border-color var(--dur-fast) ease-out,background var(--dur-fast) ease-out,color var(--dur-fast) ease-out}.chip:hover{border-color:var(--color-ink-muted);background:var(--color-surface-2)}.chip-active,.chip-active:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-fg)}.grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-5)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);transition:border-color var(--dur-fast) ease-out,box-shadow var(--dur-fast) ease-out,transform var(--dur-fast) ease-out}.card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card:focus-within{outline:2px solid var(--color-focus);outline-offset:2px}.card-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.tag{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-label);padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent);white-space:nowrap}.tag-muted{background:var(--color-surface-2);color:var(--color-ink-muted)}.card-title{margin:0;font-size:var(--text-lg);font-weight:600;line-height:1.35}.card-pn{margin:0;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0;color:var(--color-ink-muted)}.card-desc{margin:0;font-size:var(--text-sm);color:var(--color-ink-muted);flex:1}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-2)}.price{font-weight:650;font-size:var(--text-xl);font-variant-numeric:tabular-nums;color:var(--color-ink)}.card-skeleton{pointer-events:none}.card-skeleton:hover{border-color:var(--color-border);box-shadow:none;transform:none}.skel{background:var(--color-surface-2);border-radius:var(--radius-sm);height:14px}.skel-chip{width:40%;height:20px}.skel-title{width:85%;height:18px;margin-top:var(--space-1)}.skel-line{width:100%}.skel-line-short{width:60%}.skel-foot{width:45%;height:24px;margin-top:var(--space-2)}@keyframes skel-pulse{0%,to{opacity:1}50%{opacity:.55}}.card-skeleton .skel{animation:skel-pulse 1.4s var(--ease) infinite}.btn-primary{font:inherit;font-weight:600;padding:0 var(--space-4);min-height:var(--control-h);border:none;border-radius:var(--radius-sm);background:var(--color-accent);color:var(--color-accent-fg);cursor:pointer;transition:background var(--dur-fast) ease-out,transform var(--dur-fast) ease-out,box-shadow var(--dur-fast) ease-out}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-primary:disabled{background:var(--color-border);color:var(--color-ink-muted);cursor:not-allowed;transform:none;box-shadow:none}.btn-wide{width:100%}.btn-secondary{font:inherit;font-weight:600;padding:0 var(--space-4);min-height:var(--control-h);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-ink);cursor:pointer;transition:background var(--dur-fast) ease-out,border-color var(--dur-fast) ease-out}.btn-secondary:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-border-strong)}.btn-secondary:disabled{color:var(--color-ink-muted);cursor:not-allowed}.btn-icon{font:inherit;width:40px;height:40px;flex-shrink:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-ink-muted);cursor:pointer;transition:background var(--dur-fast) ease-out,color var(--dur-fast) ease-out}.btn-icon:hover{background:var(--color-surface-2);color:var(--color-ink)}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.state-msg{text-align:center;color:var(--color-ink-muted);padding:var(--space-7) var(--space-5);display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.state-msg p{margin:0}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);z-index:40;display:flex;justify-content:flex-end;animation:fade-in var(--dur-panel) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer{background:var(--color-surface);width:min(400px,100%);height:100%;display:flex;flex-direction:column;padding:var(--space-5);overflow-y:auto;box-shadow:var(--shadow-lg);animation:drawer-in var(--dur-panel) var(--ease)}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.drawer-head h2{margin:0;font-size:var(--text-xl);font-weight:650}.drawer-empty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-5) 0;color:var(--color-ink-muted)}.drawer-empty p{margin:0}.drawer-empty .btn-secondary{margin-top:var(--space-2)}.cart-list{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:var(--space-3);flex:1}.cart-line{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.cart-line-info{display:flex;flex-direction:column}.cart-line-name{font-weight:600}.cart-line-info .muted{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0}.cart-line-ctrl{display:flex;align-items:center;gap:var(--space-3)}.cart-line-price{margin-left:auto;font-weight:650;font-variant-numeric:tabular-nums}.qty{display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.qty button{font:inherit;width:40px;height:40px;border:none;background:var(--color-surface);color:var(--color-ink);cursor:pointer;transition:background var(--dur-fast) ease-out}.qty button:hover{background:var(--color-surface-2)}.qty span{min-width:32px;text-align:center;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500}.summary-line{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) 0 var(--space-3);border-top:1px solid var(--color-border);font-size:var(--text-base)}.summary-line strong{font-variant-numeric:tabular-nums;font-weight:650;font-size:var(--text-xl)}.drawer-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.drawer-actions .btn-primary{flex:1}.checkout{display:flex;flex-direction:column;gap:var(--space-4)}.checkout label{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--color-ink-muted)}.checkout input,.checkout textarea{font:var(--text-base) / var(--leading-body) var(--font-sans);color:var(--color-ink);padding:var(--space-2) var(--space-3);min-height:var(--control-h);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);resize:vertical;transition:border-color var(--dur-fast) ease-out}.checkout input:hover,.checkout textarea:hover{border-color:var(--color-ink-muted)}.checkout input:focus-visible,.checkout textarea:focus-visible{border-color:var(--color-accent);outline:2px solid var(--color-focus);outline-offset:2px}.checkout input::placeholder,.checkout textarea::placeholder{color:var(--color-ink-muted);opacity:.7}.checkout input:disabled,.checkout textarea:disabled{background:var(--color-surface-2)}.error{color:var(--color-danger);background:var(--color-danger-soft);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:var(--text-xs);margin:0}.muted{color:var(--color-ink-muted);font-size:var(--text-sm)}.modal{margin:auto;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);max-width:440px;width:calc(100% - var(--space-6));display:flex;flex-direction:column;gap:var(--space-3);box-shadow:var(--shadow-lg)}.modal h2{margin:0;font-size:var(--text-2xl);font-weight:650}.modal p{margin:0}.modal strong{font-variant-numeric:tabular-nums}.modal .btn-primary{margin-top:var(--space-2)}.footer{border-top:1px solid var(--color-border);background:var(--color-surface)}.footer p{max-width:var(--container);margin:0 auto;padding:var(--space-5);font-size:var(--text-xs);color:var(--color-ink-muted)}@media (max-width: 1080px){.grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 860px){.grid{grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.main,.hero-inner{padding-left:var(--space-5);padding-right:var(--space-5)}}@media (max-width: 560px){.grid{grid-template-columns:1fr}.filter-label{min-width:100%}.chip-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:var(--space-1)}.chip{flex-shrink:0}.drawer{width:100%}.topbar-inner,.main,.hero-inner{padding-left:var(--space-4);padding-right:var(--space-4)}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
