/* Compact entry: presentation only; existing forms and authentication unchanged. */
body.ng-swing-login{background:#f1f5ee;--access-panel:#fff;--access-ink:#123e30;--access-muted:#52675a;--access-line:#173d3026}
body.ng-swing-login[data-access-theme=dark]{background:#071c17;--access-panel:#102a23;--access-ink:#f4f8f0;--access-muted:#b4c4bc;--access-line:#ffffff24}
.ng-entry-header{max-width:1280px;margin:auto;padding:28px 5vw;display:flex;align-items:center;justify-content:space-between;gap:20px}.ng-entry-header img{width:104px;height:42px;object-fit:contain;display:block}.ng-entry-header .ng-entry-white{display:none}body[data-access-theme=dark] .ng-entry-green{display:none}body[data-access-theme=dark] .ng-entry-white{display:block}.ng-entry-header button{border:1px solid var(--access-line);background:transparent;color:var(--access-ink);width:44px;height:44px;border-radius:50%;font-size:22px;cursor:pointer}.ng-entry-footer{max-width:1280px;margin:auto;padding:0 5vw 28px;font-size:12px;color:var(--access-muted);letter-spacing:.04em}
.ng-swing-login .ng-login-shell{max-width:1280px;min-height:0;padding:40px 5vw 65px;display:block}.ng-swing-login .ng-login-main{grid-template-columns:1.1fr 1fr;gap:9%;min-height:560px;align-items:center;background:transparent;box-shadow:none;border-radius:0;overflow:visible}.ng-swing-login .ng-login-story{min-height:420px;padding:0;overflow:visible;background:transparent;color:var(--access-ink)}.ng-swing-login .ng-login-story:after{left:-50px;top:0;width:420px;height:420px;border-radius:48% 52% 35% 65%;transform:rotate(-32deg);border:1px solid #8fac4133;box-shadow:0 0 90px #81b23d0c;z-index:-1}.ng-swing-brand{margin:auto 0;padding:40px 0}.ng-swing-brand .ng-story-kicker{font-size:11px;letter-spacing:.19em;color:var(--access-muted);margin:0 0 25px}.ng-swing-brand h1{font-size:clamp(38px,4.6vw,62px);line-height:1.08;letter-spacing:-.05em;font-weight:500;margin:0;color:var(--access-ink)}.ng-swing-brand h1 span{color:#658323}body[data-access-theme=dark] .ng-swing-brand h1 span{color:#c1dc6a}.ng-swing-brand .ng-story-desc{font-size:16px;line-height:1.7;letter-spacing:0;color:var(--access-muted);max-width:310px;margin:24px 0}.ng-story-signature{font-size:11px;letter-spacing:.2em;color:var(--access-muted);margin-top:36px}
.ng-swing-login .ng-login-access{padding:36px;border:1px solid var(--access-line);border-radius:28px;box-shadow:0 24px 70px #00000010;max-width:440px;width:100%;justify-content:center}.ng-swing-login .ng-login-access h2{font-size:31px;font-weight:500;letter-spacing:-.04em}.ng-swing-login .ng-login-help{line-height:1.6}.ng-swing-primary{background:#bedb67!important;color:#102b20!important;border-radius:14px;min-height:54px;font-size:15px}.ng-swing-primary:hover{background:#cee88a!important}.ng-swing-primary>span{font-size:20px}.ng-access-alternatives>summary{font-size:13px;font-weight:400;min-height:50px}.ng-remember-device{line-height:1.5}.ng-entry-safety{font-size:11px;color:var(--access-muted);text-align:center;line-height:1.5;margin:18px 0 6px}.ng-access-footer{margin-top:20px}.ng-swing-login .ng-login-access form{margin:0}.ng-swing-login .ng-login-field input{max-width:100%}
@media(max-width:650px){.ng-entry-header{padding:22px 24px}.ng-entry-header img{width:84px;height:34px}.ng-swing-login .ng-login-shell{padding:0 22px 28px;min-height:0}.ng-swing-login .ng-login-main{display:flex;gap:0;min-height:0}.ng-swing-login .ng-login-story{min-height:0;padding:18px 3px 28px}.ng-swing-login .ng-login-story:after{display:none}.ng-swing-brand{padding:0;margin:0;text-align:left}.ng-swing-brand .ng-story-kicker{margin:0 0 12px;font-size:10px}.ng-swing-brand h1{font-size:27px;line-height:1.16;letter-spacing:-.035em}.ng-story-desktop,.ng-swing-brand .ng-story-desc,.ng-story-signature{display:none}.ng-swing-login .ng-login-access{margin:0 auto;border:1px solid var(--access-line);border-radius:24px;padding:26px 24px;flex:none}.ng-swing-login .ng-login-access h2{font-size:27px}.ng-entry-footer{text-align:center;padding:0 24px 24px;font-size:11px}.ng-swing-login .ng-login-main{background:transparent}}
@media(max-width:360px){.ng-swing-login .ng-login-shell{padding-left:14px;padding-right:14px}.ng-swing-login .ng-login-access{padding:24px 18px}.ng-swing-primary{font-size:14px}}
.ng-swing-login .ng-swing-brand h1 span{white-space:normal}.ng-swing-login .ng-swing-brand h1 span:after{display:none;content:none}.ng-swing-login .ng-swing-brand h1 .ng-story-desktop{color:var(--access-ink)}

.ng-swing-login .ng-phone-key{display:block;width:100%;min-height:44px;margin:10px 0 0;padding:10px 16px;border:1px solid var(--access-line,#75866b);border-radius:14px;background:transparent;color:var(--access-ink,#253028);font:600 14px system-ui;cursor:pointer}
.ng-swing-login .ng-phone-key[hidden]{display:none}
.ng-swing-login #ngKeyStatus{font-size:14px;line-height:1.5;margin:12px 0;color:var(--access-ink,#253028)}
.ng-swing-login [aria-disabled=true]{opacity:.65;cursor:wait}
@media(max-width:650px) and (pointer:coarse){#ngPhoneKey{display:none}}

/* Lightweight JSF form: preserve all native actions and accessible feedback. */
.ng-login-messages:empty{display:none}.ng-login-messages ul{list-style:none;padding:0;margin:0 0 21px}.ng-login-messages li{padding:13px;border:1px solid var(--access-line);border-radius:13px;line-height:1.5;font-size:14px;background:var(--access-panel);color:var(--access-ink)}
.ng-login-messages .ui-messages-error{border-left:3px solid #a63b36}.ng-login-messages .ui-messages-warn{border-left:3px solid #a97115}
.ng-swing-login .ng-login-submit,.ng-swing-login .ng-company-choice{font-family:inherit;cursor:pointer;white-space:normal}
.ng-swing-login .ng-company-choice{color:var(--access-ink);background:var(--access-panel);border-color:var(--access-line)}
.ng-swing-login .ng-swing-key[data-phase] #ngKeyStatus{padding:13px;border:1px solid var(--access-line);border-radius:13px;background:var(--access-panel);min-height:48px}
.ng-swing-login .ng-swing-key[data-phase] #ngKeyStatus:before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:currentColor;animation:ng-entry-beat 1.2s ease-in-out infinite;vertical-align:middle}
.ng-swing-login .ng-swing-key[data-phase=complete] #ngKeyStatus:before{animation:none}
@keyframes ng-entry-beat{50%{opacity:.3;transform:scale(.75)}}
@media(prefers-reduced-motion:reduce){.ng-swing-login .ng-swing-key[data-phase] #ngKeyStatus:before{animation:none}}

body.ng-swing-login{min-height:100vh;min-height:100svh}
/* HXM / Duet entry refinement · visual only; authentication stays untouched. */
@font-face{font-family:'Inter 9Gigs';src:url('/9Gigs/resources/fonts/InterVariable.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
html body.ng-swing-login{--access-panel:#fffefa;--access-ink:#243137;--access-muted:#59676c;--access-line:rgba(37,56,64,.18);background:#f6f5f1;font-family:'Inter 9Gigs',system-ui,sans-serif;text-rendering:optimizeLegibility;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html body.ng-swing-login[data-access-theme=dark]{--access-panel:#1c2934;--access-ink:#ecf0ec;--access-muted:#b0bdbf;--access-line:rgba(221,235,233,.18);background:#131d26}
html body.ng-swing-login :is(.ng-login-access,.ng-login-field input,.ng-access-alternatives>summary,.ng-swing-primary,.ng-login-submit,.ng-phone-key,.ng-login-messages li,.ng-other-account){border-radius:8px!important}
html body.ng-swing-login .ng-login-access{box-shadow:0 1px 2px rgba(22,39,47,.025),0 5px 13px rgba(22,39,47,.025),0 21px 55px rgba(22,39,47,.025);border-color:transparent}
html body.ng-swing-login .ng-entry-header img{width:125px;height:54px;object-fit:contain;filter:none}
html body.ng-swing-login :is(button,input,.ui-widget,.ng-phone-key){font-family:'Inter 9Gigs',system-ui,sans-serif}
html body.ng-swing-login :is(button,.ng-swing-primary){transition:background-color .2s cubic-bezier(.16,1,.3,1),opacity .2s cubic-bezier(.16,1,.3,1),scale .2s cubic-bezier(.16,1,.3,1)}
html body.ng-swing-login :is(button,.ng-swing-primary):not(:disabled):not([aria-disabled=true]):active{scale:.98}
html body.ng-swing-login .ng-login-access h2{font-weight:620;letter-spacing:-.035em}
html body.ng-swing-login :is(.ng-phone-key,.ng-access-alternatives>summary){border-color:var(--access-line);color:var(--access-ink)}
@media(max-width:650px){html body.ng-swing-login .ng-entry-header img{width:110px;height:48px}}
@media(prefers-reduced-motion:reduce){html body.ng-swing-login :is(button,.ng-swing-primary){transition:none;scale:1}}

/* Tipografía SF Pro · 2026-10-27. En Apple, la fuente del sistema (SF Pro); en el resto, Inter 9Gigs alojada.
   SF Pro no se aloja en el servidor: la licencia de Apple solo permite usarla como fuente del sistema. */
:root,html body{--font-sf:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Inter 9Gigs",Inter,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-sf-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;--ui-font:var(--font-sf);--duet-font:var(--font-sf)}
html body,html body :where(*:not(.fa):not([class^="fa-"]):not([class*=" fa-"]):not(.pi):not([class^="pi-"]):not([class*=" pi-"]):not([class*="ui-icon"]):not(.material-icons):not(code):not(pre):not(kbd):not(samp)){font-family:var(--font-sf)!important}
html body :where(code,pre,kbd,samp){font-family:var(--font-sf-mono)!important}

/* Constitución Visual 9gigs · etapa 1 (2026-10-27): tokens con prefijo --cv- (no pisan las variables propias de cada módulo) y conexión de las variables compartidas.
   Fuente: https://claude.ai/artifact/N7BmW5QVuCQbebQWykeot2 · tokens.json. El color de cada empresa vive en --brand, no en --ui-primary. */
:root{--cv-canvas:#f6f5f1;--cv-surface:#fffefa;--cv-wash:#eef2ea;--cv-ink:#243137;--cv-ink-muted:#59676c;--cv-line:#d9ddd8;--cv-line-strong:#7f8b8d;--cv-brand:#527023;--cv-primary:#306657;--cv-on-primary:#ffffff;--cv-lapis:#2c4a6e;--cv-oro:#8a6420;--cv-danger:#a62935;--cv-warning:#805b00;--cv-success:#216b43;--cv-focus:var(--cv-lapis);--cv-marca-lima:#95c11e;--cv-marca-grafito:#4a4a49;--cv-space-2:2px;--cv-space-3:3px;--cv-space-5:5px;--cv-space-8:8px;--cv-space-13:13px;--cv-space-21:21px;--cv-space-34:34px;--cv-space-55:55px;--cv-space-89:89px;--cv-space-144:144px;--cv-space-233:233px;--cv-radius-3:3px;--cv-radius-5:5px;--cv-radius-8:8px;--cv-radius-13:13px;--cv-radius-21:21px;--cv-dur-89:89ms;--cv-dur-144:144ms;--cv-dur-233:233ms;--cv-dur-377:377ms;--cv-dur-610:610ms;--cv-ease-swing:cubic-bezier(0.16, 1, 0.3, 1);--cv-ease-pausa:cubic-bezier(0.38, 0, 0.62, 1);--cv-measure-610:610px;--cv-width-987:987px;--cv-width-1597:1597px;--cv-golden-major:61.8%;--cv-golden-minor:38.2%;--cv-shadow-reposo:0 1px 2px rgba(22,39,47,0.025), 0 5px 13px rgba(22,39,47,0.025), 0 21px 55px rgba(22,39,47,0.025);--cv-shadow-portal:0 2px 3px rgba(22,39,47,0.05), 0 13px 34px rgba(22,39,47,0.08), 0 55px 89px rgba(22,39,47,0.1)}
html[data-ng-scheme=dark]{--cv-canvas:#121b22;--cv-surface:#1a2630;--cv-wash:#22322f;--cv-ink:#ecf0ec;--cv-ink-muted:#aab8bb;--cv-line:#33434d;--cv-line-strong:#6d7f88;--cv-brand:#9cc06a;--cv-primary:#93c5a9;--cv-on-primary:#0f2219;--cv-lapis:#a3bfe3;--cv-oro:#ddb76e;--cv-danger:#f2a59b;--cv-warning:#e4c27f;--cv-success:#8fd3a9;--cv-shadow-reposo:0 1px 2px rgba(0,0,0,0.2), 0 5px 13px rgba(0,0,0,0.18), 0 21px 55px rgba(0,0,0,0.16);--cv-shadow-portal:0 2px 3px rgba(0,0,0,0.3), 0 13px 34px rgba(0,0,0,0.3), 0 55px 89px rgba(0,0,0,0.35)}
html body{--ui-canvas:var(--cv-canvas)!important;--ui-surface:var(--cv-surface)!important;--ui-ink:var(--cv-ink)!important;--ui-muted:var(--cv-ink-muted)!important;--ui-line:var(--cv-line)!important;--ui-wash:var(--cv-wash)!important;--ui-primary:var(--cv-primary)!important;--ui-danger:var(--cv-danger)!important;--ui-warning:var(--cv-warning)!important;--ui-success:var(--cv-success)!important;--ui-radius:var(--cv-radius-13)!important;--ui-shadow:var(--cv-shadow-reposo)!important;--ng-space-xs:var(--cv-space-8)!important;--ng-space-sm:var(--cv-space-13)!important;--ng-space-md:var(--cv-space-21)!important;--ng-space-lg:var(--cv-space-34)!important;--ng-space-xl:var(--cv-space-55)!important;--duet-surface:var(--cv-surface)!important;--duet-radius-inner:var(--cv-radius-8)!important;--duet-ease:var(--cv-ease-swing)!important;--duet-on-primary:var(--cv-on-primary)!important;--duet-control:var(--cv-line-strong)!important}
html body :where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--cv-focus);outline-offset:2px}
