*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Arial,"Microsoft YaHei",sans-serif;background:linear-gradient(135deg,#071724,#0b1020 55%,#10162a);color:#e8edf7;line-height:1.6}.side{position:fixed;left:0;top:0;bottom:0;width:280px;background:#07101f;border-right:1px solid #11405b;padding:20px 16px;overflow:auto;box-shadow:10px 0 30px #0004}.brand{display:flex;gap:12px;align-items:center;margin:0 0 24px;padding:0 0 18px;border-bottom:1px solid #183650}.logo{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,#25d0e6,#2a72f0);display:grid;place-items:center;font-weight:900}.brand b{font-size:25px;letter-spacing:.5px}.brand small{display:block;color:#9fb4d7;margin-top:-4px}.side nav a{display:flex;align-items:center;gap:12px;color:#d8e8fb;text-decoration:none;padding:12px 14px;border-radius:14px;margin:6px 0;font-weight:700}.side nav a i{width:22px;text-align:center;color:#38c7e8}.side nav a:hover,.side nav a.active{background:linear-gradient(90deg,#0d3349,#172954);color:#fff;box-shadow:inset 3px 0 0 #28cde9}.main{margin-left:280px;min-height:100vh;padding:20px 24px}.top{position:sticky;top:0;z-index:5;display:flex;gap:14px;align-items:center;margin:-20px -24px 22px;padding:18px 24px;background:rgba(6,12,28,.92);backdrop-filter:blur(8px);border-bottom:1px solid #123a57}.top .iconBtn{display:none}.top b{font-size:18px}.top span{display:block;color:#8fa3ce;font-size:13px}.auth{min-height:100vh;display:grid;place-items:center;padding:22px}.authbox{width:min(500px,100%);background:#111a31;border:1px solid #1f4868;border-radius:24px;padding:32px;box-shadow:0 20px 70px #0008}.authbox h1{margin-top:0}.panel,.card{background:rgba(17,26,49,.94);border:1px solid #18506f;border-radius:22px;padding:24px;box-shadow:0 10px 35px #0004}.panel{margin-bottom:20px}.panel h2{margin:0 0 18px;font-size:24px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.card span{color:#9db0d2}.card b{display:block;font-size:34px;margin-top:8px}.quick,.gridCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.quick a,.gridCards a,.btn,.biglink{background:#172548;color:#fff;text-decoration:none;border:1px solid #315477;border-radius:15px;padding:13px 16px;display:inline-flex;align-items:center;gap:9px;font-weight:800}.quick a:hover,.gridCards a:hover,.btn:hover,.biglink:hover{background:#203766}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.full{grid-column:1/-1}label{display:flex;flex-direction:column;gap:8px;color:#c8d7ee;font-weight:700}input,select,textarea{width:100%;background:#091225;color:#fff;border:1px solid #27506f;border-radius:14px;padding:13px 14px;font:inherit;outline:none}input:focus,select:focus,textarea:focus{border-color:#28cde9;box-shadow:0 0 0 3px rgba(40,205,233,.13)}textarea{min-height:130px;resize:vertical}button{background:linear-gradient(135deg,#25d0e6,#2a72f0);color:white;border:0;border-radius:14px;padding:12px 16px;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px}button:hover{filter:brightness(1.1)}.danger{background:linear-gradient(135deg,#ff5b6a,#d73535)}.alert{border-color:#864444;background:#2a1720;color:#ffd7d7}.muted{color:#9fb0d0}.search{display:flex;gap:12px}.search input{flex:1}.split{display:flex;align-items:center;justify-content:space-between;gap:14px}.output{min-height:320px;white-space:pre-wrap;font-family:Consolas,Monaco,monospace;line-height:1.7}.copybar{display:flex;justify-content:flex-end;margin:0 0 10px}.btnCopy,.miniCopy{background:linear-gradient(135deg,#2bd1e4,#2677ef);padding:9px 13px;border-radius:12px;min-height:36px}.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:18px}.kv div,.detailGrid div{background:#0a1428;border:1px solid #244766;border-radius:16px;padding:15px;min-width:0}.kv div{display:flex;flex-direction:column;gap:7px;color:#adc0df;font-weight:800}.kv b{display:block;color:#fff;font-size:16px;word-break:break-word}.tableWrap{overflow:auto}table{width:100%;border-collapse:separate;border-spacing:0 8px}th,td{padding:12px 14px;text-align:left}th{color:#a9bde0;border-bottom:1px solid #263e5f}tbody tr{background:#0a1428}tbody td:first-child{border-radius:12px 0 0 12px}tbody td:last-child{border-radius:0 12px 12px 0}.badge{padding:5px 10px;background:#21335f;border-radius:999px}.detailGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.detailGrid small{display:block;color:#91a9ce;font-weight:900;margin-bottom:8px}.detailGrid code{display:block;white-space:pre-wrap;word-break:break-word;margin:8px 0 12px;color:#fff;font-size:15px;line-height:1.65}.inline{display:inline-flex;margin-left:8px}.embedCard iframe{width:100%;height:620px;border:1px solid #344675;border-radius:16px;margin-top:14px;background:white}.toast{position:fixed;right:22px;bottom:22px;background:linear-gradient(135deg,#25d0e6,#2a72f0);color:white;padding:13px 18px;border-radius:14px;z-index:9999;box-shadow:0 12px 35px #0009;font-weight:900}.toast.err{background:linear-gradient(135deg,#ff6a6a,#d84242)}@media(max-width:920px){.side{transform:translateX(-100%);transition:.25s;z-index:20}.open .side{transform:translateX(0)}.main{margin-left:0;padding:14px}.top{margin:-14px -14px 18px;padding:14px}.top .iconBtn{display:inline-flex}.cards,.formgrid{grid-template-columns:1fr}.split{align-items:flex-start;flex-direction:column}.search{flex-direction:column}.detailGrid{grid-template-columns:1fr}}

/* v3.3 appeal AI generator improvements */
.hint{color:#9fb4c8;line-height:1.7;margin:8px 0 22px;font-size:14px}.subpanel{border:1px solid rgba(45,212,255,.22);background:rgba(5,18,36,.55);border-radius:18px;padding:18px;margin:8px 0 6px}.subpanel h3{margin:0 0 14px;font-size:17px;color:#e8f6ff}.formgrid.compact{gap:14px}.appeal-form textarea{min-height:88px;line-height:1.65}.output{line-height:1.75!important;font-size:14px!important;white-space:pre-wrap!important}.copybar{display:flex;gap:10px;align-items:center;margin:12px 0}.btnCopy{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:14px;padding:12px 18px;background:linear-gradient(135deg,#27d3e8,#2563eb);color:#fff;font-weight:800;cursor:pointer;box-shadow:0 10px 26px rgba(37,99,235,.22)}.btnCopy:hover{filter:brightness(1.08);transform:translateY(-1px)}

/* v3.4 dynamic appeal sections */
.appeal-dynamic.is-hidden{display:none!important}.hint.small{font-size:13px;margin:0 0 14px;color:#93a9c9}.appeal-form .subpanel{animation:fadeIn .18s ease-out}@keyframes fadeIn{from{opacity:.55;transform:translateY(4px)}to{opacity:1;transform:none}}

/* v3.5 client-to-appeal workflow and appeal record center */
.notice{background:rgba(39,211,232,.10);border:1px solid rgba(39,211,232,.35);border-radius:14px;padding:12px 14px;margin:10px 0 18px;color:#dff9ff;font-weight:800}.quick.actions{margin:18px 0 22px}.quick.actions a{justify-content:center}.timeline{display:grid;gap:12px}.timelineItem{background:#0a1428;border:1px solid #244766;border-radius:16px;padding:16px;display:grid;gap:10px}.timelineItem b{font-size:16px}.timelineItem span{color:#9fb0d0}.timelineItem .btn{width:max-content}.badge i{margin-right:6px}.tableWrap a{color:#bfefff;font-weight:800;text-decoration:none}.tableWrap a:hover{text-decoration:underline}.cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.formgrid .notice{grid-column:1/-1}


.riskkv{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.riskkv div{min-height:86px;padding:14px 16px}
.riskkv div b{line-height:1.45;white-space:pre-wrap;word-break:break-word}
.ai-case{border-color:#2a75b8;background:rgba(16,38,72,.74)}
.output{min-height:420px;font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.65;white-space:pre-wrap}
.notice{margin-top:14px;padding:12px 14px;border-radius:14px;background:rgba(37,208,230,.10);border:1px solid rgba(37,208,230,.35);color:#d9f7ff}
@media(max-width:900px){.riskkv{grid-template-columns:1fr}}

/* v4.1 platform risk knowledge base + material assistant */
.kbtag{ text-decoration:none; cursor:pointer; }
.kbtag.active{background:linear-gradient(135deg,#25d0e6,#2a72f0); color:#fff; border-color:#42d9ff;}
.kbGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:18px 0;}
.kbGrid>div{background:#0a1428;border:1px solid #244766;border-radius:18px;padding:18px;min-width:0;}
.kbGrid h3{margin:0 0 12px;color:#eaf7ff;font-size:17px;display:flex;align-items:center;gap:8px;}
.kbGrid h3:before{content:"\f058";font-family:"Font Awesome 6 Free";font-weight:900;color:#25d0e6;font-size:14px;}
.kbGrid ul{margin:0;padding-left:20px;color:#dceaff;line-height:1.8;}
.kbGrid li{margin:6px 0;}
.materialCheck{margin-top:10px;}
.checkline{display:flex!important;flex-direction:row!important;align-items:center!important;gap:10px;background:#091225;border:1px solid #27506f;border-radius:14px;padding:11px 12px;margin:8px 0;color:#e8f4ff;cursor:pointer;}
.checkline input{width:auto;accent-color:#25d0e6;transform:scale(1.15);}
.checkline span{font-weight:800;}
.missingList{color:#ffd2d2!important;}
.missingList li{margin:7px 0;}
.okText{color:#9dffce;font-weight:900;}
.scoreBox{margin-top:14px;border:1px solid #2b7ca3;background:rgba(37,208,230,.08);border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:4px;}
.scoreBox b{font-size:34px;color:#55e5ff;line-height:1;}
.scoreBox span{color:#cfeaff;font-weight:900;}
.scoreBox em{font-style:normal;color:#a9bad5;}

/* v4.2 backend password management + realtime FX */
.fxResult{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:16px 0 18px;}
.fxResult>div{background:#0a1428;border:1px solid #244766;border-radius:18px;padding:18px;min-height:110px;display:flex;flex-direction:column;justify-content:center;gap:8px;}
.fxResult span{color:#9fb4d7;font-weight:900;font-size:13px;}
.fxResult b{font-size:20px;color:#ffffff;line-height:1.45;word-break:break-word;}
.fxForm button{align-self:end;min-height:52px;}
.passwordForm input{font-family:inherit;}
.passwordForm button{min-height:52px;}
.side nav a[href*="settings"] i,.side nav a[href*="fx"] i{color:#55e5ff;}

.app-footer{
text-align:center;
padding:16px;
font-size:12px;
color:#9aa4b2;
border-top:1px solid rgba(255,255,255,.08);
margin-top:20px;
}


/* ===== ETO v4.4 Enterprise Branding ===== */
:root{
  --eto-navy:#06101f;
  --eto-blue:#0f3d91;
  --eto-cyan:#25d0e6;
  --eto-gold:#f6c343;
}
.brand-logo{
  overflow:hidden;
  background:transparent !important;
  border:1px solid rgba(246,195,67,.25);
  box-shadow:0 10px 26px rgba(0,0,0,.35);
}
.brand-logo img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:3px;
  display:block;
}
.brand b{
  font-size:22px;
  line-height:1.08;
}
.brand small{
  color:#b7c8e8;
  letter-spacing:.2px;
}
.brandAuth{
  background:
    radial-gradient(900px 480px at 20% 10%, rgba(37,208,230,.18), transparent 60%),
    radial-gradient(780px 420px at 80% 15%, rgba(246,195,67,.12), transparent 58%),
    linear-gradient(135deg,#050b16,#071724 55%,#0a1022);
}
.brandAuthBox{
  text-align:center;
  border-color:rgba(37,208,230,.28);
  background:linear-gradient(180deg,rgba(17,26,49,.96),rgba(8,15,31,.96));
}
.login-logo-wrap{
  width:104px;
  height:104px;
  margin:0 auto 16px;
  border-radius:28px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(246,195,67,.22);
  box-shadow:0 18px 48px rgba(0,0,0,.45);
}
.login-logo-img{
  width:92px;
  height:92px;
  object-fit:contain;
}
.brandAuthBox h1{
  margin:0;
  font-size:30px;
  letter-spacing:.5px;
}
.login-subtitle{
  margin:6px 0 0;
  color:#cdd9ef;
  font-weight:800;
}
.login-welcome{
  margin:12px auto 20px;
  display:inline-flex;
  padding:8px 13px;
  border-radius:999px;
  color:#07101f;
  background:linear-gradient(135deg,var(--eto-cyan),var(--eto-gold));
  font-size:12px;
  font-weight:900;
  letter-spacing:.35px;
}
.login-copyright{
  margin-top:22px;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.08);
  color:#93a8cf;
  font-size:12px;
  line-height:1.8;
}
.brandPreview{
  display:flex;
  align-items:center;
  gap:16px;
  padding:16px;
  border:1px solid #27506f;
  border-radius:18px;
  background:rgba(9,18,37,.72);
}
.brandPreview img{
  width:76px;
  height:76px;
  object-fit:contain;
  border-radius:18px;
  border:1px solid rgba(246,195,67,.22);
  background:rgba(255,255,255,.04);
}
.brandPreview b{
  display:block;
  font-size:24px;
  line-height:1.1;
}
.brandPreview span{
  display:block;
  color:#cbd8ef;
  font-weight:800;
}
.brandPreview small{
  display:block;
  color:#8fa3ce;
  margin-top:4px;
}
.app-footer{
  text-align:center;
  padding:16px;
  font-size:12px;
  color:#9aa4b2;
  border-top:1px solid rgba(255,255,255,.08);
  margin-top:20px;
}
