:root{--ep-green: #30C96F;--ep-green-dark: #1A8F4E;--ep-green-light: #56DA8B;--ep-ink: #262626;--ep-ink-deep: #1A1A1A;--ep-forest: #21503C;--ep-red: #E53935;--ep-red-light: #FFCDD2;--ep-red-text: #C62828;--ep-blue: #1976D2;--ep-blue-light: #E3F0FB;--n-0: #FFFFFF;--n-50: #F5F7F6;--n-100: #ECEFEE;--n-200: #DCE2E0;--n-300: #C2CBC8;--n-400: #97A39F;--n-500: #6B7873;--n-700: #3A4540;--n-900: #18211D;--bg: var(--n-50);--surface: var(--n-0);--surface-sunk: var(--n-100);--chrome: var(--ep-ink);--chrome-deep: var(--ep-ink-deep);--fg1: var(--n-900);--fg2: var(--n-700);--fg3: var(--n-500);--fg-muted: var(--n-400);--fg-on-chrome: #FFFFFF;--fg-on-green: #262626;--border: var(--n-200);--border-strong: var(--n-300);--accent: var(--ep-green-dark);--accent-hover: #14743F;--font-sans: "Outfit", "Jost", "Segoe UI", -apple-system, BlinkMacSystemFont, system-ui, "Helvetica Neue", Arial, sans-serif;--font-mono: "Cascadia Code", "SF Mono", Menlo, Consolas, "Courier New", monospace;--font-display: "Outfit", "Jost", system-ui, sans-serif;--display: 700 40px/1.15 var(--font-sans);--h1: 700 30px/1.2 var(--font-sans);--h2: 700 24px/1.25 var(--font-sans);--h3: 600 19px/1.3 var(--font-sans);--title: 600 16px/1.4 var(--font-sans);--body: 400 16px/1.5 var(--font-sans);--body-sm: 400 14px/1.5 var(--font-sans);--label: 600 14px/1.2 var(--font-sans);--overline: 600 12px/1.2 var(--font-sans);--code: 400 14px/1.5 var(--font-mono);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--r-sm: 6px;--r-md: 12px;--r-lg: 18px;--r-pill: 999px;--sh-1: 0 1px 2px rgba(15, 27, 22, .06), 0 1px 3px rgba(15, 27, 22, .08);--sh-2: 0 2px 6px rgba(15, 27, 22, .08), 0 4px 12px rgba(15, 27, 22, .1);--sh-3: 0 8px 24px rgba(15, 27, 22, .14), 0 2px 6px rgba(15, 27, 22, .08);--sh-chat: 0 12px 32px rgba(15, 27, 22, .18);--ease: cubic-bezier(.2, .8, .2, 1);--dur-fast: .12s;--dur: .18s;--dur-slow: .28s;--app-bg: var(--n-100);--window-bg: var(--n-0);--transcript-bg: var(--n-50);--header-bg: #E7ECEA;--header-fg: var(--n-900);--header-sub: var(--n-500);--header-border: var(--border);--avatar-bg: var(--n-100);--avatar-border: var(--border);--bubble-agent-bg: var(--n-0);--bubble-agent-border: var(--border);--bubble-agent-fg: var(--n-900);--bubble-user-bg: var(--ep-ink);--bubble-user-fg: #FFFFFF;--card-bg: var(--n-0);--card-border: var(--border);--card-band-bg: var(--ep-ink);--card-band-fg: #FFFFFF;--composer-bg: var(--n-0);--composer-border: var(--border);--chip-out-fg: #14743F;--chip-out-border: var(--ep-green-dark);--chip-out-bg: var(--n-0);--chip-ghost-fg: var(--n-700);--chip-ghost-border: var(--border);--icon-hover-bg: var(--n-100)}[data-theme=dark]{--fg1: #ECECEC;--fg2: #BFBFBF;--fg3: #909090;--fg-muted: #606060;--border: #3A3A3A;--border-strong: #4A4A4A;--accent: var(--ep-green-light);--accent-hover: #7BE6A6;--app-bg: #1C1C1C;--window-bg: #262626;--transcript-bg: #202020;--header-bg: #262626;--header-fg: #FFFFFF;--header-sub: #A8A8A8;--header-border: #343434;--avatar-bg: #343434;--avatar-border: #444444;--bubble-agent-bg: #2F2F2F;--bubble-agent-border: #3A3A3A;--bubble-agent-fg: #ECECEC;--bubble-user-bg: var(--ep-green);--bubble-user-fg: #08110C;--card-bg: #2F2F2F;--card-border: #3A3A3A;--card-band-bg: #1C1C1C;--card-band-fg: #FFFFFF;--composer-bg: #2F2F2F;--composer-border: #444444;--chip-out-fg: var(--ep-green-light);--chip-out-border: var(--ep-green-dark);--chip-out-bg: transparent;--chip-ghost-fg: #C2C2C2;--chip-ghost-border: #444444;--icon-hover-bg: #343434}body{font:var(--body);color:var(--fg1);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1{font:var(--h1);color:var(--fg1);margin:0}h2{font:var(--h2);color:var(--fg1);margin:0}h3{font:var(--h3);color:var(--fg1);margin:0}p{font:var(--body);color:var(--fg2);margin:0;text-wrap:pretty}code,pre{font:var(--code)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg1);font:var(--body)}#root,.app{min-height:100vh}.app{display:flex;flex-direction:column;max-width:720px;margin:0 auto}[data-theme=dark]{--bg: #101714;--surface: #18211D;--surface-sunk: #131B17;--fg1: #ECEFEE;--fg2: #C2CBC8;--fg3: #97A39F;--border: #2A3530;--border-strong: #3A4540;--header-bg: #1A1A1A;--header-fg: #ECEFEE;--header-sub: #97A39F}.hdr{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);background:var(--header-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.hdr-brand{display:flex;gap:var(--sp-3);align-items:center}.hdr-logo-img{width:40px;height:40px;object-fit:contain}.hdr-title{font:var(--title);color:var(--header-fg)}.hdr-sub{font:var(--overline);color:var(--header-sub);letter-spacing:.04em}.hdr-actions{display:flex;gap:var(--sp-2);align-items:center}.screen{padding:var(--sp-4);padding-bottom:var(--sp-12)}.screen.center{display:flex;align-items:center;justify-content:center;min-height:70vh}h1{font:var(--h2);margin:var(--sp-3) 0}h2{font:var(--h3);margin:var(--sp-2) 0}.grp{font:var(--label);color:var(--fg3);text-transform:none;margin:var(--sp-4) 0 var(--sp-2)}.meta{font:var(--body-sm);color:var(--fg3)}.row{display:flex;align-items:center}.row.gap{gap:var(--sp-2)}.row.spread{justify-content:space-between}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:var(--sh-1);margin-bottom:var(--sp-3)}.card.form{display:flex;flex-direction:column;gap:var(--sp-3)}.login-card{width:100%;max-width:380px;text-align:center;display:flex;flex-direction:column;gap:var(--sp-3)}.login-logo-img{width:110px;height:110px;object-fit:contain;margin:0 auto;display:block}.proj{display:flex;width:100%;justify-content:space-between;align-items:center;text-align:left;cursor:pointer;font:var(--body);color:var(--fg1)}.proj-main{display:flex;flex-direction:column;gap:2px}.btn{font:var(--label);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:10px 16px;background:var(--surface);color:var(--fg1);cursor:pointer;transition:all var(--dur) var(--ease)}.btn.primary{background:var(--ep-green);border-color:var(--ep-green);color:var(--fg-on-green)}.btn.primary:hover{background:var(--ep-green-light)}.btn.forest{background:var(--ep-forest);border-color:var(--ep-forest);color:#fff}.btn.ghost{background:transparent}.btn.wide{width:100%}.btn.sm{padding:6px 12px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ok.on{background:var(--ep-green-dark);border-color:var(--ep-green-dark);color:#fff}.btn.nok.on{background:var(--ep-red);border-color:var(--ep-red);color:#fff}.chip{font:var(--label);border:1px solid var(--border);background:var(--surface);color:var(--fg2);border-radius:var(--r-pill);padding:6px 12px;cursor:pointer}.chip.on{background:var(--ep-green);border-color:var(--ep-green);color:var(--fg-on-green)}.input{font:var(--body);color:var(--fg1);background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 12px;width:100%}.input:focus{outline:2px solid var(--ep-green);border-color:var(--ep-green)}.lbl{font:var(--label);color:var(--fg2)}.linklike{background:none;border:none;color:var(--accent);font:var(--body-sm);cursor:pointer;padding:var(--sp-2) 0;text-align:left}.pill{font:var(--overline);border-radius:var(--r-pill);padding:4px 10px}.pill.open{background:var(--n-100);color:var(--n-700)}.pill.in_progress{background:#fff4cc;color:#7a5d00}.pill.finished{background:#d7f5e3;color:var(--ep-green-dark)}.badge{font:var(--overline);border-radius:var(--r-pill);padding:4px 8px}.badge.warn{background:var(--ep-red-light);color:var(--ep-red-text)}.badge.info{background:var(--ep-blue-light);color:var(--ep-blue)}.offline-strip{background:var(--ep-red-light);color:var(--ep-red-text);font:var(--body-sm);padding:var(--sp-2) var(--sp-4);text-align:center}.stepper-groups{display:flex;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-3) 0}.stepper-group{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3)}.stepper-phase{display:block;font:var(--label);color:var(--fg3);margin-bottom:var(--sp-1)}.stepper{display:flex;gap:var(--sp-1);flex-wrap:wrap}.step{min-width:40px;width:auto;padding:0 8px;font:var(--code);height:34px;border-radius:var(--r-pill);border:1px solid var(--border-strong);background:var(--surface);color:var(--fg2);font:var(--label);cursor:pointer}.step.on{border-color:var(--ep-green);outline:2px solid var(--ep-green)}.step.done{background:var(--ep-green);border-color:var(--ep-green);color:var(--fg-on-green)}.cp-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.cp-card.OK{border-left-color:var(--ep-green-dark)}.cp-card.NOK{border-left-color:var(--ep-red)}.cp-head{display:flex;gap:var(--sp-2);align-items:center}.cp-ask{margin-left:auto;flex:0 0 auto;width:30px;height:30px;border-radius:var(--r-pill);border:1px solid var(--border-strong);background:var(--surface);padding:2px;cursor:pointer}.cp-ask img{width:100%;height:100%;object-fit:contain;display:block}.cp-ask:hover{border-color:var(--ep-green);outline:1px solid var(--ep-green)}.cp-code{font:var(--code);color:var(--fg3)}.cp-label{font:var(--title)}.cp-target{font:var(--body-sm);color:var(--ep-blue);display:block;margin-bottom:var(--sp-1)}.nav-row{margin-top:var(--sp-4);justify-content:flex-end}.photo-thumb{max-width:160px;border-radius:var(--r-sm);border:1px solid var(--border);display:block}.photo-block{display:flex;gap:var(--sp-3);align-items:center}.sig-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);margin-bottom:var(--sp-3)}.sig-label{font:var(--title);margin-bottom:var(--sp-2)}.sig-done{color:var(--ep-green-dark);font:var(--body-sm)}.sig-canvas{width:100%;height:160px;background:var(--surface-sunk);border:1px dashed var(--border-strong);border-radius:var(--r-sm);touch-action:none;margin-bottom:var(--sp-2)}.nok-card{border-left:4px solid var(--ep-red);display:flex;flex-direction:column;gap:var(--sp-2)}.diag{font:var(--body-sm)}.big-check{width:72px;height:72px;border-radius:var(--r-pill);background:var(--ep-green);color:var(--fg-on-green);font:700 44px/72px var(--font-display);margin:0 auto}.chat-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1b1666;z-index:39}.chat-sheet{position:fixed;inset:auto 0 0 0;height:min(78dvh,720px);max-width:720px;margin:0 auto;background:var(--surface);border:1px solid var(--border-strong);border-bottom:none;border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);box-shadow:var(--sh-chat);z-index:40;display:flex;flex-direction:column}.chat-head-brand{display:flex;align-items:center;gap:var(--sp-2)}.chat-logo{width:26px;height:26px;object-fit:contain}.chat-greeting{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:var(--sp-2);font:var(--body-sm);background:var(--bg)}.chat-greeting p{margin:0}.chat-greeting .btn{align-self:flex-start}.chat-status{font:var(--body-sm);color:var(--fg3)}.chat-head{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);font:var(--title)}.chat-body{flex:1;min-height:0;overflow:hidden}.chat-body>*{height:100%}.chat-fallback{padding:var(--sp-6);text-align:center}.extract-bar{position:fixed;bottom:var(--sp-4);left:50%;transform:translate(-50%);width:min(680px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--ep-green);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:var(--sp-3) var(--sp-4);z-index:50;display:flex;flex-direction:column;gap:var(--sp-2)}.extract-title{font:var(--label);color:var(--ep-green-dark)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1b1680;display:flex;align-items:center;justify-content:center;z-index:60;padding:var(--sp-4)}.modal-card{max-width:560px;max-height:80vh;overflow-y:auto}.privacy-text{white-space:pre-wrap;font:var(--body-sm);color:var(--fg2);text-align:left}.chat-chip{background:var(--ep-green);border-color:var(--ep-green)}
