:root{--brand:#214e77;--brandDeep:#15324e;--sky:#edf3f9;--ink:#1c2a39;--line:#e3eaf0;--muted:#738397}*{box-sizing:border-box}body{background:#f5f7fa;color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;font-size:14px}a{text-decoration:none}h1,h2{letter-spacing:-.035em}h1{font-size:clamp(1.45rem,2vw,1.9rem);font-weight:700}.btn-primary{background:var(--brand);border-color:var(--brand)}.btn-primary:hover{background:var(--brandDeep);border-color:var(--brandDeep)}.btn-outline-primary{color:var(--brand);border-color:var(--brand)}.btn-outline-primary:hover{background:var(--brand);border-color:var(--brand)}.brand-mark{width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,#2f6b9a,#14314c);display:grid;place-items:center;color:white;font-size:29px;font-weight:800;box-shadow:0 9px 26px #1d517d2e}.brand-mark.small{width:37px;height:37px;border-radius:11px;font-size:20px;box-shadow:none}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:#648cb2;text-transform:uppercase;margin-bottom:9px}.login-shell{min-height:100vh;display:flex;gap:8vw;align-items:center;justify-content:center;padding:6vw}.login-panel{max-width:470px}.login-panel h1{font-size:clamp(30px,3.8vw,52px);line-height:1.1}.login-card{width:min(440px,100%);border-radius:20px;border:1px solid var(--line)}.app-shell{min-height:100vh;display:flex}.sidebar{width:245px;min-width:245px;background:#173b5c;color:#edf5ff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;box-shadow:3px 0 18px #16345214}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:27px 21px 28px}.sidebar .nav-link{color:#d2dfed;border-radius:10px;padding:11px 14px;font-weight:500;transition:background .16s}.sidebar .nav-link.active,.sidebar .nav-link:hover{color:#fff;background:#ffffff1b}.sidebar-label{font-size:10px;letter-spacing:.11em;color:#8faec8;font-weight:700;margin:8px 12px}.sidebar-footer{margin-top:auto;border-top:1px solid #ffffff1b;padding:22px 23px;font-size:11px;letter-spacing:.08em}.main-content{min-width:0;flex:1}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.topbar-title{font-weight:700;font-size:15px}.content-body{max-width:1600px;margin:auto;padding:35px 34px 80px}.page-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:29px}.page-head p{margin-bottom:0}.metric-card{padding:23px 25px;border:1px solid var(--line);border-radius:15px;background:#fff;min-height:147px;box-shadow:0 2px 14px #1b355508}.metric-label{font-size:13px;font-weight:600;color:#65758b}.metric-value{font-size:37px;font-weight:750;letter-spacing:-.045em;margin:6px 0}.metric-foot{font-size:12px;color:#9aa8b9}.panel{border:1px solid var(--line);border-radius:15px;box-shadow:0 3px 14px #223a5508}.panel .card-body{padding:24px}.table{--bs-table-bg:transparent;font-size:13px}.table>thead th{font-size:11px;letter-spacing:.045em;text-transform:uppercase;color:#718399;background:#f7f9fb;white-space:nowrap;padding:14px 11px}.table>tbody td{padding:12px 11px;vertical-align:middle}.table-responsive{overflow-x:auto}.table td{max-width:340px;overflow-wrap:anywhere}.source-json{border:1px solid var(--line);padding:16px;border-radius:9px;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7fafc;max-height:380px;overflow-y:auto;font-size:12px}.form-control,.form-select{border-color:#dce5ed;padding:10px 12px}.form-control:focus,.form-select:focus{border-color:#5f8fb9;box-shadow:0 0 0 3px #aec8df55}.badge{font-weight:600}@media(max-width:1000px){.sidebar{width:210px;min-width:210px}.content-body{padding:25px 20px}.topbar{padding:0 20px}}@media(max-width:767px){.login-shell{flex-direction:column;gap:20px;align-items:stretch;padding:30px 18px}.sidebar{position:fixed;z-index:80;transform:translateX(-105%);transition:transform .2s;width:245px}.sidebar.open{transform:translateX(0)}.page-head{flex-direction:column}.topbar-title{font-size:12px}.content-body{padding:23px 13px}.metric-card{min-height:120px}}

/* v3: self-hosted responsive authentication screen. */
html{min-width:320px}body{margin:0}
.login-shell{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:30px 22px;background:radial-gradient(ellipse at 12% 15%,#e2edf8 0%,transparent 42%),#f1f5fa}
.login-layout{width:min(1120px,100%);min-height:665px;display:grid;grid-template-columns:1.07fr 1fr;border-radius:26px;overflow:hidden;background:#fff;box-shadow:0 32px 75px rgba(30,61,95,.15),0 3px 12px rgba(26,55,80,.04)}
.login-brand-panel{display:flex;flex-direction:column;justify-content:space-between;position:relative;isolation:isolate;overflow:hidden;color:#fff;padding:43px 49px 42px;background:linear-gradient(142deg,#183f61 0%,#13334e 51%,#0a253c 100%)}
.login-brand-panel:before{content:"";position:absolute;width:560px;height:560px;border:1px solid rgba(167,207,235,.17);border-radius:50%;top:32%;left:46%;box-shadow:0 0 0 77px rgba(119,174,222,.035),0 0 0 155px rgba(150,195,222,.032);z-index:-1}
.login-brand-panel:after{content:"";position:absolute;bottom:-160px;left:-170px;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,#2e739c79,transparent 68%);z-index:-1}
.login-brand-heading{display:flex;align-items:center;gap:15px}
.login-brand-title{font-size:18px;line-height:1.25;font-weight:750;letter-spacing:-.025em}
.login-brand-subtitle{margin-top:3px;color:#a8c7df;font-size:9px;letter-spacing:.11em;font-weight:650}
.login-brand-panel .brand-mark{width:46px;height:46px;flex:0 0 46px;border-radius:13px;background:linear-gradient(145deg,#3e91be,#2c668c);box-shadow:0 6px 22px rgba(8,27,45,.34);font-size:25px}
.login-brand-content{margin:55px 0 47px;position:relative}
.login-pill{display:inline-flex;align-items:center;gap:10px;color:#bddef2;background:#ffffff14;border:1px solid #a2cce127;border-radius:100px;padding:9px 13px;font-size:10px;font-weight:760;letter-spacing:.12em}
.login-pill-dot{width:7px;height:7px;background:#5bdca9;border-radius:50%;box-shadow:0 0 0 4px #5bdca922}
.login-brand-content h1{font-size:clamp(32px,3.5vw,47px);line-height:1.15;letter-spacing:-.045em;font-weight:740;margin:25px 0 16px;color:#fff}
.login-brand-content h1 span{color:#8bd2f0}
.login-brand-content>p{max-width:410px;line-height:1.8;color:#c4d7e6;font-size:14px;margin:0}
.brand-features{display:grid;gap:16px;margin-top:40px;color:#dae8f1;font-size:13px}
.brand-features>div{display:flex;align-items:center;gap:12px}
.feature-icon{display:grid;place-items:center;width:22px;height:22px;background:#72bfd221;color:#95e3e7;font-size:12px;flex-shrink:0;border-radius:7px}
.login-brand-bottom{display:flex;align-items:center;gap:10px;color:#b2c8d7;font-size:11px;border-top:1px solid #dbeafa21;padding-top:22px}
.safe-dot{height:8px;width:8px;border-radius:50%;background:#76cca9}
.login-form-panel{display:flex;flex-direction:column;justify-content:center;position:relative;padding:58px clamp(28px,4.4vw,68px) 46px;min-width:0}
.form-panel-badge{color:#3a6f99;background:#eaf4fc;border-radius:7px;padding:7px 10px;font-size:10px;font-weight:800;letter-spacing:.095em;display:inline-flex;margin-bottom:21px}
.form-panel-top h2{font-size:clamp(24px,2.3vw,31px);line-height:1.22;font-weight:740;letter-spacing:-.045em;color:#172b3e;margin:0 0 12px}
.form-panel-top p{font-size:13px;color:#718296;line-height:1.7;margin-bottom:32px}
.login-form .form-label{font-size:12px;color:#31485f;margin-bottom:9px}
.login-form .form-control{height:49px;font-size:14px;background:#fbfdff;border:1px solid #dce5ee;border-radius:9px;padding:11px 15px}
.login-form .form-control::placeholder{color:#aab6c5}
.login-form .form-control:focus{background:#fff;border-color:#6da8d2;box-shadow:0 0 0 4px #b7d9f233}
.login-form .form-control-lg{min-height:49px}
.password-field{position:relative}
.password-field .form-control{padding-right:78px}
.password-toggle{border:0;background:transparent;color:#3e7197;position:absolute;right:13px;top:50%;transform:translateY(-50%);padding:7px;min-width:51px;font-size:12px;font-weight:700}
.password-toggle:hover{color:#163950}
.login-submit{border:0;background:linear-gradient(100deg,#276793,#1a4e76);border-radius:9px;font-size:13px;font-weight:720;letter-spacing:.01em;padding:14px 20px;min-height:50px;box-shadow:0 5px 18px #194b7626}
.login-submit:hover{background:linear-gradient(100deg,#185783,#123f61)}
.login-submit span{margin-left:11px;font-size:18px;vertical-align:-1px}
.login-help{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:36px;padding-top:24px;border-top:1px solid #e8edf3;color:#65788d;font-size:12px;line-height:1.6}
.login-help strong{color:#263f55;font-size:12px}
.login-form-footer{margin-top:31px;color:#98a6b5;font-size:11px;display:flex;align-items:center;gap:10px}
.lock-symbol{color:#86a3b7;font-size:10px}
@media(min-width:1440px){.login-shell{padding:40px}}
@media(max-width:900px){.login-layout{grid-template-columns:1fr 1fr;min-height:600px}.login-brand-panel{padding:32px 30px}.login-form-panel{padding:37px 30px}.login-brand-content h1{font-size:32px}.brand-features{margin-top:30px}}
@media(max-width:680px){.login-shell{padding:13px;background:#f3f6fa;align-items:flex-start}.login-layout{display:flex;flex-direction:column;border-radius:15px;min-height:auto;box-shadow:0 15px 35px #1b425321}.login-brand-panel{padding:24px 24px 26px;min-height:205px}.login-brand-heading{gap:12px}.login-brand-content{margin:22px 0 0}.login-brand-content h1{font-size:27px;margin:14px 0 7px}.login-brand-content>p{font-size:12px;line-height:1.5}.login-pill{font-size:9px;padding:6px 9px}.brand-features,.login-brand-bottom{display:none}.login-form-panel{padding:30px 23px 27px}.form-panel-top h2{font-size:24px}.form-panel-top p{margin-bottom:22px}.form-panel-badge{margin-bottom:15px}.login-help{margin-top:25px}.login-form-footer{margin-top:23px}}
@media(max-width:380px){.login-brand-title{font-size:15px}.login-brand-subtitle{font-size:8px}.login-form-panel{padding:27px 19px}.login-help{flex-wrap:wrap}}
