/* Dashboard KG Studio - (c) 2026 Kamil Glosnek. Inter hostowany lokalnie (SIL OFL 1.1). */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/Inter-latin-ext.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/Inter-latin.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}
:root{--bg:#0a0e13;--bg2:#0e141b;--panel:#131a23;--panel2:#19222d;--panel3:#202b38;--linia:rgba(255,255,255,.08);--linia2:rgba(255,255,255,.16);
--tekst:#e9eef4;--tekst2:#aab6c4;--cichy:#75828f;--akcent:#3ddc97;--akcent-ink:#04180f;--akcent-wash:rgba(61,220,151,.13);
--zle:#ff6b7a;--zle-wash:rgba(255,107,122,.14);--uwaga:#ffb454;--uwaga-wash:rgba(255,180,84,.14);--info:#5aa9ff;--r:12px;--cien:0 14px 40px rgba(0,0,0,.45)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tekst);font-family:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:15px;line-height:1.45;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--akcent);outline-offset:2px}
h1,h2,h3,h4{margin:0;line-height:1.2}
a{color:var(--akcent)}
.ladowanie{padding:40px;color:var(--cichy)}
.app{display:grid;grid-template-columns:250px 1fr;min-height:100%}
.app.goscinny{display:block}

/* boczny pasek */
.bok{background:var(--bg2);border-right:1px solid var(--linia);padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}
.logo{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;font-weight:700;font-size:1.02rem}
.logo i{width:30px;height:30px;border-radius:8px;background:var(--panel2);display:grid;place-items:center;font-style:normal}
.logo small{display:block;color:var(--cichy);font-weight:500;font-size:.72rem}
.nav a,.nav button{display:flex;align-items:center;gap:10px;width:100%;padding:.5rem .65rem;border-radius:9px;color:var(--tekst2);text-decoration:none;border:0;background:none;text-align:left;font-size:.92rem;min-height:38px}
.nav a:hover,.nav button:hover{background:var(--panel)}
.nav a.akt{background:var(--akcent-wash);color:var(--tekst)}
.nav .licznik{margin-left:auto;color:var(--cichy);font-size:.76rem;font-variant-numeric:tabular-nums}
.kropka{width:10px;height:10px;border-radius:3px;background:var(--c,var(--akcent));flex:none}
.sekcja{margin:14px 8px 4px;color:var(--cichy);font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}
.sekcja button{width:auto;min-height:0;padding:2px 7px;background:var(--panel);border:1px solid var(--linia);border-radius:7px;color:var(--tekst2);font-size:.9rem}
.uzytkownik{margin-top:auto;padding-top:12px;border-top:1px solid var(--linia);display:flex;align-items:center;gap:10px}
.uzytkownik div{min-width:0;flex:1}
.uzytkownik b{display:block;font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uzytkownik small{color:var(--cichy);font-size:.74rem}
.awatar{width:28px;height:28px;border-radius:50%;background:var(--c,var(--panel3));color:#06120c;display:grid;place-items:center;font-size:.72rem;font-weight:700;flex:none}
.awatar.m{width:22px;height:22px;font-size:.62rem}

/* gora */
.glowna{min-width:0;display:flex;flex-direction:column;height:100vh}
.gora{display:flex;align-items:center;gap:12px;padding:12px 22px;border-bottom:1px solid var(--linia);flex-wrap:wrap}
.gora h1{font-size:1.25rem;margin-right:auto;display:flex;align-items:center;gap:10px}
.btn.menu-btn{display:none}
.szukaj{background:var(--panel);border:1px solid var(--linia);border-radius:10px;padding:.5rem .8rem;min-width:190px;min-height:40px}
.tresc{padding:20px 22px 40px;overflow:auto;flex:1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.5rem .95rem;border:1px solid var(--linia2);background:var(--panel2);border-radius:10px;font-weight:600;font-size:.9rem;min-height:40px}
.btn:hover{background:var(--panel3)}
.btn.glowny{background:var(--akcent);border-color:var(--akcent);color:var(--akcent-ink)}
.btn.glowny:hover{filter:brightness(1.07)}
.btn.zly{border-color:rgba(255,107,122,.5);color:var(--zle)}
.btn.maly{min-height:32px;padding:.25rem .65rem;font-size:.82rem}
.btn:disabled{opacity:.5;cursor:default}
a.btn{color:var(--tekst);text-decoration:none}
.bok .uzytkownik{flex-wrap:wrap}
.bok .uzytkownik .btn{flex:1}
.zakladki{display:flex;gap:4px;background:var(--panel);border:1px solid var(--linia);border-radius:11px;padding:3px}
.zakladki a{padding:.38rem .8rem;border-radius:8px;color:var(--tekst2);text-decoration:none;font-size:.88rem;font-weight:600}
.zakladki a.akt{background:var(--panel3);color:var(--tekst)}

/* karty ogolne */
.panel{background:var(--panel);border:1px solid var(--linia);border-radius:var(--r);padding:16px}
.panel h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--cichy);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.siatka{display:grid;gap:14px;margin-bottom:14px}
.s4{grid-template-columns:repeat(4,minmax(0,1fr))}
.s2{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
.stat b{display:block;font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.stat span{color:var(--tekst2);font-size:.84rem}
.stat.zle b{color:var(--zle)}.stat.dobre b{color:var(--akcent)}.stat.uwaga b{color:var(--uwaga)}
.pusto{color:var(--cichy);font-size:.9rem;padding:8px 0}
.wiersz{display:flex;align-items:center;gap:10px;padding:.5rem .3rem;border-radius:9px;cursor:pointer;min-height:42px}
.wiersz:hover{background:var(--panel2)}
.wiersz .tyt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wiersz .klucz{color:var(--cichy);font-size:.76rem;font-variant-numeric:tabular-nums;min-width:56px}
.znacznik{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:99px;font-size:.72rem;font-weight:600;background:var(--panel3);color:var(--tekst2);white-space:nowrap}
.znacznik.zle{background:var(--zle-wash);color:var(--zle)}.znacznik.uwaga{background:var(--uwaga-wash);color:var(--uwaga)}.znacznik.dobry{background:var(--akcent-wash);color:var(--akcent)}.znacznik.info{background:rgba(90,169,255,.14);color:var(--info)}
.wykres{display:flex;align-items:flex-end;gap:8px;height:130px;padding-top:8px}
.wykres div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;height:100%;font-size:.72rem;color:var(--cichy)}
.wykres i{display:block;width:100%;border-radius:6px 6px 2px 2px;background:var(--akcent);height:var(--h);min-height:3px;opacity:.9}
.wykres i.zero{background:var(--panel3);opacity:1}
.wykres b{color:var(--tekst2);font-weight:600}
.postep{height:6px;border-radius:9px;background:var(--panel3);overflow:hidden;margin:8px 0 6px}
.postep i{display:block;height:100%;width:var(--w);background:var(--c,var(--akcent))}
.projekt-karta{display:block;text-decoration:none;color:inherit}
.projekt-karta:hover{border-color:var(--linia2)}
.projekt-karta h4{display:flex;align-items:center;gap:8px;font-size:1rem}
.projekt-karta small{color:var(--cichy)}
.akt-wpis{padding:.45rem 0;border-bottom:1px solid var(--linia);font-size:.86rem;color:var(--tekst2)}
.akt-wpis:last-child{border:0}.akt-wpis b{color:var(--tekst);font-weight:600}.akt-wpis time{display:block;color:var(--cichy);font-size:.72rem}

/* tablica */
.filtry{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.filtry select,.pole select,.pole input,.pole textarea{background:var(--panel);border:1px solid var(--linia);border-radius:9px;padding:.45rem .65rem;min-height:38px;width:100%}
.filtry select{width:auto}
.tablica{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:12px;align-items:start;overflow-x:auto;padding-bottom:12px}
.kolumna{background:var(--bg2);border:1px solid var(--linia);border-radius:var(--r);padding:10px;min-height:140px;display:flex;flex-direction:column;gap:8px}
.kolumna.nad{border-color:var(--akcent);background:var(--akcent-wash)}
.kolumna header{display:flex;align-items:center;gap:8px;padding:2px 4px 4px;font-weight:700;font-size:.84rem;color:var(--tekst2)}
.kolumna header i{font-style:normal;color:var(--cichy);font-weight:600;font-variant-numeric:tabular-nums}
.karta{background:var(--panel);border:1px solid var(--linia);border-left:3px solid var(--p,var(--linia2));border-radius:10px;padding:10px 11px;cursor:pointer;display:flex;flex-direction:column;gap:7px}
.karta:hover{border-color:var(--linia2);border-left-color:var(--p,var(--linia2));background:var(--panel2)}
.karta.ciagnij{opacity:.4}
.karta .tyt{font-size:.92rem;font-weight:500;overflow-wrap:anywhere}
.karta.zrobione .tyt{color:var(--cichy);text-decoration:line-through}
.karta .dol{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.karta .dol .awatar{margin-left:auto}
.karta .klucz{font-size:.72rem;color:var(--cichy)}
.dodaj-szybko{background:none;border:1px dashed var(--linia2);border-radius:10px;color:var(--cichy);padding:.45rem;min-height:38px;font-size:.86rem}
.dodaj-szybko:hover{color:var(--tekst);border-color:var(--tekst2)}
.szybkie{width:100%;background:var(--panel);border:1px solid var(--akcent);border-radius:9px;padding:.5rem .65rem;min-height:40px}
.p-low{--p:#4a5866}.p-normal{--p:#5aa9ff}.p-high{--p:#ffb454}.p-urgent{--p:#ff6b7a}

/* lista */
.tabela{width:100%;border-collapse:collapse;font-size:.9rem}
.tabela th{text-align:left;padding:.5rem .6rem;color:var(--cichy);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--linia);cursor:pointer;white-space:nowrap;user-select:none}
.tabela td{padding:.5rem .6rem;border-bottom:1px solid var(--linia);vertical-align:middle}
.tabela tr.w{cursor:pointer}.tabela tr.w:hover td{background:var(--panel)}
.tabela .zrobione .tyt{color:var(--cichy);text-decoration:line-through}
.tabela-wrap{overflow-x:auto}
.ptak{width:22px;height:22px;border-radius:6px;border:1.5px solid var(--linia2);background:none;display:grid;place-items:center;font-size:.8rem;color:transparent;padding:0}
.ptak.on{background:var(--akcent);border-color:var(--akcent);color:var(--akcent-ink)}

/* kalendarz */
.kal-nag{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.kal-nag h2{font-size:1.1rem;min-width:170px;text-transform:capitalize}
.kal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--linia);border:1px solid var(--linia);border-radius:var(--r);overflow:hidden}
.kal .dn{background:var(--bg2);padding:6px;font-size:.72rem;color:var(--cichy);text-transform:uppercase;letter-spacing:.08em}
.kal .dz{background:var(--panel);min-height:104px;padding:5px;display:flex;flex-direction:column;gap:3px}
.kal .dz.inny{background:var(--bg2);color:var(--cichy)}
.kal .dz.dzis{box-shadow:inset 0 0 0 2px var(--akcent)}
.kal .dz>span{font-size:.76rem;color:var(--tekst2);font-weight:600}
.kal .chip{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--p,var(--linia2));background:var(--panel3);border-radius:5px;padding:2px 6px;font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kal .chip.zrobione{text-decoration:line-through;opacity:.55}

/* modal */
.tlo{position:fixed;inset:0;background:rgba(3,6,9,.7);display:flex;justify-content:center;align-items:flex-start;padding:4vh 14px;overflow:auto;z-index:50}
.modal{background:var(--panel);border:1px solid var(--linia2);border-radius:16px;box-shadow:var(--cien);width:min(860px,100%);padding:20px;display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:20px}
.modal.waski{grid-template-columns:1fr;width:min(480px,100%)}
.modal-nag{grid-column:1/-1;display:flex;align-items:center;gap:10px;color:var(--cichy);font-size:.82rem}
.modal-nag button{margin-left:auto}
.modal input.tyt-edit{background:none;border:1px solid transparent;font-size:1.3rem;font-weight:700;width:100%;padding:.25rem .4rem;border-radius:8px;margin:2px 0 10px}
.modal input.tyt-edit:hover,.modal input.tyt-edit:focus{border-color:var(--linia2);background:var(--bg2)}
.modal textarea{min-height:110px;resize:vertical}
.pole{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.pole label{font-size:.72rem;color:var(--cichy);text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.komentarz{padding:8px 0;border-bottom:1px solid var(--linia);font-size:.9rem}
.komentarz small{color:var(--cichy);display:block;margin-bottom:2px}
.komentarz p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.etykiety{display:flex;gap:5px;flex-wrap:wrap}
.zaproszenie-link{display:flex;gap:6px;align-items:center;margin:6px 0}
.zaproszenie-link input{flex:1;min-width:0;font-size:.78rem;background:var(--bg2);border:1px solid var(--linia);border-radius:8px;padding:.35rem .5rem}

/* logowanie */
.logowanie{min-height:100vh;display:grid;place-items:center;padding:20px}
.logowanie form{width:min(400px,100%);background:var(--panel);border:1px solid var(--linia);border-radius:18px;padding:26px;display:flex;flex-direction:column;gap:12px}
.logowanie h1{font-size:1.4rem}
.logowanie p{margin:0;color:var(--tekst2);font-size:.9rem}
.logowanie input{background:var(--bg2);border:1px solid var(--linia);border-radius:9px;padding:.55rem .7rem;min-height:42px;width:100%}
.blad{color:var(--zle);font-size:.86rem;min-height:1.2em}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--panel3);border:1px solid var(--linia2);border-radius:10px;padding:.6rem 1rem;box-shadow:var(--cien);z-index:90;font-size:.9rem}
.toast.zle{border-color:var(--zle);color:var(--zle)}
.zespol-wiersz{display:flex;align-items:center;gap:10px;padding:.55rem 0;border-bottom:1px solid var(--linia)}
.zespol-wiersz:last-child{border:0}
.zespol-wiersz div{flex:1;min-width:0}
.zespol-wiersz small{color:var(--cichy);display:block}
.zespol-wiersz select{width:auto;background:var(--panel2);border:1px solid var(--linia);border-radius:8px;padding:.3rem .5rem}
.formularz-wiersz{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.formularz-wiersz input,.formularz-wiersz select{background:var(--bg2);border:1px solid var(--linia);border-radius:9px;padding:.45rem .65rem;min-height:38px;flex:1;min-width:140px}
.kolory{display:flex;gap:6px;flex-wrap:wrap}
.kolory button{width:28px;height:28px;border-radius:8px;border:2px solid transparent;background:var(--c)}
.kolory button.on{border-color:#fff}

@media (max-width:1000px){.s4{grid-template-columns:repeat(2,minmax(0,1fr))}.s2{grid-template-columns:1fr}.tablica{grid-template-columns:repeat(4,260px)}}
@media (max-width:860px){
 .app{grid-template-columns:1fr}
 .bok{position:fixed;left:0;top:0;bottom:0;width:270px;z-index:40;transform:translateX(-100%);transition:transform .2s}
 .bok.otwarty{transform:none;box-shadow:var(--cien)}
 .btn.menu-btn{display:inline-flex}
 .glowna{height:auto;min-height:100vh}
 .gora{padding:10px 14px}.tresc{padding:14px 14px 40px}
 .modal{grid-template-columns:1fr}
 .szukaj{min-width:0;flex:1}
}
@media (max-width:520px){.kal .dz{min-height:70px}.kal .chip{font-size:.66rem}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
textarea,.modal input:not([type=checkbox]),.modal select{background:var(--bg2);border:1px solid var(--linia);border-radius:9px;padding:.5rem .65rem;width:100%}
.modal input.tyt-edit{background:none;border-color:transparent}
.bok .uzytkownik .btn{flex:1 1 45%}
