/* ========================================================= TOKENS AND THEME ========================================================= */ :root { --bg-page: #ecece8; --bg-grid: radial-gradient(circle at 10% 10%, rgba(159, 115, 84, 0.08), transparent 24%), radial-gradient(circle at 85% 14%, rgba(19, 24, 28, 0.05), transparent 18%); --surface-0: rgba(250, 250, 247, 0.82); --surface-1: #f8f8f5; --surface-2: #f1f1ed; --surface-3: #dfdfd8; --surface-4: #d0d0c8; --text-main: #111417; --text-soft: #5e666e; --text-faint: #7b848d; --border-color: rgba(17, 20, 23, 0.12); --border-strong: rgba(17, 20, 23, 0.2); --primary: #101316; --primary-soft: #49535c; --accent: #8d593a; --accent-2: #0c6a50; --blue: #285c9d; --success: #0d8a63; --warning: #b67a21; --danger: #c24646; --shadow-lg: 0 24px 60px rgba(17, 20, 23, 0.08); --shadow-md: 0 12px 30px rgba(17, 20, 23, 0.05); --radius-xl: 28px; --radius-lg: 20px; --radius-md: 14px; --sidebar-width: 260px; --sidebar-collapsed-width: 92px; --topbar-height: 76px; --font-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; --font-title: "Roboto Mono", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace; --primary-contrast: #ffffff; } /* ========================================================= BASE / RESET ========================================================= */ * { box-sizing: border-box; } html, body { min-height: 100%; font-size: 0.90rem; margin: 0; color: var(--text-main); font-family: var(--font-body); background: var(--bg-page); background-image: var(--bg-grid); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body::before { content: ""; position: fixed; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(17, 20, 23, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(17, 20, 23, 0.018) 1px, transparent 1px); background-size: 28px 28px; opacity: 0.14; } body.dark-theme::before { background-image: linear-gradient(rgba(218, 228, 236, 0.02) 1px, transparent 1px), linear-gradient(90deg, rgba(218, 228, 236, 0.02) 1px, transparent 1px); opacity: 0.15; } body, .p-component, .p-inputtext, .p-button, .p-card, .p-tag, .p-table { font-family: var(--font-body); } pre, code, .page-header__title, .topbar__headline, .sidebar-brand__text h2, .stat-card__value, .stat-card__label, .section-card__title, .table-primary { font-family: var(--font-title); } img { max-width: 100%; } a { color: inherit; text-decoration: none; } small { color: var(--text-soft); } /* ========================================================= APP LAYOUT ========================================================= */ .layout-shell { min-height: 100vh; padding-left: var(--sidebar-width); transition: padding-left 0.2s ease; } .layout-shell--collapsed { padding-left: var(--sidebar-collapsed-width); } .layout-shell--collapsed .layout-sidebar { width: var(--sidebar-collapsed-width); } .layout-main { min-height: 100vh; display: flex; flex-direction: column; } .layout-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.85rem 1.2rem; padding: 0 2rem 1.5rem; color: var(--text-faint); font-size: 0.74rem; letter-spacing: 0.14em; text-transform: uppercase; } .layout-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.4); opacity: 0; visibility: hidden; z-index: 95; transition: opacity 0.2s ease; } .layout-overlay.is-visible { opacity: 1; visibility: visible; } .topbar__left, .topbar__right, .header-actions-row, .table-actions, .inline-tags, .filters-actions, .dialog-actions, .sidebar-brand, .topbar__user { display: flex; align-items: center; gap: 0.8rem; } .topbar__left, .topbar__right, .header-actions-row, .table-actions, .inline-tags, .filters-actions, .dialog-actions, .topbar__caption, .page-header__eyebrow, .sidebar-section__label, .stat-card__label, .layout-footer span { font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; } .topbar__caption, .page-header__eyebrow, .sidebar-section__label, .layout-footer, .stat-card__hint, .section-card__subtitle, .page-header__subtitle, .metric-tile span, .table-secondary, .form-field label, .topbar__user-meta small { color: var(--text-soft); } .topbar__user-meta { display: flex; flex-direction: column; line-height: 1.2; } .sidebar-brand__text h2, .sidebar-brand__text p, .sidebar-section__label, .page-header__title, .page-header__subtitle, .section-card__title, .section-card__subtitle, .stat-card__label, .stat-card__value, .stat-card__hint, .metric-tile span, .form-field label { margin: 0; } .sidebar-brand__text p, .sidebar-section__label { color: rgba(215, 225, 235, 0.64); } .sidebar-section { padding: 0.25rem 0 0.5rem; } .sidebar-nav { display: grid; gap: 0.35rem; } .sidebar-nav__item:hover { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.08); } .sidebar-nav__item.is-active { background: rgba(75, 144, 217, 0.18); border-color: rgba(75, 144, 217, 0.42); color: #fff; } .page-header__subtitle { max-width: 56rem; margin-top: 0.9rem; font-size: 0.98rem; line-height: 1.7; } .stats-grid, .dashboard-grid, .metric-grid-2, .form-grid-2 { display: grid; gap: 1rem; } .stats-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 1rem; } .compact-grid { margin-bottom: 1rem; } .dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .metric-grid-2, .form-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .section-card .p-card-body, .stat-card .p-card-body { padding: 0; } .section-card__subtitle { margin-top: 0.35rem; line-height: 1.6; } .stat-card { position: relative; } .stat-card::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--accent), var(--blue)); } .stat-card__row { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: 1rem; } .stat-card__label { margin-bottom: 0.55rem; } .stat-card__hint { margin-top: 0.6rem; font-size: 0.92rem; } .stat-card__icon { width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; border: 1px solid var(--border-color); background: var(--surface-2); font-size: 1.05rem; } .icon-blue { color: var(--blue); } .icon-emerald { color: var(--success); } .icon-amber { color: var(--warning); } .icon-violet { color: var(--accent); } body.dark-theme .settings-actions { display: flex; flex-direction: column; } body.dark-theme .metric-tile, .empty-state { justify-content: space-between; } .metric-grid-2 { margin-top: 0.2rem; } .metric-tile strong { font-family: var(--font-title); font-size: 1rem; letter-spacing: 0.06em; } .table-primary { font-size: 0.96rem; letter-spacing: 0.04em; } .code-preview { margin: 0; padding: 1rem; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.06); background: #17212b; color: #dae4ec; overflow: auto; line-height: 1.6; font-size: 0.86rem; } .form-field--full { grid-column: 1 / -1; } .form-error, .form-success { font-size: 0.88rem; } .form-error { color: var(--danger); } .form-success { color: var(--success); } .p-button.p-button-secondary:not(.p-disabled):hover, .p-button.p-button-help:not(.p-disabled):hover, .p-button.p-button-outlined:not(.p-disabled):hover { background: color-mix(in srgb, var(--surface-2) 82%, white 18%); border-color: color-mix(in srgb, var(--border-strong) 96%, transparent); } body.dark-theme .p-button.p-button-secondary, body.dark-theme .p-button.p-button-help, body.dark-theme .p-button.p-button-outlined { background: color-mix(in srgb, var(--surface-1) 90%, white 10%); border-color: rgba(146, 170, 194, 0.22); } body.dark-theme .p-button.p-button-secondary:not(.p-disabled):hover, body.dark-theme .p-button.p-button-help:not(.p-disabled):hover, body.dark-theme .p-button.p-button-outlined:not(.p-disabled):hover { background: color-mix(in srgb, var(--surface-1) 84%, white 16%); border-color: rgba(146, 170, 194, 0.34); } .p-button.p-button-danger { background: transparent; border-color: rgba(194, 70, 70, 0.5); color: var(--danger); } body.dark-theme .p-inputtext, body.dark-theme .p-inputtextarea, body.dark-theme textarea.p-inputtextarea { background: rgba(255, 255, 255, 0.03); } .p-inputtext:enabled:focus, .p-inputtextarea:enabled:focus, textarea.p-inputtextarea:enabled:focus { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent); } .p-input-icon-left { position: relative; display: block; } .p-input-icon-left > i { left: 0.9rem; color: var(--text-soft); } .p-input-icon-left > .p-inputtext { padding-left: 2.45rem; } .app-table .p-datatable-table { min-width: 100%; } .app-table .p-datatable-tbody > tr { background: transparent; } .app-table .p-datatable-tbody > tr:hover > td { background: rgba(255, 255, 255, 0.35); } body.dark-theme .app-table .p-datatable-thead > tr > th { background: #202a36; } body.dark-theme .app-table .p-datatable-tbody > tr:hover > td { background: rgba(255, 255, 255, 0.03); } .table-secondary { display: inline-block; margin-top: 0.3rem; } .p-paginator { border-top: 1px solid var(--border-color); background: var(--surface-1); } .p-component-overlay { backdrop-filter: blur(10px); } .p-avatar { background: var(--primary); color: #fff; font-family: var(--font-title); } .p-dialog { border-radius: 20px; overflow: hidden; border: 1px solid var(--border-color); } .p-dialog .p-dialog-header, .p-dialog .p-dialog-content, .p-dialog .p-dialog-footer { background: var(--surface-1); color: var(--text-main); } .p-dialog .p-dialog-header { border-bottom: 1px solid var(--border-color); } .p-dialog .p-dialog-footer { border-top: 1px solid var(--border-color); } .empty-state, .compact-empty { padding: 1.2rem; border: 1px dashed var(--border-strong); border-radius: 14px; color: var(--text-soft); background: var(--surface-2); } .settings-actions { justify-content: flex-end; grid-column: 1 / -1; } /* ========================================================= RESPONSIVE ========================================================= */ /* <= 1300px */ @media (max-width: 1300px) { .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dashboard-grid { grid-template-columns: 1fr; } } .topbar__icon-btn.p-button { border: 1px solid var(--border-color); background: var(--surface-1); } body.dark-theme .topbar__icon-btn.p-button { background: rgba(255, 255, 255, 0.03); } .sidebar-brand__text p { color: rgba(215, 225, 235, 0.64); } body.dark-theme .p-button.p-button-secondary, body.dark-theme .p-button.p-button-help, body.dark-theme .p-button.p-button-outlined, body.dark-theme .p-button.p-button-text { color: var(--text-main); background: rgba(255, 255, 255, 0.03); } .p-button.p-button-text { border-color: transparent; background: transparent; } .header-number-input { max-width: 6rem; } .settings-toggle-grid { display: grid; gap: 0.85rem; margin-bottom: 1rem; } .settings-toggle strong, .settings-toggle small { display: block; } .settings-toggle strong { font-family: var(--font-title); font-size: 0.9rem; letter-spacing: 0.06em; text-transform: uppercase; } .settings-toggle small { margin-top: 0.3rem; color: var(--text-soft); line-height: 1.5; } /* <= 991px */ @media (max-width: 991px) { .layout-shell, .layout-shell--collapsed { padding-left: 0; } .layout-sidebar { transform: translateX(-100%); width: min(88vw, var(--sidebar-width)); } .layout-sidebar.is-open { transform: translateX(0); } .topbar, .layout-content, .layout-footer { padding-left: 1rem; padding-right: 1rem; } .page-header { align-items: flex-start; } .topbar__right { justify-content: space-between; } } /* ========================================================= DARK THEME OVERRIDES ========================================================= */ body.dark-theme { --bg-page: #17212b; --bg-grid: linear-gradient(180deg, rgba(91, 119, 145, 0.05), transparent 32%), radial-gradient(circle at 18% 12%, rgba(63, 130, 196, 0.08), transparent 18%); --primary: #edf2f7; --primary-soft: #bccada; --accent: #4b90d9; --accent-2: #4fb593; --blue: #4b90d9; --success: #4fb593; --warning: #f0b45b; --danger: #e37a7a; --primary-contrast: #101316; --surface-0: rgba(28, 38, 49, 0.94); --surface-1: #1c2631; --surface-2: #202b36; --surface-3: #2a3642; --surface-4: #364353; --border-color: rgba(160, 183, 206, 0.12); --border-strong: rgba(160, 183, 206, 0.18); --text-main: #d6e0e8; --text-soft: #8ea1b2; --text-faint: #748696; --shadow-lg: 0 18px 38px rgba(0, 0, 0, 0.18); --shadow-md: 0 8px 20px rgba(0, 0, 0, 0.14); } .topbar__caption, .page-header__eyebrow, .sidebar-section__label, .stat-card__label, .layout-footer span { font-size: 0.68rem; letter-spacing: 0.14em; } .topbar__icon-btn.p-button, .topbar__logout-btn.p-button { height: 2.45rem; min-width: 2.45rem; } .sidebar-brand { align-items: center; margin-bottom: 1rem; border-bottom: 1px solid rgba(255, 255, 255, 0.08); padding-bottom: 1rem; } .sidebar-nav__item i { width: 1rem; font-size: 0.92rem; } /* ========================================================= SHARED PAGE HEADER / CARDS / TYPOGRAPHY ========================================================= */ .page-header { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; border-bottom: 1px solid var(--border-color); padding: 1.6rem 0 1rem; margin-bottom: 1.2rem; } .page-header__subtitle, .section-card__subtitle { font-size: 0.92rem; line-height: 1.65; } .section-card.p-card, .stat-card.p-card { border: 1px solid var(--border-color); background: linear-gradient(180deg, var(--surface-1) 0%, var(--surface-0) 100%); overflow: hidden; border-radius: 18px; box-shadow: var(--shadow-md); } .section-card .p-card-content, .stat-card .p-card-content { padding: 1rem 1.05rem; } .section-card__header { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; border-bottom: 1px solid var(--border-color); padding-bottom: 0.8rem; margin-bottom: 0.8rem; } .section-card__title { text-transform: uppercase; font-size: 0.96rem; letter-spacing: 0.06em; } .stat-card__value { line-height: 1; letter-spacing: 0.04em; font-size: clamp(1.35rem, 2.2vw, 1.8rem); } .stat-card__hint, .metric-tile span, .table-secondary, .form-field label, .topbar__user-meta small, .settings-toggle small { font-size: 0.78rem; } .metric-tile strong, .settings-toggle strong { font-size: 0.88rem; } .metric-tile, .settings-toggle { border-radius: 12px; } .p-button:not(.p-disabled):hover { transform: none; filter: brightness(1.04); } .p-button.table-action-btn { padding: 0; width: 2.15rem; min-width: 2.15rem; height: 2.15rem; border-radius: 8px; } .p-inputtext, .p-inputtextarea, textarea.p-inputtextarea { width: 100%; border: 1px solid var(--border-strong); color: var(--text-main); box-shadow: none; border-radius: 10px; padding: 0.72rem 0.82rem; font-size: 0.92rem; background: color-mix(in srgb, var(--surface-1) 88%, transparent); } .p-tag { border-radius: 999px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; line-height: 1.15; padding: 0.28rem 0.72rem; min-width: max-content; max-width: 100%; font-size: 0.6rem; } .app-table { border: 1px solid var(--border-color); overflow: hidden; border-radius: 14px; } .app-table .p-datatable-wrapper { border-radius: 14px; } .app-table .p-datatable-thead > tr > th { background: var(--surface-2); color: var(--text-soft); border-bottom: 1px solid var(--border-color); font-weight: 700; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.1em; padding: 0.8rem 0.9rem; } .app-table .p-datatable-tbody > tr > td { border-bottom: 1px solid var(--border-color); padding: 0.82rem 0.9rem; font-size: 0.9rem; } .form-field { display: flex; flex-direction: column; gap: 0.4rem; } .layout-content { flex: 1; padding-bottom: 2.5rem; padding: 0 1.5rem 1.5rem; } .topbar { margin: 0; display: flex; justify-content: space-between; align-items: center; gap: 1rem; border-bottom: 1px solid var(--border-color); position: sticky; top: 0; z-index: 90; padding-top: 0.9rem; padding-bottom: 0.9rem; border-bottom-color: rgba(17, 20, 23, 0.1); backdrop-filter: blur(8px); min-height: 68px; padding: 0.85rem 1.5rem; background: rgba(255, 255, 255, 0.12); } body.dark-theme .topbar { border-bottom-color: rgba(146, 170, 194, 0.12); background: rgba(23, 33, 43, 0.74); } .topbar__headline { text-transform: uppercase; font-family: var(--font-title); font-size: 1.2rem; letter-spacing: 0.03em; } .topbar__caption { letter-spacing: 0.18em; font-size: 0.65rem; } .topbar__user-meta strong { font-size: 0.86rem; } .topbar__user-meta small { font-size: 0.68rem; } .layout-sidebar { position: fixed; left: 0; top: 0; bottom: 0; width: var(--sidebar-width); background: linear-gradient(180deg, #151d26 0%, #19222d 100%); border-right: 1px solid rgba(255, 255, 255, 0.08); color: #d7e1eb; z-index: 100; transition: width 0.2s ease, transform 0.2s ease; overflow: hidden; padding: 1rem 0.9rem; } .sidebar-brand__text h2 { color: #fff; letter-spacing: 0.18em; text-transform: uppercase; font-size: 0.95rem; } .sidebar-brand__text p, .sidebar-section__label, .sidebar-nav__item span { font-size: 0.78rem; } .sidebar-nav__item { display: flex; align-items: center; gap: 0.85rem; color: rgba(230, 238, 245, 0.84); border: 1px solid transparent; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; padding: 0.62rem 0.75rem; min-height: 2.5rem; border-radius: 10px; } .p-button .p-button-label { font-weight: 500; } .p-button.table-action-btn, .topbar__icon-btn.p-button { min-height: 2.2rem; width: 2.2rem; padding: 0; } .topbar__logout-btn.p-button { min-width: auto; padding-inline: 1rem; min-height: 2.2rem; padding: 0.45rem 0.75rem; } .form-field label { text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.72rem; } .p-inputtext { min-height: 2.5rem; font-size: 0.84rem; } .page-header__title { line-height: 1; text-transform: uppercase; letter-spacing: 0.05em; font-size: 1.55rem; } .section-card__title, .stat-card__value { font-size: 0.95rem; } .p-datatable .p-datatable-thead > tr > th, .p-datatable .p-datatable-tbody > tr > td { font-size: 0.79rem; } /* ========================================================= FORMS / BUTTONS / PRIME UI NORMALIZATION ========================================================= */ .p-button { text-transform: uppercase; background: var(--primary); border-color: var(--primary); border-width: 1px; transition: transform 0.12s ease, filter 0.12s ease, border-color 0.12s ease, background-color 0.12s ease; font-weight: 600; letter-spacing: 0.1em; min-height: 2.45rem; padding: 0.55rem 0.9rem; border-radius: 10px; font-size: 0.82rem; box-shadow: none; color: var(--primary-contrast); } .p-button.p-button-secondary, .p-button.p-button-help, .p-button.p-button-outlined, .p-button.p-button-text { border-color: color-mix(in srgb, var(--border-strong) 86%, transparent); background: color-mix(in srgb, var(--surface-1) 92%, transparent); color: var(--text-main); } .metric-tile { padding: 1rem; border: 1px solid var(--border-color); border-radius: 16px; background: var(--surface-2); display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 0.45rem; min-height: 6rem; } .metric-tile span, .metric-tile strong { white-space: normal; word-break: break-word; } .repository-table .p-datatable-tbody > tr > td { vertical-align: top; } .table-actions--labels { display: flex; flex-wrap: wrap; gap: 0.5rem; } .p-button.table-action-btn--wide { width: auto; min-width: auto; padding-inline: 0.8rem; } .preview-dialog__actions { margin-bottom: 0.85rem; justify-content: flex-end; } .preview-dialog__content { max-height: 68vh; margin: 0; } .change-password-form { max-width: none; width: 100%; } .p-toast { width: min(26rem, calc(100vw - 2rem)); } .p-toast .p-toast-message { border-radius: 16px; border: 1px solid var(--border-color); box-shadow: var(--shadow-md); overflow: hidden; } .p-toast .p-toast-message-content { gap: 0.8rem; } /* <= 720px */ @media (max-width: 720px) { .page-header, .topbar, .stats-grid, .metric-grid-2, .form-grid-2 { grid-template-columns: 1fr; } .topbar, .page-header { flex-direction: column; align-items: flex-start; } .topbar__right { width: 100%; } .change-password-form { grid-template-columns: 1fr; } .table-actions--labels { flex-direction: column; align-items: stretch; } .router-modal-summary { flex-direction: column; align-items: flex-start; } .layout-footer__author { width: 100%; justify-content: center; } .beta-banner, .swos-beta-result__item { flex-direction: column; align-items: flex-start; } .router-dialog .p-dialog-header { padding: 1rem 0.85rem 0.85rem; } .router-dialog .p-dialog-content { padding: 0 0.85rem 0.95rem; } .router-dialog-header { align-items: flex-start; } .router-dialog-panel__header { flex-direction: column; } .router-dialog-actions { flex-direction: column-reverse; align-items: stretch; } .router-dialog-actions .p-button { width: 100%; min-width: 0; } .device-toggle { grid-template-columns: auto auto auto minmax(0,1fr); align-items: start; } .device-toggle__state { grid-column: 2 / -1; justify-self: start; } } .sidebar-brand__logo img { width: 100%; height: 100%; object-fit: contain; } .sidebar-brand__logo { border: 1px solid rgba(255, 255, 255, 0.24); font-family: var(--font-title); letter-spacing: 0.12em; color: #fff; font-size: 0.8rem; width: 3.25rem; height: 3.25rem; border-radius: 22px; background: rgba(255, 255, 255, 0.92); padding: 0.55rem; display: grid; place-items: center; box-shadow: inset 0 0 0 1px rgba(17, 20, 23, 0.08); } .topbar__user { padding: 0.35rem 0.65rem 0.35rem 0.35rem; border: 1px solid var(--border-color); border-radius: 999px; background: var(--surface-1); } .topbar__avatar { background: linear-gradient(135deg, var(--blue), var(--accent)); color: #fff; border: 2px solid rgba(255, 255, 255, 0.16); box-shadow: 0 10px 24px rgba(75, 144, 217, 0.22); } body.dark-theme .topbar__avatar { color: #f8fbff; border-color: rgba(255, 255, 255, 0.18); } app-section-card.dashboard-operations-card { display: block; margin-bottom: 0.5rem; } .metric-tile--feature { min-height: 106px; justify-content: space-between; } /* ========================================================= REPOSITORY / TABLE TOOLBAR ========================================================= */ .repository-toolbar { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 0.9rem; margin-bottom: 1rem; } .repository-toolbar__search { grid-column: span 4; } .repository-toolbar .form-field, .compare-strip__slot { grid-column: span 2; } .repository-toolbar__actions, .compare-strip__actions { grid-column: span 2; align-self: end; } .compare-strip__swap { align-self: end; } .table-actions--stack { flex-direction: column; align-items: stretch; } /* ========================================================= DIFF VIEW ========================================================= */ .github-diff { border: 1px solid var(--border-color); border-radius: 18px; overflow: hidden; max-height: 70vh; overflow-y: auto; } .github-diff__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .github-diff__cell { display: grid; grid-template-columns: 56px minmax(0, 1fr); min-width: 0; } .github-diff__number { padding: 0.65rem 0.45rem; border-right: 1px solid var(--border-color); text-align: right; color: var(--text-faint); background: rgba(128, 145, 164, 0.08); font-family: var(--font-title); font-size: 0.78rem; } .github-diff__cell pre { margin: 0; padding: 0.65rem 0.85rem; white-space: pre-wrap; word-break: break-word; font-family: var(--font-title); line-height: 1.5; } .github-diff__row[data-type="added"] .github-diff__cell--right, .github-diff__row[data-type="modified"] .github-diff__cell--right { background: rgba(79, 181, 147, 0.12); } .github-diff__row[data-type="removed"] .github-diff__cell--left, .github-diff__row[data-type="modified"] .github-diff__cell--left { background: rgba(227, 122, 122, 0.12); } .diff-layout__summary { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto auto; gap: 1rem; align-items: center; margin-bottom: 1rem; } .diff-layout__summary-arrow { color: var(--text-faint); } .diff-stats { display: flex; gap: 0.5rem; flex-wrap: wrap; } .diff-stats__pill { padding: 0.45rem 0.7rem; border-radius: 999px; font-family: var(--font-title); font-size: 0.78rem; } .diff-stats__pill--added { background: rgba(79, 181, 147, 0.14); color: var(--success); } .diff-stats__pill--removed { background: rgba(227, 122, 122, 0.14); color: var(--danger); } .diff-stats__pill--modified { background: rgba(240, 180, 91, 0.14); color: var(--warning); } /* ========================================================= SETTINGS ========================================================= */ .settings-status-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1.35rem; } .settings-status-card { padding: 1rem; border: 1px solid var(--border-color); border-radius: 22px; background: var(--surface-0); box-shadow: var(--shadow-md); } .settings-status-card__header { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 0.75rem; } .settings-status-card__description { font-family: var(--font-title); margin-bottom: 0.25rem; } .scheduler-card { padding: 1rem; border-radius: 22px; border: 1px solid var(--border-color); background: linear-gradient(180deg, rgba(75, 144, 217, 0.05), rgba(75, 144, 217, 0.01)); } .scheduler-card__header { display: flex; justify-content: space-between; gap: 1rem; align-items: center; margin-bottom: 1rem; } .scheduler-card__header small { display: block; margin-top: 0.3rem; } .scheduler-card__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.9rem; } .time-picker { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 0.45rem; } .settings-actions--sticky { position: sticky; bottom: 1rem; justify-content: flex-end; padding: 0.8rem 1rem; border-radius: 18px; background: rgba(23, 33, 43, 0.08); backdrop-filter: blur(10px); } body.dark-theme .settings-actions--sticky { background: rgba(7, 12, 18, 0.45); } .change-password-shell { display: grid; grid-template-columns: minmax(280px, 360px) minmax(0, 1fr); gap: 1.25rem; } .password-insights { display: grid; gap: 1rem; } .password-strength { display: flex; justify-content: space-between; gap: 1rem; align-items: center; } .password-strength__track { height: 12px; border-radius: 999px; background: rgba(128, 145, 164, 0.14); overflow: hidden; } .password-strength__track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--danger), var(--warning), var(--success)); } .password-checklist { display: grid; gap: 0.75rem; } .password-checklist__item { display: flex; align-items: center; gap: 0.7rem; color: var(--text-soft); } .password-checklist__item.is-ready { color: var(--text-main); } .change-password-form--expanded { align-items: start; } .inline-summary { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; padding: 0.95rem 1.05rem; border: 1px solid var(--border-color); border-radius: 18px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.18)); } body.dark-theme .inline-summary { background: linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01)); } .inline-summary--soft { box-shadow: var(--shadow-md); } .inline-summary--tight { margin-bottom: 1.2rem; } .inline-summary__item { display: flex; flex-direction: column; gap: 0.2rem; } .inline-summary__item strong { font-family: var(--font-title); font-size: 1rem; letter-spacing: 0.04em; } .inline-summary__item span { color: var(--text-soft); font-size: 0.76rem; letter-spacing: 0.12em; text-transform: uppercase; } .inline-summary__divider { width: 1px; align-self: stretch; background: var(--border-color); } .settings-automation-intro { display: flex; justify-content: space-between; gap: 1rem; align-items: center; margin-bottom: 1rem; padding: 0.95rem 1rem; border: 1px dashed var(--border-strong); border-radius: 18px; background: rgba(75, 144, 217, 0.04); } .settings-automation-intro strong, .repository-compare__header strong { font-family: var(--font-title); font-size: 0.95rem; letter-spacing: 0.05em; } .settings-automation-intro p, .repository-compare__header p, .scheduler-card__hint { margin: 0.25rem 0 0; color: var(--text-soft); line-height: 1.55; } .scheduler-card__hint { margin-bottom: 1rem; font-size: 0.84rem; } .choice-toggle__btn.is-active { background: var(--primary); color: #fff; box-shadow: var(--shadow-md); } .settings-toggle { display: flex; justify-content: space-between; gap: 1rem; padding: 0.95rem 1rem; border: 1px solid var(--border-color); border-radius: 16px; background: color-mix(in srgb, var(--surface-1) 86%, transparent); align-items: flex-start; } .operations-center { display: grid; grid-template-columns: minmax(240px, 320px) minmax(0, 1fr); gap: 1rem; align-items: stretch; } .operations-center__actions { display: grid; gap: 0.85rem; padding: 1rem; border-radius: 20px; border: 1px solid var(--border-color); background: linear-gradient(180deg, rgba(75, 144, 217, 0.06), rgba(75, 144, 217, 0.015)); } .operations-center__actions .p-button { justify-content: center; } .operations-center__actions .btn-binary-accent { background: rgba(141, 89, 58, 0.1); border-color: rgba(141, 89, 58, 0.34); color: #6f452d; } .operations-center__actions .btn-binary-accent:not(.p-disabled):hover { background: rgba(141, 89, 58, 0.14); border-color: rgba(141, 89, 58, 0.42); } body.dark-theme .operations-center__actions .btn-binary-accent { background: rgba(75, 144, 217, 0.09); border-color: rgba(75, 144, 217, 0.3); color: #dbe8f5; } body.dark-theme .operations-center__actions .btn-binary-accent:not(.p-disabled):hover { background: rgba(75, 144, 217, 0.13); border-color: rgba(75, 144, 217, 0.4); } .header-actions-row .btn-pushover-neutral { background: rgba(75, 144, 217, 0.08); border-color: rgba(75, 144, 217, 0.26); color: #2f5f8f; } .header-actions-row .btn-pushover-neutral:not(.p-disabled):hover { background: rgba(75, 144, 217, 0.12); border-color: rgba(75, 144, 217, 0.34); } body.dark-theme .header-actions-row .btn-pushover-neutral { background: rgba(75, 144, 217, 0.08); border-color: rgba(75, 144, 217, 0.28); color: #dbe8f5; } body.dark-theme .header-actions-row .btn-pushover-neutral:not(.p-disabled):hover { background: rgba(75, 144, 217, 0.12); border-color: rgba(75, 144, 217, 0.38); } .operations-center__stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.85rem; } .operations-center__stats .metric-tile small { margin-top: 0.35rem; color: var(--text-soft); line-height: 1.45; } .repository-compare__header { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; align-items: flex-start; } .repository-compare__status { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.5rem; } .repository-compare__slot { min-width: 0; } .repository-compare__actions { display: grid; gap: 0.65rem; } .repository-table .p-datatable-tbody > tr[data-compare-role="left"] > td { background: rgba(240, 180, 91, 0.07); } .repository-table .p-datatable-tbody > tr[data-compare-role="right"] > td { background: rgba(79, 181, 147, 0.08); } .repository-table .p-datatable-tbody > tr[data-compare-role="left"]:hover > td, .repository-table .p-datatable-tbody > tr[data-compare-role="right"]:hover > td { filter: brightness(1.01); } .change-password-form .p-inputtext { width: 100%; } /* <= 1280px */ @media (max-width: 1280px) { .repository-toolbar__search, .repository-toolbar .form-field, .repository-toolbar__actions, .compare-strip__slot, .compare-strip__actions { grid-column: span 6; } .settings-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .scheduler-card__grid, .change-password-shell { grid-template-columns: 1fr; } .operations-center, .operations-center__stats, .repository-compare__grid { grid-template-columns: 1fr; } .repository-compare__status { justify-content: flex-start; } } .layout-footer a { color: var(--accent); } .layout-footer__status { display: inline-flex; align-items: center; gap: 0.45rem; } .layout-footer__status::before { content: ""; width: 0.6rem; height: 0.6rem; border-radius: 999px; background: var(--text-faint); box-shadow: 0 0 0 4px rgba(128, 145, 164, 0.12); } .layout-footer__status--online::before { background: var(--success); box-shadow: 0 0 0 4px rgba(79, 181, 147, 0.16); } .layout-footer__status--offline::before { background: var(--danger); box-shadow: 0 0 0 4px rgba(195, 70, 70, 0.14); } .layout-footer__status--checking::before { background: var(--warning); box-shadow: 0 0 0 4px rgba(240, 180, 91, 0.14); } .api-connection-banner { position: fixed; right: 1.5rem; bottom: 1.5rem; z-index: 120; display: flex; align-items: center; gap: 0.9rem; width: min(28rem, calc(100vw - 2rem)); padding: 0.95rem 1rem; border-radius: 18px; border: 1px solid rgba(195, 70, 70, 0.22); background: rgba(255, 248, 248, 0.96); box-shadow: var(--shadow-lg); } body.dark-theme .api-connection-banner { background: rgba(29, 39, 51, 0.96); } .api-connection-banner__content { display: grid; gap: 0.25rem; } .api-connection-banner__content strong { font-size: 0.84rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--danger); } .api-connection-banner__content span { color: var(--text-soft); font-size: 0.9rem; line-height: 1.5; } .api-connection-banner__action { flex-shrink: 0; border: 1px solid rgba(195, 70, 70, 0.2); border-radius: 999px; background: transparent; color: var(--danger); padding: 0.65rem 0.95rem; font: inherit; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; cursor: pointer; } .api-connection-banner__action:hover { background: rgba(195, 70, 70, 0.08); } /* ========================================================= ROUTERS ========================================================= */ .router-detail-grid { align-items: start; } .router-status-panel { display: grid; gap: 0.9rem; } .router-status-error { display: grid; gap: 0.35rem; padding: 0.85rem 1rem; border-radius: 16px; border: 1px solid rgba(217, 75, 91, 0.24); background: rgba(217, 75, 91, 0.08); } .table-actions--tight { flex-wrap: nowrap; gap: 0.4rem; overflow-x: auto; padding-bottom: 0.15rem; } .p-button.table-action-btn--compact { min-height: 2rem; padding-inline: 0.6rem; font-size: 0.78rem; } .settings-page-shell { display: grid; gap: 1rem; } .settings-page-columns { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(320px, 0.95fr); gap: 1rem; align-items: start; } .settings-page-main, .settings-page-side { display: grid; gap: 1rem; } .settings-collapse { border: 1px solid var(--border-color); border-radius: 24px; background: linear-gradient(180deg, var(--surface-1) 0%, var(--surface-0) 100%); box-shadow: var(--shadow-md); overflow: hidden; } .settings-collapse > summary { position: relative; list-style: none; cursor: pointer; padding: 1rem 3rem 1rem 1.15rem; display: grid; gap: 0.2rem; } .settings-collapse > summary::-webkit-details-marker { display: none; } .settings-collapse > summary span { font-family: var(--font-title); font-size: 1rem; letter-spacing: 0.08em; text-transform: uppercase; } .settings-collapse > summary small { color: var(--text-soft); } .settings-collapse > summary::after { content: ""; font-family: "primeicons"; position: absolute; right: 1.1rem; top: 50%; transform: translateY(-50%) rotate(0deg); color: var(--text-soft); transition: transform 0.2s ease; } .settings-collapse[open] > summary::after { transform: translateY(-50%) rotate(180deg); } .settings-collapse__body { padding: 0.85rem 1.15rem 1.15rem; border-top: 1px solid var(--border-color); } .settings-collapse__body > :first-child, .section-card .p-card-content > :first-child { margin-top: 0; } .settings-collapse--sticky { position: sticky; top: 1rem; } .settings-scheduler-stack { display: grid; gap: 1rem; margin-top: 1rem; } .scheduler-card--subtle { background: linear-gradient(180deg, rgba(79, 181, 147, 0.08), rgba(79, 181, 147, 0.02)); } .scheduler-card__grid--compact { grid-template-columns: minmax(0, 220px); } .settings-ssh-panel { display: grid; gap: 1rem; } .settings-ssh-panel__header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; } .settings-ssh-panel__header p, .settings-ssh-lock p, .settings-ssh-note { color: var(--text-soft); } .settings-ssh-lock { display: grid; gap: 0.85rem; padding: 1rem; border-radius: 18px; border: 1px dashed var(--border-color); background: rgba(75, 144, 217, 0.05); } .settings-ssh-actions { justify-content: flex-end; } app-page-header, app-section-card, app-stat-card, app-sidebar, app-topbar { display: block; } app-page-header { margin-bottom: 1rem; } .section-card__header + *, .page-header__actions + * { margin-top: 0.25rem; } .p-tag, .p-tag .p-tag-value { max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* <= 1120px */ @media (max-width: 1120px) { .settings-page-columns { grid-template-columns: 1fr; } .settings-collapse--sticky { position: static; } } /* <= 860px */ @media (max-width: 860px) { .diff-layout__summary { grid-template-columns: 1fr; } .github-diff__row { grid-template-columns: 1fr; } .repository-toolbar__search, .repository-toolbar .form-field, .repository-toolbar__actions, .compare-strip__slot, .compare-strip__actions, .settings-status-grid { grid-column: span 12; } .settings-status-grid { grid-template-columns: 1fr; } .settings-automation-intro, .repository-compare__header { flex-direction: column; } .choice-toggle { width: 100%; } .choice-toggle__btn { min-width: 0; } .inline-summary__divider { display: none; } .table-actions--tight { flex-wrap: wrap; overflow-x: visible; } .settings-collapse__body { padding-inline: 1rem; } } .router-detail-grid--inspection { grid-template-columns: minmax(0, 1.2fr) minmax(340px, 0.9fr); align-items: start; } .router-detail-split-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; } .router-detail-grid--stack { grid-template-columns: 1fr; margin-top: 1rem; } .router-modal-summary { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 1rem; border: 1px dashed var(--border-color); border-radius: 18px; background: linear-gradient(180deg, rgba(75, 144, 217, 0.05), rgba(75, 144, 217, 0.015)); } .router-modal-summary strong, .diff-pick-card__meta strong { display: block; margin: 0; } .router-modal-summary small, .diff-pick-card__meta small { display: block; margin-top: 0.35rem; color: var(--text-soft); } .repository-table, .dashboard-grid > app-section-card, .router-detail-inspection-stack > app-section-card { width: 100%; } /* ========================================================= DIFF CONFIGS WORKSPACE ========================================================= */ .diff-workspace__toolbar { display: flex; justify-content: space-between; gap: 1rem; align-items: end; flex-wrap: wrap; } .diff-workspace__router { min-width: min(320px, 100%); } .diff-workspace__actions { display: flex; gap: 0.7rem; flex-wrap: wrap; } .diff-workspace__swap.p-button { align-self: center; } .diff-pick-card { display: grid; gap: 0.9rem; padding: 1rem; border-radius: 22px; border: 1px solid var(--border-color); background: linear-gradient(180deg, var(--surface-1), rgba(255,255,255,0.02)); } .diff-pick-card.is-selected { border-color: rgba(75, 144, 217, 0.3); box-shadow: var(--shadow-md); } .diff-pick-card__header { display: flex; justify-content: space-between; gap: 1rem; align-items: center; } .diff-pick-card__header strong { font-family: var(--font-title); letter-spacing: 0.06em; } .diff-pick-card__meta { padding-top: 0.3rem; border-top: 1px solid var(--border-color); } .repository-table-section, .diff-configs-table-section { display: block; margin-top: 1rem; } .repository-table.app-table { border-radius: 16px; } .repository-table.app-table .p-datatable-thead > tr > th { padding: 0.72rem 0.8rem; font-size: 0.68rem; letter-spacing: 0.1em; } .repository-table.app-table .p-datatable-tbody > tr > td { padding: 0.68rem 0.8rem; } .repository-table .table-primary { font-size: 0.88rem; line-height: 1.35; min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .repository-table .p-tag { font-size: 0.62rem; padding: 0.24rem 0.58rem; } .repository-table .p-datatable-thead > tr > th:first-child { width: 2.6rem; padding-inline: 0.55rem; } .repository-table .p-datatable-tbody > tr > td:first-child { padding-inline: 0.55rem; } .repository-table .table-actions--stack { gap: 0.38rem; min-width: 0; } .repository-table .p-button.table-action-btn, .repository-table .p-button.table-action-btn--wide, .repository-table .p-button.table-action-btn--compact { min-height: 1.9rem; min-width: 0; max-width: 100%; padding: 0.45rem 0.62rem; font-size: 0.7rem; letter-spacing: 0.09em; } .repository-table .p-button .p-button-label { white-space: nowrap; overflow-wrap: normal; word-break: normal; } .repository-table .p-button .p-button-icon { font-size: 0.78rem; } .repository-table .p-paginator { padding: 0.4rem 0.65rem; } .repository-table .p-paginator .p-paginator-pages .p-paginator-page, .repository-table .p-paginator .p-paginator-next, .repository-table .p-paginator .p-paginator-prev { min-width: 2rem; height: 2rem; } .repository-compare { padding: 1rem; border: 1px solid var(--border-color); border-radius: 22px; background: linear-gradient(180deg, rgba(75, 144, 217, 0.06), rgba(75, 144, 217, 0.02)); margin-top: 1.15rem; } .repository-compare__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; gap: 0.9rem; align-items: end; margin-top: 0.2rem; } .diff-workspace { display: grid; gap: 1.15rem; } .diff-workspace__pair { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 1rem; align-items: center; margin-top: 0.15rem; } .preview-dialog .p-dialog-header { align-items: center; padding-bottom: 0.9rem; } .preview-dialog .p-dialog-content { padding-top: 1rem; } /* <= 980px */ @media (max-width: 980px) { .diff-workspace__pair, .router-detail-grid--inspection, .router-detail-split-grid { grid-template-columns: 1fr; } .diff-workspace__swap.p-button { justify-self: stretch; } .repository-table-section, .diff-configs-table-section { margin-top: 0.85rem; } .repository-table.app-table .p-datatable-thead > tr > th, .repository-table.app-table .p-datatable-tbody > tr > td { padding-inline: 0.72rem; } } .layout-footer__author { display: inline-flex; align-items: center; gap: 0.55rem; padding: 0.45rem 0.85rem; border-radius: 999px; border: 1px solid var(--border-color); background: color-mix(in srgb, var(--surface-1) 90%, transparent); } .layout-footer__author-label { color: var(--text-soft); } .layout-footer__author strong { font-size: 0.82rem; text-transform: none; letter-spacing: 0.04em; } .layout-footer__author a { font-size: 0.78rem; font-weight: 700; } .settings-interface-intro, .settings-automation-intro { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; padding: 0.95rem 1rem; border: 1px dashed var(--border-strong); border-radius: 18px; background: rgba(75, 144, 217, 0.04); } .settings-interface-intro strong, .settings-automation-intro strong, .repository-compare__header strong { font-family: var(--font-title); font-size: 0.95rem; letter-spacing: 0.05em; } .settings-interface-intro p, .settings-automation-intro p, .repository-compare__header p, .scheduler-card__hint { margin: 0.25rem 0 0; color: var(--text-soft); line-height: 1.55; } .choice-toggle { display: inline-grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.35rem; padding: 0.3rem; border: 1px solid var(--border-color); border-radius: 999px; background: color-mix(in srgb, var(--surface-1) 92%, transparent); overflow: hidden; } .choice-toggle__btn { min-width: 92px; border: 0; border-radius: 999px; padding: 0.52rem 0.8rem; background: transparent; color: var(--text-soft); font-family: var(--font-title); font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; cursor: pointer; transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease; font-weight: 700; } body.dark-theme .choice-toggle { background: rgba(8, 14, 22, 0.52); border-color: rgba(146, 170, 194, 0.24); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03); } body.dark-theme .choice-toggle__btn { color: #b8c8d8; } body.dark-theme .choice-toggle__btn:hover { background: rgba(255, 255, 255, 0.06); color: #edf3f8; } body.dark-theme .choice-toggle__btn.is-active { background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 82%, #fff 0%), color-mix(in srgb, var(--blue) 85%, #fff 0%)); color: #0f1720; } .p-confirm-dialog { border-radius: 24px; overflow: hidden; border: 1px solid var(--border-color); box-shadow: var(--shadow-lg); } .p-confirm-dialog .p-dialog-header { padding: 1rem 1.15rem 0.75rem; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 98%, transparent), color-mix(in srgb, var(--surface-0) 98%, transparent)); border-bottom: 1px solid var(--border-color); } .p-confirm-dialog .p-dialog-title { font-family: var(--font-title); letter-spacing: 0.08em; } .p-confirm-dialog .p-dialog-content { padding: 1rem 1.15rem 0.5rem; line-height: 1.65; background: color-mix(in srgb, var(--surface-0) 98%, transparent); } .p-confirm-dialog .p-confirm-dialog-icon { width: 2.6rem; height: 2.6rem; display: inline-grid; place-items: center; border-radius: 16px; background: color-mix(in srgb, var(--warning) 14%, transparent); color: var(--warning); margin-right: 0.85rem; } .p-confirm-dialog .p-dialog-footer { display: flex; justify-content: flex-end; gap: 0.65rem; padding: 0.9rem 1.15rem 1rem; background: color-mix(in srgb, var(--surface-1) 98%, transparent); border-top: 1px solid var(--border-color); } body.dark-theme .p-confirm-dialog .p-confirm-dialog-icon { background: rgba(240, 180, 91, 0.14); } .settings-actions, .settings-actions--sticky { justify-content: center; } /* ========================================================= SWOS / BETA ========================================================= */ .beta-banner { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1rem 1.05rem; border-radius: 16px; border: 1px solid color-mix(in srgb, var(--warning) 36%, var(--border-color)); background: linear-gradient(180deg, color-mix(in srgb, var(--warning) 10%, transparent), color-mix(in srgb, var(--surface-1) 94%, transparent)); } .beta-banner p { margin: 0.45rem 0 0; color: var(--text-soft); line-height: 1.6; } .swos-beta-grid { align-items: start; } .swos-beta-actions { grid-column: 1 / -1; justify-content: flex-start; flex-wrap: wrap; } .swos-beta-result { display: grid; gap: 0.85rem; } .swos-beta-result__item { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.9rem 1rem; border-radius: 14px; border: 1px solid var(--border-color); background: color-mix(in srgb, var(--surface-1) 90%, transparent); } .swos-beta-result__item span { color: var(--text-soft); font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; } .swos-beta-result__item strong { text-align: right; } .swos-beta-note, .beta-error { padding: 0.9rem 1rem; border-radius: 14px; line-height: 1.6; } .swos-beta-note { border: 1px solid var(--border-color); color: var(--text-soft); background: color-mix(in srgb, var(--surface-1) 88%, transparent); } .beta-error { border: 1px solid color-mix(in srgb, var(--danger) 38%, var(--border-color)); color: color-mix(in srgb, var(--danger) 82%, var(--text-main)); background: color-mix(in srgb, var(--danger) 8%, transparent); } .router-dialog-header { display: flex; align-items: center; gap: 0.9rem; width: calc(100% - 0.5rem); } .router-dialog-header__icon { width: 3rem; height: 3rem; border-radius: 18px; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, rgba(75, 144, 217, 0.24), rgba(79, 181, 147, 0.14)); border: 1px solid rgba(75, 144, 217, 0.2); color: var(--primary); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } .router-dialog-header__icon .pi { font-size: 1.05rem; } .router-dialog-header__text { min-width: 0; } .router-dialog-header__eyebrow { font-family: var(--font-title); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-soft); } .router-dialog-header__title { margin-top: 0.2rem; font-family: var(--font-title); font-size: 1.18rem; line-height: 1.25; } .router-dialog-header__text small { display: block; margin-top: 0.3rem; max-width: 42rem; line-height: 1.55; } .router-dialog-form { display: grid; gap: 1rem; } .router-dialog-panel:first-child { margin-top: 1rem; } .router-dialog-panel__header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 0.95rem; } .router-dialog-panel__header strong { display: block; font-family: var(--font-title); font-size: 0.88rem; letter-spacing: 0.1em; text-transform: uppercase; } .router-dialog-panel__header p { margin: 0.35rem 0 0; color: var(--text-soft); line-height: 1.55; } .router-dialog-pill { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.55rem 0.85rem; border-radius: 999px; border: 1px solid rgba(75, 144, 217, 0.18); background: rgba(75, 144, 217, 0.08); color: var(--text-main); font-family: var(--font-title); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; } .router-dialog-grid { gap: 0.95rem 1rem; } .router-dialog-note { margin-top: 0.9rem; padding: 0.85rem 0.95rem; border-radius: 16px; border: 1px solid rgba(75, 144, 217, 0.18); background: rgba(75, 144, 217, 0.08); color: var(--text-soft); display: flex; align-items: flex-start; gap: 0.65rem; line-height: 1.55; } .router-dialog-note .pi { margin-top: 0.1rem; color: var(--accent); } .router-dialog .p-inputtext, .router-dialog .p-inputtextarea { background: rgba(255, 255, 255, 0.02); } .router-dialog .p-inputtextarea { min-height: 11rem; } .router-dialog-actions { justify-content: space-between; gap: 0.75rem; padding-top: 0.1rem; } .router-dialog-actions .p-button { min-width: 11rem; } .p-select, .p-inputtext, .p-textarea, .p-inputtextarea, textarea.p-inputtextarea, textarea.p-textarea { width: 100%; } .p-button:not(.p-button-secondary):not(.p-button-help):not(.p-button-danger):not(.p-button-text):not(.p-button-outlined) { background: var(--primary); border-color: var(--primary); color: #f8fbff; } body.dark-theme .p-button:not(.p-button-secondary):not(.p-button-help):not(.p-button-danger):not(.p-button-text):not(.p-button-outlined) { background: var(--primary); border-color: var(--primary); color: #17212b; } .p-select, .p-textarea, .p-inputtextarea, .p-inputtext, textarea.p-inputtextarea, textarea.p-textarea { border-radius: 14px; border: 1px solid rgba(126, 142, 158, 0.24); background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(247, 245, 241, 0.98) 100%); color: var(--text-main); box-shadow: 0 8px 18px rgba(15, 23, 42, 0.05); transition: border-color 0.16s ease, box-shadow 0.16s ease, background-color 0.16s ease; } body.dark-theme .p-select, body.dark-theme .p-textarea, body.dark-theme .p-inputtextarea, body.dark-theme .p-inputtext, body.dark-theme textarea.p-inputtextarea, body.dark-theme textarea.p-textarea { background: linear-gradient(180deg, rgba(28, 38, 50, 0.98) 0%, rgba(23, 33, 44, 0.98) 100%); color: var(--text-main); border-color: rgba(146, 170, 194, 0.18); box-shadow: 0 12px 24px rgba(5, 10, 18, 0.26); } .p-select { display: flex; align-items: center; min-height: 3rem; overflow: hidden; } .p-select:not(.p-disabled):hover { border-color: rgba(141, 89, 58, 0.42); background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(244, 241, 236, 0.98) 100%); } body.dark-theme .p-select:not(.p-disabled):hover { border-color: rgba(75, 144, 217, 0.24); background: linear-gradient(180deg, rgba(29, 39, 51, 0.985) 0%, rgba(24, 34, 45, 0.985) 100%); } .p-select.p-focus, .p-select.p-inputwrapper-focus { border-color: rgba(141, 89, 58, 0.62); box-shadow: 0 0 0 3px rgba(141, 89, 58, 0.12), 0 10px 24px rgba(15, 23, 42, 0.06); } body.dark-theme .p-select.p-focus, body.dark-theme .p-select.p-inputwrapper-focus { border-color: #4f95df; box-shadow: 0 0 0 3px rgba(79, 149, 223, 0.16), 0 16px 30px rgba(5, 10, 18, 0.28); } .p-select .p-select-label, .p-select .p-select-label.p-placeholder { width: 100%; min-height: 0; padding: 0.84rem 0 0.84rem 1rem; border: 0; border-radius: 0; background: transparent; box-shadow: none; display: flex; align-items: center; font-family: var(--font-body); font-size: 0.94rem; font-weight: 500; line-height: 1.3; letter-spacing: 0; text-transform: none; color: var(--text-main); } .p-select .p-select-label.p-placeholder { font-weight: 400; color: var(--text-soft); } .repository-toolbar .p-select .p-select-label, .repository-compare .p-select .p-select-label { font-size: 0.95rem; line-height: 1.3; } .p-select .p-select-dropdown { width: 2.85rem; display: grid; place-items: center; align-self: stretch; color: var(--text-soft); flex: 0 0 2.85rem; background: transparent; } .p-select .p-select-dropdown .p-icon { width: 0.95rem; height: 0.95rem; } .p-inputtext:enabled:focus, .p-textarea:enabled:focus, .p-inputtextarea:enabled:focus, textarea.p-inputtextarea:enabled:focus, textarea.p-textarea:enabled:focus { border-color: color-mix(in srgb, var(--blue) 72%, var(--border-strong)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 18%, transparent); } body.dark-theme .auth-card .p-inputtext, body.dark-theme .auth-card .p-select, body.dark-theme .auth-card .p-textarea, body.dark-theme .auth-card .p-inputtextarea { color: var(--text-main); border-color: var(--border-color); background: rgba(255, 255, 255, 0.035); } body.dark-theme .auth-card .p-inputtext::placeholder, body.dark-theme .auth-card .p-textarea::placeholder, body.dark-theme .auth-card .p-inputtextarea::placeholder { color: var(--text-soft); } body.dark-theme .auth-card .p-inputtext:enabled:focus, body.dark-theme .auth-card .p-textarea:enabled:focus, body.dark-theme .auth-card .p-inputtextarea:enabled:focus { border-color: var(--blue); box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 18%, transparent); } .p-select-overlay { backdrop-filter: blur(18px); background: linear-gradient(180deg, rgba(251, 250, 247, 0.98) 0%, rgba(244, 242, 238, 0.98) 100%); border: 1px solid rgba(126, 142, 158, 0.16); color: var(--text-main); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12); border-radius: 16px; overflow: hidden; } body.dark-theme .p-select-overlay { background: linear-gradient(180deg, rgba(34, 46, 61, 0.98) 0%, rgba(24, 34, 45, 0.98) 100%); border-color: rgba(146, 170, 194, 0.12); box-shadow: 0 22px 48px rgba(5, 10, 18, 0.38); } .p-select-list { padding: 0.35rem 0; background: transparent; gap: 0; } body.dark-theme .p-select-list { background: transparent; } .p-select-option { border-radius: 0; padding: 0.82rem 1rem; font-size: 0.92rem; line-height: 1.35; color: var(--text-main); transition: background-color 0.12s ease, color 0.12s ease; } .p-select-option:hover { background: rgba(17, 20, 23, 0.045); color: #111417; } .p-select-option.p-focus { background: rgba(17, 20, 23, 0.055); color: #111417; } .p-select-option.p-select-option-selected { background: rgba(141, 89, 58, 0.09); color: #6f452d; font-weight: 600; } body.dark-theme .p-select-option { color: #dbe5ef; } body.dark-theme .p-select-option:hover { background: rgba(255, 255, 255, 0.03); color: #f4f8fb; } body.dark-theme .p-select-option.p-focus { background: rgba(255, 255, 255, 0.04); color: #f4f8fb; } body.dark-theme .p-select-option.p-select-option-selected { background: rgba(75, 144, 217, 0.22); color: #f4f8fb; font-weight: 600; } .p-textarea, .p-inputtextarea, textarea.p-textarea, textarea.p-inputtextarea { padding: 0.82rem 0.9rem; } .router-dialog.p-dialog { border: 1px solid var(--border-color); background: var(--surface-1); box-shadow: var(--shadow-lg); } body.dark-theme .router-dialog.p-dialog { border-color: color-mix(in srgb, var(--border-color) 65%, transparent); } .router-dialog .p-dialog-header { align-items: flex-start; padding: 1.1rem 1.2rem 0.95rem; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 98%, transparent), color-mix(in srgb, var(--surface-0) 98%, transparent)); border-bottom: 1px solid var(--border-color); } .router-dialog .p-dialog-content { padding: 0 1.2rem 1.2rem; background: color-mix(in srgb, var(--surface-0) 98%, transparent); } .router-dialog .p-dialog-header-icons { align-self: flex-start; margin-top: 0.2rem; } .router-dialog-panel { padding: 1rem; border-radius: 22px; background: color-mix(in srgb, var(--surface-0) 96%, transparent); border: 1px solid var(--border-color); box-shadow: none; } .router-dialog .p-select, .router-dialog .p-textarea, .router-dialog .p-inputtextarea, .router-dialog .p-inputtext { background: color-mix(in srgb, var(--surface-1) 90%, transparent); } body.dark-theme .router-dialog .p-select, body.dark-theme .router-dialog .p-textarea, body.dark-theme .router-dialog .p-inputtextarea, body.dark-theme .router-dialog .p-inputtext, body.dark-theme .router-dialog-panel { background: rgba(255, 255, 255, 0.03); border-color: var(--border-color); } .repository-toolbar__search .p-input-icon-left { position: relative; display: block; width: 100%; } .repository-toolbar__search .p-input-icon-left > i { position: absolute; top: 50%; left: 0.9rem; transform: translateY(-50%); margin: 0; z-index: 1; color: var(--text-soft); pointer-events: none; line-height: 1; } .repository-toolbar__search .p-input-icon-left > .p-inputtext { display: block; width: 100%; min-height: 2.75rem; padding-left: 2.5rem; } body.dark-theme .p-toast .p-toast-summary, body.dark-theme .p-toast .p-toast-detail, body.dark-theme .p-toast .p-toast-message-icon, body.dark-theme .p-toast .p-toast-icon-close { color: var(--text-main); } .repository-table .p-paginator .p-paginator-pages .p-paginator-page, .repository-table .p-paginator .p-paginator-next, .repository-table .p-paginator .p-paginator-prev, .repository-table .p-paginator .p-select { min-width: 2rem; height: 2rem; } .device-settings-form { display: block; } .device-settings-stack { display: grid; gap: 12px; } .device-settings-actions { margin-top: 16px; } .device-toggle { position: relative; display: grid; grid-template-columns: auto auto auto minmax(0,1fr) auto; align-items: center; gap: 14px; padding: 16px 18px; border: 1px solid color-mix(in srgb,var(--border-color) 88%, transparent); border-radius: 18px; background: linear-gradient(135deg,color-mix(in srgb,var(--surface-1) 92%, transparent),color-mix(in srgb,var(--surface-2) 90%, transparent)); cursor: pointer; transition: border-color .15s ease,transform .15s ease,background .15s ease,box-shadow .15s ease; box-shadow: var(--shadow-md); overflow: hidden; } .device-toggle::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent); opacity: 0; transition: opacity .15s ease; } .device-toggle:hover { border-color: color-mix(in srgb,var(--accent) 55%, var(--border-color)); transform: translateY(-1px); } .device-toggle:hover::after,.device-toggle.is-active::after { opacity: 1; } .device-toggle.is-active { border-color: color-mix(in srgb,var(--accent) 60%, var(--border-color)); background: linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%, var(--surface-1)),color-mix(in srgb,var(--accent) 6%, var(--surface-2))); box-shadow: 0 16px 40px -26px color-mix(in srgb,var(--accent) 45%, transparent),var(--shadow-md); } .device-toggle input { position: absolute; opacity: 0; pointer-events: none; inline-size: 1px; block-size: 1px; } .device-toggle__switch { position: relative; display: inline-flex; align-items: center; inline-size: 46px; block-size: 26px; border-radius: 999px; background: color-mix(in srgb,var(--surface-3) 88%, transparent); border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); box-shadow: inset 0 1px 2px rgba(0,0,0,.16); transition: background .15s ease,border-color .15s ease,box-shadow .15s ease; } .device-toggle__switch::after { content: ""; position: absolute; inset: 3px auto 3px 3px; inline-size: 18px; block-size: 18px; border-radius: 50%; background: var(--text-main); box-shadow: 0 4px 10px rgba(0,0,0,.18); transition: transform .15s ease,background .15s ease; } .device-toggle__icon { display: grid; place-items: center; inline-size: 40px; block-size: 40px; border-radius: 12px; background: color-mix(in srgb,var(--surface-3) 84%, transparent); border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); color: var(--text-muted); font-size: 1rem; } .device-toggle.is-active .device-toggle__icon { color: var(--accent); border-color: color-mix(in srgb,var(--accent) 35%, var(--border-color)); background: color-mix(in srgb,var(--accent) 12%, var(--surface-3)); } .device-toggle.is-active .device-toggle__switch { background: color-mix(in srgb,var(--accent) 20%, var(--surface-3)); border-color: color-mix(in srgb,var(--accent) 35%, var(--border-color)); box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--accent) 20%, transparent); } .device-toggle.is-active .device-toggle__switch::after { transform: translateX(20px); background: var(--accent); } .device-toggle__content { display: grid; gap: 4px; min-width: 0; } .device-toggle__content strong { font-size: .94rem; color: var(--text-main); } .device-toggle__content small { line-height: 1.45; color: var(--text-muted); } .device-toggle__state { font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--text-muted); padding: 8px 10px; border-radius: 999px; background: color-mix(in srgb,var(--surface-3) 88%, transparent); border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); } .device-toggle.is-active .device-toggle__state { color: var(--accent); border-color: color-mix(in srgb,var(--accent) 28%, var(--border-color)); background: color-mix(in srgb,var(--accent) 12%, var(--surface-3)); } body.dark-theme .device-toggle { background: linear-gradient(135deg,color-mix(in srgb,var(--surface-2) 94%, transparent),color-mix(in srgb,var(--surface-1) 88%, transparent)); } body.dark-theme .device-toggle.is-active { background: linear-gradient(135deg,color-mix(in srgb,var(--accent) 14%, var(--surface-2)),color-mix(in srgb,var(--accent) 7%, var(--surface-1))); } /* <= 1100px */ @media (max-width: 1100px) { .router-detail-split-grid { grid-template-columns: minmax(0,1fr); } } .router-header-actions--mobile { display: none; } .mobile-actions-menu { position: relative; } .mobile-actions-menu summary { display: inline-flex; align-items: center; gap: 10px; list-style: none; cursor: pointer; padding: 10px 14px; border-radius: 14px; border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); background: color-mix(in srgb,var(--surface-2) 92%, transparent); color: var(--text-main); font-weight: 700; box-shadow: var(--shadow-sm); } .mobile-actions-menu summary::-webkit-details-marker { display: none; } .mobile-actions-menu[open] summary { border-color: color-mix(in srgb,var(--accent) 36%, var(--border-color)); } .mobile-actions-menu__list { position: absolute; right: 0; top: calc(100% + 10px); z-index: 20; display: grid; gap: 10px; min-inline-size: min(320px,calc(100vw - 32px)); padding: 12px; border-radius: 18px; border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); background: color-mix(in srgb,var(--surface-1) 96%, transparent); box-shadow: var(--shadow-lg); backdrop-filter: blur(14px); } .mobile-actions-menu__list .p-button { width: 100%; justify-content: flex-start; } .settings-device-toggles { margin-bottom: 18px; } .settings-device-toggles .device-toggle { grid-template-columns: auto auto auto minmax(0,1fr); } .settings-device-toggles .device-toggle__content { padding-right: 0; } /* <= 768px */ @media (max-width: 768px) { .router-header-actions--desktop { display: none; } .router-header-actions--mobile { display: block; width: 100%; } .mobile-actions-menu { width: 100%; } .mobile-actions-menu summary { margin-left: auto; } .mobile-actions-menu__list { position: static; right: auto; top: auto; min-inline-size: 0; width: 100%; margin-top: 10px; } } .repository-table .table-actions--labels, .repository-table .table-actions--tight { align-items: center; } .repository-table .table-actions--tight { flex-wrap: wrap; overflow-x: visible; } .repository-table .p-button.table-action-btn, .repository-table .p-button.table-action-btn--wide, .repository-table .p-button.table-action-btn--compact { width: auto; flex: 0 0 auto; } .repository-table .p-column-title { display: none; display: none !important; } .repository-table--files .p-datatable-thead > tr > th:first-child, .repository-table--files .p-datatable-tbody > tr > td:first-child { width: 3rem; padding-inline: 0.55rem; } .repository-table--router-detail .p-datatable-thead > tr > th:first-child, .repository-table--router-detail .p-datatable-tbody > tr > td:first-child, .repository-table--diff .p-datatable-thead > tr > th:first-child, .repository-table--diff .p-datatable-tbody > tr > td:first-child { width: auto; padding-inline: 0.8rem; } .repository-table--routers.app-table .p-datatable-thead > tr > th:first-child, .repository-table--routers.app-table .p-datatable-tbody > tr > td:first-child { width: 18%; min-width: 220px; max-width: 0; } .repository-table--routers .table-primary--ellipsis { max-width: 100%; } .repository-table .table-primary--ellipsis { display: block; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .repository-table .table-secondary { margin-top: 0.18rem; font-size: 0.74rem; line-height: 1.35; min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; word-break: break-word; overflow: hidden; text-overflow: ellipsis; } .repository-table.app-table .p-datatable-thead > tr > th, .repository-table.app-table .p-datatable-tbody > tr > td { min-width: 0; } .repository-table.app-table .p-datatable-thead > tr > th:last-child, .repository-table.app-table .p-datatable-tbody > tr > td:last-child { width: 280px; min-width: 280px; white-space: normal; } .repository-table--diff.app-table .p-datatable-thead > tr > th:last-child, .repository-table--diff.app-table .p-datatable-tbody > tr > td:last-child { width: 220px; min-width: 220px; } .repository-table .table-actions--desktop-row { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; gap: 0.45rem; overflow: hidden; } .repository-table .table-actions--desktop-row .p-button { flex: 0 0 auto; } .repository-table .table-row-menu { display: none; position: relative; } .repository-table .table-row-menu summary { display: inline-flex; align-items: center; gap: 8px; list-style: none; cursor: pointer; padding: 8px 12px; border-radius: 12px; border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); background: color-mix(in srgb,var(--surface-2) 92%, transparent); color: var(--text-main); font-weight: 700; white-space: nowrap; } .repository-table .table-row-menu summary::-webkit-details-marker { display: none; } .repository-table .table-row-menu__list { position: absolute; right: 0; top: calc(100% + 8px); z-index: 25; display: grid; gap: 8px; min-width: 220px; padding: 10px; border-radius: 16px; border: 1px solid color-mix(in srgb,var(--border-color) 82%, transparent); background: color-mix(in srgb,var(--surface-1) 96%, transparent); box-shadow: var(--shadow-lg); } /* <= 1400px */ @media (max-width: 1400px) { .repository-table--router-detail .table-actions--desktop-row, .repository-table--diff .table-actions--desktop-row { display: none; } .repository-table--router-detail .table-row-menu, .repository-table--diff .table-row-menu { display: inline-block; } } .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(2), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(2) { width: 18%; max-width: 0; } .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(7), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(7) { width: 20%; min-width: 230px; white-space: normal; } .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(8), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(8) { width: 20%; min-width: 200px; white-space: normal; } .repository-table--files .table-actions--desktop-row { display: flex; flex-direction: column; align-items: flex-start; gap: 0.45rem; } .repository-table--files .table-actions--desktop-row .p-button { width: 100%; justify-content: center; } .repository-table--files .table-primary--ellipsis, .repository-table--files .table-secondary { max-width: 100%; } /* <= 1520px */ @media (max-width: 1520px) { .repository-table--files .table-actions--desktop-row { display: none; } .repository-table--files .table-row-menu { display: inline-block; } } /* <= 960px */ @media (max-width: 960px) { .repository-table.app-table .p-datatable-wrapper { overflow-x: hidden; } .repository-table.app-table .p-datatable-table { width: 100% !important; table-layout: fixed; } .repository-table.app-table .p-datatable-tbody > tr > td { align-items: flex-start; gap: 0.45rem; min-width: 0; max-width: 100%; overflow: hidden; box-sizing: border-box; } .repository-table .table-actions--stack, .repository-table .table-actions--labels { width: 100%; min-width: 0; } .repository-table .p-button.table-action-btn, .repository-table .p-button.table-action-btn--wide, .repository-table .p-button.table-action-btn--compact { width: 100%; justify-content: center; } .repository-table .p-button .p-button-label { white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .repository-table .p-column-title { display: inline-flex; display: inline-flex !important; align-items: center; } .repository-table.app-table .p-datatable-thead > tr > th:last-child, .repository-table.app-table .p-datatable-tbody > tr > td:last-child, .repository-table--diff.app-table .p-datatable-thead > tr > th:last-child, .repository-table--diff.app-table .p-datatable-tbody > tr > td:last-child { width: auto; min-width: 0; } .repository-table .table-actions--desktop-row, .repository-table .table-row-menu { display: none !important; } .repository-table .table-primary--ellipsis, .repository-table .table-secondary { white-space: normal; overflow: visible; text-overflow: unset; } .repository-table--routers.app-table .p-datatable-thead > tr > th:first-child, .repository-table--routers.app-table .p-datatable-tbody > tr > td:first-child { width: auto; min-width: 0; max-width: none; } .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(2), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(2), .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(7), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(7), .repository-table--files.app-table .p-datatable-thead > tr > th:nth-child(8), .repository-table--files.app-table .p-datatable-tbody > tr > td:nth-child(8) { width: auto; min-width: 0; max-width: none; } .repository-table .table-row-menu { display: inline-block !important; width: 100%; } .repository-table.app-table .p-datatable-tbody > tr > td:last-child { overflow: visible; } .repository-table .table-row-menu summary { width: 100%; justify-content: center; } .repository-table .table-row-menu__list { position: static; right: auto; top: auto; width: 100%; min-width: 0; margin-top: 8px; } } .form-field-error { display: block; margin-top: 0.35rem; font-size: 0.78rem; line-height: 1.35; color: var(--red-400); } .repository-table .table-row-menu__list .p-button { width: 100%; justify-content: flex-start; }