/* ===================================================== BastionGuard™ Secure Connection — BSC.css (chiaro) Copyright (C) 2025–2026 Calogero Scarnà ===================================================== */ /* ── RESET ─────────────────────────────────────────── */ * { all: unset; font-family: system-ui, sans-serif; font-size: 14px; color: #212529; } /* ── FINESTRA ───────────────────────────────────────── */ window { background-color: #f8f9fa; border-radius: 12px; } /* ── HEADER BAR ─────────────────────────────────────── */ headerbar.custom-headerbar { background: transparent; border: none; min-height: 32px; padding: 0; } headerbar .header-left { background-color: #f8f9fa; border-top-left-radius: 12px; padding: 4px 8px; } headerbar .header-right { background-color: #f8f9fa; padding: 4px 8px; } headerbar button.header-button { background: transparent; border: none; min-width: 28px; min-height: 28px; padding: 4px; border-radius: 6px; } headerbar button.header-button:hover { background: rgba(0,0,0,0.1); } /* ── SELETTORE TEMA ─────────────────────────────────── */ .theme-btn { font-size: 1.2em; padding: 2px 6px; border-radius: 6px; opacity: 0.5; background: transparent; } .theme-btn-active { opacity: 1.0; background-color: rgba(0,0,0,0.10); } .theme-btn:hover { opacity: 0.85; background-color: rgba(0,0,0,0.08); } /* ── SIDEBAR ─────────────────────────────────────────── */ .sidebar { background-color: #3a6ea5; border-bottom-left-radius: 12px; padding: 12px; min-width: 200px; max-width: 240px; } .sidebar-header { padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.15); } .sidebar-title { font-weight: bold; font-size: 15px; color: #ffffff; } .sidebar .sidebar-button { color: #ffffff; background-color: transparent; border-radius: 8px; padding: 4px 6px; } .sidebar .sidebar-button:hover { background-color: rgba(255,255,255,0.15); } .sidebar .sidebar-button:active { background-color: rgba(255,255,255,0.25); } .sidebar .sidebar-button.active-sidebar-button { background-color: rgba(255,255,255,0.25); } .sidebar .sidebar-button label { color: #ffffff; font-weight: 500; } .sidebar-separator { background-color: rgba(255,255,255,0.15); margin: 4px 0; } .daemon-status { color: rgba(255,255,255,0.75); font-size: 12px; } /* ── STACK / CONTENT ─────────────────────────────────── */ stack { background-color: #f8f9fa; padding: 16px; } /* ── CARD ────────────────────────────────────────────── */ .card { background: #ffffff; border: 1px solid #dee2e6; border-radius: 12px; padding: 8px; } .card label { color: #212529; font-size: 14px; line-height: 1.3; } /* ── TREEVIEW / LISTVIEW ─────────────────────────────── */ treeview { background: #ffffff; border: 1px solid #dee2e6; border-radius: 8px; } treeview header button { background: #f1f3f5; border-bottom: 1px solid #dee2e6; padding: 6px 10px; font-weight: 600; } treeview row { padding: 4px 8px; border-radius: 4px; } treeview row:hover { background-color: rgba(128,0,0,0.08); } treeview row:selected, treeview row:selected:focus { background-color: #3a6ea5; color: #ffffff; } treeview row:selected *, treeview row:selected:focus * { color: #ffffff; } /* ── NOTEBOOK (tab) ──────────────────────────────────── */ notebook > header tab { padding: 6px 12px; border-radius: 6px 6px 0 0; background: transparent; } notebook > header tab:checked { background-color: #ffffff; border-bottom: 2px solid #3a6ea5; } notebook > header tab:hover:not(:checked) { background-color: rgba(128,0,0,0.08); } /* ── BUTTONS ─────────────────────────────────────────── */ button.suggested-action { background-color: #3a6ea5; color: #ffffff; border-radius: 8px; padding: 6px 14px; font-weight: 600; } button.suggested-action:hover { background-color: #6b0000; } button.suggested-action:active { background-color: #550000; } button.destructive-action { background-color: #c0392b; color: #ffffff; border-radius: 8px; padding: 6px 14px; font-weight: 600; } button.destructive-action:hover { background-color: #a93226; } button.destructive-action:active { background-color: #922b21; } button { background-color: #e9ecef; color: #212529; border-radius: 8px; padding: 6px 14px; } button:hover { background-color: #dee2e6; } button:active { background-color: #ced4da; } /* ── SWITCH / TOGGLE ─────────────────────────────────── Il reset globale `* { all: unset; }` rimuove il rendering nativo di GtkSwitch. Queste regole rendono visibile il toggle usato nelle Impostazioni. */ switch, switch.bsc-toggle-switch { min-width: 52px; min-height: 28px; border-radius: 999px; padding: 2px; background-color: #ced4da; border: 1px solid #adb5bd; } switch:hover, switch.bsc-toggle-switch:hover { background-color: #adb5bd; } switch:checked, switch.bsc-toggle-switch:checked { background-color: #2fb344; border-color: #2f9e44; } switch:disabled, switch.bsc-toggle-switch:disabled { opacity: 0.45; } switch slider, switch.bsc-toggle-switch slider { min-width: 24px; min-height: 24px; border-radius: 999px; background-color: #ffffff; box-shadow: 0 1px 3px rgba(0,0,0,0.28); } /* ── ENTRY / SEARCH ──────────────────────────────────── */ entry, searchentry { background: #ffffff; border: 1px solid #ced4da; border-radius: 8px; padding: 6px 10px; color: #212529; } entry:focus, searchentry:focus { border-color: #3a6ea5; } /* ── PROGRESSBAR ─────────────────────────────────────── */ progressbar trough { background-color: #dee2e6; border-radius: 99px; min-height: 8px; } progressbar progress { background-color: #3a6ea5; border-radius: 99px; } /* ── SCROLLBAR ───────────────────────────────────────── */ scrollbar { background: transparent; } scrollbar slider { background-color: rgba(0,0,0,0.2); border-radius: 99px; min-width: 6px; min-height: 6px; } scrollbar slider:hover { background-color: rgba(0,0,0,0.35); } /* ── STATUSBAR ───────────────────────────────────────── */ statusbar { background-color: #e9ecef; border-top: 1px solid #dee2e6; padding: 4px 12px; font-size: 12px; color: #495057; } /* ── ALERT ───────────────────────────────────────────── */ .alert-success { background-color: #17a2b8; border-radius: 6px; padding: 4px 14px; } .alert-success label { color: white; font-weight: bold; } .alert-danger { background-color: #c01c28; border-radius: 6px; padding: 4px 14px; } .alert-danger label { color: white; font-weight: bold; } /* ── POPUP ALERT DIALOG ──────────────────────────────── */ .alert-dialog-box { background: #ffffff; border-radius: 16px; padding: 20px; } .alert-dialog-title { font-size: 16px; font-weight: 700; color: #212529; } .alert-dialog-dest { font-size: 13px; color: #495057; } /* ── RULE WIZARD DIALOG ───────────────────────────────── */ window.bsc-rule-dialog, dialog.bsc-rule-dialog { background-color: inherit; border-radius: 12px; } .bsc-rule-dialog .bsc-rule-dialog-body { background: transparent; } .dialog-intro { color: inherit; opacity: 0.92; } .rule-dialog-card { padding: 0; } .dialog-label { font-weight: 600; } .dialog-field { min-width: 260px; } checkbutton.dialog-check { padding-top: 4px; } checkbutton.dialog-check label { color: inherit; font-weight: 500; } combobox, combobox box, combobox button, .dropdown, dropdown button { border-radius: 8px; } button.dialog-secondary { font-weight: 500; } /* ── ALERT DIALOG (popup connessione) ───────────────── */ .bsc-alert-dialog { background-color: #ffffff; border-radius: 12px; } .bsc-alert-dialog .bsc-alert-app-name { color: #1a1a1a; } .bsc-alert-dialog .bsc-alert-info { background-color: #f1f3f5; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px; } .bsc-alert-dialog .bsc-alert-info label { color: #212529; padding: 2px 0; } /* ── PAGE TITLES ────────────────────────────────────── */ .bsc-page-title { color: #212529; font-size: 1.05em; } /* ── TREEVIEW (Connessioni, Applicazioni, Regole) ───── */ .bsc-treeview { background-color: #ffffff; border-radius: 8px; border: 1px solid #dee2e6; } .bsc-treeview header button { background-color: #f1f3f5; color: #495057; font-weight: 600; padding: 8px 10px; border: none; border-bottom: 1px solid #dee2e6; border-right: 1px solid #e9ecef; } .bsc-treeview header button:hover { background-color: #e9ecef; } .bsc-treeview row { padding: 4px 0; color: #212529; } .bsc-treeview row:nth-child(even) { background-color: #fafbfc; } .bsc-treeview row:selected { background-color: #4a7eff; color: #ffffff; } .bsc-scrolled { border: none; } /* ── BOTTONI TOOLBAR (Pulisci, ecc.) ────────────────── */ .bsc-toolbar-button { background-color: #f1f3f5; color: #495057; border: 1px solid #dee2e6; border-radius: 6px; padding: 6px 14px; font-weight: 500; } .bsc-toolbar-button:hover { background-color: #e9ecef; } /* ── ALERT DIALOG ──────────────────────────────────── */ .bsc-alert-dialog { background-color: #ffffff; } .bsc-alert-app-name { color: #212529; } .bsc-alert-info { background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px; } .bsc-alert-info label { color: #495057; } /* ── PAGE HEADER (Connessioni / Applicazioni / Regole) ─ */ .bsc-page-header { margin-bottom: 12px; } .bsc-page-title { color: #212529; font-size: 16px; } /* ── NETWORK MOCKUP STYLE (light) ────────────────────────────────── */ .bsc-map { background: linear-gradient(180deg, rgba(12, 18, 28, 0.98) 0%, rgba(14, 22, 32, 0.98) 100%); border: 1px solid #cfd8e2; border-radius: 14px; padding: 0; box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 8px 22px rgba(15,23,42,0.10); } .bsc-map-widget { border-radius: 14px; background: transparent; } .bsc-network-marker-badge { background: rgba(255,255,255,0.82); color: #17212c; border: 1px solid rgba(0,0,0,0.08); border-radius: 999px; padding: 2px 8px; font-size: 11px; font-weight: 700; min-height: 18px; box-shadow: 0 4px 10px rgba(0,0,0,0.10), inset 0 1px 0 rgba(255,255,255,0.28); } .bsc-network-popover { background: linear-gradient(180deg, rgba(255,255,255,0.92) 0%, rgba(248,250,252,0.88) 100%); border: 1px solid rgba(0,0,0,0.08); border-radius: 22px; padding: 18px 20px; box-shadow: 0 20px 48px rgba(15,23,42,0.16), 0 8px 18px rgba(15,23,42,0.08), inset 0 1px 0 rgba(255,255,255,0.42); } .bsc-network-popover-title { color: #121a24; font-size: 19px; font-weight: 800; letter-spacing: 0.1px; margin-bottom: 6px; } .bsc-network-popover-meta { color: #4b5a6d; font-size: 14px; line-height: 1.55; } .bsc-network-treeview { background: linear-gradient(180deg, rgba(255,255,255,0.96) 0%, rgba(250,252,255,0.96) 100%); border-radius: 12px; border: 1px solid #d3dce7; box-shadow: inset 0 1px 0 rgba(255,255,255,0.35); } .bsc-network-treeview header button { background: linear-gradient(180deg, rgba(247,249,252,0.98) 0%, rgba(239,243,248,0.98) 100%); color: #2e3b4c; font-weight: 700; padding: 10px 12px; border: none; border-bottom: 1px solid #d6dee8; border-right: 1px solid #e5ebf2; box-shadow: inset 0 1px 0 rgba(255,255,255,0.45); } .bsc-network-treeview header button:hover { background: linear-gradient(180deg, rgba(241,245,250,1.0) 0%, rgba(234,239,245,1.0) 100%); } .bsc-network-treeview row { background: transparent; color: #223041; padding: 5px 0; } .bsc-network-treeview row:nth-child(even) { background-color: rgba(15,23,42,0.018); } .bsc-network-treeview row:hover { background-color: rgba(192,64,64,0.05); } .bsc-network-treeview row:selected, .bsc-network-treeview row:selected:focus { background-color: rgba(255, 114, 72, 0.11); color: #101820; } .bsc-network-treeview row:selected *, .bsc-network-treeview row:selected:focus * { color: #101820; } .bsc-network-page .bsc-page-title { color: #1a2430; font-size: 16px; font-weight: 700; } .bsc-network-page .bsc-page-subtitle { color: #6b7787; font-size: 12px; } .bsc-network-page .bsc-toolbar-button { background: linear-gradient(180deg, rgba(246,248,251,0.98) 0%, rgba(238,242,246,0.98) 100%); color: #2d3746; border: 1px solid #d6dee8; border-radius: 8px; padding: 7px 14px; font-weight: 600; } .bsc-network-page .bsc-toolbar-button:hover { background: linear-gradient(180deg, rgba(239,243,248,1.0) 0%, rgba(231,236,242,1.0) 100%); } .alert-success { background-color: #d1e7dd; border: 1px solid #badbcc; border-radius: 8px; padding: 10px; color: #0f5132; } .alert-info { background-color: #cff4fc; border: 1px solid #b6effb; border-radius: 8px; padding: 10px; color: #055160; } .settings-card { background-color: #f8f9fa; border: 1px solid #e1e4e8; border-radius: 14px; padding: 16px; color: #1f2328; } .settings-card-title { color: #1f2328; font-weight: 700; font-size: 1.05rem; } .status-badge-success { background-color: #d1e7dd; color: #0f5132; border: 1px solid #badbcc; border-radius: 999px; padding: 4px 10px; } .status-badge-danger { background-color: #f8d7da; color: #842029; border: 1px solid #f5c2c7; border-radius: 999px; padding: 4px 10px; } .status-badge-warning { background-color: #fff3cd; color: #664d03; border: 1px solid #ffecb5; border-radius: 999px; padding: 4px 10px; } .status-badge-info { background-color: #cff4fc; color: #055160; border: 1px solid #b6effb; border-radius: 999px; padding: 4px 10px; } .alert-info { background-color: #cff4fc; border: 1px solid #b6effb; border-radius: 10px; padding: 12px; color: #055160; }