*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: #f5f7fa;
    color: #333;
    min-height: 100vh;
    padding: 2rem 1rem;
}

/* Two-column layout */
.app-layout {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    gap: 2rem;
    align-items: flex-start;
}

.left-panel {
    flex: 0 0 45%;
    min-width: 0;
}

.right-panel {
    flex: 1;
    min-width: 0;
    position: sticky;
    top: 2rem;
}

h1 {
    font-size: 1.6rem;
    margin-bottom: .25rem;
}

.subtitle {
    color: #666;
    margin-bottom: 1.5rem;
}

h2 {
    font-size: 1.1rem;
    margin: 2rem 0 .75rem;
}

/* Drop zone */
.drop-zone {
    border: 2px dashed #b0bec5;
    border-radius: 12px;
    padding: 2.5rem 1rem;
    text-align: center;
    transition: border-color .2s, background .2s;
    cursor: pointer;
}

.drop-zone.drag-over {
    border-color: #1976d2;
    background: #e3f2fd;
}

.drop-zone__icon { font-size: 2.5rem; margin-bottom: .5rem; }
.drop-zone__or { color: #999; margin: .5rem 0; font-size: .85rem; }
.drop-zone__hint { color: #999; font-size: .75rem; margin-top: .75rem; }

/* Button */
.btn {
    display: inline-block;
    background: #1976d2;
    color: #fff;
    padding: .55rem 1.4rem;
    border-radius: 6px;
    font-size: .9rem;
    cursor: pointer;
    border: none;
    transition: background .2s;
}

.btn:hover { background: #1565c0; }
.btn:disabled { background: #90caf9; cursor: default; }
.btn input[type="file"] { display: none; }

.btn-sm {
    padding: .3rem .7rem;
    font-size: .75rem;
    border-radius: 4px;
}

.btn-analyze {
    background: #43a047;
}

.btn-analyze:hover { background: #388e3c; }
.btn-analyze:disabled { background: #a5d6a7; }

.btn-delete {
    background: transparent;
    color: #999;
    font-size: .9rem;
    padding: .2rem .4rem;
}

.btn-delete:hover { background: #fce4ec; color: #c62828; }

/* Upload status */
.upload-status {
    margin-top: 1rem;
    padding: .75rem 1rem;
    border-radius: 8px;
    font-size: .9rem;
}

.upload-status.info { background: #e3f2fd; color: #1565c0; }
.upload-status.error { background: #fce4ec; color: #c62828; }
.upload-status.success { background: #e8f5e9; color: #2e7d32; }

/* File list */
.file-list {
    background: #fff;
    border-radius: 10px;
    border: 1px solid #e0e0e0;
    overflow: hidden;
}

.file-list .placeholder {
    padding: 1.5rem;
    text-align: center;
    color: #999;
}

.file-item {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .75rem 1rem;
    border-bottom: 1px solid #f0f0f0;
    cursor: default;
    transition: background .15s;
}

.file-item:last-child { border-bottom: none; }

.file-item.analyzed {
    border-left: 3px solid #43a047;
    cursor: pointer;
}

.file-item.analyzed:hover { background: #f1f8e9; }
.file-item.selected { background: #e8f5e9; }

.file-item__icon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .75rem;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
    text-transform: uppercase;
}

.file-item__icon.pdf { background: #e53935; }
.file-item__icon.doc { background: #1e88e5; }
.file-item__icon.ppt { background: #fb8c00; }
.file-item__icon.xls { background: #43a047; }

.file-item__name {
    flex: 1;
    font-size: .9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.file-item__size {
    color: #999;
    font-size: .8rem;
    flex-shrink: 0;
}

.file-item__actions {
    flex-shrink: 0;
}

/* Tree view */
.tree-view {
    background: #fff;
    border-radius: 10px;
    border: 1px solid #e0e0e0;
    padding: 1rem;
    min-height: 200px;
    max-height: calc(100vh - 6rem);
    overflow-y: auto;
}

.tree-view .placeholder {
    text-align: center;
    color: #999;
    padding: 2rem 0;
}

.tree-meta {
    color: #666;
    font-size: .85rem;
    margin-bottom: 1rem;
}

.tree-node__header {
    display: flex;
    align-items: center;
    gap: .4rem;
    padding: .3rem 0;
    font-size: .85rem;
    cursor: default;
    border-radius: 4px;
    transition: background .1s;
}

.tree-node__header { cursor: pointer; }
.tree-node__header:hover { background: #f0f0f0; }

.tree-node__toggle {
    width: 20px;
    text-align: center;
    font-size: .8rem;
    cursor: pointer;
    color: #666;
    flex-shrink: 0;
    user-select: none;
    transition: transform .15s;
}

.tree-node__type {
    font-size: .65rem;
    padding: .15rem .4rem;
    border-radius: 3px;
    font-weight: 600;
    text-transform: uppercase;
    flex-shrink: 0;
    color: #fff;
    background: #90a4ae;
}

.tree-node__type.prose { background: #5c6bc0; }
.tree-node__type.pdf_table, .tree-node__type.docx_table { background: #26a69a; }
.tree-node__type.pptx_slide { background: #fb8c00; }
.tree-node__type.xlsx_table { background: #43a047; }

.tree-node__title {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tree-node__size {
    color: #bbb;
    font-size: .75rem;
    flex-shrink: 0;
}

.tree-node__children {
    padding-left: 1.2rem;
    border-left: 1px solid #e8e8e8;
    margin-left: .55rem;
}

.tree-node.collapsed > .tree-node__children { display: none; }
.tree-node.collapsed > .tree-node__header .tree-node__toggle { transform: rotate(-90deg); }

/* Detail panels inside expanded nodes */
.tree-node__detail {
    margin: .4rem 0;
}

.detail-label {
    font-size: .7rem;
    font-weight: 600;
    color: #999;
    text-transform: uppercase;
    letter-spacing: .03em;
    margin-bottom: .2rem;
}

.detail-pre {
    font-size: .75rem;
    line-height: 1.4;
    background: #f8f9fa;
    border: 1px solid #eee;
    border-radius: 6px;
    padding: .5rem .75rem;
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 200px;
    overflow-y: auto;
    color: #444;
}

.detail-meta {
    font-size: .75rem;
    color: #777;
}

/* Responsive */
@media (max-width: 800px) {
    .app-layout { flex-direction: column; }
    .left-panel { flex: none; width: 100%; }
    .right-panel { position: static; }
}
