:root{color:#172839;background:#f4f1eb;font-family:Manrope,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f4f1eb}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{min-height:100vh;color:#172839}.eyebrow{margin:0 0 12px;color:#b2593d;font:500 11px/1.2 DM Mono,monospace;letter-spacing:.15em;text-transform:uppercase}.brand-dot{width:10px;height:10px;display:inline-block;border-radius:50%;background:#c65d3e;box-shadow:0 0 0 4px #f2ded5}.gate-screen{position:relative;display:grid;min-height:100vh;place-items:center;overflow:hidden;background:#e8e1d6}.gate-screen:before{position:absolute;inset:0;opacity:.27;content:"";background:repeating-linear-gradient(0deg,transparent 0 31px,#a89987 32px),repeating-linear-gradient(90deg,transparent 0 31px,#a89987 32px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 17%,#000 83%,transparent);mask-image:linear-gradient(90deg,transparent,#000 17%,#000 83%,transparent)}.gate-card{position:relative;z-index:1;width:min(580px,calc(100% - 48px));padding:48px 0 40px}.brand-mark{display:flex;align-items:center;gap:13px;color:#385064;font:500 12px DM Mono,monospace;letter-spacing:.08em}.gate-card h1{max-width:580px;margin:50px 0 16px;color:#172839;font:700 clamp(38px,7vw,72px) / 1.08 "Noto Serif SC",serif;letter-spacing:-.05em}.gate-card h1 em{color:#b2593d;font-style:normal}.gate-intro{max-width:390px;color:#5e6e76;font-size:15px;line-height:1.85}.key-form{margin-top:45px}.key-form label{display:block;margin-bottom:9px;color:#53656b;font-size:12px;font-weight:700;letter-spacing:.08em}.key-input-wrap{display:flex;align-items:center;max-width:550px;height:56px;padding:5px 5px 5px 18px;border:1px solid #c5bbae;background:#ffffffa6;box-shadow:0 14px 40px #55473714}.key-input-wrap>span{color:#a19a8f;font-family:DM Mono,monospace}.key-input-wrap input{min-width:0;flex:1;padding:0 14px;border:0;outline:0;color:#172839;background:transparent}.key-input-wrap input::placeholder{color:#969995}.key-input-wrap button{align-self:stretch;padding:0 18px;border:0;color:#fffaf4;background:#19354a;font-weight:700}.key-input-wrap button span{margin-left:16px;color:#e2a17e}.key-note{margin:13px 0 0;color:#7e847f;font-size:11px}.lock-icon{margin-right:6px;color:#b2593d}.form-error{margin-top:16px;color:#ac4936;font-size:13px}.gate-art{position:absolute;right:-28px;bottom:9%;width:40vw;max-width:540px;height:48vw;max-height:620px;color:#c5bbae;pointer-events:none;transform:rotate(-8deg)}.gate-art:before,.gate-art:after{position:absolute;inset:18% 15%;content:"";border:1px solid #c5bbae}.gate-art:after{inset:29% 26%;border-color:#d2c9bc}.gate-art span{position:absolute;top:7%;left:22%;color:#bdb3a6;font:500 clamp(23px,4vw,42px) "DM Mono",monospace;letter-spacing:.16em}.gate-art i{position:absolute;top:18%;right:20%;width:20px;height:20px;border:1px solid #b2593d}.gate-art b{position:absolute;bottom:17%;left:32%;width:130px;height:1px;background:#b2593d}.gate-footer{position:absolute;right:40px;bottom:25px;left:40px;display:flex;justify-content:space-between;color:#8c8e88;font:10px DM Mono,monospace;letter-spacing:.1em}.topbar{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px;padding:0 42px;border-bottom:1px solid #ddd7cd;background:#f8f6f2}.top-brand{display:flex;align-items:center;gap:12px}.top-brand strong{display:block;color:#19354a;font:500 12px DM Mono,monospace;letter-spacing:.08em}.top-brand small{display:block;margin-top:3px;color:#7f8a8c;font-size:11px}.top-context{color:#46616b;font-size:12px}.online-dot{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#4a9a75}.slash{margin:0 9px;color:#c5bbae}.muted{color:#8d9491}.ghost-btn{padding:8px 0;border:0;color:#77817f;background:transparent;font-size:12px}.ghost-btn span{margin-left:9px;color:#b2593d}.workspace{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(390px,.8fr);min-height:calc(100vh - 76px)}.content-column{min-width:0;padding:45px 42px 120px}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:31px}.page-heading h1{margin:0;color:#19354a;font:700 36px/1.2 "Noto Serif SC",serif;letter-spacing:-.04em}.heading-note{margin:8px 0 0;color:#7f8989;font-size:13px}.upload-btn{height:43px;padding:0 17px;border:0;color:#fffaf4;background:#bb583d;box-shadow:0 7px 18px #bb583d2e;font-size:12px;font-weight:700}.upload-btn span{margin-right:8px;font-size:19px;vertical-align:-1px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:32px}.stat-card{min-height:112px;padding:17px 17px 14px;border:1px solid #e0dbd1;background:#faf9f6}.stat-card.stat-primary{border-color:#d3c5b5;background:#eee5d9}.stat-label{display:block;color:#718080;font-size:11px}.stat-card strong{display:block;margin:10px 0 6px;color:#19354a;font:700 32px/1 DM Mono,monospace}.stat-foot{color:#8a918c;font-size:10px}.stat-foot i{float:right;color:#ba8467;font:10px DM Mono,monospace;font-style:normal}.orange-mark{color:#da8a49;font-style:normal}.green-mark{color:#549a7c;font-style:normal}.list-toolbar{display:flex;gap:9px;margin-bottom:13px}.search-box{display:flex;align-items:center;flex:1;height:42px;padding:0 12px;border:1px solid #dbd6cc;background:#faf9f6}.search-box>span{color:#af8b75;font-size:23px;line-height:0;transform:rotate(-15deg)}.search-box input{min-width:0;flex:1;padding:0 9px;border:0;outline:0;color:#19354a;background:transparent;font-size:12px}.search-box input::placeholder{color:#a2a49f}.search-box kbd{color:#aaa9a4;font:10px DM Mono,monospace}.list-toolbar select{width:125px;padding:0 10px;border:1px solid #dbd6cc;outline:none;color:#51666d;background:#faf9f6;font-size:11px}.refresh-btn{width:42px;border:1px solid #dbd6cc;color:#a86950;background:#faf9f6;font-size:20px}.archive-list{border-top:2px solid #19354a;transition:opacity .2s}.archive-list.stale{opacity:.54}.list-head,.archive-row{display:grid;grid-template-columns:minmax(180px,1.55fr) minmax(130px,1fr) 100px 76px 20px;gap:12px;align-items:center}.list-head{min-height:36px;padding:0 12px;color:#a09283;font:10px DM Mono,monospace;letter-spacing:.08em}.archive-row{width:100%;min-height:77px;padding:9px 12px;border:0;border-top:1px solid #e3ded5;text-align:left;color:#19354a;background:transparent}.archive-row:hover,.archive-row.selected{background:#eee7dd}.file-cell,.route-cell{min-width:0;display:flex;align-items:center;gap:10px}.file-copy,.route-cell{display:block;min-width:0}.file-copy strong,.route-cell strong{display:block;overflow:hidden;color:#2b4655;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.file-copy small,.route-cell small,.hint-label{display:block;overflow:hidden;margin-top:5px;color:#929994;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.route-cell small i{color:#b2593d;font-style:normal}.file-badge{display:grid;flex:0 0 33px;width:33px;height:39px;place-items:center;color:#b0573c;border:1px solid #d7ae9c;background:#f7e7dc;font:10px DM Mono,monospace}.file-badge[data-format=xlsx],.file-badge[data-format=xls]{color:#4c8769;border-color:#a9c4b0;background:#e6f0e7}.file-badge[data-format=doc],.file-badge[data-format=docx]{color:#527397;border-color:#b2c4d8;background:#e6edf4}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 7px;border:1px solid #d4d9d2;color:#677b76;background:#f3f5f0;font-size:10px;white-space:nowrap}.status-pill i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#779c8a}.status-review_required,.status-ocr_required,.status-conversion_required{border-color:#e3c9a9;color:#ad7040;background:#fbf1e3}.status-review_required i,.status-ocr_required i,.status-conversion_required i{background:#da8a49}.status-approved{border-color:#b9d1c1;color:#4b866b;background:#ebf4ed}.status-approved i{background:#4b9a73}.status-failed,.status-quarantined{border-color:#e0b5ab;color:#ad5141;background:#faeae6}.status-failed i,.status-quarantined i{background:#c85c47}.status-duplicate{border-color:#d5c8de;color:#816694;background:#f2edf6}.status-duplicate i{background:#9478a6}.hint-label{color:#bc8767}.date-cell{color:#7d8885;font:10px DM Mono,monospace}.row-arrow{color:#b2593d;font-size:23px;text-align:right}.list-pager{display:flex;justify-content:space-between;align-items:center;min-height:51px;border-top:1px solid #e3ded5;color:#9a9f99;font:10px DM Mono,monospace}.list-pager div{display:flex;align-items:center;gap:10px}.list-pager button{width:25px;height:25px;border:1px solid #ddd5ca;color:#b2593d;background:#faf9f6}.state-card{display:flex;align-items:center;gap:16px;min-height:142px;padding:25px;border:1px solid #e1dbd1;background:#faf9f6}.state-card strong{color:#365362;font-size:14px}.state-card p{margin:7px 0 0;color:#909993;font-size:12px}.state-icon,.empty-illustration{display:grid;flex:0 0 42px;width:42px;height:42px;place-items:center;border-radius:50%;color:#b2593d;background:#f2ded5;font:700 21px DM Mono,monospace}.error-state{border-color:#dfb9ae;background:#fdf2ed}.error-state .state-icon{color:#fff;background:#bd5b43}.text-btn,.small-action{margin-left:auto;padding:8px 11px;border:1px solid #c68a76;color:#a8533c;background:transparent;font-size:11px}.empty-state{min-height:198px}.empty-state .empty-illustration{color:#9d8d7c;background:#eee8de;font-size:25px}.small-action{margin-left:auto;color:#fff;background:#19354a;border-color:#19354a}.spinner{width:25px;height:25px;border:2px solid #dacfc1;border-top-color:#b2593d;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.detail-column{min-width:0;border-left:1px solid #ddd7cd;background:#faf9f6}.detail-placeholder{display:grid;place-content:center;min-height:calc(100vh - 76px);padding:40px;text-align:center}.placeholder-mark{width:72px;height:72px;margin:0 auto 23px;display:grid;place-items:center;border:1px solid #cfc6b9;border-radius:50%;color:#bb856b;font:30px "Noto Serif SC",serif}.placeholder-mark.alert{color:#ad5141;border-color:#dbb9ae}.detail-placeholder h2{margin:0;color:#405964;font:600 20px "Noto Serif SC",serif}.detail-placeholder p{max-width:245px;margin:13px auto 22px;color:#919894;font-size:12px;line-height:1.8}.detail-placeholder>span{color:#b4aaa0;font:10px DM Mono,monospace;letter-spacing:.12em}.detail-placeholder .small-action{margin:0 auto}.detail-placeholder .dark{margin:0 auto 22px;border-color:#ddd2c4;border-top-color:#19354a}.detail-panel{padding:37px 31px 80px}.detail-header{display:flex;justify-content:space-between;gap:16px}.detail-header h2{max-width:330px;margin:0;overflow:hidden;color:#19354a;font:600 22px/1.35 "Noto Serif SC",serif;text-overflow:ellipsis;white-space:nowrap}.detail-path{max-width:340px;margin:8px 0 0;overflow:hidden;color:#919994;font:10px DM Mono,monospace;text-overflow:ellipsis;white-space:nowrap}.close-btn{align-self:start;border:0;color:#a2a39d;background:transparent;font-size:26px;line-height:1}.detail-meta-line{display:flex;align-items:center;gap:10px;margin:22px 0 20px;color:#969e99;font:10px DM Mono,monospace}.download-btn{margin-left:auto;border:0;color:#b2593d;background:transparent;font-size:11px;font-weight:700}.notice{display:flex;gap:10px;margin:13px 0;padding:13px 14px;border-left:3px solid #db9a5e;color:#8e6d51;background:#fbf1e3;font-size:11px;line-height:1.6}.notice>span{color:#cb7e42;font-size:17px}.notice p{margin:0}.notice-red{border-color:#c65c46;color:#a35241;background:#faeae6}.notice-red>span{color:#c65c46}.metadata-form,.review-section,.text-preview{margin-top:27px;padding-top:20px;border-top:1px solid #e2dcd3}.form-section-title{display:flex;align-items:baseline;gap:9px;margin-bottom:16px}.form-section-title>span{color:#b2593d;font:10px DM Mono,monospace}.form-section-title strong{color:#405964;font-size:12px}.form-section-title small{margin-left:auto;color:#a1a39e;font-size:10px}.metadata-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px}.metadata-form .form-section-title,.metadata-form .form-actions{grid-column:1 / -1}.field{display:grid;gap:6px;min-width:0}.field.full{grid-column:1 / -1}.field>span{color:#7a8886;font-size:10px}.field b{color:#b2593d}.field input,.field select,.field textarea{width:100%;padding:9px 10px;border:1px solid #ddd7cd;outline:0;resize:vertical;color:#385260;background:#fffefb;font-size:11px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#b2593d;box-shadow:0 0 0 2px #f2ded5}.field textarea{line-height:1.6}.form-actions{display:flex;align-items:center;gap:12px;min-height:38px}.save-message{flex:1;color:#4b866b;font-size:10px;line-height:1.4}.save-message.error{color:#b2593d}.save-btn{padding:10px 13px;border:0;color:#fffaf4;background:#19354a;font-size:11px;font-weight:700}.review-copy{margin:-3px 0 15px;color:#8e9792;font-size:11px;line-height:1.7}.review-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reject-btn,.approve-btn{height:37px;border:1px solid #d0a394;font-size:11px;font-weight:700}.reject-btn{color:#ad5d47;background:transparent}.approve-btn{border-color:#4c8068;color:#fff;background:#4c8068}.text-preview pre{max-height:190px;overflow:auto;margin:0;padding:12px;color:#65736f;background:#f1eee8;font:10px/1.65 DM Mono,monospace;white-space:pre-wrap}.upload-tray{position:fixed;right:28px;bottom:24px;z-index:5;width:min(510px,calc(100% - 56px));padding:15px 17px;border:1px solid #cfc5b7;background:#faf9f6f5;box-shadow:0 14px 40px #39312729;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.tray-heading{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;border-bottom:1px solid #e3ddd4}.tray-heading strong{color:#405964;font-size:12px}.tray-heading span{margin-left:10px;color:#999f9a;font:10px DM Mono,monospace}.tray-heading button{border:0;color:#a36b58;background:transparent;font-size:10px}.upload-item{display:grid;grid-template-columns:22px minmax(100px,1fr) 85px 50px;gap:9px;align-items:center;min-height:49px;border-bottom:1px solid #ece7df}.upload-item:last-child{border-bottom:0}.upload-file-icon{color:#b2593d;font-size:18px}.upload-copy{min-width:0}.upload-copy strong,.upload-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-copy strong{color:#536a71;font-size:10px}.upload-copy small{margin-top:3px;color:#a05946;font-size:9px}.upload-progress{height:3px;background:#e6e1d8}.upload-progress i{display:block;height:100%;background:#bd674c;transition:width .2s}.upload-progress i.success{background:#589175}.upload-status{color:#a0a29c;font:9px DM Mono,monospace;text-align:right}.upload-status.success{color:#4c896e}.upload-status.failed{color:#b35442}.upload-status button{margin-left:3px;padding:0;border:0;color:inherit;background:transparent;text-decoration:underline}.toast{position:fixed;right:28px;bottom:25px;z-index:8;margin:0;padding:13px 17px;color:#fff;background:#19354a;box-shadow:0 10px 25px #19354a3d;font-size:12px}@media(max-width:980px){.workspace{grid-template-columns:1fr}.detail-column{min-height:500px;border-top:1px solid #ddd7cd;border-left:0}.detail-placeholder{min-height:480px}.detail-panel{max-width:700px;margin:auto}.top-context{display:none}.content-column{padding-right:24px;padding-left:24px}}@media(max-width:640px){.topbar{height:66px;padding:0 18px}.content-column{padding:30px 16px 100px}.page-heading{align-items:start;flex-direction:column}.page-heading h1{font-size:31px}.stats-grid{grid-template-columns:1fr 1fr}.list-toolbar{flex-wrap:wrap}.search-box{flex-basis:100%}.list-toolbar select{flex:1}.list-head{display:none}.archive-row{grid-template-columns:minmax(0,1fr) 90px 20px;min-height:86px}.archive-row>:nth-child(2){display:none}.archive-row>:nth-child(3){grid-column:2;grid-row:1}.archive-row>:nth-child(4){display:none}.archive-row>:nth-child(5){grid-column:3;grid-row:1}.detail-panel{padding:30px 17px 65px}.metadata-form{gap:12px 8px}.form-section-title small{display:none}.gate-card{width:calc(100% - 34px);padding-bottom:80px}.gate-card h1{margin-top:43px;font-size:41px}.gate-art{right:-150px;width:550px}.gate-footer{right:17px;bottom:17px;left:17px;font-size:8px}.gate-footer span:last-child{display:none}.upload-tray{right:10px;bottom:10px;width:calc(100% - 20px)}.upload-item{grid-template-columns:20px minmax(90px,1fr) 65px 42px}}.field>span,.status-pill,.list-pager,.detail-path,.date-cell{font-size:12px}.field input,.field select,.field textarea,.file-copy strong,.route-cell strong,.save-btn,.approve-btn,.reject-btn{font-size:13px}.upload-items{max-height:240px;overflow-y:auto}
