:root { --ink:#172b42; --muted:#637287; --blue:#165a91; --sky:#eaf4fa; --line:#d9e4ea; --paper:#fff; --sand:#f7f6f1; --gold:#d89a2b; --red:#b84d4d; }
* { box-sizing:border-box; } body { margin:0; background:var(--sand); color:var(--ink); font-family:"Noto Sans SC",system-ui,sans-serif; line-height:1.55; } .topbar { height:76px; padding:0 max(5vw,32px); display:flex; justify-content:space-between; align-items:center; background:#fff; border-bottom:1px solid var(--line); } .brand { display:flex; gap:11px; align-items:center; text-decoration:none; color:var(--ink); line-height:1.2; font-size:12px; letter-spacing:.04em; } .brand b { font-size:17px; letter-spacing:.03em; } .brand-mark { width:36px; height:36px; display:grid; place-items:center; color:white; background:var(--blue); font:bold 20px "Source Serif 4",serif; } .top-status { font-size:13px; color:#9a6a17; background:#fff7e7; padding:7px 12px; border-radius:999px; } .top-status.ready { color:#1f7256; background:#e8f5ef; }
main { max-width:1180px; margin:0 auto; padding:0 30px 64px; } .header-actions { display:flex; align-items:center; gap:9px; } .logout { border:1px solid var(--line); background:white; color:var(--muted); padding:7px 10px; font-size:12px; } .hero { min-height:300px; display:flex; justify-content:space-between; align-items:center; gap:40px; } .eyebrow { margin:0 0 9px; color:var(--blue); font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; } h1,h2,h3,h4,p { margin-top:0; } h1 { font:700 clamp(34px,5vw,58px)/1.17 "Source Serif 4","Noto Sans SC",serif; letter-spacing:-.04em; margin-bottom:19px; } h1 em { color:var(--blue); font-style:normal; } .hero-copy { max-width:620px; color:var(--muted); font-size:16px; } .hero-note { max-width:255px; padding:19px 0 19px 20px; border-left:2px solid var(--gold); } .hero-note span { color:var(--gold); font:700 30px "Source Serif 4",serif; } .hero-note p { margin:0; color:var(--muted); font-size:13px; } .hero-note b { color:var(--ink); font-weight:600; }
.steps { display:flex; align-items:center; gap:13px; padding:17px 22px; border:1px solid var(--line); color:#8b98a4; background:rgba(255,255,255,.65); font-size:13px; } .steps span.active { color:var(--blue); font-weight:700; } .steps i { flex:1; max-width:105px; height:1px; background:var(--line); }
.upload-panel,.card { background:var(--paper); border:1px solid var(--line); box-shadow:0 9px 28px rgba(32,57,75,.05); } .upload-panel { margin-top:22px; padding:30px; } .section-heading,.form-footer,.report-head,.card-title-row { display:flex; justify-content:space-between; gap:20px; align-items:start; } h2 { font:700 27px "Source Serif 4","Noto Sans SC",serif; margin-bottom:0; } .section-heading>p,.muted { color:var(--muted); font-size:13px; } .drop-grid { display:grid; grid-template-columns:1fr 1fr; gap:17px; margin:26px 0 18px; } .dropzone { min-height:200px; cursor:pointer; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; padding:27px; border:1px dashed #a9c0d0; background:#fbfdfe; transition:.2s; } .dropzone:hover { transform:translateY(-2px); border-color:var(--blue); background:var(--sky); } .dropzone.accent { border-color:#dacba5; background:#fffdf7; } .dropzone.extra-upload { grid-column:1 / -1; min-height:150px; background:#f8fbfe; } .dropzone input { display:none; } .file-icon { color:var(--blue); font-size:33px; line-height:1; } .dropzone strong { margin-top:13px; font-size:18px; } .dropzone small,.file-name { color:var(--muted); font-size:13px; margin-top:4px; } .file-name { color:var(--blue); margin-top:16px; word-break:break-word; } .analysis-options { margin-top:18px; padding:14px 16px; border:1px solid var(--line); border-radius:12px; background:#f8fbfe; } .analysis-options label { display:flex; align-items:center; gap:8px; color:var(--ink); font-weight:700; cursor:pointer; } .analysis-options input { width:16px; height:16px; accent-color:var(--blue); } .analysis-options small { display:block; margin:8px 0 0 24px; color:var(--muted); line-height:1.6; } .form-footer { align-items:center; } .privacy { color:var(--muted); font-size:12px; } button { font:inherit; cursor:pointer; } .primary { border:0; background:var(--blue); color:white; padding:13px 20px; font-weight:700; } .primary:hover { background:#104c7d; } .primary:disabled { opacity:.55; cursor:wait; } .primary span { margin-left:12px; } .secondary { border:1px solid #a8bac8; background:white; color:var(--blue); padding:9px 13px; font-size:13px; }
.loading,.error { margin:26px 0; padding:19px 22px; background:#fff; border:1px solid var(--line); display:flex; align-items:center; gap:16px; } .hidden { display:none!important; } .loading p { margin:2px 0 0; color:var(--muted); font-size:13px; } .spinner { width:24px; height:24px; border:3px solid #dce7ef; border-top-color:var(--blue); border-radius:50%; animation:spin .8s linear infinite; } @keyframes spin { to { transform:rotate(360deg); } } .error { color:#a53939; border-color:#efcccc; background:#fff7f7; }
.records-panel { margin-top:19px; }.records-summary { margin-top:16px; color:var(--muted); font-size:12px; }.records-list { display:grid; gap:11px; margin-top:11px; }.record-item { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:18px; padding:16px 17px; border:1px solid #e0e8ed; background:#fbfdfe; }.record-main h4 { margin:0 0 4px; font-size:15px; }.record-main>p { margin:0; color:var(--muted); font-size:12px; }.record-meta { display:flex; flex-wrap:wrap; gap:5px 13px; margin-top:9px; color:#708092; font-size:11px; }.record-files { display:flex; flex-wrap:wrap; gap:6px 12px; margin-top:9px; }.record-files a { color:var(--blue); font-size:12px; text-decoration:none; }.record-files a:hover { text-decoration:underline; }.record-actions { display:flex; align-items:center; gap:8px; }.record-status { display:inline-block; padding:3px 7px; color:#976318; background:#fff3dc; font-size:11px; }.record-status.completed { color:#147356; background:#e7f5ee; }.record-status.failed { color:#a53939; background:#fdeaea; }.records-empty { margin:0; padding:18px; color:var(--muted); text-align:center; border:1px dashed var(--line); font-size:13px; }.save-status { color:#147356!important; font-size:11px!important; white-space:nowrap; }
.report { margin-top:28px; } .report-head { padding:4px 0 19px; align-items:end; } .report-head h2 { font-size:33px; } .report-project { display:flex; align-items:baseline; gap:10px; margin:5px 0 7px; }.report-project span { flex:0 0 auto; color:var(--blue); font-size:11px; font-weight:700; letter-spacing:.12em; }.report-project b { font:700 23px "Source Serif 4","Noto Sans SC",serif; color:#31465b; }.report-actions { display:flex; gap:10px; align-items:center; } .mode-badge { font-size:12px; padding:6px 9px; border-radius:999px; } .mode-badge.demo { color:#976318; background:#fff3dc; } .mode-badge.ai { color:#147356; background:#e7f5ee; } .score-banner { display:grid; grid-template-columns:180px 1fr 290px; gap:25px; align-items:center; padding:25px 29px; background:var(--ink); color:white; } .score-banner span { display:block; color:#b5c8d9; font-size:12px; letter-spacing:.1em; } .score-banner strong { font:700 63px/1 "Source Serif 4",serif; color:#f0c56b; } .score-banner small { color:#b5c8d9; } .score-banner p { margin:0; font-size:17px; } .score-note { border-left:1px solid #4b6278; padding-left:22px; color:#ccd8e2; font-size:12px; }
.content-grid { display:grid; grid-template-columns:1.55fr 1fr; gap:19px; margin-top:19px; } .card { padding:25px; } .card-kicker { color:var(--blue); font-size:11px; letter-spacing:.13em; font-weight:700; text-transform:uppercase; margin-bottom:6px; } h3 { font:700 23px "Source Serif 4","Noto Sans SC",serif; margin-bottom:15px; } .summary-text { font-size:16px; color:#31465b; } .split-list { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:22px; } h4 { font-size:13px; margin-bottom:6px; } ul { margin:0; padding-left:18px; } li { margin:6px 0; font-size:13px; color:#526477; } .risk-list li::marker { color:var(--red); } .facts-card dl { margin:0; } .facts-card dl>div { padding:10px 0; border-bottom:1px solid #edf0f1; } dt { color:var(--muted); font-size:12px; } dd { margin:2px 0 0; font-size:14px; font-weight:600; word-break:break-word; }
.news-card { margin-top:19px; }.news-card>.summary-text { max-width:1020px; line-height:1.8; }.news-sources { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; margin-top:18px; }.news-source { padding:14px 15px; border:1px solid #e0e8ed; background:#fbfdfe; }.news-source>div { display:flex; flex-wrap:wrap; gap:5px 12px; margin-bottom:5px; }.news-source span { color:var(--muted); font-size:11px; }.news-source a { color:var(--blue); font-size:14px; font-weight:700; text-decoration:none; }.news-source a:hover { text-decoration:underline; }.news-source a b { font-weight:500; }.news-source p { margin:6px 0 0; color:var(--muted); font-size:12px; }.news-empty { grid-column:1/-1; margin:0; padding:15px; color:var(--muted); background:#f8fafb; border:1px dashed var(--line); font-size:13px; }
.table-card,.ledger-card { margin-top:19px; } .card-title-row { align-items:center; } .card-title-row span { color:var(--muted); font-size:12px; } .score-table { margin-top:15px; border-top:1px solid var(--line); } .score-row { display:flex; align-items:center; justify-content:space-between; gap:22px; padding:14px 0; border-bottom:1px solid #edf0f1; } .score-row>div { flex:1; } .score-row b { display:block; font-size:14px; } .score-row span { display:block; color:var(--muted); font-size:12px; margin-top:3px; } .score-row>strong { color:var(--blue); font:700 28px "Source Serif 4",serif; white-space:nowrap; } .score-row strong small { color:var(--muted); font:500 13px "Noto Sans SC",sans-serif; }.score-controls { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }.score-field { min-width:180px; }.score-field>span { margin:0 0 4px; font-weight:700; color:#637287; }.score-field input,.score-field select { width:100%; padding:8px 9px; border:1px solid #cfdbe4; background:#fff; color:var(--ink); font:13px "Noto Sans SC",sans-serif; }.score-field input:focus,.score-field select:focus,.source-options input:focus { outline:2px solid #9ac6e4; border-color:var(--blue); }.source-notes { margin-top:18px; padding:14px 16px; border:1px solid var(--line); background:#f8fbfe; }.source-notes>b { font-size:13px; }.source-options { display:flex; flex-wrap:wrap; gap:10px 17px; margin-top:9px; }.source-options label { display:flex; align-items:center; gap:6px; color:#43596d; font-size:13px; cursor:pointer; }.source-options input[type=checkbox] { width:16px; height:16px; accent-color:var(--blue); }.source-options .source-with-input { align-items:flex-start; flex-wrap:wrap; }.source-with-input>span { display:flex; align-items:center; gap:6px; }.source-with-input input[data-source-institution] { width:180px; padding:6px 8px; border:1px solid #cfdbe4; color:var(--ink); font:12px "Noto Sans SC",sans-serif; }.source-with-input input:disabled { background:#edf1f3; }.ledger-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:13px; margin-top:16px; }.ledger-grid label { display:block; }.ledger-grid label.wide { grid-column:span 3; }.ledger-grid label>span { display:block; margin-bottom:5px; font-size:12px; font-weight:700; color:var(--muted); }.ledger-grid input,.ledger-grid select,.ledger-grid textarea { box-sizing:border-box; width:100%; padding:9px 10px; color:var(--ink); border:1px solid #cfdbe4; background:#fff; font:13px "Noto Sans SC",sans-serif; }.ledger-grid textarea { resize:vertical; line-height:1.55; }.lower-grid { grid-template-columns:1.25fr 1fr; }.negotiation-list { padding:0; margin:0; list-style:none; }.negotiation-list li { display:flex; gap:10px; margin:0; padding:12px 0; border-top:1px solid #edf0f1; }.negotiation-list b { color:var(--ink); font-size:14px; }.negotiation-list p,.competition-list p { margin:3px 0 0; color:var(--muted); font-size:12px; }.priority { flex:0 0 auto; height:22px; padding:2px 6px; font-size:11px; font-weight:700; color:#a84444; background:#fdeaea; }.priority.中 { color:#9b711c; background:#fff3dc; }.priority.低 { color:#477364; background:#e8f4ee; }.competition-list>div { padding:11px 0; border-top:1px solid #edf0f1; }.competition-tag { display:inline-block; margin-right:6px; color:#875b14; background:#fff3dc; font-size:11px; padding:2px 5px; }.competition-list b { font-size:13px; }.competition-foot { margin:15px 0 0; font-size:12px; color:var(--muted); }.disclaimer { margin:18px 0 0; color:var(--muted); font-size:11px; text-align:center; } footer { padding:25px; color:#7a8996; text-align:center; font-size:12px; border-top:1px solid var(--line); }.site-footer a { color:inherit; text-decoration:none; }.site-footer a:hover { color:var(--blue); text-decoration:underline; }.login-site-footer { position:fixed; right:0; bottom:0; left:0; border-top:0; color:#a9bdcf; }
@media (min-width:1800px) {
  .records-panel { position:fixed; z-index:8; top:340px; left:24px; width:clamp(260px,calc((100vw - 1180px) / 2 - 52px),600px); max-height:calc(100vh - 365px); margin:0; padding:20px; overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
  .records-panel .card-title-row { display:block; }
  .records-panel .card-title-row h3 { margin-bottom:8px; }
  .records-panel #refreshRecordsButton { margin-top:12px; }
  .records-panel .records-summary { line-height:1.65; }
  .records-panel .record-item { grid-template-columns:1fr; gap:12px; padding:14px; }
  .records-panel .record-main h4 { font-size:14px; line-height:1.55; }
  .records-panel .record-main>p { word-break:break-word; }
  .records-panel .record-meta { display:grid; grid-template-columns:1fr; gap:4px; }
  .records-panel .record-files { display:grid; gap:6px; }
  .records-panel .record-files a { display:block; word-break:break-all; }
  .records-panel .record-actions { justify-content:stretch; }
  .records-panel .record-actions .secondary { width:100%; }
}
@media (max-width:760px) { .topbar { padding:0 18px; }.top-status { display:none; } main { padding:0 17px 42px; }.hero { min-height:0; padding:48px 0 36px; }.hero-note { display:none; }.drop-grid,.content-grid,.lower-grid,.score-banner,.ledger-grid,.news-sources { grid-template-columns:1fr; }.dropzone.extra-upload,.ledger-grid label.wide { grid-column:span 1; }.steps { overflow:hidden; gap:9px; padding:12px; }.steps span { white-space:nowrap; font-size:11px; }.steps i { min-width:11px; }.upload-panel,.card { padding:19px; }.section-heading { display:block; }.section-heading>p { margin-top:8px; }.form-footer { align-items:start; flex-direction:column; }.analysis-options small { margin-left:0; }.primary { width:100%; }.report-head { align-items:start; flex-direction:column; }.report-actions { width:100%; justify-content:flex-start; flex-wrap:wrap; }.record-item { grid-template-columns:1fr; }.record-actions { justify-content:flex-start; }.score-note { border-left:0; border-top:1px solid #4b6278; padding:12px 0 0; }.split-list { grid-template-columns:1fr; }.score-row { align-items:start; }.score-banner strong { font-size:54px; } }
@media print { .topbar,.hero,.steps,.upload-panel,.records-panel,.report-actions,footer { display:none!important; } body { background:#fff; } main { max-width:none; padding:0; }.report { margin:0; }.card,.upload-panel { box-shadow:none; }.score-banner { print-color-adjust:exact; -webkit-print-color-adjust:exact; } }
.admin-link { display:inline-block; text-decoration:none; }.admin-identity { color:var(--muted); font-size:12px; }.admin-main { max-width:1080px; padding-top:48px; }.admin-hero { max-width:720px; margin-bottom:26px; }.admin-hero h1 { margin-bottom:12px; font-size:46px; }.admin-hero>p:last-child { color:var(--muted); }.account-create-card,.account-list-card { margin-top:18px; }.account-create-form { display:grid; grid-template-columns:1fr 1fr 1.3fr .8fr auto; gap:12px; align-items:end; }.account-create-form label,.account-fields label,.account-reset label { display:block; }.account-create-form label>span,.account-fields label>span,.account-reset label>span { display:block; margin-bottom:5px; color:var(--muted); font-size:12px; font-weight:700; }.account-create-form input,.account-create-form select,.account-fields input,.account-fields select,.account-reset input { width:100%; padding:9px 10px; border:1px solid #cfdbe4; color:var(--ink); background:#fff; font:13px "Noto Sans SC",sans-serif; }.account-create-form input:focus,.account-create-form select:focus,.account-fields input:focus,.account-fields select:focus,.account-reset input:focus { outline:2px solid #9ac6e4; border-color:var(--blue); }.account-message { margin:14px 0 0; font-size:13px; }.success-text { color:#147356!important; }.error-text { color:#a53939!important; }.account-list { display:grid; gap:13px; margin-top:18px; }.account-item { padding:18px; border:1px solid #e0e8ed; background:#fbfdfe; }.account-heading { display:flex; justify-content:space-between; gap:15px; align-items:center; }.account-heading b { display:block; font-size:16px; }.account-heading div span { color:var(--muted); font-size:12px; }.account-fields { display:grid; grid-template-columns:1.3fr .8fr .7fr auto; gap:12px; align-items:end; margin-top:14px; }.account-toggle { display:flex!important; align-items:center; gap:8px; min-height:39px; }.account-toggle input { width:16px; height:16px; accent-color:var(--blue); }.account-toggle span { margin:0!important; }.account-reset { display:grid; grid-template-columns:minmax(240px,1fr) auto 1fr; gap:12px; align-items:end; margin-top:13px; padding-top:13px; border-top:1px solid #e5ebef; }.account-row-message { align-self:center; font-size:12px; }
.login-page { min-height:100vh; background:var(--ink); display:grid; place-items:center; padding:24px 24px 62px; }.login-shell { width:min(930px,100%); min-height:510px; display:grid; grid-template-columns:1.1fr .9fr; background:var(--paper); box-shadow:0 28px 80px rgba(0,0,0,.22); }.login-intro { padding:58px 54px; background:linear-gradient(145deg,#103a61,#1c6ca5); color:white; }.login-intro .brand-mark { display:grid; place-items:center; width:42px; height:42px; color:var(--blue); background:white; font:bold 23px "Source Serif 4",serif; }.login-intro .eyebrow { margin-top:38px; color:#b9d7ec; }.login-intro h1 { font-size:43px; }.login-intro h1 em { color:#f2c867; }.login-intro>p:last-child { max-width:330px; color:#d1e0ec; font-size:14px; }.login-card { padding:54px 52px; }.login-card h2 { margin-bottom:18px; }.auth-tabs { display:grid; grid-template-columns:1fr 1fr; gap:4px; padding:4px; background:#edf3f7; }.auth-tabs button { padding:8px 10px; border:0; color:#657587; background:transparent; font-size:12px; }.auth-tabs button.active { color:var(--blue); background:#fff; box-shadow:0 1px 5px rgba(23,43,66,.08); font-weight:700; }.login-card label { display:block; margin:15px 0; color:#53677c; font-size:13px; font-weight:600; }.login-card label small { display:block; margin-top:5px; color:#8492a0; font-size:11px; font-weight:400; }.login-card input { width:100%; margin-top:6px; padding:11px 12px; border:1px solid #cbd7e0; color:var(--ink); font:inherit; }.login-card input:focus { outline:2px solid #9ac6e4; border-color:var(--blue); }.login-card .primary { width:100%; margin-top:7px; }.login-error { margin:8px 0; color:#af3b3b; font-size:13px; }.login-success { margin:8px 0; color:#147356; font-size:13px; }.login-tip { margin-top:18px; color:var(--muted); font-size:12px; }@media (max-width:900px) { .account-create-form,.account-fields,.account-reset { grid-template-columns:1fr 1fr; }.account-reset .account-row-message { grid-column:1/-1; } }@media (max-width:760px) { .login-shell { grid-template-columns:1fr; }.login-intro { padding:35px 29px; }.login-intro .eyebrow { margin-top:22px; }.login-intro h1 { font-size:35px; }.login-card { padding:34px 29px; }.header-actions .top-status { display:none; }.admin-identity { display:none; }.account-create-form,.account-fields,.account-reset { grid-template-columns:1fr; }.account-create-form .primary { width:100%; }.account-reset .account-row-message { grid-column:auto; }.admin-hero h1 { font-size:38px; } }
