*{box-sizing:border-box}
:root{color-scheme:light;--page:#f9f8f5;--oat:#f3f0e9;--ink:#30312e;--title:#191b18;--muted:#85867e;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
body{margin:0;background:var(--page);color:var(--ink);min-width:320px}
button,input,a{-webkit-tap-highlight-color:transparent;font:inherit}
button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}
button:focus-visible,a:focus-visible{outline:2px solid #87aaad;outline-offset:5px}
.prototype-shell{position:relative;min-height:100svh;isolation:isolate}
.site-header{position:absolute;inset:0 0 auto;z-index:10;height:104px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,3.1vw,64px)}
.brand{display:inline-block;font-size:clamp(19px,1.4vw,24px);font-weight:600;line-height:1.4;letter-spacing:.07em;white-space:nowrap;color:#383c35}

/* One continuous canvas extends underneath the header. */
.login-scene{position:relative;isolation:isolate;width:100%;height:100svh;min-height:740px;overflow:hidden;background:linear-gradient(145deg,#fbfaf8 0%,var(--page) 30%,#f6f4ef 60%,var(--oat) 100%)}
/* Broad, overlapping light fields avoid a dark corner or a visible gradient seam. */
@supports(background:linear-gradient(in oklab,#fff,#000)){
  .login-scene{background:linear-gradient(145deg in oklab,#fbfaf8 0%,var(--page) 30%,#f6f4ef 60%,var(--oat) 100%)}
}
.ambient-light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 92% 105% at 12% 25%,#ffffff99 0%,#ffffff45 35%,#ffffff10 62%,#ffffff00 85%),radial-gradient(ellipse 85% 100% at 98% 8%,#ffffff80 0%,#ffffff30 40%,#ffffff00 80%),radial-gradient(ellipse 95% 78% at 45% 114%,#e9e5dc38 0%,#eeeae219 46%,#eeeae200 88%)}
/* Sub-pixel static dither softens large flat gradients without visible paper grain. */
.ambient-light::after{content:"";position:absolute;inset:0;opacity:.014;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.83' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23808080' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.orbital-background{position:absolute;inset:0;overflow:hidden;z-index:1;pointer-events:none;clip-path:inset(0 0 0 31%);mask-image:linear-gradient(transparent,#000 15%,#000 87%,#0008)}
.orbital-field{position:absolute;inset:0;z-index:1;pointer-events:none;mask-image:linear-gradient(to right,#000 0%,#000 51%,#000b 62%,transparent 77%);contain:paint;clip-path:inset(0 0 0 31%)}
/* Keep the fade fixed in scene space while the tracks rotate underneath it.
   Smooth alpha stops dissolve the full card and shadow before the hard edge,
   without per-frame layout reads or visibility toggles. */
.orbit-visibility{position:absolute;inset:0;--edge-fade:clamp(110px,18svh,210px);mask-image:linear-gradient(to bottom,
  transparent 0%,#00000008 calc(var(--edge-fade)*.16),#0000002b calc(var(--edge-fade)*.32),#00000080 calc(var(--edge-fade)*.5),#000000d4 calc(var(--edge-fade)*.68),#000000f7 calc(var(--edge-fade)*.84),#000 var(--edge-fade),
  #000 calc(100% - var(--edge-fade)),#000000f7 calc(100% - var(--edge-fade)*.84),#000000d4 calc(100% - var(--edge-fade)*.68),#00000080 calc(100% - var(--edge-fade)*.5),#0000002b calc(100% - var(--edge-fade)*.32),#00000008 calc(100% - var(--edge-fade)*.16),transparent 100%)}
.orbit-plane{position:absolute;left:10.15%;top:50%;width:0;height:0}
.orbit-ring,.orbit-track{position:absolute;border-radius:50%;left:calc(-1 * var(--radius));top:calc(-1 * var(--radius));width:calc(var(--radius) * 2);height:calc(var(--radius) * 2)}
.orbit-ring{box-shadow:inset -6px 0 42px 3px #ffffffa3;border:1px solid #ffffff40}
.ring-1,.track-1{--radius:var(--r1,370px)}.ring-2,.track-2{--radius:var(--r2,540px)}.ring-3{--radius:var(--r3,730px)}.ring-4{--radius:var(--r4,930px)}
.orbit-track{will-change:transform}
.orbit-spoke{position:absolute;left:50%;top:50%;width:0;height:0;transform:rotate(var(--angle)) translateX(var(--radius))}
.orbit-counter{position:absolute;width:var(--tile-size,84px);height:var(--tile-size,84px);left:calc(var(--tile-size,84px) / -2);top:calc(var(--tile-size,84px) / -2)}
.social-tile{display:grid;place-items:center;width:100%;height:100%;border-radius:20px;background:#fffffff2;box-shadow:0 12px 30px -17px #403f3530,0 2px 6px #403f3505,inset 0 0 0 1px #fff;transform:none}
.social-tile img{width:31px;height:31px;object-fit:contain;opacity:1;filter:none}
.social-tile .linkedin{font-family:Arial,sans-serif;font-weight:700;font-size:31px;color:#0A66C2}
.particle-panel{position:absolute;left:0;top:0;width:34.4%;height:100%;pointer-events:none;z-index:2}
#particle-canvas,#particle-points{position:absolute;inset:0;width:100%;height:100%;display:block}

.login-area{position:relative;z-index:5;width:36%;margin-left:62%;height:100%;display:flex;align-items:center;padding:124px 28px 92px 0}
.login-wrap{position:relative;width:100%;max-width:400px;min-height:180px;margin:auto;display:flex;align-items:center;justify-content:center}
/* Lassie's focus-expanding frosted strip, with a second row for our password.
   Only this small control changes dimensions; the surrounding scene stays still. */
.glass-login{--glass-ease:cubic-bezier(.22,1,.36,1);position:relative;isolation:isolate;flex:none;width:min(276px,100%);height:64px;border:1px solid #ffffffd1;border-radius:20px;background:linear-gradient(130deg,#ffffff66 0%,#e3ddcf38 65%,#eae5dc52 100%);backdrop-filter:blur(16px) saturate(125%);-webkit-backdrop-filter:blur(16px) saturate(125%);box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #aca79b14,0 8px 28px -13px #49473d28,0 1px 4px #49473d07;transition:width .52s var(--glass-ease),height .52s var(--glass-ease),border-radius .52s var(--glass-ease),box-shadow .3s ease}
.glass-login::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 1px 0 0 #ffffff66,inset -1px 0 0 #ffffff40}
.glass-login[data-expanded="true"]{width:min(384px,100%);height:124px;border-radius:24px;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #aca79b14,0 12px 36px -16px #49473d30,0 1px 4px #49473d07}
.credentials{position:absolute;top:7px;left:8px;right:106px;height:108px}
.field{position:absolute;width:100%;height:48px}
.account-field{top:0}
.password-field{top:60px;opacity:0;visibility:hidden;transform:translateY(-10px);transition:opacity .22s ease,transform .4s var(--glass-ease),visibility 0s .22s}
.glass-login[data-expanded="true"] .password-field{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .32s .10s ease,transform .46s .06s var(--glass-ease),visibility 0s}
.input-shell{position:relative}
input{border:1px solid transparent;border-radius:12px;background:transparent;width:100%;height:48px;padding:0 14px;color:#30312e;font-size:14px;outline:none;transition:background .2s,border-color .2s}
input::placeholder{color:#797b74;opacity:1}
input:hover{background:#ffffff26}
input:focus{border-color:#ffffff70;background:#ffffff36}
#password{padding-right:42px}
.reveal-password{position:absolute;right:1px;top:3px;width:42px;height:42px;display:grid;place-items:center;border:0;background:transparent;color:#92978c;border-radius:10px}
.reveal-password svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3}
.login-button{position:absolute;top:50%;right:7px;transform:translateY(-50%);width:91px;height:48px;border:1px solid #fff;border-radius:14px;background:#fffffff5;color:#30312e;display:flex;align-items:center;justify-content:center;gap:9px;padding:0 12px;font-size:14px;letter-spacing:.5px;box-shadow:0 2px 5px #4b483505;transition:background .2s,box-shadow .2s}
.login-button:hover{background:#fff;box-shadow:0 3px 12px #4b483511}
.login-button:active{background:#eeeee9;box-shadow:inset 0 1px 3px #4b483509}
.login-button svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;fill:none}
.form-status{position:absolute;top:100%;left:0;right:0;text-align:center;font-size:11px;line-height:1.8;color:#72736d;margin:0}
.form-status:empty{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media(min-width:1800px){.site-header{height:116px}.social-tile{border-radius:22px}.social-tile img{width:36px;height:36px}}
@media(max-width:1150px) and (min-width:701px){.site-header{height:88px}.brand{font-size:20px}.login-scene{min-height:710px}.login-area{width:39%;margin-left:58%;padding:116px 26px 70px 0}.login-wrap{max-width:340px}.glass-login{width:min(248px,100%)}.social-tile{border-radius:16px}.social-tile img{width:26px;height:26px}}
@media(max-width:700px){
  .site-header{height:82px;padding:0 22px}.brand{font-size:19px;letter-spacing:.05em}
  .login-scene{height:auto;min-height:100svh;padding:78px 0 94px}.particle-panel{position:relative;width:70%;height:286px}
  .orbital-background,.orbital-field{height:390px;clip-path:inset(0 0 0 55%);mask-image:linear-gradient(transparent,#000 22%,#000 65%,transparent)}.orbit-plane{left:10.15%;top:52%}
  .orbital-field{mask-image:none}.orbit-visibility{--edge-fade:110px}
  .orbit-counter{width:46px;height:46px;left:-23px;top:-23px}.social-tile{border-radius:13px}.social-tile img{width:22px;height:22px}.track-2 .orbit-counter{width:42px;height:42px;left:-21px;top:-21px}.track-2 .social-tile{border-radius:12px}.track-2 img{width:20px;height:20px}.social-tile .linkedin{font-size:22px}
  .login-area{width:auto;margin:0;padding:0 24px;min-height:0;height:auto;align-items:flex-start}.login-wrap{max-width:370px;min-height:180px}.glass-login{width:min(276px,100%)}input{font-size:16px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}.orbit-track{will-change:auto}}
