:root {
  font-family: "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;
  color: #20354a; background: #f0f5fa; font-size: 15px;
  --accent: #176963; --line: #d7e2ea; --nav-height: 64px;
  --surface: #fff; --muted: #536b7e; --radius: 12px;
}
* { box-sizing: border-box; }
body { margin: 0; }
header { height: 76px; display: flex; align-items: center; gap: 24px; padding: 0 5vw; border-bottom: 1px solid var(--line); background: white; }
header strong { font-size: 22px; letter-spacing: -.5px; }
header span, .muted { color: var(--muted); }
header button { margin-left: auto; }
main { max-width: 1400px; margin: 0 auto; display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 32px; padding: 40px 32px; }
aside h1 { font-size: 32px; line-height: 1.5; font-weight: 650; letter-spacing: -.8px; }
aside p { line-height: 1.9; color: var(--muted); overflow-wrap: break-word; }
.eyebrow { color: var(--accent); font-size: 13px; }
section { min-width: 0; background: white; padding: 32px; border: 1px solid #e2eaf0; border-radius: var(--radius); box-shadow: 0 6px 24px #20354a06; }
h2 { margin: 0 0 20px; font-size: 25px; letter-spacing: -.5px; overflow-wrap: break-word; }
h3 { margin-top: 32px; font-size: 19px; }
p { line-height: 1.7; }
form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin: 24px 0; }
label { display: flex; flex-direction: column; gap: 8px; font-size: 14px; min-width: 0; }
input, select, textarea, button { font: inherit; border-radius: 8px; border: 1px solid #b4c5d2; padding: 11px 13px; min-width: 0; max-width: 100%; }
input, select, textarea { width: 100%; background: white; color: #20354a; }
textarea { min-height: 110px; resize: vertical; }
button { background: var(--accent); color: white; border: 0; cursor: pointer; align-self: end; min-height: 44px; touch-action: manipulation; font-weight: 550; }
button:hover { filter: brightness(.96); }
button:disabled { opacity: .6; cursor: wait; }
button.secondary { background: #e7eff5; color: #20354a; }
.wide { grid-column: 1 / -1; }
.action-bar button { width: 100%; }
table { width: 100%; border-collapse: collapse; font-size: 14px; }
td, th { text-align: left; border-bottom: 1px solid var(--line); padding: 14px 8px; overflow-wrap: break-word; }
th { font-weight: 550; color: var(--muted); background: #f8fafc; }
pre { white-space: pre-wrap; overflow-wrap: break-word; word-break: break-word; background: #f2f7f9; padding: 16px; border-radius: 8px; max-width: 100%; }
a { color: var(--accent); }
:focus-visible { outline: 3px solid #348dca; outline-offset: 3px; }
nav { display: flex; flex-direction: column; gap: 8px; margin-top: 24px; }
nav button { text-align: left; width: 100%; background: transparent; color: #536b7e; }
nav button[aria-current="page"] { background: #dcefeb; color: #115b55; }
#notice { position: fixed; z-index: 50; bottom: 20px; left: 50%; transform: translateX(-50%); max-width: min(90vw, 560px); padding: 14px 24px; background: #20354a; color: white; border-radius: 10px; overflow-wrap: break-word; box-shadow: 0 4px 24px #20354a22; }
#notice:empty { display: none; }
.status { display: inline-flex; align-items: center; padding: 4px 9px; border-radius: 20px; font-size: 12px; background: #edf2f7; color: #536b7e; white-space: nowrap; }
.status.success { background: #e1f2eb; color: #176943; }
.status.pending { background: #fff2d9; color: #865915; }
.status.error { background: #ffebe8; color: #a43b32; }
.empty-state { text-align: center; padding: 36px 20px; background: #f8fafc; border: 1px dashed #d7e2ea; border-radius: 12px; color: var(--muted); }
.loading-state { min-height: 160px; display: grid; place-content: center; color: var(--muted); }
.error-state { padding: 20px; border: 1px solid #edc8c1; background: #fff5f3; border-radius: 10px; color: #8d332d; }
/* H5 composition: app bar, single column, fixed action, bottom navigation. */
@media (max-width: 767px) {
  :root { font-size: 16px; }
  body { min-width: 0; padding-bottom: env(safe-area-inset-bottom, 0px); }
  header { position: sticky; z-index: 20; top: 0; height: 60px; padding: 0 16px; gap: 12px; }
  header strong { font-size: 19px; }
  header span { display: none; }
  header button { min-height: 44px; padding: 10px 14px; font-size: 14px; background: #e7eff5; color: #20354a; }
  main { display: block; padding: 20px 16px 110px; width: 100%; }
  aside { margin-bottom: 20px; }
  aside h1 { font-size: 28px; margin: 8px 0; }
  aside h1 br { display: none; }
  aside p { margin: 6px 0; font-size: 14px; }
  section { padding: 22px 16px; border-radius: 14px; }
  h2 { font-size: 23px; line-height: 1.4; margin-bottom: 16px; }
  h3 { font-size: 18px; }
  form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
  label { font-size: 15px; gap: 9px; }
  input, select, textarea { font-size: 16px; min-height: 48px; padding: 12px; }
  input[type="file"] { font-size: 14px; padding: 12px 8px; }
  button { min-height: 48px; font-size: 16px; }
  .table-wrap { width: 100%; overflow: visible; }
  table, tbody { display: block; width: 100%; }
  thead { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); }
  tr { display: grid; grid-template-columns: minmax(0, 1fr); padding: 14px; margin: 12px 0; background: #f6f9fb; border: 1px solid var(--line); border-radius: 12px; }
  td { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 8px 0; border: none; font-size: 15px; word-break: break-word; min-width: 0; }
  td[data-label]::before { content: attr(data-label); color: var(--muted); flex: 0 0 46px; font-size: 14px; }
  td button { width: 100%; }
  pre { font-size: 14px; padding: 12px; line-height: 1.7; }
  body[data-role="student"] main { padding-top: 20px; padding-bottom: calc(180px + env(safe-area-inset-bottom, 0px)); }
  body[data-role="student"] aside { margin: 0; }
  body[data-role="student"] aside > p, body[data-role="student"] aside > h1 { display: none; }
  body[data-role="student"] #navigation { position: fixed; z-index: 30; left: 0; right: 0; bottom: 0; margin: 0; height: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px)); padding: 6px 12px calc(6px + env(safe-area-inset-bottom, 0px)); display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; background: white; border-top: 1px solid var(--line); }
  body[data-role="student"] #navigation button { padding: 10px 4px; text-align: center; font-size: 14px; min-height: 48px; background: white; color: var(--muted); border-radius: 9px; }
  body[data-role="student"] #navigation button[aria-current="page"] { background: #e2f1ee; color: #115b55; font-weight: 600; }
  body[data-role="student"] .action-bar, body[data-screen="login"] .action-bar, body[data-screen="password"] .action-bar { position: fixed; z-index: 25; left: 0; right: 0; bottom: 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); background: white; border-top: 1px solid var(--line); }
  body[data-role="student"] .action-bar { bottom: calc(var(--nav-height) + env(safe-area-inset-bottom, 0px)); padding-bottom: 12px; }
  .action-bar button { min-height: 50px; font-weight: 600; }
  #notice { width: calc(100% - 32px); max-width: none; padding: 12px 16px; bottom: calc(90px + env(safe-area-inset-bottom, 0px)); }
  body[data-role="student"] #notice { bottom: calc(160px + env(safe-area-inset-bottom, 0px)); }
  body.keyboard-open #navigation { display: none; }
  body.keyboard-open .action-bar { position: static; border-top: none; padding: 0; }
  body.keyboard-open main { padding-bottom: 24px; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; } }

.source-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0}.source-metrics article,.source-card{background:#fff;border:1px solid #e2e9e8;border-radius:18px;padding:22px;box-shadow:0 4px 18px #193f3b06;min-width:0;overflow-wrap:anywhere}.source-metrics strong{display:block;font-size:32px;color:#176c61}.source-metrics span{color:#60716e;font-size:13px}.source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.source-card{margin-bottom:14px}.source-card h3{margin:14px 0}.status-tag{display:inline-block;font-size:12px;background:#edf5f3;color:#375e56;padding:6px 10px;border-radius:8px}.source-card details{margin:16px 0}.source-card summary{cursor:pointer;min-height:44px;padding:10px 0}.source-card pre{max-height:400px;overflow:auto;white-space:pre-wrap;word-break:break-word}.source-card form{display:block}.source-card textarea{width:100%}@media(max-width:600px){.source-grid,.source-metrics{grid-template-columns:1fr}.source-metrics article{display:flex;align-items:center;gap:20px}.source-card{padding:18px}.source-card button{width:100%;min-height:48px}}
@media(max-width:767px){body[data-screen="sources"] aside>h1,body[data-screen="sources"] aside>.eyebrow,body[data-screen="sources"] aside>p:not(#identity){display:none}body[data-screen="sources"] #navigation{margin-top:8px}body[data-screen="sources"] aside{margin-bottom:12px}}

.ai-toolbar{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.ai-task{padding:18px 0;border-bottom:1px solid #e2e9e8}.ai-rule{border:1px solid #dce8e4;border-left:4px solid #176c61;border-radius:12px;padding:18px;margin:20px 0;min-width:0}.ai-rule legend{padding:0 8px;color:#375e56;font-weight:600}.ai-rule-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ai-confirm{display:flex;align-items:flex-start;gap:10px;margin:22px 0}.ai-confirm input{width:22px;min-width:22px;height:22px}.ai-review textarea{min-height:86px}.ai-review button{min-height:48px}.ai-review select{max-width:100%}@media(max-width:600px){.ai-rule-fields{grid-template-columns:1fr}.ai-rule{padding:14px}.ai-toolbar{display:grid;grid-template-columns:1fr}.ai-review form>button[type=submit]{position:sticky;bottom:12px;box-shadow:0 4px 18px #193f3b20}}

.student-heading{max-width:600px;margin-bottom:28px}.student-heading h2{font-size:30px;line-height:1.45}.student-prompt{background:#edf6f3;border:1px solid #cde4dc;border-radius:16px;padding:22px;margin:24px 0}.recommendation-tabs{display:flex;gap:10px;margin:24px 0}.recommendation-tabs button{background:white;color:var(--muted);border-color:var(--line)}.recommendation-tabs button[aria-pressed=true]{background:var(--accent);color:white;border-color:var(--accent)}.recommendation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.job-card{border:1px solid var(--line);border-radius:18px;padding:22px;min-width:0;box-shadow:0 5px 20px #20354a05}.job-card-top,.job-detail-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.company-name{color:var(--muted);font-size:14px;overflow-wrap:anywhere}.match-badge{flex-shrink:0;text-align:center;color:var(--accent)}.match-badge strong{display:block;font-size:32px;line-height:1.2}.match-badge span{font-size:11px}.job-card h3{margin:12px 0;font-size:21px;line-height:1.5;overflow-wrap:anywhere}.job-location,.deadline{font-size:14px;color:var(--muted)}.job-tags{display:flex;flex-wrap:wrap;gap:8px}.needs-review{background:#fff0d8;color:#845a16}.match-reason{border-left:3px solid #80b5a8;padding-left:14px;margin:20px 0}.match-reason>span{font-size:12px;color:var(--accent)}.match-reason p{margin:5px 0;font-size:14px;overflow-wrap:anywhere}.job-card button{width:100%;min-height:48px}.job-risk{background:#fff6e8;color:#795919;border-radius:10px;padding:12px;font-size:14px;overflow-wrap:anywhere}.recommendation-empty{grid-column:1/-1}.recommendation-empty>span{display:block;font-size:42px;color:#6eafa2}.recommendation-empty button{margin:8px}.job-facts{display:grid;grid-template-columns:1fr 1fr;gap:20px;background:#f5f8fa;padding:22px;border-radius:14px}.job-facts dt{font-size:13px;color:var(--muted)}.job-facts dd{margin:8px 0 0;overflow-wrap:anywhere}.match-explanation{margin:32px 0}.match-explanation blockquote{margin:12px 0;border-left:3px solid #bfd8d1;padding:12px 16px;background:#f5faf8;white-space:pre-wrap;overflow-wrap:anywhere}.match-explanation blockquote span{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}.job-description{white-space:pre-wrap;line-height:1.9;overflow-wrap:anywhere}.job-checks summary{cursor:pointer;min-height:48px;padding:14px 0}.job-source-action a{display:block;background:var(--accent);color:white;text-align:center;text-decoration:none;border-radius:10px;padding:15px 20px;min-height:50px}.job-source-action{margin-top:24px}.job-detail-title h2{margin-top:12px}.job-card li{overflow-wrap:anywhere}@media(max-width:767px){.recommendation-grid{grid-template-columns:1fr}.student-heading h2{font-size:27px}.job-card{padding:20px}.job-facts{grid-template-columns:1fr;padding:18px;gap:16px}.job-detail-title h2{font-size:24px}.recommendation-tabs button{flex:1;font-size:14px;padding:12px 8px}.student-prompt button{width:100%}.match-badge strong{font-size:30px}}

.job-apply-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}.official-application-link{display:block;border-radius:10px;background:var(--accent);color:white;padding:14px;text-decoration:none;text-align:center;min-height:50px}@media(max-width:767px){body[data-role="student"] #navigation button{font-size:12px}.job-apply-actions{margin:0}}
.application-review{margin-top:40px;padding-top:24px;border-top:1px solid var(--border,#dce7e8)}
.receipt-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;line-height:1.7;background:#f3f7f8;padding:16px;border-radius:12px}
.receipt-hash{overflow-wrap:anywhere;word-break:break-all}.review-actions{display:flex;gap:12px;flex-wrap:wrap}.review-actions button{min-height:48px}
@media(max-width:600px){.review-actions{display:grid;grid-template-columns:1fr}.application-review .source-card{min-width:0}}
@media(max-width:600px){body[data-screen="application-detail"] #workspace{padding-bottom:104px}body[data-screen="application-detail"] [data-receipt]>button{position:fixed;bottom:calc(78px + env(safe-area-inset-bottom));left:24px;right:24px;width:calc(100% - 48px);min-height:52px;z-index:21;box-shadow:0 6px 20px #173d3d26}}
.application-timeline{margin-top:32px}.stage-track{display:flex;list-style:none;padding:0;gap:8px;flex-wrap:wrap}.stage-track li{border:1px solid #dce7e8;border-radius:10px;padding:10px 14px;color:#677b80}.stage-track li.current{background:#e6f5ef;color:#11684f;border-color:#9bcbbd}.stage-track span{display:block;font-size:11px;margin-top:4px}.event-track{list-style:none;padding-left:20px;border-left:2px solid #dbe9e7;margin-left:8px}.event-track li{position:relative;padding:8px 0 20px}.event-track li:before{content:'';position:absolute;left:-26px;top:14px;width:10px;height:10px;border-radius:50%;background:#247c6b;border:2px solid white}.event-track time{color:#657a80;font-size:12px}.event-track h4{margin:8px 0}.event-track p{overflow-wrap:anywhere}
.workbench-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 32px}.workbench-metrics article{background:#f2f7f8;border:1px solid #dce7e8;border-radius:14px;padding:20px}.workbench-metrics span{color:#587077;font-size:13px}.workbench-metrics strong{display:block;font-size:32px;color:#173c43;margin-top:8px;font-variant-numeric:tabular-nums}
@media(max-width:600px){.workbench-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.workbench-metrics article{padding:16px}}
/* Staff workspace keeps navigation compact and reserves width for actionable records. */
body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]):not([data-screen="password"]) aside>h1,
body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]):not([data-screen="password"]) aside>p:not(#identity){display:none}
@media(min-width:768px){body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]) main{grid-template-columns:188px minmax(0,1fr);gap:24px;padding-top:28px}.workbench-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.workbench-metrics article{padding:16px}}
@media(min-width:768px) and (max-width:1000px){.workbench-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]) #navigation{display:flex;flex-direction:row;flex-wrap:wrap}body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]) #navigation button{width:auto;flex:1}}
.profile-steps{display:flex;gap:8px;list-style:none;margin:0;padding:0;flex-wrap:wrap}.profile-steps li{flex:1;min-width:100px;padding:12px;border-radius:10px;color:#617780;background:#eff4f6;font-size:13px}.profile-steps li[aria-current="step"]{background:#e2f1ed;color:#125e54;font-weight:650}.profile-step-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.profile-step-panel[hidden],.wizard-actions button[hidden]{display:none}.wizard-actions{display:flex;gap:8px}.wizard-actions button{flex:1;min-width:0}
@media(max-width:767px){.profile-step-panel{grid-template-columns:minmax(0,1fr)}.profile-steps{gap:6px}.profile-steps li{min-width:0;padding:10px 6px;font-size:12px}.wizard-actions button{font-size:14px;padding:12px 8px}}
@media(max-width:767px){body:is([data-role="admin"],[data-role="advisor"],[data-role="operator"]) #navigation button{flex:1 1 130px;white-space:nowrap}}
