:root{--text:#24292f;--bg:#fff;--border:#d0d7de;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:16px/1.5 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}.app-container{flex-direction:column;min-height:100vh;display:flex}.app-main{flex-direction:column;flex:1;display:flex}a{color:#1f6feb}.auth-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{border:1px solid #d0d7de;border-radius:10px;flex-direction:column;gap:.5rem;width:min(360px,100%);padding:2rem;display:flex}.auth-card h1{margin:0 0 .5rem;font-size:1.4rem}.auth-card label{font-size:.85rem;font-weight:600}.auth-card input{font:inherit;border:1px solid #d0d7de;border-radius:6px;padding:.55rem .7rem}.auth-card button{color:#fff;font:inherit;cursor:pointer;background:#1f6feb;border:0;border-radius:6px;margin-top:.75rem;padding:.6rem}.auth-card button:disabled{opacity:.6;cursor:progress}.auth-error{color:#b42318;margin:.25rem 0 0;font-size:.85rem}.auth-notice{color:#7a4100;background:#fff4e5;border-radius:6px;margin:0 0 .5rem;padding:.5rem .7rem;font-size:.85rem}.auth-alt{text-align:center;margin:.5rem 0 0;font-size:.85rem}.console-page{justify-content:center;min-height:100vh;padding:2rem 1.5rem;display:flex}.console-layout{flex-direction:column;gap:1.5rem;width:min(880px,100%);display:flex}.console-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.console-header h1{margin:0;font-size:1.3rem}.console-columns{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=640px){.console-columns{grid-template-columns:1fr}}.console-card{border:1px solid #d0d7de;border-radius:10px;flex-direction:column;gap:.6rem;padding:1.5rem;display:flex}.console-card h2{margin:0;font-size:1rem}.console-card label{font-size:.85rem;font-weight:600}.console-card textarea{resize:vertical;border:1px solid #d0d7de;border-radius:6px;min-height:160px;padding:.6rem .7rem;font:.85rem/1.4 ui-monospace,SFMono-Regular,monospace}.console-card button{color:#fff;font:inherit;cursor:pointer;background:#1f6feb;border:0;border-radius:6px;align-self:flex-start;padding:.6rem 1.5rem}.console-card button:disabled{opacity:.6;cursor:progress}.console-error{color:#b42318;margin:0;font-size:.85rem}.console-notice{color:#7a4100;background:#fff4e5;border-radius:6px;margin:0;padding:.5rem .7rem;font-size:.85rem}.console-result{white-space:pre-wrap;word-break:break-word;background:#f6f8fa;border-radius:6px;max-height:320px;margin:0;padding:.75rem;font:.8rem/1.4 ui-monospace,SFMono-Regular,monospace;overflow:auto}.console-empty{color:#57606a;margin:0;font-size:.85rem}.entities-card{flex-direction:column;gap:1rem;display:flex}.entities-hint{color:#57606a;background:#f6f8fa;border-radius:8px;margin:0;padding:.75rem 1rem;font-size:.8rem;line-height:1.5}.entities-form{flex-direction:column;gap:.5rem;display:flex}.entities-form label{font-size:.85rem;font-weight:600}.entities-form textarea{resize:vertical;border:1px solid #d0d7de;border-radius:6px;min-height:140px;padding:.6rem .7rem;font:.85rem/1.4 ui-monospace,SFMono-Regular,monospace}.entities-form select{font:inherit;border:1px solid #d0d7de;border-radius:6px;align-self:flex-start;padding:.5rem .6rem}.entities-form button{color:#fff;font:inherit;cursor:pointer;padding:.6rem;background:#1f6feb;border:0;border-radius:6px;align-self:flex-start;margin-top:.25rem;padding-inline:1.5rem}.entities-form button:disabled{opacity:.6;cursor:progress}.entities-error{color:#b42318;margin:.25rem 0 0;font-size:.85rem}.entities-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.entities-list li{border:1px solid #d0d7de;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .8rem;font-size:.85rem;display:flex}.entity-info{align-items:center;gap:.75rem;display:flex}.entity-name{font-weight:600}.entities-list .table-name{color:#57606a}.entity-meta{align-items:center;gap:.5rem;display:flex}.badge{border-radius:12px;padding:.15rem .55rem;font-size:.75rem;font-weight:600;line-height:1.2;display:inline-block}.badge-public{color:#1a7f37;background:#dafbe1;border:1px solid #4ac26b}.badge-private{color:#57606a;background:#f6f8fa;border:1px solid #d0d7de}.badge-source{align-items:center;gap:.25rem;font-weight:500;display:inline-flex}.badge-source-user{color:#0969da;background:#ddf4ff;border:1px solid #54aeff}.badge-source-saas{color:#8250df;background:#fbefff;border:1px solid #d2a8ff}.entities-console-note{color:#57606a;margin:0;font-size:.85rem}.data-browser{flex-direction:column;gap:1.25rem;width:100%;display:flex}.data-browser-header{border-bottom:1px solid #d0d7de;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:.75rem;display:flex}.data-browser-selector{align-items:center;gap:.75rem;display:flex}.data-browser-selector label{color:#24292f;font-size:.9rem;font-weight:600}.data-browser-select{font:inherit;color:#24292f;cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:6px;min-width:180px;padding:.5rem .75rem;font-size:.9rem}.data-browser-select:focus{border-color:#0969da;outline:none;box-shadow:0 0 0 3px #0969da33}.data-browser-actions{align-items:center;gap:.75rem;display:flex}.data-table-container{background:#fff;border:1px solid #d0d7de;border-radius:8px;width:100%;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.85rem}.data-table th,.data-table td{white-space:nowrap;border-bottom:1px solid #e1e4e8;padding:.65rem .85rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background-color:#f6f8fa}.data-table th{color:#57606a;-webkit-user-select:none;user-select:none;background:#f6f8fa;font-weight:600}.sortable-th{cursor:pointer;transition:background-color .15s}.sortable-th:hover{color:#24292f;background-color:#eaedf0}.th-content{align-items:center;gap:.35rem;display:inline-flex}.sort-icon{color:#8c959f;font-size:.75rem}.sort-icon.active{color:#0969da;font-weight:700}.col-actions{text-align:right;width:140px}.row-actions{justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.cell-id{color:#0969da;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8rem}.cell-null{color:#8c959f;font-size:.8rem;font-style:italic}.cell-json{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.75rem;display:block;overflow:hidden}.data-pagination{color:#57606a;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0;font-size:.85rem;display:flex}.data-pagination-controls{align-items:center;gap:.5rem;display:flex}.data-pagination-page-size{align-items:center;gap:.35rem;display:flex}.page-size-select{background:#fff;border:1px solid #d0d7de;border-radius:4px;padding:.25rem .5rem;font-size:.85rem}.empty-state{text-align:center;color:#57606a;padding:2.5rem 1rem}.empty-state h3{color:#24292f;margin:0 0 .5rem;font-size:1rem}.empty-state p{margin:0;font-size:.85rem}.modal-tabs{border-bottom:1px solid #d0d7de;gap:.5rem;margin-bottom:1rem;display:flex}.modal-tab-btn{font:inherit;color:#57606a;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.5rem .75rem;font-size:.85rem}.modal-tab-btn.active{color:#0969da;border-bottom-color:#0969da;font-weight:600}.json-inspector-view{flex-direction:column;gap:.75rem;display:flex}.json-pre{white-space:pre-wrap;word-break:break-all;background:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;max-height:320px;margin:0;padding:.75rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8rem;overflow:auto}.edit-record-form{flex-direction:column;gap:.75rem;max-height:360px;padding-right:.25rem;display:flex;overflow-y:auto}.form-field-group{flex-direction:column;gap:.25rem;display:flex}.form-field-group label{color:#24292f;font-size:.85rem;font-weight:600}.field-type-badge{color:#57606a;margin-left:.35rem;font-size:.75rem;font-weight:400}.form-field-group input,.form-field-group textarea,.form-field-group select{font:inherit;border:1px solid #d0d7de;border-radius:6px;padding:.5rem;font-size:.85rem}.form-field-group textarea{resize:vertical;min-height:80px;font-family:ui-monospace,SFMono-Regular,monospace}.modal-header-row{justify-content:space-between;align-items:center;display:flex}.close-modal-btn{cursor:pointer;color:#57606a;background:0 0;border:none;padding:.25rem;font-size:1.25rem;line-height:1}.close-modal-btn:hover{color:#24292f}.success-banner{color:#1a7f37;background:#dafbe1;border:1px solid #4ac26b;border-radius:6px;padding:.5rem .75rem;font-size:.85rem}.projects-page{justify-content:center;min-height:100vh;padding:2rem 1.5rem;display:flex}.projects-layout{flex-direction:column;gap:1.5rem;width:min(720px,100%);display:flex}.projects-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.projects-header h1{margin:0;font-size:1.4rem}.projects-header button{font:inherit;cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:6px;padding:.5rem .9rem}.projects-card{border:1px solid #d0d7de;border-radius:10px;padding:1.5rem}.projects-card h2{margin:0 0 1rem;font-size:1.1rem}.projects-form{flex-direction:column;gap:.5rem;display:flex}.projects-form label{font-size:.85rem;font-weight:600}.projects-form input{font:inherit;border:1px solid #d0d7de;border-radius:6px;padding:.55rem .7rem}.projects-form button{color:#fff;font:inherit;cursor:pointer;padding:.6rem;background:#1f6feb;border:0;border-radius:6px;align-self:flex-start;margin-top:.75rem;padding-inline:1.5rem}.projects-form button:disabled{opacity:.6;cursor:progress}.projects-error{color:#b42318;margin:.25rem 0 0;font-size:.85rem}.projects-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.projects-list li a{color:inherit;border:1px solid #d0d7de;border-radius:8px;justify-content:space-between;gap:1rem;padding:.75rem 1rem;text-decoration:none;display:flex}.projects-list li a:hover{background:#f6f8fa}.projects-list .slug{color:#57606a;font-size:.85rem}.projects-empty{color:#57606a;margin:0;font-size:.9rem}.section-subtitle{color:#57606a;margin:.25rem 0 0;font-size:.85rem}.button-primary{color:#fff;font:inherit;cursor:pointer;background:#1f6feb;border:0;border-radius:6px;justify-content:center;align-items:center;gap:.35rem;padding:.5rem 1rem;font-size:.85rem;display:inline-flex}.button-primary:hover{background:#0969da}.button-primary:disabled{opacity:.6;cursor:progress}.button-secondary{color:#24292f;font:inherit;cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:6px;padding:.5rem 1rem;font-size:.85rem}.button-secondary:hover{background:#f6f8fa}.button-danger{color:#cf222e;font:inherit;cursor:pointer;background:#fff;border:1px solid #ff8182;border-radius:6px;padding:.4rem .8rem;font-size:.8rem}.button-danger:hover{background:#ffebe9}.button-danger:disabled{opacity:.6;cursor:not-allowed}.button-sm{padding:.25rem .5rem;font-size:.75rem}.table-responsive{width:100%;margin-top:.75rem;overflow-x:auto}.api-keys-table{border-collapse:collapse;text-align:left;width:100%;font-size:.85rem}.api-keys-table th,.api-keys-table td{border-bottom:1px solid #d0d7de;padding:.65rem .75rem}.api-keys-table th{color:#57606a;background:#f6f8fa;font-weight:600}.api-keys-table .row-revoked td{color:#8c959f}.key-prefix{background:#f6f8fa;border:1px solid #e1e4e8;border-radius:4px;padding:.15rem .35rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.8rem}.badge-active{color:#1a7f37;background:#dafbe1;border:1px solid #4ac26b}.badge-expired{color:#9a6700;background:#fff8c5;border:1px solid #d4a72c}.badge-revoked{color:#cf222e;background:#ffebe9;border:1px solid #ff8182}.text-muted{color:#57606a;font-size:.8rem}.modal-backdrop{z-index:1000;background:#1b1f2480;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:12px;flex-direction:column;gap:1rem;width:100%;max-width:480px;padding:1.5rem;display:flex;box-shadow:0 8px 24px #8c959f33}.modal-content h3{margin:0;font-size:1.2rem}.modal-description{color:#57606a;margin:0;font-size:.85rem;line-height:1.4}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1rem;display:flex}.alert-warning{color:#734f00;background:#fff8c5;border:1px solid #d4a72c;border-radius:6px;padding:.75rem 1rem;font-size:.85rem;line-height:1.4}.key-reveal-container{flex-direction:column;gap:.5rem;display:flex}.key-reveal-input{box-sizing:border-box;background:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;width:100%;padding:.6rem .75rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.85rem}.copy-button{width:100%}.project-detail-tabs{border-bottom:2px solid #e1e4e8;gap:.5rem;display:flex}.project-detail-tabs .tab-btn{font:inherit;color:#57606a;cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-2px;padding:.65rem 1rem;font-size:.95rem;font-weight:500;transition:color .15s,border-color .15s}.project-detail-tabs .tab-btn:hover{color:#24292f}.project-detail-tabs .tab-btn.active{color:#0969da;border-bottom-color:#0969da;font-weight:600}.app-footer{color:#57606a;background:#f6f8fa;border-top:1px solid #d0d7de;justify-content:center;align-items:center;margin-top:auto;padding:.65rem 1.25rem;font-size:.8rem;display:flex}.backend-version-badge{align-items:center;gap:.5rem;font-family:ui-monospace,SFMono-Regular,SF Pro Text,monospace;display:inline-flex}.status-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.status-online{background-color:#2da44e;box-shadow:0 0 0 2px #2da44e33}.status-offline{background-color:#cf222e;box-shadow:0 0 0 2px #cf222e33}.status-loading{background-color:#9a6700;animation:1.5s infinite status-pulse}@keyframes status-pulse{0%{opacity:.4}50%{opacity:1}to{opacity:.4}}.version-separator{color:#d0d7de}.version-refresh-btn{cursor:pointer;color:#57606a;background:0 0;border:none;align-items:center;padding:0 .25rem;font-size:.75rem;display:inline-flex}.version-refresh-btn:hover{color:#0969da}
