/* ===== 智审通 · AI招标文件合规检测平台 ===== */
:root{
  --blue:#1453a3; --blue-d:#0b3d91; --blue-bg:#eef4fc;
  --ink:#1c2b3a; --ink-2:#55677c; --line:#dde6f0;
  --high:#d4380d; --high-bg:#fff1f0;
  --mid:#d48806; --mid-bg:#fff7e6;
  --notice:#1453a3; --notice-bg:#eef4fc;
  --typo:#6c5ce7; --typo-bg:#f3f0ff;
  --ok:#2f9e44;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"PingFang SC","Microsoft YaHei","Source Han Sans SC",system-ui,sans-serif;color:var(--ink);background:#f4f7fb;font-size:15px;line-height:1.65}
.wrap{max-width:1200px;margin:0 auto;padding:0 20px}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px}

/* 顶栏 */
.topbar{background:linear-gradient(120deg,var(--blue-d),var(--blue));color:#fff;position:sticky;top:0;z-index:50;box-shadow:0 2px 10px rgba(11,61,145,.25)}
.topbar-in{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 20px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
.brand-logo{width:44px;height:44px;border-radius:10px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:17px;letter-spacing:1px}
.brand-txt strong{display:block;font-size:16px;letter-spacing:.5px}
.brand-txt span{font-size:12px;opacity:.8}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav-btn{background:transparent;border:none;color:#dce8f9;padding:8px 14px;border-radius:8px;font-size:14px;transition:.2s}
.nav-btn:hover{background:rgba(255,255,255,.14);color:#fff}
.nav-btn.active{background:#fff;color:var(--blue-d);font-weight:600}

/* 面板 */
.panel{display:none;padding:26px 0 40px}
.panel.active{display:block}

.hero{text-align:center;padding:34px 16px 26px}
.hero h1{font-size:30px;color:var(--blue-d);letter-spacing:1px}
.hero p{margin-top:12px;color:var(--ink-2);font-size:15px}
.hero-tags{margin-top:16px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.hero-tags span{background:#fff;border:1px solid var(--line);color:var(--blue);padding:4px 12px;border-radius:999px;font-size:12.5px}

/* 卡片 */
.card{background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:20px;box-shadow:0 2px 8px rgba(20,83,163,.05)}
.card-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid var(--line)}
.card-h b{font-size:16px;color:var(--blue-d)}
.card-h-note{font-size:12.5px;color:var(--ink-2)}
.card-h-btns{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.card-b{padding:20px}

/* 表单 */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 18px}
.field{display:flex;flex-direction:column;gap:5px}
.field.span2{grid-column:span 2}
.field label{font-size:13px;color:var(--ink-2)}
.field label i{color:var(--high);font-style:normal}
.field input,.field select,.field textarea{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fbfdff;outline:none;transition:.2s;width:100%}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(20,83,163,.12)}
.field textarea{resize:vertical}
.search{padding:8px 12px;border:1px solid var(--line);border-radius:8px;width:280px;max-width:100%}

.dtype-row{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.dtype input{display:none}
.dtype span{display:block;padding:12px 22px;border:2px solid var(--line);border-radius:12px;text-align:center;font-size:15px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:.2s;line-height:1.4}
.dtype small{font-weight:400;font-size:12px;color:#93a5b8}
.dtype input:checked+span{border-color:var(--blue);background:var(--blue-bg);color:var(--blue-d)}
.engine-row{display:flex;gap:8px}

/* 按钮 */
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 18px;border-radius:9px;font-size:14px;transition:.2s}
.btn:hover{border-color:var(--blue);color:var(--blue)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.btn.primary:hover{background:var(--blue-d)}
.btn.primary:disabled{background:#a9c2e4;border-color:#a9c2e4;cursor:not-allowed}
.btn.ghost{background:#f6f9fd}
.btn.sm{padding:6px 12px;font-size:13px;border-radius:7px}
.btn.lg{padding:12px 30px;font-size:16px;border-radius:10px}
.btn.danger{color:var(--high)}
.btn.danger:hover{border-color:var(--high);color:var(--high)}
.actions{margin-top:16px;display:flex;gap:12px;flex-wrap:wrap}

/* 上传 */
.dropzone{border:2px dashed #b9cde8;border-radius:14px;background:#f8fbff;padding:38px 20px;text-align:center;cursor:pointer;transition:.2s}
.dropzone:hover,.dropzone.drag{border-color:var(--blue);background:var(--blue-bg)}
.dz-icon{font-size:40px;color:var(--blue);line-height:1}
.dz-sub{font-size:12.5px;color:var(--ink-2)}
.file-info{margin-top:10px;font-size:13.5px;color:var(--ok);min-height:20px}
.paste-box{margin-top:12px}
.paste-box summary{cursor:pointer;color:var(--blue);font-size:13.5px}
.paste-box textarea{width:100%;margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:8px}

/* 结果 */
.score-row{display:flex;gap:28px;align-items:flex-start;flex-wrap:wrap;padding:6px 0 16px}
.gauge{position:relative;width:140px;height:140px;flex:none}
.gauge-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.gauge-num b{font-size:34px;color:var(--blue-d)}
.gauge-num span{font-size:12px;color:var(--ink-2)}
.score-stats{display:flex;gap:12px;flex-wrap:wrap;align-self:center}
.stat{min-width:92px;padding:12px 16px;border-radius:12px;text-align:center;border:1px solid}
.stat b{display:block;font-size:26px}
.stat span{font-size:12.5px;color:var(--ink-2)}
.stat.sev-high{background:var(--high-bg);border-color:#ffccc7;color:var(--high)}
.stat.sev-medium{background:var(--mid-bg);border-color:#ffe7ba;color:var(--mid)}
.stat.sev-notice{background:var(--notice-bg);border-color:#cfe1f7;color:var(--notice)}
.stat.sev-typo{background:var(--typo-bg);border-color:#ddd5ff;color:var(--typo)}
.risk-cols{flex:1;min-width:300px;display:grid;gap:10px}
.risk-box{border:1px solid var(--line);border-radius:12px;padding:12px 16px;font-size:13.5px}
.risk-box b{display:block;margin-bottom:6px}
.risk-box.owner{border-left:4px solid var(--mid)}
.risk-box.agency{border-left:4px solid var(--high)}
.risk-box ul{padding-left:18px;color:var(--ink-2)}
.risk-box li{margin:3px 0}

.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:13px;color:var(--ink-2)}
.chip.active{background:var(--blue);border-color:var(--blue);color:#fff}
.chip.sev-high.active{background:var(--high);border-color:var(--high)}
.chip.sev-medium.active{background:var(--mid);border-color:var(--mid)}
.chip.sev-notice.active{background:var(--notice);border-color:var(--notice)}
.chip.sev-typo.active{background:var(--typo);border-color:var(--typo)}

.result-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:980px){.result-cols{grid-template-columns:1fr}}
.pane-title{font-size:13px;color:var(--ink-2);margin-bottom:8px}
.doc-viewer{border:1px solid var(--line);border-radius:10px;background:#fcfdff;padding:16px;height:560px;overflow:auto;white-space:pre-wrap;font-family:"Songti SC","SimSun",serif;font-size:13.5px;line-height:1.8}
.doc-viewer mark{border-radius:3px;padding:0 2px;cursor:pointer;border-bottom:2px solid transparent}
.doc-viewer mark.sev-high{background:#ffd6cf;border-color:var(--high)}
.doc-viewer mark.sev-medium{background:#ffe9b8;border-color:var(--mid)}
.doc-viewer mark.sev-notice{background:#cfe3fb;border-color:var(--notice)}
.doc-viewer mark.sev-typo{background:#e0d9ff;border-color:var(--typo)}
.doc-viewer mark.current{outline:2px solid var(--blue-d)}

.issue{border:1px solid var(--line);border-left-width:5px;border-radius:10px;padding:12px 14px;margin-bottom:12px;background:#fff}
.issue.sev-high{border-left-color:var(--high)}
.issue.sev-medium{border-left-color:var(--mid)}
.issue.sev-notice{border-left-color:var(--notice)}
.issue.sev-typo{border-left-color:var(--typo)}
.issue-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge{font-size:11.5px;padding:2px 9px;border-radius:999px;font-weight:600}
.badge.sev-high{background:var(--high-bg);color:var(--high)}
.badge.sev-medium{background:var(--mid-bg);color:var(--mid)}
.badge.sev-notice{background:var(--notice-bg);color:var(--notice)}
.badge.sev-typo{background:var(--typo-bg);color:var(--typo)}
.badge.cat{background:#f0f3f8;color:var(--ink-2)}
.issue-top b{font-size:14.5px}
.issue blockquote{margin:8px 0;padding:8px 12px;background:#f7f9fc;border-left:3px solid #c9d8ec;border-radius:6px;font-size:13px;color:#42556b;cursor:pointer}
.issue blockquote:hover{background:var(--blue-bg)}
.issue p{font-size:13.5px;margin:5px 0}
.issue .lbl{font-weight:600;color:var(--blue-d)}
.issue .refs{font-size:12.5px;color:var(--ink-2);background:#f7f9fc;border-radius:6px;padding:7px 10px;margin:6px 0}
.issue .refs a{color:var(--blue);text-decoration:none;margin-left:6px}
.issue .refs a:hover{text-decoration:underline}
.issue .dual{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.issue .dual div{font-size:12.5px;padding:7px 10px;border-radius:6px;background:#fafbfe;border:1px dashed var(--line)}
.issue .dual b{color:var(--ink);display:block;font-size:12px}
@media(max-width:640px){.issue .dual{grid-template-columns:1fr}}

/* 法规库 */
.law-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.law-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fff;transition:.2s}
.law-card:hover{box-shadow:0 4px 14px rgba(20,83,163,.1);border-color:#b9cde8}
.law-card h4{color:var(--blue-d);font-size:15px}
.law-card .no{font-size:12.5px;color:var(--mid);margin:2px 0}
.law-card p{font-size:13px;color:var(--ink-2);margin:6px 0}
.law-card a{font-size:13px;color:var(--blue);text-decoration:none}
.law-card a:hover{text-decoration:underline}
.law-card .sys{font-size:11.5px;background:var(--blue-bg);color:var(--blue);padding:2px 8px;border-radius:999px;margin-left:6px}

/* 函件 */
.ref-issue-row{display:flex;gap:10px;margin-top:14px;align-items:center;flex-wrap:wrap}
.ref-issue-row select{flex:1;min-width:240px;padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.letter-preview{background:#fff;border:1px solid var(--line);border-radius:10px;padding:40px 48px;font-family:"Songti SC","SimSun",serif;font-size:15px;line-height:2}
.letter-preview h2{text-align:center;font-size:20px;margin-bottom:24px}
.letter-preview p{margin:8px 0;text-indent:2em}
.letter-preview .noindent{text-indent:0}
.letter-preview .right{text-align:right;text-indent:0;margin-top:20px}
@media(max-width:640px){.letter-preview{padding:20px}}

/* 表格 */
.table{width:100%;border-collapse:collapse;font-size:13.5px}
.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}
.table th{background:#f6f9fd;color:var(--ink-2);font-weight:600}
.table .empty{text-align:center;color:#9fb0c2;padding:30px}
.table .btn{margin-right:6px}

/* API */
.api-note{background:var(--blue-bg);border:1px solid #cfe1f7;border-radius:10px;padding:12px 16px;font-size:13.5px;color:#33506e;margin-bottom:16px}
.api-list{margin-top:18px;display:grid;gap:10px}
.api-item{border:1px solid var(--line);border-radius:10px;padding:12px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.api-item b{color:var(--blue-d)}
.api-item .url{font-size:12.5px;color:var(--ink-2);word-break:break-all}
.api-item .tag{font-size:11.5px;background:#f0f3f8;border-radius:999px;padding:2px 8px;color:var(--ink-2)}
.api-item .btns{margin-left:auto;display:flex;gap:6px}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(12,30,55,.5);display:flex;align-items:center;justify-content:center;z-index:99}
.modal-box{background:#fff;border-radius:16px;padding:34px 40px;width:min(440px,92vw);text-align:center}
.spinner{width:44px;height:44px;border:4px solid #d6e4f7;border-top-color:var(--blue);border-radius:50%;margin:0 auto 16px;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.steps{list-style:none;text-align:left;margin-top:16px;font-size:14px}
.steps li{padding:6px 0;color:#9fb0c2;transition:.3s}
.steps li::before{content:"○";margin-right:8px}
.steps li.doing{color:var(--blue);font-weight:600}
.steps li.doing::before{content:"◐"}
.steps li.done{color:var(--ok)}
.steps li.done::before{content:"●"}

/* toast */
.toast{position:fixed;top:76px;left:50%;transform:translateX(-50%);background:#233a55;color:#fff;padding:10px 22px;border-radius:10px;z-index:120;font-size:14px;box-shadow:0 6px 20px rgba(0,0,0,.25);max-width:88vw}

.footer{border-top:1px solid var(--line);padding:18px 0 26px;margin-top:10px;color:#8ea1b5;font-size:12.5px;text-align:center}

@media(max-width:720px){
  .grid{grid-template-columns:1fr}
  .field.span2{grid-column:span 1}
  .hero h1{font-size:23px}
  .topbar-in{justify-content:center}
}
