/* ══════════════════════════════════════
   PreaWedding — Auth Pages
   Editorial Atelier · Split Screen
   Fraunces + Outfit · Linen · Gold · Rose
══════════════════════════════════════ */
:root{
  --bg:#FBF7F0;--bg2:#F3EDE3;--bg3:#EBE3D5;
  --white:#fff;--card:#fff;
  --txt:#2C1810;--txt2:#5A4A3C;--txt3:#8A7A6C;--txt4:#B5A899;
  --gold:#B8956A;--gold-l:#CBAA82;--gold-d:#9A7A52;
  --rose:#C4918A;--rose-l:#D9AFA9;
  --sage:#8FA887;--sage-l:#AAC0A3;--sage-d:#6E8A66;
  --red:#C0564F;--red-l:#F4E8E7;
  --r:12px;--r-sm:8px;
  --font:'Fraunces',Georgia,serif;
  --sans:'Outfit','Helvetica Neue',sans-serif;
  --ease:cubic-bezier(.22,1,.36,1);
}

/* Reset */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%}
body{font-family:var(--sans);background:var(--bg);color:var(--txt);min-height:100%;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font:inherit;cursor:pointer;border:none;background:none}
input{font:inherit;border:none;outline:none;background:none;width:100%}
em{font-style:italic;font-family:var(--font)}

/* ═══ LAYOUT ═══ */
.auth-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100vh;min-height:100dvh}

/* ═══ LEFT VISUAL PANEL ═══ */
.auth-visual{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}
.auth-visual-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.auth-visual-grain{position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.08'/%3E%3C/svg%3E");pointer-events:none;z-index:2}
.auth-visual-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(44,24,16,.35) 0%,rgba(44,24,16,.15) 40%,rgba(44,24,16,.5) 100%);z-index:3}

.auth-visual-content{position:relative;z-index:4;display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:44px 48px}

.auth-brand{display:flex;align-items:baseline;font-size:1.3rem;opacity:0}
.brand-prea{font-family:var(--sans);font-weight:700;color:var(--gold-l)}
.brand-wed{font-family:var(--font);font-weight:400;font-style:italic;color:rgba(255,255,255,.9);margin-left:1px}

.auth-visual-text{flex:1;display:flex;flex-direction:column;justify-content:center;max-width:420px}
.auth-quote{font-family:var(--font);font-size:clamp(1.4rem,2.2vw,1.9rem);font-weight:300;font-style:italic;color:var(--white);line-height:1.55;margin-bottom:32px;opacity:0}
.auth-proof{display:flex;align-items:center;gap:14px;opacity:0}
.auth-proof-avatars{display:flex}
.auth-proof-avatars img{width:32px;height:32px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.3);margin-left:-8px}
.auth-proof-avatars img:first-child{margin-left:0}
.auth-proof p{font-size:.68rem;color:rgba(255,255,255,.5);line-height:1.4}

.auth-visual-features{display:flex;gap:28px;opacity:0}
.auth-feat{display:flex;align-items:center;gap:7px;color:rgba(255,255,255,.45);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;font-weight:500}
.auth-feat svg{width:16px;height:16px;stroke:var(--gold-l);flex-shrink:0}

/* ═══ RIGHT FORM PANEL ═══ */
.auth-form-panel{display:flex;align-items:center;justify-content:center;padding:48px 60px;position:relative;overflow-y:auto;transition:opacity .2s}
.auth-form-panel.checking{opacity:0;pointer-events:none}
.auth-form-wrapper{width:100%;max-width:420px;position:relative}

.auth-brand-mobile{display:none;align-items:baseline;font-size:1.2rem;margin-bottom:36px;justify-content:center}
.auth-brand-mobile .brand-prea{color:var(--gold-d)}
.auth-brand-mobile .brand-wed{color:var(--txt);opacity:.7}

/* Views */
.auth-view{display:none;opacity:0}
.auth-view.active{display:block}

/* Header */
.auth-tag{display:inline-block;font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-d);font-weight:600;margin-bottom:14px}
.auth-title{font-family:var(--font);font-size:clamp(1.6rem,2.8vw,2.2rem);font-weight:400;line-height:1.2;margin-bottom:10px;color:var(--txt)}
.auth-title em{color:var(--gold-d)}
.auth-subtitle{font-size:.82rem;line-height:1.6;color:var(--txt3);margin-bottom:32px}
.auth-header-center{text-align:center}

/* Form */
.auth-form{display:flex;flex-direction:column;gap:20px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group label{font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--txt2)}
.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

.input-wrap{display:flex;align-items:center;gap:10px;background:var(--white);border:1.5px solid rgba(44,24,16,.08);border-radius:var(--r);padding:0 16px;height:48px;transition:all .3s var(--ease)}
.input-wrap:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px rgba(184,149,106,.1)}
.input-wrap.error{border-color:var(--red);box-shadow:0 0 0 3px rgba(192,86,79,.08)}
.input-wrap svg{width:18px;height:18px;stroke:var(--txt4);flex-shrink:0;transition:stroke .3s}
.input-wrap:focus-within svg{stroke:var(--gold)}
.input-wrap input{font-size:.82rem;color:var(--txt);height:100%}
.input-wrap input::placeholder{color:var(--txt4)}

/* Password toggle */
.toggle-pw{display:flex;align-items:center;padding:4px;color:var(--txt4);transition:color .3s}
.toggle-pw:hover{color:var(--gold)}
.toggle-pw svg{width:18px;height:18px}
.toggle-pw .eye-closed{display:none}
.toggle-pw.showing .eye-open{display:none}
.toggle-pw.showing .eye-closed{display:block}

/* Password strength */
.pw-strength{display:flex;align-items:center;gap:10px;margin-top:4px;opacity:0;height:0;transition:all .3s var(--ease)}
.pw-strength.visible{opacity:1;height:18px}
.pw-bar{flex:1;height:3px;background:rgba(44,24,16,.06);border-radius:2px;overflow:hidden}
.pw-bar span{display:block;height:100%;width:0;border-radius:2px;transition:width .4s var(--ease),background .3s}
.pw-label{font-size:.58rem;font-weight:500;letter-spacing:.04em;color:var(--txt4);min-width:50px;text-align:right}
.pw-weak .pw-bar span{width:33%;background:var(--red)}
.pw-weak .pw-label{color:var(--red)}
.pw-medium .pw-bar span{width:66%;background:var(--gold)}
.pw-medium .pw-label{color:var(--gold)}
.pw-strong .pw-bar span{width:100%;background:var(--sage-d)}
.pw-strong .pw-label{color:var(--sage-d)}

/* Checkbox */
.checkbox-wrap{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.72rem;color:var(--txt3)}
.checkbox-wrap input{display:none}
.checkbox-custom{width:18px;height:18px;border:1.5px solid rgba(44,24,16,.12);border-radius:4px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s var(--ease)}
.checkbox-wrap input:checked + .checkbox-custom{background:var(--gold);border-color:var(--gold)}
.checkbox-wrap input:checked + .checkbox-custom::after{content:'';display:block;width:10px;height:10px;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") no-repeat center/contain}

/* Form row */
.form-row{display:flex;justify-content:space-between;align-items:center}

/* Links */
.link-btn{color:var(--gold-d);font-size:.72rem;font-weight:500;transition:color .2s;display:inline-flex;align-items:center;gap:4px}
.link-btn:hover{color:var(--rose)}
.link-inline{color:var(--gold-d);text-decoration:underline;text-underline-offset:2px}
.link-inline:hover{color:var(--rose)}

/* Submit button */
.btn-submit{opacity:unset!important;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:50px;background:var(--gold);color:var(--white);font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;border-radius:100px;transition:all .4s var(--ease);position:relative;overflow:hidden;margin-top:4px}
.btn-submit::before{content:'';position:absolute;inset:0;background:var(--gold-d);transform:translateX(-101%);transition:transform .4s var(--ease)}
.btn-submit:hover::before{transform:translateX(0)}
.btn-submit span,.btn-submit svg{position:relative;z-index:1}
.btn-submit svg{width:16px;height:16px;transition:transform .3s var(--ease)}
.btn-submit:hover svg{transform:translateX(3px)}
.btn-submit:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(184,149,106,.2)}
.btn-submit:disabled{opacity:.7;pointer-events:none}

/* Loading state */
.btn-spinner{display:none;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--white);border-radius:50%;animation:spin .6s linear infinite;position:relative;z-index:1}
.btn-submit.loading span,.btn-submit.loading svg:not(.btn-spinner){display:none}
.btn-submit.loading .btn-spinner{display:block}
@keyframes spin{to{transform:rotate(360deg)}}

/* Social button */
.btn-social{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:48px;background:var(--white);border:1.5px solid rgba(44,24,16,.08);border-radius:100px;font-size:.72rem;font-weight:500;color:var(--txt2);transition:all .3s var(--ease)}
.btn-social:hover{border-color:rgba(44,24,16,.15);box-shadow:0 4px 16px rgba(44,24,16,.06);transform:translateY(-1px)}

/* Divider */
.auth-divider{display:flex;align-items:center;gap:16px;margin:24px 0}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:rgba(44,24,16,.06)}
.auth-divider span{font-size:.6rem;color:var(--txt4);letter-spacing:.08em;text-transform:uppercase}

/* Switch */
.auth-switch{text-align:center;font-size:.74rem;color:var(--txt3);margin-top:28px}

/* Confirm icon */
.confirm-icon{width:72px;height:72px;border-radius:50%;background:rgba(143,168,135,.1);display:flex;align-items:center;justify-content:center;margin:0 auto 20px}
.confirm-icon svg{width:36px;height:36px;stroke:var(--sage-d)}

/* Toast */
.auth-toast{position:fixed;bottom:70px;left:50%;transform:translateX(-50%) translateY(100px);z-index:100;padding:12px 24px;border-radius:100px;font-size:.72rem;font-weight:500;color:var(--white);opacity:0;pointer-events:none;transition:all .4s var(--ease);white-space:nowrap;max-width:90vw}
.auth-toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}
.auth-toast.success{background:var(--sage-d)}
.auth-toast.error{background:var(--red)}

/* ═══ RESPONSIVE ═══ */
@media(max-width:1024px){
  .auth-form-panel{padding:48px 40px}
  .auth-visual-content{padding:36px 40px}
}

@media(max-width:768px){
  .auth-layout{grid-template-columns:1fr}
  .auth-visual{display:none}
  .auth-form-panel{padding:32px 24px;min-height:100vh;min-height:100dvh}
  .auth-form-wrapper{max-width:400px}
  .auth-brand-mobile{display:flex}
}

@media(max-width:480px){
  .auth-form-panel{padding:24px 20px}
  .form-row-2{grid-template-columns:1fr}
  .auth-title{font-size:1.5rem}
  .btn-submit{height:46px;font-size:.66rem}
  .btn-social{height:44px}
}


/* ═══ iOS ZOOM FIX ═══ */
@media screen and (max-width: 1024px) {
  input, select, textarea { font-size: 16px !important; }
}

/* ═══ REDUCED MOTION — respect user accessibility preference ═══ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}