.odf-view .intro,.odf-view .metrics{display:none}
.odf-view .records-panel{margin-top:24px}
.odf-heading{display:flex;justify-content:space-between;gap:16px;margin-bottom:18px}
.odf-heading-actions{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.odf-heading-actions label{display:grid;gap:4px}.odf-heading-actions label span{font-size:11px;font-weight:700;color:#64748b}.odf-heading-actions select{height:34px;min-width:150px;border:1px solid #dbe1e8;border-radius:8px;padding:0 9px;background:#fff;color:#111827;font-size:13px}
.odf-add,.odf-view .odf-add.primary{display:inline-flex;align-items:center;gap:5px;align-self:flex-end;white-space:nowrap;height:34px;padding:0 6px;border:0;background:transparent;color:#b45309;box-shadow:none}.odf-add:hover,.odf-view .odf-add.primary:hover{background:transparent;color:#8f3f07}.odf-add .icon{width:16px;height:16px}
.odf-print{width:34px;height:34px;border:1px solid #e5b58f;border-radius:8px;background:#fff;color:#a94c10;display:grid;place-items:center;cursor:pointer}.odf-print:hover,.odf-print:focus-visible{background:#fff3e8;border-color:#df8547}.odf-print .icon{width:17px;height:17px}.odf-print[hidden]{display:none}
.odf-print:disabled{display:grid;opacity:.48;cursor:not-allowed;background:#fff;color:#8b7565;border-color:#ddcfc4}
.odf-records{display:flex;gap:10px;overflow:auto;padding:2px 2px 12px;margin-bottom:12px}
.odf-record-card{min-width:210px;border:1px solid #dbe1e8;border-radius:11px;background:#fff;padding:0;text-align:left;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;overflow:hidden;cursor:pointer}
.odf-record-card[data-reference]{display:grid;gap:4px;padding:11px 13px}
.odf-record-select{min-width:0;border:0;background:transparent;padding:11px 13px;text-align:left;display:grid;gap:4px;cursor:pointer}
.odf-record-card.odf-record-select{border:1px solid #dbe1e8;background:#fff;grid-template-columns:1fr;align-content:center}.odf-record-card.odf-record-select.selected{border-color:#ff8a1f;background:#fffaf4}
.odf-record-actions{display:flex;gap:4px;padding-right:8px}.odf-icon-action{width:34px;height:34px;border:1px solid #dbe1e8;border-radius:8px;background:#fff;color:#475569;display:grid;place-items:center;cursor:pointer}.odf-icon-action .icon{width:16px;height:16px}.odf-icon-action:hover,.odf-icon-action:focus-visible{border-color:#ff8a1f;color:#b45309;background:#fff7ed}.odf-icon-action.danger:hover,.odf-icon-action.danger:focus-visible{border-color:#dc2626;color:#dc2626;background:#fef2f2}.odf-icon-action:disabled{opacity:.55;cursor:wait}
.odf-record-card strong{font-size:13px}.odf-record-card span{font-size:11px;color:#64748b}.odf-record-card.selected{border-color:#ff8a1f;box-shadow:0 0 0 2px rgba(255,138,31,.15);background:#fffaf4}
.odf-loading,.odf-load-error{margin:4px;color:#64748b;font-size:13px}.odf-load-error{color:#b42318}
.odf-empty-location{min-height:180px;border:1px dashed #dbe1e8;border-radius:12px;display:grid;place-content:center;text-align:center;gap:6px;color:#64748b}.odf-empty-location strong{font-size:18px;color:#1f2937}.odf-empty-location span{font-size:13px}
.odf-meta{border:1px solid #e4e8ee;border-radius:12px;padding:13px 15px;margin-bottom:14px;display:flex;gap:8px 16px;align-items:baseline;flex-wrap:wrap}.odf-meta strong{font-size:15px}.odf-meta span,.odf-meta p{font-size:12px;color:#64748b}.odf-meta p{width:100%;margin:0}
.odf-heading h2{margin:0 0 5px;font-size:24px}
.odf-heading p{margin:0;color:var(--muted,#64748b)}
.odf-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-bottom:16px}
.odf-search input{width:100%;height:44px;border:1px solid #dbe1e8;border-radius:10px;padding:0 14px;font:inherit;background:#fff;color:#111827}
.odf-result{min-height:68px;border:1px solid #f0c89c;background:#fff8ef;border-radius:12px;padding:12px 14px;margin-bottom:16px;display:flex;align-items:center;gap:12px}
.odf-result>strong,.odf-result div{display:flex;flex-direction:column;gap:4px}.odf-result span{font-size:13px;color:#536071}
.odf-result-swatch{flex:0 0 38px;width:38px;height:38px;border-radius:8px;background:var(--fiber);border:1px solid rgba(15,23,42,.2)}
.odf-port-summary{width:100%;display:grid;gap:8px}.odf-port-summary dl{margin:0;display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:8px 18px}.odf-port-summary dl div{display:grid;gap:2px}.odf-port-summary dt{font-size:11px;font-weight:700;color:#64748b}.odf-port-summary dd{margin:0;font-size:13px;font-weight:600;color:#1f2937;overflow-wrap:anywhere}.odf-port-summary small{font-size:11px;color:#b45309}
.odf-grid{display:grid;grid-template-columns:repeat(4,minmax(330px,1fr));gap:28px;overflow:auto;padding:4px 4px 12px}
.odf-grid.odf-size-12{grid-template-columns:minmax(330px,420px)}.odf-grid.odf-size-48{grid-template-columns:repeat(4,minmax(330px,1fr))}.odf-grid.odf-size-216{grid-template-columns:max-content}
.odf-column{display:grid;gap:18px;align-content:start}
.odf-block{display:grid;grid-template-columns:repeat(6,minmax(48px,1fr));gap:2px}
.odf-column-216{display:block;width:max-content}.odf-block.odf-block-216{grid-template-columns:repeat(6,48px) 24px repeat(6,48px) 24px repeat(6,48px) 24px repeat(6,48px)}
.odf-core{height:44px;border:1px solid #111827;border-radius:1px;background:var(--fiber);color:var(--fiber-text);font-weight:800;font-size:13px;cursor:pointer}
.odf-core:hover,.odf-core:focus-visible,.odf-core.matched{outline:3px solid #ff8a1f;outline-offset:1px;position:relative;z-index:1}.odf-core.matched{transform:translateY(-1px)}
.odf-dialog{width:min(680px,calc(100vw - 28px));border:0;border-radius:16px;padding:0;box-shadow:0 24px 70px #0f172a40;color:#111827}.odf-dialog::backdrop{background:#0f172a99}.odf-dialog header{display:flex;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid #edf0f4}.odf-dialog header small{font-weight:800;letter-spacing:.11em;color:#b56b20}.odf-dialog h2{margin:4px 0;font-size:24px}.odf-dialog header p{margin:0;color:#64748b;font-size:13px}.odf-close{border:0;background:#f3f4f6;border-radius:9px;width:38px;height:38px;font-size:25px;cursor:pointer}.odf-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:22px 24px}.odf-form-grid label{display:grid;gap:6px}.odf-form-grid label>span{font-size:12px;font-weight:700}.odf-form-grid input,.odf-form-grid select,.odf-form-grid textarea{box-sizing:border-box;width:100%;border:1px solid #d7dde5;border-radius:9px;padding:10px 11px;font:inherit;color:#111827;background:#fff}.odf-form-grid textarea{resize:vertical}.odf-form-grid .wide{grid-column:1/-1}.odf-form-grid small{min-height:15px;color:#b42318;font-size:11px}.odf-form-error{margin:0 24px 16px;color:#b42318;font-size:13px}.odf-dialog footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;background:#fafbfc;border-top:1px solid #edf0f4}.odf-dialog footer .icon{width:16px}
.odf-footer-spacer{flex:1}.odf-delete-record{border-color:#fecaca;background:#fff;color:#b42318}.odf-delete-record:hover{background:#fef2f2;border-color:#dc2626}
.odf-core-dialog{width:min(720px,calc(100vw - 28px))}.odf-core-dialog .odf-form-grid input[readonly]{background:#f3f4f6;color:#374151}.odf-core-dialog select:disabled,.odf-core-dialog input:disabled{opacity:1;background:#f3f4f6;color:#374151}
@media(max-width:900px){.odf-grid{grid-template-columns:repeat(4,330px)}}
@media(max-width:600px){.odf-heading{flex-direction:column}.odf-heading-actions{align-items:stretch}.odf-heading-actions label,.odf-heading-actions select{width:100%}.odf-heading h2{font-size:20px}.odf-grid,.odf-grid.odf-size-48{grid-template-columns:repeat(4,306px);gap:18px}.odf-grid.odf-size-12{grid-template-columns:306px}.odf-grid.odf-size-216{grid-template-columns:max-content}.odf-block{grid-template-columns:repeat(6,49px)}.odf-block.odf-block-216{grid-template-columns:repeat(6,49px) 24px repeat(6,49px) 24px repeat(6,49px) 24px repeat(6,49px)}.odf-core{height:44px;font-size:12px}.odf-port-summary dl{grid-template-columns:1fr 1fr}.odf-form-grid{grid-template-columns:1fr}.odf-form-grid .wide{grid-column:auto}.odf-dialog header,.odf-form-grid,.odf-dialog footer{padding-left:17px;padding-right:17px}}

/* Separate the requested pairs of 24-port rows. */
.odf-block-216 .odf-core:nth-child(n+49):nth-child(-n+72),
.odf-block-216 .odf-core:nth-child(n+97):nth-child(-n+120),
.odf-block-216 .odf-core:nth-child(n+145):nth-child(-n+168){margin-top:24px}
