:root { --ink:#17263d; --muted:#617089; --line:#dfe6ee; --paper:#fff; --soft:#f5f8fb; --navy:#183958; --blue:#2765a3; --sky:#e9f4fb; --gold:#d79734; --radius:16px; --shadow:0 10px 28px rgba(26,54,85,.08); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif; font-size:16px; line-height:1.7; }
a { color:var(--blue); text-decoration:none; } a:hover { text-decoration:underline; }
button,input,select { font:inherit; } button { cursor:pointer; }
.skip-link { position:absolute; left:1rem; top:-4rem; padding:.5rem 1rem; background:#fff; z-index:20; } .skip-link:focus { top:1rem; }
.container { width:min(1120px, calc(100% - 40px)); margin:0 auto; }
.site-header { position:sticky; top:0; z-index:10; background:rgba(255,255,255,.95); border-bottom:1px solid var(--line); backdrop-filter:blur(8px); }
.header-inner { height:72px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.brand { display:flex; align-items:center; gap:10px; color:var(--ink); font-weight:800; font-size:1.12rem; text-decoration:none; white-space:nowrap; }
.brand-mark { display:grid; place-items:center; width:34px; height:34px; color:white; background:var(--navy); border-radius:10px 10px 10px 2px; font-size:1.1rem; }
.primary-nav { display:flex; align-items:center; gap:4px; } .primary-nav a,.primary-nav .nav-logout { padding:.45rem .7rem; color:var(--muted); font-size:.94rem; } .primary-nav a[aria-current="page"],.primary-nav a:hover { color:var(--navy); text-decoration:none; font-weight:700; }.primary-nav .nav-logout { border:0; background:transparent; }.primary-nav .nav-logout:hover { color:var(--navy); font-weight:700; }.account-link { white-space:nowrap; }
.menu-toggle { display:none; padding:.35rem .5rem; color:var(--navy); background:transparent; border:1px solid var(--line); border-radius:8px; }
.hero { padding:96px 0 78px; background:linear-gradient(130deg,#f2f8fb 0%,#fff 55%,#f7f3ea 100%); overflow:hidden; }
.hero-grid { display:grid; grid-template-columns:1.1fr .9fr; align-items:center; gap:52px; } .eyebrow { display:inline-block; color:var(--blue); font-size:.8rem; font-weight:800; letter-spacing:.08em; }
h1,h2,h3,p { margin-top:0; } h1 { margin-bottom:20px; font-size:clamp(2.25rem,5vw,4rem); line-height:1.2; letter-spacing:-.04em; } h2 { font-size:clamp(1.55rem,3vw,2.25rem); line-height:1.3; letter-spacing:-.025em; } h3 { margin-bottom:.45rem; font-size:1.1rem; line-height:1.45; }
.hero p { max-width:600px; color:var(--muted); font-size:1.16rem; } .actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:28px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:.65rem 1.05rem; border:1px solid var(--navy); border-radius:9px; background:var(--navy); color:#fff; font-weight:700; text-decoration:none; } .button:hover { background:#102c46; text-decoration:none; } .button.secondary { color:var(--navy); background:#fff; }
.hero-panel { display:grid; gap:12px; padding:24px; background:rgba(255,255,255,.84); border:1px solid #e2eaf0; border-radius:24px; box-shadow:var(--shadow); } .hero-panel .path { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:11px; background:var(--soft); } .path i { display:grid; place-items:center; flex:0 0 30px; height:30px; color:white; background:var(--blue); border-radius:50%; font-style:normal; font-size:.8rem; font-weight:bold; }
.section { padding:78px 0; } .section.soft { background:var(--soft); } .section-heading { display:flex; align-items:end; justify-content:space-between; gap:20px; margin-bottom:30px; } .section-heading p { max-width:650px; margin:0; color:var(--muted); }
.card-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }.card { padding:22px; border:1px solid var(--line); border-radius:var(--radius); background:#fff; box-shadow:0 2px 3px rgba(20,45,68,.015); }.card:hover { border-color:#b8cad9; box-shadow:var(--shadow); }
.category-card { display:flex; flex-direction:column; min-height:218px; } .category-card p { color:var(--muted); }.examples { margin-top:auto; font-size:.87rem; }.text-link,.text-button { color:var(--blue); font-weight:750; }.text-button { padding:0; border:0; background:transparent; text-align:left; }.major-card,.career-card { display:flex; flex-direction:column; }.major-card p,.career-card p { color:var(--muted); }.job-line { margin-top:auto; font-size:.9rem; }.job-line strong { color:var(--ink); }
.catalog-discipline { margin-top:2px; color:var(--muted); font-size:.78rem; }.catalog-note { margin:34px 0 0; padding:16px 18px; color:var(--muted); border-left:3px solid var(--blue); border-radius:0 10px 10px 0; background:var(--soft); font-size:.92rem; }
.interest-panel { padding:30px; border:1px solid #d8e7ee; border-radius:var(--radius); background:linear-gradient(120deg,#f0f8fb,#fff); }.tag-row { display:flex; flex-wrap:wrap; gap:10px; }.tag { padding:.52rem .8rem; border:1px solid #cbd9e6; border-radius:99px; color:var(--navy); background:#fff; font-size:.93rem; }.tag:hover,.tag.active { color:#fff; background:var(--navy); border-color:var(--navy); }.interest-result { min-height:55px; margin-top:20px; color:var(--muted); }.interest-result strong { color:var(--ink); }.interest-result a { margin-left:6px; font-weight:700; }
.timeline { position:relative; display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }.timeline::before { content:""; position:absolute; top:20px; left:12.5%; right:12.5%; height:2px; background:#c7d9e6; }.time-item { position:relative; padding-top:48px; }.time-dot { position:absolute; top:10px; width:22px; height:22px; border:5px solid #dbeaf3; border-radius:50%; background:var(--blue); }.time-item p { color:var(--muted); }
.reviews { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.review-card { position:relative; padding:24px; border-left:3px solid var(--gold); background:#fff; border-radius:0 12px 12px 0; box-shadow:var(--shadow); }.quote-mark { height:22px; margin:0; color:var(--gold); font-family:Georgia,serif; font-size:3.5rem; line-height:.7; }.review-card footer { display:grid; margin-top:18px; color:var(--muted); font-size:.83rem; }.review-card footer strong { color:var(--ink); }.example-note { margin:0 0 18px; color:var(--muted); font-size:.9rem; }
.page-hero { padding:58px 0 42px; background:var(--soft); border-bottom:1px solid var(--line); }.page-hero p { max-width:720px; margin-bottom:0; color:var(--muted); font-size:1.08rem; }.filter-bar { display:grid; grid-template-columns:2fr 1fr 1fr auto; gap:12px; align-items:end; padding:18px; margin:28px 0 16px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); }.field label { display:block; margin-bottom:5px; color:var(--muted); font-size:.82rem; font-weight:700; }.field input,.field select { width:100%; min-height:43px; padding:.55rem .7rem; color:var(--ink); border:1px solid #bccbd8; border-radius:8px; background:#fff; }.filter-bar .button { min-height:43px; padding:.5rem .9rem; }.result-count { margin-bottom:18px; color:var(--muted); font-size:.9rem; }.result-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.mini-meta,.course-card dl { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:16px 0; }.mini-meta div,.course-card dl div { padding:8px; border-radius:8px; background:var(--soft); }.mini-meta dt,.course-card dt { color:var(--muted); font-size:.75rem; }.mini-meta dd,.course-card dd { margin:0; font-size:.86rem; font-weight:750; }.empty-state { grid-column:1/-1; padding:42px; text-align:center; border:1px dashed #b9c9d6; border-radius:var(--radius); color:var(--muted); }
.anchor-nav { position:sticky; top:72px; z-index:5; display:flex; gap:6px; overflow:auto; padding:12px 0; background:#fff; border-bottom:1px solid var(--line); }.anchor-nav a { flex:0 0 auto; padding:.35rem .65rem; color:var(--muted); font-size:.86rem; }.detail-layout { display:grid; grid-template-columns:1fr 280px; gap:34px; }.side-summary { position:sticky; top:135px; align-self:start; padding:20px; border-radius:var(--radius); background:var(--sky); }.side-summary ul { margin:0; padding-left:18px; }.content-section { padding:38px 0; border-bottom:1px solid var(--line); }.content-section ul { padding-left:20px; }.callout { padding:16px 18px; border-left:3px solid var(--blue); border-radius:0 10px 10px 0; background:var(--soft); color:var(--muted); }.year-list { display:grid; gap:12px; }.year-list article { padding:16px; border:1px solid var(--line); border-radius:12px; }.year-list h3 { margin:0 0 4px; }.year-list p { margin:0; color:var(--muted); }
.course-tabs { display:flex; gap:10px; flex-wrap:wrap; margin:26px 0 34px; }.course-tab { padding:.55rem .9rem; border:1px solid #cbd8e4; border-radius:9px; color:var(--navy); background:#fff; font-weight:700; }.course-tab.active,.course-tab:hover { color:#fff; border-color:var(--navy); background:var(--navy); }.year-course { padding:28px 0; border-top:1px solid var(--line); }.year-course h2 { margin-bottom:18px; }.course-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.course-heading { display:flex; justify-content:space-between; gap:8px; }.pill { height:max-content; padding:.14rem .45rem; color:#7a4a09; background:#fff3d8; border-radius:99px; font-size:.72rem; font-weight:bold; white-space:nowrap; }
.course-filter { width:min(340px, 100%); margin-top:6px; }.course-filter label { display:block; margin-bottom:5px; color:var(--muted); font-size:.85rem; font-weight:700; }.course-filter select { width:100%; min-height:44px; padding:.55rem .7rem; border:1px solid #bccbd8; border-radius:8px; color:var(--ink); background:#fff; }.course-track-heading { padding-bottom:12px; }.course-track-heading p { margin:0; color:var(--muted); }
.career-layout { display:grid; grid-template-columns:1.1fr .9fr; gap:30px; align-items:start; }.career-detail { position:sticky; top:105px; padding:28px; min-height:330px; border-radius:var(--radius); background:var(--sky); }.detail-list p { padding:10px 0; margin:0; border-top:1px solid rgba(39,101,163,.15); }.selectable { cursor:pointer; }.selectable:focus { outline:3px solid #94c5e9; outline-offset:2px; }
.community-grid { display:grid; grid-template-columns:1.15fr .85fr; gap:24px; }.question-list { display:grid; gap:12px; }.question { padding:18px; border:1px solid var(--line); border-radius:12px; }.question h3 { margin-bottom:5px; }.question p { margin:0; color:var(--muted); }.coming-soon { padding:28px; border-radius:var(--radius); color:#fff; background:var(--navy); }.coming-soon p { color:#d9e8f4; }.about-values { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.site-footer { padding:42px 0 24px; color:#c6d5df; background:#102b43; }.footer-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:32px; }.site-footer .brand { color:#fff; }.site-footer p { max-width:420px; color:#c6d5df; }.site-footer a { display:block; margin:.35rem 0; color:#d5e5f0; }.footer-title { margin-bottom:10px; color:#fff; font-size:.9rem; font-weight:bold; }.copyright { padding-top:24px; margin-top:24px; border-top:1px solid rgba(255,255,255,.15); color:#a9c1d0; font-size:.83rem; }
.toast { position:fixed; right:20px; bottom:20px; z-index:30; max-width:min(420px,calc(100% - 40px)); padding:13px 16px; color:#fff; background:var(--navy); border-radius:10px; box-shadow:var(--shadow); transform:translateY(20px); opacity:0; transition:.25s; pointer-events:none; }.toast.show { transform:translateY(0); opacity:1; }
.login-main { min-height:calc(100vh - 72px); background:linear-gradient(130deg,#f2f8fb 0%,#fff 55%,#f7f3ea 100%); }.login-section { display:grid; min-height:calc(100vh - 72px); place-items:center; padding:54px 20px; }.login-card { width:min(100%, 500px); padding:36px; border:1px solid #dce7ee; border-radius:24px; background:rgba(255,255,255,.95); box-shadow:var(--shadow); }.login-card h1 { margin:.3rem 0 12px; font-size:2.1rem; }.login-card > p { color:var(--muted); }.login-card form { display:grid; gap:16px; margin-top:26px; }.login-card .button { width:100%; }.form-message { min-height:1.7em; margin:14px 0 0; color:var(--muted); font-size:.92rem; }.form-message.success { color:#16734f; }.form-message.error { color:#a32e2e; }.login-note { display:grid; gap:3px; margin-top:22px; padding:13px 15px; color:var(--muted); border-radius:10px; background:var(--soft); font-size:.9rem; }.login-note strong { color:var(--ink); }.login-back { margin:20px 0 0; font-size:.92rem; }
@media (max-width:900px) { .primary-nav { gap:0; }.primary-nav a,.primary-nav .nav-logout { padding:.42rem; font-size:.84rem; }.card-grid { grid-template-columns:repeat(2,1fr); }.result-grid,.course-grid { grid-template-columns:repeat(2,1fr); }.hero-grid,.career-layout { grid-template-columns:1fr; }.hero-panel { max-width:620px; }.detail-layout { grid-template-columns:1fr; }.side-summary { position:static; }.timeline { grid-template-columns:repeat(2,1fr); }.timeline::before { display:none; }.reviews { grid-template-columns:1fr; }.footer-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:640px) { body { font-size:15px; }.container { width:min(100% - 28px,1120px); }.header-inner { height:64px; }.menu-toggle { display:block; }.primary-nav { display:none; position:absolute; top:64px; left:0; right:0; padding:10px 14px 14px; border-bottom:1px solid var(--line); background:#fff; box-shadow:var(--shadow); }.primary-nav.open { display:grid; }.primary-nav a,.primary-nav .nav-logout { padding:.55rem; font-size:.95rem; text-align:left; }.hero { padding:62px 0 52px; }.section { padding:55px 0; }.section-heading { display:block; }.section-heading h2 { margin-bottom:8px; }.card-grid,.result-grid,.course-grid,.about-values { grid-template-columns:1fr; }.filter-bar { grid-template-columns:1fr; }.filter-bar .button { width:100%; }.timeline { grid-template-columns:1fr; gap:4px; }.time-item { padding:0 0 0 36px; }.time-dot { top:4px; left:0; }.community-grid { grid-template-columns:1fr; }.career-detail { position:static; }.footer-grid { grid-template-columns:1fr; gap:16px; }.anchor-nav { top:64px; }.mini-meta { grid-template-columns:1fr 1fr; }.login-main,.login-section { min-height:calc(100vh - 64px); }.login-section { padding:32px 14px; }.login-card { padding:26px 20px; border-radius:18px; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; }.toast { transition:none; } }
