/* GdzieJacht.pl — motyw panelu klienta (premium marine, tryb nocny).
   Nakładka na style.css: zmienia wyłącznie wygląd stron z klasą .gj-app (panel i logowanie).
   Fonty i tokeny są wspólne ze stroną główną (home.css). */

@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/geist-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/geist-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/geist-mono-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/geist-mono-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

@media screen{
.gj-app{
  /* Tokeny panelu — ciemny motyw (domyślny), te same co na stronie głównej */
  --g-bg:#05090f;--g-bg-1:#070d15;--g-bg-2:#0a121c;--g-bg-3:#0e1925;--g-bg-4:#132131;
  --g-line:rgba(150,180,210,.12);--g-line-2:rgba(150,180,210,.2);--g-line-3:rgba(150,180,210,.32);
  --g-text:#eaf0f5;--g-text-2:#a2b0be;--g-text-3:#7a8998;
  --g-accent:#5cc8e8;--g-accent-2:#9adcf2;--g-accent-dim:rgba(92,200,232,.12);
  --g-accent-rgb:92 200 232;--g-accent-2-rgb:154 220 242;--g-ok-rgb:79 209 165;--g-warn-rgb:237 165 74;--g-danger-rgb:240 122 110;
  --g-ok:#4fd1a5;--g-ok-dim:rgba(79,209,165,.12);
  --g-warn:#eda54a;--g-warn-dim:rgba(237,165,74,.12);
  --g-danger:#f07a6e;--g-danger-dim:rgba(240,122,110,.12);
  --g-fill:rgba(255,255,255,.03);--g-fill-2:rgba(255,255,255,.05);--g-fill-3:rgba(255,255,255,.07);
  --g-input:rgba(5,9,15,.65);--g-header-bg:rgba(5,9,15,.86);--g-float:rgba(10,18,28,.9);--g-attr-bg:rgba(5,9,15,.7);
  --g-btn-bg:#eef4f8;--g-btn-text:#06101a;--g-btn-hover:#fff;
  --g-map-bg:#0b1520;--g-danger-text:#ffc9c2;--g-ok-text:#b6f0dc;
  --g-shadow-rgb:0 0 0;--g-shadow-k:1;--g-toggle-filter:invert(1) brightness(1.4);
  --g-logo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='15' fill='none' stroke='%235cc8e8' stroke-opacity='.35'/%3E%3Ccircle cx='16' cy='16' r='9.5' fill='none' stroke='%235cc8e8' stroke-opacity='.6' stroke-dasharray='2 2.6'/%3E%3Cpath d='M16 6.5 20.2 22 16 19.4 11.8 22Z' fill='%235cc8e8'/%3E%3C/svg%3E");
  --g-summary-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239adcf2' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Cpath d='M12 2v4M12 18v4M2 12h4M18 12h4'/%3E%3C/svg%3E");
  --g-sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --g-mono:"Geist Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --g-ease:cubic-bezier(.2,.7,.2,1);
  /* Przemapowanie zmiennych style.css, aby reguły oparte na nich od razu przyjęły ciemny motyw */
  --bg:var(--g-bg);--panel:var(--g-bg-2);--line:var(--g-line);--text:var(--g-text);--muted:var(--g-text-2);
  --accent:var(--g-accent);--accent-dark:var(--g-accent-2);--danger:var(--g-danger);--success:var(--g-ok);
  --marine:var(--g-bg);--marine-2:var(--g-bg-2);--aqua:var(--g-accent);--shadow:0 40px 80px -40px rgb(var(--g-shadow-rgb) / calc(.8 * var(--g-shadow-k)));
  color-scheme:dark;
  background:radial-gradient(80% 50% at 85% -10%,rgb(var(--g-accent-rgb) / .06),transparent 60%),var(--g-bg) fixed;
  color:var(--g-text);font-family:var(--g-sans);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
/* Jasny motyw: wybierany przyciskiem w nagłówku (data-theme="light" na <html>) */
html[data-theme="light"]:has(body.gj-app){background:#eff4f7}
html[data-theme="light"] .gj-app{
  --g-bg:#eff4f7;--g-bg-1:#e7eef3;--g-bg-2:#ffffff;--g-bg-3:#fafcfd;--g-bg-4:#e3ebf1;
  --g-line:rgba(16,36,53,.11);--g-line-2:rgba(16,36,53,.18);--g-line-3:rgba(16,36,53,.3);
  --g-text:#0f2231;--g-text-2:#475b6a;--g-text-3:#536677;
  --g-accent:#08709a;--g-accent-2:#065d7d;--g-accent-dim:rgba(8,112,154,.1);
  --g-accent-rgb:8 112 154;--g-accent-2-rgb:6 93 125;--g-ok-rgb:9 105 74;--g-warn-rgb:143 76 0;--g-danger-rgb:176 47 33;
  --g-ok:#09694a;--g-ok-dim:rgba(9,105,74,.1);
  --g-warn:#8f4c00;--g-warn-dim:rgba(143,76,0,.1);
  --g-danger:#b02f21;--g-danger-dim:rgba(176,47,33,.09);
  --g-fill:rgba(16,36,53,.03);--g-fill-2:rgba(16,36,53,.05);--g-fill-3:rgba(16,36,53,.08);
  --g-input:#ffffff;--g-header-bg:rgba(255,255,255,.88);--g-float:rgba(255,255,255,.95);--g-attr-bg:rgba(255,255,255,.82);
  --g-btn-bg:#0e2233;--g-btn-text:#ffffff;--g-btn-hover:#1d3b53;
  --g-map-bg:#dde7ee;--g-danger-text:#8f2a1f;--g-ok-text:#0a5c40;
  --g-shadow-rgb:16 36 53;--g-shadow-k:.2;--g-toggle-filter:none;
  --g-logo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='15' fill='none' stroke='%2308709a' stroke-opacity='.35'/%3E%3Ccircle cx='16' cy='16' r='9.5' fill='none' stroke='%2308709a' stroke-opacity='.6' stroke-dasharray='2 2.6'/%3E%3Cpath d='M16 6.5 20.2 22 16 19.4 11.8 22Z' fill='%2308709a'/%3E%3C/svg%3E");
  --g-summary-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2308709a' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='7'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Cpath d='M12 2v4M12 18v4M2 12h4M18 12h4'/%3E%3C/svg%3E");
  color-scheme:light;
  background:radial-gradient(80% 50% at 85% -10%,rgb(var(--g-accent-rgb) / .07),transparent 60%),var(--g-bg) fixed;
}
html:has(body.gj-app){background:#05090f}
.gj-app{min-height:100vh}
.gj-app ::selection{background:rgb(var(--g-accent-rgb) / .3);color:var(--g-text)}
.gj-app :focus-visible{outline:2px solid var(--g-accent);outline-offset:2px}
.gj-app h1,.gj-app h2,.gj-app h3,.gj-app h4{color:var(--g-text);font-family:var(--g-sans);letter-spacing:-.02em}
.gj-app h1{font-weight:600;letter-spacing:-.035em}
.gj-app h2{font-weight:600}
.gj-app p{color:var(--g-text-2)}
.gj-app a{color:inherit}
.gj-app main a:not(.button):not(.device-card):not([class*=leaflet]){color:var(--g-accent-2);text-decoration-color:rgb(var(--g-accent-2-rgb) / .35);text-underline-offset:3px}
.gj-app code{padding:2px 6px;border:1px solid var(--g-line);border-radius:5px;background:var(--g-bg-1);color:var(--g-accent-2);font-family:var(--g-mono);font-size:.85em}
.gj-app hr{border:0;border-top:1px solid var(--g-line)}

/* Nagłówek panelu — ten sam charakter co nawigacja strony głównej */
.gj-app .app-header,.gj-app .topbar{border-bottom:1px solid var(--g-line);background:var(--g-header-bg);box-shadow:none;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%)}
.gj-app .app-brand,.gj-app .topbar .brand{color:var(--g-text);font-family:var(--g-sans);font-size:17px;font-weight:500;letter-spacing:-.02em}
.gj-app .app-brand>span:last-child>span{color:var(--g-text);font-weight:700}
.gj-app .app-brand-mark,.gj-app .topbar .brand-mark{position:relative;width:30px;height:30px;border:0;border-radius:0;background:var(--g-logo) center/contain no-repeat;color:transparent;font-size:0}
.gj-app .app-brand-mark:before,.gj-app .app-brand-mark:after,.gj-app .app-brand-mark span{display:none}
.gj-app .app-navigation>a{border-radius:8px;color:var(--g-text-2);font-size:13.5px;font-weight:500}
.gj-app .app-navigation>a:hover{color:var(--g-text);background:var(--g-fill-2)}
.gj-app .app-navigation>a.active{color:var(--g-text);background:rgb(var(--g-accent-rgb) / .08)}
.gj-app .app-navigation>a.active::after{height:1.5px;background:var(--g-accent);box-shadow:0 0 8px var(--g-accent)}
.gj-app .app-nav-actions button{border:1px solid var(--g-line-2);border-radius:9px;background:var(--g-fill);color:var(--g-text)!important;font-family:var(--g-sans);font-weight:500;box-shadow:none}
.gj-app .app-nav-actions button:hover{border-color:var(--g-line-3);background:var(--g-fill-2)}
.gj-app .notification-button span{color:var(--g-accent)}
.gj-app .app-menu-toggle{border:1px solid var(--g-line-2);border-radius:10px;background:transparent}
.gj-app .app-menu-toggle i{background:var(--g-text)}
.gj-app .topbar nav a,.gj-app .topbar nav button{color:var(--g-text-2);font-size:14px}
.gj-app .topbar nav a:hover{color:var(--g-text)}
.gj-app .topbar nav .nav-login{border-color:var(--g-line-2);border-radius:9px;color:var(--g-text)}
@media(max-width:900px){.gj-app .app-navigation{border-bottom:1px solid var(--g-line);background:var(--g-bg);box-shadow:0 30px 60px rgb(var(--g-shadow-rgb) / calc(.6 * var(--g-shadow-k)))}}

/* Nagłówki stron */
.gj-app .app-eyebrow,.gj-app .section-kicker,.gj-app .eyebrow{color:var(--g-text-3);font-family:var(--g-mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase}
.gj-app .app-eyebrow i{background:var(--g-accent);box-shadow:0 0 0 0 rgb(var(--g-accent-rgb) / .5);animation:gj-dot 2.4s ease-out infinite}
.gj-app .page-heading h1,.gj-app main>h1{color:var(--g-text)}
.gj-app .page-heading p{color:var(--g-text-2)}

/* Przyciski */
.gj-app .button,.gj-app button{border:1px solid var(--g-line-2);border-radius:10px;background:var(--g-fill);color:var(--g-text);font-family:var(--g-sans);font-weight:600;box-shadow:none;transition:background .2s var(--g-ease),border-color .2s var(--g-ease),transform .2s var(--g-ease)}
.gj-app .button:hover,.gj-app button:hover{border-color:var(--g-line-3);background:var(--g-fill-3)}
.gj-app .primary,.gj-app .button.primary,.gj-app button.primary{border-color:var(--g-btn-bg);background:var(--g-btn-bg);color:var(--g-btn-text);box-shadow:none}
.gj-app .primary:hover,.gj-app .button.primary:hover,.gj-app button.primary:hover{border-color:var(--g-btn-hover);background:var(--g-btn-hover);color:var(--g-btn-text);transform:translateY(-1px);box-shadow:0 10px 30px -10px rgb(var(--g-accent-2-rgb) / .45)}
.gj-app .danger-soft,.gj-app .danger-command{border-color:rgb(var(--g-danger-rgb) / .45);background:var(--g-danger-dim);color:#ffb4ab}
.gj-app .danger-soft:hover,.gj-app .danger-command:hover{border-color:var(--g-danger);background:rgb(var(--g-danger-rgb) / .2);color:var(--g-text)}
.gj-app .button-add span{color:inherit}
.gj-app button:disabled{opacity:.5;cursor:not-allowed}

html[data-theme="light"] .gj-app .alert-strip{border-color:rgb(var(--g-warn-rgb) / .3);background:#fff9f0}
html[data-theme="light"] .gj-app .alert-card .alert-icon{background:rgb(var(--g-warn-rgb) / .12)}

/* Przełącznik motywu */
.gj-app .gj-theme-toggle{display:inline-grid;place-items:center;flex:0 0 auto;width:38px;height:38px;min-height:0;padding:0;border:1px solid var(--g-line-2);border-radius:10px;background:var(--g-fill);color:var(--g-text-2);cursor:pointer}
.gj-app .gj-theme-toggle:hover{border-color:var(--g-line-3);background:var(--g-fill-3);color:var(--g-text)}
.gj-app .gj-theme-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.gj-app .gj-theme-toggle .gj-icon-moon{display:none}
html[data-theme="light"] .gj-app .gj-theme-toggle .gj-icon-sun{display:none}
html[data-theme="light"] .gj-app .gj-theme-toggle .gj-icon-moon{display:block}
.gj-app .topbar nav .gj-theme-toggle{margin-left:4px}
html[data-theme="light"] .gj-app .app-brand>span:last-child>span{color:var(--g-text)}

/* Formularze */
.gj-app label{color:var(--g-text-2);font-weight:500}
.gj-app input:not([type=checkbox]):not([type=radio]):not([type=range]),.gj-app select,.gj-app textarea{border:1px solid var(--g-line-2);border-radius:10px;background:var(--g-input);color:var(--g-text);font-family:var(--g-sans);transition:border-color .2s,box-shadow .2s}
.gj-app input::placeholder,.gj-app textarea::placeholder{color:var(--g-text-3)}
.gj-app input:focus,.gj-app select:focus,.gj-app textarea:focus{outline:none;border-color:rgb(var(--g-accent-rgb) / .6)!important;box-shadow:0 0 0 3px rgb(var(--g-accent-rgb) / .12)}
.gj-app select option{background:var(--g-bg-2);color:var(--g-text)}
.gj-app input[type=checkbox],.gj-app input[type=radio],.gj-app input[type=range]{accent-color:var(--g-accent)}
.gj-app fieldset,.gj-app .panel fieldset{border:1px solid var(--g-line);border-radius:12px}
.gj-app legend{color:var(--g-text-2)}
.gj-app .form-grid,.gj-app .history-form{border:1px solid var(--g-line);border-radius:16px;background:var(--g-bg-2);box-shadow:none}

/* Karty i panele */
.gj-app .panel,.gj-app .operation-card,.gj-app .request-item,.gj-app .admin-request-card,.gj-app .charter-item,.gj-app .health-summary article,.gj-app .login-panel{border:1px solid var(--g-line);border-radius:16px;background:linear-gradient(180deg,var(--g-bg-3),var(--g-bg-2));box-shadow:0 1px 0 var(--g-fill) inset}
.gj-app .panel h2,.gj-app .operation-card h2{letter-spacing:-.02em}
.gj-app .operation-card .section-kicker,.gj-app .panel .section-kicker{color:var(--g-accent-2)}
.gj-app .request-note,.gj-app .share-link-list>div{border:1px solid var(--g-line);background:var(--g-bg-1);color:var(--g-text-2)}
.gj-app .share-link-list small,.gj-app .request-item p,.gj-app .charter-item p,.gj-app .charter-item dt,.gj-app .admin-request-heading p{color:var(--g-text-3)}
.gj-app .charter-item.danger,.gj-app .health-danger,.gj-app tr.health-danger td{border-color:rgb(var(--g-danger-rgb) / .35);background:rgb(var(--g-danger-rgb) / .06)}
.gj-app .admin-request-card.pending{border-left:3px solid var(--g-accent)}
.gj-app .admin-request-card.approved{border-left:3px solid var(--g-ok)}
.gj-app .admin-request-card.rejected{border-left:3px solid var(--g-danger)}
.gj-app .health-summary strong{color:var(--g-text);font-family:var(--g-mono);font-weight:500;font-variant-numeric:tabular-nums}
.gj-app .health-summary span{color:var(--g-text-3);font-family:var(--g-mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
.gj-app .account-list>a{border-color:var(--g-line);background:var(--g-bg-2)}
.gj-app .account-list>a:hover{border-color:var(--g-line-3);background:var(--g-bg-3)}
.gj-app .account-list span{color:var(--g-text-3)}
.gj-app .status-on{color:var(--g-ok)}
.gj-app .status-off{color:var(--g-danger)}

.gj-app section.card{margin:0 0 24px;padding:22px 24px;border:1px solid var(--g-line);border-radius:16px;background:linear-gradient(180deg,var(--g-bg-3),var(--g-bg-2))}
.gj-app section.card h2{margin:0 0 4px;font-size:18px}
.gj-app section.card p{margin:0 0 14px;font-size:14px}
.gj-app section.card form{display:flex;flex-wrap:wrap;gap:8px}
.gj-app .summary-icon{font-size:0}
.gj-app .summary-icon:before{content:"";display:block;width:18px;height:18px;background:var(--g-summary-icon) center/contain no-repeat}
@media(max-width:640px){
  .gj-app .health-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .gj-app .health-summary article{padding:14px 12px}
  .gj-app .health-summary strong{font-size:24px}
  .gj-app .health-summary span{font-size:9.5px;letter-spacing:.08em}
}

/* Tabele */
.gj-app .table-wrap{border:1px solid var(--g-line);border-radius:16px;background:var(--g-bg-2);box-shadow:none}
.gj-app th{border-bottom:1px solid var(--g-line);background:var(--g-bg-1);color:var(--g-text-3);font-family:var(--g-mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}
.gj-app td{border-bottom:1px solid var(--g-line);color:var(--g-text-2);font-variant-numeric:tabular-nums}
.gj-app td:first-child{color:var(--g-text)}
.gj-app tbody tr:hover,.gj-app.app-page tbody tr:hover{background:var(--g-fill)}
.gj-app tr:last-child td{border-bottom:0}
.gj-app .table-wrap+h2,.gj-app .table-wrap+section,.gj-app .table-wrap+.section-title-row{margin-top:44px}

/* Komunikaty */
.gj-app .flash{border:1px solid var(--g-line-2);border-radius:12px;background:var(--g-bg-3);color:var(--g-text)}
.gj-app .flash.success{border-color:rgb(var(--g-ok-rgb) / .4);background:var(--g-ok-dim);color:var(--g-ok-text)}
.gj-app .flash.error{border-color:rgb(var(--g-danger-rgb) / .45);background:var(--g-danger-dim);color:var(--g-danger-text)}
.gj-app .empty,.gj-app .device-empty{color:var(--g-text-3)}
.gj-app .device-empty>span{color:var(--g-accent-2);background:var(--g-accent-dim)}
.gj-app .warning-line,.gj-app .battery-action{color:var(--g-danger)}

/* Statusy, odznaki, chipy */
.gj-app .status-chip,.gj-app .battery-badge,.gj-app .count-badge,.gj-app .anchor-status,.gj-app .system-zone-badge,.gj-app .arming-state{border:1px solid transparent;font-family:var(--g-mono);font-weight:500;letter-spacing:.04em}
.gj-app .status-chip.safe,.gj-app .battery-badge.battery-good,.gj-app .anchor-status.safe,.gj-app .arming-state:not(.disarmed){border-color:rgb(var(--g-ok-rgb) / .3);background:var(--g-ok-dim);color:var(--g-ok)}
.gj-app .status-chip.danger,.gj-app .battery-badge.battery-danger,.gj-app .anchor-status.danger,.gj-app .anchor-status.offline,.gj-app .system-zone-badge{border-color:rgb(var(--g-danger-rgb) / .35);background:var(--g-danger-dim);color:var(--g-danger)}
.gj-app .status-chip.active,.gj-app .battery-badge.battery-info{border-color:rgb(var(--g-accent-rgb) / .3);background:var(--g-accent-dim);color:var(--g-accent-2)}
.gj-app .battery-badge.battery-warning{border-color:rgb(var(--g-warn-rgb) / .35);background:var(--g-warn-dim);color:var(--g-warn)}
.gj-app .battery-badge.battery-neutral,.gj-app .arming-state.disarmed{border-color:var(--g-line-2);background:var(--g-fill-2);color:var(--g-text-2)}
.gj-app .arming-state i{background:var(--g-ok);box-shadow:0 0 8px var(--g-ok)}
.gj-app .arming-state.disarmed i{background:var(--g-text-3);box-shadow:none}
.gj-app .count-badge{border-color:var(--g-line-2);background:var(--g-fill);color:var(--g-text-2)}
.gj-app .alert-count{border-color:rgb(var(--g-warn-rgb) / .4);background:var(--g-warn-dim);color:var(--g-warn)}
.gj-app .connection-status.online{color:var(--g-ok)}
.gj-app .connection-status.offline{color:var(--g-danger)}

/* Pulpit: podsumowanie floty */
.gj-app .fleet-summary{border:1px solid var(--g-line);border-radius:12px;background:var(--g-bg-2);box-shadow:none}
.gj-app .fleet-summary strong{font-family:var(--g-mono);font-weight:500}
.gj-app .fleet-summary small{color:var(--g-text-3)}
.gj-app .summary-icon{border-radius:9px;background:var(--g-accent-dim);color:var(--g-accent-2)}

/* Pulpit: alerty */
.gj-app .alert-strip{border:1px solid rgb(var(--g-warn-rgb) / .25);border-radius:16px;background:linear-gradient(180deg,rgb(var(--g-warn-rgb) / .06),rgb(var(--g-warn-rgb) / .02))}
.gj-app .alert-card{border:1px solid rgb(var(--g-warn-rgb) / .25);border-left:3px solid var(--g-warn);border-radius:12px;background:var(--g-bg-2);box-shadow:none;color:var(--g-text)}
.gj-app .alert-card.danger,.gj-app .alert-card.port{border-left-color:var(--g-danger)}
.gj-app .alert-card .alert-icon{background:var(--g-warn-dim);color:var(--g-warn)}
.gj-app .alert-card>div span,.gj-app .alert-card small{color:var(--g-text-2)}
.gj-app .alert-card form button{border-color:var(--g-line-2);background:var(--g-fill);color:var(--g-text)}
.gj-app .wake-alert-item{border-color:rgb(var(--g-danger-rgb) / .35);background:var(--g-danger-dim)}
.gj-app .wake-alert-item p{color:var(--g-danger-text)}
.gj-app .wake-alert-item small{color:var(--g-text-3)}

/* Pulpit: rozwijane alerty (trasa dnia + miejsce zdarzenia) */
.gj-app .alert-head-actions{display:flex;align-items:center;gap:10px}
.gj-app .alert-clear-form{margin:0}
.gj-app .alert-clear{min-height:30px;padding:5px 12px;border:1px solid var(--g-line-2);border-radius:8px;background:var(--g-fill);color:var(--g-text-2);font-size:12px;font-weight:600}
.gj-app .alert-clear:hover{border-color:rgb(var(--g-danger-rgb) / .55);background:var(--g-danger-dim);color:var(--g-danger-text)}
.gj-app .alert-card.is-expandable{position:relative;transition:border-color .2s var(--g-ease),background .2s var(--g-ease)}
.gj-app .alert-card.is-expandable:hover{border-color:rgb(var(--g-warn-rgb) / .45)}
.gj-app .alert-list{grid-template-columns:minmax(0,1fr)}
.gj-app .alert-card.is-open{border-color:rgb(var(--g-warn-rgb) / .55)}
.gj-app .alert-card .alert-body{position:relative;padding-right:28px;min-width:0}
.gj-app .alert-card.is-expandable .alert-body{cursor:pointer;border-radius:8px}
.gj-app .alert-card.is-expandable .alert-body:focus-visible{outline:2px solid var(--g-accent);outline-offset:4px}
.gj-app .alert-chevron{position:absolute;right:6px;top:50%;width:8px;height:8px;margin-top:-6px;border-right:1.5px solid var(--g-text-3);border-bottom:1.5px solid var(--g-text-3);transform:rotate(45deg);transition:transform .25s var(--g-ease),border-color .2s}
.gj-app .alert-card.is-expandable:hover .alert-chevron{border-color:var(--g-text)}
.gj-app .alert-card.is-open .alert-chevron{margin-top:-2px;transform:rotate(225deg)}
.gj-app .alert-trace{display:block;grid-column:1/-1;margin-top:4px;padding-top:12px;border-top:1px solid var(--g-line);animation:gj-step .35s var(--g-ease)}
.gj-app .alert-trace[hidden]{display:none}
.gj-app .alert-trace-map{height:380px;border:1px solid var(--g-line-2);border-radius:12px;background:var(--g-map-bg);overflow:hidden}
.gj-app .alert-trace-info{margin:10px 2px 2px;color:var(--g-text-3);font-family:var(--g-mono);font-size:11.5px;letter-spacing:.04em}
.gj-app .gj-event-pin{position:relative}
.gj-app .gj-event-dot{position:absolute;left:8px;top:8px;width:12px;height:12px;border:2px solid var(--g-bg);border-radius:50%;background:var(--g-warn);box-shadow:0 0 12px var(--g-warn)}
.gj-app .gj-event-pulse{position:absolute;left:0;top:0;width:28px;height:28px;border:1.5px solid var(--g-warn);border-radius:50%;animation:gj-ping 2.4s ease-out infinite}
@keyframes gj-step{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes gj-ping{0%{opacity:.9;transform:scale(.4)}80%,100%{opacity:0;transform:scale(1.4)}}
@media(max-width:640px){
  .gj-app .alert-trace-map{height:260px}
  .gj-app .alert-card.is-expandable{grid-template-columns:auto minmax(0,1fr)}
  .gj-app .section-title-row{flex-wrap:wrap;gap:10px}
}

/* Pulpit: mapa i lista jednostek */
.gj-app .map-card,.gj-app .device-sidebar{border:1px solid var(--g-line);border-radius:18px;background:linear-gradient(180deg,var(--g-bg-3),var(--g-bg-2));box-shadow:0 50px 100px -50px rgb(var(--g-shadow-rgb) / calc(.9 * var(--g-shadow-k)))}
.gj-app .live-status{border:1px solid rgb(var(--g-accent-rgb) / .25);background:var(--g-accent-dim);color:var(--g-accent-2);font-family:var(--g-mono);font-size:11px;font-weight:500;letter-spacing:.06em}
.gj-app .live-status i{background:var(--g-accent);box-shadow:0 0 0 0 rgb(var(--g-accent-rgb) / .5);animation:gj-dot 2.4s ease-out infinite}
.gj-app .device-list-header{border-bottom:1px solid var(--g-line)}
.gj-app .device-list{scrollbar-color:var(--g-line-3) transparent}
.gj-app .device-card{border:1px solid var(--g-line);border-radius:14px;background:var(--g-fill);color:var(--g-text);box-shadow:none}
.gj-app .device-card:hover{border-color:var(--g-line-3);background:rgb(var(--g-accent-rgb) / .04);box-shadow:none}
.gj-app .device-card strong,.gj-app .device-card .device-title-row{color:var(--g-text)}
.gj-app .device-card-icon{border:1px solid var(--g-line);background:var(--g-bg-1)}
.gj-app .device-card-icon i{border-color:var(--g-bg-2);background:var(--g-text-3)}
.gj-app .device-card-icon i.online{background:var(--g-ok);box-shadow:0 0 8px rgb(var(--g-ok-rgb) / .6)}
.gj-app .device-arrow{color:var(--g-text-3)}
.gj-app .device-card:hover .device-arrow{color:var(--g-accent-2)}
.gj-app .device-label,.gj-app .device-card span,.gj-app .device-card small{color:var(--g-text-3)}
.gj-app .device-telemetry{border-top:1px solid var(--g-line)}
.gj-app .device-telemetry b{color:var(--g-text-3);font-family:var(--g-mono);font-weight:500;letter-spacing:.12em}
.gj-app .device-telemetry span:not(.battery-badge){color:var(--g-text);font-family:var(--g-mono);font-variant-numeric:tabular-nums}
.gj-app .device-coordinates{color:var(--g-text-3)!important;font-family:var(--g-mono)}
.gj-app .no-position{border:1px solid var(--g-line);background:var(--g-fill);color:var(--g-text-3)}
.gj-app .satellite-meter{border:1px solid var(--g-line-2);background:var(--g-bg-1);box-shadow:none}
.gj-app .satellite-meter b{color:var(--g-text);font-family:var(--g-mono);font-weight:500}
.gj-app .satellite-meter small{color:var(--g-text-3)}
.gj-app .satellite-signal i{background:var(--g-line-2)}
.gj-app .satellite-meter.weak{border-color:rgb(var(--g-danger-rgb) / .35);background:var(--g-danger-dim);color:var(--g-danger)}
.gj-app .satellite-meter.fair{border-color:rgb(var(--g-warn-rgb) / .35);background:var(--g-warn-dim);color:var(--g-warn)}
.gj-app .satellite-meter.good{border-color:rgb(var(--g-accent-rgb) / .3);background:var(--g-accent-dim);color:var(--g-accent-2)}
.gj-app .satellite-meter.excellent{border-color:rgb(var(--g-ok-rgb) / .3);background:var(--g-ok-dim);color:var(--g-ok)}
.gj-app .boat-battery-reading>strong{color:var(--g-text);font-family:var(--g-mono);font-weight:500}
.gj-app .boat-battery-reading>span{color:var(--g-text-3)}

/* Szczegóły jednostki, historia, napięcie */
.gj-app .route-summary div{border:1px solid var(--g-line);border-radius:12px;background:var(--g-bg-1)}
.gj-app .route-summary span,.gj-app .route-summary small{color:var(--g-text-3);font-family:var(--g-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}
.gj-app .route-summary strong{color:var(--g-text);font-family:var(--g-mono);font-weight:500;font-variant-numeric:tabular-nums}
.gj-app .route-summary .summary-primary{border-color:rgb(var(--g-accent-rgb) / .35);background:var(--g-accent-dim)}
.gj-app .route-summary .summary-primary strong{color:var(--g-accent-2)}
.gj-app .stop-item{border:1px solid rgb(var(--g-warn-rgb) / .25);border-left:3px solid var(--g-warn);border-radius:10px;background:var(--g-bg-1);color:var(--g-warn)}
.gj-app .stop-item:hover{border-color:rgb(var(--g-warn-rgb) / .5);background:var(--g-warn-dim)}
.gj-app .stop-item span{color:var(--g-text);font-family:var(--g-mono)}
.gj-app .stop-item small{color:var(--g-text-3)}
.gj-app .day-pill{border:1px solid var(--g-line-2);border-radius:10px;background:var(--g-bg-2);color:var(--g-text);font-family:var(--g-mono)}
.gj-app .day-pill.active{border-color:rgb(var(--g-accent-rgb) / .6);background:var(--g-accent-dim);color:var(--g-accent-2)}
.gj-app .day-pill span{color:var(--g-text-3)}
.gj-app .voltage-summary span{border-color:var(--g-line);background:var(--g-bg-1);color:var(--g-text-3)}
.gj-app .voltage-summary strong{color:var(--g-text);font-family:var(--g-mono);font-weight:500}
.gj-app .voltage-chart-wrap{border-color:var(--g-line);background:var(--g-bg-1)}
.gj-app .voltage-plot-bg{fill:var(--g-bg-1)}
.gj-app .voltage-grid{stroke:var(--g-line)}
.gj-app .voltage-axis-label{fill:var(--g-text-3);font-family:var(--g-mono)}
.gj-app .voltage-line{stroke:var(--g-accent)}
.gj-app .voltage-point{fill:var(--g-bg);stroke:var(--g-accent)}
.gj-app .voltage-cursor{stroke:var(--g-text-3)}
.gj-app .voltage-tooltip-bg{fill:var(--g-bg-4)}
.gj-app .voltage-tooltip-text{fill:var(--g-text);font-family:var(--g-mono)}
.gj-app .voltage-help{color:var(--g-text-3)}
.gj-app .admin-tools>summary::after{border-color:var(--g-line-2);color:var(--g-text-2)}
.gj-app .admin-tools[open]>summary,.gj-app .endpoint-grid>.endpoint-section+section,.gj-app .endpoint-grid>.endpoint-section:nth-child(n+3){border-color:var(--g-line)}
.gj-app .endpoint-command-reference>summary{color:var(--g-accent-2)}
.gj-app .endpoint-command-reference-list article{border-color:var(--g-line);background:var(--g-bg-1)}
.gj-app .endpoint-command-reference-list small{color:var(--g-text-3)}
.gj-app .packet-details summary{color:var(--g-text-3)}
.gj-app .packet-details summary span{color:var(--g-accent-2)}
.gj-app .icon-option{border:1px solid var(--g-line);border-radius:12px;background:var(--g-bg-2)}
.gj-app .icon-option:has(input:checked){border-color:rgb(var(--g-accent-rgb) / .6);background:var(--g-accent-dim);box-shadow:none}
.gj-app .icon-option-preview,.gj-app .current-icon{border:1px solid var(--g-line);background:#e8eef3}
.gj-app .icon-panel-small{border-top-color:var(--g-line)}

/* Logowanie */
.gj-app .login-panel{padding-top:40px;box-shadow:0 60px 120px -50px rgb(var(--g-shadow-rgb) / calc(.9 * var(--g-shadow-k)))}
.gj-app .login-back{color:var(--g-text-3)}
.gj-app .login-back:hover{color:var(--g-text)}
.gj-app .login-panel .eyebrow{display:block;margin-top:22px;color:var(--g-accent-2)}
.gj-app .login-panel h1{font-size:34px;line-height:1.08}
.gj-app .login-form .primary{width:100%;min-height:48px}

/* Leaflet: ciemne kontrolki, dymki i warstwa „Nocna” */
.gj-app #map,.gj-app .detail-map,.gj-app #zone-map,.gj-app #zones-map,.gj-app .leaflet-container{border-color:var(--g-line)!important;background:var(--g-map-bg)!important;font-family:var(--g-sans)}
.gj-app .gj-night-tiles{filter:invert(1) hue-rotate(185deg) brightness(.82) contrast(.92) saturate(.55)}
.gj-app .leaflet-bar,.gj-app .leaflet-control-layers,.gj-app .map-card .leaflet-control-zoom,.gj-app .map-card .leaflet-control-layers{border:1px solid var(--g-line-2)!important;border-radius:10px!important;background:var(--g-float)!important;box-shadow:0 12px 30px rgb(var(--g-shadow-rgb) / calc(.45 * var(--g-shadow-k)))!important;backdrop-filter:blur(10px)}
.gj-app .leaflet-bar a{border-bottom-color:var(--g-line)!important;background:transparent!important;color:var(--g-text)!important}
.gj-app .leaflet-bar a:hover{background:var(--g-fill-3)!important}
.gj-app .leaflet-control-layers-toggle{filter:var(--g-toggle-filter);opacity:.85}
.gj-app .leaflet-control-layers-expanded{padding:10px 12px;color:var(--g-text);font-size:13px}
.gj-app .leaflet-control-layers-separator{border-top-color:var(--g-line)}
.gj-app .leaflet-control-attribution{background:var(--g-attr-bg)!important;color:var(--g-text-3)!important;font-size:10px}
.gj-app .leaflet-control-attribution a{color:var(--g-text-2)!important}
.gj-app .leaflet-popup-content-wrapper,.gj-app .leaflet-popup-tip{border:1px solid var(--g-line-2);background:var(--g-bg-3);color:var(--g-text);box-shadow:0 20px 40px rgb(var(--g-shadow-rgb) / calc(.55 * var(--g-shadow-k)))}
.gj-app .leaflet-popup-content{font-size:13px;line-height:1.5}
.gj-app .leaflet-popup-content strong,.gj-app .leaflet-popup-content b{color:var(--g-text)}
.gj-app .leaflet-container a.leaflet-popup-close-button{color:var(--g-text-3)}
.gj-app .leaflet-tooltip{border:1px solid var(--g-line-2);background:var(--g-bg-3);color:var(--g-text);box-shadow:none}
.gj-app .leaflet-tooltip:before{display:none}
.gj-app .stop-popup{color:var(--g-text-2)}
.gj-app .stop-popup strong{color:var(--g-warn)}
/* Trasa jednostki w kolorze akcentu (kolor ustawiany w skryptach map) */
.gj-app path.leaflet-interactive[stroke="#2563eb"]{stroke:var(--g-accent);filter:drop-shadow(0 0 4px rgb(var(--g-accent-rgb) / .45))}

@keyframes gj-dot{0%{box-shadow:0 0 0 0 rgb(var(--g-accent-rgb) / .55)}70%,100%{box-shadow:0 0 0 7px rgb(var(--g-accent-rgb) / 0)}}
@media(prefers-reduced-motion:reduce){.gj-app *{animation:none!important;transition:none!important}}
}
