@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400..700;1,9..40,400..700&display=swap";:root{--violet-50: #F5EAF8;--violet-100: #E8D1EF;--violet-200: #CDA0DB;--violet-400: #9C4BB5;--violet-700: #702580;--violet-800: #55194F;--violet-900: #3A0F3A;--ink-900: #000000;--ink-800: #332D35;--ink-600: #5C555E;--ink-400: #8D878F;--ink-200: #C9C6CA;--paper-0: #FFFFFF;--paper-50: #F8F8F8;--paper-100: #F1F0F1;--paper-200: #E6E4E7;--success: #2E8B57;--warning: #C28413;--danger: #B33A3A;--fg-1: var(--ink-900);--fg-2: var(--ink-800);--fg-3: var(--ink-600);--fg-4: var(--ink-400);--fg-on-dark: var(--paper-50);--fg-on-violet: #FFFFFF;--bg-1: var(--paper-50);--bg-2: var(--paper-0);--bg-3: var(--paper-100);--bg-brand: var(--violet-700);--bg-brand-deep: var(--violet-900);--bg-ink: var(--ink-800);--border-soft: rgba(51, 45, 53, .08);--border-strong: rgba(51, 45, 53, .18);--border-on-dark: rgba(255, 255, 255, .12);--accent: var(--violet-700);--font-sans: "DM Sans", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fs-12: .75rem;--fs-13: .8125rem;--fs-14: .875rem;--fs-15: .9375rem;--fs-16: 1rem;--fs-18: 1.125rem;--fs-20: 1.25rem;--fs-24: 1.5rem;--fs-28: 1.75rem;--fs-32: 2rem;--fs-40: 2.5rem;--fs-48: 3rem;--fs-56: 3.5rem;--fs-64: 4rem;--fs-80: 5rem;--lh-tight: 1.05;--lh-snug: 1.15;--lh-normal: 1.5;--lh-relaxed: 1.65;--ls-tight: -.03em;--ls-snug: -.015em;--ls-normal: 0;--ls-wide: .08em;--ls-eyebrow: .12em;--s-0: 0;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-6: 24px;--s-8: 32px;--s-12: 48px;--s-16: 64px;--s-24: 96px;--s-32: 128px;--r-sm: 6px;--r-md: 12px;--r-lg: 20px;--r-xl: 32px;--r-full: 9999px;--shadow-1: 0 1px 2px rgba(51, 45, 53, .04), 0 4px 12px rgba(112, 37, 128, .06);--shadow-2: 0 4px 8px rgba(51, 45, 53, .06), 0 16px 32px rgba(112, 37, 128, .1);--shadow-3: 0 8px 16px rgba(51, 45, 53, .08), 0 32px 64px rgba(112, 37, 128, .14);--shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .04);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--dur-fast: .15s;--dur-base: .22s;--dur-slow: .32s;--container: 1280px;--container-wide: 1440px;--nav-h: 72px}body{font-family:var(--font-sans);font-size:var(--fs-16);line-height:var(--lh-normal);color:var(--fg-2);background:var(--bg-1);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:var(--fw-semibold);color:var(--fg-1);letter-spacing:var(--ls-snug);line-height:var(--lh-snug);text-wrap:pretty;margin:0}h1,.h1{font-size:clamp(var(--fs-40),5vw,var(--fs-64));font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);line-height:var(--lh-tight)}h2,.h2{font-size:clamp(var(--fs-32),4vw,var(--fs-48));font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);line-height:var(--lh-tight)}h3,.h3{font-size:var(--fs-24);font-weight:var(--fw-semibold)}h4,.h4{font-size:var(--fs-20);font-weight:var(--fw-medium)}h5,.h5{font-size:var(--fs-16);font-weight:var(--fw-semibold)}p{margin:0;line-height:var(--lh-relaxed);color:var(--fg-2);text-wrap:pretty}.eyebrow{font-size:var(--fs-12);font-weight:var(--fw-medium);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--fg-3)}.lead{font-size:var(--fs-20);line-height:var(--lh-relaxed);color:var(--fg-2)}code,kbd,samp{font-family:var(--font-mono);font-size:.9em;background:var(--bg-3);padding:2px 6px;border-radius:var(--r-sm);color:var(--fg-1)}a{color:var(--accent);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}a:hover{color:var(--violet-900)}hr{border:0;border-top:1px solid var(--border-soft);margin:var(--s-8) 0}.text-center{text-align:center}.mono{font-family:var(--font-mono)}.italic{font-style:italic}.surface-paper{background:var(--bg-1);color:var(--fg-2)}.surface-white{background:var(--bg-2);color:var(--fg-2)}.surface-ink{background:var(--bg-ink);color:var(--fg-on-dark)}.surface-violet{background:var(--bg-brand);color:var(--fg-on-violet)}.surface-violet-deep{background:var(--bg-brand-deep);color:var(--fg-on-violet)}*{box-sizing:border-box}body{margin:0}.top{background:var(--bg-brand);color:var(--fg-on-violet);padding:var(--s-3) var(--s-6);display:flex;gap:var(--s-4);align-items:center;min-height:56px;box-shadow:var(--shadow-1)}.top-brand{display:flex;align-items:center;gap:var(--s-3)}.top-brand img{height:24px;width:auto;display:block}.top-brand .product{font-family:var(--font-sans);font-size:var(--fs-18);font-weight:var(--fw-bold);letter-spacing:var(--ls-snug);color:var(--fg-on-violet)}.top-brand .product i{font-style:italic;opacity:.92}.top-brand .divider{width:1px;height:20px;background:#ffffff40;margin:0 var(--s-1)}.top h1{margin:0;font-size:var(--fs-16);font-weight:var(--fw-semibold);color:var(--fg-on-violet)}.top button{background:var(--paper-0);color:var(--violet-700);border:0;padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-13);font-weight:var(--fw-semibold);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.top button:hover:not(:disabled){background:var(--violet-50);transform:translateY(-1px)}.top button:disabled{background:#ffffff2e;color:#fff9;cursor:not-allowed}.top .spacer{flex:1}.top .status{font-size:var(--fs-13);opacity:.85;color:var(--fg-on-violet)}.top input[type=range]{accent-color:var(--paper-0)}.top-user{display:flex;align-items:center;gap:var(--s-2);margin-left:var(--s-3);border-left:1px solid rgba(255,255,255,.25);padding-left:var(--s-3)}.top-username{font-size:var(--fs-13);opacity:.9}.main{display:grid;grid-template-columns:1fr 380px;height:calc(100vh - 56px)}.page-view{background:#e8e8ea;overflow:auto;padding:var(--s-6);display:flex;align-items:flex-start;justify-content:center}.canvas-wrap{position:relative;box-shadow:var(--shadow-3)}.canvas-wrap img{display:block;max-width:none}.bbox{position:absolute;border:2px solid;cursor:pointer;opacity:.7}.bbox:hover,.bbox.selected{opacity:1;border-width:3px}.bbox.from-pdftotext{border-style:dashed}.bbox.artifact{background-image:linear-gradient(to top right,transparent calc(50% - 1px),currentColor calc(50% - 1px),currentColor calc(50% + 1px),transparent calc(50% + 1px)),linear-gradient(to bottom right,transparent calc(50% - 1px),currentColor calc(50% - 1px),currentColor calc(50% + 1px),transparent calc(50% + 1px));background-size:100% 100%;background-repeat:no-repeat}.bbox .lbl{position:absolute;top:-18px;left:0;font-size:11px;padding:1px 4px;color:#fff;border-radius:2px;font-weight:600}.draw-rect{position:absolute;border:2px dashed #2563eb;background:#2563eb1f;pointer-events:none;z-index:50}.side{background:var(--paper-0);border-left:1px solid var(--border-soft);display:flex;flex-direction:column;overflow:hidden}.editor{padding:var(--s-3) var(--s-4);background:var(--paper-50);border-bottom:2px solid var(--border-soft);flex-shrink:0}.editor.empty{color:var(--fg-4);font-size:var(--fs-12);font-style:italic;text-align:center;padding:var(--s-4)}.editor label{display:block;font-size:var(--fs-12);font-weight:var(--fw-semibold);color:var(--fg-3);margin-bottom:3px;letter-spacing:var(--ls-eyebrow);text-transform:uppercase}.editor select,.editor textarea{width:100%;font-size:var(--fs-13);padding:5px 6px;border:1px solid var(--border-strong);border-radius:var(--r-sm);margin-bottom:var(--s-2);font-family:inherit;background:var(--paper-0);color:var(--fg-1)}.editor textarea{resize:vertical;min-height:60px}.editor .selected-info{font-size:var(--fs-12);color:var(--fg-3);margin-bottom:6px;font-family:var(--font-mono)}.editor button{width:100%;padding:var(--s-2);border:0;border-radius:var(--r-sm);cursor:pointer;font-weight:var(--fw-semibold);background:var(--violet-700);color:var(--fg-on-violet);font-size:var(--fs-13);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out)}.editor button:hover{background:var(--violet-800)}.editor button.saved{background:var(--success)}.nav{padding:var(--s-2) var(--s-4);border-bottom:1px solid var(--border-soft);display:flex;gap:var(--s-2);align-items:center;flex-shrink:0;background:var(--paper-0)}.nav button{background:var(--paper-100);border:0;padding:var(--s-1) var(--s-3);border-radius:var(--r-sm);cursor:pointer;color:var(--fg-2);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out)}.nav button:hover{background:var(--paper-200)}.nav .pg{font-weight:var(--fw-semibold);color:var(--fg-1)}.tree-toggle{display:flex;gap:6px;padding:6px var(--s-4);border-bottom:1px solid var(--border-soft);align-items:center}.tree-toggle button{font-size:11px;padding:2px 8px;border:1px solid var(--border-soft);background:var(--paper-0);border-radius:var(--r-sm);cursor:pointer;color:var(--fg-3)}.tree-toggle button:hover{background:var(--paper-100)}.el-list{flex:1;overflow-y:auto}.tnode{display:flex;align-items:flex-start;gap:4px;padding:3px 4px;border-bottom:1px solid var(--border-soft);cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}.tnode:hover{background:var(--paper-50)}.tnode.selected{background:var(--violet-50);box-shadow:inset 3px 0 0 var(--violet-700)}.tnode .twist{width:14px;flex-shrink:0;text-align:center;color:var(--fg-4);font-size:10px;-webkit-user-select:none;user-select:none;line-height:1.5}.tnode .twist.leaf{visibility:hidden}.tnode .tag{font-size:10px;padding:1px 5px;border-radius:var(--r-sm);color:#fff;font-weight:var(--fw-semibold);flex-shrink:0;text-align:center;line-height:1.5}.tnode .tbody{flex:1;min-width:0;font-size:var(--fs-12);line-height:1.35;color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tnode .tcount{font-size:10px;color:var(--fg-4);flex-shrink:0}.tnode .tsrc{font-size:9px;color:#0891b2;flex-shrink:0}.report{padding:var(--s-3) var(--s-4);background:#ecfdf5;border-top:2px solid var(--success);font-size:var(--fs-12);flex-shrink:0}.stale-banner{background:#fef3c7;color:#92400e;padding:var(--s-2) var(--s-4);font-size:var(--fs-13);border-top:1px solid var(--warning)}.approve-btn{background:var(--paper-0);color:var(--violet-700);border:0;padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-13);font-weight:var(--fw-semibold);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out)}.approve-btn:hover:not(:disabled){background:var(--violet-50)}.approve-btn:disabled{background:#ffffff2e;color:#fff9;cursor:not-allowed}.approve-btn.validate{background:var(--violet-800);color:var(--fg-on-violet)}.approve-btn.validate:hover:not(:disabled){background:var(--violet-900)}.bbox-tools{margin-top:8px;display:flex;flex-direction:column;gap:4px}.btn-draw{font-size:12px;padding:5px 10px;border:1px solid #2563eb;background:var(--paper-0);color:#2563eb;border-radius:var(--r-sm);cursor:pointer}.btn-draw:hover{background:#eff6ff}.btn-draw.active{background:#2563eb;color:#fff}.draw-hint{font-size:11px;color:var(--fg-4)}.draw-hint.warn{color:#b45309}.splash{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-brand);background-image:linear-gradient(180deg,#3a0f3a40,#55194f59),url(/assets/brand-pattern-draft.jpg);background-size:cover;background-position:center;color:var(--fg-on-violet)}.splash-header{padding:var(--s-6) var(--s-8);display:flex;align-items:center;justify-content:space-between}.splash-logo img{height:36px;width:auto;display:block}.splash-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--s-8) var(--s-6);gap:var(--s-12)}.splash-title{font-family:var(--font-sans);font-size:clamp(var(--fs-48),7vw,var(--fs-80));font-weight:var(--fw-bold);color:var(--fg-on-violet);margin:0;letter-spacing:var(--ls-tight);line-height:var(--lh-tight)}.splash-title .ai{font-style:italic;opacity:.92}.splash-tagline{font-family:var(--font-sans);font-size:var(--fs-20);color:var(--fg-on-violet);opacity:.85;text-align:center;max-width:620px;line-height:var(--lh-relaxed);margin:var(--s-4) auto 0;font-weight:var(--fw-regular)}.splash-cards{display:flex;gap:var(--s-6);flex-wrap:wrap;justify-content:center}.splash-card{width:300px;background:var(--paper-0);border:1px solid var(--border-soft);border-radius:var(--r-lg);padding:var(--s-8) var(--s-6);cursor:pointer;transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out);box-shadow:var(--shadow-2);color:var(--fg-2);text-align:left}.splash-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-3)}.splash-card-icon{font-size:36px;margin-bottom:var(--s-3)}.splash-card h3{margin:0 0 var(--s-2) 0;font-size:var(--fs-20);color:var(--fg-1);font-weight:var(--fw-semibold)}.splash-card p{margin:0;font-size:var(--fs-14);color:var(--fg-3);line-height:var(--lh-relaxed)}.splash-footer{padding:var(--s-4) var(--s-8);color:var(--fg-on-violet);opacity:.55;font-size:var(--fs-12);text-align:center;letter-spacing:var(--ls-wide)}.splash-user{display:flex;align-items:center;gap:var(--s-3)}.splash-username{font-size:var(--fs-14);opacity:.85}.splash-logout{background:#ffffff26;color:var(--fg-on-violet);border:1px solid rgba(255,255,255,.3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-13);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out)}.splash-logout:hover{background:#ffffff40}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3a0f3a8c;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--paper-0);border-radius:var(--r-md);width:min(960px,92vw);max-height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow-3)}.modal-header{padding:var(--s-4) var(--s-6);border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:var(--s-3)}.modal-header h2{margin:0;font-size:var(--fs-20);font-weight:var(--fw-semibold);flex:1;color:var(--fg-1)}.modal-header .close{background:transparent;border:0;font-size:26px;cursor:pointer;color:var(--fg-3);padding:0 var(--s-2);line-height:1}.modal-header .close:hover{color:var(--fg-1)}.modal-status{padding:var(--s-4) var(--s-6);font-size:var(--fs-18);font-weight:var(--fw-semibold)}.modal-status.ok{background:#ecfdf5;color:#065f46;border-bottom:1px solid var(--success)}.modal-status.err{background:#fef2f2;color:#991b1b;border-bottom:1px solid var(--danger)}.modal-body{padding:var(--s-4) var(--s-6);overflow-y:auto;flex:1}.err-item{padding:var(--s-3) var(--s-4);margin-bottom:var(--s-3);background:#fef2f2;border-left:4px solid var(--danger);border-radius:var(--r-sm)}.err-code{font-family:var(--font-mono);font-size:var(--fs-14);color:#991b1b;font-weight:var(--fw-semibold);margin-bottom:var(--s-1)}.err-msg{font-size:var(--fs-16);color:var(--fg-1);line-height:var(--lh-relaxed)}.err-count{display:inline-block;background:#dc2626;color:#fff;font-size:var(--fs-12);padding:2px 8px;border-radius:var(--r-full);margin-left:var(--s-2);font-weight:var(--fw-semibold)}.compliance-tip{margin-top:var(--s-3);padding:var(--s-3) var(--s-4);background:#fffbeb;border-left:4px solid var(--warning);border-radius:var(--r-sm);font-size:var(--fs-14);color:#78350f;line-height:var(--lh-relaxed)}.compliance-tip .tip-label{font-weight:var(--fw-semibold);color:#92400e}.upload-modal{padding:var(--s-8);text-align:center}.upload-modal .drop{display:block;border:2px dashed var(--ink-200);border-radius:var(--r-md);padding:var(--s-8) var(--s-6);margin:var(--s-4) 0 0 0;transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out);cursor:pointer;background:var(--paper-50)}.upload-modal .drop:hover{border-color:var(--violet-700);background:var(--violet-50)}.upload-modal .drop input{display:none}.upload-modal .progress{padding:var(--s-6) 0}.upload-modal .progress-phase{font-size:var(--fs-16);color:var(--fg-1);font-weight:var(--fw-semibold);margin-bottom:var(--s-2)}.upload-modal .progress-msg{font-size:var(--fs-14);color:var(--fg-3)}.spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--violet-100);border-top-color:var(--violet-700);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--s-3)}@keyframes spin{to{transform:rotate(360deg)}}.auth-error{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#1a0a1a;font-family:var(--font-sans)}.auth-error-card{background:var(--paper-0);border-radius:var(--r-md);padding:2.5rem 3rem;text-align:center;max-width:440px;box-shadow:0 8px 32px #0006}.auth-error-icon{font-size:36px;margin-bottom:1rem}.splash-admin-btn{background:#ffffff26;color:var(--fg-on-violet);border:1px solid rgba(255,255,255,.3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-13);font-family:var(--font-sans);transition:background var(--dur-fast) var(--ease-out)}.splash-admin-btn:hover{background:#ffffff40}:root{--muted: var(--fg-3);--surface: var(--paper-0);--text: var(--fg-1);--border: var(--border-strong);--font: var(--font-sans)}.modal-title{font-size:var(--fs-18);font-weight:var(--fw-semibold);color:var(--fg-1)}.modal-close{background:transparent;border:0;font-size:22px;cursor:pointer;color:var(--fg-3);padding:0 var(--s-2);line-height:1;margin-left:auto}.modal-close:hover{color:var(--fg-1)}.btn{display:inline-flex;align-items:center;gap:var(--s-2);border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;font-family:var(--font-sans);font-weight:var(--fw-medium);transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);white-space:nowrap}.btn-sm{font-size:var(--fs-13);padding:6px 14px}.btn-primary{background:var(--violet-700);color:#fff;border-color:var(--violet-700)}.btn-primary:hover{background:var(--violet-800);border-color:var(--violet-800)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--fg-2);border-color:var(--border-strong)}.btn-ghost:hover{background:var(--paper-100)}.btn-danger{background:transparent;color:#b91c1c;border-color:#fca5a5}.btn-danger:hover{background:#fef2f2;border-color:#f87171}
