@font-face{font-family:"Aeolus Display";src:url("./assets/unifix-sp.otf") format("opentype");font-display:swap}
 :root{--auth-paper:#f4f4f1;--auth-ink:#171716;--auth-line:#e0e0db;--auth-muted:#7e7e79;--auth-lime:#b8ed38}
*{box-sizing:border-box}.auth-body{background:var(--auth-paper);color:var(--auth-ink);font-family:Inter,Arial,sans-serif;margin:0;min-height:100vh}.auth-shell{display:grid;grid-template-columns:minmax(420px,1.03fr) minmax(460px,.97fr);min-height:100vh}.auth-art{background:#1b1b1a;color:#fff;display:flex;flex-direction:column;min-height:100vh;overflow:hidden;padding:31px;position:relative}.auth-art:before{animation:grid-drift 18s ease-in-out infinite alternate;background:radial-gradient(circle at center,#b8ed3840 0 1.3px,transparent 1.7px);background-size:28px 28px;content:"";inset:-25px;opacity:.38;position:absolute}.auth-brand{align-items:center;color:#fff;display:flex;font-family:"Aeolus Display",Inter,sans-serif;font-size:20px;gap:9px;position:relative;text-decoration:none;z-index:1}.auth-brand img{height:34px;object-fit:contain;width:34px}.auth-orbits{animation:orbit-float 9s ease-in-out infinite;height:min(52vw,560px);left:50%;position:absolute;top:50%;transform:translate(-50%,-48%);width:min(52vw,560px)}.auth-orbits i{animation:ring-breathe 8s ease-in-out infinite;border:1px solid #ffffff2e;border-radius:50%;inset:0;position:absolute}.auth-orbits i:nth-child(2){animation-delay:-1.6s;inset:13%}.auth-orbits i:nth-child(3){animation-delay:-3.2s;inset:27%}.auth-orbits i:nth-child(4){animation-delay:-4.8s;border-color:#b8ed38;inset:41%}.auth-orbits b{align-items:center;animation:logo-breathe 5s ease-in-out infinite;background:var(--auth-lime);border-radius:50%;color:#171716;display:grid;height:88px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:88px;z-index:3}.auth-orbits b img{filter:invert(1);height:46px;object-fit:contain;width:46px}.orbit{inset:0;pointer-events:none;position:absolute;will-change:transform;z-index:2}.orbit--one{animation:orbit-clockwise 17s linear infinite -3s}.orbit--two{animation:orbit-counterclockwise 11s linear infinite -5s;inset:13%}.orbit--three{animation:orbit-clockwise 23s linear infinite -9s;inset:27%}.orbit--four{animation:orbit-counterclockwise 14s linear infinite -7s;inset:41%}.orbit--five{animation:orbit-clockwise 19s linear infinite -12s}.orbit-dot{background:var(--auth-lime);border:3px solid #1b1b1a;border-radius:50%;height:14px;left:50%;position:absolute;top:0;transform:translate(-50%,-50%);width:14px}.orbit--two .orbit-dot{height:11px;width:11px}.orbit--three .orbit-dot{height:8px;width:8px}.orbit--four .orbit-dot{height:13px;width:13px}.orbit--five .orbit-dot{height:6px;width:6px}.auth-art-copy{bottom:31px;left:31px;position:absolute;z-index:1}.auth-art-copy p{font-size:26px;font-weight:500;letter-spacing:-.065em;line-height:.95;margin:0 0 20px}.auth-art-copy small{color:#a5a5a0;font:9px 'DM Mono',monospace;letter-spacing:.08em}.auth-panel{align-items:center;display:flex;justify-content:center;padding:31px;position:relative}.auth-panel__top{align-items:center;display:flex;justify-content:space-between;left:32px;position:absolute;right:32px;top:30px}.back-home{color:var(--auth-muted);font-size:11px;text-decoration:none}.back-home:hover{color:var(--auth-ink)}.auth-card{max-width:385px;width:100%}.auth-switch{background:#e9e9e4;border-radius:9px;display:grid;grid-template-columns:1fr 1.4fr;padding:4px}.auth-switch button{background:transparent;border:0;border-radius:6px;color:#7b7b76;font:500 10px Inter;padding:9px;transition:.28s ease}.auth-switch button.active{background:#fff;box-shadow:0 3px 8px #00000012;color:var(--auth-ink)}.auth-heading{margin:42px 0 28px}.mini-label{align-items:center;color:var(--auth-muted);display:flex;font:500 9px 'DM Mono',monospace;gap:7px;letter-spacing:.06em;margin:0 0 15px;text-transform:uppercase}.mini-label span{background:var(--auth-lime);border-radius:50%;height:6px;width:6px}.auth-heading h1{font-size:43px;font-weight:500;letter-spacing:-.08em;line-height:.9;margin:0}.auth-heading>p:last-child{color:var(--auth-muted);font-size:12px;line-height:1.55;margin:16px 0 0}.auth-form{display:none;gap:15px}.auth-form.active{display:grid;animation:auth-in .4s cubic-bezier(.2,.8,.2,1) both}.auth-form label{color:#666661;display:grid;font:500 10px Inter;gap:8px}.auth-form input{background:#fff;border:1px solid var(--auth-line);border-radius:9px;color:var(--auth-ink);font:13px Inter;outline:none;padding:13px;transition:border-color .2s,box-shadow .2s}.auth-form input:focus{border-color:#a7cf36;box-shadow:0 0 0 3px #b8ed3828}.auth-form label small{color:#999994;font:9px 'DM Mono',monospace;margin-top:-3px}.auth-submit{background:var(--auth-ink);border:0;border-radius:9px;color:#fff;font:600 12px Inter;margin-top:7px;padding:14px 15px;text-align:left;transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}.auth-submit:hover{box-shadow:0 12px 22px #00000022;transform:translateY(-2px)}.auth-submit:disabled{cursor:wait;opacity:.6}.auth-submit span{float:right;font-size:16px;font-weight:400}.auth-message{color:#b5473e;font-size:10px;line-height:1.4;min-height:15px;margin:13px 0 0}.auth-message.success{color:#598100}.auth-privacy{border-top:1px solid var(--auth-line);color:#85857f;font:9px/1.55 'DM Mono',monospace;margin:24px 0 0;padding-top:17px}.auth-privacy span{color:#5f8900;font-size:12px;margin-right:5px}@keyframes auth-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes grid-drift{from{transform:translate3d(-7px,-5px,0);opacity:.25}to{transform:translate3d(8px,7px,0);opacity:.46}}@keyframes orbit-float{0%,100%{transform:translate(-50%,-48%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.012)}}@keyframes ring-breathe{0%,100%{opacity:.58}50%{opacity:1}}@keyframes logo-breathe{0%,100%{box-shadow:0 0 0 0 #b8ed381e;transform:translate(-50%,-50%) scale(1)}50%{box-shadow:0 0 0 17px #b8ed3800;transform:translate(-50%,-50%) scale(1.055)}}@keyframes orbit-clockwise{to{transform:rotate(360deg)}}@keyframes orbit-counterclockwise{to{transform:rotate(-360deg)}}body.dark-theme{--auth-paper:#121212;--auth-ink:#f4f4f0;--auth-line:#ffffff1c;--auth-muted:#aaa9a4}.dark-theme .auth-panel{background:#121212}.dark-theme .auth-switch{background:#282827}.dark-theme .auth-switch button.active,.dark-theme .auth-form input{background:#20201f;color:#f4f4f0}.dark-theme .auth-submit{background:#f4f4f0;color:#171716}.dark-theme .back-home{color:#bbb}.dark-theme .auth-form input{border-color:#ffffff20}.dark-theme .auth-form input:focus{border-color:#b8ed38}.dark-theme .auth-privacy{border-color:#ffffff18}.dark-theme .theme-toggle{background:#ffffff14;border-color:#ffffff14;color:#fff}@media(max-width:820px){.auth-shell{display:block}.auth-art{min-height:235px;padding:22px}.auth-orbits{height:300px;right:-50px;left:auto;top:95px;transform:none;width:300px}.auth-art-copy{bottom:23px;left:22px}.auth-art-copy p{font-size:22px}.auth-panel{min-height:calc(100vh - 235px);padding:82px 24px 42px}.auth-panel__top{left:24px;right:24px;top:22px}}@media(max-width:430px){.auth-art{min-height:205px}.auth-orbits{height:250px;right:-70px;top:85px;width:250px}.auth-card{max-width:none}.auth-heading{margin:32px 0 24px}.auth-heading h1{font-size:38px}.auth-panel{padding-left:20px;padding-right:20px}.auth-panel__top{left:20px;right:20px}}@media(prefers-reduced-motion:reduce){.auth-art:before,.auth-orbits,.auth-orbits i,.auth-orbits b,.orbit{animation:none}}
@media(max-width:820px){.auth-orbits{right:-165px}}
@media(max-width:430px){.auth-orbits{right:-130px;top:82px}}
 .auth-submit{align-items:center;background:linear-gradient(135deg,#282827,#121212);border:1px solid #ffffff24;box-shadow:inset 0 1px #ffffff1c,0 12px 24px #00000018;display:flex;font:600 15px/1 Inter,Arial,sans-serif;justify-content:space-between;min-height:56px;padding:14px 16px}.auth-submit:hover{background:linear-gradient(135deg,#343432,#171716);box-shadow:inset 0 1px #ffffff33,0 14px 26px #00000026}.auth-submit span{float:none;font-size:21px;line-height:1}.auth-switch{background:#e9e9e4b8;border:1px solid #ffffffb0;box-shadow:inset 0 1px #ffffff9c,0 8px 18px #00000009;backdrop-filter:blur(16px)}.auth-switch button{border:1px solid transparent;font-size:12px}.auth-switch button:hover:not(.active){background:#ffffff66;box-shadow:inset 0 1px #ffffffad}.auth-switch button.active{background:#fffffff0;border-color:#ffffff;box-shadow:inset 0 1px #ffffff,0 5px 12px #00000012}.password-field{display:block;position:relative}.auth-form .password-field input{padding-right:53px;width:100%}.password-toggle{align-items:center;background:#ffffff8a;border:1px solid #0000000d;border-radius:9px;color:#5e5e59;cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:.22s ease;width:34px}.password-toggle:hover,.password-toggle.is-visible{background:#b8ed3847;border-color:#91bf1f80;color:#4e6d08;box-shadow:inset 0 1px #ffffffaa,0 4px 10px #00000010}.password-toggle:focus-visible{outline:2px solid #91bf1f;outline-offset:2px}.password-toggle:before{border:1.6px solid currentColor;border-radius:100% 0;content:"";height:12px;position:absolute;transform:rotate(45deg);width:12px}.password-toggle:after{background:currentColor;border-radius:50%;content:"";height:4px;position:absolute;width:4px}.auth-card{transform:translateY(-38px)}@media(max-width:820px){.auth-panel{align-items:flex-start;padding-top:52px}.auth-card{transform:none}}
 .password-toggle:before{border-radius:50%;height:10px;transform:none;width:17px}
 .auth-card.is-switching .auth-switch{animation:auth-switch-in .34s cubic-bezier(.2,.8,.2,1) both}.auth-card.is-switching .auth-heading{animation:auth-copy-in .42s cubic-bezier(.2,.8,.2,1) both}.auth-card.is-switching .auth-form.active{animation:auth-form-in .46s cubic-bezier(.2,.8,.2,1) both}.auth-card.is-switching .auth-form.active>*{animation:auth-field-in .42s cubic-bezier(.2,.8,.2,1) both}.auth-card.is-switching .auth-form.active>*:nth-child(1){animation-delay:.05s}.auth-card.is-switching .auth-form.active>*:nth-child(2){animation-delay:.1s}.auth-card.is-switching .auth-form.active>*:nth-child(3){animation-delay:.15s}.auth-card.is-switching .auth-form.active>*:nth-child(4){animation-delay:.2s}.auth-card.is-switching .auth-form.active>*:nth-child(5){animation-delay:.25s}@keyframes auth-switch-in{from{opacity:.45;transform:translateY(-5px) scale(.985)}to{opacity:1;transform:none}}@keyframes auth-copy-in{from{filter:blur(5px);opacity:0;transform:translateY(12px)}to{filter:blur(0);opacity:1;transform:none}}@keyframes auth-form-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes auth-field-in{from{filter:blur(3px);opacity:0;transform:translateY(12px)}to{filter:blur(0);opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.auth-card.is-switching .auth-switch,.auth-card.is-switching .auth-heading,.auth-card.is-switching .auth-form.active,.auth-card.is-switching .auth-form.active>*{animation:none}}
.auth-card.is-switching .auth-form.active{animation:none}
 .auth-form.active{animation:none}

/* Live password feedback stays quiet until the visitor starts typing. */
.password-requirements{display:block;min-height:14px;transition:color .2s ease}.password-requirements.is-invalid{color:#b5473e}.password-requirements.is-valid{color:#598100}

/* On phones, preserve the living orbital illustration even when Safari reports
   a reduced-motion preference. This is a quiet continuous motion, not a page
   transition, and keeps the access screen consistent with the desktop view. */
@media (max-width:820px) {
  .auth-art:before { animation:grid-drift 18s ease-in-out infinite alternate; }
  .auth-orbits { animation:orbit-float 9s ease-in-out infinite; }
  .auth-orbits i { animation:ring-breathe 8s ease-in-out infinite; }
  .auth-orbits b { animation:logo-breathe 5s ease-in-out infinite; }
  .orbit--one { animation:orbit-clockwise 17s linear infinite -3s; }
  .orbit--two { animation:orbit-counterclockwise 11s linear infinite -5s; }
  .orbit--three { animation:orbit-clockwise 23s linear infinite -9s; }
  .orbit--four { animation:orbit-counterclockwise 14s linear infinite -7s; }
  .orbit--five { animation:orbit-clockwise 19s linear infinite -12s; }
}

/* Carry the quiet Aeolus dot field into the sign-in and registration surface. */
.auth-panel:before{background:radial-gradient(circle,#9c9c942d 1px,transparent 1.25px);background-position:-4px -4px;background-size:22px 22px;content:"";inset:0;pointer-events:none;position:absolute}.auth-card{position:relative;z-index:1}.dark-theme .auth-panel:before{background-image:radial-gradient(circle,#ffffff12 1px,transparent 1.25px)}

/* Interactive orbital core: each press grows the core; it settles back while idle. */
.auth-orbits .orbit-core{align-items:center;animation:orbit-core-breathe 5s ease-in-out infinite;background:var(--auth-lime);border:0;border-radius:50%;cursor:pointer;display:grid;height:88px;justify-content:center;left:50%;padding:0;position:absolute;top:50%;touch-action:manipulation;transform:translate(-50%,-50%) scale(var(--orbit-core-scale,1));transition:transform .18s cubic-bezier(.18,.88,.25,1),box-shadow .28s ease,filter .12s ease;width:88px;z-index:3}.auth-orbits .orbit-core:focus-visible{outline:2px solid #fff;outline-offset:5px}.auth-orbits .orbit-core.is-pressed{box-shadow:inset 0 5px 10px #00000024!important;filter:brightness(.93) saturate(.92)}.auth-orbits .orbit-core.is-pressed img{transform:scale(.88) rotate(-4deg)}.auth-orbits .orbit-core img{filter:invert(1);height:46px;object-fit:contain;pointer-events:none;transition:transform .12s cubic-bezier(.2,.85,.2,1);width:46px}.orbit-bubble{animation:orbit-bubble .6s cubic-bezier(.16,.7,.22,1) forwards;border:1px solid #d9ff78;border-radius:50%;box-shadow:0 0 0 5px #b8ed3817,0 0 28px #b8ed3840;height:var(--bubble-size);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.35);width:var(--bubble-size);z-index:4}@keyframes orbit-core-breathe{0%,100%{box-shadow:0 0 0 0 #b8ed381e}50%{box-shadow:0 0 0 17px #b8ed3800}}@keyframes orbit-bubble{0%{opacity:.92;transform:translate(-50%,-50%) scale(.42)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.48)}}@media(prefers-reduced-motion:reduce){.auth-orbits .orbit-core{animation:none}.orbit-bubble{display:none}}
