:root{color-scheme:light;--bg: #f7f2e8;--bg-elevated: #fffdf8;--bg-soft: #f3ece0;--bg-warm: #efe6d6;--border: rgba(15, 118, 110, .14);--border-strong: rgba(15, 118, 110, .28);--text: #0f172a;--muted: #64748b;--brand: #0f766e;--brand-strong: #0d5f58;--brand-soft: #10b981;--brand-tint: rgba(16, 185, 129, .12);--good: #059669;--bad: #dc2626;--warn: #d97706;--radius: 16px;--shadow: 0 12px 40px rgba(15, 118, 110, .08), 0 2px 8px rgba(15, 23, 42, .04);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);font-family:DM Sans,system-ui,-apple-system,sans-serif;line-height:1.45;font-weight:400;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;min-height:100dvh;background:radial-gradient(900px 480px at 8% -8%,rgba(16,185,129,.12) 0%,transparent 55%),radial-gradient(700px 420px at 100% 0%,rgba(15,118,110,.08) 0%,transparent 50%),var(--bg)}button,input,label{font:inherit}button{cursor:pointer;border:none;background:none;color:inherit}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{min-height:100dvh;display:flex;flex-direction:column;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px 10px}.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(145deg,var(--brand-soft),var(--brand));box-shadow:0 0 0 1px #0f766e1f,0 8px 20px #0f766e38}.brand small{display:block;font-weight:500;color:var(--muted);font-size:12px;letter-spacing:.02em}.main{flex:1;width:min(960px,100%);margin:0 auto;padding:8px 16px 28px;display:flex;flex-direction:column;gap:16px}.tabs{display:flex;gap:6px;width:min(960px,100%);margin:0 auto;padding:0 16px 4px}.tab{flex:1;min-height:42px;border-radius:12px;border:1px solid var(--border);background:#ffffff8c;color:var(--muted);font-weight:600;font-size:.92rem;transition:background .12s,color .12s,border-color .12s,box-shadow .12s}.tab.active{background:#fff;color:var(--brand);border-color:#0f766e59;box-shadow:0 4px 14px #0f766e1a}.tab:hover:not(.active){background:#fff;color:var(--text)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;position:relative;overflow:hidden}.card-actions{display:flex;gap:10px;margin-top:18px;align-items:stretch;width:100%}.card-actions .btn-ghost{flex:0 0 auto;min-width:96px}.card-actions .btn-primary{flex:1 1 auto;width:auto}.pdf-preload{position:fixed;left:-10000px;top:0;width:2px;height:2px;overflow:hidden;opacity:0;pointer-events:none}.pill-ellipsis{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-image-wrap{position:relative;margin:0 auto}.ann-layer{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;z-index:2}.ann-layer-editable{pointer-events:none}.ann-layer-placing{pointer-events:auto;cursor:crosshair}.ann-layer-pen{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z'/%3E%3C/svg%3E") 2 22,crosshair;touch-action:none}.ann-layer-drag-create{cursor:crosshair;touch-action:none}.ann-create-preview{pointer-events:none!important;opacity:.75;z-index:6;outline:1px dashed rgba(15,118,110,.55)}.ann-glyph{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:clamp(14px,70%,48px);font-weight:800;line-height:1;color:inherit;pointer-events:none;-webkit-user-select:none;user-select:none}.ann-tick .ann-glyph{color:#059669}.ann-cross .ann-glyph{color:#dc2626}.ann-inline-input{position:absolute;top:2px;right:2px;bottom:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);margin:0;padding:4px 6px;border:none;outline:none;resize:none;background:transparent;color:#0f172a;font:inherit;font-size:12px;font-weight:600;line-height:1.3;overflow:auto;box-sizing:border-box;caret-color:#0f766e}.ann-inline-text{position:absolute;top:2px;right:2px;bottom:2px;left:2px;padding:4px 6px;font-size:12px;font-weight:600;line-height:1.3;color:#0f172a;overflow:hidden;white-space:pre-wrap;word-break:break-word;pointer-events:none}.ann-inline-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:11px;font-weight:600;color:#0f172a73;pointer-events:none}.ann-editing{outline:2px solid var(--brand)!important;outline-offset:1px;z-index:8;min-height:36px}.ann-label-on{top:2px;left:4px;background:transparent;border:none;box-shadow:none;padding:0;font-size:10px}.ann-layer-hit{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto}.ann-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:visible}.ann-pen-path{pointer-events:stroke;cursor:grab}.ann-pen-selected{stroke:#0f766e!important;stroke-width:1.6}.ann-pen-live{pointer-events:none;opacity:.95}.ann-pen-hit{background:transparent;border:1px dashed transparent;z-index:3}.ann-pen-hit.ann-selected{border-color:#0f766e73;background:#0f766e0a}.draw-dock{position:absolute;top:50%;right:10px;left:auto;bottom:auto;transform:translateY(-50%);z-index:30;width:64px;max-height:calc(100% - 20px);padding:8px 6px;border-radius:18px;background:#fffdf8f5;border:1px solid var(--border-strong);box-shadow:0 12px 32px #0f172a29,0 0 0 1px #fff9 inset;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:6px;overflow-y:auto;-webkit-overflow-scrolling:touch}.draw-dock-label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.62rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--brand-strong);line-height:1.15;text-align:center;padding-bottom:4px;border-bottom:1px solid var(--border);width:100%}.draw-dock-label span{writing-mode:horizontal-tb}.draw-dock-tools{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:5px;width:100%;overflow:visible;padding:0}.draw-tool{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-width:0;min-height:48px;padding:6px 2px 5px;border-radius:12px;border:1.5px solid var(--border);background:#fff;color:var(--text);font-size:.58rem;font-weight:700;line-height:1.1;cursor:pointer;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s}.draw-tool:hover{border-color:#0f766e80;background:var(--bg-soft)}.draw-tool.active{border-color:var(--brand);background:linear-gradient(180deg,#10b98129,#0f766e1a);color:var(--brand-strong);box-shadow:0 0 0 3px #0f766e24;transform:translate(-1px)}.draw-tool.active svg{color:#dc2626}.draw-tool:nth-child(n+2).active svg{color:var(--brand-strong)}.draw-tool:first-child.active svg{color:#dc2626}.draw-tool span{max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.draw-dock-hint{display:none}.draw-hint-inline{margin:0;text-align:center;font-size:.8rem;color:var(--muted);font-weight:500;line-height:1.3}@media(max-width:480px){.draw-dock{right:6px;width:54px;padding:6px 4px;border-radius:14px}.draw-tool{min-height:42px;padding:5px 1px 4px;font-size:.52rem}.draw-tool span{max-width:44px}.draw-dock-label{font-size:.55rem}}.ann{position:absolute;box-sizing:border-box;overflow:visible}.ann-editable{pointer-events:auto;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.ann-editable:hover{outline:2px solid rgba(15,118,110,.45);outline-offset:1px;z-index:4}.ann-selected{outline:2px solid var(--brand);outline-offset:1px;z-index:5}.ann-dragging{cursor:grabbing;z-index:5;outline:2px solid var(--brand);outline-offset:1px;opacity:.95}.ann-actions{position:absolute;top:-28px;right:0;display:flex;gap:4px;z-index:8}.ann-action-btn{width:26px;height:26px;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:12px;font-weight:700;line-height:1;cursor:pointer;box-shadow:0 2px 8px #0f172a1f;display:grid;place-items:center;padding:0}.ann-action-btn:hover{border-color:var(--brand);color:var(--brand-strong)}.ann-action-danger:hover{border-color:#dc2626;color:#dc2626}.ann-edit-bar{position:sticky;bottom:0;z-index:20;display:flex;gap:8px;align-items:center;padding:10px 12px;margin-top:8px;background:#fffdf8fa;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #0f172a1f}.ann-edit-bar input{flex:1;min-width:0;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:.95rem;color:var(--text);background:#fff}.ann-edit-bar input:focus{outline:2px solid rgba(15,118,110,.35);border-color:var(--brand)}.ann-toolbar{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;width:100%;margin-bottom:4px}.ann-tool{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:999px;padding:7px 12px;font-size:.8rem;font-weight:600;cursor:pointer;line-height:1.2;white-space:nowrap}.ann-tool:hover{border-color:#0f766e73;background:var(--bg-soft)}.ann-tool.active{border-color:var(--brand);background:#0f766e1a;color:var(--brand-strong)}.ann-resize{position:absolute;right:-5px;bottom:-5px;width:14px;height:14px;border-radius:3px;background:var(--brand);border:2px solid #fff;box-shadow:0 1px 4px #0f172a40;cursor:nwse-resize;touch-action:none;z-index:6}.ann-resize:hover{background:var(--brand-strong);transform:scale(1.08)}.ann-highlight{background:#facc156b;border:2px solid rgba(202,138,4,.85);border-radius:3px;box-shadow:0 0 0 1px #ffffff59}.ann-tick,.ann-cross,.ann-note,.ann-circle{border-radius:4px}.ann-tick{background:#10b98133;border:2px solid rgba(5,150,105,.65)}.ann-cross{background:#ef444429;border:2px solid rgba(220,38,38,.55)}.ann-note{background:#fffbebeb;border:2px solid rgba(2,132,199,.65);min-height:28px;box-shadow:0 2px 10px #0f172a1f}.ann-tick,.ann-cross{display:block;background:#ffffff1f}.ann-circle{border:2px solid rgba(239,68,68,.75);border-radius:50%;background:transparent}.ann-label{position:absolute;left:0;top:calc(100% + 2px);display:inline-block;max-width:min(220px,50vw);font-size:11px;font-weight:700;line-height:1.25;color:#0f172a;background:#fffdf8f2;border:1px solid rgba(15,118,110,.25);border-radius:6px;padding:2px 6px;white-space:normal;box-shadow:0 2px 8px #0f172a1f;z-index:3}.agent-log{width:100%;max-height:88px;overflow:auto;font-size:.78rem;color:var(--muted);background:var(--bg-soft);border-radius:10px;padding:8px 10px;text-align:left;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.result-block{text-align:left;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.result-block h3{margin:0 0 8px;font-size:1rem;color:var(--text)}.result-seg{margin-bottom:10px;padding:10px 12px;border-radius:10px;background:var(--bg-soft);border:1px solid var(--border)}.result-seg strong{display:block;font-size:.88rem;margin-bottom:4px}.result-seg strong span{font-weight:500;color:var(--muted)}.result-seg p{margin:0;font-size:.9rem;color:#334155}.scheme-list{margin:0;padding:0;list-style:none;display:grid;gap:8px}.scheme-list li{padding:10px 12px;border-radius:10px;background:#0f766e0f;border:1px solid var(--border)}.scheme-list li strong{display:block;margin-bottom:2px;color:var(--brand-strong)}.scheme-list li span{font-size:.9rem;color:#475569}.card h1{margin:0 0 8px;font-size:clamp(1.45rem,4vw,1.85rem);letter-spacing:-.03em;color:var(--text)}.card p.lead{margin:0 0 20px;color:var(--muted);font-size:.98rem}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.field label{font-size:.88rem;font-weight:600;color:#334155}.field input[type=text]{width:100%;border-radius:12px;border:1px solid var(--border-strong);background:#fff;color:var(--text);padding:14px 16px;font-size:16px;outline:none;transition:border-color .15s,box-shadow .15s}.field input[type=text]::placeholder{color:#94a3b8}.field input[type=text]:focus{border-color:var(--brand);box-shadow:0 0 0 3px #10b98133}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 18px;border-radius:14px;font-weight:600;transition:transform .12s ease,background .12s ease,opacity .12s,filter .12s;touch-action:manipulation;-webkit-user-select:none;user-select:none}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:linear-gradient(180deg,#14967f,var(--brand));color:#fff;width:100%;box-shadow:0 10px 28px #0f766e47}.btn-primary:hover:not(:disabled){filter:brightness(1.04)}.btn-ghost{background:#ffffffb3;border:1px solid var(--border-strong);color:var(--text)}.btn-ghost:hover:not(:disabled){background:#fff}.btn-danger{background:linear-gradient(180deg,#ef4444,#dc2626);color:#fff;box-shadow:0 10px 28px #dc262638}.btn-icon{width:48px;height:48px;min-height:48px;padding:0;border-radius:14px;background:#fff;border:1px solid var(--border-strong);color:var(--text)}.btn-icon:hover:not(:disabled){background:var(--bg-soft);border-color:var(--brand);color:var(--brand)}.error-banner{border-radius:12px;border:1px solid rgba(220,38,38,.25);background:#fef2f2;color:#991b1b;padding:12px 14px;font-size:.92rem;margin-bottom:14px}.success-banner{border-radius:12px;border:1px solid rgba(5,150,105,.25);background:#ecfdf5;color:#065f46;padding:12px 14px;font-size:.92rem;margin-bottom:14px}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:180px;width:100%;box-sizing:border-box;border:1.5px dashed rgba(15,118,110,.28);border-radius:16px;background:var(--bg-soft);padding:32px 20px;text-align:center;transition:border-color .15s,background .15s;cursor:pointer}.dropzone:hover,.dropzone.dragover{border-color:var(--brand);background:var(--brand-tint)}.dropzone input{display:none}.dropzone-icon{width:56px;height:56px;margin:0 0 8px;border-radius:16px;display:grid;place-items:center;background:#0f766e1a;color:var(--brand);flex-shrink:0}.dropzone strong{display:block;margin:0;color:var(--text)}.dropzone span{display:block;margin:0;color:var(--muted);font-size:.9rem}.file-chip{display:flex;align-items:center;gap:12px;margin-top:14px;padding:12px 14px;border-radius:12px;background:#fff;border:1px solid var(--border);text-align:left}.file-chip .meta{flex:1;min-width:0}.file-chip .meta strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.file-chip .meta span{color:var(--muted);font-size:.85rem}.workspace{display:flex;flex-direction:column;gap:12px;min-height:calc(100dvh - 90px)}.workspace-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#fff;border:1px solid var(--border);color:var(--muted);font-size:.82rem;font-weight:600}.pill.live{color:#991b1b;background:#fef2f2;border-color:#dc262647}.pill.live .dot{width:8px;height:8px;border-radius:50%;background:#ef4444;box-shadow:0 0 #ef44448c;animation:pulse-dot 1.4s infinite}@keyframes pulse-dot{0%{box-shadow:0 0 #ef444480}70%{box-shadow:0 0 0 8px #ef444400}to{box-shadow:0 0 #ef444400}}.pdf-stage{flex:1;min-height:280px;border-radius:16px;border:1px solid var(--border);background:var(--bg-warm);overflow:hidden;position:relative;display:flex;flex-direction:column;touch-action:pan-y;padding-bottom:0}.pdf-stage .pdf-scroll{padding-right:78px;padding-bottom:12px}@media(max-width:480px){.pdf-stage .pdf-scroll{padding-right:64px}}.pdf-scroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;display:flex;justify-content:center;align-items:flex-start;padding:12px;overscroll-behavior:contain}.pdf-scroll canvas{max-width:100%;height:auto!important;border-radius:4px;box-shadow:0 8px 24px #0f172a1f;background:#fff}.pdf-loading,.pdf-empty{flex:1;display:grid;place-items:center;color:var(--muted);padding:32px;text-align:center}.controls{position:sticky;bottom:0;z-index:5;display:flex;flex-direction:column;gap:10px;padding:12px;padding-bottom:calc(12px + var(--safe-bottom));background:#fffdf8eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:18px;box-shadow:0 -4px 24px #0f172a0f}.page-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.page-indicator{flex:1;text-align:center;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.page-indicator small{display:block;font-weight:500;color:var(--muted);font-size:.78rem}.record-row{display:flex;align-items:center;gap:10px}.record-main{flex:1;min-height:56px;border-radius:16px;font-size:1.02rem}.timer{min-width:72px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;font-size:1.05rem;color:var(--text)}.level-bar{height:6px;border-radius:999px;background:#0f766e1a;overflow:hidden}.level-bar>span{display:block;height:100%;width:0%;border-radius:inherit;background:linear-gradient(90deg,var(--brand-soft),var(--brand));transition:width 80ms linear}.hint{color:var(--muted);font-size:.85rem;text-align:center;margin:0}.steps{display:grid;gap:10px;margin:0 0 18px;padding:0;list-style:none}.steps li{display:flex;gap:12px;align-items:flex-start;color:var(--muted);font-size:.92rem}.steps .n{flex-shrink:0;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:#0f766e1a;color:var(--brand);font-weight:700;font-size:.8rem}.done-card{text-align:center;padding:28px 22px}.done-icon{width:72px;height:72px;margin:0 auto 14px;border-radius:22px;display:grid;place-items:center;background:#10b98124;color:var(--good)}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0 8px;text-align:left}.stat{border-radius:12px;border:1px solid var(--border);background:var(--bg-soft);padding:12px}.stat span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:2px}.stat strong{font-size:1.05rem;font-variant-numeric:tabular-nums;color:var(--text)}.spinner{width:22px;height:22px;border-radius:50%;border:2px solid rgba(15,118,110,.2);border-top-color:var(--brand);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:768px){.main{padding-top:18px}.workspace{min-height:calc(100dvh - 120px)}.pdf-stage{min-height:520px}.controls{flex-direction:row;align-items:center;flex-wrap:wrap}.page-row{flex:1;min-width:240px}.record-row{flex:1.2;min-width:280px}}
