*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#f5f7fb;color:#172033}header{background:#172033;color:#fff;padding:14px 0}.wrap{max-width:1050px;margin:auto;padding:0 18px}.brand{font-weight:800;color:#fff;text-decoration:none}nav{float:right}nav a{color:#fff;text-decoration:none;margin-left:18px}.hero{padding:28px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.card{background:#fff;border-radius:14px;padding:22px;margin:16px 0;box-shadow:0 2px 10px #0000000d}.narrow{max-width:460px;margin:50px auto}label{display:block;font-weight:650;margin:10px 0}input{display:block;width:100%;padding:11px;border:1px solid #ccd3df;border-radius:8px;margin-top:5px;font-size:16px}button{background:#172033;color:#fff;border:0;border-radius:8px;padding:11px 18px;font-size:16px;cursor:pointer;margin-top:10px}.big{font-size:42px}.success,.error{padding:14px;border-radius:10px;margin:15px 0}.success{background:#e8f7ed}.error{background:#fdecec}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-bottom:1px solid #e7eaf0}footer{padding:30px 0;color:#697386}@media(max-width:600px){nav{float:none;margin-top:10px}.brand{display:inline-block}nav a{margin-left:10px;margin-right:8px}}

/* v0.3 — zadania szachowe */
.hint{color:#5f6b7a;font-size:.95rem}.badge{display:inline-block;background:#eef2f7;border-radius:999px;padding:5px 9px;margin-right:5px;font-size:.9rem}.table-scroll{overflow:auto}.inline-form{display:inline}.danger{background:#a52a2a;font-size:13px;padding:7px 10px}.button-link{display:inline-block;background:#eef2f7;color:#172033;text-decoration:none;border-radius:7px;padding:7px 10px;font-size:13px;margin-right:4px}.task-header{padding-top:20px}.chess-layout{display:grid;grid-template-columns:minmax(320px,600px) minmax(260px,1fr);gap:18px;align-items:start}.chess-card{padding:16px}.chessboard{width:min(92vw,560px) !important;height:min(92vw,560px) !important;max-width:100%;max-height:100%;aspect-ratio:1 / 1;display:grid !important;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));margin:0 auto;padding:0;border:4px solid #172033;border-radius:4px;overflow:hidden}.square{position:relative;width:auto !important;height:auto !important;min-width:0;min-height:0;margin:0 !important;border:0;padding:0;display:flex !important;align-items:center;justify-content:center;font-family:"Noto Sans Symbols 2","Segoe UI Symbol",serif;cursor:pointer}.square.light{background:#f0d9b5}.square.dark{background:#b58863}.square.selected{box-shadow:inset 0 0 0 5px #eab308}.square.legal::after{content:"";width:22%;height:22%;border-radius:50%;background:#17203366;position:absolute}.piece{font-size:clamp(30px,6.5vw,62px);line-height:1;position:relative;z-index:1;user-select:none}.piece-w{color:#fff;text-shadow:0 1px 1px #0008;-webkit-text-stroke:1px #333}.piece-b{color:#172033;text-shadow:0 1px 1px #fff5;-webkit-text-stroke:.2px #172033}.chess-status{font-weight:700;text-align:center;margin:14px 0 6px;min-height:24px}.task-actions{text-align:center}.task-actions button{margin-top:4px}.task-info h2{margin-top:0}.explanation{margin-top:20px;padding:14px;background:#f5f7fb;border-radius:10px}.task-info hr{border:0;border-top:1px solid #e5e7eb;margin:22px 0}@media(max-width:800px){.chess-layout{grid-template-columns:1fr}.chessboard{width:min(92vw,560px) !important;height:min(92vw,560px) !important}.task-info{margin-top:0}}
.task-list{display:grid;gap:8px}.task-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid #e2e7ef;border-radius:10px;text-decoration:none;color:#172033;background:#fff}.task-item:hover{background:#f8fafc}.task-points{font-weight:800;white-space:nowrap}.task-item small{color:#667085}

/* v0.4 — zarządzanie zawodnikami */
.admin-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:20px 0}.admin-tile{display:flex;flex-direction:column;gap:8px;padding:20px;background:#fff;border:1px solid #e2e7ef;border-radius:12px;color:#172033;text-decoration:none;box-shadow:0 2px 10px #0000000d}.admin-tile:hover{background:#f8fafc}.admin-tile strong{font-size:18px}.admin-tile span{color:#667085;font-size:14px}.admin-tile-muted{opacity:.75;cursor:default}.credentials{border:2px solid #b7e4c7}.credentials code{font-size:1.05rem;word-break:break-all}.card ul{line-height:1.8}


/* v0.5 — ranking */
.ranking-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.ranking-summary .card{margin:0}
.ranking-place,.ranking-number{display:block;font-size:36px;margin-top:5px}
.ranking-table th,.ranking-table td{vertical-align:middle}
.ranking-me{background:#fff8df}
.mini-ranking{margin:0 0 12px;padding-left:26px}
.mini-ranking li{display:flex;justify-content:space-between;gap:14px;padding:7px 0}
@media(max-width:700px){.ranking-table{min-width:760px}}


/* v0.6 — nagrody i wymiany */
.reward-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.reward-card{margin:0}
.reward-card h2{margin-top:0}
.reward-balance{display:flex;align-items:center;justify-content:space-between;gap:18px}
.reward-balance strong{font-size:24px}
.status-pending{background:#fff4cc}
.status-approved{background:#dbeafe}
.status-delivered{background:#dcfce7}
.status-rejected{background:#fee2e2}
.badge-active{background:#dcfce7}
@media(max-width:600px){
    .reward-balance{display:block}
    .reward-balance span{display:block;margin-top:8px}
}


/* v0.6.2 — zdjęcia nagród */
.reward-image{width:100%;height:210px;border-radius:12px;overflow:hidden;background:#f5f7fb;display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.reward-image img{width:100%;height:100%;object-fit:contain;display:block}
.reward-image-placeholder{font-size:72px}
.reward-thumb{width:78px;height:78px;object-fit:cover;border-radius:10px;display:block;background:#f5f7fb}
.reward-thumb-placeholder{width:78px;height:78px;border-radius:10px;background:#f5f7fb;display:flex;align-items:center;justify-content:center;font-size:32px}
.reward-edit-image{width:min(420px,100%);height:280px;border-radius:12px;overflow:hidden;background:#f5f7fb;display:flex;align-items:center;justify-content:center;margin:0 0 18px}
.reward-edit-image img{max-width:100%;max-height:100%;object-fit:contain}
.checkbox-label{display:flex;align-items:center;gap:8px;font-weight:650}
.checkbox-label input{display:inline-block;width:auto;margin:0}
input[type="file"]{padding:8px;background:#fff}
@media(max-width:600px){
    .reward-image{height:180px}
    .reward-thumb,.reward-thumb-placeholder{width:62px;height:62px}
}
