:root{
    --oti-navy:#003866;
    --oti-navy-deep:#022b50;
    --oti-blue:#006ea7;
    --oti-cyan:#08a8c9;
    --oti-green:#18aa62;
    --oti-surface:#ffffff;
    --oti-soft:#f4f8fc;
    --oti-line:#dce7f2;
    --oti-text:#0f2742;
    --oti-muted:#66788f;
    --oti-danger:#c62828;
    --oti-warning:#a15c00;
    --oti-shadow:0 30px 80px rgba(4,38,71,.18);
}
*{box-sizing:border-box}
html,body{min-height:100%}
body.oti-login-page{
    margin:0;
    min-height:100vh;
    font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
    color:var(--oti-text);
    background:
        radial-gradient(circle at 10% 10%,rgba(7,166,198,.12),transparent 30%),
        radial-gradient(circle at 88% 14%,rgba(25,171,99,.11),transparent 26%),
        linear-gradient(135deg,#edf4fa 0%,#f7fafc 50%,#e9f2f8 100%);
    overflow-x:hidden;
}
body.oti-login-page::before{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    opacity:.4;
    background-image:
        linear-gradient(rgba(0,56,102,.035) 1px,transparent 1px),
        linear-gradient(90deg,rgba(0,56,102,.035) 1px,transparent 1px);
    background-size:34px 34px;
    mask-image:linear-gradient(to bottom,rgba(0,0,0,.45),transparent 88%);
}
.oti-login-layout{
    position:relative;
    z-index:1;
    min-height:100vh;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:42px;
}
.oti-login-shell{
    width:min(1180px,100%);
    min-height:650px;
    display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);
    overflow:hidden;
    border:1px solid rgba(255,255,255,.9);
    border-radius:32px;
    background:rgba(255,255,255,.94);
    box-shadow:var(--oti-shadow);
    backdrop-filter:blur(12px);
}
.oti-login-brand{
    position:relative;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    min-height:650px;
    padding:58px 58px 44px;
    color:#fff;
    overflow:hidden;
    background:linear-gradient(145deg,rgba(0,35,68,.98) 0%,rgba(0,72,120,.98) 58%,rgba(5,139,164,.97) 100%);
}
.oti-login-brand::before,.oti-login-brand::after{
    content:"";
    position:absolute;
    border-radius:50%;
    pointer-events:none;
}
.oti-login-brand::before{
    width:420px;
    height:420px;
    right:-190px;
    top:-150px;
    background:rgba(255,255,255,.09);
    box-shadow:0 0 0 52px rgba(255,255,255,.035);
}
.oti-login-brand::after{
    width:260px;
    height:260px;
    left:-110px;
    bottom:-100px;
    background:rgba(21,183,112,.18);
    box-shadow:0 0 0 38px rgba(7,166,198,.07);
}
.oti-brand-top,.oti-brand-content,.oti-brand-footer{position:relative;z-index:2}
.oti-brand-logo{width:270px;max-width:78%;height:auto;display:block}
.oti-brand-badge{
    display:inline-flex;
    align-items:center;
    gap:9px;
    margin-bottom:24px;
    padding:8px 13px;
    border:1px solid rgba(255,255,255,.2);
    border-radius:999px;
    background:rgba(255,255,255,.1);
    color:#eaf8ff;
    font-size:12px;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
}
.oti-brand-badge::before{
    content:"";
    width:9px;
    height:9px;
    border-radius:50%;
    background:#49dc91;
    box-shadow:0 0 0 5px rgba(73,220,145,.14);
}
.oti-brand-content h1{
    max-width:560px;
    margin:0;
    font-size:clamp(38px,4vw,58px);
    line-height:1.04;
    letter-spacing:-.035em;
    font-weight:850;
}
.oti-brand-content>p{
    max-width:530px;
    margin:22px 0 30px;
    color:rgba(255,255,255,.78);
    font-size:17px;
    line-height:1.65;
}
.oti-brand-features{display:grid;gap:14px;max-width:520px}
.oti-brand-feature{
    display:grid;
    grid-template-columns:42px 1fr;
    gap:13px;
    align-items:center;
    padding:13px 15px;
    border:1px solid rgba(255,255,255,.13);
    border-radius:16px;
    background:rgba(255,255,255,.075);
}
.oti-brand-feature-icon{
    width:42px;
    height:42px;
    display:grid;
    place-items:center;
    border-radius:13px;
    background:rgba(255,255,255,.12);
    color:#fff;
}
.oti-brand-feature-icon svg{width:21px;height:21px}
.oti-brand-feature strong{display:block;margin-bottom:2px;color:#fff;font-size:14px}
.oti-brand-feature span{color:rgba(255,255,255,.68);font-size:12.5px;line-height:1.4}
.oti-brand-footer{
    display:flex;
    justify-content:space-between;
    gap:20px;
    align-items:flex-end;
    color:rgba(255,255,255,.64);
    font-size:11px;
    line-height:1.5;
}
.oti-brand-footer strong{display:block;color:rgba(255,255,255,.92);font-size:12px}
.oti-login-form-panel{
    position:relative;
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:54px 62px 44px;
    background:linear-gradient(180deg,#fff 0%,#fbfdff 100%);
}
.oti-mobile-logo{display:none;width:245px;max-width:80%;margin:0 auto 28px}
.oti-login-form-wrap{width:100%;max-width:440px;margin:0 auto}
.oti-login-kicker{
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-bottom:14px;
    color:var(--oti-blue);
    font-size:12px;
    font-weight:850;
    letter-spacing:.1em;
    text-transform:uppercase;
}
.oti-login-kicker svg{width:17px;height:17px}
.oti-login-form-wrap h2{
    margin:0;
    color:var(--oti-navy-deep);
    font-size:36px;
    line-height:1.1;
    letter-spacing:-.025em;
}
.oti-login-subtitle{margin:12px 0 28px;color:var(--oti-muted);font-size:15px;line-height:1.55}
.oti-alert{
    display:grid;
    grid-template-columns:38px 1fr;
    gap:12px;
    align-items:start;
    margin-bottom:20px;
    padding:14px 15px;
    border-radius:14px;
    font-size:13px;
    line-height:1.45;
}
.oti-alert-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px}
.oti-alert-icon svg{width:19px;height:19px}
.oti-alert strong{display:block;margin-bottom:2px}
.oti-alert-error{color:#7f1d1d;border:1px solid #fecaca;background:#fff1f2}
.oti-alert-error .oti-alert-icon{background:#fee2e2;color:#c62828}
.oti-alert-warning{color:#7a4900;border:1px solid #fde3ac;background:#fff8e8}
.oti-alert-warning .oti-alert-icon{background:#fff0c7;color:#a15c00}
.oti-alert-success{color:#0d5e36;border:1px solid #b8ecd1;background:#edfbf4}
.oti-alert-success .oti-alert-icon{background:#d6f6e5;color:#138b51}
.oti-login-form{display:grid;gap:18px}
.oti-field{display:grid;gap:8px}
.oti-field-label{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    color:var(--oti-text);
    font-size:13px;
    font-weight:800;
}
.oti-field-hint{color:#8a9aab;font-size:11px;font-weight:650}
.oti-input-wrap{position:relative}
.oti-input-icon{
    position:absolute;
    left:15px;
    top:50%;
    width:20px;
    height:20px;
    transform:translateY(-50%);
    color:#6c8095;
    pointer-events:none;
}
.oti-input-wrap input{
    width:100%;
    height:52px;
    margin:0;
    padding:0 47px 0 46px;
    border:1px solid #ccd9e6;
    border-radius:14px;
    outline:none;
    background:#f8fbfe;
    color:#102a44;
    font:inherit;
    font-size:14px;
    transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.oti-input-wrap input::placeholder{color:#98a7b6}
.oti-input-wrap input:hover{border-color:#aebfd0;background:#fff}
.oti-input-wrap input:focus{border-color:#0b83bb;background:#fff;box-shadow:0 0 0 4px rgba(8,132,188,.12)}
.oti-password-toggle{
    position:absolute;
    right:8px;
    top:50%;
    width:38px;
    height:38px;
    display:grid;
    place-items:center;
    transform:translateY(-50%);
    border:0;
    border-radius:10px;
    background:transparent;
    color:#5f7489;
    cursor:pointer;
}
.oti-password-toggle:hover{background:#e9f2f8;color:#004d7c}
.oti-password-toggle svg{width:19px;height:19px}
.oti-caps-warning{display:none;align-items:center;gap:7px;margin-top:7px;color:#9b5b00;font-size:11px;font-weight:700}
.oti-caps-warning.is-visible{display:flex}
.oti-caps-warning svg{width:14px;height:14px}
.oti-captcha-card{padding:14px;border:1px solid #d8e5f0;border-radius:16px;background:linear-gradient(135deg,#f6faff,#eef7fc)}
.oti-captcha-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.oti-captcha-title{display:flex;align-items:center;gap:9px;color:var(--oti-navy);font-size:12px;font-weight:850}
.oti-captcha-title-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#e0f2fb;color:#056c9e}
.oti-captcha-title-icon svg{width:18px;height:18px}
.oti-captcha-refresh{
    display:inline-flex;
    align-items:center;
    gap:6px;
    border:0;
    background:transparent;
    color:#47718e;
    font-size:11px;
    font-weight:800;
    cursor:pointer;
    padding:7px 8px;
    border-radius:9px;
}
.oti-captcha-refresh:hover{background:#dcecf6;color:#004f7c}
.oti-captcha-refresh svg{width:14px;height:14px;transition:transform .25s ease}
.oti-captcha-refresh.is-loading svg{transform:rotate(180deg)}
.oti-captcha-grid{display:grid;grid-template-columns:minmax(118px,.78fr) minmax(0,1.22fr);gap:12px;align-items:center}
.oti-captcha-operation{
    min-height:52px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    border:1px solid #c8ddea;
    border-radius:14px;
    background:#fff;
    color:var(--oti-navy);
    font-size:15px;
}
.oti-captcha-operation strong{font-size:19px;letter-spacing:.03em}
.oti-captcha-grid .oti-input-wrap input{background:#fff}
.oti-submit{
    position:relative;
    width:100%;
    min-height:54px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    margin-top:2px;
    border:0;
    border-radius:15px;
    color:#fff;
    background:linear-gradient(135deg,#003e70,#066f9d);
    box-shadow:0 13px 28px rgba(0,66,110,.2);
    font:inherit;
    font-size:14px;
    font-weight:850;
    cursor:pointer;
    transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;
}
.oti-submit:hover{transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 16px 32px rgba(0,66,110,.25)}
.oti-submit:active{transform:translateY(0)}
.oti-submit:disabled{cursor:wait;opacity:.8;transform:none}
.oti-submit svg{width:19px;height:19px}
.oti-submit-spinner{display:none;width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:otiSpin .7s linear infinite}
.oti-submit.is-loading .oti-submit-spinner{display:block}
.oti-submit.is-loading .oti-submit-lock{display:none}
@keyframes otiSpin{to{transform:rotate(360deg)}}
.oti-security-note{
    display:grid;
    grid-template-columns:36px 1fr;
    gap:11px;
    align-items:center;
    margin-top:22px;
    padding:13px 14px;
    border:1px solid #e0e9f2;
    border-radius:14px;
    background:#fbfdff;
}
.oti-security-note-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;color:#147a52;background:#e8f8f0}
.oti-security-note-icon svg{width:18px;height:18px}
.oti-security-note strong{display:block;color:#25425e;font-size:12px}
.oti-security-note span{display:block;margin-top:2px;color:#7a8b9e;font-size:10.5px;line-height:1.4}
.oti-login-footer{margin-top:24px;color:#8a9aac;text-align:center;font-size:10.5px;line-height:1.5}
.oti-login-footer strong{color:#5e7389}
@media(max-width:980px){
    .oti-login-layout{padding:24px}
    .oti-login-shell{grid-template-columns:minmax(0,.9fr) minmax(390px,1.1fr)}
    .oti-login-brand{padding:44px 38px 36px}
    .oti-login-form-panel{padding:44px 40px 36px}
    .oti-brand-content h1{font-size:42px}
}
@media(max-width:820px){
    body.oti-login-page{background:linear-gradient(180deg,#eaf4fa 0%,#f8fbfd 100%)}
    .oti-login-layout{padding:22px;align-items:flex-start}
    .oti-login-shell{display:block;min-height:auto;max-width:560px;border-radius:26px}
    .oti-login-brand{display:none}
    .oti-login-form-panel{min-height:calc(100vh - 44px);padding:38px 34px 30px}
    .oti-mobile-logo{display:block}
    .oti-login-form-wrap h2{text-align:center;font-size:32px}
    .oti-login-kicker{display:flex;justify-content:center}
    .oti-login-subtitle{text-align:center}
}
@media(max-width:520px){
    .oti-login-layout{padding:0}
    .oti-login-shell{width:100%;max-width:none;min-height:100vh;border:0;border-radius:0;box-shadow:none}
    .oti-login-form-panel{min-height:100vh;padding:30px 20px 24px}
    .oti-mobile-logo{width:220px;margin-bottom:24px}
    .oti-login-form-wrap h2{font-size:29px}
    .oti-login-subtitle{margin-bottom:22px;font-size:14px}
    .oti-captcha-grid{grid-template-columns:1fr}
    .oti-captcha-operation{min-height:46px}
    .oti-field-label{font-size:12.5px}
}
@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
