/* 手动投递表的独立外观层，沿用现有页面与交互。 */
:root{--blue:#285fd0;--border:#e1e8f1;color:#20314b;background:#f5f7fb}
body{background:#f5f7fb}
button,input,select,textarea{transition:background-color .16s,border-color .16s,box-shadow .16s}
button{border-radius:10px;font-weight:650}
.primary{background:#285fd0;box-shadow:0 3px 8px #285fd01a}
.primary:hover{background:#204fac}
.secondary{background:#f4f7fd;border-color:#dce5f3;color:#355f9b}
.secondary:hover{background:#eaf1fb}
input,select,textarea{border-color:#dce4ef;border-radius:10px}
input:hover,select:hover,textarea:hover{border-color:#b4c6df}
input:focus,select:focus,textarea:focus{border-color:#6d96e8;box-shadow:0 0 0 3px #285fd010}
header{height:88px;gap:34px;padding:0 max(28px,5vw);background:#fffffff5;border-bottom:1px solid #e3e9f2;position:sticky;top:0;z-index:5}
.brand{letter-spacing:.015em;color:#213957}
.mark{background:#285fd0;border-radius:12px;width:40px;height:40px;box-shadow:0 3px 8px #285fd012}
header nav{flex-wrap:wrap;height:auto;gap:7px}
.nav{color:#718097;white-space:nowrap;padding:11px 15px}
.nav.active{background:#eaf1ff;color:#285fd0}
.nwpu-nav{display:inline-flex;align-items:center;white-space:nowrap;color:#285fd0;font-size:.9rem;font-weight:650;padding:11px 15px;background:#f1f5ff;border:1px solid #dce7fd;border-radius:10px;text-decoration:none}
.nwpu-nav:hover{background:#e8f0ff;text-decoration:none}
main{max-width:1410px;padding-top:38px}
.heading{margin-bottom:28px;align-items:center}
.heading h1{font-size:2rem;letter-spacing:-.035em;color:#203653}
.heading p{color:#7a879a;line-height:1.65}
.heading>.primary{padding:13px 21px;white-space:nowrap}
.school-entry{display:flex;flex-wrap:wrap;gap:9px 22px;align-items:center;padding:18px 22px;margin:-6px 0 25px;background:#edf3ff;border:1px solid #d9e5fc;border-radius:13px}
.school-entry a{font-weight:700;white-space:nowrap;color:#285fd0}
.school-entry span{color:#687e9d;font-size:.9rem;line-height:1.6}
.counts{gap:16px;margin-bottom:28px}
.count{border:1px solid #e3e9f2;border-top:1px solid #e3e9f2;border-radius:13px;padding:20px 23px;box-shadow:0 3px 16px #233f6303}
.count:first-child{border-top-color:#e3e9f2;background:#fff}
.count span{font-size:.86rem;color:#8090a5}
.count strong{font-size:1.8rem;font-weight:680;margin-top:12px;color:#344b6b}
.count:nth-child(2) strong{color:#587bb4}
.count:nth-child(3) strong{color:#8072b0}
.count:nth-child(4) strong{color:#4d9779}
.toolbar{gap:11px;margin-bottom:16px}
.toolbar input{width:340px;background:#fff}
.toolbar select{background:#fff}
.table-wrap{border-color:#e2e8f1;border-radius:15px;background:#fff;box-shadow:0 5px 24px #233f6304;min-height:270px}
table{min-width:890px}
th{padding:17px 21px;color:#8391a5;background:#fafbfd;font-size:.83rem;font-weight:600}
td{padding:23px 21px;border-color:#edf0f5}
tbody tr{transition:background-color .15s}
tbody tr:hover{background:#fcfdff}
td strong{font-size:1rem;font-weight:650;color:#28415f}
.subline{color:#8390a2;font-size:.85rem;line-height:1.75}
.tag{background:#f0f4fa;color:#6b83a4;font-size:.75rem;padding:3px 7px;margin-top:8px}
.status-select{font-size:.83rem;font-weight:600;min-width:118px;border:1px solid transparent;padding:9px 10px;background:#f1f5fb;color:#6680a4}
.status-select[data-status="已投递"]{background:#eaf1ff;color:#527bb9}
.status-select[data-status="笔试"],.status-select[data-status="面试"]{background:#f1eefb;color:#8270b0}
.status-select[data-status="录用"]{background:#e9f5ee;color:#538b6d}
.status-select[data-status="放弃"]{background:#f0f2f5;color:#8994a4}
td textarea{border-color:#e9edf3;background:#fcfdff;min-height:74px;padding:10px 11px;min-width:185px;font-size:.83rem}
td textarea::placeholder{color:#a0aab9}
.manual-origin{display:inline-block;font-size:.81rem;color:#98a3b2;margin-top:8px}
.empty{padding:52px 24px 60px}
.empty-icon{background:#f0f5ff;color:#7f9fce;border-radius:18px;width:66px;height:66px;line-height:66px;margin-bottom:22px}
.empty h2{color:#4c617d;font-size:1.1rem}
.empty p{line-height:1.8;color:#94a0b1}
.empty button{padding:11px 22px}
.footnote{margin-top:19px;font-size:.8rem;color:#98a4b5}
.panel{border-color:#e2e8f1;border-radius:15px;box-shadow:0 4px 20px #233f6303}
.panel h2{color:#334c6d}
dialog{border-color:#e1e8f1;border-radius:18px;padding:30px;max-width:calc(100% - 28px);box-shadow:0 22px 90px #16305124}
dialog::backdrop{background:#21375450;backdrop-filter:blur(3px)}
.dialog-head h2{color:#294260;font-size:1.25rem;margin-bottom:4px}
.dialog-head .eyebrow{color:#8e9db1;font-size:.78rem;margin-bottom:8px}
.close{color:#8e9cb0;background:#f5f7fa;border-radius:9px}
.manual-add{display:grid;gap:10px;margin-top:24px;padding-top:22px;border-top:1px solid #edf0f5}
.manual-add>strong{font-size:.9rem;color:#6e7f96;font-weight:600}
.manual-add label{color:#6e7f96;font-size:.875rem;margin-top:3px}
.manual-add input{width:100%;padding:12px 13px}
.manual-add button{justify-self:start;margin-top:7px;padding:12px 23px}
#source-search{margin-top:25px}
#source-search #candidates{max-height:36dvh;overflow-y:auto;overscroll-behavior:contain}
#source-search summary{color:#355f9b;font-size:.9rem;font-weight:600}
#source-search #company-search{margin-top:18px}
@media(max-width:1000px){header{gap:20px;padding-left:25px;padding-right:25px}.nav,.nwpu-nav{padding:10px 12px;font-size:.85rem}}
@media(max-width:760px){
 header{position:static;padding:18px;gap:12px;height:auto;min-height:0}
 .brand{font-size:.98rem}.mark{width:35px;height:35px;border-radius:10px}
 header nav{order:3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));flex-basis:100%;gap:6px;margin-top:3px}
 header nav .nav{justify-content:center;text-align:center;min-width:0;padding:11px 8px}
 #logout{margin-left:auto}
 main{padding:28px 17px 48px}
 .heading{gap:18px;align-items:stretch;margin-bottom:24px}
 .heading h1{font-size:1.7rem}
 .heading p{font-size:.88rem}
 .heading>.primary{width:100%;padding:13px}
 .school-entry{padding:17px 18px;align-items:flex-start;flex-direction:column;gap:6px;border-radius:12px}
 .school-entry span{font-size:.82rem}
 .counts{gap:10px;margin-bottom:23px}
 .count{padding:17px 18px;border-radius:12px}
 .count strong{font-size:1.6rem;margin-top:9px}
 .toolbar input{width:100%}
 .toolbar select{flex:1}
 .table-wrap{background:transparent;border:0;box-shadow:none;overflow:visible;min-height:180px}
 table,tbody{display:block;width:100%;min-width:0}
 thead{display:none}
 tbody tr{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;padding:20px;border:1px solid #e1e8f2;border-radius:14px;background:#fff;margin-bottom:13px;box-shadow:0 3px 16px #233f6303}
 td,td:first-child,td:nth-child(4){display:block;width:auto;min-width:0;border:0;padding:0}
 td[data-label]::before{content:attr(data-label);display:block;color:#9aa6b6;font-size:.73rem;letter-spacing:.03em;margin-bottom:6px}
 td[data-label="公司 / 岗位"]::before,td[data-label="招聘信息"]::before{display:none}
 td strong{font-size:1.02rem;margin-bottom:5px}
 .subline{font-size:.83rem}
 .status-select{width:100%;min-width:0}
 td textarea{width:100%;min-width:0;min-height:76px}
 .manual-origin{margin:0;font-size:.76rem}
 .empty{background:#fff;border:1px solid #e1e8f2;border-radius:14px;padding:40px 20px 44px}
 .empty p{font-size:.84rem}
 .panel{padding:23px 21px}
 dialog{padding:24px 22px;border-radius:16px}
 .manual-add button{justify-self:stretch}
 .candidate{flex-direction:column;align-items:stretch}
 .candidate button{align-self:flex-start}
}

/* 关键触控目标与筛选空态；缺少的辅助信息不挤占手机卡片。 */
.close{min-width:44px;min-height:44px}.status-select{min-height:44px}dialog{max-height:min(85dvh,850px)}@media(max-width:760px){header nav .nav{min-height:44px}td.empty-meta{display:none}dialog{max-height:90dvh}}

/* 只保留一个官网主入口；统计和筛选让位于手动记录与真实临近截止。 */
.nwpu-nav{background:#e8f0ff;border-color:#bed2f6;color:#2459bf;font-weight:700}
.school-entry{display:none}
.counts{display:flex;flex-wrap:wrap;gap:12px 25px;margin:0 0 21px;padding:0 2px}
.count,.count:first-child{display:flex;align-items:baseline;gap:9px;border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}
.count span{font-size:.82rem;color:#91a0b2}
.count strong{font-size:1.03rem;margin:0;font-weight:650;color:#637b9d}
.count:nth-child(n) strong{color:#637b9d}
.toolbar{margin-bottom:15px}
.toolbar input,.toolbar select{font-size:.84rem;padding:10px 12px}
.manual-origin{display:none}
.deadline-note{display:inline-block;font-size:.8rem;margin-top:7px;border-radius:6px;padding:4px 7px;line-height:1.4}
.deadline-note.today{background:#ffebe9;color:#b95249}
.deadline-note.tomorrow{background:#fff4de;color:#ac791e}
tbody tr.deadline-near td:first-child{box-shadow:inset 3px 0 #edba67}
@media(max-width:760px){
 header nav{display:flex;flex-wrap:wrap;gap:6px}
 header nav .nav{flex:1;padding:11px 8px}
 header nav .nwpu-nav{flex-basis:100%;justify-content:center}
 .counts{gap:10px 16px;margin-bottom:20px}
 .count,.count:first-child{flex-basis:calc(50% - 10px);padding:0}
 .count strong{font-size:1rem}
 td.empty-links{display:none}
 tbody tr.deadline-near{border-color:#ecc78a}
 tbody tr.deadline-near td:first-child{box-shadow:none}
}

/* 个人岗位与截图识别只在对应表单和记录内展示。 */
.manual-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:24px;border-top:1px solid #edf0f5;padding-top:18px}
.manual-heading+.manual-add{margin-top:12px;padding-top:0;border-top:0}
.manual-add textarea{width:100%;min-width:0;line-height:1.7}
.manual-add input[readonly]{background:#f5f7fb;color:#6e7f96}
.edit-role{display:block;padding:7px 0;margin-top:8px;font-size:.8rem;color:#527bb9}
.role-description{margin-top:12px;font-size:.84rem}.role-description summary{color:#6e7f96}.role-description p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;margin:10px 0;color:#65778b}
.role-salary{margin:5px 0;font-size:.88rem;color:#355f9b}
.ocr-panel{border:1px dashed #b8cbe7;border-radius:10px;padding:16px;margin:10px 0;background:#f8faff;display:grid;gap:8px}
.ocr-panel:focus-within{border-color:#527bb9}.ocr-panel p{margin:0;line-height:1.6}.ocr-panel input[type=file]{width:100%;font-size:.8rem}.ocr-panel textarea{font-size:.85rem;background:#fff}.ocr-panel button{justify-self:start;margin:0;padding:9px 12px}.ocr-panel button[hidden]{display:none}
@media(max-width:760px){.edit-role{min-height:44px}.manual-heading{align-items:flex-start}.ocr-panel{padding:12px}.ocr-panel button{width:100%}}

.ocr-panel details{margin-top:4px}.ocr-panel details textarea{margin:10px 0}.ocr-panel details summary{font-size:.8rem;color:#65778b}

/* 文件拖入时提示识别区域，原生文件输入由轻量选择按钮代替。 */
.ocr-panel.drag-over{border:2px solid #527bb9;background:#edf4ff;box-shadow:0 0 0 4px #527bb914}
.ocr-panel input[type=file][hidden]{display:none}

/* 已发布清单的投递提示，同时保留文字，避免只凭颜色判断。 */
.catalog-card.catalog-applied{background:#f0faf4;border-color:#a9d8bb;box-shadow:inset 4px 0 0 #4a9b6b}
.catalog-status{display:inline-flex;align-items:center;margin:0 0 6px;padding:4px 9px;border-radius:6px;font-size:.8rem;font-weight:650;line-height:1.5;background:#edf1f6;color:#607087}
.catalog-status[hidden]{display:none}
.catalog-status-applied{background:#dcefe3;color:#246441}
.catalog-added-button:disabled{opacity:1;cursor:default}
.catalog-applied .catalog-added-button:disabled{background:#dcefe3;border-color:#a9d8bb;color:#246441}

/* 公告主操作，以及新增投递的独立滚动区和固定确认区。 */
.catalog-source-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 17px;border-radius:8px;background:#285fd0;color:#fff;font-size:.9rem;font-weight:650;white-space:nowrap;box-shadow:0 3px 8px #285fd01a}
.catalog-source-link:hover{background:#204fac;color:#fff;text-decoration:none}
#add-dialog{padding:0;overflow:hidden}
#add-dialog[open]{display:flex;flex-direction:column}
#add-dialog .dialog-scroll{padding:30px;overflow-y:auto;min-height:0;overscroll-behavior:contain}
#add-dialog .dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;padding:16px 30px;border-top:1px solid #e1e8f1;background:#fff}
#add-dialog .dialog-actions button{min-height:44px;white-space:nowrap;flex-shrink:0}
#add-dialog .dialog-actions .muted{font-size:.8rem}
.application-optional{margin:8px 0 0;border:1px solid #e1e8f1;border-radius:10px;padding:14px;font-size:.9rem}
.application-optional>summary{font-weight:600;color:#355f9b;line-height:1.6}
.application-optional-fields{display:grid;gap:10px;margin-top:12px}
@media(max-width:760px){#add-dialog .dialog-scroll{padding:22px}#add-dialog .dialog-actions{padding:14px 22px;flex-wrap:wrap;gap:10px}#add-dialog .dialog-actions button{width:100%}}

/* 清单投递筛选和直接页码跳转，窄屏自动换行。 */
.catalog-controls{grid-template-columns:minmax(220px,2fr) repeat(4,minmax(115px,1fr))}
.catalog-pager{flex-wrap:wrap;gap:14px 18px}
.catalog-jump,.catalog-jump label{display:flex;align-items:center;gap:9px}
.catalog-jump{margin:0;font-size:.875rem;color:#607087}
.catalog-jump input{width:74px;min-width:0;padding:10px 8px;text-align:center}
@media(max-width:1000px){.catalog-controls{grid-template-columns:1fr 1fr}.catalog-controls input[type=search]{grid-column:1/-1}}
@media(max-width:520px){.catalog-controls{grid-template-columns:1fr}.catalog-jump{justify-content:center;flex-basis:100%}}

/* 公司标题直接打开公告；公告和入表操作横向并排。 */
.catalog-company-link{color:inherit;text-decoration:none}
.catalog-company-link:hover{color:#285fd0;text-decoration:underline;text-underline-offset:4px}
.catalog-actions{display:flex;align-items:center;justify-content:flex-start;gap:12px}
.catalog-actions>button,.catalog-actions>.catalog-source-link{min-height:44px;white-space:nowrap}
@media(max-width:760px){.catalog-card{flex-direction:column}.catalog-actions{width:100%}}
@media(max-width:520px){.catalog-actions{gap:8px}.catalog-actions>button,.catalog-actions>.catalog-source-link{padding:11px 10px;font-size:.8rem;flex:1;text-align:center}}

/* 投递时间紧随进度展示；编辑区支持仅日期及多轮面试。 */
.application-timeline{margin-top:12px;display:grid;gap:5px;font-size:.78rem;color:#65778b;line-height:1.6}
.timeline-line{overflow-wrap:anywhere}
.timeline-edit{justify-self:start;padding:5px 0;color:#527bb9;font-size:.8rem;min-height:36px}
.timeline-dialog{width:min(560px,calc(100vw - 32px));max-height:85vh;overflow-y:auto}
.timeline-dialog h2{font-size:1.2rem;overflow-wrap:anywhere}
.timeline-fields{display:grid;gap:18px;margin:20px 0}
.timeline-inputs{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px}
.timeline-inputs>div{min-width:0}.timeline-dialog label{display:block;margin-bottom:7px;font-size:.88rem}
.timeline-dialog input{width:100%;min-width:0;box-sizing:border-box}
.timeline-round{padding:16px;border:1px solid #e1e8f1;border-radius:10px;margin-bottom:12px}
.timeline-round>.timeline-inputs{margin-top:14px}.timeline-round>button{margin-top:8px}
@media(max-width:760px){.timeline-edit{min-height:44px}.timeline-dialog{padding:20px}.timeline-dialog button{min-height:44px}}
