:root{
  --blue:#246bfd;--blue-hover:#1d5be0;--blue-soft:#eef4ff;
  --orange:#ff6b22;--orange-hover:#e95b16;--orange-soft:#fff3eb;
  --green:#16a66a;--green-soft:#eaf8f1;--amber:#f59e0b;--amber-soft:#fff7e6;
  --red:#e5484d;--red-soft:#fff0f0;--ink:#111827;--text:#4b5563;--muted:#8a94a6;
  --line:#e5e7eb;--surface:#fff;--bg:#f5f7fa;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;
  color:var(--ink);font-synthesis:none
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px;line-height:1.57;color:var(--text)}
button,input,select,textarea{font:inherit}button,a{transition:.18s ease}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}
.hidden{display:none!important}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-shell{min-width:1180px;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:216px;background:#111827;color:#c7cdd8;z-index:20}
.admin-logo{height:64px;display:flex;align-items:center;padding:0 20px;color:#fff;font-size:17px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08)}
.logo-mark{width:34px;height:34px;border-radius:9px;background:linear-gradient(145deg,#fff,#d9e5ff);color:var(--blue);display:inline-grid;place-items:center;font-weight:700;margin-right:10px}
.sidebar nav{padding:14px 10px}.side-link{height:46px;display:flex;align-items:center;gap:12px;padding:0 14px;color:#c7cdd8;text-decoration:none;border-radius:7px;margin-bottom:4px}
.side-link:hover{background:rgba(255,255,255,.06);color:#fff}.side-link.active{background:var(--blue);color:#fff}.side-link svg{width:18px;height:18px}
.subnav{padding-left:22px}.subnav .side-link{height:40px;font-size:13px}
.admin-main{margin-left:216px}.admin-topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:15}
.crumb{color:var(--muted)}.top-actions,.row-actions,.inline,.toolbar,.filters,.login-box{display:flex;align-items:center;gap:10px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:600}
.admin-content{padding:24px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.page-title{font-size:24px;line-height:32px;margin:0;color:var(--ink);font-weight:600}.page-desc{margin:3px 0 0;color:var(--muted)}
.card{background:#fff;border:1px solid #e8ebf0;border-radius:8px}.card + .card{margin-top:16px}.card-head{padding:18px 20px;border-bottom:1px solid #eef0f3;display:flex;align-items:center;justify-content:space-between}.card-title{margin:0;font-size:16px;line-height:24px;color:var(--ink)}.card-body{padding:20px}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric-card{padding:18px 20px;min-height:112px;position:relative;cursor:pointer}.metric-card:hover{border-color:#bbd0ff;transform:translateY(-1px)}.metric-label{color:var(--text)}.metric-value{font-size:28px;line-height:36px;color:var(--ink);font-weight:600;margin:8px 0 2px}.metric-note{font-size:12px;color:var(--muted)}.metric-icon{position:absolute;right:18px;top:18px;width:36px;height:36px;border-radius:9px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}
.todo-list{display:grid;grid-template-columns:repeat(2,1fr)}.todo-row{min-height:82px;padding:16px 20px;display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:14px;border-bottom:1px solid #eef0f3}.todo-row:nth-child(odd){border-right:1px solid #eef0f3}.todo-row:nth-last-child(-n+2){border-bottom:0}.todo-row b{color:var(--ink)}.todo-row p{margin:3px 0 0;color:var(--muted);font-size:12px}.todo-icon{width:38px;height:38px;border-radius:9px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:600}
.section-heading{font-size:20px;line-height:28px;margin:28px 0 14px;color:var(--ink)}.event-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.event-card{padding:18px 20px;cursor:pointer}.event-card:hover{border-color:#bbd0ff}.event-top{display:flex;justify-content:space-between;gap:12px}.event-name{font-weight:600;color:var(--ink);font-size:16px}.event-meta{color:var(--muted);font-size:12px;margin:8px 0 14px}.event-stats{display:flex;justify-content:space-between;border-top:1px solid #eef0f3;padding-top:12px}.event-stats b{display:block;color:var(--ink);font-size:18px}
.btn{height:36px;padding:0 16px;border-radius:6px;border:1px solid transparent;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-hover)}.btn-secondary{background:#fff;color:var(--ink);border-color:#d9dee7}.btn-secondary:hover{background:#f5f8ff;border-color:#bbd0ff}.btn-text{background:transparent;color:var(--blue);border-color:transparent;padding:0 5px}.btn-danger{background:var(--red);color:#fff}.btn-orange{background:var(--orange);color:#fff}.btn-orange:hover{background:var(--orange-hover)}.btn-orange-outline{background:#fff;color:var(--orange);border-color:var(--orange)}.icon-btn{width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:6px;color:var(--text);display:grid;place-items:center}.icon-btn:hover{border-color:#bbc3cf;background:#f8fafc}
.input,.select,.textarea{height:36px;border:1px solid #d9dee7;border-radius:6px;background:#fff;padding:0 12px;color:var(--ink);outline:none}.textarea{height:100px;padding:10px 12px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(36,107,253,.12)}.search-input{width:280px}.filters{padding:16px 20px;flex-wrap:wrap}.filter-label{display:flex;align-items:center;gap:8px}.filter-label span{color:var(--text);white-space:nowrap}
.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;table-layout:fixed}.data-table th{height:44px;background:#f7f8fa;color:#596273;font-size:13px;font-weight:500;text-align:left;padding:0 16px;border-bottom:1px solid var(--line)}.data-table td{height:58px;padding:8px 16px;border-bottom:1px solid #eef0f3;color:var(--text);vertical-align:middle}.data-table tbody tr:hover{background:#f5f8ff}.data-table tr.selected{background:#eef4ff}.data-table .primary{color:var(--ink);font-weight:500}.check{width:16px;height:16px;accent-color:var(--blue)}
.task-table th,.task-table td,.exhibitor-table th,.exhibitor-table td{padding-left:10px;padding-right:10px}.task-table th:last-child,.exhibitor-table th:last-child{width:170px}.task-table .row-actions,.exhibitor-table .row-actions{gap:4px;white-space:nowrap}.task-card-head{display:block}.task-card-head .inline{margin-top:14px;flex-wrap:wrap;justify-content:flex-start}
.tag{height:24px;padding:0 8px;border-radius:4px;display:inline-flex;align-items:center;font-size:12px;font-weight:500}.tag-blue{background:var(--blue-soft);color:var(--blue)}.tag-green{background:var(--green-soft);color:var(--green)}.tag-amber{background:var(--amber-soft);color:#c57b00}.tag-red{background:var(--red-soft);color:var(--red)}.tag-gray{background:#f1f3f5;color:#677180}.tag-orange{background:var(--orange-soft);color:var(--orange)}
.progress{height:6px;border-radius:4px;background:#e8edf5;overflow:hidden}.progress span{display:block;height:100%;border-radius:4px;background:var(--blue)}.progress-meta{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}.batch-bar{padding:10px 16px;background:var(--blue-soft);border-bottom:1px solid #d6e2ff;display:flex;align-items:center;justify-content:space-between}
.pagination{padding:14px 18px;display:flex;justify-content:flex-end;align-items:center;gap:8px}.page-btn{min-width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:5px}.page-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}
.empty{padding:52px 24px;text-align:center}.empty h3{margin:0 0 6px;color:var(--ink);font-size:16px}.empty p{margin:0 0 16px;color:var(--muted)}
.modal-layer{position:fixed;inset:0;background:rgba(17,24,39,.48);z-index:100;display:flex;align-items:center;justify-content:center;opacity:0;transition:.18s}.modal-layer.open{opacity:1}.modal{width:calc(100% - 48px);background:#fff;border-radius:10px;box-shadow:0 18px 50px rgba(17,24,39,.22);transform:translateY(8px);transition:.18s;max-height:88vh;display:flex;flex-direction:column}.modal-layer.open .modal{transform:none}.modal-header{min-height:58px;padding:0 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.modal-header h3{font-size:18px;margin:0;color:var(--ink)}.modal-body{padding:22px 24px;overflow:auto}.modal-footer{min-height:64px;padding:12px 24px;display:flex;align-items:center;justify-content:flex-end;gap:10px;border-top:1px solid var(--line)}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field label{color:var(--ink);font-weight:500}.required:after{content:" *";color:var(--red)}.help{font-size:12px;color:var(--muted)}.error-text{font-size:12px;color:var(--red)}
.toast-host{position:fixed;top:22px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px}.toast{min-width:260px;padding:11px 16px;border-radius:7px;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.16);opacity:0;transform:translateY(-8px);transition:.2s}.toast.show{opacity:1;transform:none}.toast-success{background:var(--green)}.toast-error{background:var(--red)}.toast-info{background:#344054}
.preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.preview-image{aspect-ratio:4/3;border-radius:8px;background:linear-gradient(135deg,#ffeadf,#fff7ef 46%,#ffd6bf);border:1px solid #ffd2bc;display:grid;place-items:center;color:#9b4b21;font-weight:600;cursor:pointer;position:relative;overflow:hidden}.preview-image:before{content:"";position:absolute;width:68%;height:45%;border:2px solid rgba(255,107,34,.25);transform:skew(-10deg);border-radius:8px}.preview-image span{position:relative;z-index:1}
.detail-summary h2{margin:0;color:var(--ink);font-size:22px}.detail-summary p{margin:6px 0 0;color:var(--muted)}.detail-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.detail-kpis span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.detail-kpis b{display:block;color:var(--ink);margin-bottom:8px}.process-card{margin-top:16px}.process-timeline{position:relative;padding-left:58px}.process-timeline:before{content:"";position:absolute;left:37px;top:28px;bottom:28px;width:2px;background:#dfe5ef}.process-node{position:relative;margin-bottom:14px}.process-num{position:absolute;left:-58px;top:8px;width:36px;height:36px;border-radius:50%;background:#fff;border:2px solid #cdd6e4;color:#738095;display:grid;place-items:center;font-weight:600;z-index:1}.process-node.active .process-num{background:var(--blue);color:#fff;border-color:var(--blue)}.process-node.done .process-num{background:var(--green);color:#fff;border-color:var(--green)}.process-node-card{border:1px solid #dfe5ee;border-radius:10px;padding:18px}.process-node.active .process-node-card{border-color:#76a3ff;box-shadow:0 0 0 3px rgba(36,107,253,.08)}.process-node-head{display:flex;justify-content:space-between}.process-node-head h3{margin:0;color:var(--ink);font-size:16px}.process-node-head p{margin:5px 0 0;color:var(--muted)}.process-data{display:grid;grid-template-columns:140px 1fr;gap:10px 18px;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.process-data span{color:#667085}.process-data b{color:var(--ink)}
.assign-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}.assign-panel{border:1px solid #dfe5ee;border-radius:10px;min-height:520px;overflow:hidden}.assign-panel-head{padding:16px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line)}.assign-panel-head h3{margin:0;color:var(--ink)}.assign-panel-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.assign-filters{padding:14px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.assign-checkall{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#f7f8fa}.assign-checkall span{margin-left:auto;color:var(--muted);font-size:12px}.assign-list{max-height:300px;overflow:auto}.assign-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid #eef0f3}.assign-item:hover{background:#f5f8ff}.assign-item small{display:block;color:var(--muted);margin-top:3px}.selected-count{font-size:24px;color:var(--blue)}.selected-empty{padding:140px 20px;text-align:center;color:var(--muted)}.selected-empty h3{color:var(--ink)}.selected-list{padding:8px 14px}.selected-item{padding:10px 0;border-bottom:1px solid #eef0f3;display:flex;justify-content:space-between}.clear-assigned{margin:8px 14px}.modal-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);padding-bottom:12px}.form-section-title{font-size:16px;color:var(--ink);margin:22px 0 14px}.qualification-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.detail-tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:-6px 0 20px}.detail-tab{height:42px;border:0;background:transparent;color:var(--text);font-weight:500}.detail-tab.active{color:var(--blue);border-bottom:2px solid var(--blue)}.detail-section{margin-top:22px}.detail-section h3{font-size:16px;color:var(--ink);margin:0 0 14px}.detail-info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.detail-info-grid>div{padding:14px;background:#f7f8fa;border-radius:7px}.detail-info-grid span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.detail-info-grid b{color:var(--ink)}.document-preview{height:480px;background:#f2f4f7;border:1px solid #dfe3e8;border-radius:8px;display:grid;place-items:center;text-align:center}.document-preview b{font-size:20px;color:var(--ink)}.document-preview p{color:var(--muted)}.confirm-panel{padding:16px;border:1px solid #d6e2ff;background:var(--blue-soft);border-radius:8px;margin-bottom:18px}.confirm-panel.danger{background:var(--red-soft);border-color:#ffd1d1}.confirm-panel h3{margin:0 0 6px;color:var(--ink)}.confirm-panel p{margin:0;color:var(--text)}.notice-document{max-width:720px;margin:auto;padding:34px 46px;border:1px solid #e4e7ec;background:#fffdf9;min-height:470px}.notice-document h2{text-align:center;color:var(--ink);line-height:1.6}.notice-document p{line-height:2;color:#344054}.notice-document .signature{text-align:right;margin-top:50px}.scheme-preview-list{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:20px}.scheme-preview-list section{border:1px solid var(--line);border-radius:8px;overflow:hidden}.scheme-preview-list h3{padding:0 16px}
.choice-panel{display:flex;gap:10px;flex-wrap:wrap;padding:12px;border:1px solid var(--line);border-radius:7px;background:#fafbfc}.choice-panel label{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid #dce1e8;border-radius:6px;background:#fff}.notice-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;min-height:700px;border-top:1px solid var(--line)}.notice-editor-main{min-width:0;background:#f1f3f6}.editor-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px;background:#fff;border-bottom:1px solid var(--line)}.editor-toolbar .btn{padding:0 12px}.editor-canvas{padding:28px;overflow:auto}.notice-editor{width:794px;min-height:1123px;margin:auto;padding:64px 70px;background:#fff;border:1px solid #d9dee7;box-shadow:0 3px 14px rgba(0,0,0,.08);outline:none;color:#2d3642;line-height:1.9}.notice-editor h1,.notice-editor h2{text-align:center;color:var(--ink)}.variable-panel{border-left:1px solid var(--line);background:#fff}.variable-panel-head{padding:18px;border-bottom:1px solid var(--line)}.variable-panel-head h3{margin:0 0 12px}.variable-list{padding:12px;max-height:680px;overflow:auto}.variable-list button{display:block;width:100%;text-align:left;border:1px solid #dfe4eb;border-radius:7px;background:#fff;padding:10px;margin-bottom:8px}.variable-list button:hover{border-color:var(--blue);background:var(--blue-soft)}.variable-list b,.variable-list span{display:block}.variable-list span{font-size:12px;color:var(--blue);margin-top:4px}.text-danger{color:var(--red)}
.plan-editor-list{display:grid;gap:16px}.plan-editor{border:1px solid #dfe5ee;border-radius:10px;overflow:hidden}.plan-editor-head{padding:15px 18px;display:flex;justify-content:space-between;background:#f8fafc;border-bottom:1px solid var(--line)}.plan-editor-head h3{margin:0;color:var(--ink)}.plan-editor-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.plan-editor-body{display:grid;grid-template-columns:220px minmax(0,1fr);gap:18px;padding:18px}.scheme-upload{height:170px;border:1.5px dashed #a9c4ff;background:#f5f8ff;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--blue);cursor:pointer}.scheme-upload span{color:var(--muted);font-size:12px}.plan-fields{display:grid;grid-template-columns:1fr 180px;gap:12px;margin-bottom:14px}.screen-table{min-width:920px}.screen-table .input,.screen-table .select{width:100%;min-width:88px}.scheme-config-table td:last-child,.scheme-config-table th:last-child{width:230px}

/* Portal */
.portal{--primary:var(--orange);--primary-soft:var(--orange-soft);background:#f6f6f4;min-width:1180px;color:#555b65}
.site-header{height:80px;background:#fff;border-bottom:1px solid #eee;position:sticky;top:0;z-index:30}.site-nav{max-width:1360px;height:100%;margin:auto;display:flex;align-items:center;gap:18px}.brand{display:flex;align-items:center;gap:10px;margin-right:8px;color:#2b2c2f;font-weight:600;white-space:nowrap}.phoenix-mark{width:42px;height:42px;border-radius:50% 50% 44% 44%;border:2px solid var(--orange);color:var(--orange);display:grid;place-items:center;font-weight:700}.brand small{display:block;font-size:10px;color:#777;font-weight:400}.nav-links{display:flex;align-items:center;height:100%;gap:18px;flex:1}.nav-link{height:100%;display:flex;align-items:center;color:#202124;text-decoration:none;font-size:15px;font-weight:500;position:relative;white-space:nowrap}.nav-link:hover,.nav-link.active{color:var(--orange)}.nav-link.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--orange)}.nav-search{width:116px;height:36px;border:1px solid #dcdfe5;border-radius:20px;padding:0 34px 0 14px;outline:none}.nav-search:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,107,34,.12)}.login-trigger{position:relative}.login-menu{position:absolute;top:45px;right:0;width:150px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:6px;display:none}.login-menu.open{display:block}.login-menu button{width:100%;height:36px;border:0;background:#fff;text-align:left;border-radius:5px;padding:0 10px}.login-menu button:hover{background:var(--orange-soft);color:var(--orange)}
.portal-main{max-width:1440px;margin:0 auto;padding:24px 32px 50px}.welcome{background:linear-gradient(110deg,#fff 0%,#fff9f5 100%);border:1px solid #ffe0cf;border-left:4px solid var(--orange);border-radius:10px;padding:22px 28px}.welcome h1{font-size:26px;line-height:36px;color:#202124;margin:0 0 3px}.welcome p{margin:0;color:#727883}
.portal-card{background:#fff;border:1px solid #e7e4e1;border-radius:10px;box-shadow:0 2px 8px rgba(32,33,36,.035);margin-top:16px}.portal-card-head{padding:18px 20px;border-bottom:1px solid #f0eeeb;display:flex;justify-content:space-between;align-items:center}.portal-card-head h2{font-size:18px;line-height:26px;margin:0;color:#202124}.portal-card-body{padding:20px}.event-selector{display:grid;grid-template-columns:1.25fr 1fr 1fr .55fr;align-items:center;min-height:98px;padding:16px 20px}.event-cell{display:flex;align-items:center;gap:14px;padding:8px 18px;border-right:1px solid #f0eeeb}.event-cell:last-child{border:0}.soft-icon{width:40px;height:40px;border-radius:9px;background:var(--orange-soft);color:var(--orange);display:grid;place-items:center;font-size:17px}.cell-label{font-size:13px;color:#8a9099}.cell-value{font-weight:600;color:#202124;margin-top:3px}.event-countdown{justify-content:center;text-align:center}.countdown-value{font-size:24px;font-weight:700;color:var(--orange);margin-top:4px}
.upload-file-trigger{display:block;position:relative;cursor:pointer}.upload-file-trigger input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.review-result{border:1px solid #ffc8c4;border-radius:8px;overflow:hidden;margin-bottom:18px}.review-result .notice{margin:0;border:0;border-radius:0}.review-attachments{padding:14px 16px;background:#fff}.review-attachments-title{display:flex;align-items:center;gap:8px;margin-bottom:12px}.review-attachments-title span{color:var(--muted);font-size:12px}.review-attachment-list{display:flex;gap:12px;flex-wrap:wrap}.review-attachment{width:150px;height:92px;border:1px solid #ffd1c2;border-radius:7px;background:linear-gradient(145deg,#fff4ee,#ffe0d2);color:#9c421d;display:grid;place-items:center;cursor:pointer}.review-attachment:hover{border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,107,34,.1)}
.supplier-detail-mode .portal-main>.welcome,.supplier-detail-mode .portal-main>.event-selector{display:none}.supplier-detail-head{margin-top:16px}
.login-dialog{max-height:90vh}.login-dialog .modal-header{padding:12px 18px}.login-dialog .modal-header h3{font-size:15px}.login-dialog .modal-body{padding:0}.login-layout{display:grid;grid-template-columns:320px 1fr;min-height:470px}.login-brand-panel{padding:32px;background:linear-gradient(145deg,#fafbfc,#f1f2f5);overflow:hidden}.login-brand-panel h2{font-size:24px;line-height:1.7;margin:28px 0;color:#2b2c2f}.login-illustration{height:230px;border-radius:18px;background:radial-gradient(circle at 50% 40%,#fff 0 18%,#ffe7d9 19% 32%,transparent 33%),linear-gradient(145deg,#fff7f2,#e8ebf1);display:flex;align-items:flex-end;justify-content:space-around;padding:22px 12px;color:var(--orange);font-size:12px}.login-illustration b{align-self:center;font-size:16px}.login-form-panel{padding:38px 54px}.login-role-tabs{display:flex;gap:28px;border-bottom:1px solid #eee}.login-role-tab,.login-method-tabs button{border:0;background:transparent;padding:0 0 12px;font-size:16px;color:#555}.login-role-tab.active,.login-method-tabs button.active{color:var(--orange);border-bottom:2px solid var(--orange)}.login-role-body{padding-top:30px}.login-role-body h3{font-size:20px;margin:0 0 8px}.login-method-tabs{display:flex;gap:28px;margin-bottom:24px}.login-fields{display:grid;gap:16px}.login-input-row{height:44px;border:1px solid #d8dadd;border-radius:5px;display:flex;align-items:center}.login-input-row span{width:78px;padding-left:18px;color:#666;border-right:1px solid #eee}.login-input-row input{min-width:0;flex:1;border:0;outline:0;padding:0 14px}.login-code-row{display:grid;grid-template-columns:1fr 112px;gap:12px}.login-submit{width:100%;height:42px;margin-top:16px}.login-help{text-align:center;color:#999;margin:12px 0 0}.qr-login{text-align:center}.login-qr{width:190px;height:190px;margin:24px auto 14px;border:10px solid #fff;box-shadow:0 0 0 1px #ddd;background:repeating-linear-gradient(45deg,#202124 0 5px,#fff 5px 10px);display:grid;place-items:center}.login-qr span{background:#fff;padding:6px;font-size:12px}
.info-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.info-box{padding:15px 16px;border:1px solid #ece9e6;background:#fbfbfa;border-radius:8px}.info-box span{display:block;color:#8a9099;font-size:13px}.info-box b{display:block;margin-top:6px;color:#202124;font-size:15px}
.portal-section-title{font-size:20px;line-height:28px;color:#202124;margin:26px 0 12px}.stepper{display:grid;gap:22px;position:relative}.stepper.steps-3{grid-template-columns:repeat(3,1fr)}.stepper.steps-5{grid-template-columns:repeat(5,1fr)}.stepper:before{content:"";position:absolute;left:3%;right:3%;top:16px;height:2px;background:#e3e6ea}.step{position:relative;z-index:1;cursor:pointer}.step-dot{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#e7eaee;color:#87909b;font-weight:600;border:4px solid #fff;box-shadow:0 0 0 1px #e7eaee;margin-bottom:10px}.step.completed .step-dot{background:var(--green);color:#fff;box-shadow:0 0 0 1px #c8ecde}.step.current .step-dot{background:var(--orange);color:#fff;box-shadow:0 0 0 1px #ffd2bc}.step.error .step-dot{background:var(--red);color:#fff}.step-box{min-height:88px;padding:13px;border:1px solid #e7e4e1;border-radius:8px;background:#fff}.step:hover .step-box{border-color:#ffd3bd}.step.current .step-box{border-color:var(--orange);background:#fff8f4}.step.completed .step-box{border-color:#cdebdc;background:#f3fbf7}.step-name{font-weight:600;color:#202124}.step-state{font-size:13px;margin-top:13px;color:#8a9099}.step.completed .step-state{color:var(--green)}.step.current .step-state{color:var(--orange)}
.portal .btn{height:40px}.portal .btn-primary{background:var(--orange)}.portal .btn-primary:hover{background:var(--orange-hover)}.portal .btn-secondary:hover{background:var(--orange-soft);border-color:#ffd3bd}.portal .btn-text{color:var(--orange)}
.portal .input,.portal .select{height:40px}.portal .input:focus,.portal .select:focus,.portal .textarea:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,107,34,.12)}
.notice{padding:13px 15px;border-radius:8px;margin-bottom:16px}.notice-info{background:var(--orange-soft);border:1px solid #ffd3bd;color:#8a461f}.notice-error{background:var(--red-soft);border:1px solid #ffd1d1;color:#ad353b}.notice-success{background:var(--green-soft);border:1px solid #cceadb;color:#10764c}
.file-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.file-card{min-height:112px;border:1px solid #e7e4e1;border-radius:8px;padding:14px;display:flex;flex-direction:column;justify-content:space-between}.file-card:hover{border-color:#ffd3bd}.file-name{font-weight:600;color:#202124}.file-meta{font-size:12px;color:#8a9099}.file-actions{display:flex;gap:8px;margin-top:10px}.scheme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.scheme-card{border:1px solid #e7e4e1;border-radius:10px;overflow:hidden;cursor:pointer;position:relative;background:#fff}.scheme-card:hover{border-color:var(--orange)}.scheme-card.selected{border:2px solid var(--orange)}.scheme-card.selected:after{content:"✓";position:absolute;right:10px;top:10px;width:24px;height:24px;border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center}.scheme-image{height:145px;background:linear-gradient(140deg,#fff2ea,#ffd8c4);display:grid;place-items:center;color:#a15328;font-weight:600}.scheme-info{padding:13px 15px}.upload-zone{border:1.5px dashed #ffb991;border-radius:10px;background:#fffaf7;padding:30px;text-align:center;cursor:pointer}.upload-zone:hover{background:#fff5ef;border-color:var(--orange)}.upload-zone strong{display:block;color:#202124;margin-bottom:5px}.upload-zone span{color:#8a9099;font-size:13px}.upload-list{margin-top:14px;display:grid;gap:10px}.upload-item{border:1px solid #e7e4e1;border-radius:8px;padding:12px 14px;display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:14px;align-items:center}.validation-ok{color:var(--green)}.validation-error{color:var(--red)}
.task-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:16px}.task-stat{background:#fff;border:1px solid #e7e4e1;border-radius:10px;padding:16px;cursor:pointer}.task-stat:hover{border-color:#ffd3bd}.task-stat b{display:block;font-size:24px;color:#202124;margin-top:7px}
.portal-table th{background:#fbfaf9}.portal-table tbody tr:hover{background:#fff9f5}.portal-table .btn-text{color:var(--orange)}
.detail-split{display:grid;grid-template-columns:1.25fr .75fr;gap:16px}.sticky-side{position:sticky;top:104px;align-self:start}.timeline{border-left:2px solid #f0d5c6;margin-left:8px;padding-left:22px}.timeline-item{position:relative;padding-bottom:22px}.timeline-item:before{content:"";position:absolute;left:-29px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--orange);border:3px solid #fff;box-shadow:0 0 0 1px #ffd3bd}.timeline-item b{color:#202124}.timeline-item p{margin:3px 0;color:#8a9099}
@media(max-width:1320px){.site-nav{padding:0 24px;gap:18px}.nav-links{gap:16px}.portal-main{padding-left:24px;padding-right:24px}.task-stats{grid-template-columns:repeat(3,1fr)}.steps-5 .step-box{min-height:110px}.metric-grid{grid-template-columns:repeat(2,1fr)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
