/* Style współdzielone przez wszystkie strony publiczne i panel — te same tokeny kolorów
   i komponenty, których używa prototyp, żeby wygląd był spójny. */
:root{
  --bg:#FAFCFD; --surface:#FFFFFF; --surface-2:#EFF5F8;
  --ink:#16324A; --ink-soft:#5B7688; --ink-faint:#8CA3B2;
  --gallery-photo-h:180px;   /* wysokość zdjęć w galerii „O nas" */
  --sponsor-logo-h:60px;     /* wysokość logo w pasku sponsorów (1/3 zdjęć z galerii) */
  --navy:#0F4C81; --navy-deep:#0B3B66; --navy-ink:#FFFFFF;
  --ice:#2E9BD6; --ice-soft:#E3F4FC;
  --line:#E1EAF0; --line-strong:#C8D8E2;
  --good:#2E9E6B; --good-soft:#DFF3EA;
  --warn:#B9791C; --warn-soft:#FBECD3;
  --bad:#C74B34; --bad-soft:#FBE2DC;
  --shadow: 0 1px 2px rgba(11,44,74,.05), 0 8px 24px -12px rgba(11,44,74,.14);
  --radius: 14px;
}
*{box-sizing:border-box;}
body{margin:0; background:var(--bg); color:var(--ink); font-family:"Source Sans 3",system-ui,-apple-system,sans-serif; font-size:16px; line-height:1.55;}
img{max-width:100%;}
h1,h2,h3,h4{font-family:"Fjalla One","Arial Narrow",sans-serif; font-weight:400; letter-spacing:.01em; color:var(--ink); margin:0;}
a{color:inherit;}
.wrap{max-width:1120px; margin-inline:auto; padding-inline:20px;}

.topbar{position:sticky; top:0; z-index:40; background:var(--surface); border-bottom:1px solid var(--line);}
.topbar-inner{display:flex; align-items:center; gap:24px; padding-block:18px; max-width:1120px; margin-inline:auto; padding-inline:20px; flex-wrap:wrap;}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:inherit;}
.brand img{width:50px; height:50px; object-fit:contain;}
.brand b{font-family:"Fjalla One",sans-serif; font-size:1.3rem; display:block;}
.brand span{font-size:.76rem; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.08em;}
.nav-links{display:flex; gap:4px; margin-left:auto; flex-wrap:wrap;}
.nav-links a{text-decoration:none; color:var(--ink-soft); font-weight:600; font-size:1.05rem; padding:12px 16px; border-radius:8px;}
.nav-links a:hover{background:var(--surface-2); color:var(--ink);}
.nav-links a.active{color:var(--navy); background:var(--ice-soft);}
.topbar-auth{display:flex; align-items:center; gap:8px; flex-shrink:0;}

.btn{display:inline-flex; align-items:center; gap:8px; border-radius:10px; border:1px solid transparent; font-weight:700; font-size:.92rem; padding:10px 16px; cursor:pointer; text-decoration:none;}
.btn-primary{background:var(--navy-deep); color:#fff;}
.btn-ghost{background:transparent; border-color:var(--line-strong); color:var(--ink);}
.btn-sm{padding:7px 12px; font-size:.82rem; border-radius:8px;}
.btn-danger{background:var(--bad); color:#fff;}

.section{padding-block:44px;}
.kicker{font-size:.76rem; font-weight:700; text-transform:uppercase; letter-spacing:.12em; color:var(--ice); margin-bottom:8px; display:block;}
.grid{display:grid; gap:18px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media (max-width:760px){ .grid-3,.grid-2{grid-template-columns:1fr;} }

.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:20px; display:flex; flex-direction:column; gap:8px;}
.card h3{font-size:1.1rem;}
.card .muted{color:var(--ink-soft); font-size:.92rem; margin:0;}
.card img.avatar{width:56px; height:56px; border-radius:50%; object-fit:cover;}

.form-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:26px; box-shadow:var(--shadow);}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
@media (max-width:600px){ .form-grid{grid-template-columns:1fr;} }
.field{display:flex; flex-direction:column; gap:6px;}
.field.full{grid-column:1/-1;}
.field label{font-size:.82rem; font-weight:600; color:var(--ink-soft);}
.field input, .field select, .field textarea{border:1px solid var(--line-strong); background:var(--surface); color:var(--ink); border-radius:9px; padding:10px 12px; font:inherit; font-size:.94rem;}
.field textarea{resize:vertical; min-height:80px;}
.checkbox-group{display:flex; gap:8px; flex-wrap:wrap;}
.checkbox-pill{display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line-strong); background:var(--surface); font-size:.88rem; font-weight:600; padding:8px 14px; border-radius:999px; cursor:pointer;}
.form-note{font-size:.82rem; color:var(--ink-faint); margin-top:4px;}
.success-note{background:var(--good-soft); color:var(--good); border-radius:10px; padding:12px 14px; font-size:.9rem; font-weight:600; margin-top:14px;}
.error-note{background:var(--bad-soft); color:var(--bad); border-radius:10px; padding:12px 14px; font-size:.9rem; font-weight:600; margin-bottom:16px;}

.pill{display:inline-flex; align-items:center; font-size:.74rem; font-weight:700; padding:3px 10px; border-radius:999px; text-transform:uppercase; letter-spacing:.04em; width:fit-content;}
.pill-ice{background:var(--ice-soft); color:var(--navy);}
.pill-warn{background:var(--warn-soft); color:var(--warn);}

table{width:100%; border-collapse:collapse; font-size:.92rem;}
thead th{text-align:left; font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); padding:0 10px 10px; border-bottom:1px solid var(--line);}
tbody td{padding:12px 10px; border-bottom:1px solid var(--line); vertical-align:middle;}
.table-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface);}

.panel-shell{display:grid; grid-template-columns:220px 1fr; min-height:calc(100vh - 90px);}
@media (max-width:820px){ .panel-shell{grid-template-columns:1fr;} }
.panel-nav{background:var(--surface); border-right:1px solid var(--line); padding:20px 12px; display:flex; flex-direction:column; gap:2px;}
.panel-nav a{text-decoration:none; color:var(--ink-soft); font-weight:600; font-size:.9rem; padding:9px 10px; border-radius:9px;}
.panel-nav a:hover{background:var(--surface-2);}
.panel-nav a.active{background:var(--ice-soft); color:var(--navy);}
.panel-main{padding:26px 24px 60px;}

footer{background:var(--surface-2); color:var(--ink-soft); padding-block:26px; border-top:1px solid var(--line); margin-top:40px;}
footer .wrap{font-size:.85rem;}

/* Hero — rotator zdjęć w tle sekcji powitalnej (index.php) */
.hero-photo{position:relative; overflow:hidden;}
.hero-photo .hero-slide{position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; transition:opacity 1.2s ease;}
.hero-photo .hero-slide.active{opacity:1;}
.hero-photo .hero-photo-overlay{position:absolute; inset:0; background:linear-gradient(180deg, rgba(11,44,74,.82) 0%, rgba(11,44,74,.72) 55%, rgba(11,44,74,.9) 100%);}
.hero-photo .wrap{position:relative; z-index:1;}
.hero-photo .kicker, .hero-photo h1, .hero-photo p{color:#fff;}
.hero-photo p{color:rgba(255,255,255,.86) !important;}
.hero-photo .btn-ghost{color:#fff; border-color:rgba(255,255,255,.7);}
.hero-photo .btn-ghost:hover{background:rgba(255,255,255,.12);}

/* Pasek sponsorów — przez całą szerokość ekranu, przewijający się w nieskończoność (Etap 9.2).
   Logo mają wysokość zdjęć z galerii „O nas" (--gallery-photo-h); szerokość wynika z proporcji logo. */
.sponsor-band{padding:10px 0 12px; background:#fff; border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin:10px 0 40px;}
.sponsor-band .kicker{display:block; margin-bottom:6px;}
.sponsor-marquee{width:100%; overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent); mask-image:linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);}
.sponsor-marquee-track{display:flex; width:max-content;}
.sponsor-marquee.is-ready .sponsor-marquee-track{animation:sponsor-scroll var(--marquee-duration, 40s) linear infinite;}
.sponsor-marquee:hover .sponsor-marquee-track{animation-play-state:paused;}
.sponsor-marquee-group{display:flex; align-items:center; flex-shrink:0;}
.sponsor-item{display:flex; align-items:center; justify-content:center; height:var(--sponsor-logo-h, 60px); padding:0 24px; flex-shrink:0;}
.sponsor-item img{height:100%; width:auto; max-width:none; object-fit:contain; display:block;}
@keyframes sponsor-scroll{from{transform:translateX(0);} to{transform:translateX(-50%);}}
@media (prefers-reduced-motion: reduce){
  .sponsor-marquee.is-ready .sponsor-marquee-track{animation:none;}
  .sponsor-marquee{overflow-x:auto;}
}

/* Etap 6 — pole-pułapka na boty (niewidoczne dla ludzi i czytników ekranu) */
.ab-trap{position:absolute !important; left:-10000px !important; top:auto; width:1px; height:1px; overflow:hidden;}

/* Etap 8 — wybór profilu „Kto korzysta?" */
.profile-picker{max-width:760px; padding-top:56px; padding-bottom:56px; text-align:center;}
.profile-picker h1{font-size:clamp(1.6rem,4vw,2.2rem); margin:0 0 8px;}
.profile-picker > p.muted{max-width:52ch; margin:0 auto 26px;}
.profile-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:16px;}
.profile-card{display:flex; flex-direction:column; align-items:center; gap:2px; padding:22px 12px 18px; background:#fff; border:1px solid var(--line); border-radius:16px; cursor:pointer; font:inherit; color:inherit; transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;}
.profile-card:hover, .profile-card:focus-visible{transform:translateY(-2px); border-color:var(--navy); box-shadow:0 10px 24px -14px rgba(11,44,74,.35); outline:none;}
.profile-card.is-current{border-color:var(--navy); box-shadow:inset 0 0 0 1px var(--navy);}
.profile-avatar{width:72px; height:72px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:1.4rem; margin-bottom:10px; color:#fff;}
.profile-avatar.is-adult{background:var(--navy);}
.profile-avatar.is-child{background:var(--ice);}
.profile-badge{display:inline-flex; align-items:center; gap:6px; font-size:.8rem; background:var(--bg); border:1px solid var(--line); border-radius:999px; padding:4px 10px;}
@media (max-width:420px){ .profile-grid{grid-template-columns:repeat(2, 1fr); gap:10px;} .profile-avatar{width:56px; height:56px; font-size:1.1rem;} }

/* Etap 9 — wyjazdy: podsumowanie kosztów i formularze busów */
.trip-cost-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:12px;}
.trip-cost-grid .form-card{padding:16px 18px; display:flex; flex-direction:column; gap:4px;}
.trip-cost-big{font-size:1.35rem; color:var(--ink);}
.bus-row{display:grid; grid-template-columns:2fr repeat(4, 1fr) auto; gap:10px; align-items:end;}
.bus-row .field{margin:0;}
@media (max-width:820px){ .bus-row{grid-template-columns:1fr 1fr;} }
.cost-breakdown{display:grid; grid-template-columns:repeat(auto-fit, minmax(120px, 1fr)); gap:8px; margin-top:10px;}
.cost-breakdown div{background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:8px 10px;}
.cost-breakdown span{display:block; font-size:.74rem; color:var(--ink-faint); text-transform:uppercase; font-weight:700; letter-spacing:.03em;}
.cost-breakdown b{font-size:1.02rem;}
.cost-breakdown .is-total{background:var(--ice-soft); border-color:var(--ice);}

/* Etap 10 — Konta użytkowników: filtry i pasek działań masowych */
.users-filter{display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; padding:14px 18px;}
.users-filter .field{margin:0; flex:1 1 150px;}
.bulk-bar{display:flex; flex-wrap:wrap; gap:10px; align-items:center; background:var(--ice-soft); border:1px solid var(--line); border-radius:12px; padding:10px 14px; margin-bottom:10px; position:sticky; top:0; z-index:5;}
.bulk-bar select{max-width:280px;}

/* ===== Etap 11: wyjustowane treści, sezon pod opisem, dokumenty ===== */
.content-text { text-align: justify; text-justify: inter-word; hyphens: auto; -webkit-hyphens: auto; }
.content-block { max-width: none; width: 100%; }
.content-block p { margin: 0 0 .8em; }
.content-block p:last-child { margin-bottom: 0; }
.content-lead p { color: var(--ink-soft); font-size: 1.08rem; }
.hero-subtitle { max-width: none; width: 100%; margin-bottom: 14px; }
.hero-subtitle p { color: var(--ink-soft); font-size: 1.08rem; margin: 0 0 .6em; }
.hero-season { margin: 0 0 22px; }
.hero-season .kicker { margin: 0; }
.doc-list { display: flex; flex-direction: column; gap: 14px; }
.doc-item { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.doc-item:last-child { border-bottom: 0; padding-bottom: 0; }
.doc-item p { margin: 0; width: 100%; }

/* ===== Etap 12: zdjęcie wyjazdu ===== */
.trip-photo { display:block; width:100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 10px; margin-bottom: 12px; background: var(--ice-soft); }
.trip-card .trip-photo { margin: -4px 0 14px; }
.trip-photo-sm { width: 100%; max-width: 360px; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 10px; margin-bottom: 10px; }
/* Etap 12: edytor szablonu umowy — na telefonie jedna kolumna */
@media (max-width: 900px) { .contract-editor { grid-template-columns: 1fr !important; } .contract-editor > .form-card { position: static !important; } }
[hidden] { display: none !important; }   /* Etap 12: atrybut hidden ma wygrywać z display:grid/flex */
.card div.avatar { width:56px; height:56px; border-radius:50%; font-size:1.3rem; margin-bottom:6px; }   /* Etap 12: inicjał trenera bez zdjęcia */

/* ===== Etap 13: zdjęcie strony (Hokej) ===== */
.page-photo { display:block; width:100%; max-height:420px; object-fit:cover; border-radius:14px; margin: 6px 0 22px; }
.pill-bad { background: var(--bad-soft, #fde8e8); color: var(--bad, #b42318); }
/* ===== Etap 13: raporty finansowe ===== */
.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.report-h2 { font-size: 1.1rem; margin: 22px 0 10px; }
.report-matrix table { font-size: .82rem; }
.report-matrix td, .report-matrix th { padding: 7px 8px; }
.sankey-wrap { overflow-x: auto; }
.sankey { width: 100%; min-width: 720px; height: auto; display: block; }
@media print {
  .panel-nav, .no-print, .topbar, footer { display: none !important; }
  .panel-shell { display: block !important; }
  .panel-main { padding: 0 !important; max-width: none !important; }
  .form-card, .table-wrap { box-shadow: none !important; break-inside: avoid; }
  .sankey { min-width: 0; }
  body { background: #fff !important; }
}
/* ===== Etap 13.1: zestawienie naliczeń trenera ===== */
.bd table { font-size: .9rem; }
.bd .bd-note { font-size: .78rem; }
.bd .bd-sub td { background: var(--bg); font-weight: 600; font-size: .84rem; color: var(--ink-soft); }
.bd .bd-total td { font-weight: 700; border-top: 2px solid var(--line-strong); }
.bd .bd-pay td { color: var(--ink-soft); font-size: .86rem; }
.bd-details > summary { cursor: pointer; font-size: .82rem; color: var(--navy); font-weight: 600; }
.bd-details[open] > summary { margin-bottom: 8px; }
/* ===== Etap 14: kontrolki segmentów ===== */
.seg-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin-bottom: 18px; }
.seg-card { border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 3px; font-size: .84rem; border: 1px solid var(--line); background: var(--surface); }
.seg-card b { font-size: .95rem; }
.seg-card .seg-name { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; }
.seg-card .seg-res { font-weight: 700; }
.seg-ok { border-color: #b9e1cf; background: #effaf4; } .seg-ok .seg-name, .seg-ok b { color: #1f7a55; }
.seg-bad { border-color: #f1b7a3; background: #fff2ec; } .seg-bad .seg-name, .seg-bad b, .seg-bad .seg-res { color: #b23c17; }
.seg-empty { opacity: .7; }
.seg-cell-bad { color: #b23c17; font-weight: 700; }
/* ===== Etap 15: galerie, lightbox, osiągnięcia ===== */
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.photo-grid a, .photo-grid .ph { display: block; border-radius: 10px; overflow: hidden; background: var(--ice-soft); aspect-ratio: 4 / 3; }
.photo-grid img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .25s ease; }
.photo-grid a:hover img { transform: scale(1.04); }
.gallery-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.gallery-card { display: block; text-decoration: none; color: inherit; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--surface); transition: box-shadow .2s; }
.gallery-card:hover { box-shadow: 0 6px 20px rgba(11,44,74,.12); }
.gallery-card .gc-img { aspect-ratio: 16 / 10; background: var(--ice-soft) center / cover no-repeat; }
.gallery-card .gc-body { padding: 10px 14px 14px; }
.gallery-card h3 { font-size: 1rem; margin: 0 0 2px; }
.random-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.random-photos a { display: block; position: relative; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; background: var(--ice-soft); }
.random-photos img { width: 100%; height: 100%; object-fit: cover; display: block; transition: opacity .6s ease; }
.random-photos .rp-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 6px 10px; font-size: .74rem; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.6)); }
@media (max-width: 640px) { .random-photos { grid-template-columns: 1fr 1fr; } .random-photos a:nth-child(3) { display: none; } }
.ach-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.ach-card { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--surface); display: flex; flex-direction: column; }
.ach-card .ach-img { aspect-ratio: 16 / 9; background: var(--ice-soft); }
.ach-card .ach-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ach-card .ach-body { padding: 12px 16px 16px; }
.ach-card h3 { font-size: 1.05rem; margin: 2px 0 6px; }
.news-thumbs { display: flex; gap: 6px; flex-wrap: wrap; margin: -4px 0 10px; }
.news-thumbs a { width: 64px; height: 48px; border-radius: 6px; overflow: hidden; display: block; }
.news-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.lb { position: fixed; inset: 0; z-index: 1000; background: rgba(8, 18, 30, .92); display: none; align-items: center; justify-content: center; }
.lb.open { display: flex; }
.lb figure { margin: 0; max-width: 92vw; max-height: 90vh; text-align: center; }
.lb img { max-width: 92vw; max-height: 82vh; border-radius: 6px; box-shadow: 0 10px 40px rgba(0,0,0,.5); }
.lb figcaption { color: #e6edf5; font-size: .9rem; margin-top: 10px; }
.lb .lb-cnt { opacity: .7; margin-left: 8px; }
.lb button { position: absolute; background: rgba(255,255,255,.12); color: #fff; border: 0; font-size: 2rem; width: 48px; height: 48px; border-radius: 50%; cursor: pointer; line-height: 1; }
.lb button:hover { background: rgba(255,255,255,.25); }
.lb .lb-close { top: 16px; right: 16px; }
.lb .lb-prev { left: 16px; top: 50%; transform: translateY(-50%); }
.lb .lb-next { right: 16px; top: 50%; transform: translateY(-50%); }
.fb-box { border: 1px solid var(--line); border-radius: 14px; padding: 16px; background: var(--surface); }
.fb-box iframe { width: 100%; max-width: 500px; height: 720px; border: 0; display: block; margin: 10px auto 0; }
.admin-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; }
.admin-photo { border: 1px solid var(--line); border-radius: 10px; padding: 6px; background: var(--surface); display: flex; flex-direction: column; gap: 5px; }
.admin-photo.is-cover { border-color: var(--navy); box-shadow: 0 0 0 2px var(--ice-soft); }
.admin-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; display: block; }
.admin-photo input { font-size: .78rem; padding: 4px 6px; border: 1px solid var(--line-strong); border-radius: 6px; width: 100%; }
.ach-card a.ach-img { display: block; }

/* Etap 16.1: stronicowanie aktualności */
.pager{display:flex; justify-content:center; align-items:center; gap:14px; flex-wrap:wrap; margin:30px 0 6px;}
.pager .btn[aria-disabled="true"]{opacity:.4; pointer-events:none;}
.pager-pages{display:flex; gap:6px; align-items:center;}
.pager-pages a, .pager-current{min-width:36px; height:36px; display:inline-flex; align-items:center; justify-content:center; border-radius:8px; font-size:.9rem; text-decoration:none;}
.pager-pages a{border:1px solid var(--line); color:inherit;}
.pager-pages a:hover{border-color:var(--ice);}
.pager-current{background:var(--ice); color:#fff; font-weight:600;}
@media (max-width:520px){
  .pager{gap:6px; flex-wrap:nowrap;}
  .pager .btn{padding-left:10px; padding-right:10px;}
  .pager-pages{gap:4px;}
  .pager-pages a, .pager-current{min-width:30px; height:32px; font-size:.85rem;}
}

/* Etap 17: formatowanie tekstu — przyciski w panelu i wygląd na stronie */
.rt-toolbar{display:flex; flex-wrap:wrap; align-items:center; gap:4px; padding:5px; border:1px solid var(--line); border-bottom:none; border-radius:8px 8px 0 0; background:var(--bg);}
textarea.rt-area{border-top-left-radius:0 !important; border-top-right-radius:0 !important;}
.rt-btn{min-width:32px; height:30px; padding:0 8px; border:1px solid var(--line); border-radius:6px; background:#fff; color:inherit; font-size:.92rem; cursor:pointer; line-height:1;}
.rt-btn:hover, .rt-btn:focus-visible{border-color:var(--ice); outline:none;}
.rt-hint{font-size:.74rem; color:var(--ink-faint, #7a8a99); margin-left:6px;}
.rt-linkbox{display:inline-flex; gap:4px; align-items:center; flex:1 1 260px;}
.rt-linkbox input{flex:1; min-width:0; height:30px; padding:0 8px; border:1px solid var(--line); border-radius:6px; font-size:.86rem;}
.rt-linkbox input.rt-bad{border-color:var(--bad, #c62828);}
.rt-linkbox .rt-ok{background:var(--ice); color:#fff; border-color:var(--ice);}
.rt-list{margin:0 0 1em; padding-left:1.3em; text-align:left;}
.rt-list li{margin:.15em 0;}
.content-text a, .rt-list a{text-decoration:underline; text-underline-offset:2px;}
.news-body > :last-child{margin-bottom:10px;}

/* Etap 18: kafelek „Administrator klubu” w „Kto korzysta?” i przełącznik trybu w menu */
.profile-avatar.is-admin{background:var(--navy-deep, #0b2c4a); font-size:1.8rem;}
.profile-card-admin{border-style:dashed;}
.ctx-switch{display:block; margin:6px 0 10px; padding:7px 10px; border:1px dashed var(--line-strong, #c9d4de); border-radius:8px; font-size:.82rem; text-decoration:none; color:inherit;}
.ctx-switch:hover{border-color:var(--ice);}
.ctx-badge{display:inline-block; margin-top:4px; padding:1px 7px; border-radius:999px; background:var(--navy); color:#fff; font-size:.68rem; font-weight:700; letter-spacing:.02em;}

/* Etap 19: wyjazdy — wybory do uzupełnienia, wolne miejsca */
select.is-pending{border-color:var(--bad, #c62828); background:#fff6f5;}
.trip-assign select{max-width:190px;}
.trip-free{display:flex; flex-wrap:wrap; gap:6px; margin:4px 0 10px;}
.trip-free .pill-full{background:var(--bad-soft, #fdecea); color:var(--bad, #c62828);}
.trip-free .pill{text-transform:none; letter-spacing:0; font-size:.82rem; font-weight:600; padding:4px 10px;}

/* Etap 20: własne typy pokoi, nazwy pokoi, filtr noclegu */
.room-types input{width:100%;}
.room-types .room-type-new input{background:var(--bg);}
.room-labels{display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:10px;}
.room-labels label{display:flex; flex-direction:column; gap:3px;}
.stay-filter{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:0 0 10px;}

/* Etap 21: zestawienie roczne rozliczeń trenerów */
.view-tabs { display:inline-flex; gap:4px; }
.year-tiles { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.year-table { font-size:.84rem; }
.year-table th, .year-table td { padding:6px 6px; white-space:nowrap; }
.year-table .ycell a { text-decoration:none; }
.year-table tr.year-total td { border-top:2px solid var(--line, #ccc); background:rgba(0,0,0,.03); }
.ys { display:inline-block; font-size:.7rem; font-weight:700; line-height:1; padding:2px 4px; border-radius:4px; }
.ys-settled { background:#d9f2df; color:#1d6b33; }
.ys-partial { background:#fff1cc; color:#7a5a00; }
.ys-open { background:#fbdada; color:#9b1c1c; }
@media print {
  .view-tabs, .btn { display:none !important; }
  .year-table { font-size:.68rem; }
  .year-table th, .year-table td { padding:3px 4px; }
}

/* Etap 23: pokoje i wolne miejsca (szybki przydział) */
.room-board td, .room-board th { vertical-align: top; }
.room-board tr.rb-type td { background: var(--bg); font-weight: 700; font-size: .86rem; color: var(--navy); }
.rb-slots { display: flex; flex-wrap: wrap; gap: 6px; }
.rb-slots select { min-width: 220px; max-width: 320px; }
