/* K Access 0.9.05 — public portal surface on the shared KOBADI UI Geometry Contract.
   Standalone enrollment/repair pages use auth-login.css instead.
   Login always stays in document flow; Android rail changes header/chrome only. */
:root{
  --p-bg:#0e141d;--p-panel:#151e2a;--p-form:#111923;--p-field:#101720;
  --p-text:#f1f4f7;--p-muted:#a9b4c4;--p-line:#2c394b;--p-accent:#a6c9e8;
  --p-button:#eef2f6;--p-button-text:#122031;--p-hover:#1c2a3b;
  --p-rail:104px;
  --p-font:var(--kg-font);
}
html[data-portal-theme="light"]{
  --p-bg:#f2f5f8;--p-panel:#eaf0f6;--p-form:#ffffff;--p-field:#f7f9fc;
  --p-text:#172638;--p-muted:#53647a;--p-line:#c7d2df;--p-accent:#285b88;
  --p-button:#1e3651;--p-button-text:#ffffff;--p-hover:#dee8f2;
}
*{box-sizing:border-box}
html{background:var(--p-bg);scroll-padding-top:20px}
body{margin:0;min-height:100vh;background:var(--p-bg);color:var(--p-text);font:16px/1.5 var(--p-font);text-rendering:optimizeLegibility}
button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}
a{color:inherit;text-decoration:none}a:hover,.link-btn:hover{text-decoration:underline;text-underline-offset:4px}
button:focus-visible,a:focus-visible{outline:2px solid var(--p-accent);outline-offset:4px}
.ui-icon{display:block;width:24px;height:24px;flex:0 0 24px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
[hidden],.hidden,.autofill-decoy{display:none!important}
.login-card [hidden]{display:none!important}
/* Shared horizontal Access header/chrome is owned by kobadi-access-chrome.css. */
.page{width:100%;max-width:var(--kg-page-max);margin:0 auto;padding:var(--kg-page-top) var(--kg-page-x) var(--kg-page-bottom)}
.page-heading{display:flex;align-items:center;justify-content:flex-start;gap:30px;margin-bottom:8px}
.page-heading h1{font-size:23px;line-height:1.4;font-weight:650;margin:0}
.page-heading p{font-size:13px;line-height:1.5;color:var(--p-muted);margin:0;text-align:left}
.page-shell{display:flex;flex-direction:row-reverse;align-items:stretch;width:100%;border:1px solid var(--p-line);border-radius:var(--kg-card-radius);overflow:hidden;background:var(--p-panel)}
.login-card{position:static;flex:0 0 51%;width:51%;min-width:0;padding:var(--kg-card-pad-y) var(--kg-card-pad-x);background:var(--p-form);border-left:1px solid var(--p-line)}
.main-column{flex:1 1 49%;width:49%;min-width:0;padding:var(--kg-card-pad-y) var(--kg-card-pad-x-alt)}
.login-title-row{display:flex;align-items:center}
.login-title-row .ui-icon{width:28px;height:28px;flex-basis:28px;margin-right:12px;color:var(--p-accent)}
.login-heading h2{font-size:26px;line-height:1.3;font-weight:650;margin:0}
.login-heading p{font-size:14px;color:var(--p-muted);margin:10px 0 26px}
.login-card[data-stage="credentials"] .login-title-row{display:none}
.login-card[data-stage="credentials"] .login-heading p{font-size:26px;line-height:1.3;font-weight:650;letter-spacing:-.015em;color:var(--p-text);margin:0 0 26px}
.field{margin-bottom:var(--kg-field-gap);min-width:0}
.field label{display:block;font-size:14px;line-height:1.5;margin-bottom:7px;color:var(--p-muted)}
.field-label-row{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}
.field-label-row label{margin:0}.field-label-row .link-btn{margin-left:12px;text-align:right}
.field input{display:block;min-width:0;width:100%;height:var(--kg-control-h);padding:10px 12px;border:1px solid #52647a;border-radius:var(--kg-control-radius);color:var(--p-text);background:var(--p-field);font-size:16px;outline:none}
.field input::placeholder{color:var(--p-muted);opacity:.8}
.field input:focus{border-color:var(--p-accent);box-shadow:0 0 0 2px var(--p-line)}
.field input.k-input-warn{border-color:#d87c84}
.password-input-wrap{position:relative}.password-input-wrap input{padding-right:48px}
#password::-ms-reveal,#password::-ms-clear{display:none}
.password-toggle{position:absolute;top:3px;right:4px;width:38px;height:38px;padding:9px;border:0;border-radius:6px;background:transparent;color:var(--p-muted)}
.password-toggle:hover{background:var(--p-hover)}
.password-toggle-icon{width:19px;height:19px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.password-toggle .eye-off{display:none}.password-toggle[aria-pressed="true"] .eye-open{display:none}.password-toggle[aria-pressed="true"] .eye-off{display:block}
.checks{margin:2px 0 20px}.check{display:flex;align-items:center;font-size:14px;line-height:1.6;color:var(--p-muted)}
.check input{margin:0 10px 0 0;width:18px;height:18px;flex:0 0 18px;accent-color:#8bb8df}
.device-options-toggle{display:flex;align-items:center;min-height:40px;width:100%;padding:7px 0;border:0;background:transparent;color:var(--p-muted);text-align:left;font-size:13px;margin-top:7px}
.device-options-toggle .ui-icon{width:19px;height:19px;flex-basis:19px;margin-right:9px}.device-options-toggle .chevron{margin-left:auto;padding-left:8px}.device-options-toggle[aria-expanded="true"] .chevron{transform:rotate(180deg)}
.device-options{padding:12px;border:1px solid var(--p-line);border-radius:8px}.device-options .check+.check{margin-top:9px}
.btn-login,.btn{display:block;width:100%;min-height:var(--kg-button-h);border:1px solid transparent;border-radius:var(--kg-control-radius);padding:10px 16px;font-size:15px;font-weight:650;background:var(--p-button);color:var(--p-button-text);line-height:1.5;text-align:center}
.btn-login:hover,.btn:hover{opacity:.9}.btn.secondary{background:var(--p-hover);color:var(--p-text);border-color:var(--p-line)}
.link-btn{border:0;background:transparent;padding:0;color:var(--p-accent);font-size:13px;font-weight:500;line-height:1.6;cursor:pointer;text-align:left}
.mfa-links{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 18px;margin-top:18px;text-align:center}.mfa-links .link-btn{text-align:center}
.request-access{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--p-line);margin-top:22px;padding-top:18px;color:var(--p-muted);font-size:13px}
.request-access .link-btn{margin-left:14px;text-align:right}
.msg{font-size:14px;line-height:1.6;white-space:pre-line;overflow-wrap:break-word;margin:14px 0 0;color:var(--p-muted)}
.msg:empty{display:none}.msg.bad{color:#ed9ca4}.msg.warn{color:#d9bd88}.msg.ok{color:#9ed5be}
html[data-portal-theme="light"] .msg.bad{color:#a92d3e}html[data-portal-theme="light"] .msg.warn{color:#80600d}html[data-portal-theme="light"] .msg.ok{color:#236347}
#mfaCode{height:50px;font-size:19px;letter-spacing:.06em}#mfaCode::placeholder{font-size:14px;letter-spacing:0}
.mfa-emergency{border:1px solid var(--p-line);padding:12px;border-radius:8px;margin:0 0 18px}.mfa-emergency-trigger{width:100%;text-align:center}
.mfa-emergency-code{margin-top:12px}.mfa-emergency-code label{display:block;font-size:14px;margin-bottom:6px}.mfa-emergency-code input{width:100%;min-height:44px;padding:10px;border:1px solid var(--p-line);border-radius:8px;background:var(--p-field);color:var(--p-text);text-align:center;font:18px var(--p-font)}.mfa-emergency-verify{margin-top:10px}
.section-kicker{font-size:11px;font-weight:600;letter-spacing:.22em;line-height:1.5;margin:0 0 16px;color:var(--p-accent)}
.catalog-intro h2{font-size:28px;line-height:1.45;font-weight:600;letter-spacing:-.015em;margin:0 0 8px}
.lead{font-size:14px;color:var(--p-muted);margin:0 0 28px}
.module-list{border-top:1px solid var(--p-line)}
.module-card{display:flex;align-items:center;border-bottom:1px solid var(--p-line);padding:16px 0;min-width:0}
.module-card>.ui-icon{width:28px;height:28px;flex-basis:28px;color:var(--p-accent);margin-right:18px}
.module-copy{flex:1 1 auto;min-width:0}.module-copy b{display:block;font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.4;font-weight:600;margin:0 0 4px}.module-copy p{font-size:13px;color:var(--p-muted);margin:0;line-height:1.5}
.module-number{font-size:12px;color:var(--p-muted);margin-left:14px}.catalog-note{font-size:12px;color:var(--p-muted);margin:20px 0 0;line-height:1.6}
.portal-footer{display:flex;align-items:center;justify-content:space-between;margin-top:22px;padding-top:16px;border-top:1px solid var(--p-line);font-size:12px;color:var(--p-muted)}.portal-footer>div{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-left:16px}.portal-footer-right{align-items:center;gap:18px}.portal-footer a+a{margin-left:18px}
html[lang="ka"] .catalog-intro h2{font-size:26px}html[lang="ka"] .page-heading h1{font-size:22px}
/* One viewport breakpoint controls portal columns on every platform. */
@media(max-width:899px){
  .page{max-width:620px;padding:20px 20px 18px}.page-heading{display:none}
  .page-shell{flex-direction:column;border:0;border-radius:0;background:transparent;overflow:visible}
  .login-card,.main-column{flex:0 0 auto;width:100%;border:1px solid var(--p-line);border-radius:12px;padding:24px}
  .main-column{margin-top:18px;background:var(--p-panel)}.catalog-intro{display:none}.section-kicker{margin-bottom:16px}
  .login-heading p{margin-bottom:22px}.module-card{padding:14px 0}.catalog-note{margin-top:16px}
}
@media(max-width:540px){
  .page{padding:var(--kg-page-top) var(--kg-page-x) var(--kg-page-bottom)}.login-card,.main-column{padding:var(--kg-card-pad-y) var(--kg-card-pad-x)}.login-heading h2{font-size:24px}
  .portal-footer{align-items:flex-start;font-size:11px}.portal-footer>div{display:block;text-align:right}.portal-footer a{display:block}.portal-footer a+a{margin:6px 0 0}
}
@media(max-width:359px){.page{padding:var(--kg-page-top) var(--kg-page-x) var(--kg-page-bottom)}.login-card,.main-column{padding:var(--kg-card-pad-y) var(--kg-card-pad-x)}.request-access{flex-wrap:wrap}.request-access .link-btn{margin:8px 0 0;width:100%;text-align:left}}
/* Android landscape header rail: physical orientation, not keyboard-resized viewport.
   Never changes login positioning/order; header can scroll internally on short screens. */
html.k-android-landscape body{padding-left:var(--p-rail)}
html.k-android-landscape .k-access-topbar{position:fixed;left:0;top:0;bottom:0;width:var(--p-rail);min-height:0;padding:20px 10px;flex-direction:column;justify-content:flex-start;border-bottom:0;border-right:1px solid var(--p-line);overflow-y:auto;z-index:10}
html.k-android-landscape .k-access-brand{flex:0 0 auto;flex-direction:column;max-width:100%}
html.k-android-landscape .k-access-brand .brand-logo{width:56px;height:56px;flex-basis:56px;margin:0 0 10px}
html.k-android-landscape .k-access-brand-text{text-align:center}
html.k-android-landscape .k-access-brand .brand-name{font-size:11px;letter-spacing:.025em}
html.k-android-landscape .k-access-brand .brand-subtitle{display:none}
html.k-android-landscape .k-access-topnav{flex-direction:column;flex:0 0 auto;margin:32px 0 0;width:100%}
html.k-android-landscape .k-access-topnav>*+*{margin:14px 0 0}
html.k-android-landscape .k-access-support{display:flex;justify-content:center;min-height:40px}
html.k-android-landscape .k-access-support .k-access-nav-icon{display:block}
html.k-android-landscape .k-access-support span{display:none}
html.k-android-landscape .k-access-control{min-height:44px;min-width:44px}
html.k-android-landscape .page{padding-top:20px}
@media(min-width:900px) and (max-height:800px){
  .page{padding-top:20px}.login-card,.main-column{padding:24px}.catalog-intro h2{font-size:25px}
  .lead{margin-bottom:20px}.module-card{padding:14px 0}.login-heading p{margin-bottom:20px}
}
@media(max-height:500px){html.k-android-landscape .k-access-topbar{padding-top:14px}html.k-android-landscape .k-access-topnav{margin-top:20px}html.k-android-landscape .k-access-topnav>*+*{margin-top:8px}}

/* Compact-height portal presentation on shared density tier B.
   Windows browser chrome and large Android landscape tablets commonly leave
   760–900 CSS px of page height. Keep the approved two-column shell intact,
   but tighten every vertical contributor together so the first view does not
   become scroll-dependent. This is deliberately height-driven, not UA- or
   pointer-driven, and never changes login order or document-flow behavior. */
@media (min-width:900px) and (max-height:900px){
  .page-heading{gap:20px;margin-bottom:6px}.page-heading h1{font-size:20px}.page-heading p{font-size:12px}
  .login-title-row .ui-icon{width:24px;height:24px;flex-basis:24px;margin-right:9px}
  .login-heading h2{font-size:23px}.login-heading p{font-size:13px;margin:6px 0 16px}.login-card[data-stage="credentials"] .login-heading p{font-size:23px;margin:0 0 16px}
  .field label{font-size:13px;margin-bottom:4px}.field-label-row{margin-bottom:4px}
  .field input{padding:7px 11px;font-size:var(--kg-control-font)}.password-toggle{top:1px;height:36px}
  .checks{margin:0 0 12px}.check{font-size:13px}.device-options-toggle{min-height:33px;margin-top:3px;font-size:12px}
  .device-options{padding:8px}.device-options .check+.check{margin-top:5px}
  .btn-login,.btn{padding:8px 14px;font-size:var(--kg-control-font)}
  .mfa-links{margin-top:10px}.request-access{margin-top:13px;padding-top:11px;font-size:12px}
  .msg{font-size:12px;margin-top:8px}
  .section-kicker{font-size:10px;margin-bottom:9px}.catalog-intro h2{font-size:24px;margin-bottom:4px}.lead{font-size:13px;margin-bottom:16px}
  .module-card{padding:11px 0}.module-card>.ui-icon{width:24px;height:24px;flex-basis:24px;margin-right:13px}
  .module-copy b{font-size:14px;margin-bottom:1px}.module-copy p{font-size:12px}.module-number{font-size:11px}
  .catalog-note{font-size:11px;margin-top:12px}.portal-footer{margin-top:12px;padding-top:10px;font-size:11px}
}

/* A short Android landscape viewport may be wider than 899px. Use the same
   compact authority while preserving the left vertical header rail. */
@media (min-width:900px) and (orientation:landscape) and (max-height:900px){
  .page{padding-left:20px;padding-right:20px}
  html.k-android-landscape .k-access-topbar{padding:14px 8px}
  html.k-android-landscape .k-access-topnav{margin-top:22px}
}
/* Legacy: no CSS Grid, flex-gap, backdrop-filter, or sticky login dependency. */
html.k-legacy-android .passkey-row{display:none!important}
html.k-legacy-android .field input{touch-action:auto !important;-webkit-user-select:text;user-select:text;pointer-events:auto;font-size:16px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

