:root{--color-bg: #faf7f4;--color-surface: #ffffff;--color-sidebar: #f3eee8;--color-border: #e6e0d8;--color-text: #1f2937;--color-text-muted: #6b7280;--color-brand: #f97316;--color-brand-hover: #ea580c;--color-row-hover: #fff3e8;--color-row-active: #ffe1cc;--shadow-card: 0 1px 3px rgba(0,0,0,.04);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;width:100%;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,sans-serif;font-size:14px;color:var(--color-text);background:var(--color-bg)}button{font-family:inherit;cursor:pointer}input{font-family:inherit}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:260px 1fr;grid-template-rows:56px 1fr;height:100%}.ribbon{grid-column:1 / -1;display:flex;align-items:center;gap:8px;padding:0 16px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.ribbon h1{font-size:14px;font-weight:600;margin:0 16px 0 0;color:var(--color-brand)}.ribbon-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-size:13px}.ribbon-btn:hover{background:var(--color-row-hover);border-color:var(--color-border)}.ribbon-btn.primary{background:var(--color-brand);color:#fff}.ribbon-btn.primary:hover{background:var(--color-brand-hover)}.ribbon-spacer{flex:1}.sidebar{background:var(--color-sidebar);border-right:1px solid var(--color-border);padding:12px 0;overflow-y:auto}.sidebar-section{font-size:11px;text-transform:uppercase;color:var(--color-text-muted);padding:8px 16px 4px;letter-spacing:.04em}.sidebar-item{display:flex;align-items:center;gap:10px;padding:7px 16px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.sidebar-item:hover{background:var(--color-row-hover)}.sidebar-item.active{background:var(--color-row-active);border-left-color:var(--color-brand);font-weight:500}.sidebar-item .icon{color:var(--color-brand);flex-shrink:0}.main{display:flex;flex-direction:column;min-width:0;background:var(--color-surface)}.breadcrumb{padding:14px 24px 6px;font-size:13px;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.breadcrumb .crumb-current{color:var(--color-text);font-weight:600}.filelist{flex:1;overflow-y:auto}.filelist table{width:100%;border-collapse:collapse;font-size:13px}.filelist th{text-align:left;font-weight:500;color:var(--color-text-muted);padding:8px 16px;border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0}.filelist td{padding:9px 16px;border-bottom:1px solid var(--color-border)}.filelist tr{cursor:pointer}.filelist tr:hover td{background:var(--color-row-hover)}.filelist tr.selected td{background:var(--color-row-active)}.filelist .row-name{display:flex;align-items:center;gap:10px}.filelist .row-name .icon{color:var(--color-brand);flex-shrink:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:var(--color-text-muted);gap:12px}.empty-state .icon{color:var(--color-brand);opacity:.4}.login-card{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.login-card .box{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--shadow-card);width:min(420px,92vw);text-align:center}.login-card .logo{width:56px;height:56px;border-radius:14px;background:var(--color-brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:26px;margin-bottom:16px}.login-card h2{margin:0 0 6px;font-size:18px}.login-card p{margin:0 0 20px;color:var(--color-text-muted);font-size:13px}.login-card .signin{display:inline-block;padding:10px 22px;background:var(--color-brand);color:#fff;border-radius:var(--radius-sm);font-weight:600;font-size:14px}.login-card .signin:hover{background:var(--color-brand-hover)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .12s ease-out}.dialog-box{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:0 10px 40px #0000002e;width:min(440px,92vw);padding:24px;animation:scaleIn .14s ease-out}.dialog-title{font-size:16px;font-weight:600;color:var(--color-text);margin-bottom:8px}.dialog-message{font-size:13px;color:var(--color-text-muted);margin-bottom:16px;line-height:1.5}.dialog-input{width:100%;padding:10px 12px;font-size:14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);outline:none;margin-bottom:18px;background:var(--color-bg)}.dialog-input:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px #f973161f}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.ribbon-btn.destructive{background:#dc2626;color:#fff}.ribbon-btn.destructive:hover{background:#b91c1c}.toast{position:fixed;bottom:24px;right:24px;padding:12px 18px;border-radius:var(--radius-md);font-size:13px;font-weight:500;box-shadow:0 8px 24px #00000029;cursor:pointer;z-index:200;animation:slideInRight .2s ease-out;max-width:380px}.toast-success{background:#059669;color:#fff}.toast-error{background:#dc2626;color:#fff}.toast-info{background:var(--color-brand);color:#fff}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}
