*{margin:0;padding:0;box-sizing:border-box}
:root{
--bg:#fafafa;
--surface:#fff;
--surface-2:#f5f5f5;
--border:#e5e5e5;
--border-focus:#bbb;
--text:#1a1a1a;
--text-muted:#666;
--text-dim:#999;
--accent:#2563eb;
--accent-light:#dbeafe;
--success:#16a34a;
--success-light:#dcfce7;
--error:#dc2626;
--radius:8px;
--radius-sm:6px;
--font:'DM Sans',-apple-system,sans-serif;
--ease:cubic-bezier(0.4,0,0.2,1)
}
html{font-size:16px}
body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5}
a{color:var(--accent)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}

/* ── Layout ── */
header{display:none}
main{display:grid;grid-template-columns:60% 40%;min-height:100vh}
main>section{display:contents}
article{background:var(--surface);padding:40px 48px;display:flex;flex-direction:column}
.article-container{max-width:600px;margin:0 auto;width:100%}
aside{background:var(--surface-2);border-left:1px solid var(--border);padding:40px 32px;order:2}

/* ── Cart Header ── */
.cart-header{display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:40px}
.cart-header .back-btn{position:absolute;left:0;width:36px;height:36px;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .25s var(--ease);background:var(--surface);text-decoration:none}
.cart-header .back-btn:hover{border-color:var(--accent);background:var(--accent-light);transform:translateX(-3px)}
.cart-header .back-btn svg{width:18px;height:18px;color:var(--text-muted);transition:all .25s var(--ease)}
.cart-header .back-btn:hover svg{color:var(--accent)}
.cart-header .logo a{display:flex;align-items:center;text-decoration:none}
.cart-header .logo img{height:28px}
.cart-header nav{position:absolute;right:0}
.cart-header nav a{text-decoration:none;color:var(--text-muted);font-size:.85rem;transition:color .2s var(--ease)}
.cart-header nav a:hover{color:var(--accent)}

/* ── Accordion ── */
.accordion{position:relative;padding-left:40px}
.accordion::before{content:'';position:absolute;left:11px;top:28px;bottom:28px;width:2px;background:var(--border)}

/* ── Accordion Group ── */
.acc-group{position:relative}

/* ── Accordion Header (label) ── */
.acc-header{padding:14px 20px;background:var(--surface);border:1px solid var(--border);border-top:none;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all .25s var(--ease);user-select:none}
.acc-group:first-child>.acc-header{border-top:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0}
.acc-group.completed>.acc-header:hover{background:var(--surface-2)}
.acc-group:not(.active):not(.completed)>.acc-header{cursor:not-allowed}

/* Timeline dots */
.acc-dot{position:absolute;left:-40px;top:14px;width:24px;height:24px;border-radius:50%;background:var(--surface-2);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;z-index:2;transition:all .3s var(--ease)}
.acc-dot svg{width:14px;height:14px;color:#fff;opacity:0;transform:scale(0);transition:all .3s var(--ease)}
.acc-group.active .acc-dot{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px var(--accent-light)}
.acc-group.completed .acc-dot{border-color:var(--success);background:var(--success);box-shadow:0 0 0 4px var(--success-light)}
.acc-group.completed .acc-dot svg{opacity:1;transform:scale(1)}

/* Step icon */
.acc-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--surface-2);border-radius:var(--radius-sm);flex-shrink:0;transition:all .25s var(--ease)}
.acc-icon svg{width:18px;height:18px;color:var(--text-dim);transition:color .25s var(--ease)}
.acc-group.active .acc-icon{background:var(--accent-light)}
.acc-group.active .acc-icon svg{color:var(--accent)}
.acc-group.completed .acc-icon{background:var(--success-light)}
.acc-group.completed .acc-icon svg{color:var(--success)}

/* Label text */
.acc-header>span{font-weight:600;font-size:.95rem;color:var(--text);transition:color .25s var(--ease)}
.acc-group:not(.active):not(.completed) .acc-header>span{color:var(--text-dim)}
.acc-group:not(.active):not(.completed) .acc-icon{opacity:.4}

/* ── Accordion Panel ── */
.acc-panel{max-height:0;overflow:hidden;transition:max-height .45s var(--ease);background:var(--surface);border:1px solid var(--border);border-top:none}
.acc-group.active>.acc-panel{max-height:2000px}
.acc-group:last-child>.acc-panel{border-radius:0 0 var(--radius) var(--radius)}
.acc-group:last-child:not(.active)>.acc-header{border-radius:0 0 var(--radius) var(--radius)}

/* ── Steps inside panel ── */
.cart-step{display:none;padding:0 20px 20px}
.cart-step[data-st="active"]{display:block}

/* Step subtitle */
.step-subtitle{font-size:.8rem;font-weight:500;color:var(--text-muted);padding:0 0 10px;margin:0 0 14px;letter-spacing:.01em;border-bottom:1px solid var(--border)}

/* ── Field: text / password ── */
.field-text{display:block;position:relative;width:calc(50% - 6px);float:left;margin:0 3px 14px;cursor:text}
.field-text.full{width:100%;margin-left:0;margin-right:0}
.field-text>input{width:100%;padding:18px 14px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.95rem;font-family:inherit;transition:all .2s var(--ease);outline:none}
.field-text>input:hover{border-color:var(--border-focus);background:var(--surface-2)}
.field-text>input::placeholder{color:transparent;font-size:.1em}
.field-text>span{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-dim);font-size:.95rem;pointer-events:none;transition:all .2s var(--ease);padding:0 4px}
.field-text>input:focus~span,
.field-text>input:not(:placeholder-shown)~span{top:8px;transform:translateY(0);font-size:.7rem;color:var(--text-muted);font-weight:500}
.field-text>input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);background:var(--surface)}
.field-text>input[data-check="valid"]{border-color:var(--success)}
.field-text>input[data-check="error"]{border-color:var(--error);animation:shake .3s var(--ease)}
@keyframes shake{0%,100%{transform:translateX(0)} 25%{transform:translateX(-4px)} 75%{transform:translateX(4px)}}

/* Password field actions */
.field-text .field-actions{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;gap:4px}
.field-text .field-actions button{width:28px;height:28px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s var(--ease);padding:0}
.field-text .field-actions button:hover{background:var(--surface-2)}
.field-text .field-actions button svg{width:16px;height:16px;color:var(--text-dim)}
.field-text .field-actions button:hover svg{color:var(--accent)}

/* ── Field: separator ── */
.field-sep{font-size:.85rem;font-weight:600;color:var(--text-muted);padding:12px 0 6px;clear:both;letter-spacing:.02em}

/* ── Field: radio ── */
.field-radio{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .25s var(--ease);margin:0 0 8px;clear:both}
.field-radio:hover{border-color:var(--border-focus);background:var(--surface-2);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.05)}
input[type="radio"]:checked+.field-radio{border-color:var(--accent);background:var(--accent-light);box-shadow:0 4px 12px rgba(37,99,235,.1)}

.field-radio>figure{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);flex-shrink:0;position:relative;transition:all .2s var(--ease);background:var(--surface)}
input[type="radio"]:checked+.field-radio>figure{border-color:var(--accent);background:var(--accent)}
input[type="radio"]:checked+.field-radio>figure::after{content:'';position:absolute;inset:4px;background:#fff;border-radius:50%}

.field-radio .radio-features{flex:1;min-width:0}
.field-radio .radio-features strong{display:block;font-size:.9rem;font-weight:600;margin-bottom:2px}
.field-radio .radio-features span{display:block;font-size:.78rem;color:var(--text-muted)}
.field-radio .radio-pricing{text-align:right;flex-shrink:0}
.field-radio .radio-pricing b{display:inline-block;background:var(--text-dim);color:#fff;font-size:.7rem;padding:3px 8px;border-radius:var(--radius-sm);margin-bottom:4px;font-weight:500}
input[type="radio"]:checked+.field-radio .radio-pricing b{background:var(--accent)}
.field-radio .radio-pricing span{display:block;font-size:.8rem;color:var(--text-muted);white-space:nowrap}

.field-radio>img{height:28px;margin-left:auto;flex-shrink:0}
.field-radio>div{flex:1}
.field-radio>div>strong{display:block;font-size:.9rem;font-weight:600;margin-bottom:2px}
.field-radio>div>.pay-line{display:block;font-size:.8rem;color:var(--text-muted)}

/* ── Hints ── */
.cart-step>small{display:block;padding:4px 0 8px;font-size:.78rem;color:var(--text-dim);clear:both}
.cart-step>small strong{display:block;margin-bottom:4px;color:var(--text-muted);font-weight:600}
.cart-step>small ul{margin:0;padding:0 0 0 16px}
.cart-step>small li{margin-bottom:2px}

/* ── Step Actions ── */
.step-actions{clear:both;padding:12px 0 0;display:flex;gap:12px}
.step-actions>div{flex:1}
.btn-next{padding:12px 24px;border:none;border-radius:var(--radius-sm);font-family:inherit;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .25s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#fff;width:100%;position:relative;overflow:hidden}
.btn-next::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}
.btn-next:hover{background:#1d4ed8;transform:translateY(-2px);box-shadow:0 6px 20px rgba(37,99,235,.35)}
.btn-next:hover::before{left:100%}
.btn-next:active{transform:translateY(0)}
.btn-next:disabled{opacity:.5;pointer-events:none}
.btn-next>svg{width:16px;height:16px;transition:transform .25s var(--ease)}
.btn-next:hover>svg{transform:translateX(3px)}
.btn-loading{pointer-events:none}
.btn-loading span{opacity:0}
.btn-loading::after{content:'';position:absolute;width:18px;height:18px;border:2px solid transparent;border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Sidebar ── */
.sidebar-inner{max-width:400px}
.sidebar-inner>h1{font-size:1.2rem;font-weight:600;margin-bottom:24px;letter-spacing:-.01em}
.sidebar-product{display:flex;gap:14px;align-items:center;padding:16px;background:var(--surface);border-radius:var(--radius);margin-bottom:24px;border:1px solid var(--border)}
.sidebar-product>figure{width:48px;height:48px;background:var(--accent-light);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sidebar-product>figure svg{width:24px;height:24px;color:var(--accent)}
.sidebar-product>div{flex:1;min-width:0}
.sidebar-product>div>strong{display:block;font-size:.95rem}
.sidebar-product>div>strong>a{text-decoration:none;color:var(--accent);font-weight:600}
.sidebar-product>div>strong>a:hover{text-decoration:underline}
.sidebar-product>div>span{display:block;font-size:.8rem;color:var(--text-muted);margin-top:2px}
.sidebar-inner>h2{font-size:.85rem;font-weight:600;color:var(--text-muted);margin-bottom:16px;letter-spacing:.02em}
.sidebar-features{display:grid;grid-template-columns:32px 1fr;gap:8px 12px;align-items:start}
.sidebar-features>figure{display:flex;width:32px;height:32px;background:var(--surface);border-radius:var(--radius-sm);align-items:center;justify-content:center;border:1px solid var(--border);margin:0}
.sidebar-features>figure svg{width:16px;height:16px;color:var(--accent)}
.sidebar-features>div{padding:6px 0}
.sidebar-features>div>h3{font-size:.85rem;font-weight:600;margin-bottom:2px}
.sidebar-features>div>p{font-size:.78rem;color:var(--text-muted);line-height:1.4}

/* ── Trust Badges ── */
.trust{display:flex;gap:16px;justify-content:center;padding-top:20px;border-top:1px solid var(--border);margin-top:24px;flex-wrap:wrap}
.trust span{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--text-muted);padding:6px 10px;border-radius:var(--radius-sm);transition:all .2s var(--ease);cursor:default}
.trust span:hover{background:var(--surface);color:var(--text)}
.trust svg{width:16px;height:16px;opacity:.5;transition:all .2s var(--ease)}
.trust span:hover svg{opacity:1;color:var(--accent)}

/* ── Onyx Modal ── */
#Onyx{display:none;position:fixed;inset:0;z-index:100;align-items:center;justify-content:center}
#Onyx.active{display:flex}
#Onyx ._overlay{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px)}
#Onyx ._content{position:relative;z-index:1;background:var(--surface);border-radius:var(--radius);padding:0;max-width:560px;width:90%;animation:scaleIn .4s var(--ease);overflow:hidden}
@keyframes scaleIn{from{opacity:0;transform:scale(.9)} to{opacity:1;transform:scale(1)}}

/* ── Complete step ── */
.complete-box{text-align:center;padding:28px 0}
.complete-box .check-anim{margin:0 auto 24px}
.complete-box .check-bg{width:72px;height:72px;background:var(--success);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto;animation:animateContainer .75s ease-out forwards}
.complete-box .check-bg svg{width:36px;height:36px;stroke-dasharray:80;stroke-dashoffset:80;animation:animateCheck .35s forwards .8s ease-out}
.complete-box h2{font-size:1.4rem;font-weight:600;margin-bottom:8px;padding:0}
.complete-box p{color:var(--text-muted);font-size:.9rem;margin-bottom:8px}
.complete-box a{color:var(--accent);font-weight:600}
@keyframes animateContainer{0%{opacity:0;transform:scale(0)} 25%{opacity:1;transform:scale(.9)} 50%{transform:scale(1.1)} 100%{transform:scale(1)}}
@keyframes animateCheck{from{stroke-dashoffset:80} to{stroke-dashoffset:0}}

/* SVG icon container */
svg[style*="display:none"],
svg[style*="display: none"]{display:none}

/* Clearfix */
.cart-step::after{content:'';display:table;clear:both}

/* ── Responsive ── */
@media(max-width:900px){
main{grid-template-columns:1fr}
article{padding:24px 16px;order:1}
aside{border-left:none;border-top:1px solid var(--border);padding:24px 16px;order:2}
.field-text{width:100%;margin-left:0;margin-right:0}
.accordion{padding-left:32px}
.accordion::before{left:7px}
.acc-dot{left:-32px;width:20px;height:20px}
.acc-dot svg{width:12px;height:12px}
}
@media(max-width:480px){
article{padding:16px 12px}
aside{padding:16px 12px}
.trust{flex-direction:column;align-items:center}
}
