:root{--ink:#0b1f1c;--ink-soft:#16352f;--fog:#d7ebe4;--mist:#eef6f2;--paper:#f3faf7;--accent:#1f8a70;--accent-deep:#146652;--line:#0b1f1c1f;--text:#2a403b;--muted:#5d736c;--danger:#b42318;--brand:"Sora", sans-serif;--body:"IBM Plex Sans", sans-serif;color:var(--text);background:var(--paper);font-family:var(--body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0}body{min-height:100svh}a{color:inherit;text-decoration:none}button,input{font:inherit}#app{min-height:100svh}.site-header{z-index:10;justify-content:space-between;align-items:center;padding:1.25rem clamp(1.25rem,4vw,3rem);animation:.7s both fade-down;display:flex;position:absolute;inset:0 0 auto}.brand{font-family:var(--brand);letter-spacing:-.03em;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:1.15rem;font-weight:700}.header-login{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);cursor:pointer;background:#f3faf7b8;border:1px solid #0b1f1c2e;border-radius:999px;padding:.55rem 1.1rem;font-weight:600;transition:transform .18s,background .18s,border-color .18s}.header-login:hover{background:#fff;border-color:#1f8a7073;transform:translateY(-1px)}.landing{background:radial-gradient(1200px 600px at 80% -10%,#1f8a7047,#0000 60%),radial-gradient(900px 500px at 10% 20%,#1466522e,#0000 55%),linear-gradient(165deg,#eaf6f1 0%,#f7fcfa 42%,#e4f1eb 100%);min-height:100svh;position:relative;overflow:hidden}.landing:before{content:"";pointer-events:none;background-image:linear-gradient(#0b1f1c0b 1px,#0000 1px),linear-gradient(90deg,#0b1f1c0b 1px,#0000 1px);background-size:48px 48px;animation:18s linear infinite grid-drift;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000008c,#0000 75%);mask-image:linear-gradient(#0000008c,#0000 75%)}.hero{z-index:1;flex-direction:column;justify-content:center;max-width:920px;min-height:100svh;padding:7rem clamp(1.25rem,4vw,3rem) 4rem;display:flex;position:relative}.hero-brand{font-family:var(--brand);letter-spacing:-.05em;color:var(--ink);margin:0 0 1.25rem;font-size:clamp(2.8rem,8vw,5.4rem);line-height:.95;animation:.8s cubic-bezier(.2,.8,.2,1) both rise}.hero-copy{max-width:34rem;color:var(--muted);margin:0 0 2rem;font-size:clamp(1.05rem,2.2vw,1.25rem);line-height:1.55;animation:.9s cubic-bezier(.2,.8,.2,1) 80ms both rise}.hero-cta{background:var(--ink);width:fit-content;color:var(--fog);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;padding:.9rem 1.4rem;font-weight:600;transition:transform .18s,background .18s;animation:1s cubic-bezier(.2,.8,.2,1) .14s both rise;display:inline-flex}.hero-cta:hover{background:var(--accent-deep);transform:translateY(-2px)}.auth-page{background:radial-gradient(700px 320px at 50% 0%, #1f8a7033, transparent 70%), var(--paper);place-items:center;min-height:100svh;padding:6rem 1.25rem 2rem;display:grid}.auth-shell{width:min(420px,100%);animation:.5s both rise}.auth-shell h1{font-family:var(--brand);letter-spacing:-.04em;color:var(--ink);margin:0 0 .35rem;font-size:2rem}.auth-shell p{color:var(--muted);margin:0 0 1.5rem}.auth-form{gap:.9rem;display:grid}.auth-form label{color:var(--ink-soft);gap:.35rem;font-size:.92rem;font-weight:500;display:grid}.auth-form input{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:12px;padding:.85rem .95rem}.auth-form input:focus{border-color:#0000;outline:2px solid #1f8a7059}.auth-form button[type=submit]{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:999px;margin-top:.35rem;padding:.9rem 1.1rem;font-weight:600}.auth-form button[type=submit]:disabled{opacity:.65;cursor:wait}.auth-error{color:var(--danger);margin:0;font-size:.9rem}.auth-info{color:var(--accent-deep);margin:0;font-size:.9rem}.auth-switch{color:var(--muted);margin-top:1rem;font-size:.95rem}.auth-switch button{color:var(--accent-deep);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes grid-drift{0%{transform:translateY(0)}to{transform:translateY(48px)}}@media (width<=640px){.hero{padding-top:6.5rem}}
