*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:#14161c;color:#e8e8ee}
header,.controls,.count,footer{max-width:1400px;margin:0 auto;padding:0 16px}
h1{margin:20px 0 4px;font-size:1.6rem}h1 small{font-weight:400;color:#9aa}
.sub{margin:0 0 12px;color:#aab}
code{background:#262a35;padding:1px 5px;border-radius:4px}
.summary{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}
.stat{background:#1f232d;border-radius:10px;padding:8px 14px;min-width:110px}
.stat b{display:block;font-size:1.5rem}
.stat.ma b{color:#5fd38d}.stat.chybi b{color:#ff6b6b}.stat.obj b{color:#ffb74d}.stat.nej b{color:#b39ddb}.stat.pct b{color:#64b5f6}
.progress{height:10px;background:#2a2e3a;border-radius:6px;overflow:hidden;margin:6px 0 16px}
#bar{height:100%;background:linear-gradient(90deg,#5fd38d,#64b5f6);width:0;transition:width .4s}
.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:8px}
.group{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.group span{color:#99a;margin-right:4px}
button{background:#262a35;color:#dde;border:1px solid #363b4a;border-radius:6px;padding:6px 10px;cursor:pointer}
button.on{background:#3d6af2;border-color:#3d6af2;color:#fff}
#q{flex:1;min-width:220px;padding:8px 10px;border-radius:6px;border:1px solid #363b4a;background:#1f232d;color:#eee}
.count{color:#99a;font-size:.9rem}
.grid{max-width:1400px;margin:0 auto;padding:0 16px 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.card{position:relative;background:#1f232d;border-radius:10px;padding:6px;text-align:center;border:2px solid transparent}
.card a{display:block;position:relative;border-radius:7px;overflow:hidden}
.card img{width:100%;aspect-ratio:245/342;object-fit:cover;display:block;background:#2a2e3a}
.card .t{font-size:.8rem;margin-top:4px;line-height:1.2}
.card .t .n{color:#99a}
.card.CHYBI img{filter:grayscale(1) brightness(.45);opacity:.55}
.card.CHYBI{border-color:#5a2a2a}
.card.OBJEDNANO{border-color:#ffb74d}.card.OBJEDNANO img{filter:grayscale(.6) brightness(.75)}
.card.NEJASNE{border-color:#b39ddb}.card.NEJASNE img{filter:grayscale(.4) brightness(.8)}
.card.MA{border-color:#2f6b47}
.badge{position:absolute;top:10px;left:10px;font-size:.68rem;font-weight:700;padding:2px 6px;border-radius:4px;z-index:2;box-shadow:0 1px 3px #0008}
.badge.st-CHYBI{background:#c62828;color:#fff}
.badge.st-OBJEDNANO{background:#ffb74d;color:#222}
.badge.st-NEJASNE{background:#b39ddb;color:#222}
.badge.st-MA{background:#2e7d32;color:#fff}
.vbadge{position:absolute;top:10px;right:10px;font-size:.68rem;font-weight:700;padding:2px 6px;border-radius:4px;z-index:2;color:#111}
.vbadge.reverse{background:linear-gradient(135deg,#ff9a9e,#fad0c4,#a1c4fd,#c2e9fb,#d4fc79)}
.vbadge.IR{background:#81d4fa}.vbadge.UR{background:#ffd54f}.vbadge.SIR{background:#f48fb1}.vbadge.HR{background:#ffe082;background:linear-gradient(135deg,#ffd700,#fff3b0,#e6b800)}
/* reverse holo: duhový lesk přes obrázek */
.card.v-reverse a::after{content:"";position:absolute;inset:0;background:linear-gradient(125deg,transparent 20%,rgba(255,0,150,.18),rgba(0,200,255,.18),rgba(255,255,0,.15),transparent 80%);mix-blend-mode:screen;pointer-events:none}
.note{font-size:.7rem;color:#ffb74d}
.empty,.error{grid-column:1/-1;text-align:center;color:#ff8a80;padding:30px}
footer{color:#99a;font-size:.85rem;border-top:1px solid #2a2e3a;padding-top:12px;padding-bottom:30px}
footer a{color:#64b5f6}

body.mode-binder #f-state,
body.mode-binder #f-var,
body.mode-binder #count,
body.mode-binder #grid,
body.mode-grid #binder{display:none}
.binder{max-width:1100px;margin:0 auto;padding:0 16px 28px}
.binder-nav{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin:4px 0 6px}
.binder-nav button{min-width:46px;min-height:46px;font-size:1.45rem;line-height:1;padding:6px 12px;touch-action:manipulation}
.binder-nav button:disabled{opacity:.35;cursor:default}
.binder-mid{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:center}
.jump{display:inline-flex;align-items:center;gap:6px;color:#d5d8e0}
#page-jump{width:4.6rem;padding:8px 6px;border-radius:6px;border:1px solid #363b4a;background:#1f232d;color:#eee;font:inherit;text-align:center;-moz-appearance:textfield;appearance:textfield}
#page-jump::-webkit-outer-spin-button,#page-jump::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
#page-total,.hint{color:#9aa}
.hint{font-size:.8rem}
#binder-where{margin:0 0 4px;text-align:center;color:#c5cad6;font-size:.95rem}
#binder-status{min-height:1.2em;margin:0 0 10px;text-align:center;color:#9eb6ff;font-size:.92rem}
.loading{color:#9aa;text-align:center;margin:24px 0}
.spread{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:stretch;position:relative}
.spread.pair,.spread.solo-right,.spread.solo-left{width:min(100%,calc(1.55*(100vh - 330px)));margin-inline:auto}
.spread.solo{display:block}
.spread.solo .page{width:100%;max-width:520px;margin:0 auto}
.spread.solo-right .page{grid-column:2}
.spread.solo-left .page{grid-column:1}
.spread.pair::before{content:"";position:absolute;top:46px;bottom:10px;left:50%;width:14px;transform:translateX(-50%);background:radial-gradient(circle,#9aa0aa 1.6px,transparent 2.1px) center/14px 22px repeat-y;opacity:.5;pointer-events:none}
.cover-plate{display:flex;align-items:center;justify-content:center;background:#16181e;border:1px solid #343844;border-radius:12px;color:#8b93a3;letter-spacing:.14em;text-transform:uppercase;font-size:.85rem}
.page{min-width:0;background:#16181e;border:1px solid #343844;border-radius:12px;padding:10px;box-shadow:0 12px 28px rgba(0,0,0,.28)}
.page-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin:0 2px 8px;color:#9aa3b2;font-size:.92rem}
.page-head b{color:#fff;font-size:1.05rem}
.page.is-current .page-head b{color:#9eb6ff}
.pockets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.pocket{position:relative;min-width:0;min-height:0;background:#0c0e13;border-radius:5px;overflow:hidden;aspect-ratio:245/342;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.pocket a{position:absolute;inset:0;border-radius:inherit}
.pocket a:focus-visible{outline:2px solid #7aa2ff;outline-offset:2px}
.pocket img{width:100%;height:100%;object-fit:cover;display:block;background:#12141a}
.pocket.vacant img{opacity:.22;filter:grayscale(1) brightness(.7)}
.pocket.vacant.OBJEDNANO{box-shadow:inset 0 0 0 2px #ffb74d}
.pocket .marker{position:absolute;top:6px;left:6px;z-index:3;background:#ffb74d;color:#221c10;font-size:.62rem;font-weight:800;letter-spacing:.02em;padding:2px 5px;border-radius:3px;pointer-events:none}
.ghost-label{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 4px 6px;text-align:center;color:#f2f4f8;background:linear-gradient(transparent,rgba(0,0,0,.82));pointer-events:none}
.ghost-label b{display:block;font-size:clamp(13px,1.6vw,18px);letter-spacing:.03em}
.ghost-label small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.72rem;font-weight:500;line-height:1.2;opacity:.9}
.pocket.hit{outline:3px solid #7aa2ff;outline-offset:-3px;z-index:1}
.pocket.filled.v-reverse a::after{content:"";position:absolute;inset:0;background:linear-gradient(125deg,transparent 20%,rgba(255,0,150,.18),rgba(0,200,255,.18),rgba(255,255,0,.15),transparent 80%);mix-blend-mode:screen;pointer-events:none}
@media (max-width:520px){
  .hint{display:none}
  .binder-mid{justify-content:flex-start}
}
