:root {
  --bg:#f4f8fd;
  --bg-soft:#eef6ff;
  --ink:#26304d;
  --muted:#68728f;
  --stroke:#d9e4f3;
  --navy:#464fa1;
  --navy2:#5a63b9;
  --primary:#ed1c24;
  --primary2:#c8141b;
  --accent:#fdb831;
  --cyan:#49c3f1;
  --blue:#61a2d8;
  --lavender:#eef0ff;
  --red:#d94350;
  --green:#16836b;
  --white:#fff;
  --shadow:0 14px 36px rgba(70,79,161,.12);
  font-family:Inter,Segoe UI,-apple-system,BlinkMacSystemFont,Arial,sans-serif;
  color:var(--ink)
}
*{box-sizing:border-box}
body{margin:0;background:linear-gradient(180deg,#f8fbff 0%,#eef5ff 100%);font-size:14px}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
input,textarea,select{outline:0}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(97,162,216,.38);outline-offset:2px}
a{color:inherit}.hidden{display:none!important}
.loading{height:100vh;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted)}
.spinner{width:20px;height:20px;border:3px solid #cde4fb;border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(400px,.9fr);background:#fff}
.login-art{background:
 radial-gradient(circle at 15% 18%,rgba(253,184,49,.28) 0,transparent 16%),
 radial-gradient(circle at 82% 24%,rgba(73,195,241,.30) 0,transparent 26%),
 linear-gradient(150deg,#464fa1 0%,#61a2d8 48%,#49c3f1 100%);
 position:relative;display:flex;justify-content:center;flex-direction:column;padding:8%;color:#fff;overflow:hidden}
.login-art:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.12),transparent 40%)}
.login-art:after{content:"";position:absolute;width:540px;height:540px;border:2px solid rgba(255,255,255,.20);border-radius:50%;bottom:-250px;left:-170px;box-shadow:0 0 0 70px rgba(255,255,255,.06),0 0 0 150px rgba(255,255,255,.035)}
.login-logo{width:min(100%,450px);position:relative;z-index:1;filter:drop-shadow(0 14px 34px rgba(34,39,94,.18));margin-bottom:26px}
.login-art h1{font-size:clamp(35px,4vw,56px);max-width:560px;line-height:1.06;letter-spacing:-1.8px;margin:0 0 18px;z-index:1}
.login-art p{font-size:17px;max-width:500px;color:#f2f7ff;line-height:1.7;z-index:1;margin:0}
.login-art .foot{position:absolute;bottom:34px;left:8%;color:rgba(255,255,255,.85);font-size:12px;z-index:1}
.login-panel{display:grid;place-items:center;padding:48px;background:linear-gradient(180deg,#ffffff 0%,#f7faff 100%)}
.login-box{width:100%;max-width:390px}
.eyebrow{display:flex;align-items:center;gap:9px;text-transform:uppercase;letter-spacing:2px;font-weight:800;color:var(--primary);font-size:11px}
.eyebrow i{width:20px;height:3px;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:3px}
.login-box h2{font-size:31px;letter-spacing:-.8px;margin:18px 0 8px}
.subtle{color:var(--muted);line-height:1.6}.login-box .subtle{margin-bottom:34px}
.field{display:flex;flex-direction:column;gap:8px;margin:15px 0}
.field label{font-weight:650;font-size:13px;color:#39415d}
.field input,.field textarea,.field select,.search-input{width:100%;border:1px solid #d9e5f2;background:#fff;padding:12px 14px;border-radius:12px;color:var(--ink);box-shadow:0 2px 0 rgba(255,255,255,.9) inset}
.field input:focus,.field textarea:focus,.field select:focus,.search-input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(97,162,216,.14)}
.field textarea{min-height:85px;resize:vertical}.field small{color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:11px;font-weight:700;border:1px solid transparent;padding:11px 16px;transition:.15s;white-space:nowrap}
.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,#ff5648 100%);color:#fff;box-shadow:0 10px 22px rgba(237,28,36,.18)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(237,28,36,.22)}
.btn-secondary{background:#fff;border-color:var(--stroke);color:var(--ink)}.btn-secondary:hover{background:#f8fbff;border-color:#c6d5ea}
.btn-danger{color:var(--red);background:#fff3f3;border-color:#ffdede}
.btn-sm{padding:7px 11px;font-size:12px}.btn-block{width:100%}.login-box .btn{margin-top:16px;padding:14px}
.error-line{min-height:20px;color:var(--red);font-size:13px;margin-top:10px}.login-info{color:#8893ad;font-size:12px;line-height:1.6;margin-top:36px}

.shell{display:grid;grid-template-columns:290px minmax(0,1fr);min-height:100vh}
.sidebar{height:100vh;position:sticky;top:0;background:linear-gradient(180deg,#464fa1 0%,#3d4590 100%);display:flex;flex-direction:column;color:#d6dbf3;padding:26px 14px 16px;overflow:auto;border-right:1px solid rgba(255,255,255,.1)}
.logo-row{display:flex;gap:12px;align-items:center;padding:0 12px 24px;border-bottom:1px solid rgba(255,255,255,.15);margin-bottom:18px}
.sidebar-logo{width:140px;max-width:100%;height:auto;filter:drop-shadow(0 8px 20px rgba(26,35,92,.22))}
.logo-row strong{font-size:16px;color:#fff;letter-spacing:.2px}.logo-row small{display:block;letter-spacing:1.5px;text-transform:uppercase;font-size:9px;margin-top:4px;color:#f8d471}
.side-label{margin:16px 12px 7px;text-transform:uppercase;letter-spacing:1.4px;color:#c4c9ea;font-size:10px;font-weight:800}
.nav-btn{width:100%;text-align:left;display:flex;align-items:center;gap:11px;border:0;background:transparent;color:#eef2ff;border-radius:11px;padding:11px 13px;font-weight:580;margin:2px 0}
.nav-btn:hover{background:rgba(255,255,255,.10);color:#fff}
.nav-btn.active{background:rgba(255,255,255,.16);color:#fff;box-shadow:inset 4px 0 var(--accent)}
.nav-btn .symbol{width:20px;text-align:center;font-size:15px}.nav-btn .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-spacer{flex:1}.sidebar-bottom{border-top:1px solid rgba(255,255,255,.15);padding:16px 4px 0}
.side-user{display:flex;gap:10px;align-items:center;padding:7px 8px}.avatar{width:35px;height:35px;background:linear-gradient(135deg,var(--accent),#ffe084);display:grid;place-items:center;color:#704900;border-radius:11px;font-weight:900}
.side-user .name{font-size:12px;color:white;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}.side-user small{font-size:11px;color:#d8dcf5}
.side-actions{display:flex;gap:7px;padding:7px}.side-actions button{border:0;background:rgba(255,255,255,.10);color:#f0f3ff;border-radius:9px;padding:8px 9px;font-size:11px;flex:1}.side-actions button:hover{background:rgba(255,255,255,.18)}

.main{min-width:0;padding:0 38px 40px}
.topbar{height:81px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--stroke);gap:15px}
.topbar h2{font-size:19px;margin:0;font-weight:760;letter-spacing:-.4px}.topbar .meta{font-size:12px;color:var(--muted)}
.content{padding-top:30px}
.welcome{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:25px}.welcome h1{font-size:28px;letter-spacing:-.8px;margin:0 0 8px}.welcome p{margin:0;color:var(--muted)}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:33px}
.stat{background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);border:1px solid var(--stroke);padding:22px 23px;border-radius:16px;box-shadow:var(--shadow)}
.stat small{font-size:12px;color:var(--muted)}.stat strong{display:block;margin:10px 0 3px;font-size:31px}.stat .hint{color:#8d94a9;font-size:11px}
.section-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.section-top h3{font-size:17px;margin:0}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:15px}
.report-card{border:1px solid var(--stroke);background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);padding:22px;text-align:left;border-radius:16px;min-height:155px;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:flex-start}
.report-card:hover{border-color:#b7cdee;transform:translateY(-1px)}
.report-card .symbol{font-size:25px;background:linear-gradient(135deg,rgba(73,195,241,.18),rgba(97,162,216,.14));color:var(--navy);padding:10px 13px;border-radius:11px;margin-bottom:18px}
.report-card strong{font-size:15px}.report-card span{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.5}.report-card .category{font-size:10px;text-transform:uppercase;letter-spacing:1px;margin:0 0 8px;color:var(--primary)}
.empty{background:#fff;border:1px dashed #cdd9ea;padding:45px;border-radius:16px;text-align:center;color:var(--muted);line-height:1.6}.empty strong{color:var(--ink)}.muted{color:var(--muted)}
.report-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:20px}.report-head h1{font-size:24px;margin:0 0 7px}.report-head p{margin:0;color:var(--muted)}.report-toolbar{display:flex;gap:8px;flex-wrap:wrap}
.embed-wrap{position:relative;background:#fff;border:1px solid var(--stroke);border-radius:16px;overflow:hidden;min-height:640px;box-shadow:var(--shadow)}
.embed-wrap iframe{height:calc(100vh - 205px);min-height:635px;max-height:1200px;width:100%;border:0;display:block}
.embed-note{color:#8a91a4;font-size:12px;padding:14px 2px;line-height:1.6}
.tag{font-size:11px;padding:5px 9px;border-radius:30px;background:#e8f8f2;color:#157758;white-space:nowrap}.tag.off{background:#f1f2f5;color:#747d93}
.table-wrap{width:100%;overflow-x:auto;background:#fff;border:1px solid var(--stroke);border-radius:16px;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;min-width:680px}th,td{text-align:left;padding:15px 16px;border-bottom:1px solid #edf0f5;vertical-align:middle}th{color:#778198;font-weight:700;font-size:11px;letter-spacing:.4px;text-transform:uppercase;background:#fafcff}td{font-size:13px}tr:last-child td{border-bottom:0}.table-title{font-weight:730;display:block}.table-desc{font-size:11px;color:var(--muted);margin-top:5px}.actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.search-input{max-width:275px}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.breadcrumbs{color:var(--muted);font-size:12px;margin-bottom:11px}.breadcrumbs a{color:var(--navy);text-decoration:none}
.modal-backdrop{position:fixed;inset:0;background:rgba(25,31,63,.64);z-index:10;display:grid;place-items:center;padding:22px;overflow:auto}.modal{width:min(100%,700px);max-height:calc(100vh - 44px);overflow-y:auto;background:#fff;box-shadow:0 30px 100px rgba(52,63,128,.28);border-radius:18px}.modal-top{padding:24px 28px 17px;display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--stroke)}.modal-top h2{font-size:20px;margin:0 0 7px}.modal-top p{margin:0;color:var(--muted);font-size:12px}.close-x{border:0;background:#f3f7fc;width:34px;height:34px;border-radius:10px;font-size:20px;line-height:1}.close-x:hover{background:#e7eef8}.modal-body{padding:22px 28px}.modal-footer{padding:18px 28px 28px;display:flex;justify-content:flex-end;gap:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-full{grid-column:1/-1}.permission-box{display:grid;gap:8px;border:1px solid var(--stroke);background:#f9fbfe;padding:14px;border-radius:12px;max-height:220px;overflow:auto}.permission-box label{display:flex;gap:8px;align-items:flex-start}.check-row{display:flex;align-items:center;gap:10px;font-weight:600}.help{font-size:12px;color:var(--muted);line-height:1.65;margin-top:12px}
.toast{position:fixed;right:20px;bottom:20px;background:var(--ink);color:#fff;padding:12px 14px;border-radius:12px;box-shadow:var(--shadow);z-index:99;max-width:320px}.toast.error{background:#b3222c}
@media (max-width:1100px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.main{padding:0 22px 30px}.stat-row{grid-template-columns:1fr}.login-screen{grid-template-columns:1fr}.login-art{min-height:340px;padding:44px 30px}.login-panel{padding:32px 22px}.login-art .foot{position:relative;left:auto;bottom:auto;margin-top:28px}}
@media (max-width:720px){.main{padding:0 16px 24px}.welcome,.report-head,.section-top,.topbar{flex-direction:column;align-items:flex-start}.form-grid{grid-template-columns:1fr}.sidebar-logo{width:120px}.login-logo{width:min(100%,320px)}}

.forgot-link{display:block;margin:16px auto 0;padding:8px 12px;border:0;background:transparent;color:var(--navy);font-weight:750;text-decoration:underline;text-underline-offset:3px}
.forgot-link:hover{color:var(--primary)}
.settings-panel{max-width:800px;background:#fff;border:1px solid var(--stroke);border-radius:16px;padding:26px;box-shadow:var(--shadow)}
.settings-panel .check-row{margin:5px 0 7px}
