:root,.pf-card{--bg:#f7f8fa;--panel:#fff;--side:#f5f6f7;--border:#e4e6eb;--border-light:#eceef1;--grid-line:#dadde2;--border-strong:#cfd3da;--text:#1f2329;--muted:#646a73;--faint:#8f959e;--accent:#14a06a;--accent-hover:#0f8a5a;--accent-soft:#e6f5ee;--hover:#eceef1;--row-hover:#f5f7fa;--danger:#d83931;--panel-soft:#fbfbfc;--on-accent:#fff;--head-hover:#eef0f3;--overlay:#0000000f;--danger-hover:#bf2f28;--danger-soft:#fdecea;--on-danger:#fff;--link:#245bdb;--sel-soft:#e6edfb;--sel-text:#2f5fd0;--row-selected:#eef4ff;--range-fill:#3370ff29;--range-line:#3370ff8c;--active-fill:#3370ff0a;--group-0:#f3f5f8;--group-1:#f7f8fa;--group-2:#fbfbfc;--warn-bg:#fff7e6;--warn-text:#8a5a00;--toast-bg:#1f2329;--toast-text:#fff;--preview-bg:linear-gradient(180deg, #e8f0fb, #f4f7fb);--radius:8px;--font-ui:"Segoe UI", "Microsoft YaHei UI", "PingFang SC", system-ui, sans-serif}:root{font-family:var(--font-ui);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit;color:inherit}.muted{color:var(--muted)}.boot,.main-empty{height:100%;color:var(--muted);place-items:center;display:grid}.btn,.btn-primary{border:1px solid var(--border-strong);background:var(--panel);border-radius:6px;height:34px;padding:0 16px;font-weight:500}.btn:hover{background:var(--hover)}.btn-primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled,.btn:disabled{opacity:.55;cursor:not-allowed}.icon-btn{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--hover);color:var(--text)}.form-error{background:var(--danger-soft);color:var(--danger);border-radius:6px;padding:8px 10px}.login-page{background:radial-gradient(1200px 700px at 20% 40%,#3f6f8f 0%,#0000 60%),radial-gradient(900px 600px at 85% 20%,#c9d3dc 0%,#0000 60%),linear-gradient(135deg,#5a7f98,#b9c6d1);place-items:center;height:100%;padding:16px;display:grid}.login-card{background:var(--panel);border-radius:12px;flex-direction:column;gap:14px;width:min(380px,100%);padding:36px 32px 32px;display:flex;box-shadow:0 24px 60px #14283c40}.login-mark{background:linear-gradient(var(--accent), var(--accent)) padding-box;border-radius:10px;align-self:center;width:40px;height:40px;position:relative}.login-mark:after{content:"";background:linear-gradient(#fff,#fff) 0 0/100% 3px no-repeat,linear-gradient(#fff,#fff) 0/100% 3px no-repeat,linear-gradient(#fff,#fff) 0 100%/60% 3px no-repeat;position:absolute;inset:11px 10px}.login-card h1{text-align:center;margin:0;font-size:22px}.login-sub{text-align:center;color:var(--muted);margin:-6px 0 6px}.login-card label{flex-direction:column;gap:6px;font-weight:500;display:flex}.login-card input{border:1px solid var(--border-strong);border-radius:6px;outline:none;height:36px;padding:0 10px}.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.login-card .btn-primary{height:38px;margin-top:6px}.login-card .login-code{text-align:center;letter-spacing:.35em;font-variant-numeric:tabular-nums;height:46px;font-size:24px}.login-card .login-code::placeholder{letter-spacing:0;font-size:15px}.login-steps{margin:0;padding-left:20px;line-height:1.6}.login-qr{border:1px solid var(--border-strong);border-radius:8px;align-self:center;width:176px;height:176px}.login-secret{color:var(--muted);flex-direction:column;gap:6px;margin:0;font-size:13px;display:flex}.login-secret code{background:var(--accent-soft);color:var(--text,inherit);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:6px;padding:8px 10px;font-size:14px}.login-back{color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:13px}.login-back:hover{text-decoration:underline}.app{height:100%;display:flex}.main{background:var(--panel);flex-direction:column;flex:1;min-width:0;display:flex}.sidebar{background:var(--side);border-right:1px solid var(--border);flex-direction:column;flex:none;width:248px;display:flex}.side-brand{align-items:center;gap:10px;padding:16px 16px 10px;font-size:15px;font-weight:700;display:flex}.brand-mark{background:var(--accent);border-radius:6px;width:22px;height:22px;box-shadow:inset 0 -6px #0000001f}.side-search{border:1px solid var(--border);background:var(--panel);height:32px;color:var(--faint);border-radius:6px;align-items:center;gap:6px;margin:4px 12px 8px;padding:0 10px;display:flex}.side-search input{background:0 0;border:0;outline:none;flex:1;min-width:0}.side-tree{flex:1;padding:4px 8px;overflow-y:auto}.side-empty{color:var(--muted);padding:8px;line-height:1.6}.tree-row{text-align:left;width:100%;height:34px;color:var(--text);background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:0 10px;display:flex}.tree-row:hover{background:var(--hover)}.tree-row svg{color:var(--muted);flex:none}.tree-table-row{padding-left:4px;font-weight:600}.tree-view-row{padding-left:34px}.tree-row.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.tree-row.active svg{color:var(--accent)}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chev{transition:transform .15s;display:inline-grid}.chev.open{transform:rotate(90deg)}.side-create{border-top:1px solid var(--border);padding:8px}.side-section-title{color:var(--faint);padding:4px 10px 6px;font-size:12px}.side-user{border-top:1px solid var(--border);align-items:center;gap:8px;padding:10px 12px;display:flex}.avatar{background:var(--sel-soft);width:26px;height:26px;color:var(--sel-text);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.toolbar{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;gap:16px;height:52px;padding:0 16px;display:flex}.toolbar-title{white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:15px;font-weight:600;display:flex}.toolbar-title svg{color:var(--accent)}.toolbar-table{color:var(--faint);text-overflow:ellipsis;font-size:13px;font-weight:400;overflow:hidden}.toolbar-right{align-items:center;gap:12px;display:flex}.toolbar-search{border:1px solid var(--border-strong);width:clamp(120px,18vw,280px);height:32px;color:var(--faint);border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.toolbar-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.toolbar-search input{background:0 0;border:0;outline:none;flex:1;min-width:0}.toolbar-count{color:var(--muted);white-space:nowrap}.grid-scroll{background:var(--panel);flex:1;min-height:0;position:relative;overflow:auto}.grid-inner{position:relative}.grid-head{z-index:4;background:var(--bg);border-bottom:1px solid var(--grid-line);display:flex;position:sticky;top:0}.gh-cell{border-right:1px solid var(--grid-line);background:var(--bg);height:100%;color:var(--muted);flex:none;align-items:center;gap:6px;padding:0 10px;display:flex}.gh-name{text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:500;overflow:hidden}.grid-row{display:flex;position:absolute;top:0;left:0}.gc{white-space:nowrap;text-overflow:ellipsis;border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);background:var(--panel);cursor:default;flex:none;height:100%;padding:0 10px;line-height:33px;overflow:hidden}.grid-row:hover .gc{background-color:var(--row-hover)}.sticky{z-index:2;position:sticky}.cell-num{text-align:center;width:64px;color:var(--faint);font-size:12px;left:0}.gh-cell.cell-num{justify-content:center}.primary{border-right:1px solid var(--border-strong);font-weight:500}.gc.active{outline:2px solid var(--accent);outline-offset:-2px}.gc.type-number{text-align:right;font-variant-numeric:tabular-nums}.gc.type-date{font-variant-numeric:tabular-nums}.gc.type-email,.gc.type-url{color:var(--link)}.tag{vertical-align:middle;text-overflow:ellipsis;border-radius:4px;max-width:100%;margin-right:4px;padding:0 8px;font-size:12px;line-height:22px;display:inline-block;overflow:hidden}.check-mark{color:var(--accent);font-weight:700}.grid-empty{text-align:center;color:var(--muted);position:absolute;top:120px;left:0;right:0}.welcome{text-align:center}.welcome h2{color:var(--text);margin:0 0 6px}.welcome .btn-primary{margin-top:12px}.modal-backdrop{z-index:50;background:#0f141e73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:12px;flex-direction:column;width:min(560px,100%);max-height:calc(100vh - 32px);display:flex;box-shadow:0 24px 60px #00000040}.modal-head{justify-content:space-between;align-items:center;padding:16px 20px 8px;display:flex}.modal-head h2{margin:0;font-size:17px}.modal-body{padding:4px 20px 20px;line-height:1.6;overflow-y:auto}.file-drop{border:1.5px dashed var(--border-strong);border-radius:var(--radius);height:96px;color:var(--muted);cursor:pointer;justify-content:center;align-items:center;gap:8px;margin:12px 0;display:flex}.file-drop:hover{border-color:var(--accent);color:var(--accent)}.file-drop input{display:none}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.field-summary{border:1px solid var(--border);border-radius:var(--radius);max-height:320px;margin:8px 0 0;padding:0;list-style:none;overflow-y:auto}.field-summary li{border-bottom:1px solid var(--border-light);align-items:center;gap:8px;padding:6px 12px;display:flex}.field-summary li:last-child{border-bottom:0}.field-summary svg{color:var(--muted);flex:none}.fs-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.fs-type{color:var(--muted);white-space:nowrap}@media (width<=720px){.sidebar{width:200px}.toolbar-search{width:160px}.toolbar-table{display:none}}:root[data-app-theme] :where(input:not([type=checkbox],[type=radio],[type=color],[type=range]),textarea,select){background-color:var(--panel);color:var(--text)}:root[data-app-theme] :where(input,textarea)::placeholder{color:var(--faint)}:root[data-app-theme] :where(input[type=checkbox],input[type=radio]){accent-color:var(--accent)}:root.app-dark .popover,:root.app-dark .modal{border:1px solid var(--border-strong)}.small{font-size:12px}.btn-danger{border:1px solid var(--danger);background:var(--danger);height:34px;color:var(--on-danger);border-radius:6px;padding:0 16px;font-weight:500}.btn-danger:hover{background:var(--danger-hover)}.btn-link{color:var(--accent);background:0 0;border:0;padding:4px 0;font-size:12px}.btn-link:hover{text-decoration:underline}.btn-text-danger{color:var(--danger);background:0 0;border:0;padding:6px 0}.btn-text-danger:hover{text-decoration:underline}.toolbar-left{scrollbar-width:none;align-items:center;gap:4px;min-width:0;display:flex;overflow-x:auto}.toolbar-left .toolbar-title{flex:none;max-width:220px}.toolbar-left .toolbar-title span{text-overflow:ellipsis;overflow:hidden}.tb-sep{background:var(--border);flex:none;width:1px;height:20px;margin:0 8px}.tb-btn{height:30px;color:var(--text);white-space:nowrap;background:0 0;border:0;border-radius:6px;flex:none;align-items:center;gap:5px;padding:0 9px;display:inline-flex}.tb-btn svg{color:var(--muted)}.tb-btn:hover,.tb-btn.open{background:var(--hover)}.tb-btn.on{background:var(--accent-soft);color:var(--accent)}.tb-btn.on svg,.tb-btn.tb-primary svg{color:var(--accent)}.tb-btn.tb-primary{color:var(--accent);font-weight:600}.tb-btn.danger,.tb-btn.danger svg{color:var(--danger)}.tb-selection{white-space:nowrap;align-items:center;gap:6px;display:flex}.popover{z-index:60;background:var(--panel);border:1px solid var(--border);border-radius:10px;min-width:160px;max-height:calc(100vh - 16px);position:fixed;overflow:auto;box-shadow:0 12px 32px #0f172a29}.menu{flex-direction:column;padding:4px;display:flex}.menu button{text-align:left;background:0 0;border:0;border-radius:6px;height:32px;padding:0 10px}.menu button:hover{background:var(--hover)}.menu button.danger{color:var(--danger)}.panel{width:340px;padding:12px}.panel-wide{width:560px}.panel-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-weight:600;display:flex}.panel-head .muted{font-weight:400}.panel-actions{gap:12px;display:flex}.panel-empty{color:var(--faint);margin:8px 0}.panel-list{max-height:380px;margin:0 -4px;overflow-y:auto}.panel-add{color:var(--accent);background:0 0;border:0;margin-top:8px;padding:6px 4px}.panel-add:hover{text-decoration:underline}.field-row{border-radius:6px;align-items:center;gap:8px;height:34px;padding:0 6px;display:flex}.field-row:hover{background:var(--row-hover)}.field-row.dragging{opacity:.4}.field-row svg{color:var(--muted);flex:none}.drag-handle{width:10px;color:var(--faint);letter-spacing:-2px;cursor:grab;font-size:10px}.field-row-name{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;flex:1;min-width:0;overflow:hidden}.switch{flex:none;width:30px;height:18px;position:relative}.switch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.switch span{background:var(--border-strong);pointer-events:none;border-radius:9px;transition:background .15s;position:absolute;inset:0}.switch span:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(12px)}.switch input:disabled+span{opacity:.5}.cond-row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.rule-row{align-items:flex-start;gap:6px;display:flex}.rule-row .choice-color{margin-top:4px}.rule-row .cond-row{flex:1}.cond-field,.cond-op,.conj,.cond-value{border:1px solid var(--border-strong);background:var(--panel);height:30px;font:inherit;border-radius:6px;min-width:0;padding:0 8px}.cond-field{flex:none;width:150px}.cond-op{flex:none;width:96px}.cond-value,.cond-value-placeholder{flex:1}.cond-value-select{text-align:left;white-space:nowrap;align-items:center;gap:2px;display:flex;overflow:hidden}.conj{font-weight:400}.swatches{grid-template-columns:repeat(8,22px);gap:6px;padding:10px;display:grid}.swatch{border:1px solid #00000014;border-radius:5px;width:22px;height:22px;padding:0}.swatch.on{outline:2px solid var(--accent);outline-offset:1px}.swatch-none{background:linear-gradient(135deg, transparent 45%, var(--danger) 45%, var(--danger) 55%, transparent 55%), var(--panel)}.choice-color{border:1px solid #0000001a;border-radius:5px;flex:none;width:22px;height:22px;padding:0}.picker{padding:8px}.picker-search{border:1px solid var(--border-strong);border-radius:6px;outline:none;width:100%;height:30px;padding:0 8px}.picker-search:focus{border-color:var(--accent)}.picker-list{max-height:260px;margin-top:6px;overflow-y:auto}.picker-item{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;width:100%;min-height:32px;padding:4px 6px;display:flex}.picker-item.cursor{background:var(--hover)}.picker-check{border:1.5px solid var(--border-strong);border-radius:3px;flex:none;width:14px;height:14px}.picker-check.on{border-color:var(--accent);background:var(--accent);position:relative}.picker-check.on:after{content:"";border:solid var(--on-accent);border-width:0 2px 2px 0;width:3.5px;height:7px;position:absolute;top:.5px;left:3.5px;transform:rotate(45deg)}.picker-create{color:var(--accent)}.picker-empty{color:var(--faint);padding:8px 6px}.picker-clear{border:0;border-top:1px solid var(--border-light);width:100%;color:var(--muted);background:0 0;margin-top:6px;padding:6px}.picker-clear:hover{color:var(--danger)}.grid-scroll:focus{outline:none}.gh-cell{cursor:pointer;-webkit-user-select:none;user-select:none}.gh-cell:not(.sticky){position:relative}.gh-cell:hover{background:var(--head-hover)}.gh-cell.cell-num{cursor:default}.gh-caret{color:var(--faint);opacity:0;margin-left:auto;font-size:10px}.col-resize{cursor:col-resize;z-index:1;width:7px;height:100%;position:absolute;top:0;right:-3px}.col-resize:hover{background:linear-gradient(var(--accent), var(--accent)) center / 2px 100% no-repeat}.gh-cell.drop-target{box-shadow:inset 2px 0 0 var(--accent)}.gh-add{width:48px;color:var(--muted);border:0;justify-content:center;font-size:18px}.cell-num{justify-content:center;align-items:center;gap:2px;padding:0 4px;display:flex}.row-check{align-items:center;display:none}.head-check{align-items:center;display:flex}.row-check input,.head-check input{accent-color:var(--accent);cursor:pointer;margin:0}.row-expand{width:22px;height:22px;color:var(--accent);background:0 0;border:0;border-radius:4px;place-items:center;display:none}.row-expand:hover{background:var(--accent-soft)}.grid-row:hover .row-index,.grid-row.selected .row-index{display:none}.grid-row:hover .row-check,.grid-row.selected .row-check{display:flex}.grid-row:hover .row-expand{display:grid}.grid-row.selected .gc{background-color:var(--row-selected)}.gc.editing{z-index:5;padding:0;overflow:visible}.cell-edit{height:100%;position:relative}.cell-input{border:2px solid var(--accent);background:var(--panel);width:100%;height:100%;color:var(--text);outline:none;padding:0 10px;box-shadow:0 4px 14px #0f172a26}.type-date .cell-input{padding-right:32px}.cell-date-btn{width:22px;height:22px;color:var(--muted);background:0 0;border:0;border-radius:4px;place-items:center;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.cell-date-native{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;bottom:0;right:0}.longtext-input{resize:vertical;width:100%;font:inherit;border:0;outline:none;padding:10px;line-height:1.6;display:block}.longtext-hint{color:var(--faint);padding:4px 10px 8px;font-size:12px}.check-box{vertical-align:middle;border:1.5px solid var(--border-strong);width:16px;height:16px;color:var(--on-accent);cursor:pointer;border-radius:4px;place-items:center;font-size:11px;font-weight:700;line-height:1;display:inline-grid}.check-box.on{border-color:var(--accent);background:var(--accent)}.gc.type-checkbox{text-align:center}.grid-group{border-bottom:1px solid var(--border);background:var(--group-0);position:absolute;top:0;left:0}.grid-group.level-1{background:var(--group-1)}.grid-group.level-2{background:var(--group-2)}.group-label{height:100%;color:var(--text);white-space:nowrap;background:0 0;border:0;align-items:center;gap:8px;padding-right:16px;display:inline-flex;position:sticky;left:0}.group-label svg,.group-field{color:var(--muted)}.group-count{background:var(--overlay);color:var(--muted);border-radius:9px;padding:0 7px;font-size:12px;line-height:18px}.grid-footer{border-bottom:1px solid var(--grid-line);position:absolute;top:0;left:0}.add-row{height:100%;color:var(--muted);background:0 0;border:0;padding:0 18px;position:sticky;left:0}.add-row:hover{color:var(--accent)}.tree-item{align-items:center;display:flex;position:relative}.tree-item>.tree-row{flex:1;min-width:0}.tree-tools{display:none;position:absolute;right:4px}.tree-item:hover .tree-tools,.tree-tools:focus-within{display:flex}.tree-item:hover>.tree-row{padding-right:60px}.tree-tools .icon-btn{width:24px;height:24px}.tree-rename{border:1px solid var(--accent);border-radius:6px;outline:none;flex:1;height:30px;margin:2px 0 2px 30px;padding:0 8px}.modal-small{width:min(420px,100%)}.modal-actions.spread{justify-content:space-between}.modal-actions-right{gap:8px;display:flex}.form-stack{flex-direction:column;gap:14px;display:flex}.form-stack label,.label{flex-direction:column;gap:6px;font-weight:500;display:flex}.label{margin-bottom:6px}.form-stack label input{border:1px solid var(--border-strong);border-radius:6px;outline:none;height:34px;padding:0 10px;font-weight:400}.form-stack label input:focus{border-color:var(--accent)}.type-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px;display:grid}.type-option{border:1px solid var(--border);background:var(--panel);border-radius:6px;align-items:center;gap:6px;height:32px;padding:0 10px;display:flex}.type-option svg{color:var(--muted)}.type-option.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.type-option:disabled{opacity:.4;cursor:not-allowed}.hint{background:var(--warn-bg);color:var(--warn-text);border-radius:6px;margin:0;padding:8px 10px}.choice-list{flex-direction:column;gap:6px;max-height:260px;display:flex;overflow-y:auto}.choice-row{align-items:center;gap:8px;display:flex}.choice-row input{border:1px solid var(--border-strong);border-radius:6px;outline:none;flex:1;height:30px;padding:0 8px}.modal-record{width:min(640px,100%)}.record-fields{flex-direction:column;gap:14px;display:flex}.record-field{grid-template-columns:180px 1fr;align-items:start;gap:12px;display:grid}.record-label{min-height:34px;color:var(--muted);align-items:center;gap:6px;display:flex;overflow:hidden}.record-label span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.form-control{border:1px solid var(--border-strong);background:var(--panel);width:100%;min-height:34px;font:inherit;border-radius:6px;outline:none;padding:6px 10px}.form-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.form-control{resize:vertical;line-height:1.5}.form-select{text-align:left;flex-wrap:wrap;align-items:center;gap:2px;display:flex}.form-check{align-items:center;gap:8px;min-height:34px;display:flex}.modal-foot{border-top:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:12px 20px 16px;display:flex}.toasts{z-index:80;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{background:var(--toast-bg);color:var(--toast-text);border-radius:8px;padding:10px 16px;box-shadow:0 8px 24px #0003}.toast-error{color:#fff;background:#b42318}@media (width<=720px){.record-field{grid-template-columns:1fr;gap:4px}.panel-wide{width:calc(100vw - 16px)}}.grid-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.format-bar{border-bottom:1px solid var(--border);background:var(--panel-soft);scrollbar-width:none;flex:none;align-items:center;gap:2px;height:40px;padding:0 12px;display:flex;overflow-x:auto}.fb-btn{min-width:28px;height:28px;color:var(--text);background:0 0;border:0;border-radius:5px;flex:none;place-items:center;padding:0 4px;font-size:14px;display:inline-grid;position:relative}.fb-btn:hover:not(:disabled){background:var(--hover)}.fb-btn.on{background:var(--accent-soft);color:var(--accent)}.fb-btn:disabled{opacity:.35;cursor:default}.fb-serif{font-family:Georgia,Times New Roman,serif}.fb-letter{margin-top:-4px;font-weight:700;line-height:1}.fb-color{padding-bottom:5px}.fb-color-bar{border-radius:1px;height:3px;position:absolute;bottom:4px;left:6px;right:6px;box-shadow:inset 0 0 0 1px #00000026}.fb-sep{background:var(--border);flex:none;width:1px;height:18px;margin:0 6px}.fb-select{border:1px solid var(--border-strong);background:var(--panel);height:28px;font:inherit;border-radius:5px;flex:none;padding:0 6px}.fb-font{width:130px}.fb-size{width:60px}.gc.in-range{box-shadow:inset 0 0 0 9999px var(--range-fill);outline:1px solid var(--range-line);outline-offset:-1px}.gc.active{box-shadow:inset 0 0 0 9999px var(--active-fill)}.gh-cell.col-in-range,.gc.cell-num.row-in-range{background:var(--sel-soft);color:var(--sel-text)}.cell-num{cursor:pointer}.gh-caret{width:20px;height:20px;color:var(--faint);opacity:0;background:0 0;border:0;border-radius:4px;flex:none;place-items:center;margin-left:auto;font-size:10px;display:grid}.gh-caret:hover{background:var(--overlay);color:var(--text)}.gh-cell:hover .gh-caret{opacity:1}.menu button{align-items:center;gap:8px;display:flex}.menu kbd{color:var(--faint);font:inherit;margin-left:auto;font-size:12px}.menu-sep{background:var(--border-light);height:1px;margin:4px 6px}.menu-icon svg{color:var(--muted)}.tb-note{color:var(--muted);white-space:nowrap}.tree-item.dragging{opacity:.4}.tree-item.drop-before:before,.tree-item.drop-after:after{content:"";background:var(--accent);border-radius:1px;height:2px;position:absolute;left:30px;right:6px}.tree-item.drop-before:before{top:-1px}.tree-item.drop-after:after{bottom:-1px}.tree-item[draggable=true] .tree-view-row{cursor:grab}.gallery-scroll{background:var(--bg);flex:1;min-height:0;position:relative;overflow:auto}.gallery{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;padding:16px;display:grid}.card{border:1px solid var(--border);background:var(--panel);text-align:left;border-radius:10px;flex-direction:column;gap:10px;min-height:150px;padding:16px;transition:box-shadow .15s,border-color .15s;display:flex}.card:hover{border-color:var(--border-strong);box-shadow:0 6px 18px #0f172a14}.card-title{font-size:15px;font-weight:700}.card-field{flex-direction:column;gap:3px;min-width:0;display:flex}.card-label{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex}.card-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-empty{color:var(--faint)}.card-tags{flex-wrap:wrap;gap:2px;display:flex}.page-view{flex:1;min-height:0;display:flex}.page-settings{border-right:1px solid var(--border);background:var(--panel);flex:none;width:380px;padding:16px;overflow-y:auto}.ps-section{border-bottom:1px solid var(--border-light);flex-direction:column;gap:8px;margin-bottom:16px;padding-bottom:16px;display:flex}.ps-section:last-child{border-bottom:0}.ps-label{font-weight:600}.ps-input{border:1px solid var(--border-strong);width:100%;font:inherit;resize:vertical;border-radius:6px;outline:none;padding:7px 10px}.ps-input:focus{border-color:var(--accent)}.ps-fields{border:1px solid var(--border);border-radius:8px;flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.ps-field{border-bottom:1px solid var(--border-light);cursor:default;align-items:center;gap:8px;min-height:34px;padding:0 10px;display:flex}.ps-field:last-child{border-bottom:0}.ps-field svg{color:var(--muted);flex:none}.ps-field input{accent-color:var(--accent)}.ps-field.off{color:var(--faint)}.ps-field.dragging{opacity:.4}.ps-field-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ps-required{color:var(--muted);white-space:nowrap;align-items:center;gap:4px;font-size:12px;display:flex}.ps-hint{color:var(--faint);margin:0;font-size:12px;line-height:1.5}.ps-warn{background:var(--warn-bg);color:var(--warn-text);border-radius:6px;margin:0;padding:6px 8px;font-size:12px}.ps-filter .panel{width:auto;padding:0}.ps-filter .cond-row{flex-wrap:wrap}.ps-filter .cond-field{width:100%}.ps-switch-row{color:var(--muted);align-items:center;gap:10px;display:flex}.share-url{gap:6px;display:flex}.share-url input{border:1px solid var(--border-strong);min-width:0;height:34px;font:inherit;color:var(--muted);border-radius:6px;flex:1;padding:0 8px;font-size:12px}.share-url .btn{color:var(--text);place-items:center;padding:0 10px;text-decoration:none;display:inline-grid}.seg{border:1px solid var(--border-strong);border-radius:6px;align-self:flex-start;display:inline-flex;overflow:hidden}.seg button{background:var(--panel);border:0;height:30px;padding:0 14px}.seg button+button{border-left:1px solid var(--border-strong)}.seg button.on{background:var(--accent);color:var(--on-accent)}.page-preview{background:var(--preview-bg);flex:1;min-width:0;padding:24px 16px 48px;overflow-y:auto}.preview-note{max-width:560px;color:var(--muted);text-align:center;margin:0 auto 12px;font-size:12px}@media (width<=900px){.page-view{flex-direction:column;overflow-y:auto}.page-settings{border-right:0;border-bottom:1px solid var(--border);width:auto;overflow:visible}.page-preview{overflow:visible}}.ps-default{align-items:center;gap:8px;display:flex}.tree-dash-row{padding-left:8px;font-weight:600}.tree-item[draggable=true] .tree-dash-row{cursor:grab}.menu-head{color:var(--faint);padding:8px 10px 4px;font-size:12px}.menu button:disabled{color:var(--faint);cursor:default}.menu button.menu-tall{height:auto;padding-top:6px;padding-bottom:6px}.menu small{color:var(--faint);font-size:11.5px;line-height:1.4;display:block}.menu-switch{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;display:flex}.menu-switch:hover{background:var(--hover)}.menu-switch>svg{color:var(--muted);flex:none}.menu-switch-text{flex:1;min-width:0}.tree-badge{color:var(--faint);flex:none;display:inline-flex}.tree-badge svg{width:13px;height:13px}.tree-more{color:var(--faint);font-size:16px}.tb-badge{color:var(--faint);display:inline-flex}.tb-btn:disabled{opacity:.45;cursor:not-allowed}.version-list{border:1px solid var(--border);border-radius:var(--radius);margin:12px 0 0;padding:0;list-style:none}.version-row{justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.version-row+.version-row{border-top:1px solid var(--border-light)}.version-info{flex-direction:column;gap:2px;min-width:0;display:flex}.version-row .btn{flex:none}.version-empty{border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted);margin:12px 0 0;padding:18px 14px}.nav-backdrop,.mbar,.side-close{display:none}@media (width<=760px){html,body{overscroll-behavior:none;overflow:hidden}.app{height:100dvh;overflow:hidden}.main{padding-bottom:calc(56px + env(safe-area-inset-bottom))}.mbar{z-index:40;height:calc(56px + env(safe-area-inset-bottom));padding:0 10px env(safe-area-inset-bottom) 6px;background:var(--side);border-top:1px solid var(--border);align-items:center;gap:4px;display:flex;position:fixed;bottom:0;left:0;right:0}.mbar svg{flex:none;width:20px;height:20px}.mbar-view{min-width:0;height:44px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:10px;flex:1;align-items:center;gap:10px;padding:0 10px;font-size:16px;font-weight:600;display:flex}.mbar-view>svg:first-child{color:var(--accent)}.mbar-view .chev{color:var(--muted)}.mbar-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mbar-btn,.mbar-add{border:0;flex:none;place-items:center;width:44px;height:44px;display:grid}.mbar-btn{color:var(--muted);background:0 0;border-radius:10px}.mbar-btn.on{background:var(--accent-soft);color:var(--accent)}.mbar-add{background:var(--accent);color:var(--on-accent);border-radius:50%;margin-left:4px}.mbar-view:active,.mbar-btn:active{background:var(--hover)}.sidebar{z-index:45;width:auto;height:min(84dvh,720px);padding-bottom:env(safe-area-inset-bottom);visibility:hidden;border-right:0;border-radius:16px 16px 0 0;transition:transform .22s,visibility 0s .22s;position:fixed;bottom:0;left:0;right:0;transform:translateY(105%);box-shadow:0 -12px 40px #0000004d}.app.nav-open .sidebar{visibility:visible;transition:transform .22s;transform:none}.sidebar:before{content:"";background:var(--border-strong);border-radius:2px;flex:none;align-self:center;width:40px;height:4px;margin-top:8px}.nav-backdrop{z-index:44;opacity:0;pointer-events:none;background:#080c1480;transition:opacity .2s;display:block;position:fixed;inset:0}.app.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.side-brand{padding:8px 12px 8px 18px;font-size:17px}.side-close{width:40px;height:40px;margin-left:auto;display:inline-grid}.side-search{height:40px;margin:0 14px 8px;font-size:15px}.side-tree{padding:0 10px 8px}.tree-row{gap:12px;height:46px;font-size:15px}.tree-tools{display:flex;right:2px}.tree-tools .icon-btn{width:40px;height:40px}.tree-item>.tree-row,.tree-item:hover>.tree-row{padding-right:44px}.tree-table>.tree-item:first-child>.tree-row{padding-right:84px}.side-create{padding:6px 10px}.side-user{padding:10px 16px}.toolbar{scrollbar-width:none;justify-content:flex-start;gap:8px;height:48px;padding:0 10px;overflow-x:auto}.toolbar::-webkit-scrollbar{display:none}.dash-toolbar::-webkit-scrollbar{display:none}.toolbar-left{flex:none;gap:6px;overflow:visible}.toolbar-title,.toolbar .tb-sep,.toolbar .tb-btn.tb-primary{display:none}.toolbar .tb-btn{border:1px solid var(--border);border-radius:17px;height:34px;padding:0 12px}.toolbar .tb-btn.on{border-color:#0000}.toolbar-right{flex:none;gap:8px}.toolbar-search{display:none}.toolbar-count{font-size:12px}.app.m-search .toolbar-left,.app.m-search .toolbar-right>.tb-btn{display:none}.app.m-search .toolbar-right{flex:1;min-width:0}.app.m-search .toolbar-search{flex:1;width:auto;height:36px;font-size:15px;display:flex}.format-bar{padding:0 8px}.grid-row .row-expand{vertical-align:middle;width:26px;height:26px;display:inline-grid}.grid-row:hover .row-index{display:inline}.grid-row:hover .row-check,.grid-row.selected .row-index{display:none}.grid-row.selected .row-check{vertical-align:middle;display:inline-flex}.popover{max-width:none;max-height:80dvh;padding-bottom:env(safe-area-inset-bottom);border-width:1px 0 0;border-radius:16px 16px 0 0;animation:.18s sheet-up;bottom:0;box-shadow:0 0 0 100vmax #080c1480;width:100%!important;top:auto!important;left:0!important}.menu button,.menu .menu-switch{min-height:46px;font-size:15px}.menu-head{padding-top:12px}.panel,.panel-wide{width:auto;padding:14px 14px 18px}.panel-head{font-size:16px}.panel select,.panel input:not([type=checkbox],[type=radio],[type=color]){height:40px;font-size:15px}.panel .icon-btn{flex:none;width:40px;height:40px}.panel-add{min-height:44px;font-size:15px}.field-row{height:44px;font-size:15px}.cond-row{flex-wrap:wrap;margin-bottom:12px}.cond-row .cond-field{flex:1 1 0;min-width:0}.cond-row .cond-op{flex:0 0 112px}.cond-row .cond-value,.cond-row .cond-value-placeholder,.cond-row>:nth-child(3):not(.icon-btn){flex:100%;order:5;min-width:0}.modal-backdrop{place-items:end stretch;padding:0}.modal{width:100%;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;animation:.18s sheet-up}.modal-head h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.modal input:not([type=checkbox],[type=radio],[type=color],[type=file]),.modal select{min-height:40px;font-size:15px}.modal textarea{font-size:15px}.modal .btn,.modal .btn-primary,.modal .btn-danger{height:40px;padding:0 18px}.modal .icon-btn{width:40px;height:40px}.toasts{bottom:calc(68px + env(safe-area-inset-bottom));align-items:center;width:calc(100vw - 24px)}.app .dash-toolbar{scrollbar-width:none;gap:6px;height:48px;overflow-x:auto}.app .dash-toolbar>*{white-space:nowrap;flex:none}.app .dash-toolbar .dt-spacer{display:none}}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}@media (prefers-reduced-motion:reduce){.sidebar,.nav-backdrop,.popover,.modal{transition:none;animation:none}}
