/* Shared components used by every page (homepage + subpages):
   theme toggle, "More" nav dropdown, install button, purchase toast, monthly goal. */

/* Theme toggle: invisible until the inline head script ran (no JS = no dead button) */
.theme-toggle{display:inline-grid;place-items:center;width:40px;height:40px;flex-shrink:0;border:1px solid var(--line);border-radius:12px;background:var(--wash,#ffffff0a);color:var(--ink);font-size:1.1rem;line-height:1;cursor:pointer;visibility:hidden;transition:border-color .2s,transform .15s}
html.js .theme-toggle{visibility:visible}
.theme-toggle:hover{border-color:var(--accent-ink,#f5e663);transform:rotate(-12deg)}
.theme-toggle:focus-visible{outline:2px solid var(--accent-ink,#f5e663);outline-offset:3px}

/* "Více" dropdown */
.nav-more{position:relative;display:flex;align-items:center}
.nav-more-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 0;color:inherit;font:inherit;font-weight:500;cursor:pointer}
.nav-more-btn.is-current,.nav-more-btn:hover{color:var(--accent-ink,#f5e663)}
.nav-more-btn span{font-size:.75em;transition:transform .2s}
.nav-more-btn[aria-expanded="true"] span{transform:rotate(180deg)}
.nav-more-menu{display:none;position:absolute;top:calc(100% + 12px);right:-14px;min-width:210px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 24px 50px -20px #0009;z-index:60;flex-direction:column}
.nav-more-menu a{display:block;padding:10px 12px;border-radius:9px;white-space:nowrap}
.nav-more-menu a:hover,.nav-more-menu a:focus-visible{background:var(--wash,#ffffff0a)}
.nav-more-btn[aria-expanded="true"]+.nav-more-menu{display:flex}
html:not(.js) .nav-more:focus-within .nav-more-menu{display:flex}

/* PWA install button (shown only after beforeinstallprompt) */
.install-app{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:var(--wash,#ffffff0a);color:var(--ink);font:600 .875rem/1.2 Inter,system-ui,sans-serif;cursor:pointer}
.install-app:hover{border-color:var(--accent-ink,#f5e663)}
.install-app[hidden]{display:none}

/* Recent purchase toast (bottom-left) */
.buy-toast{position:fixed;left:16px;bottom:16px;z-index:90;display:flex;align-items:center;gap:12px;max-width:min(360px,calc(100vw - 32px));padding:10px 10px 10px 12px;border:1px solid var(--line);border-left:3px solid var(--accent,#f5e663);border-radius:14px;background:var(--surface);color:var(--ink);box-shadow:0 18px 40px -18px #000a;font:400 .875rem/1.4 Inter,system-ui,sans-serif;transform:translateY(calc(100% + 24px));opacity:0;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .45s}
.buy-toast.is-shown{transform:none;opacity:1}
.buy-toast[hidden]{display:none}
.buy-toast img{width:36px;height:36px;border-radius:8px;image-rendering:pixelated;background:var(--wash,#ffffff10);flex-shrink:0}
.buy-toast-text{min-width:0;overflow-wrap:anywhere}
.buy-toast-text b{font-weight:600}
.buy-toast-text b.is-item{color:var(--accent-ink,#f5e663)}
.buy-toast-time{display:block;margin-top:2px;color:var(--muted);font-size:.75rem}
.buy-toast-close{flex-shrink:0;align-self:flex-start;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:8px;background:none;color:var(--muted);font-size:1.2rem;line-height:1;cursor:pointer}
.buy-toast-close:hover{color:var(--ink);background:var(--wash,#ffffff0a)}
@media(prefers-reduced-motion:reduce){.buy-toast{transition:none}}

/* Monthly goal */
.goal{border:1px solid var(--line);border-radius:var(--goal-radius,16px);background:var(--surface);padding:20px 22px}
.goal[hidden]{display:none}
.goal-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px 16px;flex-wrap:wrap}
.goal-title{font:600 1rem/1.3 'Space Grotesk',system-ui,sans-serif;letter-spacing:-.01em}
.goal-title span{display:block;font:600 .75rem/1.4 Inter,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink,#f5e663);margin-bottom:2px}
.goal-sum{color:var(--muted);font-size:.9375rem}
.goal-sum b{color:var(--ink);font-weight:600}
.goal-pct{font:700 1.5rem/1 'Space Grotesk',system-ui,sans-serif;color:var(--accent-ink,#f5e663)}
.goal-bar{position:relative;height:12px;margin-top:14px;border-radius:99px;background:var(--wash,#ffffff12);overflow:hidden}
.goal-bar i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:linear-gradient(90deg,var(--accent,#f5e663),var(--accent2,#ffb300));box-shadow:0 0 16px #f5c40066;transition:width 1s ease}
.goal-note{margin-top:10px;color:var(--muted);font-size:.8125rem}
.goal.is-compact{padding:14px 18px}
.goal.is-compact .goal-title{font-size:.9375rem}
.goal.is-compact .goal-pct{font-size:1.2rem}
.goal.is-compact .goal-bar{height:8px;margin-top:10px}
.goal.is-done .goal-bar i{background:linear-gradient(90deg,#7dffa8,#3ecf7a)}

/* Staff cards (nabor.html team list; index team when staff[] is available) */
:root{--rank-owner:#f5e663;--rank-admin:#ff7a7a;--rank-dev:#ffb300;--rank-mod:#baa4ef;--rank-builder:#7dffa8;--rank-helper:#89ecf5}
:root[data-theme="light"]{--rank-owner:#7d5b00;--rank-admin:#b3261e;--rank-dev:#8f4f00;--rank-mod:#6447bd;--rank-builder:#1d7a3e;--rank-helper:#0b6b78}
.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.staff-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 18px;border:1px solid var(--line);border-top:2px solid var(--rank,var(--line));background:var(--surface);text-align:center;border-radius:var(--staff-radius,0)}
.staff-card img{width:72px;height:72px;border-radius:12px;image-rendering:pixelated;background:var(--wash,#ffffff10);object-fit:cover}
.staff-name{font:700 1.05rem/1.3 'Space Grotesk',system-ui,sans-serif;overflow-wrap:anywhere}
.staff-rank{display:inline-block;padding:3px 10px;border:1px solid color-mix(in srgb,var(--rank,#888) 55%,transparent);background:color-mix(in srgb,var(--rank,#888) 16%,transparent);color:var(--rank,var(--ink));font:700 .6875rem/1.5 'Space Grotesk',system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase}
.x-role .staff-rank{--rank:var(--role)}
