:root { --brand-green: #108474; --brand-accent: #f7614d; --brand-text: #3c393a; --brand-bg: #f7f6f8; --brand-soft: #e8e7eb; --brand-ink: #252627; --brand-white: #ffffff; --radius-lg: 22px; --radius-md: 14px; --shadow: 0 18px 50px rgba(60, 57, 58, 0.12); } *, *::before, *::after { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; font-family: "Open Sans", sans-serif; color: var(--brand-text); background: linear-gradient(135deg, #fff 0%, var(--brand-bg) 48%, #edf5f5 100%); } body { position: relative; overflow-x: hidden; } .bg-shape { position: fixed; border-radius: 999px; filter: blur(24px); z-index: 0; pointer-events: none; } .bg-shape-a { width: 420px; height: 420px; top: -120px; right: -80px; background: radial-gradient(circle at center, rgba(16, 132, 116, 0.28), rgba(16, 132, 116, 0)); } .bg-shape-b { width: 420px; height: 420px; bottom: -140px; left: -90px; background: radial-gradient(circle at center, rgba(247, 97, 77, 0.22), rgba(247, 97, 77, 0)); } .shell { position: relative; z-index: 1; max-width: 1260px; margin: 0 auto; padding: 28px 20px 42px; } .hero { padding: 12px 6px 24px; } .brand { display: inline-block; padding: 6px 12px; border-radius: 999px; background: var(--brand-soft); font-weight: 800; letter-spacing: 0.08em; font-size: 12px; } .hero h1 { margin: 12px 0 10px; font-size: clamp(26px, 3.2vw, 46px); line-height: 1.06; } .hero p { margin: 0; max-width: 680px; color: #616161; } .layout { display: grid; grid-template-columns: 1.35fr 0.65fr; gap: 20px; align-items: start; } .card { background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(7px); border: 1px solid rgba(37, 38, 39, 0.08); border-radius: var(--radius-lg); box-shadow: var(--shadow); } .wizard { padding: 18px; } .steps { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; } .step-item { border: 0; cursor: pointer; background: var(--brand-soft); color: #5e5b5c; border-radius: 12px; padding: 9px 8px; font-size: 12px; font-weight: 700; display: flex; flex-direction: column; align-items: center; gap: 5px; transition: 0.24s ease; } .step-item span { width: 22px; height: 22px; border-radius: 50%; background: rgba(255, 255, 255, 0.9); display: grid; place-items: center; font-size: 11px; } .step-item:hover { transform: translateY(-1px); } .step-item.is-active { background: var(--brand-green); color: #fff; } .step-item.is-active span { color: var(--brand-green); } .step-item.is-done { background: #d6efeb; color: var(--brand-green); } .step-panels { margin-top: 16px; } .step-panel { display: none; animation: panel-enter 0.28s ease; } .step-panel.is-active { display: block; } @keyframes panel-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } h2 { margin: 4px 0 8px; font-size: clamp(21px, 2.2vw, 30px); } h3 { margin: 0 0 10px; font-size: 14px; } .muted { margin: 0 0 14px; color: #6b696a; font-size: 14px; } .option-grid { display: grid; gap: 10px; } .option-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); } .option-grid.four { grid-template-columns: repeat(4, minmax(0, 1fr)); } .option-card, .layout-card { position: relative; display: grid; align-content: start; gap: 6px; border: 1px solid rgba(37, 38, 39, 0.12); border-radius: var(--radius-md); background: #fff; padding: 12px; min-height: 122px; cursor: pointer; transition: 0.2s ease; } .layout-card { min-height: 116px; justify-items: center; } .option-card input, .layout-card input { position: absolute; inset: 0; opacity: 0; pointer-events: none; } .option-card strong, .layout-card strong { font-size: 14px; } .option-card span { font-size: 12px; color: #666; } .option-card em { margin-top: auto; font-style: normal; font-weight: 800; font-size: 13px; color: var(--brand-green); } .option-card.compact { min-height: 72px; } .finish-card { min-height: 124px; gap: 8px; } .finish-swatch { width: 30px; height: 30px; border-radius: 50%; border: 2px solid rgba(37, 38, 39, 0.2); } .finish-track { display: block; width: 100%; height: 10px; border-radius: 999px; border: 1px solid rgba(37, 38, 39, 0.18); } .swatch-black { background: #252627; } .swatch-white { background: #f7f6f8; } .swatch-champagne { background: #d7bd8b; } .temp-card { min-height: 124px; gap: 8px; overflow: hidden; } .temp-card .temp-glow { display: block; width: 100%; height: 18px; border-radius: 999px; border: 1px solid rgba(37, 38, 39, 0.15); animation: glow-pulse 2.2s ease-in-out infinite; } .temp-card.temp-3000 .temp-glow { background: linear-gradient(90deg, #ff9f45 0%, #ffd18c 100%); } .temp-card.temp-4000 .temp-glow { background: linear-gradient(90deg, #fff1c7 0%, #fff9e9 100%); } .temp-card.temp-cct .temp-glow { background: linear-gradient(90deg, #ffb66c 0%, #fff4d0 45%, #d2ecff 100%); } @keyframes glow-pulse { 0% { filter: saturate(0.9); } 50% { filter: saturate(1.15); } 100% { filter: saturate(0.9); } } .shape { width: 62px; height: 38px; border-radius: 10px; border: 4px solid var(--brand-ink); } .shape.line { border-bottom: 0; border-left: 0; border-right: 0; border-radius: 0; height: 12px; width: 70px; } .shape.l-shape { border-top: 0; border-right: 0; border-radius: 0 0 0 12px; } .shape.u-shape { border-top: 0; border-radius: 0 0 12px 12px; } .shape.rectangle { border-radius: 8px; } .option-card:has(input:checked), .layout-card:has(input:checked) { border-color: var(--brand-accent); box-shadow: 0 0 0 3px rgba(247, 97, 77, 0.12); } .finish-card:has(input:checked) .finish-swatch { box-shadow: 0 0 0 4px rgba(247, 97, 77, 0.2); } .finish-card:has(input:checked) .finish-track, .temp-card:has(input:checked) .temp-glow { box-shadow: 0 0 0 3px rgba(16, 132, 116, 0.14); } .field-grid { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .range-field { border: 1px solid rgba(37, 38, 39, 0.12); border-radius: var(--radius-md); padding: 12px; display: grid; gap: 8px; background: #fff; } .range-field span { font-size: 12px; color: #6b696a; } .range-field input[type="number"] { width: 100%; height: 40px; border-radius: 10px; border: 1px solid rgba(37, 38, 39, 0.2); padding: 0 10px; font-size: 14px; } input[type="range"] { width: 100%; accent-color: var(--brand-green); } .split { display: grid; gap: 12px; } .product-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .product-card { border-radius: 14px; border: 1px solid rgba(37, 38, 39, 0.12); background: #fff; padding: 12px; display: grid; gap: 8px; } .product-code { font-size: 11px; font-weight: 700; letter-spacing: 0.03em; color: var(--brand-green); } .product-name { min-height: 38px; font-size: 13px; font-weight: 700; } .product-meta { display: flex; justify-content: space-between; align-items: center; gap: 8px; } .price { font-size: 13px; font-weight: 800; } .qty { display: inline-flex; align-items: center; border: 1px solid rgba(37, 38, 39, 0.2); border-radius: 999px; overflow: hidden; } .qty button { width: 27px; height: 26px; border: 0; background: #fff; color: var(--brand-text); cursor: pointer; font-size: 16px; } .qty span { width: 34px; text-align: center; font-size: 13px; font-weight: 700; } .accessories { display: grid; gap: 8px; } .accessory-item { display: flex; justify-content: space-between; align-items: center; border: 1px solid rgba(37, 38, 39, 0.11); border-radius: 12px; padding: 12px; background: #fff; } .accessory-item label { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; } .accessory-item input { accent-color: var(--brand-accent); } .wizard-actions { margin-top: 16px; padding-top: 14px; border-top: 1px solid rgba(37, 38, 39, 0.1); display: flex; justify-content: space-between; gap: 10px; } .btn { border: 0; border-radius: 999px; min-height: 44px; padding: 0 18px; font-size: 14px; font-weight: 800; cursor: pointer; transition: transform 0.2s ease; } .btn:hover { transform: translateY(-1px); } .btn-primary { background: var(--brand-accent); color: #fff; } .btn-secondary { background: var(--brand-soft); color: var(--brand-text); } .summary { position: sticky; top: 16px; padding: 18px; } .preview { border-radius: 14px; min-height: 185px; margin-bottom: 12px; background: linear-gradient(160deg, #242526 0%, #3a3d3f 100%); display: grid; place-items: center; } .summary-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; } .summary-list li { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px dashed rgba(37, 38, 39, 0.14); padding-bottom: 7px; font-size: 13px; } .summary-total { margin-top: 12px; background: #fff; border: 1px solid rgba(37, 38, 39, 0.12); border-radius: 14px; padding: 12px; display: flex; justify-content: space-between; align-items: center; } .summary-total strong { font-size: 25px; color: var(--brand-green); } .note { margin: 10px 0 0; color: #6b696a; font-size: 12px; } .final-summary { border: 1px solid rgba(37, 38, 39, 0.12); border-radius: 14px; background: #fff; padding: 12px; } .final-summary ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 7px; } .final-summary li { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; } .toast { position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%) translateY(22px); background: var(--brand-ink); color: #fff; border-radius: 999px; padding: 12px 16px; font-size: 13px; opacity: 0; transition: 0.24s ease; pointer-events: none; z-index: 5; } .toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(0); } @media (max-width: 1120px) { .layout { grid-template-columns: 1fr; } .summary { position: static; } .product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 780px) { .wizard { padding: 14px; } .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } .option-grid.three, .option-grid.four, .field-grid { grid-template-columns: 1fr; } .product-grid { grid-template-columns: 1fr; } .step-item { font-size: 11px; } }