/* Слой — auth page (sign in / sign up) */

.auth{
  min-height:100vh;min-height:100dvh;
  display:grid;grid-template-columns:minmax(0,1fr) clamp(460px,44.5vw,640px);
  background:var(--paper);color:var(--ink-2);
}

/* ---------- Left: dark intro ---------- */
.auth-intro{
  position:relative;overflow:hidden;
  padding:40px 48px;display:flex;flex-direction:column;
  background-color:var(--ink);color:var(--paper);
  background-image:linear-gradient(var(--ink-4) 1px,transparent 1px),linear-gradient(90deg,var(--ink-4) 1px,transparent 1px);
  background-size:48px 48px;background-position:47px 39px;
}
.auth-logo{position:relative;z-index:2;align-self:flex-start}

.auth-art{position:absolute;left:0;top:0;width:100%;height:100%;color:var(--acc);pointer-events:none}
.auth .ill{stroke-width:1.2}
.auth .ill .bd{stroke-width:2.2}
.auth .ill .th{stroke-width:.8}
.auth .ill .dw{animation-duration:2.4s}
.late{animation:rvFade .8s ease 2s backwards}

.hw-card{
  position:absolute;right:64px;top:120px;z-index:1;width:300px;padding:16px;
  border-radius:20px;background:var(--ink-3);border:1px solid var(--line-d);
  display:flex;flex-direction:column;gap:12px;
}
.hw-thumb{height:150px;border-radius:12px;background:var(--ink);color:var(--acc);display:flex;align-items:center;justify-content:center}
.hw-meta{font-size:11px;color:var(--mute-d)}
.hw-ok{display:flex;align-items:center;gap:8px;font-size:14px}
.hw-tick{width:20px;height:20px;border-radius:50%;background:var(--acc);color:var(--ink);display:flex;align-items:center;justify-content:center}
.hw-tick .ico{stroke-width:2.6}
.floaty{animation:floaty 7s ease-in-out infinite}

.auth-copy{position:relative;z-index:2;margin-top:auto;display:flex;flex-direction:column;gap:24px}
.auth-eyebrow{color:var(--mute-d)}
.auth-title{font-family:var(--f-display);font-size:clamp(40px,calc(6.9vw - 27px),72px);font-weight:600;line-height:1;letter-spacing:-.05em}
.auth-title .mask{padding-bottom:.06em}
.auth-title .outline{color:transparent;-webkit-text-stroke:1.5px var(--paper)}
.auth-title .dot{-webkit-text-stroke:0;color:var(--acc)}
.auth-lead{max-width:480px;font-size:17px;line-height:1.55;color:var(--mute-d)}

/* short desktop screens: keep the card from colliding with the headline */
@media (min-width:1025px) and (max-height:780px){.hw-card{display:none}}
@media (min-width:1025px) and (max-width:1200px){.hw-card{right:32px;width:260px}.hw-thumb{height:130px}}

/* ---------- Right: form panel ---------- */
.auth-panel{padding:40px clamp(40px,4.4vw,64px);display:flex;flex-direction:column;gap:32px;min-width:0}
.auth-top{display:flex;justify-content:flex-end}
.back-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:15px}

.auth-stack{margin:auto 0;display:flex;flex-direction:column;gap:28px;width:100%}
.auth-stack[data-state="done"] .seg,
.auth-stack[data-state="done"] .or,
.auth-stack[data-state="done"] .socials{display:none}

/* segmented switch */
.seg{
  position:relative;width:100%;height:56px;padding:4px;border-radius:999px;
  border:1px solid var(--line-l2);background:var(--paper-2);
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
}
.knob{position:absolute;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:999px;background:var(--ink-2);transition:transform .5s var(--ease)}
.seg[data-mode="up"] .knob{transform:translateX(100%)}
.seg button{position:relative;text-align:center;font-size:15px;font-weight:600;border-radius:999px;transition:color .4s}
.seg[data-mode="in"] .o1,.seg[data-mode="up"] .o2{color:var(--paper)}

/* panes */
.pane{display:flex;flex-direction:column;gap:18px;animation:paneIn .6s var(--ease) backwards}
.pane[hidden]{display:none}
#form-up{gap:16px}
.pane-title{font-family:var(--f-display);font-size:clamp(28px,3vw,36px);font-weight:600;letter-spacing:-.03em;line-height:1.1}
.pane-title:focus{outline:none}
.pane-lead{font-size:15px;line-height:1.5;color:var(--mute-l)}

/* fields */
.field{display:flex;flex-direction:column;gap:8px}
.field-label{font-size:14px;font-weight:500}
/* two fields side by side (password + repeat), stacked on phones */
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
@media (max-width:640px){.field-row{grid-template-columns:minmax(0,1fr);gap:16px}}
.field-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.text-link{font-size:14px;color:var(--mute-l);text-decoration:underline;text-underline-offset:3px;transition:color .3s}
.text-link:hover{color:var(--acc)}
.fld{
  height:56px;padding:0 18px;border-radius:16px;border:1px solid var(--line-l2);background:var(--paper-2);
  display:flex;align-items:center;gap:8px;transition:border-color .3s,box-shadow .3s;
}
.fld-pw{padding:0 6px 0 18px}
.fld:focus-within{border-color:var(--ink-2);box-shadow:0 0 0 4px rgba(22,56,92,.08)}
.fld input{flex-grow:1;width:100%;min-width:0;height:100%;border:0;background:transparent;font:inherit;font-size:16px;color:var(--ink-2);outline:none}
.fld input::placeholder{color:#91A8C0}
.fld input:focus-visible{outline:none}
.pw-toggle{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--mute-l);flex-shrink:0;transition:background .3s,color .3s}
.pw-toggle:hover{background:#DEE8F3;color:var(--ink-2)}
.pw-toggle .slash{display:none}
.pw-toggle[aria-pressed="true"] .slash{display:inline}

.fld.is-err{border-color:#B3261E}
.fld.is-err:focus-within{box-shadow:0 0 0 4px rgba(179,38,30,.12)}
.err{font-size:13px;line-height:1.4;color:#B3261E}
.err[hidden]{display:none}

.ck{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:2px 0;font-size:14px;line-height:1.45;color:#3A6590;cursor:pointer}
.ck input{width:20px;height:20px;margin:1px 0 0;flex-shrink:0;accent-color:var(--ink-2);cursor:pointer}
.ck a{text-decoration:underline;text-underline-offset:3px}
.ck.is-err input{outline:2px solid #B3261E;outline-offset:2px}

.submit{height:60px;width:100%;font-size:17px;margin-top:6px}
#form-up .submit{margin-top:4px}
.back-in{align-self:center;min-height:44px}
/* email confirmation: the code field and the two links under the form */
#code{font-family:var(--f-mono);font-size:22px;letter-spacing:.4em}
.code-alt{display:flex;justify-content:center;margin-top:-12px}
.code-alt .text-link{min-height:36px}

/* success */
.done{gap:16px}
.done-tick{width:56px;height:56px;border-radius:50%;background:var(--acc);color:var(--ink);display:flex;align-items:center;justify-content:center}
.done-tick .ico{stroke-width:2.4}
.done .submit{margin-top:8px}
.done .submit[hidden]{display:none}

/* divider + social */
.or{display:flex;align-items:center;gap:16px;color:var(--mute-l)}
.or span{flex-grow:1;height:1px;background:var(--line-l)}
.socials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.soc{height:52px;border-radius:999px;border:1px solid var(--line-l2);display:flex;align-items:center;justify-content:center;gap:10px;font-size:15px;font-weight:500;text-align:center;transition:background .3s,border-color .3s}
.soc:hover{background:#DEE8F3;border-color:var(--ink-2)}

.auth-help{font-size:13px;line-height:1.5;color:var(--mute-l)}

/* ---------- Desktop: keep the form inside one screen, no page scroll ----------
   Registration is the tallest pane, so it drops the "or" row; shorter windows get tighter spacing. */
.seg[data-mode="up"]~.or,.seg[data-mode="up"]~.socials{display:none}
@media (min-width:1025px) and (max-height:860px){
  .auth-panel{padding-top:20px;padding-bottom:20px;gap:16px}
  .auth-stack{gap:20px}
  .seg{height:48px}
  .pane{gap:14px}
  #form-up{gap:12px}
  .pane-title{font-size:28px}
  .fld{height:48px}
  .submit{height:52px}
  .role-o span{padding:8px 14px}
}
@media (min-width:1025px) and (max-height:700px){
  .auth-panel{position:relative;padding-top:52px;gap:0}
  .auth-top{position:absolute;top:6px;right:clamp(40px,4.4vw,64px)}
  .auth-help,.or,.socials{display:none}
  .auth-stack{gap:16px}
  .seg{height:44px}
  #form-up{gap:10px}
  .pane-title{font-size:24px}
  .field{gap:6px}
  .field-label,.role legend{font-size:13px}
  .role legend{margin-bottom:6px}
  .role-o small{display:none}
  .fld{height:44px}
  .ck{min-height:36px}
}

@keyframes floaty{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(-1deg)}}
@keyframes paneIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* ---------- Tablet: compact top banner ---------- */
@media (max-width:1024px){
  .auth{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}
  .auth-intro{padding:24px var(--gutter) 32px;gap:28px;background-position:calc(var(--gutter) - 1px) 23px}
  .auth-art,.hw-card,.auth-lead{display:none}
  .auth-copy{margin-top:0;gap:14px}
  .auth-title{font-size:clamp(30px,5.4vw,44px);letter-spacing:-.045em}
  .auth-title .outline{-webkit-text-stroke-width:1.2px}
  .auth-panel{padding:24px var(--gutter) 40px;align-items:center}
  .auth-top,.auth-stack,.auth-help{width:100%;max-width:520px}
  .auth-stack{margin:0}
  .auth-top{position:absolute;top:18px;right:var(--gutter);width:auto;color:var(--paper)}
  .auth{position:relative}
  .auth-help{margin-top:auto}
}

/* ---------- Phone ---------- */
@media (max-width:640px){
  .auth-intro{padding:16px var(--gutter) 24px;gap:22px;background-position:15px 15px}
  .auth-top{top:10px}
  .back-link{font-size:14px}
  .auth-eyebrow{font-size:11px}
  .auth-title{font-size:clamp(26px,8.2vw,34px)}
  .auth-panel{padding:24px var(--gutter) 32px;gap:24px}
  .auth-stack{gap:22px}
  .seg{height:52px}
  .seg button{font-size:14px}
  .soc{height:48px}
  .field-head{flex-wrap:wrap}
  .field-head .text-link{min-height:44px;display:inline-flex;align-items:center;margin:-12px 0}
}
@media (max-width:420px){
  .socials{grid-template-columns:minmax(0,1fr)}
}

/* sign-up role choice: student / teacher */
.role{border:0;margin:0;padding:0;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.role legend{padding:0;margin-bottom:8px;font-size:14px;font-weight:500}
.role-o{position:relative;display:block;cursor:pointer}
.role-o input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.role-o span{display:flex;flex-direction:column;gap:2px;height:100%;padding:12px 16px;border:1px solid var(--line-l2);border-radius:14px;background:var(--paper-2);transition:border-color .3s,background .3s,color .3s}
.role-o b{font-size:15px;font-weight:600}
.role-o small{font-size:13px;color:var(--mute-l);transition:color .3s}
.role-o:hover span{border-color:var(--ink-2)}
.role-o input:checked+span{border-color:var(--ink-2);background:var(--ink-2);color:var(--paper)}
.role-o input:checked+span small{color:var(--mute-d2)}
.role-o input:focus-visible+span{outline:2px solid var(--acc);outline-offset:3px}
.role-note{grid-column:1/-1;font-size:13px;line-height:1.4;color:var(--mute-l)}
.role-note[hidden]{display:none}
