:root{--paper:#f7f8f4;--panel:#fffffcf5;--line:#c8d8d0;--ink-strong:#233f3a;--ink-mid:#48645f;--ink-soft:#6d837d;--accent-strong:#8fd0bf;--accent-deep:#5ba997;--accent-quiet:#dfeae4;--warning:#b86b4f;--font-ui:"Avenir Next", "Segoe UI", sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif;color:var(--ink-mid);font:16px/1.5 var(--font-ui);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at 0 0,#d3e6e0bd,#0000 28%),linear-gradient(#f8faf6 0%,#eef5f0 52%,#f7f1e8 100%)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:0 0;min-width:320px;margin:0}button,input,textarea{font:inherit}h1,h2{color:var(--ink-strong)}h1{font:700 clamp(34px, 4vw, 56px)/1.02 var(--font-display);letter-spacing:0}h2{font:700 26px/1.2 var(--font-ui)}a{color:inherit}.app-shell{width:100%;min-height:100vh;padding:16px clamp(20px,4vw,48px) 40px}.login-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{border:1px solid var(--line);background:var(--panel);border-radius:8px;gap:22px;width:min(560px,100%);padding:36px;display:grid;box-shadow:0 20px 48px #25484224}.login-brand{gap:10px;display:grid}.login-brand h1{color:var(--ink-strong);white-space:nowrap;margin:0;font-size:clamp(32px,4.4vw,48px);line-height:1.08}.login-field input{border:1px solid var(--line);width:100%;color:var(--ink-strong);background:#fffffcfa;border-radius:8px;padding:14px 16px}.login-field input:focus{border-color:var(--accent-deep);outline:none;box-shadow:0 0 0 4px #5ba9972e}.login-error{color:var(--warning);font:600 13px/1.4 var(--font-ui);margin:-6px 0 0}.login-submit{justify-self:stretch}.platform-header{border-bottom:1px solid #79978e3d;justify-content:space-between;align-items:flex-start;gap:28px;width:100%;max-width:1180px;margin:0 auto;padding:12px 0 16px;display:flex}.platform-title{min-width:0}.platform-title .eyebrow{margin:0 0 6px}.platform-header h1{white-space:normal;margin:0;font-size:clamp(30px,3vw,44px);line-height:1.18}.tool-nav{justify-content:flex-start;width:100%;max-width:1180px;margin:12px auto 0;display:flex}.back-button{min-width:128px}.tool-panel{width:100%;max-width:1180px;margin:0 auto;animation:.15s ease-out both tool-panel-enter}.tool-panel.fddq-tool-panel{max-width:1320px}@keyframes tool-panel-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.tool-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.tool-card{border:1px solid var(--line);background:var(--panel);border-radius:8px;justify-content:space-between;gap:18px;min-height:150px;padding:22px;display:flex;box-shadow:0 16px 40px #25484214}.tool-card h2,.tool-card p{margin:0}.tool-card h2{margin-top:0}.tool-card p{color:var(--ink-soft);margin-top:8px}.tool-card .button{align-self:flex-end}.progress-panel{background:#fffffcb8;border:1px solid #79978e42;border-radius:8px;gap:9px;margin-top:18px;padding:14px;display:grid}.progress-copy{color:var(--ink-mid);font:700 13px/1.3 var(--font-ui);justify-content:space-between;align-items:center;gap:14px;display:flex}.progress-copy strong{color:var(--ink-strong)}.progress-copy span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.progress-track{background:#79978e2e;border-radius:8px;height:8px;overflow:hidden}.progress-track span{border-radius:inherit;background:linear-gradient(90deg,#5ba997,#8fd0bf);height:100%;transition:width .18s;display:block}.data-table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:760px;font-size:14px}.data-table th,.data-table td{text-align:left;vertical-align:top;overflow-wrap:anywhere;border-bottom:1px solid #79978e38;padding:12px 14px}.data-table th{color:var(--ink-strong);font:800 13px/1.3 var(--font-ui);background:#8fd0bf29}.data-table td{color:var(--ink-mid)}.compact-button{min-height:32px;padding:7px 11px}.data-preview-table{table-layout:fixed;min-width:0}.table-footnote,.empty-state{color:var(--ink-soft);margin:16px 0 0;font-size:14px}.hero{background:linear-gradient(135deg,#8fd0bf59,#f7f1e8db),linear-gradient(#fbfdf9 0%,#eef5f0 100%);border:1px solid #79978e4d;border-radius:8px;grid-template-columns:minmax(0,1.35fr) minmax(320px,.75fr);gap:clamp(20px,3vw,40px);width:100%;min-height:280px;margin-top:22px;padding:clamp(28px,4vw,44px);display:grid;box-shadow:0 22px 54px #2548421a}.hero h1{white-space:nowrap;max-width:none;color:var(--ink-strong);margin:0 0 16px}.eyebrow{font:700 12px/1.3 var(--font-ui);letter-spacing:.18em;text-transform:uppercase;color:#724b2fb8;margin:0 0 12px}.hero-topline{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.hero-topline .eyebrow{margin:0}.internal-badge{color:#724b2fad;font:700 15px/1.1 var(--font-ui);letter-spacing:.18em;text-transform:uppercase;box-shadow:none;mix-blend-mode:multiply;opacity:.88;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.hero-copy{color:#724b2fd1;max-width:72ch;margin:0;font-size:17px;line-height:1.75}.hero-stats{grid-template-columns:minmax(220px,320px);justify-content:end;align-self:stretch;gap:16px;display:grid}.stat-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(#fffcf8c2,#fff6ee94);border:1px solid #e4ab794d;border-radius:24px;flex-direction:column;justify-content:space-between;gap:12px;min-height:132px;padding:22px;display:flex}.stat-card span{color:#91664ad1;text-transform:uppercase;letter-spacing:.08em;font-size:12px}.stat-card strong{font:700 clamp(34px, 4vw, 44px)/1 var(--font-ui);color:var(--ink-strong)}.workspace{margin-top:20px;display:block}.workspace>.panel+.panel{margin-top:24px}.panel{border:1px solid var(--line);background:linear-gradient(#fffdf9f5,#fbf4edfa);border-radius:32px;width:100%;overflow:hidden;box-shadow:0 18px 50px #ab794a1a}.input-panel{width:100%}.extractor-drop-zone{color:var(--ink-mid);cursor:pointer;background:#fffdf9bd;border:1px dashed #5b746b6b;border-radius:18px;justify-content:space-between;align-items:center;gap:16px;margin:18px clamp(24px,4vw,40px) 0;padding:16px 18px;transition:border-color .14s,background .14s,box-shadow .14s;display:flex}.extractor-drop-zone:hover,.extractor-drop-zone:focus-visible,.extractor-drop-panel.is-drag-active .extractor-drop-zone{background:#e5f5eed1;border-color:#5ba997e6;outline:none;box-shadow:inset 0 0 0 1px #5ba9973d}.extractor-drop-zone strong{color:var(--ink-strong);font:700 15px/1.3 var(--font-ui)}.extractor-drop-zone span{color:var(--ink-soft);font:600 13px/1.4 var(--font-ui);text-align:right}.review-panel{padding-bottom:clamp(28px,4vw,40px)}.panel-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:clamp(28px,4vw,40px) clamp(24px,4vw,40px) 0;display:flex}.panel-head-actions-only{justify-content:flex-end}.panel-head h2{margin:0}.review-panel-head{padding-bottom:10px}.review-summary{color:var(--ink-soft);font:400 15px/1.55 var(--font-ui);margin:10px 0 0}.actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.button{appearance:none;font:600 14px/1 var(--font-ui);cursor:pointer;border:0;border-radius:999px;padding:13px 18px;transition:transform .12s,box-shadow .12s,opacity .12s}.button:hover:not(:disabled){transform:translateY(-1px)}.button.secondary,.button.ghost{color:var(--ink-strong);background:#fac0902e;border:1px solid #e4ab795c}.button:disabled{opacity:.66;cursor:not-allowed;box-shadow:none;transform:none}.button-disabled{opacity:.66;cursor:not-allowed;pointer-events:none}.hidden-input{display:none}.export-config,.chapter-toolbar,.anchor-config{padding-left:clamp(24px,4vw,40px);padding-right:clamp(24px,4vw,40px)}.export-config{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;padding-top:28px;display:grid}.chapter-toolbar{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:18px;padding-top:24px;display:grid}.anchor-config{grid-template-columns:1fr;gap:18px;padding-top:24px;padding-bottom:clamp(28px,4vw,40px);display:grid}.anchor-row{grid-template-columns:minmax(0,1fr) 150px;align-items:end;gap:18px;display:grid}.chapter-picker,.anchor-field,.export-field{margin-top:0}.anchor-page-field input{text-align:left}.stacked{color:var(--ink-mid);font:600 14px/1.3 var(--font-ui);flex-direction:column;align-items:stretch;gap:10px;display:flex}.chapter-summary{color:var(--ink-soft);white-space:nowrap;align-items:center;gap:12px;font-size:14px;display:flex}.password-inline{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.password-confirm-button{white-space:nowrap}.chapter-picker select,.anchor-field input,.export-field select,.export-field input{width:100%;color:var(--ink-strong);font:400 15px/1.55 var(--font-ui);box-sizing:border-box;background:#fffdf9fa;border:1px solid #e4ab7975;border-radius:18px;padding:14px 16px;box-shadow:inset 0 1px #ffffffeb}.chapter-picker select:focus,.anchor-field input:focus,.export-field select:focus,.export-field input:focus{border-color:#e4ab79eb;outline:none;box-shadow:0 0 0 4px #fac09042,inset 0 1px #ffffffeb}.error{color:#9a5f34;background:#fac0902e;border-radius:18px;margin:0 clamp(24px,4vw,40px) clamp(28px,4vw,40px);padding:14px 16px}.review-list{gap:16px;padding:0 clamp(24px,4vw,40px);display:grid}.review-card{background:#fffcf7e6;border:1px solid #e4ab7947;border-radius:22px;padding:18px}.review-card.is-flagged{border-color:#ca804870;box-shadow:inset 0 0 0 1px #ca80481f}.review-card-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.review-card-meta,.review-card-actions,.review-flags,.review-context{flex-wrap:wrap;gap:10px;display:flex}.review-card-meta{color:var(--ink-soft);font:400 13px/1.4 var(--font-ui);align-items:center}.review-card-meta strong{color:var(--ink-strong);font:700 14px/1.2 var(--font-ui)}.review-card-actions{justify-content:flex-end}.review-flags{margin-top:12px}.review-flag{color:var(--ink-strong);font:600 12px/1.2 var(--font-ui);background:#ca804824;border-radius:999px;align-items:center;padding:7px 10px;display:inline-flex}.review-editor{width:100%;min-height:92px;color:var(--ink-strong);font:400 15px/1.6 var(--font-ui);resize:vertical;box-sizing:border-box;background:#fffdf9fa;border:1px solid #e4ab795c;border-radius:18px;margin-top:14px;padding:14px 16px}.review-editor:focus{border-color:#e4ab79eb;outline:none;box-shadow:0 0 0 4px #fac09042,inset 0 1px #ffffffeb}.review-context{flex-direction:column;gap:8px;margin-top:14px}.review-context p{color:var(--ink-soft);font:400 13px/1.55 var(--font-ui);margin:0}.review-context strong{color:var(--ink-mid)}.review-empty{color:var(--ink-soft);font:400 15px/1.55 var(--font-ui);text-align:center;border:1px dashed #e4ab795c;border-radius:22px;padding:24px}.dialog-backdrop{z-index:20;background:#7653353d;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog-card{background:#fffcf7fa;border:1px solid #e4ab796b;border-radius:26px;width:min(560px,100vw - 32px);padding:26px;box-shadow:0 26px 72px #ab794a29}.dialog-card h3{color:var(--ink-strong);margin:0 0 10px}.dialog-card p{white-space:pre-line;color:var(--ink-mid);margin:0}.dialog-message{margin-bottom:16px!important}.dialog-field{color:var(--ink-strong);font:600 14px/1.4 var(--font-ui);gap:8px;margin-top:4px;display:grid}.dialog-field input{width:100%;color:var(--ink-strong);font:400 15px/1.4 var(--font-ui);box-sizing:border-box;background:#fffdf9f5;border:1px solid #e4ab7966;border-radius:14px;padding:13px 14px}.dialog-field input:focus{border-color:#e4ab79eb;outline:none;box-shadow:0 0 0 4px #fac09042,inset 0 1px #ffffffeb}.dialog-error{font:500 13px/1.5 var(--font-ui);color:#b65a42!important;margin-top:12px!important}.dialog-actions{justify-content:flex-end;gap:12px;margin-top:22px;display:flex}.toast-stack{z-index:18;position:fixed;top:24px;right:24px}.toast-card{background:#fffaf4fa;border:1px solid #e4ab795c;border-radius:18px;flex-direction:column;gap:6px;min-width:300px;max-width:min(440px,100vw - 48px);padding:16px 18px;display:flex;box-shadow:0 18px 44px #ab794a29}.toast-card strong{color:var(--ink-strong);font:700 14px/1.2 var(--font-ui)}.toast-card span{color:var(--ink-mid);font:400 14px/1.45 var(--font-ui)}.hero h1{white-space:normal}.eyebrow,.internal-badge,.stat-card span{letter-spacing:0;color:var(--ink-soft)}.internal-badge{font-size:13px}.hero-copy{color:var(--ink-mid)}.stat-card,.panel,.review-card,.review-empty,.dialog-card,.toast-card,.review-editor,.dialog-field input,.chapter-picker select,.anchor-field input,.export-field select,.export-field input,.error,.review-flag,.button{border-radius:8px}.stat-card,.review-card,.toast-card,.dialog-card{border-color:var(--line);background:#fffffcf0}.stat-card span,.review-card-meta,.review-context p,.review-empty,.chapter-summary,.review-summary{color:var(--ink-soft)}.panel{border-color:var(--line);background:var(--panel);box-shadow:0 16px 42px #25484214}.button.primary{color:var(--ink-strong);background:linear-gradient(135deg, var(--accent-strong), var(--accent-deep));box-shadow:0 10px 22px #25484229}.button.secondary,.button.ghost{color:var(--ink-strong);background:#dfeae49e;border-color:#79978e57}.chapter-picker select,.anchor-field input,.export-field select,.export-field input,.review-editor,.dialog-field input{background:#fffffcfa;border-color:#79978e6b}.chapter-picker select:focus,.anchor-field input:focus,.export-field select:focus,.export-field input:focus,.review-editor:focus,.dialog-field input:focus{border-color:var(--accent-deep);box-shadow:0 0 0 4px #5ba9972e,inset 0 1px #ffffffeb}.error,.review-flag{color:var(--warning);background:#b86b4f1a}.dialog-backdrop{background:#1c322e47}.dialog-error{color:var(--warning)!important}@media (width<=1180px){.hero{grid-template-columns:1fr}.hero-stats,.export-config{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter-toolbar,.anchor-config,.anchor-row,.review-card-head{grid-template-columns:1fr}.actions{justify-content:flex-start}}@media (width<=720px){.app-shell{padding:14px 14px 28px}.login-panel{padding:28px 22px}.login-brand h1,.platform-header h1{font-size:clamp(28px,8vw,34px)}.hero,.platform-header,.panel-head,.hero-topline,.actions,.tool-card,.review-card-head,.review-card-actions{flex-direction:column;align-items:stretch;display:flex}.tool-nav{display:flex}.hero-stats,.export-config,.anchor-config,.anchor-row,.password-inline{grid-template-columns:1fr}.extractor-drop-zone{flex-direction:column;align-items:flex-start}.extractor-drop-zone span{text-align:left}.data-preview-table,.data-preview-table thead,.data-preview-table tbody,.data-preview-table tr,.data-preview-table td{width:100%;display:block}.data-preview-table thead{display:none}.data-preview-table tr{background:#fffffcc2;border:1px solid #79978e38;border-radius:8px;margin-bottom:10px;padding:10px 12px}.data-preview-table td{border-bottom:1px solid #79978e29;grid-template-columns:92px minmax(0,1fr);gap:10px;padding:8px 0;display:grid}.data-preview-table td:last-child{border-bottom:0}.data-preview-table td:before{content:attr(data-label);color:var(--ink-soft);font:800 12px/1.4 var(--font-ui)}.chapter-summary{white-space:normal}.toast-stack{top:16px;left:16px;right:16px}.toast-card{min-width:0;max-width:none}}.app-shell.is-fddq-view{color:#34423f;background:#f3f5f6;min-height:100dvh;padding:0 24px 40px;font-family:Inter,PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif;overflow-x:hidden}.fddq-topbar{border-bottom:1px solid #d9dee1;grid-template-columns:minmax(128px,1fr) auto minmax(128px,1fr);align-items:center;gap:24px;width:min(1440px,100vw - 48px);min-height:82px;margin:0 auto;display:grid}.fddq-topbar-title{text-align:center;min-width:0}.fddq-topbar-title>span{color:#687672;margin-bottom:2px;font-size:12px;font-weight:600;display:block}.fddq-topbar-title h1{color:#193d35;letter-spacing:0;white-space:normal;margin:0;font-family:inherit;font-size:30px;font-weight:700;line-height:1.18}.fddq-topbar-button{color:#3f4c49;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 14px;font:600 14px/1 inherit;transition:color .14s,border-color .14s,background-color .14s;display:inline-flex}.fddq-topbar-button:hover{color:#173f36;background:#fff;border-color:#cfd6d8}.fddq-back-button{justify-self:start}.fddq-logout-button{justify-self:end}.fddq-logout-label-short{display:none}.tool-panel.fddq-tool-panel{width:min(1440px,100vw - 48px);max-width:none}.fddq-workspace{width:100%;margin-top:24px}.fddq-workbench{background:#fff;border:1px solid #d9dee1;border-radius:8px;width:100%;padding:clamp(24px,3vw,40px);box-shadow:0 8px 24px #2236310f}.fddq-upload-zone{color:#40504c;cursor:pointer;background:#fafbfb;border:1px dashed #aebbb8;border-radius:8px;outline:none;place-items:center;min-height:250px;padding:28px;transition:border-color .15s,background-color .15s,box-shadow .15s;display:grid}.fddq-upload-zone[role=group]{cursor:default}.fddq-upload-zone[role=button]:hover,.fddq-upload-zone[role=button]:focus-visible{background:#f7faf9;border-color:#397666;box-shadow:0 0 0 3px #2465551a}.fddq-workbench.is-drag-active .fddq-upload-zone{background:#eef7f3;border-style:solid;border-color:#226a58;box-shadow:inset 0 0 0 1px #226a582e}.fddq-upload-empty{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:660px;display:flex}.fddq-upload-empty>svg{color:#2c695a;margin-bottom:2px}.fddq-upload-empty strong{color:#243d37;font-size:17px;font-weight:700;line-height:1.4}.fddq-upload-empty span,.fddq-upload-empty small{color:#5e6d69;font-size:14px;line-height:1.5}.fddq-upload-empty small{font-size:13px}.fddq-selected-file{background:#fff;border:1px solid #dce2e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;width:min(760px,100%);padding:22px;display:grid;box-shadow:0 4px 14px #2236310d}.fddq-file-icon{color:#205e50;background:#eaf3f0;border-radius:8px;place-items:center;width:52px;height:52px;display:grid}.fddq-file-copy{min-width:0}.fddq-file-copy strong{color:#243532;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.45;display:-webkit-box;overflow:hidden}.fddq-file-copy span{color:#66746f;margin-top:5px;font-size:14px;line-height:1.4;display:block}.fddq-file-actions{align-items:center;gap:8px;display:flex}.fddq-file-action-button{color:#53615e;cursor:pointer;background:#fff;border:1px solid #d6dddf;border-radius:6px;justify-content:center;align-items:center;gap:7px;min-height:44px;padding:0 13px;font:600 14px/1 inherit;display:inline-flex}.fddq-file-action-button:hover{color:#274c43;background:#f7f9f8;border-color:#b9c4c2}.fddq-progress-panel{background:#f8faf9;border:1px solid #dce2e3;border-radius:8px;gap:10px;margin-top:22px;padding:16px 18px;display:grid}.fddq-progress-copy{color:#3d4d49;justify-content:space-between;align-items:center;gap:16px;font-size:14px;display:flex}.fddq-progress-copy span{overflow-wrap:anywhere;align-items:center;gap:8px;min-width:0;display:inline-flex}.fddq-progress-copy strong{color:#1e5145;flex:none;font-size:14px}.fddq-progress-track{background:#dfe6e4;border-radius:8px;height:8px;overflow:hidden}.fddq-progress-track span{border-radius:inherit;background:#286b5a;height:100%;transition:width .18s;display:block}.fddq-inline-message{border:1px solid;border-radius:6px;align-items:flex-start;gap:9px;margin-top:16px;padding:12px 14px;font-size:14px;line-height:1.5;display:flex}.fddq-inline-message svg{flex:none;margin-top:1px}.fddq-inline-message span{overflow-wrap:anywhere;min-width:0}.fddq-inline-message.is-error{color:#8a372e;background:#fff7f6;border-color:#efc8c2}.fddq-inline-message.is-success{color:#225d4f;background:#f2f8f5;border-color:#c9ded6}.fddq-actions{border-top:1px solid #e2e6e7;justify-content:flex-end;align-items:center;gap:12px;margin-top:24px;padding-top:22px;display:flex}.fddq-action-button{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 20px;font:700 14px/1 inherit;transition:border-color .14s,color .14s,background-color .14s,box-shadow .14s;display:inline-flex}.fddq-action-button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.fddq-secondary-action{color:#4e5d59;background:#fff;border-color:#ccd4d5;min-width:132px}.fddq-secondary-action:hover:not(:disabled){color:#2e4a43;background:#f7f9f8;border-color:#aebbb8}.fddq-primary-action{color:#fff;background:#1f5f50;min-width:206px;box-shadow:0 6px 14px #1f5f502e}.fddq-primary-action:hover:not(:disabled){background:#184f43}.fddq-spinner{animation:.9s linear infinite fddq-spin}@keyframes fddq-spin{to{transform:rotate(360deg)}}@media (width<=767px){.app-shell.is-fddq-view{padding:0 16px calc(24px + env(safe-area-inset-bottom))}.fddq-topbar{grid-template-columns:44px minmax(0,1fr) 62px;gap:8px;width:100%;min-height:72px}.fddq-topbar-title>span{display:none}.fddq-topbar-title h1{font-size:23px;line-height:1.24}.fddq-topbar-button{gap:3px;min-width:44px;min-height:44px;padding:0 4px}.fddq-back-button span,.fddq-logout-label{display:none}.fddq-logout-label-short{white-space:nowrap;font-size:13px;display:inline}.tool-panel.fddq-tool-panel{width:100%}.fddq-workspace{margin-top:16px}.fddq-workbench{padding:16px}.fddq-upload-zone{min-height:210px;padding:18px}.fddq-upload-empty{gap:8px}.fddq-upload-empty strong{font-size:16px}.fddq-selected-file{grid-template-columns:auto minmax(0,1fr);gap:14px;padding:16px}.fddq-file-icon{width:46px;height:46px}.fddq-file-actions{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.fddq-file-action-button{width:100%}.fddq-progress-panel{margin-top:16px;padding:14px}.fddq-progress-copy{align-items:flex-start}.fddq-actions{flex-direction:column;align-items:stretch;margin-top:20px;padding-top:18px}.fddq-action-button{width:100%;min-height:48px}}.app-shell{color:#34423f;background:#f3f5f6;min-height:100dvh;padding:0 24px 40px;font-family:Inter,PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif;overflow-x:hidden}.site-topbar{border-bottom:1px solid #d9dee1;grid-template-columns:minmax(128px,1fr) auto minmax(128px,1fr);align-items:center;gap:24px;width:min(1440px,100vw - 48px);min-height:82px;margin:0 auto;display:grid}.site-topbar-title{text-align:center;min-width:0}.site-topbar-title>span{color:#687672;margin-bottom:2px;font-size:12px;font-weight:600;display:block}.site-topbar-title h1{color:#193d35;letter-spacing:0;white-space:normal;margin:0;font-family:inherit;font-size:30px;font-weight:700;line-height:1.18}.site-topbar-mark{color:#416058;justify-self:start;font-size:13px;font-weight:700}.site-topbar-button{color:#3f4c49;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 14px;font:600 14px/1 inherit;transition:color .14s,border-color .14s,background-color .14s;display:inline-flex}.site-topbar-button:hover{color:#173f36;background:#fff;border-color:#cfd6d8}.site-back-button{justify-self:start}.site-logout-button{justify-self:end}.site-logout-label-short{display:none}.tool-panel,.tool-panel.fddq-tool-panel{width:min(1440px,100vw - 48px);max-width:none}.home-workspace{margin-top:24px}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.tool-card{background:#fff;border:1px solid #d9dee1;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;min-height:116px;padding:24px;display:grid;box-shadow:0 8px 24px #2236310f}.tool-card-icon{color:#205e50;background:#eaf3f0;border-radius:8px;place-items:center;width:52px;height:52px;display:grid}.tool-card-copy{min-width:0}.tool-card h2{color:#243d37;font-family:inherit;font-size:19px;line-height:1.35}.tool-card-action{color:#275d50;cursor:pointer;background:#fff;border:1px solid #cbd5d3;border-radius:6px;justify-content:center;align-items:center;gap:7px;min-height:44px;padding:0 14px;font:700 14px/1 inherit;transition:border-color .14s,color .14s,background-color .14s;display:inline-flex}.tool-card-action:hover{color:#174c3f;background:#f5f9f7;border-color:#8fa8a2}.login-screen{background:#f3f5f6;min-height:100dvh;padding:24px;font-family:Inter,PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif}.login-panel{background:#fff;border-color:#d9dee1;gap:24px;width:min(480px,100%);padding:34px;box-shadow:0 12px 32px #22363114}.login-brand{gap:6px}.login-brand .internal-badge{color:#59706a;letter-spacing:0;mix-blend-mode:normal;font-family:inherit;font-size:12px}.login-brand h1{color:#193d35;white-space:normal;font-family:inherit;font-size:30px;line-height:1.2}.login-field{color:#40504c;font-family:inherit;font-size:14px}.login-field input{color:#243532;background:#fff;border-color:#cbd4d5;border-radius:6px;min-height:48px;padding:0 14px}.login-field input:focus{border-color:#397666;box-shadow:0 0 0 3px #2465551f}.login-submit{justify-content:center;align-items:center;gap:8px;min-height:48px;display:inline-flex;color:#fff!important;background:#1f5f50!important;box-shadow:0 6px 14px #1f5f502e!important}.extractor-workspace{width:100%;margin-top:24px}.extractor-workbench{background:#fff;border:1px solid #d9dee1;border-radius:8px;width:100%;padding:clamp(24px,3vw,40px);box-shadow:0 8px 24px #2236310f}.extractor-summary{color:#687672;justify-content:flex-end;align-items:baseline;gap:10px;margin-bottom:18px;font-size:14px;display:flex}.extractor-summary strong{color:#1f584b;font-size:28px;line-height:1}.extractor-upload-zone{color:#40504c;cursor:pointer;background:#fafbfb;border:1px dashed #aebbb8;border-radius:8px;outline:none;place-items:center;min-height:230px;padding:28px;transition:border-color .15s,background-color .15s,box-shadow .15s;display:grid}.extractor-upload-zone[role=group]{cursor:default}.extractor-upload-zone[role=button]:hover,.extractor-upload-zone[role=button]:focus-visible{background:#f7faf9;border-color:#397666;box-shadow:0 0 0 3px #2465551a}.extractor-workbench.is-drag-active .extractor-upload-zone{background:#eef7f3;border-style:solid;border-color:#226a58;box-shadow:inset 0 0 0 1px #226a582e}.extractor-upload-empty{text-align:center;flex-direction:column;align-items:center;gap:9px;max-width:660px;display:flex}.extractor-upload-empty>svg{color:#2c695a;margin-bottom:2px}.extractor-upload-empty strong{color:#243d37;font-size:17px;font-weight:700;line-height:1.4}.extractor-upload-empty span,.extractor-upload-empty small{color:#5e6d69;font-size:14px;line-height:1.5}.extractor-upload-empty small{font-size:13px}.extractor-selected-file{background:#fff;border:1px solid #dce2e3;border-radius:8px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;width:min(760px,100%);padding:22px;display:grid;box-shadow:0 4px 14px #2236310d}.extractor-file-icon{color:#205e50;background:#eaf3f0;border-radius:8px;place-items:center;width:52px;height:52px;display:grid}.extractor-file-copy{min-width:0}.extractor-file-copy strong{color:#243532;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.45;display:-webkit-box;overflow:hidden}.extractor-file-copy span{color:#66746f;margin-top:5px;font-size:14px;line-height:1.4;display:block}.extractor-file-actions{align-items:center;gap:8px;display:flex}.extractor-file-action-button{color:#53615e;cursor:pointer;background:#fff;border:1px solid #d6dddf;border-radius:6px;justify-content:center;align-items:center;gap:7px;min-height:44px;padding:0 13px;font:600 14px/1 inherit;display:inline-flex}.extractor-file-action-button:hover{color:#274c43;background:#f7f9f8;border-color:#b9c4c2}.extractor-progress-panel{background:#f8faf9;border:1px solid #dce2e3;border-radius:8px;gap:10px;margin-top:18px;padding:16px 18px;display:grid}.extractor-progress-copy{color:#3d4d49;justify-content:space-between;align-items:center;gap:16px;font-size:14px;display:flex}.extractor-progress-copy span{overflow-wrap:anywhere;align-items:center;gap:8px;min-width:0;display:inline-flex}.extractor-progress-copy strong{color:#1e5145;flex:none}.extractor-progress-track{background:#dfe6e4;border-radius:8px;height:8px;overflow:hidden}.extractor-progress-track span{border-radius:inherit;background:#286b5a;height:100%;transition:width .18s;display:block}.extractor-inline-error{color:#8a372e;background:#fff7f6;border:1px solid #efc8c2;border-radius:6px;align-items:flex-start;gap:9px;margin-top:16px;padding:12px 14px;font-size:14px;line-height:1.5;display:flex}.extractor-inline-error svg{flex:none;margin-top:1px}.extractor-section{border-top:1px solid #e2e6e7;margin-top:28px;padding-top:24px}.extractor-section-heading{margin-bottom:18px}.extractor-section-heading h2{color:#28443d;margin:0;font-family:inherit;font-size:17px;line-height:1.35}.extractor-workbench .export-config,.extractor-workbench .chapter-toolbar,.extractor-workbench .anchor-config{padding:0}.extractor-workbench .export-config{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.extractor-workbench .chapter-toolbar{grid-template-columns:minmax(0,1fr) auto;padding-top:0}.extractor-workbench .chapter-summary{color:#53615e;background:#f8faf9;border:1px solid #d6dddf;border-radius:6px;min-height:48px;padding:0 14px}.extractor-workbench .anchor-config{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding-top:20px;padding-bottom:0}.extractor-workbench .anchor-row{grid-template-columns:minmax(0,1fr)}.extractor-workbench .stacked{color:#40504c;gap:8px;font:600 14px/1.35 inherit}.extractor-workbench .chapter-picker select,.extractor-workbench .anchor-field textarea,.extractor-workbench .export-field select,.extractor-workbench .export-field input{color:#243532;width:100%;min-height:48px;box-shadow:none;background:#fff;border:1px solid #cbd4d5;border-radius:6px;padding:11px 14px;font:400 15px/1.5 inherit}.extractor-workbench .anchor-field textarea{resize:vertical;min-height:108px}.extractor-workbench .anchor-field textarea::placeholder{color:#6f7d7a;opacity:1}.extractor-workbench .chapter-picker select:focus,.extractor-workbench .anchor-field textarea:focus,.extractor-workbench .export-field select:focus,.extractor-workbench .export-field input:focus{border-color:#397666;outline:none;box-shadow:0 0 0 3px #2465551f}.extractor-actions{border-top:1px solid #e2e6e7;justify-content:flex-end;align-items:center;gap:12px;margin-top:28px;padding-top:22px;display:flex}.extractor-action-button{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-width:158px;min-height:48px;padding:0 20px;font:700 14px/1 inherit;transition:border-color .14s,color .14s,background-color .14s,box-shadow .14s;display:inline-flex}.extractor-action-button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.extractor-secondary-action{color:#4e5d59;background:#fff;border-color:#ccd4d5}.extractor-secondary-action:hover:not(:disabled){color:#2e4a43;background:#f7f9f8;border-color:#aebbb8}.extractor-primary-action{color:#fff;background:#1f5f50;box-shadow:0 6px 14px #1f5f502e}.extractor-primary-action:hover:not(:disabled){background:#184f43}.dialog-card,.toast-card{color:#34423f;background:#fff;border-color:#d9dee1;border-radius:8px;box-shadow:0 16px 44px #2236311f}.dialog-card{padding:24px}.dialog-card .button.primary{color:#fff;box-shadow:none;background:#1f5f50}.toast-card{border-radius:8px}@media (width<=767px){.app-shell{padding:0 16px calc(24px + env(safe-area-inset-bottom))}.site-topbar{grid-template-columns:44px minmax(0,1fr) 62px;gap:8px;width:100%;min-height:72px}.site-topbar-title>span{display:none}.site-topbar-title h1{font-size:23px;line-height:1.24}.site-topbar-mark{width:44px;font-size:11px;overflow:hidden}.site-topbar-button{gap:3px;min-width:44px;min-height:44px;padding:0 4px}.site-back-button span,.site-logout-label{display:none}.site-logout-label-short{white-space:nowrap;font-size:13px;display:inline}.tool-panel,.tool-panel.fddq-tool-panel{width:100%}.home-workspace,.extractor-workspace{margin-top:16px}.tool-grid{grid-template-columns:1fr;gap:12px}.tool-card{grid-template-columns:auto minmax(0,1fr) auto;gap:14px;min-height:92px;padding:16px}.tool-card-icon{width:44px;height:44px}.tool-card h2{font-size:17px}.tool-card-action{width:44px;padding:0}.tool-card-action span{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.login-screen{padding:16px}.login-panel{gap:22px;padding:26px 20px}.login-brand h1{font-size:26px}.extractor-workbench{padding:16px}.extractor-summary{margin-bottom:14px}.extractor-summary strong{font-size:24px}.extractor-upload-zone{min-height:210px;padding:18px}.extractor-upload-empty{gap:8px}.extractor-upload-empty strong{font-size:16px}.extractor-selected-file{grid-template-columns:auto minmax(0,1fr);gap:14px;padding:16px}.extractor-file-icon{width:46px;height:46px}.extractor-file-actions{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.extractor-file-action-button{width:100%}.extractor-progress-panel{margin-top:16px;padding:14px}.extractor-progress-copy{align-items:flex-start}.extractor-section{margin-top:22px;padding-top:20px}.extractor-workbench .export-config,.extractor-workbench .chapter-toolbar,.extractor-workbench .anchor-config{grid-template-columns:1fr}.extractor-workbench .chapter-summary{min-height:44px}.extractor-workbench .anchor-config{padding-top:18px}.extractor-workbench .chapter-picker select,.extractor-workbench .export-field select,.extractor-workbench .export-field input{min-height:48px}.extractor-actions{flex-direction:column;align-items:stretch;margin-top:22px;padding-top:18px}.extractor-action-button{width:100%;min-height:48px}}@media (prefers-reduced-motion:reduce){.tool-panel{animation:none}}
