:root{color-scheme:dark;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
--bg:#07070c;--bg2:#0d0d16;--panel:#12121d;--panel2:rgba(255,255,255,.06);--well:rgba(255,255,255,.05);--line:rgba(255,255,255,.08);--line2:rgba(255,255,255,.12);
--text:#f5f5fa;--mut:#a3a3b8;--acc:#ff6a1a;--acc2:#ff3d0f;--accink:#fff;--grad:linear-gradient(120deg,#ff6a1a,#ff3d0f);--ok:#00ff88;--err:#ff6b7a;
--r:18px;--r2:12px;--sh:0 32px 64px -16px rgba(0,0,0,.6);--bsh:0 8px 30px rgba(139,92,246,.4)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);background-image:radial-gradient(900px 600px at 50% -20%,rgba(139,92,246,.22),transparent 65%);background-repeat:no-repeat;color:var(--text);font-family:var(--font);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased}
a{color:inherit}
button,input,textarea,select{font-family:inherit}
[hidden]{display:none!important}

/* шапка */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 36px;height:68px;border-bottom:1px solid var(--line);background:rgba(7,7,12,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:21px;text-decoration:none;letter-spacing:-.5px}
.logo{width:32px;height:32px;border-radius:8px;object-fit:contain;flex:none;display:block}
.top nav{display:flex;gap:30px;font-size:15px;font-weight:400;color:var(--mut)}
.top nav a{text-decoration:none}
.top nav a:hover{color:var(--text)}
.userchip{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--mut);min-width:0}
.userchip .ava{width:32px;height:32px;border-radius:50%;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px;flex:none}
.userchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* кнопки */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid transparent;cursor:pointer;text-decoration:none;font-weight:700;border-radius:12px;font-size:16px;padding:15px 28px;color:var(--text);transition:transform .15s ease,box-shadow .15s ease;background:none;line-height:1.2}
.btn:hover{transform:translateY(-2px)}
.btn-pri:hover{box-shadow:0 12px 38px rgba(139,92,246,.55)}
.btn:focus-visible,.inp:focus-visible,.code input:focus-visible,a:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.btn-pri{background:var(--grad);color:var(--accink);box-shadow:var(--bsh)}
.btn-ghost{background:rgba(255,255,255,.06);color:#fff;border-color:var(--line)}
.btn-ghost:hover{background:rgba(255,255,255,.12)}
.btn-light{background:#fff;color:#111;font-weight:600}
.btn-dark{background:#000;border-color:rgba(255,255,255,.22);color:#fff;font-weight:600}
.btn-block{width:100%}
.btn-lg{font-size:17px;padding:17px 32px;border-radius:12px}
.btn[disabled]{opacity:.55;cursor:default;transform:none}
.btn.loading{pointer-events:none;opacity:.85}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:sp .7s linear infinite;flex:none}
@keyframes sp{to{transform:rotate(360deg)}}

/* карточка шага */
.wrap{max-width:1120px;margin:0 auto;padding:36px 36px 80px}
.center{min-height:calc(100vh - 112px);display:flex;flex-direction:column;align-items:center;padding:34px 20px 60px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:34px;box-shadow:var(--sh)}
.auth{width:100%;max-width:460px}
.auth h1{font-size:24px;font-weight:800;line-height:1.2;margin:0 0 8px;letter-spacing:-.4px}
.auth .lead{color:var(--mut);font-size:14.5px;margin:0 0 24px}
.auth .lead b{color:var(--text);font-weight:700;overflow-wrap:anywhere}
.stack{display:grid;gap:12px}
.fine{color:var(--mut);font-size:12.5px;line-height:1.55;margin:18px 0 0}
.fine a{color:var(--text)}
.linkbtn{background:none;border:0;padding:0;color:var(--acc);font-weight:700;font-size:13.5px;cursor:pointer;text-decoration:none}
.linkbtn:hover{text-decoration:underline}

/* степпер */
.stepbar{padding:18px 36px 0;width:100%}
body.bare .stepbar{display:none}
.steps{display:flex;align-items:center;gap:8px;margin:0 auto;font-size:12.5px;font-weight:700;color:var(--mut);width:100%;max-width:940px}
.steps .st{display:flex;align-items:center;gap:8px;white-space:nowrap}
.steps .n{width:24px;height:24px;border-radius:50%;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;font-size:11.5px;flex:none}
.steps .st.done .n{background:rgba(0,255,136,.15);border-color:rgba(0,255,136,.5);color:var(--ok)}
.steps .st.on{color:var(--text)}
.steps .st.on .n{background:var(--grad);border-color:transparent;color:var(--accink)}
.steps .bar{flex:1;height:1px;background:var(--line2);min-width:10px}
@media (max-width:940px){.steps .st:not(.on) .lbl{display:none}}
@media (max-width:640px){.stepbar{padding:14px 16px 0}.steps{gap:5px}.steps .bar{min-width:6px}}

/* поля */
.field{display:grid;gap:7px}
.field label{font-size:13px;font-weight:700}
.field .hint{font-size:12px;color:var(--mut)}
.inp{width:100%;background:var(--well);border:1px solid var(--line2);border-radius:12px;padding:13px 14px;color:var(--text);font-size:15px;transition:.15s}
.inp:focus{border-color:var(--acc);outline:none;box-shadow:0 0 0 3px rgba(255,106,26,.18)}
.inp.bad{border-color:var(--err)}
.pwrap{position:relative}
.pwrap .inp{padding-right:92px}
.pwrap .eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--mut);font-size:12.5px;font-weight:700;cursor:pointer;padding:8px}
.pwrap .eye:hover{color:var(--text)}
.msg{font-size:13px;min-height:19px;margin:10px 0 0}
.msg.err{color:var(--err)}
.msg.ok{color:var(--ok)}
.meter{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:2px}
.meter i{height:4px;border-radius:4px;background:var(--line2);transition:.2s}
.rules{list-style:none;margin:2px 0 0;padding:0;display:grid;gap:5px;font-size:12.5px;color:var(--mut)}
.rules li::before{content:"○";display:inline-block;width:18px}
.rules li.ok{color:var(--ok)}
.rules li.ok::before{content:"✓"}

/* код */
.code{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}
.code input{width:100%;aspect-ratio:1/1.12;min-width:0;text-align:center;font-family:var(--mono);font-size:26px;font-weight:600;background:var(--well);border:1px solid var(--line2);border-radius:12px;color:var(--text);padding:0;transition:.15s}
.code input:focus{border-color:var(--acc);outline:none;box-shadow:0 0 0 3px rgba(255,106,26,.18)}
.code.bad input{border-color:var(--err)}
.code.good input{border-color:var(--ok);color:var(--ok)}
.code.bad{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.rowline{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--mut);margin-top:16px}

.okmark{width:58px;height:58px;border-radius:50%;background:rgba(0,255,136,.14);border:1px solid rgba(0,255,136,.45);color:var(--ok);display:flex;align-items:center;justify-content:center;font-size:27px;margin:0 0 18px}
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);background:#12121d;border:1px solid var(--line2);border-radius:12px;padding:13px 18px;font-size:13.5px;font-weight:600;opacity:0;pointer-events:none;transition:.25s;z-index:60;box-shadow:0 20px 50px -20px #000;max-width:calc(100vw - 32px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:640px){
 .top{padding:14px 16px}
 .top nav{display:none}
 .wrap{padding:22px 16px 60px}
 .card{padding:22px;border-radius:18px}
 .center{padding:22px 14px 50px}
 .auth h1{font-size:22px}
 .code{gap:6px}
 .code input{font-size:21px;border-radius:11px}
 .userchip span{max-width:150px}
}

/* галерея работ */
.works{max-width:1180px;margin:0 auto;padding:0 36px 90px}
.works h2{font-size:clamp(30px,4.5vw,46px);font-weight:800;letter-spacing:-1px;line-height:1.1;margin:0 0 16px;text-align:center}
.works .wsub{color:var(--mut);font-size:15.5px;text-align:center;margin:0 auto 30px;max-width:600px}
.works h3{font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--acc2);margin:34px 0 14px}
.wgrid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:250px;gap:14px}
.wgrid figure,.vgrid figure{margin:0;position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--line2);background:#0d0d16}
.wgrid img{display:block;width:100%;height:100%;object-fit:cover}
.wgrid .wide{grid-column:span 2}
.wgrid .tall{grid-row:span 2}
.wgrid figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 11px;font-size:12.5px;font-weight:600;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.72))}
.wgrid figcaption span{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--acc)}
.vgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.vgrid video{display:block;width:100%;aspect-ratio:16/9;background:#000;object-fit:cover}
.vgrid figcaption{padding:13px 16px 15px;font-size:13.5px;color:var(--mut)}
.vgrid figcaption b{display:block;color:var(--text);font-size:14.5px;margin-bottom:2px}
@media (max-width:760px){
 .works{padding:0 18px 60px}
 .wgrid{grid-template-columns:1fr 1fr;grid-auto-rows:170px;gap:10px}
 .vgrid{grid-template-columns:1fr}
}

/* подсказки на шаге */
.note{display:flex;gap:12px;align-items:flex-start;background:var(--well);border:1px solid var(--line);border-radius:12px;padding:13px 14px;font-size:13px;color:var(--mut)}
.note b{color:var(--text);overflow-wrap:anywhere}
.note .i{flex:none;font-size:16px;line-height:1.3}
.note.gift{border-color:rgba(255,106,26,.45);background:rgba(255,106,26,.08);color:var(--text)}
.next{display:flex;justify-content:center;margin-top:26px}
.restart{display:block;text-align:center;margin:16px 0 4px;font-size:13px}
@media (max-width:640px){.userchip .lk{display:none}}

/* вход по почте */
.or{display:flex;align-items:center;gap:12px;margin:6px 0 2px;color:#6b7280;font-size:12px;text-transform:uppercase;letter-spacing:.5px}
.or::before,.or::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.1)}
/* подпись о проверке под кнопкой скачивания */
.safe{display:flex;align-items:flex-start;gap:9px;margin-top:14px;font-size:13px;color:var(--mut);max-width:480px}
.safe svg{flex:none;color:var(--ok);margin-top:2px}
.safe b{color:var(--text);font-weight:600}
.safe a{color:var(--text);font-weight:600}
