/* Sign-in page ("Eli Login v2"). The page's CSP forbids inline styles, so every rule lives here;
   chart geometry is the only styling set from script (signin.js). */
:root{
  --night:#0E0E0D; --paper:#FFFFFF; --ink:#111111; --ink-hover:#242424;
  --muted:#6B6B66; --subtle:#92928C; --placeholder:#A8A8A2;
  --field:#F4F4F1; --edge:#E3E3DE; --rule:#ECECE8; --mint:#8FD3A6;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%;background:var(--night);font-family:'Geist',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--ink);text-underline-offset:3px;text-decoration-color:#C9C9C4}
a:hover{text-decoration-color:var(--ink)}
button,input{font-family:inherit}
button:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.story a:focus-visible{outline-color:var(--paper)}
input::placeholder{color:var(--placeholder)}

@keyframes eliDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes eliPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}70%{transform:translate(-50%,-50%) scale(1.25)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes eliTag{from{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes eliRing{0%{transform:translate(-50%,-50%) scale(.6);opacity:.6}100%{transform:translate(-50%,-50%) scale(3.2);opacity:0}}
@keyframes eliIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes eliFade{from{opacity:0}to{opacity:1}}

.signin-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(440px,1fr);width:100%;min-height:max(100vh,860px);
  color:var(--ink);font-size:14px;line-height:1.45}

/* ── left: the story ─────────────────────────────────────────────────────────── */
.story{position:relative;display:flex;flex-direction:column;background:var(--night);color:var(--paper);overflow:hidden;min-width:0}
.story-brand{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:44px clamp(32px,4.5vw,72px) 0;animation:eliFade .6s ease-out both}
/* The repo's wordmark is black on transparent; inverted, it reads white on the dark panel. */
.story-wordmark{display:block;height:52px;width:auto;filter:invert(1)}
.story-tagline{font-size:14px;font-style:italic;color:rgba(255,255,255,.55)}
.story-copy{padding:clamp(56px,9vh,110px) clamp(32px,4.5vw,72px) 0;display:flex;flex-direction:column;gap:22px;animation:eliIn .7s .1s cubic-bezier(.2,.7,.2,1) both}
.story-copy h1{margin:0;font-family:'Instrument Serif',serif;font-weight:400;font-size:clamp(48px,5.2vw,84px);line-height:.98;letter-spacing:-0.02em;max-width:720px;text-wrap:balance}
.story-copy h1 em{color:var(--mint)}
.story-chart-area{position:relative;flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-top:48px;padding-bottom:36px;min-height:280px}
.story-chart{position:relative;flex:1;min-height:220px;max-height:380px;margin-left:clamp(32px,4.5vw,72px);margin-right:clamp(48px,6vw,96px)}
.story-chart svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.chart-grid{stroke:rgba(255,255,255,.05)}
.chart-line{stroke:var(--paper);stroke-dasharray:1;animation:eliDraw 2.4s .2s cubic-bezier(.45,.1,.25,1) both}
.chart-sale{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 4px var(--night);animation:eliPop .5s cubic-bezier(.3,.7,.2,1) both}
.chart-rebuy{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--night);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.7),0 0 0 4px var(--night);animation:eliPop .5s cubic-bezier(.3,.7,.2,1) both}
.chart-tag{position:absolute;transform:translate(-50%,0);display:flex;flex-direction:column;align-items:center;gap:2px;white-space:nowrap;animation:eliTag .45s cubic-bezier(.3,.7,.2,1) both}
.chart-tag strong{font-size:13.5px;font-weight:650;color:var(--mint)}
.chart-tag span{font-family:'Geist Mono',monospace;font-size:11px;color:rgba(255,255,255,.45)}
.chart-now{position:absolute;left:100%;width:0;height:0;animation:eliFade .4s 2.5s both}
.chart-now span{position:absolute;left:0;top:0;border-radius:50%;background:var(--paper)}
.chart-now .ring{width:10px;height:10px;animation:eliRing 2.4s 2.6s ease-out infinite}
.chart-now .dot{width:9px;height:9px;transform:translate(-50%,-50%)}

/* ── right: the form ─────────────────────────────────────────────────────────── */
.panel{position:relative;display:flex;flex-direction:column;background:var(--paper);min-width:0}
.panel-center{flex:1;display:flex;align-items:center;justify-content:center;padding:64px clamp(28px,4vw,64px) 40px}
.panel-form{width:100%;max-width:392px;display:flex;flex-direction:column;animation:eliIn .6s .2s cubic-bezier(.2,.7,.2,1) both}
.panel-form h2{margin:0;font-size:30px;font-weight:700;letter-spacing:-0.035em;line-height:1.1}
.panel-subtitle{margin:8px 0 32px;font-size:15.5px;color:var(--muted)}

.google-button{display:flex;align-items:center;justify-content:center;gap:12px;height:52px;border-radius:13px;background:var(--paper);
  box-shadow:inset 0 0 0 1px var(--edge);font-size:15.5px;font-weight:600;color:var(--ink);white-space:nowrap;text-decoration:none;cursor:pointer;transition:box-shadow .15s}
.google-button:hover{box-shadow:inset 0 0 0 1px var(--ink)}
.divider{display:flex;align-items:center;gap:14px;margin:26px 0;font-size:13px;color:var(--subtle)}
.divider span{flex:1;height:1px;background:var(--rule)}

#credentials{display:flex;flex-direction:column}
.field{display:block;margin:0 0 8px}
.field-password{margin-top:18px}
.field-label{font-size:13.5px;font-weight:650}
#credentials input{width:100%;height:48px;padding:0 15px;border:0;border-radius:12px;background:var(--field);font-size:15px;color:var(--ink);outline:none;transition:background .15s,box-shadow .15s}
#credentials input:focus{background:var(--paper);box-shadow:inset 0 0 0 1.5px var(--ink),0 0 0 4px rgba(17,17,17,.05)}
.password-wrap{position:relative;display:block}
#credentials .password-wrap input{padding-right:50px}
.password-toggle{position:absolute;right:6px;top:6px;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;transition:color .15s}
.password-toggle:hover{color:var(--ink)}
.password-toggle .icon-hide,.password-toggle[aria-pressed=true] .icon-show{display:none}
.password-toggle[aria-pressed=true] .icon-hide{display:block}
.field-hint{margin:8px 0 0;font-size:12.5px;color:var(--muted)}

.submit{margin-top:26px;display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 18px 0 20px;border:0;border-radius:13px;
  background:var(--ink);color:var(--paper);font-size:15.5px;font-weight:650;cursor:pointer;transition:background .15s,transform .1s}
.submit:hover{background:var(--ink-hover)}
.submit:active{transform:scale(.99)}
.submit:disabled{opacity:.6;cursor:wait}

#message{margin:16px 0 0;font-size:13.5px;line-height:1.55;color:var(--muted);overflow-wrap:anywhere}
#message:empty{display:none}
#message[data-error=true]{color:#9D2929}
.switch{margin:18px 0 0;text-align:center;font-size:14px;color:var(--muted)}
.switch button{border:0;padding:0;background:none;font:inherit;font-weight:650;color:var(--ink);text-decoration:underline;text-decoration-color:#C9C9C4;text-underline-offset:3px;cursor:pointer}
.switch button:hover{text-decoration-color:var(--ink)}

.custody-note{display:flex;align-items:flex-start;gap:10px;margin-top:28px;font-size:12.5px;line-height:1.5;color:var(--muted);text-wrap:pretty}
.custody-note svg{flex:none;margin-top:2px}
.panel-footer{display:flex;gap:20px;padding:0 48px 32px;font-size:12.5px;color:var(--subtle)}

/* ── narrow screens: the story stacks above the form ───────────────────────── */
@media (max-width:900px){
  .signin-grid{grid-template-columns:1fr;min-height:100vh}
  .story-brand{padding:32px 24px 0}
  .story-wordmark{height:40px}
  .story-copy{padding:40px 24px 0}
  .story-copy h1{font-size:clamp(38px,9vw,56px)}
  .story-chart-area{min-height:0;padding-top:32px;padding-bottom:28px}
  .story-chart{flex:none;height:200px;min-height:0;margin:0 40px 0 24px}
  .panel-center{padding:48px 24px 32px}
  .panel-footer{padding:0 24px 28px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
