:root{--bg:#f3f4f6;--sidebar-bg:#fff;--accent:#f2762e;--accent-dark:#db661f;--accent-soft:#fdece1;--text-primary:#1f2430;--text-secondary:#6b7280;--text-faint:#9ca3af;--border:#e5e7eb;--card-bg:#fff;--success:#16a34a;--success-soft:#e9f8ef;--danger:#dc2626;--danger-soft:#fdecec;--warning:#d97706;--warning-soft:#fef3e2;--shadow-sm:0 1px 2px #1018280a;--shadow-md:0 4px 10px -2px #10182814, 0 2px 4px -2px #1018280d;--shadow-lg:0 12px 32px -8px #10182829, 0 4px 10px -4px #10182814}*{box-sizing:border-box}body{background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}button,a,input,select,textarea{transition:background-color .13s,border-color .13s,color .13s,box-shadow .13s,opacity .13s,transform .1s}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:active{transform:translateY(1px)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.7s linear infinite spin}#root{min-height:100vh}.app{min-height:100vh;display:flex}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--border);flex-shrink:0;width:250px;padding:20px 16px}.brand{align-items:center;gap:10px;padding:4px 8px 24px;display:flex}.brand-icon{background:linear-gradient(135deg, var(--accent), var(--accent-dark));color:#fff;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;font-weight:700;display:flex}.brand-name{font-size:16px;font-weight:700}.brand-name span{color:var(--accent)}.nav-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);padding:8px 10px 6px;font-size:11px;font-weight:600}.nav-item{color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;margin-bottom:2px;padding:9px 10px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}.nav-item svg{opacity:.85;flex-shrink:0}.nav-item:hover{color:var(--text-primary);background:#f7f7f8}.nav-item.active{background:var(--accent);color:#fff}.nav-item.active svg{opacity:1}.nav-item.disabled{opacity:.55;cursor:default}.nav-item.disabled:hover{color:var(--text-secondary);background:0 0}.nav-item-soon{letter-spacing:.03em;color:var(--text-faint);background:#eeeef0;border-radius:20px;margin-left:auto;padding:2px 6px;font-size:10px;font-weight:700}.sidebar-note{border:1px solid var(--border);background:#fafafb;border-radius:10px;margin-top:24px;padding:12px}.sidebar-note-title{color:var(--text-faint);letter-spacing:.05em;align-items:center;gap:6px;margin-bottom:8px;font-size:11px;font-weight:700;display:flex}.sidebar-note-title .dot{background:var(--success);border-radius:50%;width:6px;height:6px;display:inline-block}.sidebar-stat{color:var(--text-secondary);justify-content:space-between;padding:3px 0;font-size:12.5px;display:flex}.sidebar-stat b{color:var(--text-primary);font-weight:600}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);z-index:1;background:#fff;align-items:center;gap:16px;padding:16px 28px;display:flex;position:relative}.topbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.profile{align-items:center;gap:8px;font-size:13.5px;font-weight:600;display:flex}.avatar{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-dark);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.content{text-align:left;max-width:1180px;padding:24px 28px 48px}.breadcrumb{color:var(--text-faint);margin-bottom:14px;font-size:12.5px}.breadcrumb b{color:var(--text-primary)}.page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.page-title{margin:0 0 4px;font-size:21px;font-weight:700}.page-sub{color:var(--text-secondary);margin:0;font-size:13.5px}.btn{cursor:pointer;border:none;border-radius:9px;align-items:center;gap:7px;padding:9px 16px;font-size:13.5px;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--accent-dark);box-shadow:var(--shadow-md)}.btn-secondary{border:1px solid var(--border);color:var(--text-primary);background:#fff}.btn-secondary:hover{background:#f7f7f8;border-color:#d8dadf}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn-sm{padding:6px 11px;font-size:12.5px}.card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:14px;margin-bottom:18px;padding:20px}.card-title{margin:0 0 3px;font-size:14.5px;font-weight:700}.card-sub{color:var(--text-secondary);margin:0 0 16px;font-size:12.5px}table{border-collapse:collapse;width:100%}thead th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);z-index:1;background:#fafafc;border-bottom:1px solid #e1e3e8;padding:11px 12px;font-size:11px;font-weight:700;position:sticky;top:0}thead tr:first-child th:first-child{border-top-left-radius:13px}thead tr:first-child th:last-child{border-top-right-radius:13px}tbody tr:last-child td:first-child{border-bottom-left-radius:13px}tbody tr:last-child td:last-child{border-bottom-right-radius:13px}td{vertical-align:middle;border-bottom:1px solid #f1f1f2;padding:9px 12px;font-size:13.5px}tr.category-group-start td{border-top:1px solid var(--border)}tr:last-child td{border-bottom:none}.code-pill{background:var(--accent-soft);color:var(--accent-dark);border-radius:6px;padding:3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:700}.template-str{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.row-actions{justify-content:flex-end;gap:6px;display:flex}.icon-link{border:1px solid var(--border);width:30px;height:30px;color:var(--text-secondary);cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;text-decoration:none;display:flex}.icon-link:hover{color:var(--text-primary);background:#f7f7f8;border-color:#d8dadf}.field-group{margin-bottom:16px}.field-label{color:var(--text-primary);margin-bottom:6px;font-size:12.5px;font-weight:600;display:block}.field-hint{color:var(--text-faint);margin-top:5px;font-size:11.5px}input[type=text],input[type=number],input[type=email],input[type=password],select,textarea{border:1px solid var(--border);width:100%;color:var(--text-primary);background:#fff;border-radius:8px;padding:9px 11px;font-family:inherit;font-size:13.5px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field-row{gap:14px;display:flex}.field-row>div{flex:1}.chip{border:1px solid var(--border);cursor:pointer;color:var(--text-secondary);background:#f7f7f8;border-radius:20px;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.chip svg{flex-shrink:0}.chip:hover{border-color:var(--accent);color:var(--accent-dark);background:var(--accent-soft)}.chip-row{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.preview-box{border:1.5px dashed var(--border);background:#fafafb;border-radius:10px;padding:16px}.preview-name{color:var(--text-primary);letter-spacing:.01em;word-break:break-all;min-height:24px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:17px;font-weight:700}.preview-meta{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.charbar-wrap{background:#ededef;border-radius:4px;flex:1;height:6px;margin-right:12px;overflow:hidden}.charbar{border-radius:4px;height:100%;transition:width .15s}.char-count{white-space:nowrap;font-size:12px;font-weight:700}.badge{border-radius:20px;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;font-weight:700;display:inline-flex}.badge .dot{border-radius:50%;width:6px;height:6px}.badge-ok{background:var(--success-soft);color:var(--success)}.badge-ok .dot{background:var(--success)}.badge-bad{background:var(--danger-soft);color:var(--danger)}.badge-bad .dot{background:var(--danger)}.badge-warn{background:var(--warning-soft);color:var(--warning)}.badge-warn .dot{background:var(--warning)}.badge-muted{color:var(--text-secondary);background:#f3f4f6}.badge-muted .dot{background:var(--text-faint)}.banner{border-radius:10px;align-items:flex-start;gap:11px;margin-bottom:16px;padding:13px 15px;font-size:13px;display:flex}.banner svg{flex-shrink:0;margin-top:1px}.banner a{color:inherit;font-weight:700;text-decoration:underline}.banner a:hover{text-decoration:none}.banner-danger{background:var(--danger-soft);color:#9b1c1c}.banner-danger svg{color:var(--danger)}.banner-success{background:var(--success-soft);color:#0f5b2e}.banner-success svg{color:var(--success)}.banner-info{color:#1e429f;background:#eff4ff}.banner-info svg{color:#1e429f}.banner-warning{background:var(--warning-soft);color:#92400e}.banner-warning svg{color:var(--warning)}.field-list-row{border:1px solid var(--border);background:#fafafb;border-radius:9px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.field-list-row .grow{flex:1;min-width:160px;font-size:13px}.option-editor{border-left:2px solid var(--border);margin:-4px 0 10px 8px;padding:10px 12px 10px 28px}.option-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.option-row input{font-size:13px}.option-row .grow{flex:1}.two-col{align-items:flex-start;gap:20px;display:flex}.two-col>.main-col{flex:1.4;min-width:0}.two-col>.side-col{flex:1;min-width:0}.empty-state{text-align:center;color:var(--text-faint);padding:30px 10px}.checkbox-row{align-items:center;gap:9px;display:flex}.checkbox-row input{width:16px;height:16px}.tab-toggle{background:#f3f4f6;border-radius:9px;gap:2px;margin-bottom:14px;padding:3px;display:inline-flex}.tab-toggle button{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:7px 14px;font-size:12.5px;font-weight:600}.tab-toggle button.active{color:var(--text-primary);box-shadow:var(--shadow-sm);background:#fff}.search-result-row{border:1px solid var(--border);background:#fafafb;border-radius:9px;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;padding:10px 12px;display:flex}.search-result-row .name{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:700}.search-result-row .desc{color:var(--text-secondary);margin-top:2px;font-size:12px}.search-result-row .price{white-space:nowrap;font-size:12.5px;font-weight:700}.remove-x{cursor:pointer;color:var(--text-faint);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:5px;line-height:1;display:inline-flex}.remove-x:hover{color:var(--danger);background:var(--danger-soft)}.login-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--card-bg);border:1px solid var(--border);width:360px;box-shadow:var(--shadow-lg);border-radius:14px;padding:32px}.col-resize-handle{cursor:col-resize;touch-action:none;width:8px;height:100%;position:absolute;top:0;right:0}.col-resize-handle:hover,.col-resize-handle.active{background:var(--accent-soft)}.th-label{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;padding-right:8px;display:flex;overflow:hidden}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.th-sortable:hover{color:var(--text-primary)}.th-sortable svg{flex-shrink:0}.cell-clip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.column-picker{position:relative}.column-picker-panel{z-index:5;width:250px;margin-bottom:0;padding:10px;position:absolute;top:calc(100% + 6px);right:0}.column-picker-row{align-items:center;gap:8px;padding:7px 2px;display:flex}.column-picker-row+.column-picker-row{border-top:1px solid var(--border)}.column-picker-row label{cursor:pointer;flex:1;font-size:13px}.icon-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;display:inline-flex}.icon-btn:hover{color:var(--text-primary);background:#f7f7f8}.icon-btn:disabled{opacity:.3;cursor:not-allowed}
