/* ════════════════════════════════════════════════════════════════════
   Infernian Hell theme — ported from the approved mockup
   (mockups/landing.html?v=7, archived at vault output/tibia/landing-mockup-v7).
   Retro Gesior 3-column layout · Cinzel + Inter · parchment content panels.
   ════════════════════════════════════════════════════════════════════ */
:root{
  --ember:#ff6a1a; --ember-soft:#ff9248; --blood:#b3160f; --blood-lit:#ff3a22;
  --gold:#e8a13c; --gold-lit:#f7d089; --bone:#efe6db; --ash:#b6a89a; --ash-dim:#7c6f60;
  --ink:#2a1808; --ink-soft:#5a4228; --ink-link:#8a3410;   /* on parchment */
  --ease:cubic-bezier(.22,1,.36,1);
  --z-base:1; --z-embers:2; --z-content:3; --z-medallion:5; --z-nav:20;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased;color:var(--bone);
  background:#070504 url('theme/bg.jpg') repeat;background-size:380px}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(130% 60% at 50% -8%,rgba(190,80,28,.42),transparent 56%),linear-gradient(180deg,rgba(14,9,6,.12),rgba(14,9,6,.45))}
a{color:inherit;text-decoration:none}
h1:focus{outline:none}
.shell{width:1010px;max-width:100%;margin:0 auto;padding:0 8px}

/* ── top utility bar ── */
.status{background:linear-gradient(180deg,#2a1a0d,#160d07);border-bottom:2px solid;
  border-image:linear-gradient(90deg,transparent,var(--gold),var(--ember),var(--gold),transparent) 1;
  font-size:12.5px;display:flex;justify-content:center;align-items:center;gap:0;padding:0;flex-wrap:wrap;color:var(--ash)}
.status .seg{padding:9px 20px;display:flex;align-items:center;gap:7px}
.status .seg + .seg{border-left:1px solid rgba(232,161,60,.14)}
.status b{color:var(--gold-lit);font-weight:600}.status .on{color:#5fe08a;font-weight:600}
.status .on::before{content:"●";margin-right:6px;animation:pulse 1.7s var(--ease) infinite}
@keyframes pulse{50%{opacity:.35}}

/* ── banner ── */
.banner{position:relative;height:228px;overflow:hidden;border-bottom:2px solid rgba(179,22,15,.6)}
.banner-bg{position:absolute;inset:0;background:url('theme/hero.jpg') center 36%/cover no-repeat;transform:scale(1.06);animation:drift 30s var(--ease) infinite alternate}
@keyframes drift{to{transform:scale(1.13) translateY(-7px)}}
.banner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,5,4,.4),transparent 34%,rgba(7,5,4,.25) 64%,#070504)}
.embers{position:absolute;inset:0;z-index:var(--z-embers);pointer-events:none}
.e{position:absolute;bottom:-8px;border-radius:50%;background:radial-gradient(circle,var(--ember-soft),var(--ember) 60%,transparent);box-shadow:0 0 7px 2px rgba(255,120,40,.6);animation:rise linear infinite}
@keyframes rise{0%{transform:translateY(0);opacity:0}14%{opacity:1}100%{transform:translateY(-228px) translateX(22px);opacity:0}}
.banner-mid{position:absolute;inset:0;z-index:var(--z-content);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.logo{width:min(440px,80vw);filter:drop-shadow(0 6px 22px rgba(255,80,20,.55)) drop-shadow(0 2px 4px rgba(0,0,0,.6))}
.tag{margin-top:0;font-size:13px;letter-spacing:.32em;text-transform:uppercase;color:var(--gold-lit);font-weight:600;text-shadow:0 2px 12px #000}

/* ── ornate header bar (wide content boxes) ── */
.obar{position:relative;line-height:0}
.obar img{width:100%;display:block}
.obar .t{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;line-height:1;
  font-family:Cinzel,serif;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--gold-lit);
  font-size:clamp(13px,1.5vw,17px);text-shadow:0 2px 8px #000,0 0 14px rgba(255,90,20,.5);padding-bottom:6px}

/* ── simple CSS header bar (narrow menu / sidebar boxes) ── */
.sbar{font-family:Cinzel,serif;font-weight:700;font-size:12.5px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--gold-lit);text-align:center;padding:8px 10px 7px;position:relative;
  background:linear-gradient(180deg,#241509,#160c05);
  border-top:1px solid rgba(247,208,137,.5);border-bottom:1px solid rgba(179,22,15,.55);
  box-shadow:inset 0 0 16px rgba(255,90,20,.12);text-shadow:0 1px 6px rgba(255,90,20,.5)}
.sbar::before,.sbar::after{content:"◆";color:var(--ember);font-size:8px;position:absolute;top:50%;transform:translateY(-50%);opacity:.8}
.sbar::before{left:8px}.sbar::after{right:8px}

/* ── boxes ── */
/* carved-stone ornate frame — the retro Tibia tablet look.
   calmframe-trim.png is shipped at 50% of the mockup original, so the
   border-image slice is 29 (mockup: 58). */
.darkbox{background:linear-gradient(180deg,rgba(38,24,13,.96),rgba(24,16,9,.97));
  border:10px solid transparent;border-image:url('theme/calmframe-trim.png') 29 / 10px / 0 stretch;
  box-shadow:0 4px 14px rgba(0,0,0,.55);overflow:hidden}
.darkbox + .darkbox{margin-top:13px}

/* ── news ticker ── */
.ticker{margin:14px 0}
.ticker .body{background:linear-gradient(180deg,rgba(18,11,6,.96),rgba(10,6,4,.97));border:1px solid rgba(232,161,60,.22);border-top:0;border-radius:0 0 3px 3px;padding:6px 0}
.trow{display:flex;gap:10px;align-items:baseline;padding:5px 16px;font-size:12.5px;color:var(--ash);transition:background .18s var(--ease)}
.trow:hover{background:rgba(255,106,26,.07)}
.trow .d{color:var(--ember);font-variant-numeric:tabular-nums;flex:none;font-size:11.5px}
.trow .x{color:var(--bone)}.trow::before{content:"◈";color:var(--blood-lit);font-size:9px}

/* ── 3 column grid ── */
.grid{display:grid;grid-template-columns:160px 1fr 176px;gap:11px;padding:14px 0 32px;align-items:start}
.grid.has-ticker{padding-top:0}
@media(max-width:880px){
  .grid{grid-template-columns:1fr}
  .c-center{order:1}.c-left{order:2}.c-right{order:3}
}
.col{display:flex;flex-direction:column;gap:13px}

/* menu links — dense, with Tibia-style icons */
.mlist{padding:2px 0}
.ml{display:block;padding:5px 12px 5px 14px;font-size:12.5px;color:var(--ash);position:relative;transition:color .16s var(--ease),background .16s var(--ease)}
.ml:hover{color:var(--gold-lit);background:rgba(255,106,26,.08)}
.ml.hot{color:var(--ember-soft);font-weight:600}
.ml:focus-visible{outline:2px solid var(--ember);outline-offset:-2px}
.mi{display:inline-block;width:16px;height:16px;margin-right:5px;vertical-align:-3px;
  background:center/contain no-repeat;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))}
.mi-hs{background-image:url('theme/ic-highscores.png')}
.mi-on{background-image:url('theme/ic-online.png')}
.mi-kill{background-image:url('theme/ic-kills.png')}
.mi-house{background-image:url('theme/ic-houses.png')}
.mi-guild{background-image:url('theme/ic-guilds.png')}
.mi-war{background-image:url('theme/ic-wars.png')}
.mi-char{background-image:url('theme/ic-search.png')}

/* info rows */
.irow{display:flex;justify-content:space-between;padding:6px 14px;font-size:12.5px;border-bottom:1px solid rgba(232,161,60,.08)}
.irow:last-child{border:0}.irow span{color:var(--ash)}.irow b{color:var(--gold-lit);font-weight:600}.irow .on{color:#5fe08a}

/* top players */
.rank{display:flex;align-items:center;gap:9px;padding:6px 12px;font-size:12.5px;border-bottom:1px solid rgba(232,161,60,.07)}
.rank:last-child{border:0}.rank .n{width:16px;font-family:Cinzel,serif;font-weight:700;color:var(--ember);text-align:center}
.rank .nm{flex:1;color:var(--bone);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank .v{width:8px;height:8px;border-radius:50%;flex:none}
.rank .lv{color:var(--gold-lit);font-weight:600;font-variant-numeric:tabular-nums}
.rank-empty{padding:10px 12px;font-size:12px;color:var(--ash-dim)}

/* ── PARCHMENT content panel ── */
.pbox .body{background:#e9dcc0 url('theme/parchment.jpg');background-size:340px;background-blend-mode:multiply;
  border:1px solid rgba(232,161,60,.3);border-top:0;border-radius:0 0 3px 3px;color:var(--ink);
  padding:18px 20px;box-shadow:inset 0 0 60px rgba(120,70,20,.18)}
.pbox .obar{filter:drop-shadow(0 3px 8px rgba(0,0,0,.55))}
.pbox + .pbox{margin-top:14px}
.post-date{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--blood);margin-bottom:6px}
.post h2{font-family:Cinzel,serif;font-weight:800;font-size:23px;color:var(--ink);margin-bottom:10px;text-wrap:balance}
.post p{font-size:14px;line-height:1.62;color:var(--ink-soft)}
.post p b, .post p strong{color:var(--ink)}
.post-img{width:100%;height:150px;background:url('theme/hero.jpg') center 42%/cover;border:3px solid #1a0f06;
  border-radius:2px;margin:14px 0;box-shadow:0 4px 14px rgba(0,0,0,.4)}
.post .by{margin-top:12px;font-size:11.5px;color:var(--ink-link);font-weight:600}

/* ruleset / item grid on parchment */
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:6px}
@media(max-width:560px){.slots{grid-template-columns:repeat(2,1fr)}}
.slot{background:linear-gradient(180deg,#1a0f06,#0c0703);border:2px solid #3a2410;border-radius:3px;
  padding:14px 8px;text-align:center;box-shadow:inset 0 0 12px rgba(255,90,20,.15)}
.slot .ic{font-size:22px;line-height:1}.slot .big{font-family:Cinzel,serif;font-weight:900;font-size:24px;color:var(--gold-lit)}
.slot .l{font-family:Cinzel,serif;font-weight:700;font-size:12px;color:var(--bone);margin-top:5px}
.slot .s{font-size:10.5px;color:var(--ash);margin-top:2px}

/* buttons */
.btn{font-family:Cinzel,serif;font-weight:700;cursor:pointer;border:0;transition:filter .2s var(--ease),transform .1s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:7px}
.btn:active{transform:scale(.97)}.btn:focus-visible{outline:2px solid var(--gold-lit);outline-offset:2px}
.btn-fire{background:linear-gradient(180deg,var(--ember-soft),var(--ember) 56%,var(--blood));color:#190a03;
  box-shadow:0 6px 18px rgba(255,106,26,.45),inset 0 1px 0 rgba(255,255,255,.35);border-radius:5px;padding:9px 14px;font-size:12.5px;width:100%}
.btn-fire:hover{filter:brightness(1.09)}
.btn-fire.inline{width:auto;padding:9px 22px}
.btn-ghost{background:transparent;border:1px solid rgba(138,52,16,.5);color:var(--ink-link);border-radius:4px;padding:6px 14px;font-size:11.5px}
.btn-ghost:hover{background:rgba(138,52,16,.08)}

/* account mini-form in sidebar */
.acct{padding:12px}
.acct .who{font-size:12px;color:var(--ash);text-align:center;margin-bottom:8px}
.acct .who b{color:var(--gold-lit)}
.inp{width:100%;background:#0a0604;border:1px solid rgba(232,161,60,.28);border-radius:4px;padding:8px 10px;color:#fff;font-size:12.5px;margin-bottom:7px;outline:none;transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.inp::placeholder{color:#6b5d4d}
.inp:focus{border-color:var(--ember);box-shadow:0 0 0 3px rgba(255,106,26,.16)}
.inp:user-invalid{border-color:var(--blood)}
.acct .reg{display:block;text-align:center;margin-top:9px;font-size:12px;color:var(--gold);font-weight:600;transition:color .16s var(--ease)}
.acct .reg:hover{color:var(--ember-soft)}

/* ── forms on parchment (AAC pages) ── */
.pform .field{margin-bottom:14px}
.pform label{display:block;font-family:Cinzel,serif;font-weight:700;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink);margin-bottom:4px}
.pinp{width:100%;max-width:380px;background:#f4ecd9;border:1px solid #a8845a;border-radius:3px;padding:8px 10px;color:var(--ink);font-size:13.5px;outline:none;box-shadow:inset 0 1px 3px rgba(90,50,10,.18);transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.pinp:focus{border-color:var(--ember);box-shadow:inset 0 1px 3px rgba(90,50,10,.18),0 0 0 3px rgba(255,106,26,.18)}
.pform .hint{display:block;font-size:11.5px;color:var(--ink-link);margin-top:3px;max-width:380px}
select.pinp{appearance:auto}
.perr{background:linear-gradient(180deg,#3a0d08,#260805);border:1px solid var(--blood);color:#ffb4a8;border-radius:3px;padding:9px 12px;font-size:12.5px;margin-bottom:14px}
.pok{background:linear-gradient(180deg,#0d2a12,#081a0b);border:1px solid #2f7a3f;color:#9fe0ae;border-radius:3px;padding:9px 12px;font-size:12.5px;margin-bottom:14px}
.validation-message{color:var(--blood);font-size:12px;margin-top:3px}
ul.validation-errors{margin:0 0 12px;padding:0;list-style:none}
ul.validation-errors li{color:var(--blood);font-size:12.5px;padding:2px 0}
ul.validation-errors li::before{content:"✖ ";font-size:10px}
.invalid:not(form){outline:1px solid var(--blood)}
.valid.modified:not([type=checkbox]):not(form){outline:1px solid #2f7a3f}

/* ── tables on parchment ── */
.ptable{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0}
.ptable th{font-family:Cinzel,serif;font-weight:700;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-align:left;padding:7px 10px;border-bottom:2px solid #3a2410}
.ptable td{padding:7px 10px;color:var(--ink-soft);border-bottom:1px solid rgba(58,36,16,.18)}
.ptable tbody tr:hover{background:rgba(120,70,20,.08)}
.ptable td:first-child{font-family:Cinzel,serif;font-weight:700;color:var(--ink)}
.ptable .num{font-variant-numeric:tabular-nums}

/* highscore category pills */
.cats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.cats a,.cats strong{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:3px;border:1px solid rgba(138,52,16,.35);color:var(--ink-link)}
.cats a:hover{background:rgba(138,52,16,.1)}
.cats strong{background:linear-gradient(180deg,var(--blood-lit),var(--blood));color:#ffe9dd;border-color:var(--blood)}

/* parchment prose niceties */
.post a{color:var(--ink-link);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.post a:hover{color:var(--blood-lit)}
.post code{background:rgba(58,36,16,.12);border:1px solid rgba(58,36,16,.25);border-radius:3px;padding:1px 6px;font-size:12.5px;color:var(--ink)}
.post h3{font-family:Cinzel,serif;font-weight:800;font-size:17px;color:var(--ink);margin:16px 0 8px}
.post .sep{border:0;border-top:1px solid rgba(58,36,16,.25);margin:16px 0}

footer{border-top:2px solid rgba(232,161,60,.4);background:linear-gradient(180deg,rgba(28,17,9,.92),rgba(14,9,5,.95));
  padding:24px 14px;text-align:center;color:var(--ash);font-size:12.5px;box-shadow:inset 0 1px 0 rgba(255,90,20,.2)}
footer b{color:var(--gold-lit)}footer .sk{color:var(--ember)}

@media(prefers-reduced-motion:reduce){.e,.banner-bg,.status .on::before{animation:none}.e{display:none}}

/* ── Blazor framework chrome ── */
#blazor-error-ui{color-scheme:dark;background:#260805;border-top:2px solid var(--blood);bottom:0;color:#ffb4a8;display:none;left:0;padding:.6rem 1.25rem .7rem;position:fixed;width:100%;z-index:1000;font-size:13px}
#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem}
#blazor-error-ui .reload{color:var(--gold-lit);text-decoration:underline}
.blazor-error-boundary{background:#b32121;padding:1rem;color:white;border-radius:3px}
.blazor-error-boundary::after{content:"An error has occurred."}
