:root { --navy:#102342; --navy-2:#0a1a34; --gold:#d4a83f; --gold-soft:#f7e7b6; --teal:#14aa91; --teal-soft:#e4f8f3; --ink:#17263d; --muted:#69758b; --line:#dce3ec; --paper:#f5f8fb; --danger:#bd554f; --danger-soft:#fff0ee; --shadow:0 18px 48px rgba(16,35,66,.12); }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
html { color-scheme:light; }
body { margin:0; min-height:100vh; font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif; color:var(--ink); background:linear-gradient(145deg,#eef4f8,#fbfcfd 45%,#edf7f4); }
button,input,textarea,select { font:inherit; }
button { cursor:pointer; }
button:disabled { cursor:wait; opacity:.6; }
a { color:#087f70; }
.eyebrow { display:block; color:#7690aa; font-size:12px; font-weight:800; letter-spacing:.24em; }
.eyebrow.gold,.gold { color:var(--gold); }
.muted { color:var(--muted); }
.login-page { display:grid; place-items:center; padding:24px; background:radial-gradient(circle at 15% 15%,#16375e,#07162f 55%,#0a5b55); }
.login-shell { width:min(1040px,100%); min-height:620px; display:grid; grid-template-columns:1.05fr .95fr; border:1px solid rgba(255,255,255,.18); border-radius:30px; overflow:hidden; box-shadow:0 32px 90px rgba(0,0,0,.32); }
.brand-panel { padding:72px; color:white; background:linear-gradient(145deg,rgba(10,29,58,.94),rgba(8,88,82,.9)); display:flex; flex-direction:column; justify-content:center; }
.brand-panel h1 { margin:18px 0 12px; color:#ffe096; font-size:62px; line-height:1.08; letter-spacing:.04em; }
.brand-panel p { font-size:20px; color:#d8e6ef; }
.brand-badges { display:flex; flex-wrap:wrap; gap:8px; margin-top:44px; }.brand-badges span { border:1px solid rgba(255,255,255,.22); border-radius:999px; padding:7px 13px; color:#dbe9ee; }
.login-card { padding:70px 60px; background:rgba(255,255,255,.97); display:flex; flex-direction:column; justify-content:center; }.login-card h2 { font-size:32px; margin:10px 0 4px; }.screen-link { margin-top:28px; text-align:center; text-decoration:none; }
.stack-form { display:grid; gap:18px; }.stack-form label,fieldset { display:grid; gap:8px; color:#43526a; font-size:14px; font-weight:700; }.stack-form input,.stack-form textarea,.stack-form select,.inline-form input,.inline-form select { width:100%; border:1px solid #cbd5e1; border-radius:12px; background:#fff; padding:13px 14px; color:var(--ink); outline:none; }.stack-form input:focus,.stack-form textarea:focus,.stack-form select:focus,.inline-form input:focus { border-color:var(--teal); box-shadow:0 0 0 3px rgba(20,170,145,.12); }
fieldset { margin:0; border:1px solid var(--line); border-radius:16px; padding:16px; }legend { padding:0 7px; color:var(--ink); }
.primary-button,.ghost-button,.danger-button { border:0; border-radius:12px; min-height:44px; padding:10px 18px; font-weight:800; }.primary-button { color:#102342; background:linear-gradient(120deg,#f4c754,#ffe8a0); }.ghost-button { color:inherit; border:1px solid currentColor; background:transparent; }.danger-button { color:white; background:var(--danger); }
.form-error { min-height:1.2em; margin:0; color:var(--danger); }.form-success { color:#087f70; }.topbar { min-height:102px; padding:20px max(26px,calc((100vw - 1440px)/2)); display:flex; justify-content:space-between; align-items:center; color:white; background:linear-gradient(110deg,#0b2041,#08655d); box-shadow:var(--shadow); }.topbar h1 { margin:5px 0 0; font-size:28px; }.top-actions { display:flex; gap:16px; align-items:center; }
.page-shell { width:min(1440px,calc(100% - 40px)); margin:30px auto 70px; }.hero-card { display:flex; justify-content:space-between; align-items:center; padding:30px 36px; border-radius:24px; color:white; background:linear-gradient(120deg,#102342,#0b655f); box-shadow:var(--shadow); }.hero-card h2 { margin:8px 0; font-size:34px; }.hero-card p { color:#c7dae5; }.progress-orbit { width:132px; height:132px; border:2px dashed var(--gold); border-radius:50%; display:grid; place-content:center; text-align:center; background:rgba(255,255,255,.06); }.progress-orbit strong { color:#ffe08b; font-size:43px; }.progress-orbit span { color:#d5e1e9; }
.rest-banner { display:flex; gap:18px; align-items:center; margin-bottom:18px; padding:15px 20px; border:1px solid #ead08e; border-radius:15px; background:#fff8df; color:#65521b; }.rest-banner span { color:#7d6d3f; }
.metric-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:18px 0; }.metric-grid.six { grid-template-columns:repeat(6,1fr); }.metric-grid article { min-height:120px; padding:20px; border:1px solid var(--line); border-radius:18px; background:white; box-shadow:0 10px 30px rgba(16,35,66,.06); }.metric-grid span { color:var(--muted); }.metric-grid strong { display:block; margin-top:10px; font-size:34px; }.metric-grid small { color:#91a0b1; }.metric-grid .small-value { font-size:23px; }
.subject-list { display:grid; gap:18px; }.subject-card { border:1px solid var(--line); border-radius:22px; background:white; overflow:hidden; box-shadow:0 10px 34px rgba(16,35,66,.06); }.subject-card > header { display:flex; justify-content:space-between; align-items:center; padding:22px 25px; background:linear-gradient(90deg,#f6fbfa,#fff); }.subject-card h2 { margin:5px 0 0; }.badge-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; padding:18px; }.badge-button { min-height:112px; display:grid; grid-template-columns:auto 1fr; gap:6px 12px; text-align:left; border:1px solid var(--line); border-radius:16px; padding:16px; color:var(--ink); background:#fff; }.badge-button > span { grid-row:span 2; width:44px; height:44px; display:grid; place-items:center; border:1px dashed #a8b7c7; border-radius:50%; color:#718197; }.badge-button strong { align-self:end; }.badge-button em { font-style:normal; color:var(--muted); font-size:13px; }.badge-button.lit { border-color:#8bd8ca; background:var(--teal-soft); }.badge-button.lit > span { color:white; border-color:var(--teal); background:var(--teal); }.badge-button.pending { border-color:#e2c36c; background:#fff9e8; }.badge-button.returned { border-color:#e3a29d; background:var(--danger-soft); }.status-pill { padding:7px 12px; border-radius:999px; color:#66758a; background:#eef2f6; font-weight:800; }.status-pill.lit { color:#087f70; background:var(--teal-soft); }
.special-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }.special-badge { min-height:150px; display:flex; flex-direction:column; align-items:center; justify-content:center; border:1px dashed var(--gold); border-radius:22px; background:#fffdf7; text-align:center; }.special-badge span { color:var(--gold); letter-spacing:.2em; font-size:11px; }.special-badge strong { margin:12px 0 8px; font-size:23px; }.special-badge em { font-style:normal; color:var(--muted); }.special-badge.lit { color:white; border-style:solid; background:linear-gradient(120deg,#102342,#0b655f); }.special-badge.lit em { color:#8de5d4; }
.modal { width:min(760px,calc(100% - 28px)); max-height:92vh; border:0; border-radius:22px; padding:0; color:var(--ink); box-shadow:0 25px 100px rgba(0,0,0,.35); }.modal.wide { width:min(1000px,calc(100% - 28px)); }.modal::backdrop { background:rgba(5,17,35,.7); backdrop-filter:blur(3px); }.modal-head { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; border:0; padding:20px 24px; background:white; border-bottom:1px solid var(--line); }.modal-head h2 { margin:5px 0 0; }.icon-button { width:42px; height:42px; border:0; border-radius:50%; background:#eef2f6; font-size:28px; }.modal-body { padding:22px 24px 28px; }.modal-body #dynamicFields { display:grid; gap:14px; }.checklist { display:grid; gap:10px; }.checklist label,.single-check { display:flex!important; grid-template-columns:none!important; flex-direction:row; align-items:flex-start; gap:9px!important; }.checklist input,.single-check input { width:auto!important; margin-top:3px; }.state-message { display:flex; gap:12px; align-items:center; padding:13px 24px; background:#f0f4f7; }.state-message.returned { background:var(--danger-soft); color:#8b3935; }.state-message.pending { background:#fff8df; }.state-message small { margin-left:auto; }.state-message span { flex:1; }
.two-column { display:grid; grid-template-columns:1.35fr .65fr; gap:22px; }.two-column > section,.two-column > aside,.admin-card { border:1px solid var(--line); border-radius:22px; padding:22px; background:white; box-shadow:0 10px 34px rgba(16,35,66,.06); }.section-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; }.section-head h2 { margin:5px 0 0; }.section-head > strong { font-size:32px; color:var(--gold); }.queue-list { display:grid; gap:10px; }.queue-card { display:grid; grid-template-columns:1fr auto; gap:4px 12px; padding:16px; border:1px solid var(--line); border-radius:14px; text-align:left; background:white; color:var(--ink); }.queue-card strong { grid-column:1; }.queue-card em { grid-column:2; grid-row:1/3; align-self:center; font-style:normal; color:#8c6a13; }.queue-card small { color:var(--muted); }.queue-card.overdue { border-color:#e3a29d; background:var(--danger-soft); }.empty-state { padding:50px; text-align:center; color:var(--muted); border:1px dashed var(--line); border-radius:15px; }.student-list { display:grid; gap:10px; }.student-list article { padding:13px; border:1px solid var(--line); border-radius:14px; }.student-list article > div:first-child { display:flex; justify-content:space-between; }.student-list span { color:var(--muted); }.student-list button { margin-top:9px; border:1px solid var(--line); border-radius:8px; background:white; padding:6px 9px; }.student-stats { display:flex; gap:8px; margin-top:8px; }.student-stats b { color:var(--danger); }.evidence-block { margin-bottom:16px; padding:16px; border:1px solid var(--line); border-radius:14px; }.evidence-block h3 { margin-top:0; }.evidence-block div { display:grid; grid-template-columns:160px 1fr; padding:7px 0; border-bottom:1px solid #eef1f4; }.evidence-block pre { white-space:pre-wrap; }.decision-bar { position:sticky; bottom:0; padding:14px 24px; border-top:1px solid var(--line); background:white; }.decision-bar textarea { width:100%; min-height:70px; border:1px solid var(--line); border-radius:10px; padding:10px; }.decision-bar > div { display:flex; justify-content:flex-end; gap:8px; margin-top:10px; }
.operations-strip { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; background:#fff8df!important; border-color:#ead08e!important; color:#65521b; }.operations-strip span { color:#7d6d3f; font-size:13px; }
.admin-layout { display:grid; gap:20px; }.admin-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }.inline-form { display:grid; grid-template-columns:1fr 1fr 120px 90px auto; gap:8px; }.compact-list { display:grid; gap:8px; margin-top:15px; }.compact-list > div { display:grid; grid-template-columns:1fr auto; gap:5px 12px; padding:12px; border:1px solid var(--line); border-radius:12px; }.compact-list > div > span { grid-column:1; color:var(--muted); }.compact-list > div > div { grid-column:2; grid-row:1/3; display:flex; gap:6px; align-items:center; }.compact-list button { border:1px solid var(--line); border-radius:8px; padding:6px 9px; background:white; }.audit-list { max-height:520px; overflow:auto; }.audit-list > div { display:grid; grid-template-columns:120px 150px 1fr 1.2fr; gap:12px; padding:10px 3px; border-bottom:1px solid var(--line); font-size:13px; }.audit-list time,.audit-list span { color:var(--muted); }.audit-list em { font-style:normal; }
.list-link { display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:8px; padding:6px 9px; color:var(--ink); text-decoration:none; background:white; font-size:13px; }
.schedule-form { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; }.schedule-form label { display:grid; gap:6px; color:var(--muted); font-size:13px; }.schedule-form input { min-width:0; border:1px solid var(--line); border-radius:10px; padding:10px; }.schedule-form button { grid-column:1/6; }.scroll-list { max-height:360px; overflow:auto; }
.screen-page { color:white; background:radial-gradient(circle at 85% 5%,#0a5d59,#061832 55%,#071329); }.screen-login { min-height:100vh; display:grid; place-content:center; text-align:center; }.screen-login h1 { color:#ffe090; font-size:46px; }.screen-login form { display:grid; gap:12px; width:min(420px,90vw); }.screen-login input { border:1px solid rgba(255,255,255,.25); border-radius:12px; padding:14px; background:rgba(255,255,255,.09); color:white; }.screen-header { display:flex; justify-content:space-between; align-items:center; padding:30px 44px; border-bottom:1px solid rgba(255,255,255,.12); }.screen-header h1 { margin:7px 0; color:#ffe090; font-size:40px; }.screen-header p { color:#a9bed0; }.screen-header > div:last-child { text-align:center; }.screen-header > div:last-child strong { display:block; font-size:58px; color:#64e0cb; }.screen-groups { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; padding:28px 40px 60px; }.screen-groups article { padding:18px; border:1px solid rgba(255,255,255,.13); border-radius:18px; background:rgba(10,36,67,.72); }.screen-groups h2 { margin:0 0 13px; color:#dfeaf2; }.screen-groups article > div { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.screen-student { position:relative; overflow:hidden; display:flex; justify-content:space-between; padding:10px 11px 14px; border-radius:9px; color:#c8d7e2; background:rgba(255,255,255,.06); }.screen-student em { font-style:normal; color:#67dcca; }.screen-student i { position:absolute; left:0; bottom:0; width:var(--progress); height:3px; background:#22cfb1; }.screen-student.complete { background:rgba(20,170,145,.2); }
.toast { position:fixed; z-index:99; left:50%; bottom:22px; transform:translate(-50%,20px); opacity:0; padding:12px 18px; border-radius:12px; color:white; background:#26384f; box-shadow:var(--shadow); transition:.2s; }.toast.show { transform:translate(-50%,0); opacity:1; }.toast.success { background:#087f70; }.toast.error { background:var(--danger); }
@media (max-width:900px) { .login-shell { grid-template-columns:1fr; }.brand-panel { display:none; }.login-card { min-height:600px; padding:42px 28px; }.page-shell { width:min(100% - 22px,1440px); margin-top:16px; }.topbar { min-height:82px; padding:14px 16px; }.topbar h1 { font-size:22px; }.top-actions span { display:none; }.hero-card { padding:22px; }.hero-card h2 { font-size:25px; }.progress-orbit { width:96px; height:96px; flex:none; }.progress-orbit strong { font-size:32px; }.metric-grid,.metric-grid.six { grid-template-columns:repeat(3,1fr); }.metric-grid article { min-height:105px; padding:14px; }.metric-grid strong { font-size:27px; }.badge-grid { grid-template-columns:1fr 1fr; padding:12px; }.two-column,.admin-grid { grid-template-columns:1fr; }.inline-form { grid-template-columns:1fr 1fr; }.schedule-form { grid-template-columns:1fr 1fr; }.schedule-form button { grid-column:1/3; }.screen-groups { grid-template-columns:1fr; padding:16px; }.screen-header { padding:20px; }.screen-header h1 { font-size:28px; }.audit-list > div { grid-template-columns:90px 110px 1fr; }.audit-list em { grid-column:2/4; } }
@media (max-width:560px) { .hero-card { align-items:flex-start; }.hero-card p { font-size:13px; }.progress-orbit { width:82px; height:82px; }.metric-grid,.metric-grid.six { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; }.metric-grid article { min-width:150px; scroll-snap-align:start; }.badge-grid { grid-template-columns:1fr; }.special-grid { grid-template-columns:1fr; }.rest-banner { flex-direction:column; align-items:flex-start; gap:4px; }.modal-body { padding:16px; }.decision-bar > div { display:grid; grid-template-columns:1fr 1fr; }.decision-bar .primary-button { grid-column:1/3; }.inline-form,.schedule-form { grid-template-columns:1fr; }.schedule-form button { grid-column:1; }.screen-header > div:last-child { display:none; }.screen-groups article > div { grid-template-columns:1fr; } }
