
:root { --ui-accent:#2563eb; --ui-ink:#17243b; --ui-subtle:#64748b; --ui-border:#e1e8f2; --ui-bg:#f4f7fb; }
html { scroll-behavior:smooth; }
body { background:var(--ui-bg); color:var(--ui-ink); font-family:Inter, "Segoe UI", "Microsoft YaHei", sans-serif; line-height:1.55; }
.container { background:#fff; border:1px solid var(--ui-border); border-radius:18px; box-shadow:0 12px 40px rgba(20,45,90,.055); padding:24px 28px; margin:24px auto; max-width:calc(100% - 36px); }
h2 { font-size:clamp(1.45rem,2.2vw,1.9rem); font-weight:750; letter-spacing:-.03em; color:var(--ui-ink); margin:4px 0 7px; }
h6 { color:var(--ui-subtle); font-size:.94rem; font-weight:400; margin-bottom:18px; }
hr { border-color:var(--ui-border); opacity:1; margin:18px 0 24px; }
table { border-collapse:separate; border-spacing:0; width:100%; margin:12px 0 0; font-size:.88rem; }
table th, table td { border-color:var(--ui-border); padding:11px 10px; vertical-align:middle; }
table th { background:#f6f8fc; color:#43536d; font-weight:650; white-space:nowrap; }
table tbody tr:hover td { background-color:#fafcff; }
.form-control,.form-select { min-height:36px; border:1px solid #d9e2ee; border-radius:8px; background-color:#fff; font-size:.9rem; }
.form-control:focus,.form-select:focus { border-color:#6698f5; box-shadow:0 0 0 3px rgba(37,99,235,.12); }
.input-group-text { border-color:#d9e2ee; background:#f4f7fc; color:#59708d; border-radius:8px; }
.btn { border-radius:9px; font-weight:600; transition:transform .15s ease,box-shadow .15s ease; }
.btn:hover { transform:translateY(-1px); }
.btn-primary { background:#2563eb; border-color:#2563eb; }
.btn-primary:hover { background:#1e4fc5; border-color:#1e4fc5; }
.btn-secondary { background:#e9eff9; border-color:#e9eff9; color:#344563; }
.btn-secondary:hover { background:#dde6f6; border-color:#dde6f6; color:#20314f; }
.btn-danger { background:#fff1f2; border-color:#ffe4e6; color:#c0293a; }
.btn-danger:hover { background:#ffe4e6; border-color:#fecdd3; color:#a01e30; }
.result-info-div { margin-top:32px; }
.my-span { color:#8190a6; font-weight:400; }
.toast { border:1px solid var(--ui-border); border-radius:14px; box-shadow:0 18px 35px rgba(26,42,70,.16); overflow:hidden; min-width:280px; }
.toast-header { background:#f6f8fc; padding:12px 15px; }
.history-item { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 9px; border-top:1px solid #edf1f7; }
.history-item:hover { background:#f8faff; }
.history-load { flex:1; border:0; background:transparent; color:#344963; text-align:left; cursor:pointer; padding:8px; font-size:.85rem; overflow-wrap:anywhere; }
.history-load:hover { color:var(--ui-accent); }
.history-delete { background:transparent; border:0; border-radius:6px; padding:6px 9px; color:#a13f4c; cursor:pointer; font-size:.8rem; }
.history-delete:hover { background:#ffebed; }
.history-empty { color:var(--ui-subtle); margin:14px; font-size:.9rem; }
.float-button-home,.float-button-history { box-shadow:0 5px 20px rgba(29,55,91,.14); }
footer { color:#8894a8; font-size:.8rem; }
@media(max-width:768px) { .container { padding:18px 12px; margin:12px auto; max-width:calc(100% - 16px); border-radius:12px; } .container > table, .container > div:has(> table) { overflow-x:auto; } table { font-size:.82rem; } table th,table td { padding:8px 6px; } .d-flex.justify-content-between { flex-wrap:wrap; gap:12px; } }

/* 计算结果以加粗文字显示，包含运行时新增的行。 */
#object-table td[id^="max-score-"],
#object-table td[id^="min-score-"],
#topic-table td[id^="max-score-"],
#topic-table td[id^="min-score-"],
#topic-table td[id^="all-score-"],
#topic-table td[id^="actual-score-"],
#topic-table td[id^="actual-ratio-"],
#res-table td[id^="res-"],
.input-group-text[id^="length-"] {
    font-weight: 700;
}

/* 手动录入字段明确显示为输入框；包括脚本动态添加的字段。 */
input.form-control:not([readonly]):not(:disabled) {
    border: 1px solid #c4d2e6;
    border-radius: 7px;
    background-color: #fff;
    box-shadow: 0 1px 2px rgba(26, 42, 70, .04);
}
input.form-control:not([readonly]):not(:disabled):focus {
    border-color: var(--ui-accent);
    background-color: #fff;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .14);
    outline: none;
}
/* 仅自动计算、只读的字段显示为加粗纯文本。 */
input.form-control[readonly] {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    font-weight: 700;
    cursor: default;
}
input.form-control[readonly]:focus {
    border: 0;
    box-shadow: none;
    outline: none;
}
/* 成绩数量是计算后的文本，不再展示为附着在输入框上的方框。 */
.input-group-text[id^="length-"] {
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}


/* V1.1 modern UI: shared design tokens and consistent interaction patterns */
:root {
  --ui-accent:#2563eb;--ui-accent-dark:#1d4ed8;--ui-ink:#17243b;
  --ui-subtle:#69788e;--ui-border:#e4eaf2;--ui-bg:#f5f7fb;
  --ui-focus:0 0 0 3px rgba(37,99,235,.14);
}
*,*::before,*::after{box-sizing:border-box}
body{background:var(--ui-bg);color:var(--ui-ink);font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.6}
body>.container{width:calc(100% - 48px);max-width:1600px;margin:30px auto 36px;padding:26px 30px 34px;border:1px solid var(--ui-border);border-radius:18px;box-shadow:0 12px 35px rgba(33,56,94,.045)}
body>.container>h2{text-align:left;color:#17243b;font-size:clamp(23px,2.3vw,30px);font-weight:750;letter-spacing:-.035em;margin:12px 0 2px}
body>.container>h6{text-align:left;color:var(--ui-subtle);font-weight:400;font-size:13px;margin:0 0 18px}
body>.container>hr{margin:20px 0 24px}
.ui-topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:5px}
.ui-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:#2c3d55;font-size:13px;font-weight:720;letter-spacing:.015em}
.ui-brand:hover{color:var(--ui-accent)}
.ui-brand-icon{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#edf3ff;color:var(--ui-accent);font-size:17px}
.ui-topbar-note{font-size:12px;color:#8390a3}
body>.container .container{width:100%;max-width:none;margin:0 0 24px;padding:18px 18px;border-radius:12px;box-shadow:none;background:#f9fbff;border:1px solid #e9eef6}
body>.container .container .row{row-gap:15px}
body>.container .container .col{min-width:160px;text-align:left}
body>.container label{font-size:12px;color:#536278;margin-bottom:6px}
body>.container label b{font-weight:650}
body>.container .form-control,body>.container .form-select{font-family:inherit;min-height:38px;border:1px solid #cbd7e7;border-radius:8px;background:#fff;color:var(--ui-ink);font-size:13px;transition:border-color .15s,box-shadow .15s}
body>.container input.form-control:not([readonly]):not(:disabled){border-color:#cbd7e7;background:#fff;box-shadow:0 1px 2px rgba(26,42,70,.035)}
body>.container input.form-control:not([readonly]):not(:disabled):hover,body>.container .form-select:hover{border-color:#9db2d0}
body>.container input.form-control:not([readonly]):not(:disabled):focus,body>.container .form-select:focus{border-color:var(--ui-accent);box-shadow:var(--ui-focus)}
body>.container input.form-control[readonly]{background:transparent;border:0;box-shadow:none;font-weight:750;color:#173b78}
body>.container input::placeholder{color:#9aa7b9;font-weight:400}
body>.container table{font-size:13px;margin-top:12px;border-spacing:0;border-collapse:separate;border:1px solid var(--ui-border);border-radius:11px;overflow:hidden}
body>.container table th,body>.container table td{padding:10px 9px;border-color:#e9eef5;vertical-align:middle;text-align:center}
body>.container table thead th{background:#f2f6fc;color:#53647d;font-size:12px;font-weight:720;white-space:nowrap}
body>.container table tbody tr:nth-child(even) td{background:#fcfdff}
body>.container table tbody tr:hover td{background:#f3f7ff}
body>.container table tbody td[id^="max-score-"],body>.container table tbody td[id^="min-score-"],body>.container table tbody td[id^="all-score-"],body>.container table tbody td[id^="actual-score-"],body>.container table tbody td[id^="actual-ratio-"],body>.container #res-table td[id^="res-"]{font-weight:750;color:#203653;font-variant-numeric:tabular-nums}
body>.container .object-score,body>.container .topic-score{width:72px;text-align:center}
body>.container .object-people{width:100%;min-width:74px;text-align:center}
body>.container input.scores{min-width:190px}
body>.container .input-group-text[id^="length-"]{border:0;background:transparent;font-weight:750}
/* Toolbars: flexible layout instead of old absolute positioning */
body>.container .ui-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:20px!important}
body>.container .ui-actions .ui-row-tools{display:flex;align-items:center;gap:8px;position:static!important}
body>.container .ui-actions .ui-main-tools{display:flex;align-items:center;gap:10px;margin:0!important}
body>.container .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 15px;border:1px solid transparent;border-radius:9px;font-size:13px;font-weight:660;line-height:1.25;white-space:nowrap;box-shadow:none;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s,transform .16s}
body>.container .btn:hover{transform:translateY(-1px)}
body>.container .btn:focus-visible,.ui-brand:focus-visible,.float-button-home:focus-visible,.float-button-history:focus-visible{outline:0;box-shadow:var(--ui-focus)}
body>.container .btn-primary{background:#2563eb;border-color:#2563eb;color:white}
body>.container .btn-primary:hover{background:#1d4ed8;border-color:#1d4ed8;color:white}
body>.container .btn-secondary{background:#fff;border-color:#d5e0ed;color:#3d526e}
body>.container .btn-secondary:hover{background:#f4f7fc;border-color:#bacce2;color:#263d5c}
body>.container .btn-danger{background:#fff;border-color:#edd1d5;color:#c23d4f}
body>.container .btn-danger:hover{background:#fff1f2;border-color:#eab6be;color:#b42337}
body>.container .btn-icon{width:38px;min-width:38px;padding:0!important;font-size:17px}
body>.container .btn-icon i{font-size:17px;line-height:1}
body>.container .btn-sm{min-height:38px}
body>.container .btn.ms-2{margin-left:0!important}
body>.container .result-info-div{margin-top:32px;border-top:1px solid #edf1f6;padding-top:16px}
body>.container .result-info-div h3,body>.container .result-info-div h4{font-weight:720;color:#263a56}
.float-button-home,.float-button-history{position:fixed;top:auto;bottom:24px;right:24px;width:44px;height:44px;padding:0;border:1px solid #d8e3f1;border-radius:12px;background:#fff;color:#385372;display:grid;place-items:center;font-size:18px;box-shadow:0 7px 20px rgba(26,48,80,.12);z-index:1000;transition:background-color .15s,transform .15s,border-color .15s}
.float-button-home{right:80px}
.float-button-history:hover,.float-button-home:hover{background:#eff5ff;color:var(--ui-accent);border-color:#b9d0f5;transform:translateY(-2px)}
.toast{border:1px solid var(--ui-border);border-radius:13px;box-shadow:0 12px 32px rgba(30,48,80,.15)}
#myAlert{max-width:calc(100vw - 32px);height:auto;min-height:120px;border-radius:14px;box-shadow:0 18px 56px rgba(15,23,42,.2)}
#myAlert .alert-content{max-width:100%;border-radius:14px}
#alert-ok{border-radius:8px;background:#2563eb;padding:8px 20px}
footer{border-top:1px solid #e6edf5!important;background:transparent!important;box-shadow:none!important;color:#8b97a7!important;padding:20px 0 22px!important;font-size:12px}
footer p{margin:0}
@media (max-width:900px){body>.container{width:calc(100% - 24px);padding:20px 15px}body>.container table{display:block;overflow-x:auto;max-width:100%;white-space:nowrap}body>.container .container .col{min-width:145px}}
@media (max-width:560px){body>.container{width:calc(100% - 16px);margin:9px auto 18px;padding:17px 11px;border-radius:13px}body>.container .ui-actions{align-items:stretch}body>.container .ui-actions .ui-main-tools{width:100%;justify-content:flex-start}body>.container .ui-actions .ui-row-tools{width:100%}.ui-topbar-note{display:none}.float-button-home,.float-button-history{bottom:14px}.float-button-home{right:70px}.float-button-history{right:16px}body>.container .container{padding:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
