:root{color-scheme:light;--bg:#fff;--surface:#f8f9fa;--border:#dfe2e6;--fg:#24262b;--muted:#62666e;--accent:#226b51;--selected:#edf5f1;--danger:#a42c2c;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC",sans-serif;font-size:14px;background:var(--bg);color:var(--fg)}
:root[data-theme=dark]{color-scheme:dark;--bg:#1c1c1e;--surface:#262629;--border:#444448;--fg:#eeeef0;--muted:#b1b1b7;--accent:#86cbb0;--selected:#283c34;--danger:#ffaaa5}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{min-height:44px;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);cursor:pointer;white-space:nowrap}button:hover{background:var(--surface)}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}button.danger{color:var(--danger)}input,select,textarea{border:1px solid var(--border);border-radius:5px;background:var(--bg);padding:10px;min-width:0;max-width:100%;min-height:44px}textarea{resize:vertical;line-height:1.6}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,p{margin:0}h1{font-size:19px;font-weight:600}h2{font-size:18px}.app-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.app-header p{color:var(--muted);font-size:12px}.app-header .heading{flex:1;min-width:180px}.layout{display:grid;grid-template-columns:210px minmax(0,1fr);height:calc(100dvh - 78px);min-height:360px}aside{border-right:1px solid var(--border);background:var(--surface);padding:12px;overflow:auto}.table-list{display:flex;flex-direction:column;gap:4px;margin:8px 0 16px}.table-list button{text-align:left;white-space:normal;overflow-wrap:anywhere;background:transparent;border-color:transparent}.table-list button[aria-current=true]{background:var(--selected);color:var(--accent);font-weight:600}.side-actions{display:flex;flex-wrap:wrap;gap:6px}.workspace{min-width:0;display:flex;flex-direction:column;min-height:0}.toolbar,.viewbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.toolbar input{flex:1;min-width:120px}.toolbar select{max-width:220px}.viewbar button{border:none;border-radius:0;border-bottom:2px solid transparent;background:none}.viewbar button[aria-pressed=true]{border-bottom-color:var(--accent);color:var(--accent)}.viewbar .end{margin-left:auto}.table-scroll{overflow:auto;flex:1;min-height:160px;position:relative}table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;table-layout:fixed}th,td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;text-align:left;padding:0}th{position:sticky;top:0;background:var(--surface);z-index:2;font-weight:500}th button{border:0;width:100%;text-align:left;background:transparent;border-radius:0;overflow:hidden;text-overflow:ellipsis}td button.cell{display:block;width:100%;border:0;border-radius:0;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;font-weight:400;min-height:48px;padding:12px}td button.cell:hover{background:var(--selected)}tr.group th{position:static;padding:12px 16px;background:var(--selected)}.row-number{width:52px;color:var(--muted);text-align:center;padding:14px 8px;font-size:12px}.compact td button.cell{padding:8px;min-height:44px}.comfortable td button.cell{padding:18px 12px;min-height:64px}.table-footer{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap}.empty{padding:40px 24px;line-height:1.7;max-width:640px}.empty p{margin:12px 0;color:var(--muted)}.error{color:var(--danger)}.empty-inline{padding:32px;color:var(--muted)}dialog{width:min(660px,calc(100% - 24px));padding:0;border:1px solid var(--border);border-radius:8px;max-height:calc(100dvh - 24px);background:var(--bg);color:var(--fg)}dialog::backdrop{background:#0005}dialog form{display:flex;flex-direction:column;max-height:calc(100dvh - 26px)}dialog header,dialog footer{padding:12px 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border)}dialog header h2{flex:1}dialog footer{border:0;border-top:1px solid var(--border);justify-content:flex-end;padding-bottom:max(12px,env(safe-area-inset-bottom))}#dialog-body{overflow:auto;padding:20px;min-height:0}label.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}.hint{color:var(--muted);line-height:1.7;margin:8px 0 16px}.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline>*{min-width:0}.check{display:flex;align-items:center;gap:8px;min-height:44px}.check input{width:18px;min-height:18px}.field-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}.field-row .label{flex:1;min-width:0;overflow-wrap:anywhere}#dialog-error{color:var(--danger);padding:0 20px 12px}#notice{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);padding:10px 16px;background:var(--fg);color:var(--bg);border-radius:6px;max-width:calc(100% - 24px);display:none;z-index:10}.preview{color:var(--danger);font-size:12px}.hidden{display:none}.board{display:flex;gap:16px;padding:16px;overflow:auto;flex:1}.board-column{flex:0 0 260px;min-width:0;background:var(--surface);padding:12px}.board-column h2{font-size:14px;margin-bottom:12px}.record-card{white-space:normal;text-align:left;width:100%;display:block;margin-bottom:8px;overflow-wrap:anywhere}.record-card p{font-size:12px;color:var(--muted);margin-top:6px}.archived{color:var(--muted);text-decoration:line-through}
@media(max-width:640px){.app-header{padding:12px;gap:8px}.app-header .heading{min-width:140px}.layout{display:flex;flex-direction:column;height:calc(100dvh - 110px)}aside{padding:8px 12px;border:0;border-bottom:1px solid var(--border);overflow:visible}.table-list{flex-direction:row;overflow:auto;margin:0 0 6px}.table-list button{white-space:nowrap}.side-actions{gap:6px}.workspace{flex:1}.toolbar,.viewbar{padding:8px 12px}.toolbar input{width:100%;flex-basis:100%}.toolbar select{flex:1}.table-footer{padding:8px 12px}dialog{width:calc(100% - 12px);max-height:calc(100dvh - 12px)}#dialog-body{padding:14px}.field-row{flex-wrap:wrap}.empty{padding:24px 16px}.app-header button{padding:8px}.board-column{flex-basis:240px}}

/* Space is the working table itself. Use an intrinsic bounded height so Bridge
   sizing does not depend on the iframe viewport and cannot form a resize loop. */
html[data-container="embedded_card"] #app{height:760px;display:flex;flex-direction:column;min-width:0}
html[data-container="embedded_card"] .layout{display:flex;flex-direction:column;height:auto;min-height:0;flex:1}
html[data-container="embedded_card"] aside{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px;border-right:0;border-bottom:1px solid var(--border);overflow:visible;flex-shrink:0}
html[data-container="embedded_card"] .table-list{flex:1;min-width:0;display:flex;flex-direction:row;overflow:auto;margin:0}
html[data-container="embedded_card"] .table-list button{white-space:nowrap}
html[data-container="embedded_card"] .workspace{flex:1}
html[data-container="embedded_card"] .empty{padding:16px}
html[data-container="modal_dialog"] .layout{height:480px;min-height:360px}
@media(max-width:640px){html[data-container="embedded_card"] #app{height:800px}html[data-container="embedded_card"] .table-list{flex-basis:100%}}

.permission-member{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.permission-member>div{min-width:0;overflow-wrap:anywhere}.permission-member strong,.permission-member span{display:block}.permission-member div span{color:var(--muted);font-size:12px}.permission-member select{max-width:160px}.record-details{margin:0}.record-details dt{color:var(--muted);margin-top:16px}.record-details dd{margin:6px 0;white-space:pre-wrap;overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:400px){.permission-member{flex-wrap:wrap}.permission-member label{width:100%}.permission-member select{width:100%;max-width:none}}
