:root {
  color-scheme: dark;
  --sky: #101820;
  --deep: #0a0f13;
  --stone: #252c30;
  --stone-light: #384148;
  --grass: #5d8c35;
  --grass-light: #82b84a;
  --dirt: #735037;
  --gold: #f0c34a;
  --cream: #f3eddc;
  --muted: #aeb9b2;
  --danger: #e66b55;
  --success: #7dcf68;
  --pixel: 4px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  background: var(--deep);
  color: var(--cream);
}

* { box-sizing: border-box; }
html {
  scroll-behavior: smooth;
  /* Stejná šířka viewportu na krátkých i dlouhých stránkách. */
  overflow-y: scroll;
  scrollbar-gutter: stable;
}
body {
  margin: 0;
  min-height: 100vh;
  background:
    linear-gradient(180deg, rgba(13, 25, 31, .18), rgba(5, 9, 12, .92)),
    repeating-linear-gradient(0deg, transparent 0 31px, rgba(255,255,255,.018) 32px),
    repeating-linear-gradient(90deg, transparent 0 31px, rgba(255,255,255,.018) 32px),
    var(--sky);
}

a { color: inherit; }
.wrap { width: min(1120px, calc(100% - 32px)); margin-inline: auto; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgba(10, 15, 19, .92);
  border-bottom: var(--pixel) solid var(--grass);
  backdrop-filter: blur(10px);
}
.nav { min-height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.brand-title { font-size: 1.6rem; letter-spacing: .045em; text-shadow: 2px 2px 0 #000; }
.server-online { display: inline-flex; align-items: center; gap: 7px; margin-left: 7px; padding: 6px 9px; border: 1px solid #405057; background: #10191e; color: #aeb9b7; font: 800 .72rem/1 system-ui,sans-serif; white-space: nowrap; }
.server-online i { width: 8px; height: 8px; background: #7e898b; box-shadow: 0 0 0 2px #263137; }
.server-online.is-online { border-color: #47753a; color: #bde69e; }
.server-online.is-online i { background: #7dcf68; box-shadow: 0 0 0 2px #294424,0 0 9px rgba(125,207,104,.65); }
.server-online.is-offline i,.server-online.is-unknown i { background: #bd554d; box-shadow: 0 0 0 2px #4a2522; }
.brand-mark {
  width: 34px; height: 34px; display: grid; place-items: center;
  background: linear-gradient(var(--grass-light) 0 28%, var(--dirt) 28%);
  border: 3px solid #111; box-shadow: 3px 3px 0 #000; color: transparent;
}
.brand-name, h1, h2, h3, .eyebrow, .stat strong, .step-number {
  font-family: "Courier New", ui-monospace, monospace;
  font-weight: 900;
  letter-spacing: .02em;
}
.brand-name { font-size: 1.35rem; text-transform: uppercase; }
.nav-links { display: flex; align-items: center; gap: 8px; }
.nav-links a { padding: 9px 12px; color: var(--muted); text-decoration: none; font-weight: 700; }
.nav-links a:hover, .nav-links a:focus-visible { color: white; background: var(--stone); }
.discord-badge{position:fixed;right:22px;bottom:22px;z-index:30;display:flex;align-items:center;gap:9px;min-height:48px;padding:0 17px;border:2px solid #9da7ff;background:#5865f2;color:#fff;text-decoration:none;text-transform:uppercase;font:900 .84rem/1 "Courier New",monospace;letter-spacing:.05em;box-shadow:5px 6px 0 rgba(0,0,0,.72),0 0 22px rgba(88,101,242,.28);transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.discord-badge span{font-size:1.05rem;transform:rotate(45deg)}.discord-badge:hover,.discord-badge:focus-visible{background:#7180ff;transform:translate(2px,2px);box-shadow:3px 4px 0 rgba(0,0,0,.72),0 0 26px rgba(88,101,242,.4)}@media(max-width:620px){.discord-badge{right:12px;bottom:12px;min-height:42px;padding:0 13px}.discord-badge strong{font-size:.76rem}}

.hero { padding: clamp(72px, 11vw, 132px) 0 80px; position: relative; overflow: hidden; }
.hero::after {
  content: ""; position: absolute; inset: auto 0 0; height: 64px;
  background: linear-gradient(var(--grass) 0 12px, var(--dirt) 12px 100%);
  clip-path: polygon(0 42%, 8% 42%, 8% 20%, 17% 20%, 17% 56%, 29% 56%, 29% 30%, 43% 30%, 43% 65%, 58% 65%, 58% 38%, 72% 38%, 72% 12%, 86% 12%, 86% 48%, 100% 48%, 100% 100%, 0 100%);
  opacity: .5;
}
.hero-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(280px, .7fr); gap: 56px; align-items: center; position: relative; z-index: 1; }
.eyebrow { color: var(--grass-light); text-transform: uppercase; font-size: .84rem; margin: 0 0 16px; }
h1 { margin: 0; max-width: 760px; font-size: clamp(2.7rem, 7vw, 5.6rem); line-height: .94; text-transform: uppercase; text-shadow: 5px 5px 0 #000; }
.hero-copy { max-width: 680px; color: #c7d0ca; font-size: clamp(1.05rem, 2vw, 1.25rem); line-height: 1.7; }
.actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 28px; }
.button {
  display: inline-flex; justify-content: center; align-items: center; min-height: 48px; padding: 0 20px;
  border: 3px solid #111; box-shadow: 4px 4px 0 #000; text-decoration: none; font-weight: 900;
  text-transform: uppercase; letter-spacing: .04em; cursor: pointer;
}
.button-primary { background: var(--grass); color: white; }
.button-primary:hover, .button-primary:focus-visible { background: var(--grass-light); transform: translate(2px,2px); box-shadow: 2px 2px 0 #000; }
.button-secondary { background: var(--stone-light); color: white; }

.server-card, .panel, .form-card {
  background: linear-gradient(135deg, rgba(56,65,72,.96), rgba(31,38,43,.96));
  border: 4px solid #151a1d; box-shadow: 8px 8px 0 rgba(0,0,0,.65), inset 0 0 0 2px #4b565d;
}
.server-card { padding: 26px; }
.status { display: flex; align-items: center; gap: 9px; color: #cfe6c5; font-weight: 800; font-size: .9rem; text-transform: uppercase; }
.status-dot { width: 12px; height: 12px; background: var(--success); box-shadow: 0 0 0 3px #233a20; }
.address { margin: 22px 0; padding: 16px; background: #12191d; border-left: 5px solid var(--gold); }
.address small { display: block; color: var(--muted); margin-bottom: 5px; }
.address strong { font-family: "Courier New", monospace; font-size: clamp(1rem, 3vw, 1.3rem); word-break: break-word; }
.stat-list { display: grid; gap: 12px; }
.stat { display: flex; justify-content: space-between; gap: 20px; border-bottom: 1px solid #566067; padding-bottom: 10px; }
.stat span { color: var(--muted); }

.section { padding: 84px 0; }
.section-alt { background: rgba(5,9,12,.56); border-block: 1px solid #293238; }
.section-heading { max-width: 740px; margin-bottom: 34px; }
.page-hero {
  position: relative;
  padding: clamp(58px, 7vw, 88px) 0 48px;
  border-bottom: 1px solid rgba(119, 198, 71, .28);
  background: linear-gradient(180deg, rgba(7, 19, 22, .54), rgba(7, 16, 21, .10));
}
.page-hero .page-heading { max-width: 850px; margin: 0; }
.page-hero .eyebrow {
  margin-bottom: 14px;
  font-size: 1.2rem;
  letter-spacing: .06em;
}
.page-hero h1 {
  max-width: 900px;
  margin: .12em 0 .26em;
  font-size: clamp(2.8rem, 6vw, 5rem);
  line-height: .98;
}
.page-hero .page-lead {
  max-width: 850px;
  margin: 0;
  color: #c7d0ca;
  font-size: clamp(1.02rem, 1.8vw, 1.16rem);
  line-height: 1.62;
}
.guide-jumps { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.guide-jumps .button { min-height: 42px; padding-inline: 16px; }
.guide-page section[id] { scroll-margin-top: 92px; }
h2 { font-size: clamp(2rem, 4vw, 3.1rem); margin: 0 0 12px; text-transform: uppercase; text-shadow: 3px 3px #000; }
.section-heading p, .panel p, .step p { color: var(--muted); line-height: 1.65; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.panel { padding: 24px; }
.panel-icon { font-size: 1.8rem; color: var(--gold); }
h3 { margin: 14px 0 8px; font-size: 1.18rem; text-transform: uppercase; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; counter-reset: steps; }
.step { position: relative; padding: 18px 18px 18px 72px; border-top: 4px solid var(--grass); }
.step-number { position: absolute; left: 14px; top: 16px; width: 40px; height: 40px; display: grid; place-items: center; background: var(--grass); border: 3px solid #111; box-shadow: 3px 3px #000; }
.notice { padding: 16px 18px; border-left: 5px solid var(--gold); background: #191f23; color: #d8ded9; }
.success-banner { display: none; padding: 14px 16px; background: #1d3a20; border: 2px solid var(--success); margin-top: 22px; }
.success-banner.visible { display: block; }

.plugins-section { background: rgba(5,9,12,.72); border-block: 1px solid #293238; }
.plugin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.plugin-card {
  position: relative; display: flex; flex-direction: column; min-width: 0; padding: 24px;
  background: linear-gradient(145deg, rgba(50,59,65,.96), rgba(25,31,35,.98));
  border: 4px solid #151a1d; box-shadow: 7px 7px 0 rgba(0,0,0,.58), inset 0 0 0 2px #465158;
}
.plugin-card-featured { border-color: #29451f; box-shadow: 7px 7px 0 rgba(0,0,0,.58), inset 0 0 0 2px var(--grass); }
.plugin-title { display: flex; align-items: center; gap: 14px; }
.plugin-title h3 { margin: 2px 0 0; }
.plugin-kind { color: var(--muted); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.plugin-block { flex: 0 0 auto; width: 36px; height: 36px; border: 3px solid #111; box-shadow: 3px 3px 0 #000; }
.plugin-block-grass { background: linear-gradient(var(--grass-light) 0 30%, var(--dirt) 30%); }
.plugin-block-gold { background: #d6a936; }
.plugin-block-red { background: #9e493c; }
.plugin-block-blue { background: #477f9d; }
.plugin-block-copper { background: #a7633f; }
.plugin-block-stone { background: #747b7f; }
.plugin-card > p { color: #bdc7c1; line-height: 1.6; }
.plugin-card code, .command-list code { color: var(--cream); background: #11181c; border: 1px solid #4b565d; padding: 2px 5px; white-space: nowrap; }
.command-list { display: grid; gap: 9px; margin: 4px 0 18px; padding: 0; list-style: none; color: #bdc7c1; line-height: 1.5; }
.command-list li { padding-left: 14px; border-left: 3px solid var(--grass); }
.plugin-steps { display: grid; gap: 8px; margin: 0 0 16px; padding-left: 28px; color: #d2dad5; line-height: 1.5; }
.plugin-steps li::marker { color: var(--gold); font-weight: 900; }
.plugin-warning { padding: 10px 12px; background: #151c20; border-left: 3px solid var(--grass-light); }
.plugin-tip { padding: 10px 12px; background: #151c20; border-left: 3px solid var(--gold); }
.plugin-more { align-self: flex-start; margin-top: auto; color: #d9edce; font-weight: 800; text-decoration-color: var(--grass-light); text-underline-offset: 4px; }
.plugin-more:hover, .plugin-more:focus-visible, .plugin-source:hover, .plugin-source:focus-visible { color: white; }
.plugin-source { align-self: flex-start; margin-top: 10px; color: var(--muted); font-size: .85rem; }
.plugin-local-note { align-self: flex-start; margin-top: auto; color: var(--grass-light); font-size: .85rem; font-weight: 800; }
.page-intro { padding: 64px 0 30px; text-align: center; }
.page-intro h1 { font-size: clamp(2.4rem, 7vw, 4.4rem); max-width: none; }
.page-intro p { color: var(--muted); }
.form-wrap { width: min(570px, calc(100% - 32px)); margin: 0 auto 80px; }
.form-card { padding: clamp(22px, 5vw, 38px); }
label { display: block; margin: 17px 0 6px; font-weight: 800; }
input {
  width: 100%; padding: 13px 14px; border: 3px solid #151a1d; outline: 0;
  background: #10171b; color: white; font: inherit; box-shadow: inset 0 0 0 1px #48545b;
}
input:focus { border-color: var(--grass-light); }
.help { color: var(--muted); font-size: .86rem; margin-top: 6px; }
#usernameAvailability.available { color: var(--success); }
#usernameAvailability.unavailable { color: #ff8b78; }
.captcha-row { display: flex; align-items: stretch; gap: 10px; margin: 8px 0; }
.captcha-row img { min-width: 0; flex: 1; height: 80px; object-fit: cover; image-rendering: pixelated; border: 3px solid #111; background: #111; }
.captcha-row button { width: 54px; border: 3px solid #111; background: var(--stone-light); color: white; font-size: 1.4rem; cursor: pointer; }
.form-card .button { width: 100%; margin-top: 22px; }
.form-card .button:disabled { opacity: .55; cursor: wait; }
.trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
#message { min-height: 24px; color: var(--gold); line-height: 1.5; }
#message.ok { color: var(--success); }
.form-footer { text-align: center; color: var(--muted); }
.form-footer a { color: var(--grass-light); }
footer { padding: 32px 0; color: #89958e; border-top: 1px solid #283138; }

@media (max-width: 820px) {
  .hero-grid, .grid-3, .steps, .plugin-grid { grid-template-columns: 1fr; }
  .hero-grid { gap: 34px; }
  .nav-links a:not(.button) { display: none; }
  .nav-links .button { min-height: 40px; padding: 0 12px; }
  .step { min-height: 96px; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

.account-summary { display: flex; justify-content: space-between; gap: 20px; padding: 14px 0; border-bottom: 1px solid #566067; }
.account-summary span { color: var(--muted); }
.account-summary strong { font-family: "Courier New", monospace; color: var(--cream); }
[hidden] { display: none !important; }
.account-banner { margin-top: 22px; padding: 20px; background: rgba(29,58,32,.88); border: 2px solid var(--success); box-shadow: 5px 5px 0 #000; }
.account-heading { display: flex; align-items: center; gap: 12px; }
.account-heading div { display: grid; gap: 2px; }
.account-heading small { color: #b9cbb3; text-transform: uppercase; font-weight: 800; }
.account-heading strong { font-family: "Courier New", monospace; font-size: 1.2rem; }
.account-banner p { color: #d8e4d4; line-height: 1.55; margin: 14px 0 0; }
.account-banner code { color: white; font-weight: 800; }
.account-settings { width: min(760px, calc(100% - 32px)); display: grid; gap: 24px; }
.account-card { width: 100%; }
.account-card > p { color: var(--muted); line-height: 1.6; }
.name-change-status { display: grid; gap: 5px; margin-top: 18px; padding: 14px; border-left: 4px solid var(--gold); background: #11191d; }
.name-change-status span,.name-change-status small { color: var(--muted); }
.admin-message { padding: 14px 16px; border: 1px solid #b94d45; background: #3b1e1b; color: #ffc8c1; }
.admin-message.success { border-color: #63b447; background: #17371d; color: #d9ffd1; }
.account-logout { margin-top: 16px; padding: 9px 12px; border: 2px solid #101510; background: #263329; color: #dce8d8; cursor: pointer; font-weight: 700; }
.account-logout:hover, .account-logout:focus-visible { background: #354638; }
/* Voxel world scene: original MineAge artwork, layered below readable content. */
body {
  isolation: isolate;
  background: #071017;
  overflow-x: hidden;
}
body::before {
  content: "";
  position: fixed;
  z-index: -2;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(4, 12, 15, .94) 0%, rgba(4, 12, 15, .68) 45%, rgba(4, 12, 15, .45) 100%),
    linear-gradient(180deg, rgba(3, 9, 14, .18) 0%, rgba(3, 9, 14, .82) 88%),
    url("/assets/hero-voxel-valley-v1.png") center top / cover no-repeat;
}
body::after {
  content: "";
  position: fixed;
  z-index: -1;
  inset: 0;
  pointer-events: none;
  opacity: .48;
  background-image:
    radial-gradient(circle at 12% 27%, rgba(190, 255, 105, .7) 0 1px, transparent 2px),
    radial-gradient(circle at 74% 18%, rgba(255, 208, 89, .65) 0 1px, transparent 2px),
    radial-gradient(circle at 87% 58%, rgba(190, 255, 105, .58) 0 1px, transparent 2px),
    radial-gradient(circle at 36% 73%, rgba(255, 225, 141, .45) 0 1px, transparent 2px);
  background-size: 310px 270px, 420px 380px, 360px 300px, 480px 420px;
  animation: fireflies 12s linear infinite;
}
.site-header {
  background: rgba(5, 12, 16, .78);
  box-shadow: 0 10px 28px rgba(0, 0, 0, .24);
}
.hero {
  min-height: min(780px, calc(100vh - 76px));
  display: grid;
  align-items: center;
  padding-top: clamp(78px, 11vw, 150px);
}
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at 33% 42%, rgba(119, 198, 71, .16), transparent 43%);
}
.hero-grid > div:first-child { animation: rise-in .7s ease-out both; }
.server-card {
  background: linear-gradient(145deg, rgba(47, 62, 67, .78), rgba(15, 24, 28, .88));
  backdrop-filter: blur(13px) saturate(115%);
  border-color: rgba(158, 193, 185, .34);
  box-shadow: 10px 12px 0 rgba(0,0,0,.52), inset 0 0 0 2px rgba(203, 232, 221, .16), 0 0 32px rgba(92, 171, 75, .12);
  animation: rise-in .8s .1s ease-out both;
}
h1 {
  background: linear-gradient(110deg, #fff8e3 8%, #f5eccf 45%, #cde7bd 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(5px 5px 0 #000);
  text-shadow: none;
}
.eyebrow { text-shadow: 0 1px 10px rgba(120, 225, 91, .54); }
.button { position: relative; overflow: hidden; transition: transform .16s ease, background .16s ease, box-shadow .16s ease; }
.button::after {
  content: "";
  position: absolute;
  inset: -2px auto -2px -40%;
  width: 26%;
  transform: skewX(-22deg);
  background: rgba(255,255,255,.18);
  transition: left .35s ease;
}
.button:hover::after, .button:focus-visible::after { left: 118%; }
.panel, .plugin-card, .form-card {
  background: linear-gradient(145deg, rgba(46, 58, 63, .78), rgba(16, 25, 29, .89));
  backdrop-filter: blur(10px) saturate(108%);
  border-color: rgba(159, 182, 185, .3);
}
.panel, .plugin-card { transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.panel:hover, .plugin-card:hover {
  transform: translateY(-5px);
  border-color: rgba(143, 207, 108, .72);
  box-shadow: 9px 12px 0 rgba(0,0,0,.52), 0 0 24px rgba(112, 196, 85, .12);
}
.section-alt, .plugins-section { background: rgba(3, 10, 13, .70); backdrop-filter: blur(5px); }
.account-banner {
  position: relative;
  overflow: hidden;
  background: linear-gradient(105deg, rgba(22, 67, 36, .88), rgba(18, 39, 26, .88));
  backdrop-filter: blur(10px);
}
.account-banner::after {
  content: "";
  position: absolute;
  width: 150px;
  height: 150px;
  right: -50px;
  top: -70px;
  background: radial-gradient(circle, rgba(174, 241, 104, .25), transparent 68%);
}
.status-dot { animation: status-pulse 2.1s ease-in-out infinite; }
@keyframes fireflies { from { background-position: 0 0, 0 0, 0 0, 0 0; } to { background-position: 42px -76px, -58px 64px, 38px -48px, -34px 72px; } }
@keyframes status-pulse { 0%, 100% { box-shadow: 0 0 0 3px #233a20, 0 0 0 rgba(125,207,104,0); } 50% { box-shadow: 0 0 0 3px #233a20, 0 0 16px rgba(125,207,104,.85); } }
@keyframes rise-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 820px) {
  body::before { background-position: 61% top; }
  .hero { min-height: auto; }
}
@media (prefers-reduced-motion: reduce) {
  body::before, body::after, .status-dot, .hero-grid > div:first-child, .server-card { animation: none; }
  .panel:hover, .plugin-card:hover { transform: none; }
}
/* Shared Minecraft presentation for secondary pages. */
.plugins-page main { position: relative; }
.plugins-page .plugins-hero {
  position: relative;
  overflow: hidden;
  min-height: 0;
  padding-top: clamp(58px, 7vw, 88px);
  background: linear-gradient(180deg, rgba(4, 12, 15, .28), rgba(3, 10, 13, .72));
  border-block: 0;
}
.plugins-page .plugins-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 22% 10%, rgba(119, 198, 71, .2), transparent 35%),
    radial-gradient(ellipse at 86% 54%, rgba(72, 139, 166, .14), transparent 34%);
}
.plugins-page .plugins-hero::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 58px;
  pointer-events: none;
  background: linear-gradient(var(--grass) 0 10px, var(--dirt) 10px 100%);
  clip-path: polygon(0 44%, 10% 44%, 10% 18%, 20% 18%, 20% 56%, 34% 56%, 34% 28%, 48% 28%, 48% 62%, 63% 62%, 63% 35%, 77% 35%, 77% 12%, 89% 12%, 89% 48%, 100% 48%, 100% 100%, 0 100%);
  opacity: .55;
}
.plugins-page .plugins-hero > .wrap { position: relative; z-index: 1; }
.plugins-page .section-heading { animation: rise-in .65s ease-out both; }
.plugins-page .plugin-card { animation: rise-in .55s ease-out both; }
.plugins-page .plugin-grid .plugin-card:nth-child(2) { animation-delay: .04s; }
.plugins-page .plugin-grid .plugin-card:nth-child(3) { animation-delay: .08s; }
.plugins-page .plugin-grid .plugin-card:nth-child(4) { animation-delay: .12s; }
.plugins-page .plugin-grid .plugin-card:nth-child(5) { animation-delay: .16s; }
.plugins-page .plugin-grid .plugin-card:nth-child(6) { animation-delay: .20s; }
.plugins-page .plugin-grid .plugin-card:nth-child(7) { animation-delay: .24s; }
.plugins-page .plugin-grid .plugin-card:nth-child(8) { animation-delay: .28s; }
.plugins-page .plugin-grid .plugin-card:nth-child(9) { animation-delay: .32s; }
.plugins-page .plugin-grid .plugin-card:nth-child(10) { animation-delay: .36s; }
.plugins-page .plugin-grid .plugin-card:nth-child(11) { animation-delay: .40s; }
.plugins-page .plugins-subheading { margin-top: 72px; }
@media (prefers-reduced-motion: reduce) {
  .plugins-page .section-heading, .plugins-page .plugin-card { animation: none; }
}
/* Keep the plugin catalogue visually consistent with the landing page without
   stacking expensive blur layers over every card. */
.plugins-page .plugins-hero {
  background: transparent;
  backdrop-filter: none;
}
.plugins-page .plugins-hero > .wrap::before {
  content: "";
  position: absolute;
  inset: -24px 0 0;
  pointer-events: none;
  opacity: .52;
  background-image:
    radial-gradient(circle at 12% 27%, rgba(190, 255, 105, .72) 0 1px, transparent 2px),
    radial-gradient(circle at 74% 18%, rgba(255, 208, 89, .68) 0 1px, transparent 2px),
    radial-gradient(circle at 87% 58%, rgba(190, 255, 105, .6) 0 1px, transparent 2px),
    radial-gradient(circle at 36% 73%, rgba(255, 225, 141, .48) 0 1px, transparent 2px);
  background-size: 310px 270px, 420px 380px, 360px 300px, 480px 420px;
  animation: fireflies 12s linear infinite;
}
.plugins-page .plugins-hero > .wrap > * { position: relative; z-index: 1; }
.plugins-page .plugin-card {
  backdrop-filter: none;
  background: linear-gradient(145deg, rgba(46, 58, 63, .94), rgba(16, 25, 29, .97));
  animation: none;
}
.plugins-page .plugins-hero::before { background: radial-gradient(ellipse at 22% 10%, rgba(119, 198, 71, .16), transparent 35%), radial-gradient(ellipse at 86% 54%, rgba(72, 139, 166, .11), transparent 34%); }
.watchtower-section { background: linear-gradient(180deg, rgba(8,17,21,.78), rgba(4,10,13,.9)); border-block: 1px solid rgba(113,180,69,.24); }
.watchtower-heading { max-width: 760px; }
.watchtower-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; margin-top: 30px; }
.watchtower-card { position: relative; overflow: hidden; padding: 22px; background: rgba(28,39,43,.78); border: 1px solid #4d5c61; box-shadow: 8px 8px 0 rgba(0,0,0,.38); backdrop-filter: blur(7px); }
.watchtower-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 5px; background: #77c647; }
.watchtower-card.state-countdown::before { background: #f1c84b; }
.watchtower-card.state-active::before { background: #dc594f; box-shadow: 0 0 18px rgba(220,89,79,.7); }
.watchtower-card-top { display: flex; align-items: start; justify-content: space-between; gap: 14px; }
.watchtower-card h3 { margin: 0; text-transform: uppercase; }
.watchtower-state { padding: 5px 8px; color: #dff6cf; background: rgba(67,115,42,.35); border: 1px solid #65994a; font-size: .78rem; font-weight: 800; text-transform: uppercase; }
.state-countdown .watchtower-state { color: #fff0b7; background: rgba(126,94,15,.35); border-color: #c9a93a; }
.state-active .watchtower-state { color: #ffd5d0; background: rgba(131,40,33,.4); border-color: #d45d53; }
.watchtower-card dl { display: grid; grid-template-columns: 1fr auto; gap: 9px 16px; margin: 22px 0; }
.watchtower-card dt { color: #aebbbc; }
.watchtower-card dd { margin: 0; color: #f4eddd; font-weight: 700; text-align: right; }
.watchtower-loading { grid-column: 1 / -1; padding: 24px; color: #b9c4c4; background: rgba(20,29,33,.65); border: 1px dashed #4d5c61; }
.watchtower-error { color: #f0c0ba; }
@media (max-width: 600px) { .watchtower-card-top { display: block; } .watchtower-state { display: inline-block; margin-top: 10px; } }

.nav-logout{border:1px solid #59676b;background:#172126;color:#dce4df;padding:10px 13px;font:inherit;font-weight:800;cursor:pointer}.nav-logout:hover{border-color:#7bc34c;color:#fff}.nav-account{color:#bde69e!important}.nav-links .active{color:#fff}

.nav-admin{color:#f1cf64!important;font-weight:900}.admin-notification-badge,.name-change-count{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:5px;padding:0 5px;border-radius:10px;background:#b83f34;color:#fff;font:900 .72rem/1 Arial,sans-serif;box-shadow:0 0 0 2px #071015}.admin-notification-badge[hidden],.name-change-count[hidden]{display:none}.castle-auth-pending{visibility:hidden}

@media(max-width:1050px){.server-online{margin-left:0}.server-online span{font-size:0}.server-online span:after{content:'ONLINE';font-size:.68rem}.server-online.is-offline span:after{content:'OFFLINE'}.server-online.is-unknown span:after{content:'?'}}

.status.is-offline{color:#e4aaa5}.status.is-offline .status-dot{background:#bd554d;box-shadow:0 0 0 3px #4a2522;animation:none}.server-card #serverState{color:#bde69e}.server-card .status.is-offline~.stat-list #serverState{color:#e4aaa5}

/* Optional faction choice during account registration. */
.registration-factions{margin:24px 0 6px;padding:0;border:0}.registration-factions legend{font-weight:900;font-size:1.05rem}.registration-factions legend span{color:#9ba9a8;font-weight:500}.registration-faction-grid{display:grid;gap:10px;margin-top:12px}.registration-faction-choice{display:flex;align-items:center;gap:12px;margin:0;padding:12px 14px;border:1px solid #526066;border-left:5px solid var(--faction-color);background:rgba(7,16,20,.7);cursor:pointer}.registration-faction-choice:has(input:checked){border-color:var(--faction-color);box-shadow:inset 0 0 0 1px var(--faction-color),0 0 16px color-mix(in srgb,var(--faction-color),transparent 70%)}.registration-faction-choice input{width:auto;margin:0;accent-color:var(--faction-color)}.registration-faction-choice span{display:grid;gap:3px}.registration-faction-choice strong{color:#f5eedf}.registration-faction-choice small{color:#aebbbb}

/* Shared MineAge modal used instead of browser-native confirm/prompt windows. */
.mineage-dialog{width:min(620px,calc(100vw - 32px));max-width:none;max-height:calc(100vh - 32px);margin:auto;padding:0;border:0;color:var(--cream);background:transparent;overflow:visible}
.mineage-dialog::backdrop{background:radial-gradient(circle at 50% 42%,rgba(31,65,39,.28),transparent 42%),rgba(2,7,9,.86);backdrop-filter:blur(7px) saturate(.7);animation:mineage-backdrop-in .16s ease-out both}
.mineage-dialog-frame{position:relative;overflow:hidden;padding:clamp(24px,5vw,38px);border:3px solid #11181b;outline:2px solid #536267;background:linear-gradient(135deg,rgba(47,58,63,.98),rgba(17,25,29,.99)),var(--stone);box-shadow:10px 10px 0 rgba(0,0,0,.72),inset 0 0 0 1px rgba(255,255,255,.06);animation:mineage-dialog-in .18s cubic-bezier(.2,.85,.3,1) both}
.mineage-dialog-accent{position:absolute;inset:0 0 auto;height:7px;background:linear-gradient(90deg,var(--grass-light),var(--grass) 72%,var(--gold));box-shadow:0 2px 14px rgba(125,207,104,.32)}
.mineage-dialog.is-danger .mineage-dialog-accent{background:linear-gradient(90deg,var(--danger),#9f382f 75%,var(--gold))}
.mineage-dialog-kicker{margin:0 0 10px;color:var(--grass-light);font:900 .78rem/1 "Courier New",ui-monospace,monospace;letter-spacing:.16em}
.mineage-dialog-title{margin:0;color:var(--cream);font-size:clamp(1.45rem,4vw,2rem);line-height:1.1;text-transform:uppercase;text-shadow:3px 3px 0 #000}
.mineage-dialog-message{margin:20px 0 0;color:#d3dbd5;font-size:1.03rem;line-height:1.65;white-space:pre-line}
.mineage-dialog-copy{display:block;width:100%;margin:20px 0 0;padding:14px;resize:vertical;border:2px solid #657278;outline:0;background:#071014;color:#d9f1c8;font:700 .9rem/1.55 "Courier New",ui-monospace,monospace}
.mineage-dialog-copy[hidden]{display:none}.mineage-dialog-copy:focus{border-color:var(--grass-light);box-shadow:0 0 0 3px rgba(125,207,104,.2)}
.mineage-dialog-actions{display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;gap:13px;margin-top:28px}.mineage-dialog-actions .button{min-width:132px}.mineage-dialog-cancel{background:#29343a;color:#e2e8e3}
.mineage-dialog-cancel:hover,.mineage-dialog-cancel:focus-visible{background:#3b484e;transform:translate(2px,2px);box-shadow:2px 2px 0 #000}.mineage-dialog button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
@keyframes mineage-dialog-in{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes mineage-backdrop-in{from{opacity:0}to{opacity:1}}
@media(max-width:520px){.mineage-dialog-actions{display:grid;grid-template-columns:1fr}.mineage-dialog-actions .button{width:100%}}@media(prefers-reduced-motion:reduce){.mineage-dialog-frame,.mineage-dialog::backdrop{animation:none}}

.dominion-banner-shell {
  position: relative;
  z-index: 3;
  margin: 24px 0 -54px;
  pointer-events: none;
}
.dominion-banner {
  --dominion-accent: #71858c;
  position: relative;
  display: grid;
  grid-template-columns: minmax(230px, 34%) minmax(0, 1fr) minmax(0, auto);
  min-height: 185px;
  overflow: hidden;
  color: #e5ebe6;
  background: linear-gradient(105deg, rgba(20, 31, 36, .96), rgba(9, 17, 21, .93));
  border: 1px solid rgba(166, 190, 185, .34);
  border-left: 7px solid var(--dominion-accent);
  box-shadow: 8px 9px 0 rgba(0, 0, 0, .42), inset 0 0 0 1px rgba(225, 241, 234, .07);
  backdrop-filter: blur(10px) saturate(108%);
}
.dominion-banner-art {
  position: relative;
  min-height: 185px;
  overflow: hidden;
  border-right: 1px solid rgba(184, 207, 198, .2);
}
.dominion-banner-art::before {
  content: "";
  position: absolute;
  inset: -8px;
  background:
    linear-gradient(90deg, rgba(7, 13, 17, .08), rgba(7, 13, 17, .6)),
    url('/assets/castle-dominion-banner.png') center 48% / cover no-repeat;
  transform: scaleX(-1);
}
.dominion-banner-art::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent 45%, rgba(12, 21, 25, .88));
}
.dominion-banner-copy {
  min-width: 0;
  padding: 24px 28px;
  align-self: center;
}
.dominion-kicker {
  margin: 0 0 7px;
  color: #9ece79;
  font: 900 .72rem/1.2 "Courier New", monospace;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.dominion-banner h2 {
  margin: 0;
  color: #eef1ed;
  font: 800 clamp(1.15rem, 1.7vw, 1.45rem)/1.25 Arial, sans-serif;
  letter-spacing: .01em;
  text-transform: none;
  text-shadow: none;
}
.dominion-summary {
  margin: 7px 0 0;
  color: #bfc9c3;
  font-size: .96rem;
  font-weight: 600;
  line-height: 1.45;
}
.dominion-banner-meta {
  min-width: 220px;
  display: grid;
  gap: 9px;
  align-content: center;
  padding: 20px 24px 20px 0;
}
.dominion-countdown,
.dominion-fee {
  padding: 10px 13px;
  background: rgba(4, 11, 14, .68);
  border-left: 3px solid var(--gold);
}
.dominion-countdown small,
.dominion-fee small { display: block; color: #9faca5; margin-bottom: 3px; }
.dominion-countdown strong,
.dominion-fee strong { font: 900 1rem/1.2 "Courier New", monospace; }
.dominion-sides { display: flex; align-items: center; gap: 9px; margin-top: 11px; flex-wrap: wrap; }
.dominion-side { --faction-color: #89969b; padding: 5px 9px; background: rgba(4, 11, 14, .7); border-left: 4px solid var(--faction-color); font-size: .86rem; font-weight: 900; text-transform: uppercase; }
.dominion-versus { color: #ffd270; font: 900 .9rem/1 "Courier New", monospace; text-shadow: 2px 2px #000; }
.dominion-banner-npc { --dominion-accent: #c39d42; }
.dominion-banner-preparation{--dominion-accent:#efc849;border-color:rgba(239,200,73,.55);box-shadow:8px 9px 0 rgba(0,0,0,.42),inset 0 0 28px rgba(239,200,73,.08)}
.dominion-banner-preparation .dominion-kicker{color:#efc849}
.dominion-banner-war { --dominion-accent: #db654d; background: linear-gradient(105deg, rgba(36, 17, 16, .97), rgba(12, 16, 19, .94)); }
.dominion-banner-war .dominion-banner-art::after { background: linear-gradient(90deg, rgba(114, 24, 13, .08) 25%, rgba(27, 13, 14, .88)); }
.dominion-banner-live { --dominion-accent: #ff765f; box-shadow: 8px 9px 0 rgba(0,0,0,.42), inset 0 0 24px rgba(255, 80, 45, .1); }
.dominion-banner-live .dominion-kicker::after { content: " · PRÁVĚ PROBÍHÁ"; color: #ff937d; }
@media (max-width: 820px) {
  .dominion-banner-shell { margin: 16px 0 -42px; }
  .dominion-banner { grid-template-columns: 150px minmax(0, 1fr); }
  .dominion-banner-art { min-height: 210px; }
  .dominion-banner-meta { grid-column: 2; min-width: 0; padding: 0 18px 18px 24px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dominion-banner-copy { padding: 18px 24px 10px; }
}
@media (max-width: 560px) {
  .dominion-banner { grid-template-columns: 96px minmax(0, 1fr); }
  .dominion-banner-art { min-height: 230px; }
  .dominion-banner-copy { padding: 16px 16px 8px; }
  .dominion-banner-meta { padding: 0 12px 14px 16px; grid-template-columns: 1fr; }
  .dominion-summary { font-size: .88rem; }
}

/* Dominion: zretelny valecny stav po registraci utocici frakce */
.dominion-war-swords {
  display: none;
  position: absolute;
  z-index: 3;
  inset: 0;
  align-items: center;
  justify-content: center;
  color: #fff0d0;
  font: 900 clamp(4.8rem, 8vw, 7.2rem)/1 Georgia, serif;
  text-shadow: 0 4px 0 #3b0904, 0 0 12px #ff5a32, 0 0 32px rgba(255, 44, 20, .9);
  transform: rotate(-4deg);
  filter: drop-shadow(0 9px 3px rgba(0, 0, 0, .8));
}
.dominion-war-swords::before { content: "\2694"; }
.dominion-banner-war .dominion-war-swords { display: flex; }
.dominion-banner-war .dominion-banner-art::before {
  filter: saturate(.72) contrast(1.18) brightness(.67) sepia(.12);
}
.dominion-banner-war .dominion-banner-art::after {
  z-index: 2;
  background: linear-gradient(90deg, rgba(115, 13, 7, .34) 5%, rgba(76, 8, 7, .36) 56%, rgba(27, 13, 14, .9));
  box-shadow: inset 0 0 38px rgba(255, 35, 16, .3);
}
.dominion-banner-war {
  border-color: rgba(238, 104, 76, .65);
  box-shadow: 8px 9px 0 rgba(0,0,0,.48), inset 0 0 30px rgba(196, 35, 20, .13);
}
.dominion-banner-war .dominion-kicker,
.dominion-banner-war .dominion-versus { color: #ff9278; }
.dominion-banner-live .dominion-war-swords { animation: dominion-war-pulse 1.8s ease-in-out infinite; }
@keyframes dominion-war-pulse {
  0%, 100% { transform: rotate(-4deg) scale(1); filter: drop-shadow(0 9px 3px rgba(0,0,0,.8)); }
  50% { transform: rotate(-4deg) scale(1.08); filter: drop-shadow(0 9px 5px rgba(105,0,0,.9)); }
}
@media (prefers-reduced-motion: reduce) {
  .dominion-banner-live .dominion-war-swords { animation: none; }
}
/* Dominion war overlay: citelny, ale neprekryva ilustraci hradu */
.dominion-banner-war {
  background: linear-gradient(105deg, rgba(27, 23, 23, .96), rgba(12, 16, 19, .94));
  border-color: rgba(218, 101, 77, .38);
  box-shadow: 8px 9px 0 rgba(0,0,0,.44), inset 0 0 24px rgba(196,35,20,.06);
}
.dominion-banner-war .dominion-war-swords { opacity: .5; }
.dominion-banner-war .dominion-banner-art::before {
  filter: saturate(.82) contrast(1.08) brightness(.78);
}
.dominion-banner-war .dominion-banner-art::after {
  background: linear-gradient(90deg, rgba(115,13,7,.15) 5%, rgba(76,8,7,.16) 56%, rgba(27,13,14,.7));
  box-shadow: inset 0 0 28px rgba(255,35,16,.12);
}

.home-news{background:linear-gradient(180deg,rgba(11,21,24,.93),rgba(20,31,32,.88));border-block:1px solid rgba(119,198,71,.2)}
.home-news-heading{display:flex;align-items:end;justify-content:space-between;gap:20px}.home-news-heading h2{margin-bottom:0}.home-news-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:28px}.home-news-card{padding:23px;border:1px solid #4b5b5f;border-top:4px solid var(--grass-light);background:rgba(16,27,31,.85);box-shadow:6px 6px 0 rgba(0,0,0,.32)}.home-news-card time{color:#9eaaa6;font:800 .76rem/1.2 "Courier New",monospace;text-transform:uppercase}.home-news-card h3{margin:11px 0;color:#eee8da;font-size:1.25rem}.home-news-card p{color:#bdc8c2;line-height:1.55}.home-news-card a{color:#b6e992;font-weight:900}.home-news-card a:hover{color:#fff}@media(max-width:800px){.home-news-grid{grid-template-columns:1fr}.home-news-heading{align-items:start;flex-direction:column}}
