@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{--font-display: "Space Grotesk", "IBM Plex Sans", system-ui, sans-serif;--font-body: "IBM Plex Sans", "Space Grotesk", system-ui, sans-serif;--bg: #f6efe5;--panel: rgba(255, 255, 255, .88);--panel-strong: #fff9f1;--text: #1f2a33;--muted: #5f6b73;--line: #eadcc8;--accent: #ff7a59;--accent-2: #1b998b;--accent-3: #f7b955;--shadow: 0 24px 50px rgba(31, 42, 51, .14)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);color:var(--text);background:var(--bg);min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 12% 18%,#fff3d7 0%,transparent 60%),radial-gradient(circle at 90% 8%,#e8f7f4 0%,transparent 55%),radial-gradient(circle at 80% 80%,#fdeee4 0%,transparent 60%);opacity:.9;z-index:-2}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(120deg,#fff6,#fff0 60%),repeating-linear-gradient(90deg,rgba(29,45,55,.03) 0,rgba(29,45,55,.03) 1px,transparent 1px,transparent 24px);z-index:-1}#root{min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh;padding:32px clamp(16px,4vw,48px) 48px;gap:24px}.app-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:20px}.brand{display:flex;gap:16px;align-items:flex-start}.brand-mark{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);box-shadow:0 12px 24px #ff7a5940}.brand-kicker{margin:0 0 4px;font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.brand h1{margin:0;font-family:var(--font-display);font-size:clamp(2rem,3vw,2.8rem)}.brand-subtitle{margin:8px 0 0;max-width:520px;color:var(--muted)}.status-row{display:flex;gap:12px;flex-wrap:wrap}.pill{padding:8px 14px;border-radius:999px;background:var(--panel-strong);border:1px solid var(--line);font-size:.85rem}.app-main{display:grid;grid-template-columns:minmax(220px,260px) minmax(0,1fr);gap:24px;flex:1}.rail{display:flex;flex-direction:column;gap:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.panel-header h2{margin:0 0 4px;font-family:var(--font-display);font-size:1.2rem}.panel-header p{margin:0;color:var(--muted)}.panel-note{margin-top:16px;font-size:.9rem;color:var(--muted)}.step-panel .steps{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:8px}.step-panel .steps li{margin:0}.step-button{width:100%;padding:10px 12px;border-radius:12px;border:1px solid transparent;background:#fff9;color:var(--muted);text-align:left;cursor:pointer;font-family:var(--font-body)}.step-button.active{color:var(--text);background:#ff7a592e;border-color:#ff7a5966;font-weight:600}.step-button:disabled{cursor:not-allowed;opacity:.6}.model-panel .model-list{display:grid;gap:12px;margin-top:12px}.model-card{display:flex;justify-content:space-between;gap:12px;background:#ffffffb3;padding:12px 14px;border-radius:14px;border:1px solid var(--line)}.model-card strong{display:block;font-size:.95rem}.model-card span{font-size:.85rem;color:var(--muted)}.model-meta{text-align:right;display:grid;gap:4px;font-size:.8rem}.model-meta .status{padding:4px 8px;border-radius:999px;border:1px solid var(--line);background:#ffffffb3}.model-meta .status.ready{border-color:#1b998b66;background:#1b998b1f;color:var(--accent-2)}.model-meta .status.placeholder{border-color:#ff7a5966;background:#ff7a591f;color:var(--accent)}.workspace{display:grid;gap:20px}.ingest-layout{display:grid;gap:20px;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start}.ingest-stepper{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;padding:12px 16px;border-radius:18px;border:1px solid var(--line);background:#ffffffbf;box-shadow:var(--shadow)}.stepper-item{display:flex;gap:12px;align-items:flex-start}.stepper-index{width:28px;height:28px;border-radius:999px;border:1px solid var(--line);background:#ffffffe6;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:600}.stepper-item strong{display:block;font-size:.9rem}.stepper-item span{display:block;font-size:.8rem;color:var(--muted)}.stepper-item.complete .stepper-index{border-color:#1b998b66;background:#1b998b2e;color:var(--accent-2)}.stepper-item.active .stepper-index{border-color:#ff7a5980;background:#ff7a5933;color:var(--accent)}.stepper-item.disabled{opacity:.5}.source-panel{display:grid;gap:16px}.source-tabs{display:inline-flex;gap:6px;padding:6px;border-radius:999px;border:1px solid var(--line);background:#ffffffb3;width:fit-content}.source-tab{border:none;background:transparent;padding:8px 14px;border-radius:999px;font-size:.85rem;color:var(--muted);cursor:pointer;font-family:var(--font-body)}.source-tab.active{background:#ff7a592e;color:var(--text);font-weight:600}.source-section{display:grid;gap:16px}.source-section .dataset-grid{margin-top:0}.section-note{margin:0;color:var(--muted);font-size:.9rem}.section-divider{margin-top:4px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.dataset-grid{margin-top:16px;display:grid;gap:12px}.dataset-card{display:grid;gap:12px;padding:16px;border-radius:16px;border:1px solid transparent;background:#ffffffbf;transition:transform .2s ease,border-color .2s ease}.dataset-card.is-active{border-color:#1b998b99;box-shadow:0 12px 28px #1b998b33}.dataset-card h3{margin:0 0 6px;font-family:var(--font-display);font-size:1.1rem}.dataset-card p{margin:0;color:var(--muted)}.dataset-meta{display:flex;gap:10px;font-size:.85rem;color:var(--muted)}.dataset-tags{display:flex;gap:8px;flex-wrap:wrap}.badge{padding:4px 10px;border-radius:999px;background:#ffb95533;border:1px solid rgba(255,185,85,.5);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.badge.subtle{background:#1f2a330f;border-color:#1f2a3326;color:var(--muted)}.button{border:none;border-radius:999px;padding:10px 18px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.button:disabled{opacity:.5;cursor:not-allowed}.button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 20px #ff7a5940}.button.ghost{background:transparent;color:var(--text);border:1px solid var(--line);box-shadow:none}.dropzone{margin-top:16px;padding:18px;border-radius:18px;border:2px dashed rgba(27,153,139,.4);background:#1b998b14;display:flex;justify-content:space-between;gap:16px;align-items:center;transition:border-color .2s ease,background .2s ease}.dropzone.is-active{background:#1b998b2e;border-color:#1b998bcc}.dropzone strong{display:block;margin-bottom:6px}.dropzone span{color:var(--muted);font-size:.9rem}.paste-block{margin-top:18px}.paste-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.paste-block h3{margin:0;font-family:var(--font-display)}textarea{width:100%;min-height:140px;padding:12px;border-radius:14px;border:1px solid var(--line);font-family:var(--font-body);resize:vertical;background:#fffc}.toggle-group{margin-top:18px;display:grid;gap:12px}.advanced-group{margin-top:16px;display:grid;gap:12px}.field{display:grid;gap:6px;font-size:.85rem;color:var(--muted)}.field input,.field select{padding:8px 10px;border-radius:10px;border:1px solid var(--line);font-family:var(--font-body);background:#ffffffd9}.dbscan-controls{display:grid;gap:12px}.slider{width:100%;margin:10px 0 0}.slider-value{display:inline-block;margin-left:8px;font-weight:600}.toggle{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:#ffffffb3}.toggle.is-disabled{opacity:.6}.toggle.is-disabled .toggle-pill{cursor:not-allowed}.toggle-copy{display:grid;gap:4px;font-size:.9rem}.toggle-copy span{color:var(--muted)}.toggle-pill{position:relative;width:52px;height:28px;border-radius:999px;background:#1f2a331a;display:inline-flex;align-items:center;padding:4px}.toggle-pill input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0}.toggle-dot{width:20px;height:20px;border-radius:999px;background:#fff;transition:transform .2s ease;box-shadow:0 4px 12px #1f2a332e}.toggle-pill.is-on{background:#1b998b66}.toggle-pill.is-on .toggle-dot{transform:translate(22px)}.preview{display:grid;gap:16px}.preview-actions{display:flex;gap:10px}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.kpi{padding:12px;border-radius:14px;border:1px solid var(--line);background:#ffffffb3;display:grid;gap:6px}.kpi span{font-size:.8rem;color:var(--muted)}.kpi strong{font-size:1.1rem}.notice{padding:10px 12px;border-radius:12px;background:#1b998b1f;border:1px solid rgba(27,153,139,.3);color:var(--accent-2)}.notice.error{background:#ff7a591f;border-color:#ff7a5966;color:var(--accent)}.empty-state{padding:18px;border-radius:16px;border:1px dashed var(--line);color:var(--muted);background:#ffffffb3}.preview-list{display:grid;gap:12px}.preview-card{padding:14px;border-radius:16px;border:1px solid var(--line);background:#ffffffd1;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.preview-card strong{display:block;margin-bottom:6px}.preview-card p{margin:0;color:var(--muted)}.map-panel{display:grid;gap:16px}.map-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);gap:20px}.map-stage{display:grid;gap:12px}.map-hint{margin:0;font-size:.8rem;color:var(--muted)}.map-canvas{width:100%;height:420px;border-radius:18px;border:1px solid var(--line);background:#fffc;position:relative;overflow:hidden}.map-canvas canvas{width:100%;height:100%;display:block}.map-legend{display:grid;gap:8px;padding:10px 12px;border-radius:16px;border:1px solid var(--line);background:#ffffffc7}.legend-scroll{display:flex;flex-wrap:wrap;gap:8px;max-height:120px;overflow-y:auto;padding-right:4px}.legend-chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;border:1px solid rgba(31,42,51,.14);background:#ffffffe6;padding:6px 10px;font-size:.78rem;color:var(--text);font-family:var(--font-body);line-height:1.2;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.legend-chip:hover{border-color:#1f2a334d;transform:translateY(-1px)}.legend-chip.is-active{border-color:#ff7a59b3;box-shadow:0 10px 20px #ff7a592e;background:#fff9f1f2}.legend-chip.is-muted{color:var(--muted);cursor:default}.legend-chip.is-muted:hover{border-color:#1f2a3324;transform:none}.legend-chip:focus-visible{outline:2px solid rgba(255,122,89,.5);outline-offset:2px}.legend-dot{width:10px;height:10px;border-radius:999px;background:#1f2a3333}.legend-dot.is-neutral{background:#1f2a3333}.legend-label{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.legend-count{font-size:.72rem;color:var(--muted)}.map-info{display:grid;gap:16px}.cluster-panel{padding:16px;border-radius:16px;border:1px solid var(--line);background:#ffffffb3;display:grid;gap:12px}.cluster-header{display:flex;justify-content:space-between;font-size:.95rem;color:var(--muted)}.cluster-header strong{color:var(--text)}.cluster-section p{margin:0 0 8px;color:var(--muted);font-size:.85rem}.cluster-doc{display:grid;gap:4px;padding:8px 0;border-bottom:1px solid rgba(31,42,51,.08)}.cluster-doc:last-child{border-bottom:none}.cluster-doc span,.cluster-doc em{color:var(--muted);font-size:.85rem;font-style:normal}.hover-panel{padding:12px 14px;border-radius:14px;border:1px dashed var(--line);background:#ffffffb3;display:grid;gap:6px}.hover-panel p{margin:0;font-size:.8rem;color:var(--muted)}.hover-panel em{font-size:.8rem;color:var(--accent-2)}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:6px 12px;border-radius:999px;border:1px solid rgba(31,42,51,.15);background:#ffffffe6;font-size:.8rem;cursor:pointer;font-family:var(--font-body)}.chip.ghost{background:#1f2a330d}.chip.active{background:#ff7a5933;border-color:#ff7a5980}.progress-block{display:grid;gap:10px}.progress-block span{color:var(--muted);font-size:.85rem}.progress-bar{width:100%;height:10px;border-radius:999px;background:#1f2a331a;overflow:hidden}.progress-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.label-toggle{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.label-tools{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;margin-bottom:12px}.merge-controls{display:flex;align-items:center;gap:12px;font-size:.85rem;color:var(--muted)}.merge-controls span{font-weight:600;color:var(--text)}.cluster-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.cluster-card{padding:14px;border-radius:16px;border:1px solid var(--line);background:#ffffffb3;display:grid;gap:10px}.cluster-card-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.cluster-card-actions{display:flex;align-items:center;gap:8px}.merge-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:#ffffffb3;font-size:.75rem;color:var(--muted)}.merge-toggle input{margin:0}.merge-toggle.active{border-color:#ff7a5980;color:var(--text);background:#ff7a591f}.cluster-card strong{display:block}.cluster-card span{font-size:.85rem;color:var(--muted)}.rename{display:grid;gap:6px;font-size:.8rem;color:var(--muted)}.rename input{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--line);font-family:var(--font-body)}.button.small{padding:6px 12px;font-size:.75rem}.explain-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.panel.light{background:#ffffffb3}.panel.light select{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--line);font-family:var(--font-body);margin-bottom:12px}.evidence-list,.rationale-list{display:grid;gap:10px}.rationale-score{font-size:.85rem;color:var(--muted)}.rationale-item{display:grid;gap:4px;padding:8px 0;border-bottom:1px solid rgba(31,42,51,.08)}.rationale-item:last-child{border-bottom:none}.rationale-item span,.rationale-item em{color:var(--muted);font-size:.8rem;font-style:normal}.taxonomy-actions{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.taxonomy-tree{display:grid;gap:16px}.group-card{padding:12px;border-radius:16px;border:1px solid var(--line);background:#ffffffb3;display:grid;gap:12px;min-width:0;overflow:hidden}.group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.group-title{font-weight:600;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-family:var(--font-body);flex:1 1 240px;width:auto;max-width:100%;min-width:0}.group-head .button{white-space:nowrap}.subgroup-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.subgroup-card{padding:10px;border-radius:14px;border:1px dashed rgba(31,42,51,.18);background:#ffffffd9;display:grid;gap:8px;min-width:0}.subgroup-title{font-weight:600;border:1px solid var(--line);border-radius:10px;padding:6px 8px;font-family:var(--font-body);width:100%;max-width:100%;min-width:0}.group-list{display:grid;gap:8px}.group-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,180px);gap:8px;align-items:center;font-size:.85rem;min-width:0}.group-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-row select{border-radius:8px;padding:4px 6px;border:1px solid var(--line);width:100%;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-subgroup{padding:6px 4px;color:var(--muted);font-size:.8rem}.assignment-result{margin-top:12px;display:grid;gap:8px}.export-grid{display:grid;gap:10px}@media (max-width: 1100px){.app-main{grid-template-columns:1fr}.rail{order:2}.ingest-layout{grid-template-columns:1fr}}@media (max-width: 700px){.app{padding:20px 16px 32px}.dropzone{flex-direction:column;align-items:flex-start}.panel-header{flex-direction:column}.preview-actions{width:100%;justify-content:space-between}.map-layout{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*{scroll-behavior:auto!important;transition:none!important}}
