:root{--navy: #071a2f;--blue: #0058a3;--blue-dark: #003b70;--yellow: #ffda1a;--paper: #eef3f7;--line: #d2dce5;--ink: #102033;--muted: #617487;--green: #16835b;--danger: #b42318}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{margin:0;color:var(--ink);background:var(--paper);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.data-catalog-page{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.catalog-header{flex:0 0 auto;min-height:72px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:10px max(20px,calc((100vw - 1480px)/2));border-bottom:1px solid var(--line);background:#fff}.back-link{justify-self:start;padding:9px 12px;border:1px solid #c7d3de;border-radius:8px;color:var(--navy);text-decoration:none;font-size:.78rem;font-weight:800}.header-title{text-align:center}.header-title p{margin:0;color:var(--muted);font-size:.62rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.header-title h1{margin:2px 0 0;font-size:1.15rem}.header-actions{justify-self:end;display:flex;gap:8px}.button{min-height:38px;padding:0 13px;border-radius:8px;font-size:.76rem;font-weight:820}.button--primary{border:1px solid var(--blue);color:#fff;background:var(--blue)}.button--primary:hover{background:var(--blue-dark)}.button--secondary{border:1px solid #bdcad5;color:var(--navy);background:#fff}.catalog-main{width:min(1480px,calc(100% - 36px));flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:11px;margin:0 auto;padding:13px 0 11px;overflow:hidden}.summary-strip{flex:0 0 auto;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.summary-card{min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.summary-card span{display:block;overflow:hidden;color:var(--muted);font-size:.61rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.summary-card strong{display:block;margin-top:3px;color:var(--navy);font-size:1.05rem}.summary-card--warning{border-color:#e3cb88;background:#fffaf0}.summary-card--warning strong{color:#805400}.catalog-browser{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 10px 30px #071a2f12}.catalog-toolbar{flex:0 0 auto;min-height:64px;display:flex;align-items:end;gap:9px;padding:10px 13px;border-bottom:1px solid var(--line);background:#fff}.catalog-toolbar>label:not(.search-field){width:150px;color:var(--muted);font-size:.59rem;font-weight:850;text-transform:uppercase}.catalog-toolbar select{width:100%;display:block;margin-top:4px;padding:7px 25px 7px 8px;border:1px solid #c3d0db;border-radius:7px;color:var(--ink);background:#fff;font-size:.7rem;text-transform:none}.search-field{min-height:40px;flex:1;display:flex;align-items:center;gap:9px;padding:0 11px;border:1px solid #aebdca;border-radius:8px;background:#fff}.search-field:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #0058a31a}.search-field input{min-width:0;flex:1;border:0;outline:0;color:var(--ink);background:transparent;font-size:.8rem}.search-field kbd{padding:3px 5px;border:1px solid #d2dce5;border-radius:4px;color:#718293;background:#f7f9fb;font-size:.56rem}.text-button{min-height:34px;border:0;color:var(--blue);background:transparent;font-size:.69rem;font-weight:800}.catalog-notice{flex:0 0 auto;min-height:0;padding:0 14px;color:var(--muted);font-size:.68rem;line-height:0;opacity:0;transition:.15s}.catalog-notice.visible{min-height:31px;padding-top:8px;padding-bottom:8px;border-bottom:1px solid var(--line);line-height:1.35;opacity:1}.catalog-notice.success{color:#0d684b;background:#effaf5}.catalog-notice.error{color:#a02b22;background:#fff3f2}.catalog-layout{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(330px,390px) minmax(0,1fr)}.object-panel{min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--line);background:#fbfcfd}.object-heading{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line);color:var(--muted);font-size:.68rem;font-weight:800}.object-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.description-filter{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;cursor:pointer}.description-filter input{margin:0;accent-color:var(--blue)}.remove-selected{min-height:30px;padding:0 9px;border:1px solid #e0b4b0;border-radius:6px;color:var(--danger);background:#fff;font-size:.63rem;font-weight:800}.remove-selected:disabled{border-color:#dce3e9;color:#9ba9b5;cursor:default}.object-list{flex:1 1 auto;min-height:0;overflow-y:auto}.object-row{display:grid;grid-template-columns:27px minmax(0,1fr);border-bottom:1px solid #e4e9ee;background:#fff}.object-row.active{background:#edf6fc;box-shadow:inset 4px 0 var(--blue)}.object-row.selected{background:#fff9df}.row-check{display:grid;place-items:start center;padding-top:16px}.row-check input{accent-color:var(--blue)}.row-main{min-width:0;padding:12px 12px 12px 3px;border:0;color:var(--ink);background:transparent;text-align:left}.row-top,.row-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}.row-top strong{min-width:0;overflow:hidden;font-size:.76rem;text-overflow:ellipsis;white-space:nowrap}.type-badge,.tag,.sensitivity{flex:0 0 auto;padding:3px 6px;border-radius:999px;font-size:.55rem;font-weight:850}.type-view{color:#65389a;background:#f0e8fa}.type-table{color:#116149;background:#e8f6f1}.type-external{color:#805400;background:#fff1bd}.row-meta{display:block;margin-top:4px;overflow:hidden;color:var(--muted);font-size:.63rem;text-overflow:ellipsis;white-space:nowrap}.row-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.tag{color:#255d8a;background:#e6f1f9}.row-foot{margin-top:7px;color:#718293;font-size:.58rem}.load-more{width:calc(100% - 20px);min-height:36px;margin:10px;border:1px solid #c8d4de;border-radius:7px;color:var(--blue);background:#fff;font-size:.68rem;font-weight:800}.object-detail{min-width:0;min-height:0;overflow-y:auto;background:#fff}.detail-inner{padding:22px 25px 34px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.detail-kicker{margin:0 0 5px;color:var(--blue);font-size:.61rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.detail-head h2{margin:0;overflow-wrap:anywhere;color:var(--navy);font-size:1.5rem;letter-spacing:-.03em}.object-id{display:block;margin-top:6px;color:var(--muted);font:10.5px/1.5 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.icon-button{min-height:35px;padding:0 10px;border:1px solid #c8d4de;border-radius:7px;color:var(--navy);background:#fff;font-size:.68rem;font-weight:800}.icon-button.danger{border-color:#e0b4b0;color:var(--danger)}.detail-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.sensitivity{color:#765200;background:#fff3c8}.favorite{color:#8a6500;background:#fff7cf}.meta-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:17px 0}.meta-card{min-width:0;padding:10px;border:1px solid #dce4eb;border-radius:8px;background:#fafcfd}.meta-card span{display:block;color:var(--muted);font-size:.56rem;font-weight:800;text-transform:uppercase}.meta-card strong{display:block;margin-top:4px;overflow:hidden;font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.description-card,.tag-editor,.lineage-section,.fields-section,.sql-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:9px}.section-heading h3{margin:0;color:var(--navy);font-size:.78rem}.section-heading p{margin:2px 0 0;color:var(--muted);font-size:.62rem}.description-card>p{margin:0;color:#40586d;font-size:.75rem;line-height:1.55}.description-edit-button{width:34px;min-height:34px;display:grid;flex:0 0 auto;place-items:center;padding:0;font-size:1rem;line-height:1}.description-input{width:100%;min-height:108px;resize:vertical;padding:10px 11px;border:1px solid #9eb3c4;border-radius:8px;color:var(--ink);background:#fff;font:inherit;font-size:.75rem;line-height:1.55}.description-input:focus{border-color:var(--blue);outline:3px solid rgba(25,110,166,.14)}.description-editor-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:8px}.tag-editor-row{display:flex;gap:7px}.tag-editor input,.field-search{width:100%;min-width:0;padding:8px 9px;border:1px solid #bdcad5;border-radius:7px;color:var(--ink);background:#fff;font-size:.7rem}.tag-editor button{flex:0 0 auto}.lineage-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px}.lineage-link{min-width:0;padding:9px 10px;border:1px solid #dce4eb;border-radius:8px;color:#284b66;background:#f7fafc;text-align:left}.lineage-link strong,.lineage-link small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lineage-link strong{font-size:.67rem}.lineage-link small{margin-top:3px;color:var(--muted);font-size:.57rem}.field-table-wrap{max-height:480px;overflow:auto;border:1px solid #dce4eb;border-radius:8px}.field-table{width:100%;border-collapse:collapse}.field-table th{position:sticky;top:0;z-index:1;padding:8px 9px;color:var(--muted);background:#f3f6f8;font-size:.56rem;text-align:left;text-transform:uppercase}.field-table td{padding:9px;border-top:1px solid #e5eaee;vertical-align:top;font-size:.66rem}.field-name{color:#234660;font:10.5px/1.45 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.field-description{min-width:230px;color:#40586d;line-height:1.45}.field-tags-input{width:170px;padding:6px 7px;border:1px solid #ccd7e0;border-radius:6px;font-size:.62rem}.fields-section summary{display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;color:var(--navy);list-style:none}.fields-section summary::-webkit-details-marker{display:none}.fields-section summary strong,.fields-section summary small{display:block}.fields-section summary strong{font-size:.78rem}.fields-section summary small{margin-top:2px;color:var(--muted);font-size:.62rem;font-weight:500}.details-toggle{font-size:1rem;font-weight:800;transition:transform .16s ease}.fields-section[open] .details-toggle{transform:rotate(45deg)}.fields-section-body{display:grid;gap:9px;padding-top:10px}.sql-section summary{cursor:pointer;color:var(--navy);font-size:.74rem;font-weight:800}.sql-section pre{max-height:430px;overflow:auto;padding:13px;border-radius:8px;color:#d8e9f8;background:#091827;font:10.5px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap}.empty-state{min-height:100%;display:grid;place-items:center;align-content:center;padding:30px;color:var(--muted);text-align:center}.empty-state span{width:52px;height:52px;display:grid;place-items:center;margin-bottom:12px;border-radius:13px;color:var(--blue);background:#e9f3fa;font-size:1.2rem;font-weight:900}.empty-state h2,.empty-state h3{margin:0;color:var(--navy);font-size:1rem}.empty-state p{max-width:460px;margin:7px 0 14px;font-size:.72rem;line-height:1.5}.catalog-modal[hidden]{display:none}.catalog-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:18px;background:#071a2fa3}.catalog-modal-card{width:min(860px,100%);max-height:calc(100dvh - 36px);display:flex;flex-direction:column;overflow:hidden;border-radius:16px;background:#fff;box-shadow:0 28px 90px #071a2f57}.catalog-modal-head{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 21px 13px;border-bottom:1px solid var(--line)}.catalog-modal-head p{margin:0 0 3px;color:var(--blue);font-size:.6rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.catalog-modal-head h2{margin:0;color:var(--navy);font-size:1.25rem}.modal-close{border:0;color:#637789;background:transparent;font-size:1.8rem;line-height:1}.catalog-object-form{min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:17px 21px 20px;overflow-y:auto}.catalog-object-form label{min-width:0;color:#40566a;font-size:.67rem;font-weight:800}.catalog-object-form label>span{color:var(--muted);font-weight:600}.catalog-object-form input,.catalog-object-form select,.catalog-object-form textarea{width:100%;margin-top:5px;padding:8px 9px;border:1px solid #b8c7d3;border-radius:7px;color:var(--ink);background:#fff;font:inherit;font-size:.72rem}.catalog-object-form textarea{resize:vertical;line-height:1.5}.catalog-object-form .form-code{font-family:ui-monospace,Consolas,monospace}.form-wide{grid-column:1 / -1}.new-fields{padding-top:5px}.new-fields-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.new-fields-head h3{margin:0;color:var(--navy);font-size:.8rem}.new-fields-head p{margin:2px 0 0;color:var(--muted);font-size:.64rem}.new-field-list{display:grid;gap:7px}.new-field-row{display:grid;grid-template-columns:minmax(140px,1fr) 120px minmax(180px,1.5fr) 34px;gap:7px;align-items:center}.new-field-row input,.new-field-row select{margin:0}.remove-new-field{width:34px;min-height:34px;border:1px solid #e0b4b0;border-radius:7px;color:var(--danger);background:#fff}.form-status{min-height:18px;margin:0;color:var(--danger);font-size:.69rem}.catalog-modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:3px}.toast{position:fixed;right:18px;bottom:18px;z-index:90;max-width:360px;padding:10px 13px;border-radius:8px;color:#fff;background:var(--navy);box-shadow:0 12px 35px #071a2f40;font-size:.72rem}.toast.success{background:#116149}.toast.error{background:#9c332b}@media(max-width:1080px){.summary-strip{grid-template-columns:repeat(3,1fr)}.catalog-toolbar{flex-wrap:wrap}.search-field{flex-basis:100%}.catalog-toolbar>label:not(.search-field){flex:1}.meta-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.catalog-header{grid-template-columns:auto 1fr}.header-title{text-align:left}.header-actions{grid-column:1 / -1;justify-self:stretch}.header-actions .button{flex:1}.catalog-main{width:min(100% - 20px,1480px);overflow-y:auto}.summary-strip{grid-template-columns:repeat(2,1fr)}.catalog-browser{flex:none;overflow:visible}.catalog-layout{display:block}.object-panel{height:390px;border-right:0;border-bottom:1px solid var(--line)}.object-detail{max-height:none;overflow:visible}.detail-inner{padding:18px 15px 28px}.detail-head{flex-direction:column}.detail-actions{justify-content:flex-start}.meta-grid{grid-template-columns:repeat(2,1fr)}.catalog-object-form{grid-template-columns:1fr;padding:15px}.form-wide{grid-column:auto}.new-field-row{grid-template-columns:1fr 105px 34px}.new-field-row input:nth-child(3){grid-column:1 / -1;grid-row:2}}
