:root{--ink:#1b2c36;--muted:#7b878c;--accent:#087f8c;--accent-dark:#086974;--line:#e3e8e8;--paper:#fff;--bg:#f5f7f6;--orange:#a47735}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif}button,input{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid #5cb5be;outline-offset:3px}[hidden]{display:none!important}.shell{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:32px 20px 20px;background:#fff;border-right:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;padding:0 10px;font-size:25px;font-weight:750;letter-spacing:1px;line-height:1.2}.brand-mark{display:inline-grid;place-items:center;flex-shrink:0;width:40px;height:43px;background:var(--accent);color:white;font:700 28px/1 Georgia,serif;border-radius:10px 2px 10px 2px}.brand-sub{display:block;margin-top:5px;font-size:8px;letter-spacing:1.6px;color:var(--muted)}.workspace-tag{display:flex;align-items:center;gap:7px;margin:33px 8px 25px;font-size:11px;color:#66787c}.tag{font-size:8px;letter-spacing:1px;border:1px solid #d6e6e5;border-radius:3px;padding:1px 4px;margin-left:auto;color:var(--accent)}.status-dot{display:inline-block;width:6px;height:6px;background:#48a38d;border-radius:50%;flex-shrink:0}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;padding:11px 18px;min-height:43px;border-radius:7px;border:1px solid transparent;font-size:12px;font-weight:600;transition:background .15s,box-shadow .15s}.primary{background:var(--accent);color:white;box-shadow:0 3px 6px #087f8c12}.primary:hover{background:var(--accent-dark)}.secondary{background:white;border-color:#dce3e3;color:#43575d}.secondary:hover{background:#f1f7f6}.full{width:100%}.small{padding:6px 12px;min-height:32px;font-size:11px}.sidebar-heading{display:flex;justify-content:space-between;margin:35px 10px 14px;font-size:10px;letter-spacing:1px;color:#7b8b8e}.sidebar-heading span{font-size:10px;background:#f1f4f3;border-radius:4px;padding:0 6px}#projects{overflow:auto;flex:1}.project-link{display:flex;width:100%;align-items:center;gap:10px;padding:11px 10px;margin-bottom:5px;border:0;background:transparent;text-align:left;border-radius:6px;color:#66777c;font-size:12px}.project-link:hover{background:#f4f7f6}.project-link.active{background:#eaf4f2;color:#087e80;font-weight:600}.project-link .project-icon{font-size:17px;color:#7faaa7}.project-link .project-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.project-link small{font-size:10px;font-weight:400}.sidebar-bottom{display:flex;gap:12px;padding:20px 9px 0;border-top:1px solid var(--line);font-size:11px;color:#687b7f}.sidebar-bottom small{display:block;font-size:9px;color:#99a6a8;margin-top:2px}.mini-cube{font-size:25px;line-height:1.2;color:#8aa4a6}.topbar{height:79px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:#ffffffb0}.breadcrumb{font-size:11px;color:#8c999b;max-width:65%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb span{padding:0 12px;color:#c4cece}.breadcrumb strong{font-weight:500;color:#51666d}.top-actions{display:flex;gap:15px;align-items:center}.live-label{display:flex;align-items:center;gap:7px;color:#81918d;font-size:10px}.page{max-width:1600px;margin:auto;padding:36px 38px 15px}.page-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:27px}.eyebrow{font-size:9px;font-weight:600;letter-spacing:2px;color:var(--accent)}h1{font-size:29px;line-height:1.4;letter-spacing:-.6px;margin:8px 0}h2,h3,p{margin:0}.page-heading p{font-size:12px;color:var(--muted);margin-top:9px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:white;border:1px solid var(--line);border-radius:9px;margin-bottom:25px;overflow:hidden}.stat{padding:20px 23px;position:relative}.stat+.stat{border-left:1px solid var(--line)}.stat>span{display:block;font-size:10px;color:#809194;letter-spacing:.5px}.stat strong{display:block;font-size:30px;line-height:1.25;font-weight:550;letter-spacing:-.7px;margin-top:10px}.stat small{font-weight:400;font-size:10px;letter-spacing:0;margin-left:8px;color:#91a0a2}.stat i{position:absolute;top:22px;right:20px;font-size:9px;letter-spacing:1px;color:#c0cccc;font-style:normal}.stat .state-value{font-size:17px;letter-spacing:0;margin-top:17px;color:var(--accent)}.stat .circle-icon{font-size:17px;color:var(--accent);top:49px}.empty-workspace{display:grid;grid-template-columns:1fr 1fr;min-height:485px;background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden;position:relative}.blueprint-grid{display:flex;align-items:center;justify-content:center;min-height:370px;background-color:#f4f8f6;background-image:linear-gradient(#dde8e366 1px,transparent 1px),linear-gradient(90deg,#dde8e366 1px,transparent 1px);background-size:23px 23px;position:relative}.blueprint-grid:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse,transparent,#f4f8f6 80%)}.drawing-symbol{z-index:1;position:relative;color:#729b96;width:170px;filter:drop-shadow(0 12px 14px #507a6e12)}.drawing-symbol svg{width:170px}.drawing-chip{position:absolute;right:10px;bottom:27px;border:1px solid #acc4bc;border-radius:4px;background:#fff;padding:3px 12px;color:var(--accent);font-size:12px;letter-spacing:1px;font-weight:600}.empty-copy{padding:55px 28px 45px;align-self:center}.empty-copy h2{font-size:27px;font-weight:550;line-height:1.6;margin:13px 0 14px;letter-spacing:.4px}.empty-copy p{font-size:12px;line-height:1.9;color:#81908f;margin-bottom:22px}.format-note{font-size:9px;color:#9aaba6;margin-top:13px}.steps{grid-column:1/-1;display:flex;justify-content:space-evenly;border-top:1px solid var(--line);padding:23px 15px;gap:12px}.steps>div{display:flex;gap:14px;align-items:center}.steps b{font-size:12px;font-weight:400;color:#94aca4;letter-spacing:1px}.steps span{font-size:11px;color:#536e65}.steps small{display:block;font-size:9px;color:#9aa9a3;margin-top:3px}.workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:20px;align-items:start}.document-panel,.detail-panel{border:1px solid var(--line);border-radius:9px;background:white;overflow:hidden}.panel-heading{padding:16px 17px;display:flex;align-items:center;justify-content:space-between}.panel-heading h2{font-size:12px;font-weight:600}.panel-heading h2 span{font-size:9px;margin-left:7px;color:#8a9d9c;background:#f1f5f3;padding:1px 6px;border-radius:4px}.icon-button{background:transparent;border:1px solid var(--line);border-radius:5px;height:29px;min-width:29px;display:inline-flex;align-items:center;justify-content:center;color:#6a7f81;font-size:17px;padding:1px 7px}.icon-button:hover{background:#eef5f3}.document-search{display:flex;align-items:center;gap:5px;margin:0 14px 10px;padding:5px 9px;background:#f7f9f8;border:1px solid #edf0ee;border-radius:5px}.document-search span{font-size:19px;color:#8c9f9a}.document-search input{background:transparent;border:0;outline:0;min-width:0;width:100%;font-size:10px;color:#425f5b}.document-list{max-height:680px;overflow:auto;min-height:240px}.document-item{display:flex;gap:10px;width:100%;text-align:left;border:0;border-left:3px solid transparent;background:white;padding:15px 13px;color:#53696c;border-bottom:1px solid #f0f3f2}.document-item:hover{background:#f8faf9}.document-item.active{background:#eef6f3;border-left-color:var(--accent)}.file-icon{display:inline-flex;align-items:center;justify-content:center;width:29px;height:34px;border:1px solid #d3e1db;color:#70958a;font-size:7px;font-weight:600;flex-shrink:0;border-radius:3px;background:#fafcfb}.document-item>div{min-width:0;flex:1}.document-name{font-size:10px;line-height:1.7;overflow-wrap:anywhere;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.document-meta{display:flex;justify-content:space-between;gap:7px;margin-top:8px;font-size:9px;color:#9aaba7}.state-dot{width:5px;height:5px;display:inline-block;border-radius:50%;background:currentColor;margin-right:5px}.state-ready{color:#329885}.state-partial{color:#b88a45}.state-failed{color:#c26c62}.state-processing,.state-queued{color:#7899b3}.document-footnote{border-top:1px solid var(--line);padding:15px;color:#9baaa5;font-size:9px;line-height:1.8}.no-document{min-height:450px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#9daaa7;font-size:11px}.no-document>span{font-size:36px;color:#b6c6c0;margin-bottom:15px}.detail-heading{padding:23px 24px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.detail-heading h2{font-size:15px;font-weight:550;line-height:1.7;margin-top:10px;overflow-wrap:anywhere}.detail-heading p{font-size:10px;color:#8b9c96;margin-top:5px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:9px;padding:3px 8px;border-radius:4px;background:#edf5f1;color:#458e79}.badge.partial{background:#fcf6ea;color:#a57835}.badge.failed{background:#fcedeb;color:#b46d63}.badge.processing,.badge.queued{background:#edf3f8;color:#6c8ea7}.tabs{display:flex;border-top:1px solid #f0f3f1;border-bottom:1px solid var(--line);padding:0 22px;gap:24px}.tab{border:0;background:white;border-bottom:2px solid transparent;padding:13px 0 11px;font-size:11px;color:#83968d;white-space:nowrap}.tab.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.tab span{font-size:8px;margin-left:5px;padding:1px 5px;border-radius:3px;background:#f0f4f2;color:#7f9b8c}.tab-pane{padding:18px 22px}.view-toolbar{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#9caaa4;align-items:center;margin-bottom:15px}.text-button{border:0;background:transparent;color:var(--accent);padding:3px 0;font-size:10px;cursor:pointer}.text-button:hover{color:#054e59;text-decoration:underline}.image-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.image-card{border:1px solid #dfe7e2;border-radius:6px;overflow:hidden;display:block;background:white;text-align:left;padding:0;transition:box-shadow .15s}.image-card:hover{box-shadow:0 3px 15px #1b564515;border-color:#91b4a6}.image-card img{width:100%;display:block;aspect-ratio:1.414;object-fit:contain;padding:6px;background:#fafcfb;border-bottom:1px solid #edf1ee}.image-label{padding:9px 11px;display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:10px;color:#536d61}.image-label>span:last-child{font-size:12px;color:#8fa99a}.preview-note{font-size:9px;color:#9eaaa4;margin-top:18px;line-height:1.8}.empty-pane{text-align:center;padding:65px 15px;color:#9aa9a0;font-size:11px;line-height:1.9}.empty-pane .pane-icon{display:block;font-size:27px;color:#a7bcb1;margin-bottom:13px}.warnings{margin:15px 22px 0;border:1px solid #eee1c9;background:#fffbf1;color:#a38751;border-radius:5px;font-size:10px;padding:10px 12px}.warnings summary{cursor:pointer;font-weight:600}.warnings ul{padding-left:17px;margin:7px 0 0;overflow-wrap:anywhere}.job-banner{display:flex;gap:12px;padding:15px 18px;background:#eaf5f3;border:1px solid #d4e8e1;border-radius:7px;margin-bottom:20px;align-items:center}.job-banner strong{display:block;font-size:11px;color:#3a8270}.job-banner span:not(.spinner){font-size:10px;color:#7a9c8c}.job-banner #job-detail{display:block;margin-top:3px}.job-count{margin-left:auto}.spinner{display:inline-block;width:16px;height:16px;border:2px solid #b5d6ca;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.notice{padding:12px 15px;margin-bottom:18px;border-radius:5px;background:#fff5ed;border:1px solid #f0dcc6;color:#b08658;font-size:11px}.text-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.search-field{display:flex;gap:7px;align-items:center;border:1px solid var(--line);border-radius:5px;flex:1;padding:5px 10px;color:#8eaaa0}.search-field input{border:0;outline:0;width:100%;font-size:10px;color:#536e63;min-width:0}.text-explainer{font-size:9px;color:#9baaa1;margin-bottom:17px}.text-entry{padding:13px 2px;border-bottom:1px solid #eef2ef}.text-entry p{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;color:#435d4f}.text-entry small{display:block;margin-top:6px;font-size:9px;color:#9aaba1;overflow-wrap:anywhere}.text-entry .text-index{font-size:8px;color:#b3c3b8;margin-right:8px}.text-summary{font-size:10px;text-align:center;margin-top:15px}.load-more{display:flex;margin:20px auto}.muted{color:#96a69d}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}.info-cell{padding:13px;background:#fff;min-width:0}.info-cell small{display:block;font-size:9px;color:#93a699}.info-cell strong{display:block;font-size:11px;font-weight:500;margin-top:4px;overflow-wrap:anywhere}.section-label{font-size:10px;letter-spacing:.5px;color:#6f8b7b;margin:22px 0 11px;font-weight:550}.layer-list{display:flex;gap:6px;flex-wrap:wrap}.layer-chip{background:#f3f7f4;border:1px solid #e3ece6;border-radius:4px;font-size:9px;padding:4px 8px;color:#6f8a7a;overflow-wrap:anywhere;max-width:100%}.reference{padding:10px;border:1px solid var(--line);margin-bottom:7px;border-radius:4px;font-size:10px;overflow-wrap:anywhere}.reference small{display:block;font-size:9px;color:#97a99d}.reference .ref-status{font-size:9px;color:var(--accent);margin-top:4px}.reference.missing .ref-status{color:var(--orange)}footer{display:flex;align-items:center;gap:11px;border-top:1px solid var(--line);margin-top:32px;padding:18px 0 3px;font-size:9px;color:#9caaa1;letter-spacing:.7px}footer>span{color:#afbbb2;font-size:9px;letter-spacing:0}.footer-right{margin-left:auto}dialog{border:1px solid var(--line);border-radius:11px;padding:0;box-shadow:0 25px 100px #122c2f33;color:var(--ink)}dialog::backdrop{background:#102b3566;backdrop-filter:blur(4px)}#upload-modal{width:590px;max-width:calc(100vw - 30px);max-height:90vh}#upload-form{padding:28px}.modal-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.modal-heading h2{font-size:22px;margin-top:3px}.input-label{display:block;font-size:10px;color:#71897b;margin-bottom:6px}.project-name{width:100%;border:1px solid #dce6df;padding:10px 12px;border-radius:5px;font-size:12px;margin-bottom:17px;outline:0}.project-name:focus{border-color:var(--accent)}.dropzone{border:1px dashed #a6c2b4;background:#f6faf7;border-radius:7px;display:flex;align-items:center;flex-direction:column;justify-content:center;padding:26px 15px;cursor:pointer;transition:background .15s}.dropzone.drag{background:#e4f2e9;border-color:var(--accent)}.upload-icon{font-size:28px;color:#6b9c86;margin-bottom:7px}.dropzone strong{font-size:13px;color:#577e68;font-weight:550}.dropzone span{font-size:10px;color:#91a697;margin-top:6px}.dropzone small{font-size:9px;color:#a5b6a9;margin-top:17px;text-align:center}.upload-files{max-height:200px;overflow:auto;margin-top:12px}.upload-file{display:flex;align-items:center;gap:8px;padding:9px 3px;border-bottom:1px solid #eef3ef;font-size:10px}.upload-file .name{flex:1;min-width:0;overflow-wrap:anywhere}.upload-file small{color:#98ac9d;white-space:nowrap}.upload-file button{font-size:17px;border:0;background:transparent;color:#a4b5a7}.modal-footer{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.modal-footer>span{font-size:10px;color:#92a497}.error{font-size:11px;line-height:1.8;color:#b15b50;margin-top:10px;overflow-wrap:anywhere}.progress-track{background:#e9f0ec;height:5px;border-radius:3px;margin-top:18px;overflow:hidden}.progress-track i{display:block;width:0;height:100%;background:var(--accent);transition:width .2s}#progress-text{font-size:10px;color:#789985;display:block;margin-top:6px}#viewer{width:96vw;max-width:none;height:94vh;max-height:none;background:#eaf0ec;overflow:hidden}.viewer-bar{height:54px;background:white;display:flex;align-items:center;justify-content:space-between;padding:10px 17px;border-bottom:1px solid #d6e2d9;gap:15px}.viewer-bar>strong{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-bar>div{display:flex;align-items:center;gap:12px}.viewer-bar .text-button{font-size:10px;white-space:nowrap}#viewer-stage{height:calc(100% - 80px);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab;touch-action:none;user-select:none}#viewer-stage:active{cursor:grabbing}#viewer-image{max-width:94%;max-height:94%;object-fit:contain;transform-origin:center;box-shadow:0 4px 20px #48644c22}.viewer-hint{text-align:center;height:26px;font-size:9px;color:#8fa294}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:11px 23px;background:#244936;color:white;font-size:12px;border-radius:7px;box-shadow:0 5px 20px #122f2922;z-index:100}.login-screen{position:fixed;inset:0;z-index:200;background:#f0f5f1;display:grid;place-items:center;padding:20px}.login-card{max-width:400px;width:100%;padding:40px;background:white;border:1px solid var(--line);border-radius:12px;box-shadow:0 15px 60px #2d604411}.login-card>.brand-mark{margin-bottom:25px;display:grid}.login-card>.eyebrow{display:block}.login-card h1{font-size:23px;margin:10px 0}.login-card p{font-size:11px;color:#90a196;line-height:1.9;margin-bottom:25px}.login-card label{font-size:10px;color:#7f9788;display:block;margin-bottom:5px}.login-card input{width:100%;padding:11px;border:1px solid #d8e4db;border-radius:5px}.login-card button{width:100%;margin-top:10px}.login-card .error{color:#b15b50;margin:10px 0}body.auth-required{overflow:hidden}.sidebar-empty{font-size:10px;text-align:center;color:#acb9b1;padding:15px 0;line-height:1.9}@media(min-width:1600px){.page{padding-top:45px}.page-heading{margin-bottom:35px}.stats{margin-bottom:30px}.workspace{grid-template-columns:290px minmax(0,1fr)}}@media(max-width:1150px){.shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding:28px 13px 17px}.page{padding:28px 23px 12px}.topbar{padding:0 23px}.workspace{grid-template-columns:230px minmax(0,1fr);gap:14px}.image-grid{grid-template-columns:1fr}.stats .stat{padding:18px 16px}.stat i{display:none}.stat strong{font-size:25px}.stat .state-value{font-size:15px}.empty-copy{padding:30px 20px}.empty-copy h2{font-size:23px}.tabs{gap:15px;padding:0 15px}.tab-pane{padding:15px}.detail-heading{padding:18px}.warnings{margin:13px 15px 0}.live-label{display:none}}@media(max-width:800px){.shell{grid-template-columns:1fr}.sidebar{position:relative;flex-direction:row;height:auto;align-items:center;padding:15px 20px;gap:20px;border-right:0;border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{padding:0;font-size:21px}.brand-mark{width:33px;height:36px;font-size:24px}.brand-sub{font-size:7px}.workspace-tag,.sidebar-heading,.sidebar-bottom{display:none}.sidebar>.button{margin-left:auto;width:auto;min-height:36px;padding:6px 12px}.sidebar #projects{flex-basis:100%;display:flex;gap:6px;overflow:auto;flex-shrink:0}.project-link{width:auto;flex-shrink:0;max-width:200px;margin:0;padding:7px 10px;font-size:10px}.project-link .project-icon{font-size:14px}.project-link small{font-size:9px}.topbar{height:48px;padding:0 20px}.page{padding:25px 20px 10px}.page-heading{align-items:flex-start}h1{font-size:24px}.eyebrow{font-size:8px}.page-heading p{font-size:11px}.page-heading>.button{padding:7px 10px;min-height:32px;font-size:10px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:20px}.stat{padding:15px 18px!important}.stat:nth-child(3){border-left:0;border-top:1px solid var(--line)}.stat:nth-child(4){border-top:1px solid var(--line)}.stat strong{font-size:25px;margin-top:7px}.stat .state-value{font-size:16px;margin-top:12px}.empty-workspace{grid-template-columns:1fr;min-height:0}.blueprint-grid{min-height:200px}.drawing-symbol,.drawing-symbol svg{width:125px}.drawing-chip{bottom:20px;font-size:9px;padding:2px 9px}.empty-copy{padding:27px 28px 30px}.empty-copy h2 br{display:none}.empty-copy p{font-size:11px}.steps{padding:18px 15px}.steps>div{gap:7px}.steps b{font-size:9px}.steps span{font-size:9px}.steps small{font-size:8px}.workspace{grid-template-columns:1fr}.document-list{min-height:0;max-height:220px}.document-item{padding:11px 14px}.document-name{-webkit-line-clamp:1}.document-footnote{display:none}.image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-heading h2{font-size:13px}.viewer-bar{padding:8px 10px;gap:5px}.viewer-bar>div{gap:6px}.viewer-bar>strong{max-width:90px}.viewer-bar .text-button{font-size:9px}#viewer-download{display:none}footer{font-size:8px}.footer-right{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
