:root{
  --ink:#13151b;
  --ink-soft:#4a4d57;
  --muted:#6f727c;
  --paper:#f4f4f1;
  --surface:#ffffff;
  --line:rgba(19,21,27,0.10);
  --line-strong:rgba(19,21,27,0.16);
  --accent:#4f4bdb;
  --accent-dark:#3c39ad;
  --accent-ink:#ffffff;
  --gold:#e08a2c;
  --radius-s:10px;
  --radius-m:16px;
  --radius-l:26px;
  --maxw:1180px;
  --shadow-card:0 1px 2px rgba(19,21,27,0.04),0 12px 32px -18px rgba(19,21,27,0.20);
}

*,*::before,*::after{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

@media (prefers-reduced-motion: reduce){
  html{
    scroll-behavior:auto;
  }

  *{
    animation-duration:0.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.001ms !important;
  }
}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3{
  font-family:'Fraunces',serif;
  font-weight:500;
  line-height:1.08;
  margin:0;
  letter-spacing:-0.01em;
}

p{
  margin:0;
}

a{
  color:inherit;
  text-decoration:none;
}

ul{
  margin:0;
  padding:0;
  list-style:none;
}

button{
  font-family:inherit;
  cursor:pointer;
}

::selection{
  background:var(--accent);
  color:#fff;
}

:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:4px;
}

.mono{
  font-family:'JetBrains Mono',monospace;
  font-size:0.78rem;
  letter-spacing:0.01em;
}

.logo{
  font-family:'Fraunces',serif;
  font-style:italic;
  font-weight:500;
  font-size:1.5rem;
  color:var(--ink);
}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:14px 22px;
  border-radius:999px;
  font-size:0.95rem;
  font-weight:600;
  border:1px solid transparent;
  transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease;
  white-space:nowrap;
}

.btn-accent{
  background:var(--accent);
  color:#fff;
  box-shadow:0 10px 24px -10px rgba(79,75,219,0.55);
}

.btn-accent:hover{
  background:var(--accent-dark);
  transform:translateY(-1px);
}

.btn-accent:active{
  transform:translateY(0);
}

.btn-ghost{
  background:var(--surface);
  color:var(--ink);
  border-color:var(--line-strong);
}

.btn-ghost:hover{
  border-color:var(--ink);
  background:var(--paper);
}

.btn-block{
  width:100%;
}

/* ---------- PAGE LAYOUT ---------- */

.page{
  min-height:100vh;
  display:grid;
  grid-template-columns:1fr 1fr;
}

/* ---------- BRAND PANEL ---------- */

.brand-panel{
  position:relative;
  background:linear-gradient(160deg,#1b1a33,var(--ink) 60%);
  color:var(--paper);
  padding:52px 56px;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}

.brand-panel::before{
  content:'';
  position:absolute;
  inset:0;
  background:
    radial-gradient(560px 420px at 15% 8%,rgba(79,75,219,0.35),transparent 60%),
    radial-gradient(480px 360px at 85% 92%,rgba(224,138,44,0.16),transparent 60%);
  pointer-events:none;
}

.brand-panel > *{
  position:relative;
  z-index:1;
}

.brand-panel .logo{
  color:#fff;
}

.brand-copy{
  margin-top:auto;
  max-width:30ch;
}

.brand-copy h1{
  color:#fff;
  font-size:clamp(1.9rem,2vw + 1.2rem,2.5rem);
}

.brand-copy p{
  margin-top:16px;
  color:rgba(244,244,241,0.68);
  font-size:1.02rem;
  max-width:34ch;
}

/* ---------- RADAR ---------- */

.radar-card{
  margin-top:40px;
  background:rgba(244,244,241,0.06);
  border:1px solid rgba(244,244,241,0.14);
  border-radius:var(--radius-l);
  backdrop-filter:blur(6px);
  overflow:hidden;
}

.radar-head{
  padding:16px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid rgba(244,244,241,0.12);
}

.radar-title{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:0.88rem;
  font-weight:600;
  color:#fff;
}

.pulse-dot{
  width:8px;
  height:8px;
  border-radius:50%;
  background:#38b06a;
  box-shadow:0 0 0 0 rgba(56,176,106,0.6);
  animation:pulse 1.8s infinite;
}

@keyframes pulse{
  0%{
    box-shadow:0 0 0 0 rgba(56,176,106,0.45);
  }

  70%{
    box-shadow:0 0 0 9px rgba(56,176,106,0);
  }

  100%{
    box-shadow:0 0 0 0 rgba(56,176,106,0);
  }
}

.radar-list{
  padding:10px 10px 14px;
  display:flex;
  flex-direction:column;
  gap:8px;
  min-height:190px;
}

.radar-item{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 11px;
  border-radius:var(--radius-s);
  background:rgba(244,244,241,0.06);
  animation:itemIn .45s ease both;
}

@keyframes itemIn{
  from{
    opacity:0;
    transform:translateY(-6px);
  }

  to{
    opacity:1;
    transform:translateY(0);
  }
}

.radar-thumb{
  width:34px;
  height:34px;
  border-radius:8px;
  flex-shrink:0;
  background:linear-gradient(
    135deg,
    var(--swatch1,#dcdaf9),
    var(--swatch2,#c3c0f3)
  );
}

.radar-info{
  flex:1;
  min-width:0;
}

.radar-info .name{
  font-size:0.84rem;
  font-weight:600;
  color:#fff;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.radar-info .meta{
  font-size:0.75rem;
  color:rgba(244,244,241,0.55);
}

.radar-price{
  font-family:'JetBrains Mono',monospace;
  font-size:0.82rem;
  font-weight:500;
  color:#fff;
  flex-shrink:0;
}

.brand-quote{
  margin-top:36px;
  padding-top:24px;
  border-top:1px solid rgba(244,244,241,0.14);
  font-size:0.88rem;
  color:rgba(244,244,241,0.55);
}

.brand-quote strong{
  color:rgba(244,244,241,0.85);
  font-weight:500;
}

/* ---------- FORM PANEL ---------- */

.form-panel{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:48px 32px;
}

.form-shell{
  width:100%;
  max-width:400px;
}

.form-shell .logo{
  display:none;
}

.form-head{
  margin-bottom:36px;
}

.form-head h2{
  font-size:clamp(1.7rem,1.6vw + 1.1rem,2.1rem);
}

.form-head p{
  margin-top:10px;
  color:var(--ink-soft);
  font-size:1rem;
}

.form-head p a{
  color:var(--accent);
  font-weight:600;
}

.form-head p a:hover{
  text-decoration:underline;
}

.field{
  margin-bottom:18px;
}

.field label{
  display:block;
  font-size:0.86rem;
  font-weight:600;
  margin-bottom:8px;
  color:var(--ink);
}

.input-wrap{
  position:relative;
}

.field input{
  width:100%;
  padding:13px 16px;
  border-radius:var(--radius-s);
  border:1px solid var(--line-strong);
  background:var(--surface);
  color:var(--ink);
  font-size:0.96rem;
  font-family:inherit;
  transition:border-color .18s ease,box-shadow .18s ease;
}

.field input::placeholder{
  color:var(--muted);
}

.field input:focus-visible{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(79,75,219,0.14);
}

.field input.invalid{
  border-color:#c81e0f;
  box-shadow:0 0 0 3px rgba(200,30,15,0.10);
}

.field-error{
  display:none;
  margin-top:7px;
  font-size:0.8rem;
  color:#c81e0f;
}

.field-error.show{
  display:block;
}

.pw-toggle{
  position:absolute;
  top:50%;
  right:6px;
  transform:translateY(-50%);
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:transparent;
  border:none;
  border-radius:8px;
  color:var(--muted);
}

.pw-toggle:hover{
  color:var(--ink);
  background:var(--paper);
}

.pw-toggle svg{
  pointer-events:none;
}

.field-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:26px;
  gap:12px;
  flex-wrap:wrap;
}

.remember{
  display:flex;
  align-items:center;
  gap:9px;
  font-size:0.88rem;
  color:var(--ink-soft);
  cursor:pointer;
  user-select:none;
}

.remember input{
  appearance:none;
  -webkit-appearance:none;
  width:18px;
  height:18px;
  border-radius:5px;
  border:1.5px solid var(--line-strong);
  background:var(--surface);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  cursor:pointer;
  position:relative;
  transition:background .16s ease,border-color .16s ease;
}

.remember input:checked{
  background:var(--accent);
  border-color:var(--accent);
}

.remember input:checked::after{
  content:'';
  position:absolute;
  left:5px;
  top:1px;
  width:5px;
  height:9px;
  border:solid #fff;
  border-width:0 2px 2px 0;
  transform:rotate(45deg);
}

.forgot{
  font-size:0.88rem;
  font-weight:600;
  color:var(--accent);
  white-space:nowrap;
}

.forgot:hover{
  text-decoration:underline;
}

.submit-row{
  margin-top:2px;
}

.btn-accent .spinner{
  display:none;
  width:16px;
  height:16px;
  border-radius:50%;
  border:2px solid rgba(255,255,255,0.4);
  border-top-color:#fff;
  animation:spin .7s linear infinite;
}

.btn-accent.loading .spinner{
  display:inline-block;
}

.btn-accent.loading .btn-label{
  opacity:0.85;
}

@keyframes spin{
  to{
    transform:rotate(360deg);
  }
}

.divider{
  display:flex;
  align-items:center;
  gap:14px;
  margin:28px 0;
  color:var(--muted);
  font-size:0.82rem;
}

.divider::before,
.divider::after{
  content:'';
  flex:1;
  height:1px;
  background:var(--line);
}

.oauth-row{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.btn-oauth{
  gap:10px;
  font-weight:500;
}

.form-msg{
  margin-top:16px;
  font-size:0.86rem;
  color:#1f8a4c;
  min-height:0;
  text-align:center;
}

.form-msg.error{
  color:#c81e0f;
}

.form-footer{
  margin-top:32px;
  text-align:center;
  font-size:0.88rem;
  color:var(--ink-soft);
}

.form-footer a{
  color:var(--accent);
  font-weight:600;
}

.form-footer a:hover{
  text-decoration:underline;
}

.back-home{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:0.86rem;
  color:var(--muted);
  margin-bottom:28px;
}

.back-home:hover{
  color:var(--ink);
}

/* ---------- RESPONSIVE ---------- */

@media (max-width:980px){
  .page{
    grid-template-columns:1fr;
  }

  .brand-panel{
    display:none;
  }

  .form-panel{
    padding:40px 24px 56px;
  }

  .form-shell .logo{
    display:block;
    margin-bottom:40px;
  }
}

@media (max-width:420px){
  .form-panel{
    padding:32px 18px 44px;
  }

  .field-row{
    flex-direction:row;
  }
}