:root{--color-bg: #f0f4f8;--color-surface: #ffffff;--color-border: #dce3ea;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-text: #1e293b;--color-muted: #64748b;--color-error-bg: #fef2f2;--color-error-text: #b91c1c;--radius: 10px;--shadow: 0 1px 4px rgba(0, 0, 0, .08), 0 4px 16px rgba(0, 0, 0, .06)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100vh}#root{min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:18px 32px;display:flex;align-items:center;gap:12px;box-shadow:0 1px 3px #0000000f}.app-header h1{font-size:1.2rem;font-weight:700;color:var(--color-text);letter-spacing:-.3px}.app-header .header-badge{font-size:.7rem;font-weight:600;background:var(--color-primary);color:#fff;padding:2px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}.app-body{display:grid;grid-template-columns:380px 1fr;gap:24px;padding:24px 32px;flex:1;align-items:start}@media (max-width: 900px){.app-body{grid-template-columns:1fr;padding:16px}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow)}.error-banner{background:var(--color-error-bg);border:1px solid #fca5a5;border-radius:var(--radius);color:var(--color-error-text);padding:12px 16px;font-size:.875rem;margin-bottom:16px}.spinner{display:inline-block;width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 32px;text-align:center;color:var(--color-muted)}.empty-state svg{margin-bottom:16px;opacity:.35}.empty-state h3{font-size:1rem;font-weight:600;margin-bottom:6px;color:var(--color-text);opacity:.5}.empty-state p{font-size:.85rem}.upload-panel{padding:24px;display:flex;flex-direction:column;gap:16px}.upload-panel__header h2{font-size:1rem;font-weight:700;margin-bottom:4px}.upload-panel__header p{font-size:.8rem;color:var(--color-muted)}.drop-zone{border:2px dashed var(--color-border);border-radius:8px;cursor:pointer;min-height:160px;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone--active{border-color:var(--color-primary);background:#eff6ff}.drop-zone__placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px;color:var(--color-muted)}.drop-zone__label{font-size:.875rem;font-weight:500;color:var(--color-text)}.drop-zone__sublabel{font-size:.75rem}.file-loaded-bar{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--color-border);border-radius:8px;padding:10px 14px}.file-loaded-bar__name{flex:1;font-size:.82rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-bar-wrap{display:flex;flex-direction:column;gap:6px}.progress-bar-label{font-size:.78rem;color:var(--color-muted);font-weight:500}.progress-bar-track{height:6px;background:#e2e8f0;border-radius:99px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-primary);border-radius:99px;transition:width .3s ease}.analyze-btn{width:100%;padding:12px;background:var(--color-primary);color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .2s,opacity .2s;font-family:inherit}.analyze-btn:hover:not(:disabled){background:var(--color-primary-hover)}.analyze-btn:disabled{opacity:.5;cursor:not-allowed}.change-btn{background:none;border:1px solid var(--color-border);color:var(--color-muted);font-size:.8rem;padding:6px 12px;border-radius:6px;cursor:pointer;font-family:inherit;white-space:nowrap;transition:border-color .2s,color .2s}.change-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.upload-panel__hint{font-size:.72rem;color:var(--color-muted);text-align:center}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}.summary-card{background:var(--card-bg, #fff);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow);transition:transform .15s}.summary-card:hover{transform:translateY(-2px)}.summary-card__icon{color:var(--card-color, var(--color-primary));flex-shrink:0;width:42px;height:42px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px #0000001a}.summary-card__body{display:flex;flex-direction:column;gap:2px;min-width:0}.summary-card__label{font-size:.72rem;font-weight:600;color:var(--color-muted);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.summary-card__value{font-size:1.25rem;font-weight:700;color:var(--card-color, var(--color-text));line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.room-table-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--color-border)}.room-table-header h3{font-size:.95rem;font-weight:700;color:var(--color-text)}.room-count{font-size:.75rem;font-weight:600;background:#f1f5f9;color:var(--color-muted);padding:3px 10px;border-radius:20px}.room-table-scroll{overflow-x:auto}.room-table{width:100%;border-collapse:collapse;font-size:.85rem}.room-table thead th{background:#f8fafc;padding:10px 16px;text-align:left;font-size:.72rem;font-weight:700;color:var(--color-muted);text-transform:uppercase;letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-bottom:1px solid var(--color-border);transition:background .15s}.room-table thead th:hover{background:#f1f5f9;color:var(--color-text)}.room-table thead th.active{color:var(--color-primary)}.room-table thead th.numeric,.room-table tbody td.numeric,.room-table tfoot td.numeric{text-align:right}.sort-icon{margin-left:4px;font-size:.65rem;color:var(--color-primary)}.sort-icon--none{opacity:.3;color:var(--color-muted)}.room-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.room-table tbody tr:hover{background:#f8fafc}.room-table tbody td{padding:10px 16px;color:var(--color-text)}.cell-name{font-weight:600}.cell-dim{color:var(--color-muted);font-size:.8rem;font-family:Courier New,monospace}.room-table tfoot tr{background:#f8fafc;border-top:2px solid var(--color-border)}.room-table tfoot td{padding:10px 16px;font-size:.85rem;color:var(--color-text)}.room-table-note{margin:0;padding:10px 20px;font-size:.72rem;line-height:1.5;color:var(--color-muted);background:#f8fafc;border-bottom:1px solid var(--color-border)}.results-dashboard{display:flex;flex-direction:column;gap:20px}.results-dashboard__title{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:700;color:#059669;background:#ecfdf5;border:1px solid #6ee7b7;border-radius:var(--radius);padding:10px 16px}.floor-section{display:flex;flex-direction:column;gap:8px}.floor-section__header{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.floor-badge{background:var(--color-primary);color:#fff;font-size:.75rem;font-weight:700;padding:4px 12px;border-radius:20px;white-space:nowrap}.floor-stats{font-size:.8rem;color:var(--color-muted)}
