/* v0.9.9 — identyfikacja wizualna Edukacja przez Szachy / MLS */
:root{
  --brand-ink:#1e1c1c;
  --brand-ink-soft:#302d2d;
  --brand-red:#d32b24;
  --brand-red-dark:#ac201c;
  --brand-blue:#1e80c0;
  --brand-blue-dark:#17679a;
  --bg:#f5f6f8;
  --surface:#fff;
  --surface-soft:#fafbfc;
  --text:#202633;
  --muted:#687386;
  --line:#e2e6ec;
  --shadow:0 10px 30px rgba(30,28,28,.07);
  --shadow-hover:0 14px 36px rgba(30,28,28,.12);
  --radius:16px;
}
html{background:var(--bg)}
body{
  color:var(--text);
  background-color:var(--bg);
  background-image:
    linear-gradient(45deg,rgba(30,28,28,.012) 25%,transparent 25%),
    linear-gradient(-45deg,rgba(30,28,28,.012) 25%,transparent 25%),
    linear-gradient(45deg,transparent 75%,rgba(30,128,192,.012) 75%),
    linear-gradient(-45deg,transparent 75%,rgba(211,43,36,.012) 75%);
  background-size:64px 64px;
  background-position:0 0,0 32px,32px -32px,-32px 0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  line-height:1.55;
}
a{color:var(--brand-blue-dark);text-underline-offset:2px}
a:hover{color:var(--brand-red-dark)}
.wrap{max-width:1180px;padding-left:24px;padding-right:24px}

/* Pasek aplikacji */
body>header.app-header{background:var(--brand-ink);padding:0;border-bottom:3px solid var(--brand-red);box-shadow:0 5px 18px rgba(0,0,0,.16)}
.header-shell{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:10px 28px;min-height:78px;padding-top:10px;padding-bottom:10px}
.brand{display:flex!important;align-items:center;gap:11px;color:#fff!important;font-size:17px;letter-spacing:.01em;line-height:1.15}
.brand::before{content:"";width:24px;height:24px;flex:0 0 24px;border-radius:6px;background:linear-gradient(90deg,var(--brand-red) 0 50%,var(--brand-blue) 50% 100%);box-shadow:inset 0 0 0 2px rgba(255,255,255,.14)}
body>header nav.primary-nav{float:none!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:4px!important;flex-wrap:wrap!important;min-width:0;margin:0!important}
body>header nav.primary-nav a{position:relative;margin:0!important;padding:9px 10px;border-radius:8px;color:#f4f5f7!important;font-size:14px;line-height:1.2;text-decoration:none;white-space:nowrap;transition:background .15s ease,color .15s ease}
body>header nav.primary-nav a:hover{background:rgba(255,255,255,.09);color:#fff!important}
body>header nav.primary-nav a.is-active{background:rgba(211,43,36,.18);color:#fff!important}
body>header nav.primary-nav a.is-active::after{content:"";position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;background:var(--brand-red)}
.nav-user{display:inline-flex;align-items:center;gap:8px;margin-left:auto;padding-left:10px;color:#cfd3da;font-size:13px;white-space:nowrap}
.nav-user strong{color:#fff;font-weight:700}
body>header nav.primary-nav .nav-logout{border:1px solid rgba(255,255,255,.18);padding-left:12px;padding-right:12px}

/* Główna powierzchnia */
main.app-main{padding-top:26px;padding-bottom:10px;min-height:calc(100vh - 176px)}
h1{margin:0 0 8px;color:#151a23;font-size:clamp(28px,3.5vw,38px);line-height:1.12;letter-spacing:-.025em}
h2{color:#1b202a;letter-spacing:-.012em}
h3{color:#242a34}
p{max-width:78ch}
.hero{padding:10px 0 22px}
.hint{color:var(--muted)}

/* Branding na pulpitach */
.dashboard-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:34px;align-items:center;margin:4px 0 20px;padding:22px 26px;background:linear-gradient(135deg,#fff 0%,#fff 70%,#f7f8fa 100%);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);overflow:hidden;position:relative}
.dashboard-hero::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(var(--brand-red) 0 58%,var(--brand-blue) 58% 100%)}
.dashboard-kicker{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--brand-red-dark);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:12px}
.dashboard-kicker::before{content:"";width:22px;height:3px;border-radius:3px;background:var(--brand-red)}
.dashboard-hero h1{margin-bottom:8px}
.dashboard-hero p{margin:0;color:var(--muted);font-size:16px}
.brand-lockup{display:flex;align-items:center;justify-content:flex-end;gap:18px;min-width:245px}
.brand-lockup img{display:block;object-fit:contain}
.brand-lockup .logo-edu{width:auto;height:78px;max-width:155px}
.brand-lockup .logo-mls{width:auto;height:74px;max-width:74px}
.brand-lockup-divider{width:1px;height:66px;background:#d9dde4}
.season-chip{display:inline-flex;margin-top:14px;padding:5px 10px;border-radius:999px;background:#f1f4f8;color:#596477;font-size:13px;font-weight:700}

/* Karty / dashboard */
.card{background:rgba(255,255,255,.97);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin:18px 0}
.card h2:first-child,.card h3:first-child{margin-top:0}
.card:hover{border-color:#d8dde5}
.admin-links{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 22px}
.admin-tile{position:relative;gap:10px;min-height:126px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.admin-tile:hover{background:#fff;transform:translateY(-2px);box-shadow:var(--shadow-hover);border-color:#ccd2dc}
.admin-tile strong{display:flex;align-items:center;gap:11px;color:#171c25;font-size:16px;line-height:1.3}
.admin-tile span{color:var(--muted);font-size:13px;line-height:1.45}
.tile-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex:0 0 38px;border-radius:11px;background:#fcebea;color:var(--brand-red)}
.admin-tile:nth-child(4n+2) .tile-icon,.admin-tile:nth-child(4n+4) .tile-icon{background:#eaf4fb;color:var(--brand-blue)}
.ui-icon{display:block;width:21px;height:21px}

.dashboard-alert{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 18px;margin:14px 0;border:1px solid #edd1cf;border-left:4px solid var(--brand-red);border-radius:13px;background:#fff9f8;box-shadow:0 5px 16px rgba(30,28,28,.04)}
.dashboard-alert-copy{display:flex;align-items:center;gap:12px}
.dashboard-alert .tile-icon{background:#fcebea}
.dashboard-alert strong{display:block;color:#271b1a}
.dashboard-alert p{margin:2px 0 0;color:var(--muted);font-size:13px}
.dashboard-guide{position:relative;overflow:hidden}
.dashboard-guide::after{content:"";position:absolute;width:120px;height:120px;right:-55px;bottom:-55px;border:18px solid rgba(30,128,192,.06);transform:rotate(45deg)}
.dashboard-guide ol{padding-left:22px;margin-bottom:0}
.dashboard-guide li{padding:4px 0}

/* Panel zawodnika */
.player-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}
.player-stat{position:relative;margin:0;padding:19px 20px;overflow:hidden}
.player-stat::after{content:"";position:absolute;right:-20px;bottom:-25px;width:76px;height:76px;border-radius:18px;transform:rotate(25deg);background:rgba(211,43,36,.045)}
.player-stat:nth-child(2)::after{background:rgba(30,128,192,.055)}
.player-stat-label{display:block;color:var(--muted);font-size:13px;font-weight:650}
.player-stat-value{display:block;margin-top:5px;font-size:31px;line-height:1.15;color:#151a23;letter-spacing:-.02em}
.player-stat-value small{font-size:16px;color:var(--muted);font-weight:700}
.player-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.75fr);gap:16px;align-items:start}
.today-tile{position:relative;border:1px solid #e9c9c6!important;border-top:4px solid var(--brand-red)!important;background:linear-gradient(180deg,#fff 0%,#fffbfa 100%)}
.today-tile h2{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.today-date{color:var(--brand-red-dark);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.dashboard-side-stack>.card{margin-top:0}
.dashboard-side-stack>.card+ .card{margin-top:16px}
.section-icon-heading{display:flex;align-items:center;gap:10px}
.section-icon-heading .tile-icon{width:34px;height:34px;flex-basis:34px}
.mini-ranking{padding-left:0;list-style:none}
.mini-ranking li{border-bottom:1px solid #edf0f3;padding:9px 0}
.mini-ranking li:last-child{border-bottom:0}
.mini-ranking li span:first-child{min-width:0}

/* Formularze / przyciski */
input,textarea,select{border:1px solid #cfd5de!important;border-radius:10px!important;background:#fff!important;color:var(--text)!important;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand-blue)!important;box-shadow:0 0 0 3px rgba(30,128,192,.13)}
label{color:#343a46}
button,.button-link{border-radius:9px!important;font-weight:700;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}
button{background:var(--brand-ink);color:#fff}
button:hover{background:#0f0e0e;transform:translateY(-1px)}
.button-link{background:#f0f2f5;color:#2c3442;text-decoration:none;border:1px solid #e0e4ea;padding:8px 12px}
.button-link:hover{background:#e9edf2;color:#171c25;transform:translateY(-1px)}
.button-primary{background:var(--brand-red)!important;color:#fff!important;border-color:var(--brand-red)!important;box-shadow:0 6px 16px rgba(211,43,36,.16)}
.button-primary:hover{background:var(--brand-red-dark)!important;border-color:var(--brand-red-dark)!important}
.danger{background:#b42318!important;color:#fff!important}
.danger:hover{background:#912018!important}

/* Komunikaty */
.success,.error{border-radius:12px;border:1px solid transparent;padding:14px 16px}
.success{background:#ecf8f0;border-color:#cfe9d8;color:#215f37}
.error{background:#fff0ef;border-color:#f0cfcc;color:#8f2620}
.pending-account{border-left:4px solid var(--brand-blue)!important;background:linear-gradient(90deg,#f3f9fd 0,#fff 42%)}
.badge{background:#f0f2f5;color:#4f5a6a;border:1px solid #e2e6ec;font-weight:650}
.status-pending{background:#fff6dc!important;border-color:#f2dfaa!important;color:#715514!important}
.status-approved,.badge-active{background:#e7f3fb!important;border-color:#cce5f5!important;color:#185d89!important}
.status-delivered{background:#e8f7ed!important;color:#24643b!important}
.status-rejected{background:#ffeded!important;color:#8a2b27!important}

/* Tabele */
.table-scroll{border:1px solid var(--line);border-radius:12px;background:#fff}
table{background:#fff}
th{background:#f6f7f9;color:#4a5565;font-size:12px;text-transform:uppercase;letter-spacing:.045em;font-weight:800}
th,td{padding:11px 12px;border-bottom:1px solid #e9ecf0}
tr:last-child td{border-bottom:0}
tbody tr:hover td{background:#fbfcfd}
.ranking-me{background:#fff2ef!important;box-shadow:inset 4px 0 var(--brand-red)}

/* Ranking */
.period-tabs{padding:4px 0}
.ranking-podium{gap:12px}
.podium-card{border:1px solid var(--line);border-top:4px solid #9ca3af;border-radius:14px;background:#fff;box-shadow:0 6px 18px rgba(30,28,28,.05)}
.podium-card:nth-child(1){border-top-color:#d4a72c}.podium-card:nth-child(2){border-top-color:#9299a3}.podium-card:nth-child(3){border-top-color:#b87333}
.podium-rank{font-size:18px;color:#303744}
.ranking-history-link{border-radius:12px;border-color:var(--line)}
.ranking-history-current{box-shadow:inset 4px 0 var(--brand-red);background:#fff7f6}

/* Nagrody */
.reward-card{border:1px solid var(--line);box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease}
.reward-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}
.reward-category{background:#eef5fa;color:#23688f;border:1px solid #d7e9f4}
.reward-gallery-thumb.is-active{border-color:var(--brand-red)}
.reward-image,.reward-thumb-placeholder,.reward-image-placeholder{background:linear-gradient(145deg,#fafafa,#f2f4f6)}

/* Publiczne / logowanie */
.narrow{max-width:500px;margin:42px auto}
.narrow.card{padding:28px 30px}
.public-brand-lockup{display:flex;align-items:center;justify-content:center;gap:16px;margin:18px auto 0;min-height:64px}
.public-brand-lockup img:first-child{height:58px;width:auto;max-width:112px;object-fit:contain}
.public-brand-lockup img:last-child{height:54px;width:auto;max-width:56px;object-fit:contain}
.public-brand-lockup span{width:1px;height:48px;background:#d9dde4}

/* Stopka */
footer.site-footer{padding:28px 0 34px;color:#737d8d}
.footer-shell{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:20px;border-top:1px solid #dde1e7;font-size:13px}
.footer-links{display:flex;flex-wrap:wrap;gap:12px}
.footer-links a{color:#536174}
.footer-version{white-space:nowrap}

/* Responsywność */
@media(max-width:1080px){
  .admin-links{grid-template-columns:repeat(3,minmax(0,1fr))}
  .header-shell{grid-template-columns:1fr;gap:5px;padding-top:12px;padding-bottom:12px}
  body>header nav.primary-nav{gap:3px!important}
  .nav-user{margin-left:0;padding-left:0}
}
@media(max-width:820px){
  .wrap{padding-left:17px;padding-right:17px}
  main.app-main{padding-top:18px}
  .dashboard-hero{grid-template-columns:1fr;gap:18px;padding:20px}
  .brand-lockup{justify-content:flex-start;min-width:0}
  .brand-lockup .logo-edu{height:64px}.brand-lockup .logo-mls{height:62px}.brand-lockup-divider{height:54px}
  .admin-links{grid-template-columns:repeat(2,minmax(0,1fr))}
  .player-dashboard-grid{grid-template-columns:1fr}
  .dashboard-side-stack>.card{margin-top:0}
}
@media(max-width:620px){
  body>header nav.primary-nav{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px!important}
  body>header nav.primary-nav a{padding:8px 9px}
  .nav-user{grid-column:1 / -1;justify-content:space-between;border-top:1px solid rgba(255,255,255,.1);padding-top:8px;margin-top:3px}
  .nav-logout{margin-left:auto!important}
  .dashboard-hero{margin-top:0}
  .brand-lockup{gap:12px}.brand-lockup .logo-edu{height:55px;max-width:108px}.brand-lockup .logo-mls{height:52px;max-width:52px}.brand-lockup-divider{height:45px}
  .admin-links,.player-stats{grid-template-columns:1fr}
  .admin-tile{min-height:auto}
  .dashboard-alert{align-items:flex-start;flex-direction:column}
  .narrow.card{padding:22px 20px}
  .footer-shell{align-items:flex-start;flex-direction:column}
  .footer-version{white-space:normal}
}

/* Dalsze ujednolicenie ekranów treściowych */
.legal-text{max-width:980px;margin-left:0}
.legal-text h2{margin-top:30px;padding-top:4px;font-size:21px}
.legal-text h2::after{content:"";display:block;width:46px;height:3px;margin-top:8px;border-radius:3px;background:linear-gradient(90deg,var(--brand-red) 0 68%,var(--brand-blue) 68% 100%)}
.quiz-question-card{border-top:4px solid var(--brand-red)}
.quiz-option{background:#fff;border-color:var(--line);transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}
.quiz-option:hover{background:#fcfcfd;border-color:#cfd5dd}
.quiz-option:has(input:checked){border-color:var(--brand-red);background:#fff8f7;box-shadow:0 0 0 2px rgba(211,43,36,.08)}
.quiz-letter{background:var(--brand-ink)}
.quiz-option:has(input:checked) .quiz-letter{background:var(--brand-red)}
.quiz-submit{background:var(--brand-red)}
.quiz-submit:hover{background:var(--brand-red-dark)}
.quiz-submitted{background:#f2f8fc;border:1px solid #d8eaf5}
.review-selected{box-shadow:inset 4px 0 var(--brand-red)}
.review-correct{border-color:#b9dec5;background:#f2faf4}
.distribution-bar span{background:linear-gradient(90deg,var(--brand-blue),#43a6dc)}
.archive-item,.task-item{border-color:var(--line);border-radius:12px;box-shadow:0 4px 14px rgba(30,28,28,.035)}
.archive-item:hover,.task-item:hover{background:#fff;box-shadow:0 8px 20px rgba(30,28,28,.07)}
.task-stats .card{border-top:3px solid #e4e7ec}
.task-stats .card:nth-child(2){border-top-color:rgba(30,128,192,.45)}
.task-stats .card:nth-child(3){border-top-color:rgba(211,43,36,.4)}
.narrow form>button,.narrow form button[type="submit"]{background:var(--brand-red)}
.narrow form>button:hover,.narrow form button[type="submit"]:hover{background:var(--brand-red-dark)}

/* Drobne elementy szachowe — wyłącznie dekoracyjne */
.dashboard-hero::after{content:"";position:absolute;right:18%;top:-42px;width:118px;height:118px;opacity:.025;background:conic-gradient(from 90deg,var(--brand-ink) 0 25%,transparent 0 50%,var(--brand-ink) 0 75%,transparent 0);background-size:30px 30px;transform:rotate(8deg);pointer-events:none}
