:root{
  --ink:#16232F; --ink-2:#42586B; --ink-3:#7A8C9B;
  --paper:#FFFFFF; --surface:#EDF1F4; --surface-2:#F6F8FA;
  --rule:#CBD6DE; --rule-2:#E2E9EE;
  --accent:#1B6E7C; --accent-dark:#12525D; --accent-wash:#E4F0F1;
  --signal:#B8801C; --signal-wash:#FBF2DF; --signal-rule:#E9D5A6;
  --ok:#2E7D5B;
  --r:6px; --r-lg:10px; --maxw:1140px;
  --sh-1:0 1px 2px rgba(22,35,47,.05);
  --sh-2:0 4px 16px rgba(22,35,47,.08);
  --t:.18s cubic-bezier(.4,0,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{font-family:'Lato',system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--surface);
  line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
img{max-width:100%;height:auto}
::selection{background:var(--signal-wash);color:var(--ink)}

/* header */
header{background:rgba(255,255,255,.93);backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--rule-2);position:sticky;top:0;z-index:100}
.bar{display:flex;align-items:center;gap:28px;min-height:66px}
.logo{display:flex;align-items:center;gap:3px;text-decoration:none;color:var(--ink);flex-shrink:0}
.logo .w{font-weight:900;font-size:24px;letter-spacing:-.7px}
.logo .dot{width:7px;height:7px;background:var(--signal);border-radius:50%;margin-left:2px;
  transition:transform var(--t)}
.logo:hover .dot{transform:scale(1.45)}
.logo small{font-weight:400;font-size:12.5px;color:var(--ink-3);margin-left:11px;
  padding-left:11px;border-left:1px solid var(--rule)}
nav{display:flex;gap:4px;margin-left:auto;align-items:center}
nav a{color:var(--ink-2);text-decoration:none;font-size:14.5px;padding:7px 12px;border-radius:var(--r);
  transition:color var(--t),background var(--t);white-space:nowrap}
nav a:hover{color:var(--ink);background:var(--surface-2)}
nav a[aria-current=page]{color:var(--accent-dark);font-weight:700;background:var(--accent-wash)}
header .burger{display:none;margin-left:auto;background:none;border:1px solid var(--rule);
  border-radius:var(--r);width:42px;height:38px;flex:none;cursor:pointer;padding:0;
  align-items:center;justify-content:center;box-shadow:none}
header .burger:hover{background:var(--surface-2)}
.burger i{display:block;width:17px;height:2px;background:var(--ink);position:relative;border-radius:2px}
.burger i:before,.burger i:after{content:"";position:absolute;left:0;width:17px;height:2px;
  background:var(--ink);border-radius:2px}
.burger i:before{top:-5px} .burger i:after{top:5px}

/* hero */
.hero{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface) 100%);
  border-bottom:1px solid var(--rule-2);padding:30px 0 38px}
.crumbs{font-size:12.5px;color:var(--ink-3);margin-bottom:12px}
.crumbs a{color:var(--ink-3);text-decoration:none;transition:color var(--t)}
.crumbs a:hover{color:var(--accent)}
h1{font-size:clamp(27px,3.4vw,40px);font-weight:900;letter-spacing:-1px;line-height:1.14;margin-bottom:12px}
h2{font-size:clamp(21px,2.3vw,26px);font-weight:900;letter-spacing:-.5px;line-height:1.25;margin-bottom:14px}
h3{font-size:17.5px;font-weight:700;margin:30px 0 9px;letter-spacing:-.2px}
.lead{color:var(--ink-2);font-size:17.5px;max-width:64ch;line-height:1.6}
.updated{font-size:12.5px;color:var(--ink-3);margin-top:14px;display:flex;align-items:center;gap:7px}
.updated:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ok);flex:none}
.updated b{font-weight:700;color:var(--ink-2)}

/* w skrócie */
.tldr{background:var(--paper);border:1px solid var(--rule);border-left:3px solid var(--signal);
  border-radius:var(--r-lg);padding:20px 24px;margin:26px 0}
.tldr b.t{display:block;font-size:11.5px;font-weight:900;letter-spacing:.9px;text-transform:uppercase;
  color:var(--signal);margin-bottom:11px}
.tldr ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.tldr li{font-size:14.5px;color:var(--ink-2);padding-left:19px;position:relative;line-height:1.55}
.tldr li:before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;
  background:var(--signal);opacity:.55}
.tldr li b{color:var(--ink);font-weight:700}

/* toc */
.toc{background:var(--surface-2);border:1px solid var(--rule-2);border-radius:var(--r-lg);
  padding:18px 22px;margin:24px 0}
.toc b{display:block;font-size:11.5px;font-weight:900;letter-spacing:.8px;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:10px}
.toc ol{margin:0;padding-left:19px;columns:2;column-gap:28px}
.toc li{font-size:14px;margin-bottom:6px;break-inside:avoid;color:var(--ink-3)}
.toc a{color:var(--accent);text-decoration:none}
.toc a:hover{text-decoration:underline}

/* tool grid */
.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(292px,1fr));gap:16px;margin:28px 0 8px}
.tool{display:block;background:var(--paper);border:1px solid var(--rule-2);border-radius:var(--r-lg);
  padding:22px 24px;text-decoration:none;color:var(--ink);box-shadow:var(--sh-1);
  transition:transform var(--t),box-shadow var(--t),border-color var(--t);position:relative;overflow:hidden}
.tool:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);
  transform:scaleY(0);transform-origin:top;transition:transform .22s cubic-bezier(.4,0,.2,1)}
.tool:hover{transform:translateY(-3px);box-shadow:var(--sh-2);border-color:var(--rule)}
.tool:hover:before{transform:scaleY(1)}
.tool b{display:block;font-size:17.5px;font-weight:700;margin-bottom:6px;letter-spacing:-.25px}
.tool span{display:block;font-size:14px;color:var(--ink-3);line-height:1.55}
.tool em{display:inline-block;font-style:normal;font-size:11.5px;font-weight:900;letter-spacing:.5px;
  text-transform:uppercase;color:var(--accent);margin-top:12px}
.tool em:after{content:" \2192";transition:margin var(--t)}
.tool:hover em:after{margin-left:4px}

/* prose */
.prose{background:var(--paper);border-top:1px solid var(--rule-2);padding:52px 0}
.prose .wrap{max-width:780px}
.prose h2{margin-top:44px}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--ink-2);margin-bottom:14px;font-size:16px}
.prose ul,.prose ol{color:var(--ink-2);margin:0 0 16px 21px;font-size:16px}
.prose li{margin-bottom:7px}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;
  text-decoration-color:var(--accent-wash);transition:text-decoration-color var(--t)}
.prose a:hover{text-decoration-color:var(--accent)}
.prose strong{color:var(--ink);font-weight:700}

/* worked example */
.example{background:var(--accent-wash);border:1px solid #C5DFE2;border-radius:var(--r-lg);
  padding:20px 24px;margin:22px 0}
.example b.t{display:block;font-size:11.5px;font-weight:900;letter-spacing:.8px;text-transform:uppercase;
  color:var(--accent-dark);margin-bottom:11px}
.example p{color:var(--ink-2);margin-bottom:9px;font-size:15px}
.example table{width:100%;font-size:14.5px;border-collapse:collapse;margin-top:10px}
.example td{padding:6px 0;border-bottom:1px solid rgba(27,110,124,.13);color:var(--ink-2)}
.example td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700;color:var(--ink)}
.example tr:last-child td{border-bottom:none;border-top:1.5px solid rgba(27,110,124,.3);
  padding-top:9px;color:var(--accent-dark)}

/* tables */
table.data{width:100%;border-collapse:collapse;font-size:14.5px;background:var(--paper);
  border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;margin:16px 0 20px}
table.data th{text-align:left;font-size:12px;font-weight:900;letter-spacing:.4px;color:var(--ink-2);
  padding:12px 16px;border-bottom:1px solid var(--rule);background:var(--surface-2);text-transform:uppercase}
table.data td{padding:11px 16px;border-bottom:1px solid var(--surface);color:var(--ink-2)}
table.data td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.data tr:last-child td{border-bottom:none}
table.data tbody tr{transition:background var(--t)}
table.data tbody tr:hover{background:var(--surface-2)}
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:16px 0 20px}
.scroll-x table.data{margin:0;min-width:440px}

/* notes */
.note{background:var(--signal-wash);border:1px solid var(--signal-rule);border-radius:var(--r-lg);
  padding:15px 20px;font-size:14px;color:#6B4A08;margin:20px 0;line-height:1.6}
.note b{font-weight:900}
.disclaimer{font-size:13px;color:var(--ink-3);border-top:1px solid var(--rule-2);
  padding-top:18px;margin-top:34px;line-height:1.6}

/* related */
.rel{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.rel a{display:block;padding:15px 18px;border:1px solid var(--rule-2);border-radius:var(--r-lg);
  text-decoration:none;color:var(--ink);font-weight:700;font-size:14.5px;background:var(--paper);
  transition:border-color var(--t),background var(--t),transform var(--t)}
.rel a span{display:block;font-weight:400;font-size:13px;color:var(--ink-3);margin-top:3px}
.rel a:hover{border-color:var(--accent);background:var(--accent-wash);transform:translateX(3px)}

/* faq */
.faq{margin-top:16px;border-top:1px solid var(--rule-2)}
.faq details{border-bottom:1px solid var(--rule-2)}
.faq summary{cursor:pointer;padding:16px 34px 16px 0;font-weight:700;font-size:15.5px;
  list-style:none;position:relative;transition:color var(--t)}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--accent)}
.faq summary:after{content:"";position:absolute;right:6px;top:23px;width:8px;height:8px;
  border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);
  transform:rotate(45deg);transition:transform var(--t)}
.faq details[open] summary:after{transform:rotate(-135deg);top:26px}
.faq details p{padding:0 0 17px;color:var(--ink-2);font-size:15px;margin:0;animation:fade .22s ease}
@keyframes fade{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* ad slots collapse when empty */
.ad{margin:30px 0;text-align:center;overflow:hidden}
.ad:empty{display:none;margin:0}
.ad:not(:empty).ad-inline{min-height:280px}
.ad:not(:empty).ad-leader{min-height:100px}

/* footer */
footer{background:var(--ink);color:#9FB2C0;padding:52px 0 30px;font-size:14px}
footer .cols{display:grid;grid-template-columns:minmax(210px,1.5fr) repeat(3,minmax(140px,1fr));gap:36px}
footer .brand .w{font-weight:900;font-size:21px;color:#fff;letter-spacing:-.6px}
footer .brand .dot{display:inline-block;width:6px;height:6px;background:var(--signal);
  border-radius:50%;margin-left:3px;vertical-align:middle}
footer .brand p{margin-top:12px;font-size:13.5px;line-height:1.65;color:#8DA2B2;max-width:34ch}
footer b{color:#fff;display:block;margin-bottom:12px;font-size:11.5px;letter-spacing:.9px;text-transform:uppercase}
footer a{color:#9FB2C0;text-decoration:none;display:block;padding:4px 0;
  transition:color var(--t),padding-left var(--t)}
footer a:hover{color:#fff;padding-left:4px}
.legal{border-top:1px solid #2A3B4B;margin-top:36px;padding-top:20px;font-size:12.5px;color:#6E8394;
  display:flex;gap:18px;justify-content:space-between;flex-wrap:wrap;line-height:1.6}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(14px)}
.rv.in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s cubic-bezier(.4,0,.2,1)}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* calculator */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 372px;gap:24px;align-items:start;padding:30px 0 46px}
.card{background:var(--paper);border:1px solid var(--rule-2);border-radius:var(--r-lg);
  box-shadow:var(--sh-1);overflow:hidden}
.card+.card{margin-top:16px}
.card>h2{font-size:13px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-2);
  padding:15px 22px;border-bottom:1px solid var(--rule-2);background:var(--surface-2);margin:0}
.body{padding:22px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.row+.row{margin-top:18px}
label{display:block;font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
input[type=date],input[type=time],input[type=number],select{
  width:100%;height:44px;padding:0 13px;font-family:inherit;font-size:15px;color:var(--ink);
  background:var(--paper);border:1px solid var(--rule);border-radius:var(--r);
  transition:border-color var(--t),box-shadow var(--t)}
input:hover,select:hover{border-color:var(--ink-3)}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}
.hint{font-size:12.5px;color:var(--ink-3);margin-top:7px;line-height:1.5}
.meals{display:flex;gap:10px;flex-wrap:wrap}
.meal{flex:1;min-width:100px;position:relative}
.meal input{position:absolute;opacity:0;width:0;height:0}
.meal span{display:block;text-align:center;padding:12px 8px;border:1px solid var(--rule);
  border-radius:var(--r);font-size:14px;cursor:pointer;background:var(--paper);
  transition:border-color var(--t),background var(--t),color var(--t)}
.meal span:hover{border-color:var(--ink-3)}
.meal span small{display:block;font-size:11.5px;color:var(--ink-3);margin-top:2px;font-weight:700}
.meal input:checked+span{border-color:var(--accent);background:var(--accent-wash);
  color:var(--accent-dark);font-weight:700}
.meal input:checked+span small{color:var(--accent-dark)}
.meal input:focus-visible+span{box-shadow:0 0 0 3px var(--accent-wash)}
aside.card{position:sticky;top:82px}
.band-block{background:var(--surface-2);border-bottom:1px solid var(--rule-2);padding:19px 22px}
.band-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:13px;gap:8px}
.band-dur{font-size:14.5px;font-weight:700}
.band-pct{font-size:12.5px;color:var(--accent-dark);white-space:nowrap;background:var(--accent-wash);
  padding:3px 10px;border-radius:20px;font-weight:700}
.band{position:relative;height:34px;background:var(--paper);border:1px solid var(--rule);
  border-radius:5px;overflow:hidden}
.band-fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);opacity:.17;
  transition:width .35s cubic-bezier(.4,0,.2,1),background .25s}
.band-fill.full{background:var(--signal);opacity:.24}
.tick{position:absolute;top:0;bottom:0;width:1px;background:var(--ink-3);opacity:.45}
.tick b{position:absolute;top:36px;left:0;transform:translateX(-50%);font-size:10px;font-weight:900;
  color:var(--accent-dark);white-space:nowrap;background:var(--accent-wash);
  padding:1px 5px;border-radius:3px;line-height:1.5}
.band{margin-bottom:22px}
.band-scale{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3);margin-top:0}
.sum{padding:20px 22px}
.sum-label{font-size:11.5px;font-weight:900;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-3)}
.sum-total{font-size:clamp(30px,4.6vw,38px);font-weight:900;letter-spacing:-1.3px;color:var(--signal);
  line-height:1.15;margin:4px 0 18px;min-height:44px;font-variant-numeric:tabular-nums;transition:opacity .12s}
.sum-total.flash{opacity:.42}
.sum table{width:100%;border-collapse:collapse;font-size:14px}
.sum td{padding:9px 0;border-bottom:1px solid var(--surface);color:var(--ink-2)}
.sum td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink)}
.sum tr.minus td:last-child{color:#9A5B5B}
.sum tr.tot td{border-bottom:none;border-top:1.5px solid var(--rule);padding-top:13px;
  font-weight:900;color:var(--ink);font-size:15px}
.btns{display:flex;gap:10px;padding:0 22px 22px}
button{flex:1;height:44px;font-family:inherit;font-size:14.5px;font-weight:700;cursor:pointer;
  border-radius:var(--r);border:1px solid var(--accent);background:var(--accent);color:#fff;
  transition:background var(--t),border-color var(--t),transform var(--t)}
button:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
button:active{transform:translateY(1px)}
button.ghost{background:var(--paper);color:var(--ink-2);border-color:var(--rule)}
button.ghost:hover{background:var(--surface-2);color:var(--ink);border-color:var(--ink-3)}
button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}

/* cookie consent */
#cc{position:fixed;left:16px;right:16px;bottom:16px;background:var(--paper);
  border:1px solid var(--rule);border-radius:var(--r-lg);padding:18px 22px;z-index:9999;
  box-shadow:0 8px 32px rgba(22,35,47,.16);max-width:var(--maxw);margin:0 auto;
  animation:slideup .35s cubic-bezier(.4,0,.2,1)}
@keyframes slideup{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
#cc .in{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
#cc p{font-size:13.5px;color:var(--ink-2);flex:1;min-width:250px;margin:0;line-height:1.6}
#cc a{color:var(--accent)}
#cc .cb{display:flex;gap:10px}
#cc button{flex:none;padding:0 20px;height:42px;font-size:14px}

.skip{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip:focus{position:fixed!important;left:8px;top:8px;width:auto;height:auto;margin:0;overflow:visible;
  clip:auto;clip-path:none;background:var(--accent);color:#fff;padding:11px 18px;z-index:300;
  border-radius:var(--r);font-weight:700;font-size:14px;text-decoration:none;box-shadow:var(--sh-2)}

@media(max-width:1000px){
  .grid{grid-template-columns:1fr}
  aside.card{position:static}
  footer .cols{grid-template-columns:repeat(2,minmax(140px,1fr));gap:30px}
  footer .brand{grid-column:1/-1}
}
@media(max-width:760px){
  header .burger{display:inline-flex}
  nav{position:fixed;left:0;right:0;top:66px;background:var(--paper);flex-direction:column;
    gap:0;padding:8px 16px 20px;border-bottom:1px solid var(--rule);
    box-shadow:var(--sh-2);display:none;margin:0;max-height:calc(100vh - 66px);overflow-y:auto}
  nav.open{display:flex}
  nav a{padding:13px 8px;border-radius:var(--r);font-size:16px;width:100%}
  .logo small{display:none}
  .hero{padding:22px 0 30px}
  .prose{padding:38px 0}
  .toc ol{columns:1}
  .rel{grid-template-columns:1fr}
  .tools{grid-template-columns:1fr;gap:12px}
  #cc{left:10px;right:10px;bottom:10px;padding:16px 18px}
  #cc .cb{width:100%} #cc .cb button{flex:1}
}
@media(max-width:540px){
  .row{grid-template-columns:1fr;gap:14px}
  .row+.row{margin-top:14px}
  footer .cols{grid-template-columns:1fr;gap:26px}
  .body{padding:18px}
  .wrap{padding:0 18px}
  .legal{flex-direction:column;gap:8px}
}
