*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--fg);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;line-height:1.6}.page{height:100vh;display:flex;flex-direction:column;padding:1.5rem 2rem 1rem;overflow:hidden}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--line);flex-shrink:0;flex-wrap:wrap}.page-header h1{font-size:.95rem;font-weight:700;color:var(--accent);letter-spacing:.04em;margin-bottom:.2rem}.page-header p{font-size:.75rem;color:var(--muted)}.btn-sm{height:26px;padding:0 .55rem;font-size:.72rem}.btn-md{height:32px;padding:0 .75rem}.btn-lg{height:38px;padding:0 1rem}.icon{width:13px;height:13px}#upload-area{flex:1;display:flex;align-items:center;justify-content:center}.drop-zone{border:1px dashed var(--muted);border-radius:6px;padding:3rem 4rem;text-align:center;background:var(--surface);cursor:pointer;transition:border-color .15s,background .15s;max-width:480px;width:100%}.drop-zone:hover,.drop-zone.dragover{border-color:var(--accent);background:var(--surface2)}.drop-zone input{display:none}.drop-zone p{color:var(--muted2);font-size:.85rem}.drop-zone .hint{font-size:.72rem;margin-top:6px;color:var(--muted)}#editor-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.csv-toolbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:10px;padding:8px 10px;background:var(--surface);border:1px solid var(--line);border-radius:5px;flex-shrink:0}.toolbar-group{display:flex;gap:5px;align-items:center}.toolbar-divider{width:1px;height:20px;background:var(--line);margin:0 2px}.csv-toolbar input[type=text]{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:5px;font-size:.78rem;font-family:inherit;width:180px;background:var(--bg);color:var(--fg)}.csv-toolbar input[type=text]::placeholder{color:var(--muted)}.csv-toolbar input[type=text]:focus{outline:none;border-color:var(--accent)}.csv-toolbar select{height:32px;padding:0 8px;border:1px solid var(--line);border-radius:5px;font-size:.78rem;font-family:inherit;background:var(--bg);color:var(--muted2)}.csv-toolbar select:focus{outline:none;border-color:var(--accent)}.stats{font-size:.72rem;color:var(--muted);margin-left:auto;letter-spacing:.02em}.column-toggle{position:relative}.dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;background:var(--surface2);border:1px solid var(--line);border-radius:5px;padding:6px;box-shadow:0 8px 24px #00000080;z-index:200;max-height:260px;overflow-y:auto;min-width:180px}.dropdown-menu label{display:flex;align-items:center;gap:6px;padding:4px 6px;cursor:pointer;font-size:.78rem;color:var(--muted2);border-radius:3px}.dropdown-menu label:hover{color:var(--fg);background:var(--surface)}.dropdown-menu input[type=checkbox]{accent-color:var(--accent)}.table-container{background:var(--surface);border:1px solid var(--line);border-radius:5px;overflow:auto;flex:1;min-height:0}table{width:100%;border-collapse:collapse;font-size:.78rem}thead{position:sticky;top:0;z-index:10}th{background:var(--surface2);padding:8px 10px;text-align:left;font-weight:600;font-size:.72rem;letter-spacing:.04em;color:var(--muted2);border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;user-select:none}th:hover{color:var(--fg)}th.no-sort{cursor:default}th.no-sort:hover{color:var(--muted2)}th.sorted-asc:after{content:" ▲";font-size:.65rem;color:var(--accent)}th.sorted-desc:after{content:" ▼";font-size:.65rem;color:var(--accent)}th .header-content{display:flex;align-items:center;gap:5px}th .col-actions{opacity:0;transition:opacity .12s;display:flex;gap:3px}th:hover .col-actions{opacity:1}th .col-actions button{height:20px;padding:0 5px;font-size:.65rem;font-family:inherit;background:var(--surface);border:1px solid var(--line);border-radius:3px;cursor:pointer;color:var(--muted2);transition:color .1s,border-color .1s}th .col-actions button:hover{color:var(--fg);border-color:var(--muted)}th .col-actions button.ai-btn{color:var(--accent);border-color:#fbbf244d}th .col-actions button.ai-btn:hover{background:#fbbf2414;border-color:var(--accent)}th .col-actions button.del-col-btn{color:var(--danger);border-color:#3f1515}th .col-actions button.del-col-btn:hover{background:#f8717114;border-color:var(--danger)}th.new-column{background:#fbbf240a}td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--fg)}tr:last-child td{border-bottom:none}tr:hover td{background:#ffffff05}td.editable{cursor:text}td.editable:hover{background:#ffffff08!important}td.editing{padding:0}td.editing textarea{width:100%;min-height:58px;padding:6px 10px;border:none;border:2px solid var(--accent);border-radius:0;font-family:inherit;font-size:inherit;resize:vertical;background:#18130a;color:var(--fg)}td.editing textarea:focus{outline:none}.cell-content{max-width:360px;max-height:80px;overflow:hidden;text-overflow:ellipsis;white-space:pre-wrap;word-break:break-word}.cell-content.expanded{max-height:none}.expand-btn{display:inline-block;margin-top:3px;color:var(--accent);cursor:pointer;font-size:.72rem;opacity:.7}.expand-btn:hover{opacity:1}.row-number{color:var(--muted);font-size:.72rem;text-align:right;padding-right:8px;min-width:36px}.modified-to-value{background:#fbbf2414!important;border-left:2px solid rgba(251,191,36,.5)}.modified-to-null{background:#f8717112!important;border-left:2px solid rgba(248,113,113,.4)}.deleted td{background:#f871710d!important;text-decoration:line-through;opacity:.55}tr.new-row td{background:#4ade800d!important}.new-col-cell{background:#fbbf240d!important}.row-actions{white-space:nowrap}.row-actions .btn+.btn{margin-left:3px}.hidden{display:none!important}.modal-overlay{position:fixed;inset:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--surface2);border:1px solid var(--line);border-radius:6px;padding:1.5rem;max-width:480px;width:90%;box-shadow:0 16px 48px #0009}.modal h2{font-size:.9rem;font-weight:700;color:var(--fg);margin-bottom:1rem;letter-spacing:.02em}.modal p{color:var(--muted2);font-size:.78rem;line-height:1.6;margin-bottom:10px}.form-group{margin-bottom:14px}.modal label{display:block;font-size:.72rem;font-weight:600;letter-spacing:.04em;color:var(--muted);text-transform:uppercase;margin-bottom:5px}.modal input[type=text],.modal input[type=password],.modal textarea,.modal select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:5px;font-size:.82rem;font-family:inherit;background:var(--bg);color:var(--fg);margin-bottom:0}.modal textarea{min-height:80px;resize:vertical}.modal input:focus,.modal textarea:focus,.modal select:focus{outline:none;border-color:var(--accent)}.modal input::placeholder,.modal textarea::placeholder{color:var(--muted)}.modal-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.ai-badge{display:inline-block;background:#fbbf2426;color:var(--accent);font-size:.65rem;padding:1px 5px;border-radius:3px;border:1px solid rgba(251,191,36,.25);margin-left:6px;vertical-align:middle;letter-spacing:.04em;font-weight:700}.coming-soon{background:#fbbf240f;border:1px solid rgba(251,191,36,.2);border-radius:5px;padding:10px 12px;font-size:.78rem;color:var(--muted2);margin-bottom:14px}.checkbox-list{max-height:110px;overflow-y:auto;border:1px solid var(--line);border-radius:5px;padding:6px 8px;background:var(--bg)}.checkbox-list label{display:flex;align-items:center;gap:6px;padding:3px 0;font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted2);font-size:.78rem;cursor:pointer}.checkbox-list label:hover{color:var(--fg)}.checkbox-list input[type=checkbox]{accent-color:var(--accent)}.field-hint{font-size:.68rem;color:var(--muted);margin-top:4px}.page-footer{margin-top:.75rem;font-size:.68rem;color:var(--muted);letter-spacing:.02em;flex-shrink:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}
