:root{--ink: #17211f;--muted: #687774;--line: #dce5e2;--paper: #f7f8f5;--panel: #ffffff;--accent: #0f8b76;--accent-soft: #dff4ef;--blue: #3b74d8;--amber: #c8861a;--danger: #bd4b43;color:var(--ink);background:var(--paper);font-family:HarmonyOS Sans SC,Microsoft YaHei UI,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;min-width:1180px;overflow:hidden;background:radial-gradient(circle at 18% 0%,rgba(15,159,135,.12),transparent 28rem),radial-gradient(circle at 92% 12%,rgba(59,116,216,.1),transparent 26rem),var(--paper)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px}.login-card{width:min(420px,100%);border:1px solid var(--line);border-radius:8px;background:#ffffffeb;box-shadow:0 24px 60px #17211f1f;padding:28px;display:grid;gap:18px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:4px}.login-brand h1{font-size:22px}.login-brand p{color:var(--muted);font-size:13px;margin-top:5px}.captcha-row{height:42px;border:1px solid var(--line);border-radius:8px;background:#f8fbf9;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 8px 0 12px}.captcha-row strong{color:var(--ink);font-size:16px}.captcha-row .ghost-button{height:30px;padding:0 10px}.login-error{border:1px solid rgba(189,75,67,.24);border-radius:8px;background:#fde7e5;color:#8b2b25;padding:10px 12px;font-size:13px}.login-submit{width:100%}.app-shell{display:grid;grid-template-columns:236px minmax(0,1fr);height:100vh;overflow:hidden}.sidebar{height:100vh;overflow-y:auto;background:#102421;color:#eef7f4;padding:24px 18px}.brand{display:flex;align-items:center;gap:12px;margin-bottom:36px;font-size:18px}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:#b8f1df;color:#102421;font-weight:900}.nav-list{display:grid;gap:18px}.nav-group{display:grid;gap:6px}.nav-section-title{color:#eef7f475;font-size:12px;font-weight:800;letter-spacing:0;padding:0 12px}.nav-item{height:44px;border:0;border-radius:8px;display:flex;align-items:center;gap:10px;padding:0 12px;color:#eef7f4c7;background:transparent;text-align:left}.nav-item span{width:8px;height:8px;border-radius:999px;background:currentColor}.nav-item.active{color:#102421;background:#b8f1df;font-weight:800}.workspace{min-width:0;height:100vh;overflow-y:auto;padding:24px 28px 32px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:20px}h1,h2,p{margin:0}h1{font-size:26px;line-height:1.15}h2{font-size:18px}.topbar p,.panel-header span{color:var(--muted);font-size:13px;margin-top:7px}.top-actions{display:flex;gap:10px;align-items:center}.search,input,select,textarea{width:100%;min-width:0;height:40px;border:1px solid var(--line);border-radius:8px;background:#ffffffdb;color:var(--ink);padding:0 12px;outline:none}input[type=file]{height:auto;min-height:40px;padding:8px 10px}textarea{height:auto;min-height:96px;padding:10px 12px;resize:vertical}.search{width:300px}.primary-button,.ghost-button{height:40px;border-radius:8px;padding:0 14px}.primary-button{border:1px solid var(--accent);color:#fff;background:var(--accent);font-weight:800}.ghost-button{border:1px solid var(--line);color:var(--ink);background:#fff}.metrics{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-bottom:18px}.metric{border:1px solid var(--line);border-radius:8px;background:#ffffffe0;padding:14px 16px}.metric span{color:var(--muted);font-size:12px}.metric strong{display:block;margin-top:8px;font-size:26px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:14px}.dashboard-wide{grid-row:span 2}.dashboard-panel{min-width:0}.dashboard-bars{display:grid;gap:13px}.dashboard-bar-row{display:grid;grid-template-columns:136px minmax(0,1fr);align-items:center;gap:14px}.dashboard-bar-row>div:first-child{display:grid;gap:4px}.dashboard-bar-row strong{font-size:13px}.dashboard-bar-row span,.dashboard-list-item span,.dashboard-stat-line span{color:var(--muted);font-size:12px}.progress-track{height:10px;overflow:hidden;border-radius:999px;background:#edf3f0}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--accent)}.dashboard-list,.file-stat-list{display:grid;gap:10px}.dashboard-list-item,.file-stat-list article{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf3f0;padding-bottom:10px}.dashboard-list-item:last-child,.file-stat-list article:last-child{border-bottom:0;padding-bottom:0}.dashboard-list-item>div{display:grid;min-width:0;gap:4px}.dashboard-list-item strong,.dashboard-list-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-stat-line{display:flex;align-items:baseline;gap:8px;margin-bottom:14px}.dashboard-stat-line strong{font-size:28px}.file-stat-list article strong{color:var(--accent)}.filter-row{display:flex;gap:8px;margin-bottom:14px}.chip{min-height:32px;border:1px solid var(--line);border-radius:999px;background:#ffffffc2;color:var(--muted);padding:6px 12px}.chip.active{border-color:#0f9f8752;background:var(--accent-soft);color:#075d50;font-weight:800}.application-list-view,.followup-view{overflow:hidden}.stage-summary{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:10px;margin-bottom:14px}.stage-chip{min-height:62px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:10px 12px;text-align:left}.stage-chip span{display:block;color:var(--muted);font-size:12px}.stage-chip strong{display:block;margin-top:7px;font-size:20px}.stage-chip.active{border-color:#0f9f8757;background:var(--accent-soft)}.application-table td{vertical-align:middle}.followup-table th:first-child,.ledger-table th:first-child{width:30%}.followup-table td,.ledger-table td{vertical-align:middle}.stacked-cell{display:grid;min-width:0;gap:4px}.stacked-cell strong,.stacked-cell span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stacked-cell span{color:var(--muted);font-size:12px}.project-cell{display:grid;min-width:0;gap:4px}.project-cell strong{color:var(--ink)}.project-cell strong,.project-cell span,.project-cell small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-cell span,.project-cell small{color:var(--muted);font-size:12px}.status-select{width:136px;height:34px;background:#f7fbf9}.deadline-pill{display:inline-flex;align-items:center;min-height:28px;border:1px solid #e1e9e5;border-radius:999px;background:#fbfcfa;color:#43504d;padding:0 10px;font-size:12px;font-weight:800}.deadline-pill.urgent{border-color:#c8861a47;background:#fff3d7;color:#8a5a0d}.deadline-pill.overdue{border-color:#bd4b4347;background:#fde7e5;color:#8b2b25}.note-cell{max-width:240px;color:#43504d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-tags{display:flex;flex-wrap:wrap;gap:6px}.file-tags span{border:1px solid #e1e9e5;border-radius:7px;color:#43504d;background:#fbfcfa;padding:5px 7px;font-size:12px}.compact-tags{max-width:260px;overflow:hidden;flex-wrap:nowrap}.compact-tags span{white-space:nowrap}.status-message{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);margin-bottom:14px;padding:10px 12px;font-size:13px}.status-message.error{border-color:#bd4b433d;background:#fde7e5;color:#8b2b25}.panel,.file-center-layout .panel,.dictionary-layout .panel{border:1px solid var(--line);border-radius:8px;background:#ffffffe0;padding:18px}.panel-header{margin-bottom:16px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding-top:12px;color:var(--muted);font-size:12px}.pagination>div{display:flex;align-items:center;gap:8px}.pagination .ghost-button{height:32px;padding:0 10px}.split-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.compact-select{width:150px}.wide-select{width:280px}.inline-controls{display:flex;align-items:center;gap:10px}.data-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.data-table th,.data-table td{border-bottom:1px solid var(--line);padding:12px 10px;text-align:left;height:58px}.data-table th{color:var(--muted);font-weight:700}.empty-cell{color:var(--muted);text-align:center!important;padding:28px 10px!important}.muted{color:var(--muted);background:#f7f8f5b8}.muted-text{color:var(--muted)}.version-pill{display:inline-flex;align-items:center;height:26px;border-radius:999px;border:1px solid rgba(15,139,118,.26);background:var(--accent-soft);color:#075d50;padding:0 9px;font-size:12px;font-weight:800}.table-link{color:var(--accent);font-weight:800;text-decoration:none}.table-link:hover{text-decoration:underline}.students-layout,.advisors-layout,.users-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px}.file-center-layout{display:grid;grid-template-columns:minmax(320px,360px) minmax(0,1fr);gap:14px}.students-layout.form-collapsed,.advisors-layout.form-collapsed,.users-layout.form-collapsed,.file-center-layout.form-collapsed{grid-template-columns:minmax(0,1fr)}.permission-panel{grid-column:1 / -1}.permission-table th:first-child,.permission-table td:first-child{width:120px}.permission-table td{vertical-align:top}.file-center-layout .panel{min-width:0}.form-panel{display:grid;gap:12px;align-self:start}.form-panel label,.form-grid label{min-width:0}.field-note{color:var(--muted);font-size:12px;line-height:1.4}.version-history{border:1px solid #e3ebe8;border-radius:8px;background:#fbfdfc;padding:12px}.version-history .version-list{max-height:230px;overflow-y:auto;padding-right:2px}.version-history-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.version-history-header strong{color:var(--ink);font-size:14px}.version-history-header span,.empty-history{color:var(--muted);font-size:12px}.version-list{display:grid;gap:8px}.version-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #edf3f0;border-radius:8px;background:#fff;padding:10px}.version-item.active{border-color:#0f8b7661;background:var(--accent-soft)}.version-item>div:first-child{min-width:0;display:grid;gap:5px}.version-item strong{min-width:0;overflow:hidden;color:var(--ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.version-item small{color:var(--muted)}.version-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.version-toggle{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--ink);padding:0;cursor:pointer}.version-toggle small{color:var(--muted);font-weight:700}.version-detail-row>td{background:#f8fbfa}.file-version-panel{display:grid;gap:12px;max-height:320px;overflow-y:auto;border:1px solid #e3ebe8;border-radius:8px;background:#fff;padding:14px}.file-version-panel-header,.file-version-main{display:flex;align-items:center;justify-content:space-between;gap:12px}.file-version-panel-header span,.file-version-card p{color:var(--muted)}.file-version-list{display:grid;gap:10px}.file-version-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,220px) auto;gap:12px;align-items:center;border:1px solid #edf3f0;border-radius:8px;background:#fbfdfc;padding:10px 12px}.file-version-card.active{border-color:#0f8b7657;background:var(--accent-soft)}.file-version-main{justify-content:flex-start}.file-version-card p{margin:0}.form-actions{display:flex;align-items:center;gap:10px}.form-actions.inline{align-self:end}.checkbox-field{display:flex;align-items:center;gap:8px}.checkbox-field input{width:16px;height:16px}.inline-select{width:150px;height:34px;background:#f7fbf9}.status-pill{display:inline-flex;align-items:center;height:26px;border-radius:999px;border:1px solid rgba(15,139,118,.26);background:var(--accent-soft);color:#075d50;padding:0 9px;font-size:12px;font-weight:800}.status-pill.off{border-color:#e1e9e5;background:#f3f5f2;color:var(--muted)}.dictionary-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px}.dictionary-form{display:grid;grid-template-columns:150px minmax(180px,1fr) 160px minmax(180px,1fr) auto;gap:10px;align-items:end;margin-bottom:16px}label{display:grid;gap:7px;color:var(--muted);font-size:13px}.text-button{border:0;background:transparent;color:var(--accent);font-weight:800}.name-link{border:0;background:transparent;color:var(--ink);padding:0;font:inherit;font-weight:900;text-align:left}.name-link:hover{color:var(--accent);text-decoration:underline}.autocomplete{position:relative;margin-bottom:16px}.suggestion-list{position:absolute;z-index:5;top:68px;left:0;right:0;max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 16px 36px #17211f1f}.suggestion-list button{display:grid;width:100%;border:0;border-bottom:1px solid #eef3f0;background:#fff;padding:10px 12px;text-align:left}.suggestion-list button:hover{background:var(--accent-soft)}.suggestion-list strong{color:var(--ink)}.suggestion-list span,.selected-school{color:var(--muted);font-size:12px}.drawer-backdrop{position:fixed;inset:0;z-index:20;display:flex;justify-content:flex-end;background:#10242147}.drawer-panel{width:480px;max-width:100%;height:100vh;overflow-y:auto;border-left:1px solid var(--line);background:#fff;box-shadow:-24px 0 64px #17211f2e;padding:22px;display:grid;align-content:start;gap:14px}.student-detail-panel{width:560px}.detail-section{display:grid;gap:12px;border-top:1px solid var(--line);padding-top:16px}.detail-section h3{margin:0;color:var(--ink);font-size:15px}.detail-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-section-title span{color:var(--muted);font-size:12px;font-weight:800}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.detail-grid div{border:1px solid #edf3f0;border-radius:8px;background:#fbfdfc;padding:10px 12px}.detail-grid dt,.detail-list-item span,.detail-list-item small{color:var(--muted);font-size:12px}.detail-grid dd{margin:4px 0 0;color:var(--ink);font-weight:800;word-break:break-word}.detail-list{display:grid;gap:10px}.detail-list.compact{gap:8px}.detail-list-item{display:grid;gap:8px;border:1px solid #edf3f0;border-radius:8px;background:#fbfdfc;padding:12px}.detail-list-item>div:first-child{display:grid;gap:4px}.detail-list-item p{margin:0;color:#43504d}.detail-meta,.file-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.form-grid{display:grid;gap:10px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
