:root{font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color:#dbe6f3;background:radial-gradient(circle at top,rgba(37,99,235,.12),transparent 32%),linear-gradient(180deg,#0b1220,#0f172a);--bg: #0f172a;--bg-gradient: radial-gradient(circle at top, rgba(37, 99, 235, .12), transparent 32%), linear-gradient(180deg, #0b1220 0%, #0f172a 100%);--bg-muted: #111c31;--surface: rgba(15, 23, 42, .84);--surface-strong: rgba(17, 28, 49, .96);--surface-soft: rgba(148, 163, 184, .08);--border: rgba(148, 163, 184, .18);--border-strong: rgba(148, 163, 184, .3);--text: #e5eefb;--text-muted: #94a3b8;--link: #8fb7ff;--header-bg: rgba(11, 18, 32, .82);--nav-pill-bg: rgba(255, 255, 255, .03);--nav-pill-text: #d5e2f6;--primary: #3b82f6;--primary-strong: #2563eb;--danger: #ef4444;--success: #22c55e;--warning: #f59e0b;--shadow-lg: 0 24px 60px rgba(2, 6, 23, .35);--radius-lg: 20px;--radius-md: 14px;--radius-sm: 10px}:root[data-theme=light]{color:#0f172a;background:radial-gradient(circle at top,rgba(59,130,246,.1),transparent 30%),linear-gradient(180deg,#eef4ff,#f8fafc);--bg: #f8fafc;--bg-gradient: radial-gradient(circle at top, rgba(59, 130, 246, .1), transparent 30%), linear-gradient(180deg, #eef4ff 0%, #f8fafc 100%);--bg-muted: #ffffff;--surface: rgba(255, 255, 255, .88);--surface-strong: rgba(255, 255, 255, .98);--surface-soft: rgba(15, 23, 42, .04);--border: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .16);--text: #0f172a;--text-muted: #475569;--link: #1d4ed8;--header-bg: rgba(255, 255, 255, .84);--nav-pill-bg: rgba(15, 23, 42, .03);--nav-pill-text: #0f172a;--shadow-lg: 0 20px 40px rgba(15, 23, 42, .08);--label-text: #334155}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--text);background:var(--bg-gradient)}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{transition:background-color .18s ease,border-color .18s ease,color .18s ease,opacity .18s ease,transform .18s ease}button:disabled{opacity:.65;cursor:not-allowed}.app-shell{min-height:100vh}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:var(--header-bg);border-bottom:1px solid var(--border)}.app-brand{display:flex;align-items:center;gap:.85rem}.app-brand-mark{width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:.85rem;color:#fff;font-weight:700;background:linear-gradient(135deg,#3b82f6,#0ea5e9);box-shadow:0 10px 24px #3b82f652}.app-brand strong{display:block;font-size:1rem}.app-brand p{margin:.15rem 0 0;color:var(--text-muted);font-size:.8rem}.app-nav{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.app-nav>a,.ghost-btn{min-height:2.5rem;display:inline-flex;align-items:center;justify-content:center;padding:.65rem .95rem;border:1px solid var(--border);border-radius:999px;background:var(--nav-pill-bg);color:var(--nav-pill-text);text-decoration:none!important}.app-nav>a.active{border-color:#3b82f673;background:#3b82f629;color:var(--text)}.ghost-btn{cursor:pointer}.user-menu{display:flex;align-items:center;gap:.75rem}.user-badge{padding:.55rem .85rem;border-radius:999px;background:#ffffff0a;border:1px solid var(--border);color:var(--text-muted);font-size:.88rem}.app-main{width:min(1440px,calc(100% - 2rem));margin:0 auto;padding:1.5rem 0 2rem}.page-card,.section-card,.hero-panel,.sidebar-panel,.preview-panel,.empty-state,.message-banner,.viewer-container,.auth-card,.stat-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-lg)}.page-card,.section-card,.preview-panel,.auth-card{border-radius:var(--radius-lg)}.page-card{padding:1.5rem}.page-card h1,.hero-panel h1,.section-card h2{margin:0}.dashboard-shell{display:flex;flex-direction:column;gap:1.25rem}.workspace-shell{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.25rem}.content-stack{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.hero-panel{padding:1.5rem;border-radius:24px;background:linear-gradient(140deg,#3b82f629,color-mix(in srgb,var(--surface-strong) 92%,transparent)),var(--surface-strong)}.hero-panel-workspace{grid-column:1 / -1}.hero-back-link{margin:0 0 .85rem}.hero-panel-main{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.hero-description,.section-subtitle,.muted{color:var(--text-muted)}.hero-description,.section-subtitle,.viewer-status,.success-text,.error-text,.message-banner p{margin:.35rem 0 0}.hero-actions,.section-actions,.markup-toolbar{display:flex;flex-wrap:wrap;gap:.75rem}.sidebar-panel{align-self:start;padding:1.25rem;border-radius:var(--radius-lg);background:var(--surface-strong)}.section-card{padding:1.25rem}.section-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.section-card-body>*:first-child{margin-top:0}.toolbar-row,.filter-row{display:flex;flex-wrap:wrap;gap:.9rem;align-items:end}.filter-row label,.auth-form label,.project-form label,.stacked-form label{display:flex;flex-direction:column;gap:.45rem;color:var(--text-muted);font-size:.9rem}:root[data-theme=light] .filter-row label,:root[data-theme=light] .auth-form label,:root[data-theme=light] .project-form label,:root[data-theme=light] .stacked-form label,:root[data-theme=light] .stat-label,:root[data-theme=light] .stat-meta,:root[data-theme=light] .info-item-label{color:var(--label-text)}.primary-link,.page-header button,.inline-form button,.auth-form button,.markup-toolbar button,.button-primary{display:inline-flex;align-items:center;justify-content:center;min-height:2.7rem;padding:.7rem 1rem;border:1px solid transparent;border-radius:12px;background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff!important;cursor:pointer;text-decoration:none!important;box-shadow:0 12px 24px #2563eb40}.button-secondary,.secondary-btn,.markup-tool-palette button,.inline-form input[type=file]::file-selector-button{display:inline-flex;align-items:center;justify-content:center;min-height:2.7rem;padding:.7rem 1rem;border:1px solid var(--border);border-radius:12px;background:#ffffff08;color:var(--text)}.danger-btn{display:inline-flex;align-items:center;justify-content:center;min-height:2.35rem;padding:.45rem .8rem;border-radius:10px;border:1px solid rgba(239,68,68,.35);color:#fecaca;background:#ef444414;cursor:pointer}.danger-btn:hover{background:#ef444424}.danger-btn:focus-visible{outline:2px solid rgba(239,68,68,.28);outline-offset:2px}:root[data-theme=light] .danger-btn{color:#b91c1c;background:#ef44441a;border-color:#dc262647}:root[data-theme=light] .danger-btn:hover{background:#ef444429;border-color:#dc26265c}.link-btn{background:none;border:none;color:#8fb7ff;cursor:pointer;padding:0}.inline-form,.project-form,.stacked-form,.auth-form{display:flex;flex-wrap:wrap;gap:.9rem}.stacked-form,.project-form,.auth-form{flex-direction:column}.project-form{max-width:720px}.auth-card{max-width:460px;margin:3rem auto;padding:1.75rem;background:var(--surface-strong)}.auth-divider{text-align:center;margin:1rem 0;color:var(--text-muted)}.auth-switch{margin-top:1rem}input,select,textarea{width:100%;min-height:2.75rem;padding:.7rem .9rem;border-radius:12px;border:1px solid var(--border);background:var(--nav-pill-bg);color:var(--text)}textarea{min-height:7rem;resize:vertical}input::placeholder,textarea::placeholder{color:#70819b}input:focus,select:focus,textarea:focus{outline:2px solid rgba(59,130,246,.24);border-color:#3b82f68c}.preview-panel{padding:1rem 1.1rem;background:var(--surface)}.preview-panel h2,.preview-panel h3{margin-top:0}.preview-list{margin:0;padding-left:1.15rem}.table-wrap{width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.data-table th,.data-table td{padding:.9rem .75rem;text-align:left;border-bottom:1px solid rgba(148,163,184,.12);vertical-align:top}.data-table th{color:var(--text-muted);font-weight:600;white-space:nowrap}.data-table tbody tr:hover{background:var(--surface-soft)}.badge{display:inline-flex;align-items:center;padding:.28rem .6rem;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid transparent}.badge-system_admin{background:#a855f71f;color:#e9d5ff;border-color:#a855f747}.badge-client{background:#3b82f61f;color:#bfdbfe;border-color:#3b82f642}.badge-status-not_started{background:#94a3b824;color:#cbd5e1;border-color:#94a3b833}.badge-status-in_progress{background:#f59e0b1f;color:#fde68a;border-color:#f59e0b40}.badge-status-done{background:#22c55e1f;color:#bbf7d0;border-color:#22c55e3d}.badge-status-on_hold{background:#ef44441a;color:#fecaca;border-color:#ef444438}:root[data-theme=light] .badge-system_admin{background:#a855f71f;color:#6b21a8;border-color:#9333ea38}:root[data-theme=light] .badge-client{background:#3b82f61f;color:#1d4ed8;border-color:#2563eb38}:root[data-theme=light] .badge-status-not_started{background:#94a3b824;color:#475569;border-color:#64748b3d}:root[data-theme=light] .badge-status-in_progress{background:#f59e0b24;color:#b45309;border-color:#d977063d}:root[data-theme=light] .badge-status-done{background:#22c55e24;color:#15803d;border-color:#16a34a3d}:root[data-theme=light] .badge-status-on_hold{background:#ef44441f;color:#b91c1c;border-color:#dc262638}.tabs{display:inline-flex;gap:.4rem;padding:.35rem;border:1px solid var(--border);border-radius:999px;background:#ffffff08}.tab{padding:.7rem 1rem;border:none;border-radius:999px;background:transparent;color:var(--text-muted);cursor:pointer}.tab.active{background:#3b82f629;color:#fff}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.stat-card{border-radius:16px;padding:1rem 1.1rem;background:linear-gradient(180deg,rgba(148,163,184,.08),var(--surface))}.stat-label,.stat-meta{display:block;color:var(--text-muted)}.stat-value{display:block;margin-top:.35rem;font-size:1.55rem;line-height:1.1}.empty-state{padding:1.4rem;border-radius:16px;text-align:center}.empty-state-title{margin:0;font-weight:600}.empty-state-description{margin:.35rem 0 0;color:var(--text-muted)}.empty-state-action{margin-top:1rem}.message-banner{padding:.9rem 1rem;border-radius:14px}.message-banner-default{background:#3b82f614}.message-banner-danger,.error-text{color:#fecaca}.message-banner-danger{background:#ef44441a;border-color:#ef44444d}.message-banner-success,.success-text{color:#bbf7d0}.message-banner-success{background:#22c55e1a;border-color:#22c55e4d}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.9rem;margin:0}.info-item-label,.info-item-value{padding:.9rem 1rem;border-radius:14px;background:var(--nav-pill-bg);border:1px solid var(--border)}.info-item-label{margin:0;color:var(--text-muted);font-size:.84rem}.info-item-value{margin:0;font-weight:600}.workspace-columns{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.9fr);gap:1rem}.compare-view-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.compare-view-card{min-width:0}.compare-view-card h3{margin:0 0 .35rem}.compare-view-card .viewer-container{height:520px}.markup-tool-palette{display:flex;flex-wrap:wrap;gap:.6rem}.markup-tool-palette button.active{background:#3b82f62e;border-color:#3b82f673;color:#fff}.viewer-page{max-width:none}.viewer-wrapper,.viewer-stage{position:relative}.viewer-container{width:100%;height:760px;border-radius:18px;overflow:hidden;background:#081120}.annotation-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;height:100%;pointer-events:none;border-radius:18px}.annotation-overlay-active{pointer-events:auto;cursor:crosshair}.annotation-overlay-hitarea{pointer-events:all}.comparison-overlay{width:100%;border-radius:16px;border:1px solid var(--border)}.workspace-result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.section-spacer{margin-top:1rem}.entity-diff-result h3{margin-bottom:.4rem}@media(max-width:1080px){.workspace-shell,.workspace-columns,.compare-view-grid{grid-template-columns:1fr}}@media(max-width:860px){.app-header,.hero-panel-main,.section-card-header{flex-direction:column;align-items:stretch}.app-main{width:min(100%,calc(100% - 1rem));padding-top:1rem}.viewer-container{height:620px}}
