/* ═══════════════════════════════════
   login.css — ChatDLM Login Page
   ═══════════════════════════════════ */

/* ═══ TOKENS ═══ */
:root{--r:10px;--ease:cubic-bezier(.4,0,.2,1);--tr:.3s var(--ease);--blur:40px;--blur-s:24px}
[data-theme="dim"]{--bg:#15202B;--g:rgb(255 255 255 / .04);--gh:rgb(255 255 255 / .07);--ga:rgb(255 255 255 / .10);--bd:rgb(255 255 255 / .08);--bdh:rgb(255 255 255 / .16);--t1:rgb(255 255 255 / .93);--t2:rgb(255 255 255 / .55);--t3:rgb(255 255 255 / .30);--ac:#4285F4;--acs:rgb(66 133 244 / .12)}
[data-theme="dark"]{--bg:#1f1f1f;--g:rgb(255 255 255 / .05);--gh:rgb(255 255 255 / .08);--ga:rgb(255 255 255 / .11);--bd:rgb(255 255 255 / .10);--bdh:rgb(255 255 255 / .18);--t1:#e8eaed;--t2:#9aa0a6;--t3:rgb(255 255 255 / .30);--ac:#8ab4f8;--acs:rgb(138 180 248 / .12)}
[data-theme="light"]{--bg:#F7F9FA;--g:rgb(255 255 255 / .72);--gh:rgb(255 255 255 / .88);--ga:rgb(255 255 255 / .95);--bd:rgb(0 0 0 / .06);--bdh:rgb(0 0 0 / .12);--t1:rgb(0 0 0 / .88);--t2:rgb(0 0 0 / .50);--t3:rgb(0 0 0 / .25);--ac:#4285F4;--acs:rgb(66 133 244 / .08)}
[data-theme="eyecare"]{--bg:#262624;--g:rgb(255 245 220 / .04);--gh:rgb(255 245 220 / .07);--ga:rgb(255 245 220 / .10);--bd:rgb(255 245 220 / .08);--bdh:rgb(255 245 220 / .15);--t1:#e0dcd4;--t2:#9e9a90;--t3:rgb(255 245 220 / .28);--ac:#c9a96e;--acs:rgb(201 169 110 / .12)}
[data-theme="dotgrid"]{--bg:#000;--g:rgb(255 255 255 / .04);--gh:rgb(255 255 255 / .07);--ga:rgb(255 255 255 / .10);--bd:rgb(255 255 255 / .08);--bdh:rgb(255 255 255 / .15);--t1:#e8eaed;--t2:#9aa0a6;--t3:rgb(255 255 255 / .28);--ac:#8ab4f8;--acs:rgb(138 180 248 / .12)}
[data-theme="dotgrid"] body{background-image:radial-gradient(circle,rgb(255 255 255 / .08) 1px,transparent 1px);background-size:20px 20px}

/* ═══ RESET ═══ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
*{scrollbar-width:none!important;-ms-overflow-style:none!important}
*::-webkit-scrollbar{display:none!important}
html,body{height:100%;overflow:hidden}
body{font-family:-apple-system,'SF Pro Display','Noto Sans SC','Noto Sans TC','Noto Sans JP','Helvetica Neue',sans-serif;background:var(--bg);color:var(--t1);-webkit-font-smoothing:antialiased}

/* ═══ LAYOUT ═══ */
.page{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:0 24px}
.wrap{width:100%;max-width:420px}

/* ═══ LOGO ═══ */
.logo{font-family:'Inter',-apple-system,sans-serif;font-size:1.625rem;font-weight:700;color:var(--t1);letter-spacing:-.5px;margin-bottom:36px;text-align:center;user-select:none;cursor:pointer;text-decoration:none;display:block;transition:filter .6s var(--ease),opacity .6s var(--ease)}
.logo img{width:32px;height:32px;border-radius:8px;vertical-align:middle;margin-right:8px;margin-top:-4px;transition:transform .6s var(--ease)}
.logo img.flipped{transform:rotate(180deg)}

/* ═══ CARD ═══ */
.card{width:100%;height:480px;background:var(--g);border:1px solid var(--bd);border-radius:16px;backdrop-filter:blur(var(--blur-s));-webkit-backdrop-filter:blur(var(--blur-s));overflow:hidden;display:flex;flex-direction:column;position:relative}

/* ═══ VIEW ═══ */
.view{display:none;flex-direction:column;flex:1}
.view.on{display:flex;animation:vIn .2s var(--ease)}
.view.on.v-back{animation:vBack .2s var(--ease)}
@keyframes vIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
@keyframes vBack{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}

/* ═══ TABS ═══ */
.tabs{display:flex;border-bottom:1px solid var(--bd);flex-shrink:0;height:52px}
.tab{flex:1;padding:0;text-align:center;font-size:0.875rem;font-weight:600;color:var(--t3);cursor:pointer;border:none;background:transparent;font-family:inherit;position:relative;transition:color var(--tr);height:52px;line-height:52px}
.tab:hover{color:var(--t2)}
.tab.on{color:var(--t1)}
.tab.on::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:48px;height:2px;background:var(--ac);border-radius:2px}

/* ═══ SUB-VIEW HEADER ═══ */
.vhead{display:flex;align-items:center;height:52px;padding:0 16px;border-bottom:1px solid var(--bd);flex-shrink:0;position:relative}
.vhead-back{width:28px;height:28px;border-radius:8px;border:none;background:transparent;color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:0.875rem;transition:all .15s;flex-shrink:0;z-index:1}
.vhead-back:hover{background:var(--gh);color:var(--t1)}
.vhead-title{position:absolute;left:0;right:0;text-align:center;font-size:0.875rem;font-weight:600;color:var(--t1);pointer-events:none}

/* ═══ FORM ═══ */
.form{padding:28px 24px 24px;flex:1;display:flex;flex-direction:column}
.form-fields{flex:1}
.pan{display:none}
.pan.on{display:block;animation:fadeIn .15s var(--ease)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ═══ FIELD ═══ */
.field{margin-bottom:20px}
.fl{display:block;font-size:0.875rem;font-weight:600;color:var(--t2);margin-bottom:10px}
.fl .sep{color:var(--t3);font-weight:400}
.fb{position:relative;width:100%;background:var(--g);border:1px solid var(--bd);border-radius:var(--r);overflow:hidden;transition:border-color var(--tr)}
.fb:focus-within{border-color:var(--ac)}
.fb.shake{animation:shake .4s var(--ease)}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.fi{display:block;width:100%;padding:14px 16px;border:none;background:transparent;outline:none;font-size:0.875rem;font-family:inherit;color:var(--t1)}
.fi::placeholder{color:var(--t3)}
.fi.has-eye{padding-right:44px}
.eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--t3);cursor:pointer;font-size:1rem;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .15s}
.eye:hover{color:var(--t2)}
.fi.has-code{padding-right:110px}
.cbtn{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:7px 14px;border-radius:8px;border:none;background:var(--ga);color:var(--t1);font-size:0.75rem;font-weight:500;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all var(--tr)}
.cbtn:hover{background:var(--gh)}
.cbtn:disabled{color:var(--t3);cursor:not-allowed;background:var(--g)}

/* ═══ PRIVACY ═══ */
.priv{font-size:0.75rem;color:var(--t3);line-height:1.6;margin-top:20px;margin-bottom:0;text-align:justify;text-align-last:justify;letter-spacing:.5px}
.priv a{color:var(--t3);text-decoration:underline;text-underline-offset:2px}
.priv a:hover{color:var(--t2)}

/* ═══ SUBMIT ═══ */
.btn{display:block;width:100%;padding:14px 0;border:none;border-radius:var(--r);background:var(--ac);color:#fff;font-size:0.875rem;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.3px;transition:opacity .15s;margin-top:auto}
.btn:hover{opacity:.88}
.btn:active{opacity:.75}

/* ═══ FOOTER ═══ */
.foot{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-top:1px solid var(--bd);flex-shrink:0}
.foot a{font-size:0.75rem;color:var(--ac);text-decoration:none;font-weight:500}
.foot a:hover{text-decoration:underline}

/* ═══ BOTTOM ═══ */
.bot{text-align:center;margin-top:20px;font-size:0.75rem;color:var(--t3)}
.bot a{color:var(--ac);text-decoration:none;font-weight:500}
.bot a:hover{text-decoration:underline}

/* ═══ QR CORNER ═══ */
.qr-corner{
  position:absolute;top:0;right:0;z-index:10;
  width:56px;height:56px;cursor:pointer;
  background:var(--ac);
  clip-path:polygon(100% 0,0 0,100% 100%);
  opacity:.85;transition:opacity .15s;
  display:flex;align-items:flex-start;justify-content:flex-end;
}
.qr-corner:hover{opacity:1}
.qr-ico{
  width:24px;height:24px;
  margin:3px 2px 0 0;
  pointer-events:none;
}

/* ═══ QR VIEW ═══ */
.qr-body{
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;padding:48px 24px;
}
.qr-placeholder{
  width:180px;height:180px;border-radius:12px;
  background:var(--g);border:1px solid var(--bd);
  display:flex;align-items:center;justify-content:center;
  font-size:4rem;color:var(--t3);margin-bottom:20px;
}
.qr-hint{font-size:0.875rem;color:var(--t3);text-align:center}

/* ═══ EMAIL DROPDOWN ═══ */
.email-drop{
  display:none;position:fixed;z-index:200;
  background:var(--bg);border:1px solid var(--bd);
  border-radius:10px;padding:4px 0;
  box-shadow:0 8px 32px rgb(0 0 0 / .3);
  min-width:160px;
}
.email-drop.on{display:block}
.email-opt{
  padding:9px 14px;font-size:0.875rem;color:var(--t2);
  cursor:pointer;transition:background .12s;
}
.email-opt:hover{background:var(--gh);color:var(--t1)}

/* ═══ FOCUS MODE ═══ */
.page.focus .logo{filter:blur(6px);opacity:.25;pointer-events:none}
.page.focus~.topbar,.page.focus~.mback{filter:blur(4px);opacity:.15;pointer-events:none}
.page.focus .foot,.page.focus .bot,.page.focus .vhead,.page.focus .tabs,.page.focus .priv,.page.focus .qr-corner{filter:blur(4px);opacity:.15;pointer-events:none}

/* ═══ TOP-RIGHT MENU ═══ */
.topbar{position:fixed;top:14px;right:14px;z-index:100;transition:filter .6s var(--ease),opacity .6s var(--ease)}
.tbtn{width:36px;height:36px;border-radius:8px;border:none;background:transparent;color:var(--t3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--tr)}
.tbtn:hover{background:var(--gh);color:var(--t2)}
.tbtn-ico{font-size:0.875rem;font-weight:700;line-height:1;font-family:'Noto Sans SC','PingFang SC',sans-serif}
.menu{display:none;position:absolute;top:44px;right:0;width:200px;background:var(--bg);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));border:1px solid var(--bd);border-radius:12px;padding:8px 0;box-shadow:0 12px 48px rgb(0 0 0 / .35)}
.menu.on{display:block}
.ml{font-size:0.625rem;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--t3);padding:8px 14px 6px}
.mtr{display:flex;gap:4px;padding:4px 10px 8px}
.mt{width:30px;height:30px;border-radius:8px;border:none;background:transparent;color:var(--t3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:0.875rem;transition:all .15s}
.mt:hover{background:var(--gh);color:var(--t2)}
.mt.on{color:var(--ac);background:var(--acs)}
.msp{height:1px;background:var(--bd);margin:4px 12px}
.mlg{padding:9px 14px;font-size:0.875rem;color:var(--t2);cursor:pointer;transition:background .12s}
.mlg:hover{background:var(--gh);color:var(--t1)}
.mlg.on{color:var(--ac)}

/* ═══ MOBILE BACK ═══ */
.mback{display:none;position:fixed;top:14px;left:14px;z-index:100;width:36px;height:36px;border-radius:8px;border:none;background:transparent;color:var(--t3);cursor:pointer;align-items:center;justify-content:center;font-size:1.125rem;transition:filter .6s var(--ease),opacity .6s var(--ease),background .15s,color .15s}
.mback:hover{background:var(--gh);color:var(--t2)}

/* ═══ MOBILE ≤480px ═══ */
@media(max-width:480px){
  .page{align-items:flex-start;padding:60px 20px 0}
  .logo{display:none}
  .mback{display:flex}
  .qr-corner{display:none!important}
  .card{background:transparent;border:none;border-radius:0;backdrop-filter:none;-webkit-backdrop-filter:none;height:auto}
  .tabs{position:fixed;top:14px;left:50px;right:50px;height:36px;display:flex;align-items:center;justify-content:center;border:none;z-index:100;gap:4px}
  .form{padding:24px 0 20px}
  .foot{padding:16px 0;border-top:none}
  .vhead{position:fixed;top:14px;left:54px;right:54px;height:36px;padding:0;border:none;border-bottom:none;z-index:100;display:flex;align-items:center}
  .vhead-back{display:none!important}
  .tab{font-size:0.875rem;padding:0 10px;height:36px;line-height:36px;flex:none}
  .fl{font-size:1rem}
  .fi{font-size:1rem}
  .btn{font-size:1rem}
  .foot a{font-size:0.875rem}
  .cbtn{font-size:0.875rem}
  .bot{font-size:0.875rem}
  .vhead-title{font-size:0.875rem}
  .view.on,.view.on.v-back{animation:none}
}