:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f1f3f6;--surface-3: #e7eaef;--border: #dde1e7;--border-strong: #c5cbd4;--text: #1d2330;--text-2: #4b5565;--text-3: #7a8494;--accent: #2b6cb0;--accent-2: #1f5590;--accent-soft: #e6f0fa;--danger: #c53030;--danger-soft: #fdecec;--success: #2f855a;--warning: #b7791f;--focus: #3182ce;--row-hover: #f5f8fc;--row-selected: #e8f1fb;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 16px rgba(16, 24, 40, .08);--shadow-lg: 0 8px 40px rgba(16, 24, 40, .18);--radius: 6px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--c-blue-bg: #dbeafe;--c-blue-fg: #1e40af;--c-cyan-bg: #cffafe;--c-cyan-fg: #155e75;--c-teal-bg: #ccfbf1;--c-teal-fg: #115e59;--c-green-bg: #dcfce7;--c-green-fg: #166534;--c-yellow-bg: #fef9c3;--c-yellow-fg: #854d0e;--c-orange-bg: #ffedd5;--c-orange-fg: #9a3412;--c-red-bg: #fee2e2;--c-red-fg: #991b1b;--c-pink-bg: #fce7f3;--c-pink-fg: #9d174d;--c-purple-bg: #ede9fe;--c-purple-fg: #5b21b6;--c-gray-bg: #e5e7eb;--c-gray-fg: #374151;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12151b;--surface: #1a1e26;--surface-2: #222731;--surface-3: #2b313d;--border: #2f3542;--border-strong: #434b5b;--text: #e6e9ef;--text-2: #b4bccb;--text-3: #8690a2;--accent: #5b9bdc;--accent-2: #7cb1e6;--accent-soft: #1f3247;--danger: #f07171;--danger-soft: #3a1f22;--row-hover: #1f242e;--row-selected: #1f3247;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .35);--shadow-lg: 0 8px 40px rgba(0, 0, 0, .6);--c-blue-bg: #1e3a5f;--c-blue-fg: #bfdbfe;--c-cyan-bg: #164e63;--c-cyan-fg: #a5f3fc;--c-teal-bg: #134e4a;--c-teal-fg: #99f6e4;--c-green-bg: #14532d;--c-green-fg: #bbf7d0;--c-yellow-bg: #713f12;--c-yellow-fg: #fef08a;--c-orange-bg: #7c2d12;--c-orange-fg: #fed7aa;--c-red-bg: #7f1d1d;--c-red-fg: #fecaca;--c-pink-bg: #831843;--c-pink-fg: #fbcfe8;--c-purple-bg: #4c1d95;--c-purple-fg: #ddd6fe;--c-gray-bg: #374151;--c-gray-fg: #e5e7eb;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px}p{margin:0 0 8px}code{font-family:var(--mono);font-size:12px;background:var(--surface-2);padding:1px 4px;border-radius:4px}hr{border:0;border-top:1px solid var(--border);margin:8px 0}button,input,select,textarea{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;font-size:13px}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-2)}.btn.danger{color:var(--danger)}.btn.danger.solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface-2)}.btn.small{height:26px;padding:0 8px;font-size:12px}.btn.active{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:5px;border:0;background:transparent;cursor:pointer;color:var(--text-2)}.icon-btn:hover{background:var(--surface-3);color:var(--text)}.input,.select,.textarea{width:100%;height:32px;padding:0 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);outline:none}.textarea{height:auto;min-height:80px;padding:8px 10px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 20%,transparent)}.input.small,.select.small{height:28px;font-size:13px}label.field-label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin:10px 0 4px}.help{font-size:12px;color:var(--text-3)}.error-text{color:var(--danger);font-size:13px}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:8px}.grow{flex:1;min-width:0}.muted{color:var(--text-3)}.small-text{font-size:12px}.spacer{flex:1}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.checkbox{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.pill{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:1px 8px;border-radius:999px;font-size:12px;line-height:18px;background:var(--c-gray-bg);color:var(--c-gray-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill.link{border-radius:4px;background:var(--accent-soft);color:var(--accent);cursor:pointer}.pill .x{cursor:pointer;opacity:.7}.pill .x:hover{opacity:1}.pills{display:flex;gap:4px;flex-wrap:wrap;overflow:hidden}.nowrap-pills{flex-wrap:nowrap}.avatar{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:600}.avatar.lg{width:28px;height:28px;font-size:12px}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;font-weight:600}.popover{position:fixed;z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-lg);padding:6px;min-width:200px;max-height:70vh;overflow:auto}.menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:0;border-radius:5px;background:transparent;text-align:left;cursor:pointer;font-size:13px;color:var(--text)}.menu-item:hover,.menu-item.active{background:var(--surface-2)}.menu-item.danger{color:var(--danger)}.menu-item .menu-icon{width:18px;text-align:center;color:var(--text-3);flex-shrink:0}.menu-sep{height:1px;background:var(--border);margin:4px 0}.menu-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3);padding:6px 10px 4px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background:#0f141e73;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow:auto}.modal{background:var(--surface);border-radius:10px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;display:flex;flex-direction:column;max-height:calc(100vh - 96px)}.modal.wide{max-width:860px}.modal.xwide{max-width:1100px}.modal-head{display:flex;align-items:center;gap:8px;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-body{padding:16px 18px;overflow:auto}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.toast-wrap{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:#1f2633;color:#fff;padding:10px 16px;border-radius:8px;box-shadow:var(--shadow-lg);font-size:13px;max-width:90vw}.toast.error{background:var(--danger)}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:10px;height:48px;padding:0 12px;flex-shrink:0;background:var(--base-color, var(--accent));color:#fff}.topbar .btn.ghost,.topbar .icon-btn{color:#fff}.topbar .btn.ghost:hover,.topbar .icon-btn:hover{background:#ffffff26}.topbar .title{font-weight:600;font-size:16px}.topbar .nav-tab{color:#ffffffd9;padding:5px 10px;border-radius:5px;cursor:pointer;font-size:13px;border:0;background:transparent}.topbar .nav-tab.active{background:#fff3;color:#fff}.topbar .nav-tab:hover{background:#ffffff1f}.tablebar{display:flex;align-items:center;gap:2px;height:36px;padding:0 8px;flex-shrink:0;overflow-x:auto;background:color-mix(in srgb,var(--base-color, var(--accent)) 82%,#000);color:#fff}.table-tab{padding:6px 12px;border-radius:5px 5px 0 0;cursor:pointer;font-size:13px;color:#ffffffd9;white-space:nowrap;border:0;background:transparent;display:inline-flex;gap:6px;align-items:center;align-self:flex-end}.table-tab:hover{background:#ffffff1a}.table-tab.active{background:var(--surface);color:var(--text);font-weight:600}.main{flex:1;display:flex;min-height:0}.sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow:auto}.sidebar.collapsed{display:none}.sidebar-item{display:flex;align-items:center;gap:8px;padding:6px 10px;margin:1px 6px;border-radius:5px;cursor:pointer;font-size:13px}.sidebar-item:hover{background:var(--surface-2)}.sidebar-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.content{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--surface)}.toolbar{display:flex;align-items:center;gap:4px;padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.toolbar .btn{height:28px}.view-area{flex:1;min-height:0;position:relative;overflow:hidden}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:48px 16px;color:var(--text-3);text-align:center}.home{max-width:1100px;margin:0 auto;padding:24px 16px}.base-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}.base-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px;cursor:pointer;display:flex;gap:12px;align-items:center}.base-card:hover{box-shadow:var(--shadow)}.base-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px;flex-shrink:0}.ws-section{margin-top:28px}.auth-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;box-shadow:var(--shadow)}.grid-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.grid{position:relative;min-width:100%}.grid-row{display:flex;position:absolute;left:0}.grid-cell{flex-shrink:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:0 8px;display:flex;align-items:center;overflow:hidden;background:var(--surface);position:relative;font-size:13px}.grid-row:hover .grid-cell{background:var(--row-hover)}.grid-row.selected .grid-cell{background:var(--row-selected)}.grid-cell.active{box-shadow:inset 0 0 0 2px var(--focus);z-index:2}.grid-cell.in-range{background:color-mix(in srgb,var(--focus) 10%,var(--surface))!important}.grid-cell.readonly{color:var(--text-2)}.grid-cell.align-top{align-items:flex-start;padding-top:6px}.grid-head{position:sticky;top:0;z-index:5;display:flex;height:34px;background:var(--surface-2)}.grid-head .grid-cell{background:var(--surface-2);font-weight:600;font-size:12px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px}.grid-head .grid-cell:hover{background:var(--surface-3)}.grid-head .type-icon{color:var(--text-3);font-size:11px;width:16px;text-align:center;flex-shrink:0}.col-resizer{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:3}.col-resizer:hover{background:var(--focus)}.sticky-col{position:sticky;left:0;z-index:3}.grid-head .sticky-col{z-index:6}.row-num{color:var(--text-3);font-size:12px;justify-content:space-between;gap:4px}.row-color{position:absolute;left:0;top:0;bottom:0;width:4px}.expand-btn{visibility:hidden}.grid-row:hover .expand-btn{visibility:visible}.group-head{position:absolute;left:0;display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--surface-2);border-bottom:1px solid var(--border);font-size:13px;font-weight:600;cursor:pointer}.grid-foot{position:sticky;bottom:0;z-index:5;display:flex;height:30px;background:var(--surface-2);border-top:1px solid var(--border)}.grid-foot .grid-cell{background:var(--surface-2);font-size:12px;color:var(--text-3);cursor:pointer;justify-content:flex-end;white-space:nowrap}.grid-foot .grid-cell:hover{color:var(--text)}.add-row{color:var(--text-3);cursor:pointer}.add-row:hover{color:var(--accent)}.cell-input{position:absolute;top:0;right:0;bottom:0;left:0;border:0;outline:none;padding:0 8px;background:var(--surface);box-shadow:inset 0 0 0 2px var(--focus);z-index:4;font-size:13px}textarea.cell-input{padding:6px 8px;resize:none;height:120px;bottom:auto;box-shadow:inset 0 0 0 2px var(--focus),var(--shadow)}.cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cell-wrap{white-space:pre-wrap;word-break:break-word;overflow:hidden}.cell-error{color:var(--danger);font-size:12px}.thumb{height:22px;width:22px;object-fit:cover;border-radius:3px;border:1px solid var(--border);background:var(--surface-2);flex-shrink:0}.file-chip{display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 5px;border-radius:3px;border:1px solid var(--border);background:var(--surface-2);font-size:10px;color:var(--text-2);flex-shrink:0}.rating{color:#f5a623;letter-spacing:1px}.rating .off{color:var(--surface-3)}.num{font-variant-numeric:tabular-nums}.record-layout{display:flex;min-height:0;flex:1}.record-fields{flex:1;overflow:auto;padding:16px 20px}.record-side{width:340px;border-left:1px solid var(--border);display:flex;flex-direction:column;background:var(--surface-2)}.record-field{margin-bottom:14px}.record-field-label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:4px}.comment{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.mention{color:var(--accent);font-weight:600}.rev{padding:8px 0;border-bottom:1px solid var(--border);font-size:12px}.rev .old{text-decoration:line-through;color:var(--danger);background:var(--danger-soft);padding:0 3px;border-radius:3px}.rev .new{color:var(--success);background:color-mix(in srgb,var(--success) 12%,transparent);padding:0 3px;border-radius:3px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);padding:0 8px}.tab{padding:8px 10px;cursor:pointer;font-size:13px;color:var(--text-2);border:0;background:transparent;border-bottom:2px solid transparent}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.filter-row{display:flex;gap:6px;align-items:center;margin-bottom:6px}.filter-row>*{min-width:0}.filter-group{border:1px solid var(--border);border-radius:6px;padding:8px;margin-bottom:6px;background:var(--surface-2)}.option-list{max-height:260px;overflow:auto}.choice-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.swatch{width:18px;height:18px;border-radius:4px;cursor:pointer;border:1px solid var(--border);flex-shrink:0}.type-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px}.code-input{font-family:var(--mono);font-size:13px}.dropzone{border:2px dashed var(--border-strong);border-radius:8px;padding:18px;text-align:center;color:var(--text-3);cursor:pointer}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.attachments{display:flex;flex-wrap:wrap;gap:8px}.attachment-tile{width:96px;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--surface);position:relative}.attachment-tile img{width:100%;height:72px;object-fit:cover;display:block;background:var(--surface-2)}.attachment-tile .att-name{font-size:11px;padding:3px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-tile .att-ph{height:72px;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--text-3);background:var(--surface-2)}.attachment-tile .icon-btn{position:absolute;top:2px;right:2px;background:var(--surface)}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 1px 2px #0000000a;cursor:pointer;overflow:hidden}.card:hover{box-shadow:var(--shadow)}.card-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px}.card-title{font-weight:600;font-size:13px}.card-field-label{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3)}.card-cover{height:120px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;overflow:hidden}.card-cover img{width:100%;height:100%}.notice{padding:10px 12px;border-radius:6px;background:var(--accent-soft);color:var(--text);font-size:13px}.notice.warn{background:color-mix(in srgb,var(--warning) 15%,transparent)}.kbd{font-family:var(--mono);font-size:11px;padding:1px 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;background:var(--surface-2)}.list-table{width:100%;border-collapse:collapse}.list-table th,.list-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-size:13px}.list-table th{font-size:12px;color:var(--text-3);font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scroll-y{overflow-y:auto}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:600;margin:14px 0 6px}@media (max-width: 760px){.sidebar{position:absolute;z-index:50;height:calc(100% - 84px);box-shadow:var(--shadow-lg)}.record-layout{flex-direction:column}.record-side{width:100%;border-left:0;border-top:1px solid var(--border);max-height:50vh}.modal-backdrop{padding:0}.modal{max-height:100vh;border-radius:0;min-height:100vh}.topbar .hide-sm{display:none}}.row-check{display:none}.grid-row:hover .row-check{display:inline-block}.grid-row:hover .row-idx{display:none}.grid-cell.fit{overflow-x:hidden}.grid-cell.fit .cell-text{white-space:pre-wrap;overflow-wrap:anywhere;text-overflow:clip;overflow:visible}.grid-cell.fit .cell-wrap{overflow:visible;overflow-wrap:anywhere}.grid-cell.fit .pills{flex-wrap:wrap;overflow:visible}.grid-cell.fit .pill{white-space:normal;overflow-wrap:anywhere;max-width:100%}.grid-cell.fit .num{white-space:nowrap}.grid-cell.fit>.row{flex-wrap:wrap}.view-scroll{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.view-settings{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;font-size:12px}.view-settings label{color:var(--text-3)}.view-settings .select{width:auto;min-width:140px}.view-with-settings{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.view-with-settings>.view-body{flex:1;min-height:0;position:relative}.setup-prompt{max-width:420px;margin:60px auto;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}.card-color{height:4px}.card.dragging{opacity:.4}.card-fields{display:flex;flex-direction:column;gap:4px}.card-field{min-width:0;overflow:hidden;font-size:12px}.kanban{display:flex;gap:12px;padding:12px;height:100%;align-items:flex-start;overflow-x:auto}.kanban-col{width:272px;flex-shrink:0;background:var(--surface-2);border-radius:8px;display:flex;flex-direction:column;max-height:100%}.kanban-col.drop{outline:2px dashed var(--focus);outline-offset:-2px}.kanban-col-head{display:flex;align-items:center;gap:6px;padding:8px 10px;font-weight:600;font-size:13px}.kanban-cards{padding:0 8px 8px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:40px}.kanban-drop-line{height:3px;background:var(--focus);border-radius:2px}.kanban-add{margin:0 8px 8px}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;padding:14px}.gallery .card-cover{height:150px}.new-card{border:2px dashed var(--border-strong);border-radius:8px;display:flex;align-items:center;justify-content:center;min-height:120px;color:var(--text-3);cursor:pointer;background:transparent}.new-card:hover{color:var(--accent);border-color:var(--accent)}.cal{display:flex;height:100%}.cal-main{flex:1;display:flex;flex-direction:column;min-width:0}.cal-head{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border)}.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--border);font-size:11px;color:var(--text-3);text-transform:uppercase}.cal-dow div{padding:4px 8px}.cal-grid{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(110px,1fr);overflow:auto}.cal-day{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:4px;display:flex;flex-direction:column;gap:3px;min-width:0;position:relative}.cal-day.other{background:var(--surface-2)}.cal-day.today .cal-num{background:var(--accent);color:#fff;border-radius:10px;padding:0 6px}.cal-day.drop{background:var(--accent-soft)}.cal-day-top{display:flex;align-items:center;font-size:12px}.cal-num{font-weight:600}.cal-add{visibility:hidden;margin-left:auto}.cal-day:hover .cal-add{visibility:visible}.cal-event{font-size:12px;padding:2px 6px;border-radius:4px;background:var(--accent-soft);color:var(--text);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--accent)}.cal-event.cont{border-left-color:transparent;opacity:.85}.cal-more{font-size:11px;color:var(--text-3);cursor:pointer}.cal-side{width:240px;border-left:1px solid var(--border);overflow:auto;background:var(--surface-2);padding:8px;flex-shrink:0}.cal-week .cal-grid{grid-auto-rows:1fr}.tl{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.tl-body{flex:1;overflow:auto;position:relative}.tl-inner{position:relative}.tl-axis{position:sticky;top:0;z-index:4;height:44px;background:var(--surface-2);border-bottom:1px solid var(--border)}.tl-tick{position:absolute;top:0;bottom:0;border-left:1px solid var(--border);font-size:11px;color:var(--text-3);padding:2px 4px;white-space:nowrap}.tl-tick.major{color:var(--text-2);font-weight:600}.tl-gridline{position:absolute;top:0;bottom:0;border-left:1px solid var(--border);opacity:.5;pointer-events:none}.tl-weekend{position:absolute;top:0;bottom:0;background:var(--surface-2);opacity:.6;pointer-events:none}.tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--danger);z-index:3;pointer-events:none}.tl-lane-label{position:sticky;left:0;z-index:3;font-weight:600;font-size:12px;padding:4px 10px;background:var(--surface-2);border-bottom:1px solid var(--border);display:flex;gap:6px;align-items:center}.tl-bar{position:absolute;height:24px;border-radius:5px;background:var(--c-blue-bg);color:var(--c-blue-fg);font-size:12px;padding:0 8px;display:flex;align-items:center;cursor:grab;white-space:nowrap;overflow:hidden;z-index:2;border:1px solid color-mix(in srgb,var(--c-blue-fg) 25%,transparent);-webkit-user-select:none;user-select:none}.tl-bar.readonly{cursor:pointer}.tl-handle{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:ew-resize}.tl-handle:hover{background:#00000026}.gantt-left{position:sticky;left:0;z-index:3;background:var(--surface);border-right:1px solid var(--border)}.gantt-row-label{height:36px;display:flex;align-items:center;padding:0 10px;font-size:13px;border-bottom:1px solid var(--border);cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.gantt-row-label:hover{background:var(--row-hover)}.tl-row-line{position:absolute;left:0;right:0;border-bottom:1px solid var(--border);pointer-events:none}.tl-arrows{position:absolute;top:0;left:0;pointer-events:none;z-index:1;overflow:visible}.tl-arrows path{fill:none;stroke:var(--text-3);stroke-width:1.5}.list-view{padding:8px 16px 40px}.list-group-head{display:flex;align-items:center;gap:8px;padding:10px 4px 6px;font-weight:600;font-size:13px;cursor:pointer;border-bottom:1px solid var(--border)}.list-row{display:flex;align-items:center;gap:12px;padding:7px 8px;border-bottom:1px solid var(--border);cursor:pointer;min-height:38px}.list-row:hover{background:var(--row-hover)}.list-row .list-primary{font-weight:500;min-width:160px;max-width:320px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .list-cell{min-width:0;max-width:220px;overflow:hidden;display:flex;align-items:center;font-size:13px}.list-add{padding:6px 8px;color:var(--text-3);cursor:pointer;font-size:13px}.list-add:hover{color:var(--accent)}.fb{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;min-height:0}.fb-side{width:260px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);overflow:auto;padding:10px}.fb-main{flex:1;overflow:auto;background:var(--bg);padding:24px 16px 60px}.fb-field-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:5px;cursor:pointer;font-size:13px;border:1px solid transparent}.fb-field-item:hover{background:var(--surface-2);border-color:var(--border)}.fb-q{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:10px;position:relative}.fb-q.selected{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 18%,transparent)}.fb-q.drag-over{border-top:3px solid var(--focus)}.fb-q-head{display:flex;align-items:center;gap:6px}.fb-handle{cursor:grab;color:var(--text-3);-webkit-user-select:none;user-select:none}.fb-cond{font-size:11px;color:var(--accent)}.fb-drop{border:2px dashed var(--border-strong);border-radius:8px;padding:14px;text-align:center;color:var(--text-3);font-size:13px}.fb-drop.over{border-color:var(--accent);background:var(--accent-soft)}.pf-page{min-height:100%;background:var(--bg);padding-bottom:40px;overflow:auto;height:100%}.pf-band{height:140px}.pf-card{max-width:680px;margin:-80px auto 0;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:28px 28px 24px;position:relative}.pf-card h1{font-size:26px;margin-bottom:6px}.pf-desc{color:var(--text-2);white-space:pre-wrap;margin-bottom:8px}.pf-q{margin-top:22px}.pf-q-label{font-weight:600;font-size:14px;margin-bottom:4px}.pf-q-label .req{color:var(--danger);margin-left:3px}.pf-q-help{font-size:12px;color:var(--text-3);margin-bottom:6px;white-space:pre-wrap}.pf-q.invalid .input,.pf-q.invalid .textarea{border-color:var(--danger)}.pf-q-err{color:var(--danger);font-size:12px;margin-top:4px}.pf-footer{text-align:center;color:var(--text-3);font-size:12px;margin-top:18px}.pf-done{text-align:center;padding:30px 10px}.pf-done .check{font-size:40px;color:var(--success)}.pf-center{max-width:420px;margin:80px auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;box-shadow:var(--shadow)}.pv{display:flex;flex-direction:column;height:100%}.pv-head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap}.pv-body{flex:1;overflow:auto;background:var(--surface)}.pv-table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.pv-table th{position:sticky;top:0;z-index:2;background:var(--surface-2);text-align:left;font-weight:600;font-size:12px;color:var(--text-2);padding:8px 10px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap}.pv-table td{padding:6px 10px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);max-width:320px;overflow:hidden;height:34px}.pv-table td>*{max-width:100%}.pv-table tr:hover td{background:var(--row-hover);cursor:pointer}.pv-table .rownum{color:var(--text-3);width:44px;font-size:12px}.pv-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;padding:16px}.pv-date-group{padding:12px 16px}.pv-date-group h3{font-size:13px;color:var(--text-2);margin-bottom:6px}.pv-date-item{padding:8px 10px;border:1px solid var(--border);border-radius:6px;margin-bottom:6px;cursor:pointer;background:var(--surface)}.pv-date-item:hover{background:var(--row-hover)}@media (max-width: 760px){.fb-side{display:none}.pf-card{margin:-60px 10px 0;padding:20px 16px}}.auto-main{flex:1;display:flex;min-height:0}.auto-list{width:260px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;overflow:auto}.auto-item{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:1px 6px;border-radius:6px;cursor:pointer;font-size:13px}.auto-item:hover{background:var(--surface-2)}.auto-item.active{background:var(--accent-soft)}.auto-item .sub{font-size:11px;color:var(--text-3)}.auto-body{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg)}.auto-head{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.auto-head .name-input{font-size:16px;font-weight:600;border:1px solid transparent;background:transparent;padding:4px 6px;border-radius:5px;min-width:160px;flex:1;max-width:420px}.auto-head .name-input:hover{border-color:var(--border)}.auto-head .name-input:focus{border-color:var(--focus);outline:none;background:var(--surface)}.auto-scroll{flex:1;overflow:auto;padding:20px 16px 60px}.auto-flow{max-width:760px;margin:0 auto}.step-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 1px 2px #0000000a}.step-card.trigger{border-top:3px solid var(--accent)}.step-card.action{border-top:3px solid var(--success)}.step-card.action.logic{border-top-color:#805ad5}.step-head{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer}.step-head .step-kind{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:600}.step-body{padding:4px 14px 14px;border-top:1px solid var(--border)}.step-connector{width:2px;height:18px;background:var(--border-strong);margin:0 auto}.nested{border-left:3px solid var(--border);padding-left:12px;margin:8px 0 4px}.branch{border:1px dashed var(--border-strong);border-radius:8px;padding:10px;margin:10px 0;background:var(--surface-2)}.tpl-wrap{position:relative;display:flex;gap:4px;align-items:flex-start}.tpl-wrap .input,.tpl-wrap .textarea{flex:1}.tpl-insert{flex-shrink:0;height:32px}.tok-group{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;padding:6px 8px 2px}.tok-path{font-family:var(--mono);font-size:11px;color:var(--text-3);margin-left:auto;padding-left:8px}.toggle{position:relative;width:36px;height:20px;border-radius:10px;background:var(--border-strong);border:0;cursor:pointer;flex-shrink:0;transition:background .15s}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .15s}.toggle.on{background:var(--success)}.toggle.on:after{left:18px}.save-ind{font-size:12px;color:var(--text-3)}.save-ind.err{color:var(--danger)}.run-row{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:8px}.run-row .run-sum{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;font-size:13px}.run-log{padding:4px 12px 12px;border-top:1px solid var(--border)}.log-step{padding:6px 0;border-bottom:1px dashed var(--border);font-size:13px}.log-step:last-child{border-bottom:0}pre.json{font-family:var(--mono);font-size:11px;background:var(--surface-2);padding:8px;border-radius:6px;overflow:auto;max-height:220px;margin:4px 0 0;white-space:pre-wrap;word-break:break-word}.kv-row{display:flex;gap:6px;margin-bottom:6px}.add-step{display:flex;justify-content:center;margin:4px 0}@media (max-width: 760px){.auto-main{flex-direction:column}.auto-list{width:100%;max-height:180px;border-right:0;border-bottom:1px solid var(--border)}}.viz-root{--viz-surface: var(--surface);--viz-grid: #e6e8ec;--viz-text: var(--text);--viz-muted: var(--text-3);--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;--series-5: #e87ba4;--series-6: #008300;--series-7: #6250d6;--series-8: #e34948;position:relative}@media (prefers-color-scheme: dark){:root:where(:not([data-theme=light])) .viz-root{--viz-grid: #2c313b;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--series-7: #9085e9;--series-8: #e66767}}:root[data-theme=dark] .viz-root{--viz-grid: #2c313b;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--series-7: #9085e9;--series-8: #e66767}.viz-plot{position:relative;width:100%}.viz-grid{stroke:var(--viz-grid);stroke-width:1}.viz-crosshair{stroke:var(--viz-muted);stroke-width:1}.viz-axis{fill:var(--viz-muted);font-size:11px;font-variant-numeric:tabular-nums}.viz-label{fill:var(--text-2);font-size:12px}.viz-value{fill:var(--viz-text);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.viz-center{fill:var(--viz-text);font-size:20px;font-weight:600}.viz-tip{position:absolute;pointer-events:none;z-index:5;display:flex;gap:6px;align-items:center;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:6px;padding:4px 8px;font-size:12px;white-space:nowrap;color:var(--text)}.viz-tip-label{color:var(--text-2)}.viz-key{width:10px;height:10px;border-radius:3px;display:inline-block;flex-shrink:0}.viz-toolbar{position:absolute;top:-34px;right:0}.viz-empty{padding:24px 0;text-align:center}.viz-pie{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.viz-legend{list-style:none;margin:0;padding:0;flex:1;min-width:160px}.viz-legend li{display:flex;gap:8px;align-items:center;padding:3px 4px;font-size:12px;border-radius:4px;cursor:default}.viz-legend li.on{background:var(--surface-2)}.viz-table{max-height:260px;overflow:auto;display:block}.if-shell{flex:1;display:flex;min-height:0}.if-pages{width:220px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);overflow:auto;padding:8px 0}.if-main{flex:1;min-width:0;overflow:auto;background:var(--bg)}.if-main-inner{max-width:1280px;margin:0 auto;padding:20px 20px 60px}.if-header{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.if-side{width:340px;flex-shrink:0;border-left:1px solid var(--border);background:var(--surface);overflow:auto;padding:12px 14px 40px}.if-home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:16px}.if-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;cursor:pointer;display:flex;flex-direction:column;gap:6px}.if-card:hover{box-shadow:var(--shadow)}.layout-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.layout-opt{border:1px solid var(--border);border-radius:8px;padding:10px;cursor:pointer;background:var(--surface);text-align:left;display:flex;flex-direction:column;gap:4px}.layout-opt.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.layout-opt .ico{font-size:20px}.dash{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start}.el{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px;min-width:0;position:relative}.el.w1{grid-column:span 1}.el.w2{grid-column:span 2}.el.w3{grid-column:span 3}.el.w4{grid-column:span 4}.el.divider{background:transparent;border:0;padding:4px 0}.el.selected{box-shadow:0 0 0 2px var(--focus)}.el.dragging{opacity:.4}.el-title{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:12px;min-height:18px;padding-right:56px}.el-tools{position:absolute;top:6px;right:6px;display:none;gap:2px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:6px;z-index:6}.el:hover .el-tools,.el.selected .el-tools{display:flex}.el[draggable=true]{cursor:grab}.kpi-value{font-size:34px;font-weight:650;font-variant-numeric:tabular-nums;line-height:1.1}.kpi-sub{font-size:12px;color:var(--text-3);margin-top:4px}.el-list{width:100%;border-collapse:collapse}.el-list td,.el-list th{padding:6px 8px;border-bottom:1px solid var(--border);font-size:13px;text-align:left;max-width:220px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.el-list th{font-size:11px;color:var(--text-3);font-weight:600}.el-list tr.clickable:hover td{background:var(--row-hover);cursor:pointer}.add-el{border:2px dashed var(--border-strong);border-radius:10px;display:flex;align-items:center;justify-content:center;min-height:80px;color:var(--text-3);cursor:pointer;grid-column:span 4;background:transparent}.add-el:hover{color:var(--accent);border-color:var(--accent)}.rl{display:flex;gap:14px;min-height:60vh}.rl-list{width:320px;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;overflow:hidden;max-height:calc(100vh - 200px)}.rl-items{overflow:auto;flex:1}.rl-item{padding:10px 12px;border-bottom:1px solid var(--border);cursor:pointer}.rl-item:hover{background:var(--row-hover)}.rl-item.active{background:var(--accent-soft)}.rl-detail{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 20px}.if-form{max-width:640px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px}.if-view-host{position:relative;height:calc(100vh - 190px);min-height:420px;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.saved-ind{font-size:12px;color:var(--text-3)}@media (max-width: 900px){.dash{grid-template-columns:repeat(2,minmax(0,1fr))}.el.w3,.el.w4{grid-column:span 2}.if-side{position:fixed;right:0;top:48px;bottom:0;z-index:60;box-shadow:var(--shadow-lg)}}@media (max-width: 640px){.dash{grid-template-columns:minmax(0,1fr)}.el.w1,.el.w2,.el.w3,.el.w4{grid-column:span 1}.if-pages{display:none}.rl{flex-direction:column}.rl-list{width:100%;max-height:40vh}.layout-grid{grid-template-columns:repeat(2,1fr)}}
