html{scroll-behavior:smooth;}

.grain{
  position:fixed; inset:0; z-index:-1; opacity:.5; pointer-events:none;
  background-image:
    radial-gradient(rgba(236,231,216,.035) 1px, transparent 1px),
    radial-gradient(rgba(236,231,216,.02) 1px, transparent 1px);
  background-size:3px 3px, 7px 7px;
  background-position:0 0, 2px 3px;
}

.login-shell{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:32px; }

.ledger{
  width:min(1080px,100%);
  min-height:640px;
  display:grid;
  grid-template-columns:1.05fr 1fr;
  border-radius:20px;
  overflow:hidden;
  box-shadow:0 30px 70px rgba(0,0,0,.45), 0 2px 0 rgba(184,134,59,.15);
  animation:enter .5s cubic-bezier(.2,.8,.2,1);
}
@keyframes enter{ from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:translateY(0);} }

.cover{
  position:relative;
  background:linear-gradient(155deg, var(--bg-slate) 0%, var(--bg-slate-2) 100%);
  color:var(--chalk);
  padding:56px;
  display:flex;
  flex-direction:column;
}
.cover::before{
  content:"";
  position:absolute; inset:14px;
  border:1px solid rgba(184,134,59,.28);
  border-radius:10px;
  pointer-events:none;
}

.seal{
  width:58px; height:58px;
  border-radius:50%;
  border:2px solid var(--brass);
  display:grid; place-items:center;
  position:relative;
  flex-shrink:0;
}
.seal::before{
  content:""; position:absolute; inset:5px;
  border:1px solid rgba(184,134,59,.55);
  border-radius:50%;
}
.seal span{
  font-family:"Fraunces",serif; font-weight:600; font-size:19px; color:var(--brass);
  letter-spacing:.5px;
}
.brand-row{ display:flex; align-items:center; gap:14px; }
.brand-name{ font-size:15px; font-weight:600; letter-spacing:.3px; }
.brand-sub{ font-size:10.5px; color:var(--chalk-dim); letter-spacing:1.5px; margin-top:2px; }

.headline{
  margin-top:64px;
  font-size:clamp(32px,3.6vw,44px);
  line-height:1.14;
  font-weight:500;
  max-width:11ch;
}
.headline-rule{
  width:54px; height:3px; background:var(--brass);
  margin:20px 0 22px; border-radius:2px;
}
.lede{
  max-width:36ch;
  color:var(--chalk-dim);
  font-size:13.5px;
  line-height:1.75;
}

.contents{
  margin-top:auto;
  padding-top:40px;
  border-top:1px solid rgba(236,231,216,.12);
}
.contents-title{
  font-size:10.5px; letter-spacing:1.2px; color:var(--chalk-dim); margin-bottom:14px;
}
.toc-item{
  display:flex; align-items:baseline; gap:8px;
  font-size:12.5px; color:var(--chalk);
  padding:7px 0;
}
.toc-item .label{ white-space:nowrap; font-weight:500; }
.toc-item .leader{
  flex:1; border-bottom:1px dotted rgba(236,231,216,.28);
  transform:translateY(-4px);
}
.toc-item .val{ color:var(--chalk-dim); white-space:nowrap; font-size:11.5px; }

.recto{
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0px, transparent 33px,
      rgba(38,32,25,.05) 34px
    ),
    var(--paper);
  padding:52px 52px 40px;
  display:flex;
  flex-direction:column;
}
.recto::-webkit-scrollbar{width:0;}

.tabs{ display:flex; gap:4px; margin-bottom:0; }
.tab{
  border:none;
  background:var(--paper-deep);
  color:var(--ink-soft);
  font-size:12px; font-weight:600;
  padding:10px 18px;
  border-radius:9px 9px 0 0;
  position:relative;
  top:1px;
  transition:.18s;
}
.tab.active{
  background:var(--paper);
  color:var(--ink);
}
.tab-panel{
  background:var(--paper);
  border-top:2px solid var(--brass);
  border-radius:0 10px 10px 10px;
  padding:26px 4px 4px;
}

.form-box{ max-width:420px; }
.eyebrow{ font-size:11px; color:var(--brass-deep); font-weight:600; letter-spacing:.3px; margin-bottom:8px; }
.form-box h2{ font-size:29px; font-weight:500; margin-bottom:8px; }
.form-box .desc{ color:var(--ink-soft); font-size:12.5px; line-height:1.6; margin-bottom:22px; }

.message{
  display:none; align-items:flex-start; gap:9px;
  padding:11px 13px; border-radius:9px; margin-bottom:16px;
  font-size:12px; font-weight:500; line-height:1.5;
  animation:msgIn .2s ease;
}
@keyframes msgIn{ from{opacity:0; transform:translateY(-4px);} to{opacity:1; transform:translateY(0);} }
.message.show{ display:flex; }
.message.success{ background:var(--moss-soft); color:#2e5b41; border:1px solid rgba(76,122,95,.3); }
.message.error{ background:var(--rust-soft); color:#8a3320; border:1px solid rgba(168,64,42,.3); }

.field{ margin-bottom:18px; }
.field label{
  display:block; font-size:11.5px; color:var(--ink-soft); font-weight:600; margin-bottom:6px;
}
.field-input{ position:relative; }
.field-input input{
  width:100%;
  border:none;
  border-bottom:1.5px solid var(--rule);
  background:transparent;
  padding:9px 30px 9px 2px;
  font-size:14px;
  color:var(--ink);
  outline:none;
  transition:border-color .2s;
}
.field-input input::placeholder{ color:#9a8f79; }
.field-input input:focus{ border-color:var(--pine); }
.field-input input.error{ border-color:var(--rust); }
.field-input input.success{ border-color:var(--moss); }
.field-input input:disabled{ color:var(--ink-soft); }
.field-input .icon{
  position:absolute; right:2px; top:8px; color:var(--ink-soft); font-size:14px; pointer-events:none;
}
.pw-toggle{
  position:absolute; right:0; top:2px;
  border:none; background:none; color:var(--ink-soft); font-size:14px; padding:6px;
}
.pw-toggle:hover{ color:var(--ink); }

.row-between{
  display:flex; align-items:center; justify-content:space-between;
  margin:2px 0 22px; font-size:11.5px;
}
.remember{ display:flex; align-items:center; gap:7px; color:var(--ink-soft); cursor:pointer; }
.remember input{ accent-color:var(--pine); width:14px; height:14px; }
.link-btn{ border:none; background:none; color:var(--brass-deep); font-weight:600; font-size:11.5px; }
.link-btn:hover{ text-decoration:underline; }

.stamp-btn{
  width:100%; height:52px; border:none; border-radius:8px;
  background:linear-gradient(135deg,var(--pine),var(--pine-deep));
  color:var(--chalk);
  font-size:13px; font-weight:700; letter-spacing:.4px;
  box-shadow:0 10px 24px rgba(36,64,47,.35);
  transform:rotate(-1deg);
  transition:transform .22s cubic-bezier(.34,1.4,.6,1), box-shadow .22s;
}
.stamp-btn:hover{ transform:rotate(0deg) scale(1.015); box-shadow:0 14px 30px rgba(36,64,47,.42); }
.stamp-btn:active{ transform:rotate(0deg) scale(.99); }
.stamp-btn.loading{ pointer-events:none; opacity:.85; transform:rotate(0deg); }

.spinner{
  display:inline-block; width:14px; height:14px;
  border:2px solid rgba(236,231,216,.4); border-top-color:var(--chalk);
  border-radius:50%; animation:spin .7s linear infinite; margin-right:8px; vertical-align:middle;
}
@keyframes spin{ to{ transform:rotate(360deg); } }

.register-line{
  text-align:center; margin-top:22px; font-size:11.5px; color:var(--ink-soft);
}
.register-line button{ border:none; background:none; color:var(--pine); font-weight:700; font-size:11.5px; }
.register-line button:hover{ text-decoration:underline; }

.foot{ text-align:center; margin-top:26px; font-size:9.5px; color:#9a8f79; line-height:1.6; }

.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }

.wizard-progress{ display:flex; align-items:center; gap:8px; margin-bottom:22px; }
.wizard-dot{
  width:26px; height:26px; border-radius:50%; border:1.5px solid var(--rule);
  display:grid; place-items:center; font-size:11px; font-weight:700; color:var(--ink-soft);
  background:var(--paper-deep); flex-shrink:0; transition:.2s;
}
.wizard-dot.active{ border-color:var(--pine); color:var(--chalk); background:var(--pine); }
.wizard-dot.done{ border-color:var(--brass); color:var(--chalk); background:var(--brass); }
.wizard-line{ flex:1; height:1.5px; background:var(--rule); transition:.2s; }
.wizard-line.done{ background:var(--brass); }

.wizard-step{ display:none; }
.wizard-step.active{ display:block; animation:msgIn .2s ease; }
.step-title{ font-size:11.5px; font-weight:700; color:var(--brass-deep); margin-bottom:16px; }

.field-input select{
  width:100%; border:none; border-bottom:1.5px solid var(--rule); background:transparent;
  padding:9px 22px 9px 2px; font-size:14px; color:var(--ink); outline:none; appearance:none;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--ink-soft) 50%),
    linear-gradient(135deg, var(--ink-soft) 50%, transparent 50%);
  background-position: calc(100% - 10px) 15px, calc(100% - 4px) 15px;
  background-size:6px 6px, 6px 6px; background-repeat:no-repeat;
  transition:border-color .2s;
}
.field-input select:focus{ border-color:var(--pine); }
.field-input select:invalid{ color:#9a8f79; }

.req-list{ margin-top:10px; display:flex; flex-direction:column; gap:6px; }
.req-item{ font-size:11px; color:var(--ink-soft); display:flex; align-items:center; gap:8px; transition:.15s; }
.req-item .dot{
  width:14px; height:14px; border-radius:50%; border:1.5px solid var(--rule);
  display:grid; place-items:center; font-size:9px; flex-shrink:0; color:transparent; transition:.15s;
}
.req-item.met{ color:var(--pine-deep); }
.req-item.met .dot{ background:var(--moss); border-color:var(--moss); color:var(--chalk); }

.terms-line{
  display:flex; align-items:flex-start; gap:9px; margin:18px 0 4px;
  font-size:11.5px; color:var(--ink-soft); cursor:pointer;
}
.terms-line input{ margin-top:2px; accent-color:var(--pine); width:14px; height:14px; flex-shrink:0; }

.id-card .brand-sub{ color:var(--chalk-dim); font-size:10px; letter-spacing:1px; }

.toast{
  position:fixed; right:24px; bottom:24px; min-width:250px; max-width:340px;
  padding:13px 16px; background:var(--bg-slate); color:var(--chalk);
  border-left:3px solid var(--brass); border-radius:9px;
  box-shadow:0 18px 45px rgba(0,0,0,.4); font-size:12px; font-weight:500;
  display:none; z-index:1200; animation:toastIn .28s ease;
}
@keyframes toastIn{ from{opacity:0; transform:translateX(24px);} to{opacity:1; transform:translateX(0);} }
.toast.show{ display:block; }

@media (max-width:880px){
  .ledger{ grid-template-columns:1fr; max-width:480px; min-height:auto; }
  .cover{ display:none; }
  .recto{ padding:40px 30px; }
}
@media (max-width:480px){
  .login-shell{ padding:16px; }
  .recto{ padding:30px 20px; }
  .form-box h2{ font-size:25px; }
  .grid2{ grid-template-columns:1fr; }
  .toast{ left:16px; right:16px; bottom:16px; max-width:none; }
}