body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app-shell.ant-layout{min-height:100vh}.logo{align-items:center;background:#ffffff29;border-radius:8px;color:#fff;display:flex;font-weight:850;height:32px;justify-content:center;letter-spacing:0;margin:16px;padding:0 10px}.ant-layout-sider-collapsed .logo{margin:16px 8px}.user-dropdown{cursor:pointer}.user-dropdown:hover{background-color:#0000001a}.app-header.ant-layout-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border-bottom:1px solid #e7edf5;display:flex;height:58px;justify-content:space-between;padding:0 18px}.user-menu-button.ant-btn{align-items:center;color:#26364c;display:inline-flex;font-weight:650;gap:8px;height:40px}.app-content.ant-layout-content{margin:0;padding:22px}.login-page{align-items:stretch;background:linear-gradient(90deg,#04162aad,#0726463d 48%,#fff3),url(/static/media/login-background.f1dc2859648b2466ba27.png) 50% /cover no-repeat,#d9ecff;color:#16233d;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,430px);min-height:100vh;overflow:hidden}.login-brand-panel{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;padding:clamp(34px,5vw,64px);position:relative}.login-brand-logo img{display:block;height:auto;width:clamp(112px,12vw,160px)}.login-slogan{color:#fff;margin-bottom:clamp(86px,13vh,144px);text-shadow:0 8px 28px #00183657}.login-slogan h1{font-size:clamp(34px,4.2vw,54px);font-weight:700;letter-spacing:0;line-height:1.15;margin:0 0 22px}.login-slogan p{font-size:clamp(14px,1.5vw,19px);font-weight:600;letter-spacing:0;line-height:1.5;margin:0}.login-copyright{color:#ffffffd1;font-size:13px}.login-form-shell{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:42px clamp(30px,5vw,70px) 42px 24px}.login-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff2;border-radius:14px;box-shadow:0 22px 58px #1442743b;padding:52px 42px 42px;width:min(100%,394px)}.login-card-brand{align-items:center;display:flex;flex-direction:column;gap:10px;margin-bottom:32px}.login-card-brand img{display:block;height:auto;width:126px}.login-card-brand .ant-typography{color:#6f7785;font-size:14px}.login-card-title{color:#25324a;font-size:18px;font-weight:700;letter-spacing:0;margin:0 0 26px;text-align:center}.login-form .ant-form-item{margin-bottom:16px}.login-input .ant-input-affix-wrapper,.login-input.ant-input-affix-wrapper{border-color:#e4eaf2;border-radius:7px;box-shadow:none;height:42px}.login-input .ant-input-affix-wrapper-focused,.login-input .ant-input-affix-wrapper:hover,.login-input.ant-input-affix-wrapper-focused,.login-input.ant-input-affix-wrapper:hover{border-color:#2d91ee;box-shadow:0 0 0 3px #2d91ee1f}.login-input .ant-input,.login-input.ant-input-affix-wrapper .ant-input{font-size:14px}.login-input .anticon,.login-input.ant-input-affix-wrapper .anticon{color:#7d8ca3}.login-options{align-items:center;color:#5d6b7c;display:flex;font-size:13px;justify-content:space-between;margin:4px 0 24px}.login-options .ant-checkbox-wrapper{color:#59687a;font-size:13px}.login-options .ant-checkbox-checked .ant-checkbox-inner{background-color:#1887e8;border-color:#1887e8}.login-link-button{background:#0000;border:0;color:#1887e8;cursor:pointer;font:inherit;padding:0}.login-submit.ant-btn{background:#0f88ec;border-color:#0f88ec;border-radius:6px;box-shadow:0 10px 20px #0f88ec38;font-size:15px;font-weight:700;height:44px}.login-submit.ant-btn:focus,.login-submit.ant-btn:hover{background:#0879d6;border-color:#0879d6}.login-divider{align-items:center;color:#9aa5b5;display:flex;font-size:13px;gap:14px;margin:24px 0 22px}.login-divider:after,.login-divider:before{background:#e8edf4;content:"";flex:1 1;height:1px}.login-alt-actions{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.login-alt-actions button{align-items:center;background:#0000;border:0;color:#4f5f72;cursor:pointer;display:inline-flex;font-size:13px;gap:8px;justify-content:center;min-height:42px;padding:0 4px}.login-alt-actions .anticon{color:#1392ed;font-size:20px}@media (max-width:860px){.login-page{background-position:50%;grid-template-columns:1fr;min-height:100svh}.login-brand-panel{inset:0;min-height:100%;padding:24px;pointer-events:none;position:absolute}.login-brand-logo img{width:108px}.login-slogan{display:none}.login-copyright{font-size:12px}.login-form-shell{min-height:100svh;padding:96px 18px 70px;position:relative}.login-card{padding:38px 24px 30px}.login-card-brand img{width:112px}}.dashboard{min-height:100%}.dashboard-header{background:linear-gradient(135deg,#fffffff5,#eef7fff5),linear-gradient(90deg,#d8232f,#3f4652);border:1px solid #dbeafe;border-radius:14px;box-shadow:0 12px 30px #1f4b7814;margin-bottom:18px;padding:22px 24px}.dashboard-header h2.ant-typography{color:#17233c;font-size:26px;font-weight:850;margin:0 0 8px}.dashboard-header .ant-typography{color:#5f6f84;margin-bottom:0}.dashboard-stats{margin-bottom:24px}.dashboard-content{margin-bottom:16px}.dashboard-list-item{padding:12px 0}.dashboard .ant-list-item{padding-inline:4px}.dashboard .ant-list-item:hover,.dashboard-list-item:hover{background-color:#f8fbff}.dashboard-quick-actions{display:flex;flex-direction:column;gap:8px}.dashboard-quick-actions .ant-btn{font-weight:650;height:40px}.dashboard .status-item{background:#f8fbff;border:1px solid #e6eef8;border-radius:10px;padding:14px}.dashboard .status-item>span{color:#334155;display:block;font-weight:700;margin-bottom:10px}.workspace-dashboard{grid-gap:16px;display:grid;gap:16px}.workspace-hero{align-items:center;display:flex;gap:18px;justify-content:space-between}.workspace-kicker{color:#d8232f;display:inline-flex;font-weight:850;margin-bottom:8px}.workspace-stat-row .ant-card-body{align-items:center;display:flex;min-height:112px}.workspace-flow-card .ant-card-body{grid-gap:12px;display:grid;gap:12px}.workspace-flow-step{grid-gap:10px;align-items:start;background:#f8fbff;border:1px solid #e6eef8;border-radius:10px;display:grid;gap:10px;grid-template-columns:34px 1fr;padding:12px}.workspace-flow-step span{align-items:center;background:#64748b;border-radius:8px;color:#fff;display:inline-flex;font-weight:800;height:28px;justify-content:center;width:28px}.workspace-flow-step.active span{background:#1677ff}.workspace-flow-step strong{color:#17233c}.workspace-flow-step p{color:#64748b;font-size:13px;margin:4px 0 0}.workspace-quality-card.ant-card{margin-bottom:0}@media (max-width:900px){.workspace-hero{align-items:stretch;flex-direction:column}}.file-management-page{min-height:100%}.file-management-hero{align-items:center;background:linear-gradient(135deg,#fff,#edf6ff);border:1px solid #dbeafe;border-radius:14px;box-shadow:0 12px 30px #1f4b7814;display:flex;gap:20px;justify-content:space-between;margin-bottom:16px;padding:22px 24px}.file-management-hero.compact{align-items:flex-start}.file-management-hero h2.ant-typography{color:#17233c;font-size:26px;font-weight:850;margin:0 0 8px}.file-management-hero .ant-typography{color:#607189;margin-bottom:0}.file-management-stats{min-width:360px}.file-management-stats .ant-col{background:#ffffffc7;border:1px solid #e4edf8;border-radius:10px;padding:10px 12px}.file-management-filter.ant-card{margin-bottom:16px}.file-management-filter.ant-card .ant-card-body,.file-management-table.ant-card .ant-card-body{padding:16px}.file-management-backbar{margin-bottom:16px}@media (max-width:900px){.file-management-hero{align-items:stretch;flex-direction:column}.file-management-stats{min-width:0}}.excel-center-page{background:#f3f7fc;min-height:100%;padding:22px}.excel-center-hero{align-items:center;background:linear-gradient(135deg,#fff,#eaf4ff);border:1px solid #dbeafe;border-radius:12px;box-shadow:0 10px 30px #205c9614;display:flex;gap:24px;justify-content:space-between;margin-bottom:16px;padding:22px 24px}.excel-center-kicker{color:#1677ff;display:inline-flex;font-weight:800;margin-bottom:8px}.excel-center-hero h2.ant-typography{color:#17233c;font-size:26px;font-weight:800;letter-spacing:0;margin:0 0 8px}.excel-center-hero .ant-typography{color:#5f6f84;margin-bottom:0}.excel-center-hero-stats{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));min-width:260px}.excel-center-hero-stats .ant-statistic{background:#ffffffbd;border:1px solid #e2edf9;border-radius:10px;padding:12px}.excel-work-card.ant-card{border-radius:12px;box-shadow:0 10px 28px #1f4b7812;height:100%}.excel-work-card .ant-card-body{padding:18px}.excel-card-title{align-items:flex-start;display:flex;gap:12px;margin-bottom:16px}.excel-card-title.compact{margin-bottom:14px}.excel-card-title h3{color:#15243a;font-size:17px;font-weight:800;margin:0 0 4px}.excel-card-title p{color:#748197;font-size:13px;margin:0}.excel-step-badge{align-items:center;background:#1677ff;border-radius:7px;box-shadow:0 8px 18px #1677ff42;color:#fff;display:inline-flex;font-weight:800;height:26px;justify-content:center;min-width:26px}.excel-dropzone.ant-upload-wrapper .ant-upload-drag{background:#f8fbff;border:1px dashed #98c8ff;border-radius:12px}.excel-dropzone .ant-upload-drag-container{align-items:center;display:flex;flex-direction:column;gap:8px;justify-content:center;min-height:178px}.excel-dropzone .anticon{color:#1677ff;font-size:44px}.excel-dropzone strong{color:#20304a;font-size:15px}.excel-dropzone span{color:#748197;font-size:13px}.selected-file-panel{align-items:center;background:#eef7ff;border:1px solid #d8ebff;border-radius:10px;display:flex;gap:10px;margin-top:12px;padding:12px}.selected-file-panel>.anticon{color:#1677ff;font-size:24px}.selected-file-panel span,.selected-file-panel strong{display:block}.selected-file-panel strong{color:#1f2d44}.selected-file-panel span{color:#75849a;font-size:12px}.excel-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.excel-actions .ant-btn{border-radius:8px;height:38px;min-width:138px}.recognition-card .ant-progress{display:flex;justify-content:center;margin:12px 0 18px}.recognition-metrics{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.recognition-metrics .ant-statistic{background:#f8fbff;border:1px solid #e6eef8;border-radius:9px;padding:10px;text-align:center}.field-preview-card .ant-table-wrapper{border:1px solid #e7eef8;border-radius:10px;overflow:hidden}.empty-preview{align-items:center;background:#f8fbff;border:1px solid #e6eef8;border-radius:12px;color:#7c8ba0;display:flex;flex-direction:column;gap:10px;justify-content:center;min-height:260px}.empty-preview .anticon{color:#1677ff;font-size:34px}.upload-history-card .ant-card-head{border-bottom-color:#edf3fa}.upload-history-card .ant-table-thead>tr>th{background:#f7fbff;color:#3a4b63;font-weight:700}.analysis-confirm-card.ant-card{background:#fbfdff;border:1px solid #e6eef8;border-radius:10px}.analysis-confirm-card .ant-card-head{border-bottom-color:#e9f0f8;color:#1f2d44;font-weight:800;min-height:42px}.analysis-confirm-card .ant-statistic-title{color:#76859a;font-size:12px}.analysis-confirm-card .ant-statistic-content{color:#1f2d44;font-size:15px;font-weight:700}.analysis-confirm-card .ant-table-thead>tr>th{background:#f7fbff;color:#3a4b63;font-weight:700}.analysis-diagnostics-card.ant-card{background:#fffdf7;border:1px solid #ffe4b5;border-radius:10px;margin-bottom:16px}.analysis-diagnostics-card .ant-alert{margin-bottom:14px}.analysis-diagnostics-grid h5.ant-typography{color:#314158;font-size:14px;margin:2px 0 8px}.analysis-diagnostics-card .ant-table-thead>tr>th{background:#fff8e8}@media (max-width:900px){.excel-center-page{padding:14px}.excel-center-hero{align-items:flex-start;flex-direction:column}.excel-center-hero-stats{min-width:0;width:100%}}.component-list-page{background:#f3f7fc;min-height:100%;padding:22px}.component-list-hero{align-items:flex-end;background:linear-gradient(135deg,#fff,#eef6ff);border:1px solid #dbeafe;border-radius:12px;box-shadow:0 10px 28px #1f4b7812;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px;padding:20px 22px}.component-list-hero .ant-btn{margin-bottom:12px}.component-list-hero h2.ant-typography{color:#17233c;font-size:26px;font-weight:800;letter-spacing:0;margin:0 0 6px}.component-list-hero .ant-typography{color:#66758a;margin-bottom:0}.component-stat-row{margin-bottom:16px}.component-filter-card.ant-card,.component-ifc-card.ant-card,.component-stat-row .ant-card,.component-table-card.ant-card{border-radius:12px;box-shadow:0 10px 28px #1f4b7812}.component-stat-row .ant-card-body{padding:16px 18px}.component-filter-card.ant-card{margin-bottom:16px}.component-quality-card.ant-card{background:linear-gradient(135deg,#fff,#f3fff7);border:1px solid #dcfce7;margin-bottom:16px}.component-quality-card .ant-card-body{padding:16px}.component-ifc-card.ant-card{background:linear-gradient(135deg,#fff,#f6fbff);border:1px solid #dbeafe;margin-bottom:16px}.component-ifc-card .ant-card-body{padding:16px 18px}.ifc-card-content{align-items:center;display:flex;gap:16px;justify-content:space-between}.ifc-card-content h3{color:#17233c;font-size:16px;font-weight:800;margin:0 0 6px}.ifc-card-content p{color:#66758a;margin:0}.ifc-match-panel{grid-gap:10px;display:grid;gap:10px;margin-top:14px}.ifc-match-panel .ant-table-wrapper{border:1px solid #e5edf6;border-radius:10px;overflow:hidden}.component-filter-card .ant-card-body,.component-table-card .ant-card-body{padding:16px}.component-table-card .ant-table-thead>tr>th{background:#f7fbff;color:#3a4b63;font-weight:700}.component-qr-modal{grid-gap:16px;display:grid;gap:16px;justify-items:center}.component-qr-summary{grid-gap:8px;background:#f8fbff;border:1px solid #e6eef8;border-radius:10px;display:grid;gap:8px;padding:14px;width:100%}.print-toolbar-note{background:#f4f8fe;border:1px solid #e2edf9;border-radius:8px;color:#526176;margin-bottom:14px;padding:10px 12px}.print-label-sheet{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.component-print-label{grid-gap:12px;background:#fff;border:1px solid #cfdced;border-radius:8px;break-inside:avoid;display:grid;gap:12px;grid-template-columns:126px minmax(0,1fr);min-height:182px;padding:14px;page-break-inside:avoid}.print-label-qr{align-items:center;background:#fff;border:1px solid #e6eef8;border-radius:6px;display:flex;justify-content:center}.print-label-brand{color:#0c62d8;font-size:13px;font-weight:800}.print-label-content h3{color:#17233c;font-size:18px;font-weight:800;margin:5px 0 8px}.print-label-content p{grid-gap:8px;color:#1f2d44;display:grid;font-size:12px;gap:8px;grid-template-columns:68px minmax(0,1fr);line-height:1.35;margin:4px 0}.print-label-content span{color:#7a8799}@media print{body *{visibility:hidden}.print-label-sheet,.print-label-sheet *{visibility:visible}.print-label-sheet{grid-gap:6mm;background:#fff;display:grid;gap:6mm;grid-template-columns:repeat(2,1fr);inset:0;padding:10mm;position:absolute}.component-print-label{border:1px solid #000;box-shadow:none;page-break-inside:avoid}}@media (max-width:760px){.component-list-page{padding:14px}.component-list-hero,.ifc-card-content{align-items:flex-start;flex-direction:column}.print-label-sheet{grid-template-columns:1fr}}.qr-page{color:#17233c}.qr-page,.qr-state-page{background:#eef5ff;min-height:100vh;padding:20px}.qr-state-page{align-items:center;display:flex;justify-content:center}.qr-hero{align-items:flex-end;background:linear-gradient(135deg,#0b72e7,#16a4f6);border-radius:12px;box-shadow:0 16px 36px #1069d233;color:#fff;display:flex;gap:16px;justify-content:space-between;margin:0 auto 16px;max-width:1120px;padding:22px 24px}.qr-eyebrow{color:#ffffffe0;font-size:14px;margin-bottom:10px}.qr-hero h1{font-size:clamp(24px,4vw,36px);font-weight:800;letter-spacing:0;line-height:1.2;margin:0 0 8px}.qr-hero p{color:#ffffffdb;font-size:15px;margin:0}.qr-hero-meta{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.qr-page>.ant-row{margin:0 auto;max-width:1120px}.qr-section.ant-card,.qr-source-card.ant-card{border-radius:10px;box-shadow:0 8px 24px #295b9114;height:100%}.qr-section .ant-card-body,.qr-source-card .ant-card-body{padding:18px}.qr-section-title{align-items:center;color:#0c62d8;display:flex;font-size:16px;font-weight:800;gap:8px;margin-bottom:16px}.qr-section-title .anticon{font-size:18px}.qr-info-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.qr-info-item{background:#f8fbff;border:1px solid #e6eef8;border-radius:8px;min-height:58px;padding:10px 12px}.qr-info-item span{color:#7a8799;display:block;font-size:12px;margin-bottom:5px}.qr-info-item strong{color:#1f2d44;display:block;font-size:14px;line-height:1.35;word-break:break-word}.qr-info-item strong.is-strong{color:#0c62d8}.qr-drawing-box{grid-gap:12px;display:grid;gap:12px}.qr-ifc-match-box{grid-gap:8px;background:#f8fbff;border:1px solid #e3edf8;border-radius:10px;display:grid;gap:8px;padding:12px}.qr-ifc-match{grid-gap:2px;background:#fff;border:1px solid #e7eef7;border-radius:8px;display:grid;gap:2px;padding:8px 10px}.qr-quality-timeline{margin-top:6px}.qr-quality-item h3{color:#1f2d44;font-size:15px;margin:0 0 6px}.qr-quality-item p{color:#5d6b7f;margin:2px 0}.qr-source-card details{margin-top:12px}.qr-source-card summary{color:#0c62d8;cursor:pointer;font-weight:700}.qr-source-card pre{background:#0f172a;border-radius:8px;color:#dbeafe;font-size:12px;margin:12px 0 0;max-height:320px;overflow:auto;padding:12px}@media (max-width:720px){.qr-page{padding:12px}.qr-hero{align-items:flex-start;flex-direction:column;padding:18px}.qr-hero-meta{justify-content:flex-start}.qr-info-grid{grid-template-columns:1fr}}.App{min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}.ant-layout{min-height:100vh}.ant-layout-content{background:linear-gradient(180deg,#eef5fb,#f6f8fb 260px,#f6f8fb);padding:24px}.ant-layout-content .ant-card{border:1px solid #e4ecf5;border-radius:12px;box-shadow:0 10px 28px #1f4b7812}.ant-layout-content .ant-card-head{border-bottom-color:#edf2f7}.ant-layout-content .ant-card-head-title{color:#17233c;font-weight:800}.ant-layout-content .ant-table-thead>tr>th{background:#f7fbff;color:#35465f;font-weight:700}.ant-layout-content .ant-btn{border-radius:8px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}