:root{color-scheme:dark;--bg:#06121f;--bg2:#0a1e30;--card:#0d2436;--card2:#112c40;--line:#22475b;--text:#e6f4ff;--muted:#8eacc1;--cyan:#0ccbed;--cyan2:#09aeca;--green:#19c79e;--amber:#e7b04d;--red:#ff6671;--radius:14px;font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 18% 0%,#0f3850 0,#071927 38%,#06121f 77%);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);font-size:14px}a{color:#6aeaff;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer}.topbar{min-height:74px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;padding:14px clamp(17px,3vw,38px);background:linear-gradient(95deg,#0d273b,#082035);border-bottom:1px solid #28546a;position:sticky;top:0;z-index:15;box-shadow:0 8px 28px #0002}.brand{display:flex;align-items:center;gap:13px}.brand-mark{display:grid;place-items:center;width:43px;height:43px;background:#0a4152;border:1px solid #117d93;border-radius:11px;color:var(--cyan);font-size:24px}.brand-title{font-size:17px;letter-spacing:.2px;font-weight:760}.brand-sub{color:#91c2d4;font-size:11px;margin-top:3px}.top-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.user{color:var(--muted);font-size:12px}.layout{display:grid;grid-template-columns:218px minmax(0,1fr);min-height:calc(100vh - 74px)}.nav{background:#091c2bbf;padding:20px 12px;border-right:1px solid #1c394a}.nav-title{color:#668b9e;font-size:10px;font-weight:800;letter-spacing:1.5px;margin:8px 10px 14px}.nav a{display:flex;gap:10px;padding:11px 13px;color:#c6dce8;border-radius:10px;margin-bottom:4px;align-items:center;font-weight:590}.nav a:hover,.nav a.current{background:#103b50;color:#74eaff;text-decoration:none}.nav a.current{box-shadow:inset 3px 0 var(--cyan)}.content{padding:clamp(16px,2.2vw,32px);max-width:1680px;width:100%;margin:0 auto;min-width:0}.standalone{padding:clamp(16px,3vw,34px);margin:auto;max-width:1550px}.pagehead{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.pagehead h1{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.75px;margin:0 0 6px}.subtle{color:var(--muted)}.small{font-size:12px}.tiny{font-size:11px}.card{background:linear-gradient(150deg,#102a3cc7,#0b1e30f7);border:1px solid var(--line);border-radius:var(--radius);padding:19px;box-shadow:inset 0 1px #ffffff08,0 10px 35px #0000000d;min-width:0}.card h2,.card h3{margin:0 0 13px}.card h2{font-size:17px}.card h3{font-size:15px}.stack{display:grid;gap:16px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.metric{padding:18px;border:1px solid #255169;border-radius:13px;background:linear-gradient(145deg,#113146,#091c2d)}.metric b{font-size:30px;font-weight:800;line-height:1.2;display:block}.metric span{font-size:12px;color:#a1c0d2}.alert{padding:13px 16px;border:1px solid #386c7f;background:#123548;border-radius:11px;margin:0 0 18px;line-height:1.6}.alert.success{border-color:#137f68;background:#09372f;color:#a4f5d9}.alert.error{border-color:#97515b;background:#3a1824;color:#ffccd1}.alert.warning{border-color:#8c6437;background:#322716;color:#f5d5a0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:#14384e;border:1px solid #2c6179;border-radius:9px;padding:10px 13px;color:#effbff;font-weight:670;text-decoration:none;line-height:1.2;min-height:39px}.btn:hover{background:#20546a;color:#fff;text-decoration:none}.btn.primary{background:linear-gradient(105deg,#06afc9,#048fa9);border-color:#1fd2ea;color:#001c29}.btn.primary:hover{background:#18c6df}.btn.mini{padding:6px 9px;min-height:30px;font-size:11px}.btn.danger{background:#512232;border-color:#9f4352}.btn.ghost{background:transparent;border-color:#345466}.btn:disabled{opacity:.4;cursor:not-allowed}.badge{display:inline-flex;padding:5px 9px;border:1px solid #356176;border-radius:999px;background:#12394b;color:#b7dbeb;font-size:11px;font-weight:650;white-space:nowrap}.badge.green{border-color:#16856d;background:#0b3d33;color:#98f2d5}.badge.blue{border-color:#166c96;background:#10384d;color:#8ddfff}.badge.amber{border-color:#a17a35;background:#382d1a;color:#f1d088}.badge.red{border-color:#9c4755;background:#42202b;color:#ffb8c2}.badge.gray{background:#1b3442;color:#c0d1dc}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:12px;font-weight:700;color:#bdd8e7}.field input,.field select,.field textarea{background:#071928;border:1px solid #31546a;border-radius:9px;color:#e5f5ff;padding:11px;min-height:40px;width:100%;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 2px #0ccbed24}.field input[type=file]{padding:8px}.field textarea{min-height:92px;resize:vertical}.form-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.full{grid-column:1/-1}.table-wrap{width:100%;overflow:auto;border-radius:10px;border:1px solid #25475d}.data-table,.matrix{border-collapse:separate;border-spacing:0;width:100%;min-width:690px}.data-table th,.data-table td,.matrix th,.matrix td{padding:11px 12px;border-bottom:1px solid #214054;text-align:left;vertical-align:middle}.data-table th,.matrix th{background:#153548;color:#b6d4e4;font-size:11px;letter-spacing:.2px;font-weight:750;white-space:nowrap}.data-table tr:last-child td,.matrix tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#102e40a0}.data-table td{font-size:12px}.matrix{table-layout:fixed;width:max-content;min-width:100%}.matrix th{min-width:155px}.matrix th.hour,.matrix td.hour{position:sticky;left:0;z-index:2;min-width:145px;width:145px;border-right:1px solid #36586b;background:#133346}.matrix thead th.hour{z-index:4}.matrix td{background:#081f2f;min-width:155px;vertical-align:top;padding:7px}.slot{background:#234457;border:1px solid #557184;padding:10px;border-radius:9px;display:grid;gap:6px}.slot.scheduled{background:#1a3345}.slot.in_progress{background:#093c57;border-color:#0976a5}.slot.submitted{background:#443a20;border-color:#a47723}.slot.completed{background:#103e34;border-color:#14846b}.slot.cancelled{background:#362b34}.slot strong{font-size:12px}.slot small{font-size:10px;color:#c3d3dd}.legend{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 16px}.legend span{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#bcdae8}.dot{width:9px;height:9px;border-radius:3px;display:inline-block}.dot.scheduled{background:#597c91}.dot.in_progress{background:#0d99d2}.dot.submitted{background:#e5a82e}.dot.completed{background:#1ac697}.brand-team{display:inline-flex;align-items:center;gap:9px;min-width:0}.logo{width:36px;height:36px;display:inline-grid;place-items:center;flex:none;overflow:hidden;background:linear-gradient(145deg,#214c64,#0a2133);border:1px solid #41667b;border-radius:9px;font-size:12px;color:#b0edff;font-weight:750}.logo.sm{height:26px;width:26px;border-radius:7px;font-size:10px}.logo.lg{height:52px;width:52px;border-radius:12px}.logo img{height:100%;width:100%;object-fit:contain;padding:3px}.empty{padding:24px;text-align:center;color:#90afc0;background:#0b2233;border:1px dashed #2b5369;border-radius:10px}.note{color:#89b2c7;font-size:12px;line-height:1.6}.score{font-weight:800;color:#e7faff}.accent{color:#36deed}.section-title{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}.section-title h2{margin:0;font-size:17px}.details{border:1px solid #2c4f61;border-radius:9px;margin-top:6px;padding:8px;background:#071e2a}.details summary{color:#77e5f3;cursor:pointer;font-size:11px}.details[open]{padding-bottom:12px}.details form{display:grid;gap:9px;margin-top:10px}.progress{background:#18394c;border-radius:999px;height:8px;overflow:hidden}.progress div{height:100%;background:linear-gradient(90deg,#0ba4c4,#1bd5b5)}.rankitem{border:1px solid #24546b;background:#0c2739;border-radius:12px;padding:14px;margin:9px 0}.rankhead{display:flex;align-items:center;justify-content:space-between;gap:12px}.rankitem summary{cursor:pointer;list-style:none}.rankitem summary::-webkit-details-marker{display:none}.rankitem[open] summary{margin-bottom:14px}.label-points{display:grid;gap:2px;text-align:right}.label-points strong{font-size:19px}.auth-wrapper{max-width:480px;margin:clamp(35px,10vh,105px) auto}.auth-title{margin:0 0 8px;font-size:27px}.auth-wrapper .card{padding:30px}.footer{color:#688da2;font-size:11px;margin-top:25px;text-align:center}.public-top{background:#092135;border:1px solid #265068;border-radius:12px;padding:20px;margin-bottom:20px}.public-top h1{font-size:clamp(24px,3vw,36px);margin:7px 0}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.kbd{font-size:10px;background:#214455;border:1px solid #355c70;border-radius:5px;padding:3px 6px}.ranktable td{text-align:center}.ranktable td:first-child,.ranktable th:first-child{text-align:left}.ranktable td:nth-child(2){font-weight:800;color:#b8f3ff}::selection{background:#07bfd5;color:#041827}
@media(max-width:1100px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.grid3{grid-template-columns:1fr}.layout{grid-template-columns:175px minmax(0,1fr)}}
@media(max-width:780px){.layout{display:block}.nav{position:static;border:0;border-bottom:1px solid #234252;padding:8px 12px;display:flex;overflow:auto;gap:5px}.nav-title{display:none}.nav a{white-space:nowrap;padding:10px;margin:0;font-size:12px}.grid2{grid-template-columns:1fr}.content{padding:16px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}.topbar{position:static}.data-table{min-width:610px}.table-wrap{margin-right:0}.user{display:none}}
@media(max-width:420px){.metric{padding:12px}.metric b{font-size:24px}.card{padding:14px}.top-actions{width:100%;justify-content:space-between}.brand-title{font-size:15px}}
/* Na dużych ekranach czytelna tabela, na telefonach dodatkowy akordeon. */
@media(min-width:900px){#ranking .grid2{display:none}}
@media(max-width:899px){#ranking .ranktable{display:none};#ranking .table-wrap:has(.ranktable){display:none}}
