:root {
    --bg: #eef3e8;
    --surface: #ffffff;
    --surface-2: #f7f8f3;
    --ink: #193126;
    --muted: #647269;
    --primary: #2c7a45;
    --primary-dark: #18562f;
    --accent: #d99a2b;
    --danger: #b84232;
    --border: #dce5d8;
    --shadow: 0 16px 40px rgba(35, 70, 45, .10);
    --radius: 18px;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body {
    margin: 0;
    min-height: 100vh;
    color: var(--ink);
    background:
        radial-gradient(circle at 10% 0%, rgba(222, 190, 93, .14), transparent 28rem),
        linear-gradient(180deg, #f4f7ef 0, var(--bg) 100%);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    line-height: 1.5;
}
button, input, select, textarea { font: inherit; }
a { color: var(--primary-dark); text-decoration: none; }
a:hover { text-decoration: underline; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; opacity: .55; }

.brand { display: inline-flex; align-items: center; gap: .65rem; color: inherit; }
.brand:hover { text-decoration: none; }
.brand span { font-size: 1.65rem; }
.brand strong { font-size: 1.1rem; letter-spacing: -.02em; }
.brand-large span { font-size: 2.6rem; }
.brand-large strong { font-size: clamp(1.5rem, 3vw, 2.2rem); }

.landing-page { background: linear-gradient(130deg, #173f2b 0%, #2d7145 55%, #8a6a2d 100%); }
.landing-shell {
    width: min(1180px, calc(100% - 2rem));
    min-height: 100vh;
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr);
    align-items: center;
    gap: clamp(2rem, 6vw, 6rem);
    padding: 3rem 0;
}
.hero-panel { color: white; }
.hero-panel h1 { max-width: 780px; margin: 1.5rem 0 1rem; font-size: clamp(2.7rem, 7vw, 5.8rem); line-height: .96; letter-spacing: -.06em; }
.hero-panel > p { max-width: 720px; color: rgba(255,255,255,.82); font-size: clamp(1rem, 2vw, 1.25rem); }
.feature-row { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.8rem; }
.feature-row span { padding: .55rem .8rem; background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.18); border-radius: 999px; }
.farm-illustration { display: flex; align-items: end; gap: .3rem; margin-top: 2.5rem; font-size: clamp(2.6rem, 6vw, 5.5rem); filter: drop-shadow(0 12px 12px rgba(0,0,0,.22)); }
.farm-illustration span:nth-child(3), .farm-illustration span:nth-child(5) { font-size: .7em; }

.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 2rem; }
.auth-card { background: rgba(255,255,255,.98); border: 1px solid rgba(255,255,255,.35); border-radius: 26px; box-shadow: 0 30px 80px rgba(0,0,0,.23); padding: clamp(1.5rem, 4vw, 2.4rem); }
.landing-shell .auth-card { width: 100%; }
.auth-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; background: var(--surface-2); border-radius: 13px; padding: .3rem; margin-bottom: 1.25rem; }
.auth-tab { border: 0; background: transparent; color: var(--muted); border-radius: 10px; padding: .7rem; font-weight: 700; }
.auth-tab.active { background: white; color: var(--primary-dark); box-shadow: 0 3px 12px rgba(30,60,40,.10); }
.legal-note { margin: 1.2rem 0 0; color: var(--muted); font-size: .75rem; text-align: center; }
.install-card { width: min(720px, 100%); }
.install-card h1 { margin-bottom: .25rem; }

.stacked-form { display: grid; gap: .9rem; }
.stacked-form label, .raid-form > label { display: grid; gap: .35rem; font-weight: 700; font-size: .88rem; }
input, select, textarea {
    width: 100%;
    color: var(--ink);
    background: white;
    border: 1px solid #cfdacf;
    border-radius: 11px;
    padding: .72rem .82rem;
    outline: none;
}
input:focus, select:focus, textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(44,122,69,.13); }
fieldset { border: 1px solid var(--border); border-radius: 14px; padding: 1rem; }
legend { padding: 0 .4rem; font-weight: 800; }
.form-grid { display: grid; gap: .8rem; }
.form-grid.two { grid-template-columns: 1fr 1fr; }

.button { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 42px; border: 1px solid transparent; border-radius: 11px; padding: .63rem 1rem; font-weight: 800; text-decoration: none; transition: transform .15s ease, background .15s ease, box-shadow .15s ease; }
.button:hover { text-decoration: none; transform: translateY(-1px); }
.button.primary { color: white; background: linear-gradient(180deg, #368a50, var(--primary)); box-shadow: 0 6px 14px rgba(44,122,69,.20); }
.button.primary:hover { background: var(--primary-dark); }
.button.secondary { color: var(--primary-dark); background: #edf6ef; border-color: #cce1d1; }
.button.danger { color: white; background: linear-gradient(180deg, #cf5544, var(--danger)); box-shadow: 0 6px 14px rgba(184,66,50,.20); }
.button.wide { width: 100%; }
.text-button { border: 0; background: none; color: inherit; padding: 0; text-decoration: underline; }
.inline-form { display: inline; }

.alert { margin: 0 0 1rem; border-radius: 13px; padding: .85rem 1rem; border: 1px solid transparent; }
.alert.success { color: #145d30; background: #e8f7ed; border-color: #b9dfc4; }
.alert.error { color: #842c22; background: #fff0ed; border-color: #edc3bb; }
.battle-result { display: flex; flex-wrap: wrap; gap: .8rem 1.3rem; margin-top: .45rem; font-size: .88rem; }

.topbar {
    min-height: 64px;
    padding: .7rem clamp(1rem, 3vw, 2.3rem);
    background: #173f2b;
    color: white;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    position: sticky;
    top: 0;
    z-index: 30;
    box-shadow: 0 5px 20px rgba(18,48,31,.18);
}
.topbar-meta { display: flex; align-items: center; gap: .9rem; font-size: .88rem; }
.season-badge, .clan-tag { padding: .35rem .6rem; border-radius: 999px; background: rgba(255,255,255,.11); }
.clan-tag { color: #ffd67b; font-weight: 900; }
.farm-name { font-weight: 700; }

.resource-bar {
    display: grid;
    grid-template-columns: repeat(8, minmax(110px, 1fr));
    gap: 1px;
    background: #d2ddd0;
    border-bottom: 1px solid #c5d3c3;
    position: sticky;
    top: 64px;
    z-index: 25;
    overflow-x: auto;
}
.resource-chip { min-width: 94px; background: rgba(255,255,255,.96); display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: center; column-gap: .35rem; padding: .55rem .7rem; }
.resource-chip > span { grid-row: 1 / 3; font-size: 1.35rem; }
.resource-chip strong { font-size: .88rem; line-height: 1.1; }
.resource-chip small { color: var(--muted); font-size: .63rem; text-transform: uppercase; letter-spacing: .04em; }

.app-shell { display: grid; grid-template-columns: 210px minmax(0, 1fr); min-height: calc(100vh - 140px); }
.sidebar { padding: 1.25rem .8rem; border-right: 1px solid var(--border); background: rgba(247,249,244,.85); }
.nav-link { display: flex; align-items: center; gap: .75rem; color: #435348; padding: .78rem .9rem; border-radius: 11px; margin-bottom: .28rem; font-weight: 750; }
.nav-link:hover { text-decoration: none; background: white; }
.nav-link.active { color: white; background: var(--primary); box-shadow: 0 8px 18px rgba(44,122,69,.19); }
.nav-link span { width: 1.3rem; text-align: center; }
.content { min-width: 0; padding: clamp(1rem, 3vw, 2.2rem); }

.page-heading { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin-bottom: 1.35rem; }
.page-heading h1 { margin: .08rem 0 .2rem; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.05; letter-spacing: -.04em; }
.page-heading p { margin: 0; color: var(--muted); }
.eyebrow { color: var(--primary) !important; font-size: .75rem; font-weight: 900; text-transform: uppercase; letter-spacing: .12em; }
.score-box { min-width: 135px; background: #173f2b; color: white; border-radius: var(--radius); padding: .85rem 1.1rem; text-align: right; box-shadow: var(--shadow); }
.score-box small { display: block; color: rgba(255,255,255,.68); }
.score-box strong { font-size: 1.5rem; }

.panel, .game-card, .stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 8px 25px rgba(38,70,44,.055); }
.panel { padding: clamp(1rem, 2vw, 1.4rem); margin-bottom: 1.25rem; }
.panel-heading { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; }
.panel-heading h2 { margin: 0; font-size: 1.15rem; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 1rem; }
.stat-card { display: flex; align-items: center; gap: .9rem; padding: 1rem; }
.stat-card > span { width: 46px; height: 46px; display: grid; place-items: center; background: var(--surface-2); border-radius: 13px; font-size: 1.5rem; }
.stat-card small { display: block; color: var(--muted); }
.stat-card strong { font-size: 1.2rem; }
.overview-grid, .two-column { display: grid; grid-template-columns: 1.45fr .75fr; gap: 1rem; }
.two-column { grid-template-columns: 1fr 1fr; }

.farm-map { min-height: 340px; display: grid; grid-template-columns: repeat(4, 1fr); gap: .75rem; padding: 1rem; border-radius: 16px; background: linear-gradient(180deg, #bfe0a7, #8fc076); border: 1px solid #81ac6d; box-shadow: inset 0 0 45px rgba(45,94,43,.18); }
.map-building { min-height: 92px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .1rem; border: 2px solid rgba(92,81,41,.25); border-radius: 14px; background: rgba(255,248,218,.84); box-shadow: 0 7px 0 rgba(78,93,51,.18); text-align: center; }
.map-building span { font-size: 2rem; }
.map-building small { font-weight: 750; font-size: .72rem; }
.map-building b { font-size: .65rem; color: var(--primary-dark); }
.map-building.locked { filter: grayscale(1); opacity: .55; background: rgba(230,230,230,.75); }
.season-card { display: flex; align-items: center; gap: 1rem; padding: 1rem; border-radius: 15px; background: var(--surface-2); }
.big-icon { font-size: 3.3rem; }
.season-card h3, .season-card p { margin: 0; }
.season-card p { color: var(--muted); font-size: .87rem; }
.status-list { margin-top: .8rem; }
.status-list > div { display: flex; justify-content: space-between; gap: 1rem; padding: .72rem 0; border-bottom: 1px solid var(--border); }
.status-list > div:last-child { border-bottom: 0; }
.quest-list { margin: 0; padding-left: 1.4rem; display: grid; gap: .55rem; }
.quest-list li.done { color: var(--muted); text-decoration: line-through; }
.quest-list li.done::marker { content: "✓  "; color: var(--primary); font-weight: 900; }

.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.game-card { overflow: hidden; display: flex; min-height: 310px; flex-direction: column; }
.game-card-icon { min-height: 94px; display: grid; place-items: center; font-size: 3.4rem; background: linear-gradient(145deg, #edf5df, #dbeacb); border-bottom: 1px solid var(--border); }
.unit-card .game-card-icon { background: linear-gradient(145deg, #fff4d8, #f1dfb7); }
.game-card-body { display: flex; flex-direction: column; flex: 1; padding: 1rem; }
.title-row { display: flex; justify-content: space-between; align-items: start; gap: .7rem; }
.title-row h2 { margin: 0; font-size: 1.05rem; }
.level-pill, .amount-pill { flex: 0 0 auto; color: var(--primary-dark); background: #e9f5ec; border-radius: 999px; padding: .22rem .55rem; font-size: .68rem; font-weight: 850; }
.amount-pill { color: #7b5317; background: #fff2d8; }
.game-card-body p { color: var(--muted); font-size: .84rem; margin: .65rem 0; }
.requirements { color: #6e776f; font-size: .72rem; }
.cost-row { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; margin: auto 0 .85rem; padding-top: .75rem; }
.cost-item { display: inline-flex; align-items: center; padding: .25rem .45rem; background: var(--surface-2); border: 1px solid var(--border); border-radius: 8px; font-size: .72rem; font-weight: 800; }
.per-unit { width: 100%; color: var(--muted); font-size: .7rem; }
.combat-stats { display: flex; gap: .4rem; margin: .75rem 0; }
.combat-stats span { padding: .3rem .48rem; border-radius: 8px; background: var(--surface-2); font-size: .75rem; font-weight: 800; }
.recruit-form { display: grid; grid-template-columns: 90px 1fr; gap: .5rem; }

.raid-planner { max-width: 1000px; }
.raid-form { display: grid; gap: 1rem; }
.deployment-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6rem; }
.deployment-item { display: grid; grid-template-columns: 1fr 72px; gap: .6rem; align-items: center; border: 1px solid var(--border); border-radius: 12px; padding: .6rem; background: var(--surface-2); font-weight: 750; }
.deployment-item small { display: block; color: var(--muted); font-weight: 500; font-size: .67rem; }
.empty-state { text-align: center; padding: 5rem 1rem; }
.empty-state > span { font-size: 4rem; }
.empty-state h2 { margin-bottom: .2rem; }
.empty-state p { color: var(--muted); }

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .78rem .65rem; text-align: left; border-bottom: 1px solid var(--border); font-size: .86rem; }
th { color: var(--muted); text-transform: uppercase; font-size: .68rem; letter-spacing: .07em; }
tbody tr:last-child td { border-bottom: 0; }
td small { display: block; color: var(--muted); }
.current-player td { background: #edf7ef; }
.rank-cell { width: 70px; font-size: 1.05rem; font-weight: 900; }

.clan-hero { display: flex; justify-content: space-between; align-items: center; gap: 1rem; background: linear-gradient(125deg, #173f2b, #2f7448); color: white; border: 0; }
.clan-hero h2 { margin: .2rem 0; font-size: 2rem; }
.clan-hero p { margin: 0; color: rgba(255,255,255,.75); }
.big-clan-tag { color: #ffdc88; font-weight: 900; }
.clan-list { display: grid; gap: .65rem; }
.clan-list-item { display: flex; justify-content: space-between; gap: 1rem; align-items: center; border: 1px solid var(--border); border-radius: 12px; padding: .8rem; }
.clan-list-item small { display: block; color: var(--muted); }
.clan-list-item p { margin: .3rem 0 0; font-size: .8rem; }

.timeline { display: grid; }
.timeline-item { display: grid; grid-template-columns: 15px 1fr; gap: .6rem; padding-bottom: .9rem; }
.timeline-item > span { width: 10px; height: 10px; margin-top: .42rem; border-radius: 50%; background: var(--primary); box-shadow: 0 0 0 4px #e3f1e6; }
.timeline-item p { margin: 0; }
.timeline-item time, .battle-item time { color: var(--muted); font-size: .7rem; }
.battle-list { display: grid; gap: .55rem; }
.battle-item { display: flex; justify-content: space-between; align-items: center; gap: .7rem; border-left: 4px solid var(--danger); border-radius: 8px; padding: .65rem .75rem; background: var(--surface-2); }
.battle-item.victory { border-left-color: var(--primary); }
.battle-item small { display: block; color: var(--muted); }
.muted { color: var(--muted); }
.footer { display: flex; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--border); padding: 1rem 2rem; color: var(--muted); font-size: .75rem; }

@media (max-width: 1050px) {
    .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .overview-grid, .two-column { grid-template-columns: 1fr; }
    .deployment-grid { grid-template-columns: repeat(2, 1fr); }
    .farm-map { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 780px) {
    .landing-shell { grid-template-columns: 1fr; padding: 1rem 0 2rem; }
    .hero-panel { padding: 2rem .5rem 0; }
    .hero-panel h1 { font-size: clamp(2.6rem, 14vw, 4.5rem); }
    .farm-illustration { overflow: hidden; }
    .topbar { position: static; align-items: flex-start; }
    .topbar-meta { justify-content: flex-end; flex-wrap: wrap; }
    .farm-name { width: 100%; text-align: right; }
    .resource-bar { top: 0; }
    .app-shell { grid-template-columns: 1fr; }
    .sidebar { display: flex; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--border); padding: .55rem; position: sticky; top: 0; z-index: 20; }
    .nav-link { flex: 0 0 auto; margin: 0 .2rem 0 0; padding: .58rem .7rem; font-size: .76rem; }
    .nav-link span { width: auto; }
    .content { padding: 1rem; }
    .page-heading { align-items: start; }
    .score-box { min-width: 110px; }
    .farm-map { min-height: auto; grid-template-columns: repeat(2, 1fr); }
    .footer { flex-direction: column; }
}

@media (max-width: 560px) {
    .brand strong { font-size: .94rem; }
    .season-badge, .clan-tag { display: none; }
    .resource-chip { min-width: 87px; }
    .card-grid, .stats-grid, .deployment-grid, .form-grid.two { grid-template-columns: 1fr; }
    .page-heading { display: grid; }
    .score-box { text-align: left; }
    .clan-hero, .clan-list-item { align-items: stretch; flex-direction: column; }
    .deployment-item { grid-template-columns: 1fr 80px; }
}

/* === Clash of Farming 2.0: lebendige Hofkarte === */
.map-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
    margin-bottom: 1rem;
}
.map-heading h1 { margin: .05rem 0 .2rem; font-size: clamp(2rem, 4vw, 3.2rem); letter-spacing: -.045em; line-height: 1; }
.map-heading p { margin: 0; color: var(--muted); }
.map-status-cards { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .55rem; }
.map-status-cards > span { display: inline-flex; align-items: center; gap: .3rem; border: 1px solid #c7d8bd; background: rgba(255,255,255,.9); border-radius: 999px; padding: .5rem .72rem; box-shadow: 0 6px 16px rgba(35,65,38,.08); font-size: .78rem; }

.world-console {
    position: relative;
    overflow: hidden;
    margin: 0 calc(clamp(1rem, 3vw, 2.2rem) * -1) 1.25rem;
    border-top: 1px solid #afc79e;
    border-bottom: 1px solid #9bb589;
    background: #436d3d;
    box-shadow: 0 18px 45px rgba(24,56,30,.18);
}
.world-toolbar {
    position: relative;
    z-index: 30;
    min-height: 56px;
    display: flex;
    align-items: center;
    gap: .45rem;
    padding: .55rem clamp(.75rem, 2vw, 1.25rem);
    color: white;
    background: linear-gradient(180deg, #244b30, #183922);
    border-bottom: 1px solid rgba(255,255,255,.12);
    box-shadow: 0 8px 20px rgba(13,35,20,.24);
}
.map-tool, .zoom-controls button, .drawer-close {
    appearance: none;
    border: 1px solid rgba(255,255,255,.18);
    color: white;
    background: rgba(255,255,255,.08);
    border-radius: 10px;
    min-height: 36px;
    padding: .45rem .7rem;
    font-weight: 800;
    cursor: pointer;
}
.map-tool:hover, .map-tool.active, .zoom-controls button:hover { background: rgba(255,255,255,.18); }
.zoom-controls { display: inline-flex; flex: 0 0 auto; align-items: center; gap: .25rem; margin-left: auto; }
.zoom-controls button { width: 36px; padding: 0; font-size: 1.2rem; }
.zoom-controls span { min-width: 62px; text-align: center; font-size: .72rem; font-weight: 850; }
.toolbar-hint { min-width: 90px; max-width: 360px; flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: rgba(255,255,255,.72); font-size: .72rem; }

.world-grid-layout { display: grid; grid-template-columns: minmax(0, 1fr) 315px; min-height: 690px; }
.world-viewport {
    position: relative;
    min-width: 0;
    height: 690px;
    overflow: auto;
    cursor: grab;
    overscroll-behavior: contain;
    scrollbar-color: rgba(255,255,255,.38) rgba(28,61,32,.3);
    background:
        radial-gradient(circle at 50% 20%, rgba(255,255,255,.24), transparent 22rem),
        linear-gradient(180deg, #91c56f, #6aa852 70%, #5d9949);
}
.world-viewport.is-dragging { cursor: grabbing; user-select: none; }
.world-scale-wrap { position: relative; transition: width .14s ease, height .14s ease; }
.world-map {
    --tile: 64px;
    position: relative;
    width: calc(var(--map-cols) * var(--tile));
    height: calc(var(--map-rows) * var(--tile));
    transform-origin: 0 0;
    overflow: hidden;
    isolation: isolate;
    background-color: #79b55e;
    background-image:
        linear-gradient(rgba(255,255,255,.04) 50%, rgba(0,0,0,.025) 50%),
        linear-gradient(90deg, rgba(255,255,255,.035) 50%, rgba(0,0,0,.018) 50%),
        repeating-linear-gradient(0deg, transparent 0 calc(var(--tile) - 1px), rgba(45,89,39,.12) calc(var(--tile) - 1px) var(--tile)),
        repeating-linear-gradient(90deg, transparent 0 calc(var(--tile) - 1px), rgba(45,89,39,.12) calc(var(--tile) - 1px) var(--tile));
    background-size: 32px 32px, 32px 32px, var(--tile) var(--tile), var(--tile) var(--tile);
    box-shadow: inset 0 0 110px rgba(25,67,31,.32);
}
.world-map::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -2;
    pointer-events: none;
    background:
        radial-gradient(circle at 12% 18%, rgba(237,255,203,.35) 0 2px, transparent 3px),
        radial-gradient(circle at 64% 72%, rgba(237,255,203,.28) 0 2px, transparent 3px),
        radial-gradient(circle at 83% 35%, rgba(237,255,203,.3) 0 1px, transparent 2px);
    background-size: 91px 83px, 127px 111px, 77px 69px;
}
.terrain { position: absolute; pointer-events: none; z-index: 0; }
.terrain-road { background: #c8ab70; border: 4px solid rgba(105,83,43,.14); box-shadow: inset 0 0 0 2px rgba(255,255,255,.13); opacity: .84; }
.road-horizontal { left: 0; top: calc(7 * var(--tile) + 20px); width: 100%; height: 42px; }
.road-vertical { left: calc(9.5 * var(--tile)); top: 0; width: 42px; height: 100%; }
.pond { left: calc(14 * var(--tile)); top: calc(10 * var(--tile)); width: 160px; height: 105px; display: grid; place-items: center; border: 8px solid #6d9b55; border-radius: 50% 44% 52% 46%; background: radial-gradient(circle at 35% 30%, #aee9f4, #4da5bd 70%); box-shadow: inset 0 -12px 20px rgba(0,67,88,.22), 0 8px 13px rgba(41,73,37,.16); font-size: 1.7rem; animation: pondBob 3.5s ease-in-out infinite; }
.flower-patch { left: calc(6 * var(--tile)); top: calc(1 * var(--tile)); font-size: 1.25rem; transform: rotate(-8deg); }
.hay-bales { left: calc(17 * var(--tile)); top: calc(7 * var(--tile)); font-size: 1.6rem; transform: rotate(7deg); }
@keyframes pondBob { 50% { filter: brightness(1.08); transform: translateY(2px); } }

.world-building, .resource-node {
    position: absolute;
    left: calc(var(--x) * var(--tile));
    top: calc(var(--y) * var(--tile));
    width: calc(var(--w) * var(--tile));
    height: calc(var(--h) * var(--tile));
    appearance: none;
    border: 0;
    padding: 0;
    color: inherit;
    background: transparent;
    cursor: pointer;
    z-index: calc(10 + var(--y));
}
.world-building { display: grid; place-items: center; transition: filter .18s ease, transform .18s ease; touch-action:manipulation; user-select:none; }
.world-building > * { pointer-events:none; }
.world-building:hover, .world-building.selected { filter: brightness(1.08) saturate(1.08); transform: translateY(-3px); z-index: 100; }
.world-building.selected::after {
    content: "";
    position: absolute;
    inset: 3px;
    border: 3px solid #ffe780;
    border-radius: 18px;
    box-shadow: 0 0 0 4px rgba(255,231,128,.25), 0 0 22px rgba(255,230,105,.55);
    animation: selectionPulse 1.4s ease-in-out infinite;
    pointer-events:none;
}
@keyframes selectionPulse { 50% { opacity: .55; } }
.building-shadow { position: absolute; left: 10%; right: 10%; bottom: 12%; height: 24%; border-radius: 50%; background: rgba(31,56,27,.31); filter: blur(3px); transform: skewX(-12deg); }
.building-sprite {
    position: relative;
    width: min(78%, 150px);
    height: min(66%, 115px);
    min-width: 56px;
    min-height: 48px;
    transform: translateY(-3px);
    filter: drop-shadow(0 8px 5px rgba(37,59,31,.22));
}
.building-face { position: absolute; inset: 28% 7% 4%; border: 3px solid rgba(76,57,30,.34); border-radius: 8px 8px 12px 12px; background: linear-gradient(145deg, #f4d18b, #c88b46); box-shadow: inset -10px -10px 0 rgba(74,42,16,.08); }
.building-roof { position: absolute; z-index: 2; left: 2%; right: 2%; top: 3%; height: 46%; clip-path: polygon(50% 0, 100% 65%, 91% 100%, 8% 100%, 0 65%); background: linear-gradient(155deg, #bd4f35, #713024); border-radius: 7px; box-shadow: inset 0 -7px 0 rgba(72,28,20,.18); }
.building-icon { position: absolute; z-index: 4; left: 50%; top: 53%; transform: translate(-50%,-50%); font-size: clamp(1.7rem, 3vw, 3rem); filter: drop-shadow(0 2px 1px rgba(255,255,255,.5)); }
.building-caption { position: absolute; left: 5px; right: 5px; bottom: -1px; z-index: 5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border: 1px solid rgba(81,63,35,.24); border-radius: 8px; padding: 3px 6px; color: #25361f; background: rgba(255,250,223,.92); box-shadow: 0 3px 7px rgba(40,65,33,.16); font-size: 10px; font-weight: 850; text-align: center; }
.building-caption b { color: #21663c; }

.building-field .building-face { inset: 15% 2% 12%; border-radius: 12px; background: repeating-linear-gradient(90deg, #e4b93f 0 8px, #a97826 8px 12px); }
.building-field .building-roof { display: none; }
.building-field .building-icon { font-size: 3.2rem; }
.building-forest .building-face { inset: 5%; border: 0; background: radial-gradient(circle at 25% 65%, #245c31 0 18%, transparent 19%), radial-gradient(circle at 48% 45%, #347743 0 24%, transparent 25%), radial-gradient(circle at 75% 65%, #245c31 0 20%, transparent 21%); }
.building-forest .building-roof { display: none; }
.building-forest .building-icon { font-size: 3.7rem; }
.building-wind_turbine .building-face { left: 42%; right: 42%; top: 34%; background: #e9e1cc; border-radius: 5px; }
.building-wind_turbine .building-roof { display: none; }
.building-wind_turbine .building-icon { display: none; }
.wind-blades { position: absolute; z-index: 5; left: 50%; top: 23%; transform: translate(-50%,-50%); color: #f6f0dd; text-shadow: 0 2px 2px rgba(33,58,42,.45); font-size: 4.4rem; line-height: 1; animation: windSpin 3.6s linear infinite; }
@keyframes windSpin { to { transform: translate(-50%,-50%) rotate(360deg); } }
.building-water_pump .building-roof { background: linear-gradient(155deg, #72b8cf, #286a86); }
.building-builder_hut .building-face { background: linear-gradient(145deg, #d9ad6d, #9a6737); }
.building-builder_hut .building-roof { background: linear-gradient(155deg, #4b6f55, #284532); }
.building-chicken_coop .building-roof, .building-cow_barn .building-roof { background: linear-gradient(155deg, #dc603b, #84321f); }
.building-warehouse .building-face, .building-machine_hall .building-face { background: linear-gradient(145deg, #98a7a6, #5c706f); }
.building-warehouse .building-roof, .building-machine_hall .building-roof { background: linear-gradient(155deg, #516469, #283a3d); }
.building-barracks .building-face { background: linear-gradient(145deg, #c49a66, #8e6038); }
.building-barracks .building-roof { background: linear-gradient(155deg, #4c7545, #26472b); }
.building-clinic .building-face { background: linear-gradient(145deg, #fff7e4, #d8e8e0); }
.building-clinic .building-roof { background: linear-gradient(155deg, #e6554f, #9b2d2b); }
.building-mill .building-face { background: linear-gradient(145deg, #ded2b3, #9f8e67); }
.building-bakery .building-face { background: linear-gradient(145deg, #f2bd75, #c7763d); }
.building-stone_quarry .building-face, .building-iron_mine .building-face, .building-gold_mine .building-face { inset: 18% 4% 7%; border-radius: 50% 50% 12px 12px; background: linear-gradient(145deg, #767876, #3d4441); }
.building-stone_quarry .building-roof, .building-iron_mine .building-roof, .building-gold_mine .building-roof { display: none; }
.building-gold_mine .building-face { background: linear-gradient(145deg, #8d7651, #3f392c); }
.chimney-smoke { position: absolute; z-index: 7; right: 13%; top: -4%; color: rgba(245,245,240,.78); text-shadow: -5px -8px 0 rgba(245,245,240,.55), 3px -16px 0 rgba(245,245,240,.35); animation: smokeRise 2.4s ease-in-out infinite; }
@keyframes smokeRise { 50% { transform: translate(3px,-8px) scale(1.25); opacity: .45; } }

.status-building, .status-upgrading { filter: saturate(.65); }
.construction-overlay { position: absolute; z-index: 12; inset: 8%; display: grid; place-items: center; align-content: center; gap: .2rem; border: 2px dashed rgba(93,61,25,.52); border-radius: 15px; color: #3c2c1d; background: rgba(255,221,141,.82); backdrop-filter: blur(2px); box-shadow: 0 5px 10px rgba(65,45,23,.16); font-weight: 900; }
.construction-overlay > span { font-size: 1.5rem; animation: hammer 1s ease-in-out infinite; }
.construction-overlay small { font-size: .62rem; }
.construction-overlay time { font-size: .68rem; }
@keyframes hammer { 50% { transform: rotate(-18deg) translateY(-3px); } }

.resource-node { display: grid; place-items: center; align-content: center; gap: .2rem; border-radius: 45% 55% 44% 56%; background: radial-gradient(circle at 38% 32%, rgba(255,255,255,.24), transparent 25%), rgba(85,91,77,.55); box-shadow: inset 0 0 0 4px rgba(53,70,46,.19), 0 8px 12px rgba(38,64,34,.18); }
.resource-node span { font-size: 3rem; filter: drop-shadow(0 4px 2px rgba(28,45,27,.22)); }
.resource-node small { max-width: 88%; border-radius: 7px; padding: 2px 5px; color: #23331f; background: rgba(250,246,220,.86); font-size: 9px; font-weight: 850; }
.resource-node.node-gold { background-color: rgba(141,111,48,.56); animation: goldGlow 2.1s ease-in-out infinite; }
.resource-node.node-iron { background-color: rgba(73,91,91,.62); }
.resource-node.occupied { opacity: .22; pointer-events: none; }
@keyframes goldGlow { 50% { filter: brightness(1.25); box-shadow: inset 0 0 0 4px rgba(255,223,103,.28), 0 0 20px rgba(255,214,74,.42); } }

.character-layer { position: absolute; inset: 0; z-index: 80; pointer-events: none; }
.world-character { position: absolute; left: -18px; top: -18px; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: rgba(255,255,255,.54); box-shadow: 0 5px 7px rgba(34,59,30,.2); font-size: 1.5rem; will-change: transform; }
.world-character::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -4px; height: 7px; border-radius: 50%; background: rgba(26,52,24,.24); filter: blur(2px); }

.world-inspector { position: relative; z-index: 20; padding: 1rem; overflow-y: auto; color: var(--ink); background: linear-gradient(180deg, #fffef8, #f2f0df); border-left: 1px solid rgba(53,82,42,.2); box-shadow: -10px 0 28px rgba(31,59,31,.12); }
.inspector-empty { min-height: 100%; display: grid; align-content: center; text-align: center; }
.inspector-empty > span { font-size: 4rem; }
.inspector-empty h2 { margin: .45rem 0 .25rem; }
.inspector-empty p { color: var(--muted); font-size: .85rem; }
.inspector-title { display: flex; align-items: center; gap: .75rem; padding-bottom: .8rem; border-bottom: 1px solid var(--border); }
.inspector-title > span { width: 54px; height: 54px; display: grid; place-items: center; border-radius: 14px; background: #e8f0d9; font-size: 2rem; }
.inspector-title small { color: var(--primary); font-size: .7rem; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; }
.inspector-title h2 { margin: .1rem 0 0; font-size: 1.25rem; }
.inspector-building > p { color: var(--muted); font-size: .84rem; }
.inspector-level { display: flex; align-items: center; justify-content: space-between; margin: .85rem 0; padding: .7rem .8rem; border-radius: 12px; background: white; border: 1px solid var(--border); }
.inspector-level strong { font-size: 1.25rem; }
.inspector-timer { margin-bottom: .7rem; border-radius: 10px; padding: .65rem; color: #6a4512; background: #fff0c7; font-weight: 800; text-align: center; }
.inspector-cost { margin-bottom: .8rem; }
.inspector-cost small { display: block; margin-bottom: .35rem; color: var(--muted); }
.inspector-cost > div { display: flex; flex-wrap: wrap; gap: .25rem; }
.building-special-actions { margin-top: .75rem; }
.special-action-card { border: 1px solid var(--border); border-radius: 12px; padding: .75rem; background: white; }
.special-action-card p { margin: .35rem 0 .65rem; color: var(--muted); font-size: .78rem; }
.quick-train { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.quick-train button { border: 0; border-radius: 9px; padding: .55rem; color: white; background: var(--primary); font-weight: 900; cursor: pointer; }

.build-drawer { position: absolute; z-index: 200; inset: 56px 0 0; display: grid; grid-template-rows: auto 1fr; color: var(--ink); background: rgba(244,247,236,.97); backdrop-filter: blur(10px); transform: translateY(20px); opacity: 0; transition: opacity .18s ease, transform .18s ease; }
.build-drawer.open { opacity: 1; transform: translateY(0); }
.build-drawer-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; border-bottom: 1px solid var(--border); background: white; }
.build-drawer-head h2 { margin: 0; }
.drawer-close { width: 42px; min-height: 42px; color: var(--ink); border-color: var(--border); background: var(--surface-2); font-size: 1.6rem; }
.build-catalog { overflow-y: auto; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: .7rem; align-content: start; padding: 1rem 1.25rem 2rem; }
.build-option { appearance: none; display: grid; grid-template-columns: 50px 1fr; gap: .65rem; align-items: center; min-height: 92px; border: 2px solid transparent; border-radius: 14px; padding: .7rem; color: var(--ink); background: white; box-shadow: 0 6px 16px rgba(38,70,44,.07); text-align: left; cursor: pointer; }
.build-option:hover, .build-option.selected { border-color: #4f984f; transform: translateY(-2px); box-shadow: 0 10px 22px rgba(38,70,44,.13); }
.build-option-icon { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 12px; background: #eaf2dd; font-size: 1.9rem; }
.build-option strong { display: block; }
.build-option small { display: block; color: var(--muted); font-size: .67rem; }
.build-option-cost { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .2rem; }
.build-option-cost .cost-item { padding: .14rem .3rem; font-size: .62rem; }

.placement-grid { position: absolute; inset: 0; z-index: 150; display: none; pointer-events: none; }
.placement-grid.active { display: block; pointer-events: none; background: rgba(7,42,21,.08); }
.placement-grid.busy { pointer-events: none; opacity: .65; }
.placement-slot {
    position: absolute;
    left: calc(var(--x) * var(--tile));
    top: calc(var(--y) * var(--tile));
    width: calc(var(--w) * var(--tile));
    height: calc(var(--h) * var(--tile));
    appearance: none;
    pointer-events: auto;
    display: grid;
    place-items: center;
    align-content: center;
    gap: .2rem;
    border: 3px solid rgba(99,255,145,.96);
    border-radius: 16px;
    color: #103d23;
    background: rgba(67,230,113,.28);
    box-shadow: inset 0 0 0 3px rgba(255,255,255,.58), 0 0 22px rgba(48,224,101,.72);
    cursor: pointer;
    animation: validBuildPulse 1.15s ease-in-out infinite alternate;
}
.placement-slot:hover, .placement-slot:focus-visible {
    z-index: 3;
    background: rgba(97,255,145,.56);
    outline: 4px solid rgba(255,255,255,.92);
    outline-offset: -7px;
    transform: translateY(-3px);
}
.placement-slot-label { max-width: 90%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 999px; padding: .18rem .45rem; background: rgba(16,61,35,.82); color: #fff; font-size: .62rem; font-weight: 900; }
.placement-slot b { border-radius: 9px; padding: .3rem .55rem; background: rgba(255,255,255,.9); box-shadow: 0 4px 10px rgba(25,75,40,.18); font-size: .76rem; }
.placement-ghost { position: absolute; z-index: 140; left: calc(var(--x) * var(--tile)); top: calc(var(--y) * var(--tile)); width: calc(var(--w) * var(--tile)); height: calc(var(--h) * var(--tile)); display: none; border: 3px solid #fff36e; border-radius: 12px; background: rgba(255,243,110,.18); box-shadow: inset 0 0 0 3px rgba(255,255,255,.28), 0 0 20px rgba(255,239,70,.5); pointer-events: none; }
.placement-ghost.visible { display: block; }
.placement-ghost.invalid { border-color: #ff725f; background: rgba(255,82,69,.25); box-shadow: inset 0 0 0 3px rgba(255,255,255,.22), 0 0 20px rgba(255,58,50,.45); }

.map-bottom-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 1rem; }
.queue-list { display: grid; gap: .45rem; }
.queue-item { display: grid; grid-template-columns: 38px 1fr auto; gap: .55rem; align-items: center; border: 1px solid var(--border); border-radius: 10px; padding: .55rem; background: var(--surface-2); }
.queue-item > span { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; background: white; font-size: 1.4rem; }
.queue-item small { display: block; color: var(--muted); font-size: .68rem; }
.queue-item time { min-width: 58px; color: var(--primary-dark); font-weight: 900; font-size: .72rem; text-align: right; }
.queue-list.compact { max-height: 190px; overflow-y: auto; }
.chain-flow { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .45rem; min-height: 90px; border-radius: 14px; padding: .8rem; background: linear-gradient(135deg, #f4ead0, #e8f2dc); }
.chain-flow span { border: 1px solid rgba(85,93,59,.15); border-radius: 10px; padding: .45rem .55rem; background: rgba(255,255,255,.76); font-size: .76rem; font-weight: 850; }
.chain-flow b { color: #6e8d4d; }
.production-chain p { color: var(--muted); font-size: .8rem; }
.army-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.upgrade-warning { border: 1px solid #e3c982; border-radius: 12px; padding: .85rem; margin-bottom: 1rem; background: #fff7d9; }
.upgrade-warning p { margin-bottom: 0; color: #665837; }

.game-toast { position: fixed; z-index: 1000; left: 50%; bottom: 26px; max-width: min(90vw, 520px); transform: translate(-50%, 25px); opacity: 0; border: 1px solid rgba(255,255,255,.24); border-radius: 12px; padding: .75rem 1rem; color: white; background: #245d38; box-shadow: 0 14px 35px rgba(18,43,25,.32); font-weight: 800; pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.game-toast.error { background: #a83f35; }
.game-toast.visible { transform: translate(-50%, 0); opacity: 1; }

@media (max-width: 1180px) {
    .world-grid-layout { grid-template-columns: minmax(0, 1fr) 275px; }
    .build-catalog { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .army-summary-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
    .map-heading { align-items: flex-start; flex-direction: column; }
    .map-status-cards { justify-content: flex-start; }
    .world-grid-layout { display: block; }
    .world-viewport { height: 590px; }
    .world-inspector { min-height: 260px; border-left: 0; border-top: 1px solid rgba(53,82,42,.2); }
    .world-console { margin-left: -1rem; margin-right: -1rem; }
    .map-bottom-grid, .army-summary-grid { grid-template-columns: 1fr; }
    .toolbar-hint { display: none; }
}
@media (max-width: 620px) {
    .world-toolbar { overflow-x: auto; }
    .map-tool { flex: 0 0 auto; font-size: .72rem; }
    .zoom-controls { margin-left: 0; }
    .world-viewport { height: 500px; }
    .world-inspector { padding: .8rem; }
    .build-catalog { grid-template-columns: 1fr; padding: .75rem; }
    .build-option { min-height: 82px; }
    .map-status-cards > span { font-size: .69rem; }
}

/* Version 2.0.1: verpflichtender Passwortwechsel */
.password-change-page .auth-card { max-width: 620px; }
.password-change-page .auth-card > p { color: var(--muted); line-height: 1.6; }
.password-logout-form { margin-top: .75rem; }

/* Administrator-Cheat-Konsole 2.0.3 */
.admin-console-launch { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid rgba(255,255,255,.22); border-radius: 9px; padding: .45rem .65rem; }
.admin-console-launch kbd, .admin-console-shortcut kbd { border: 1px solid rgba(255,255,255,.3); border-bottom-width: 2px; border-radius: 5px; padding: .08rem .3rem; background: rgba(0,0,0,.16); font: inherit; font-size: .7rem; font-weight: 900; }
body.admin-console-open { overflow: hidden; }
.admin-console-overlay[hidden] { display: none; }
.admin-console-overlay { position: fixed; z-index: 5000; inset: 0; display: grid; place-items: center; padding: 1rem; background: rgba(7,18,13,.78); backdrop-filter: blur(8px); opacity: 0; transition: opacity .16s ease; }
.admin-console-overlay.visible { opacity: 1; }
.admin-console-window { width: min(1180px, 96vw); max-height: 94vh; overflow: auto; border: 1px solid rgba(134,208,154,.34); border-radius: 22px; color: #eaf8ec; background: linear-gradient(145deg, #10251a, #172f22 55%, #0b1e15); box-shadow: 0 28px 90px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.06); transform: translateY(14px) scale(.985); transition: transform .16s ease; }
.admin-console-overlay.visible .admin-console-window { transform: translateY(0) scale(1); }
.admin-console-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1.2rem 1.35rem; border-bottom: 1px solid rgba(151,210,167,.18); background: linear-gradient(90deg, rgba(67,154,91,.14), transparent); }
.admin-console-head h2 { margin: .1rem 0 .3rem; color: #f8fff8; font-size: 1.55rem; }
.admin-console-head p { margin: 0; color: #b8d1bf; }
.admin-console-head .eyebrow { color: #7ee29a; }
.admin-console-close { flex: 0 0 auto; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.18); border-radius: 12px; color: white; background: rgba(255,255,255,.07); font-size: 1.8rem; cursor: pointer; }
.admin-console-target { display: grid; grid-template-columns: minmax(240px,1fr) auto auto; align-items: end; gap: .8rem; padding: 1rem 1.35rem; border-bottom: 1px solid rgba(151,210,167,.14); }
.admin-console-target label, .admin-cheat-card label { display: grid; gap: .35rem; color: #cfe5d4; font-size: .78rem; font-weight: 850; }
.admin-console-target select, .admin-cheat-card select, .admin-cheat-card input { width: 100%; min-height: 44px; border: 1px solid rgba(166,217,178,.24); border-radius: 10px; padding: .65rem .75rem; color: #effbf1; background: #0b1b12; outline: none; }
.admin-console-target select:focus, .admin-cheat-card select:focus, .admin-cheat-card input:focus { border-color: #6ada87; box-shadow: 0 0 0 3px rgba(106,218,135,.16); }
.admin-console-shortcut { align-self: center; color: #9eb8a5; font-size: .75rem; }
.admin-console-summary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .65rem; padding: 1rem 1.35rem 0; }
.admin-console-summary > span { display: grid; gap: .25rem; border: 1px solid rgba(166,217,178,.14); border-radius: 12px; padding: .75rem .85rem; background: rgba(255,255,255,.035); }
.admin-console-summary small { color: #94b09b; font-size: .7rem; font-weight: 850; text-transform: uppercase; letter-spacing: .04em; }
.admin-console-summary strong { overflow: hidden; color: white; text-overflow: ellipsis; white-space: nowrap; }
.admin-console-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .85rem; padding: 1rem 1.35rem; }
.admin-cheat-card { display: grid; gap: .75rem; align-content: start; border: 1px solid rgba(166,217,178,.16); border-radius: 16px; padding: 1rem; background: linear-gradient(150deg, rgba(255,255,255,.055), rgba(255,255,255,.02)); box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.admin-cheat-card-title { display: flex; align-items: center; gap: .7rem; padding-bottom: .65rem; border-bottom: 1px solid rgba(166,217,178,.12); }
.admin-cheat-card-title > span { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 12px; background: rgba(100,206,126,.12); font-size: 1.55rem; }
.admin-cheat-card-title h3 { margin: 0 0 .15rem; color: #f5fff6; }
.admin-cheat-card-title p { margin: 0; color: #95ae9b; font-size: .75rem; }
.admin-current-value { border-radius: 9px; padding: .55rem .7rem; color: #9eb5a4; background: rgba(0,0,0,.18); font-size: .8rem; }
.admin-current-value strong { color: #fff3a4; }
.admin-inline-fields { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; }
.admin-cheat-card .button { min-height: 44px; }
.admin-console-status { margin: 0 1.35rem 1.2rem; border: 1px solid rgba(166,217,178,.18); border-radius: 11px; padding: .75rem .9rem; color: #c5d8ca; background: rgba(0,0,0,.18); font-weight: 750; }
.admin-console-status.success { border-color: rgba(95,220,127,.34); color: #a7efb9; background: rgba(47,138,70,.14); }
.admin-console-status.error { border-color: rgba(255,115,101,.42); color: #ffc2bc; background: rgba(161,53,43,.18); }

@media (max-width: 850px) {
    .admin-console-target { grid-template-columns: 1fr auto; }
    .admin-console-shortcut { grid-column: 1 / -1; }
    .admin-console-summary { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .admin-console-grid { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
    .admin-console-overlay { padding: 0; }
    .admin-console-window { width: 100vw; max-height: 100vh; min-height: 100vh; border-radius: 0; }
    .admin-console-head, .admin-console-target, .admin-console-grid { padding-left: .8rem; padding-right: .8rem; }
    .admin-console-summary { padding-left: .8rem; padding-right: .8rem; }
    .admin-console-status { margin-left: .8rem; margin-right: .8rem; }
    .admin-console-target { grid-template-columns: 1fr; }
    .admin-console-target .button { width: 100%; }
    .admin-inline-fields { grid-template-columns: 1fr; }
}

/* === Version 2.1: präzises Bauen und gemeinsame Weltkarte === */
.shield-bubble{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .65rem;border-radius:999px;background:linear-gradient(135deg,#dff4ff,#cfe6ff);border:1px solid #9fc8e9;color:#123b59;font-weight:800;box-shadow:0 8px 20px rgba(25,92,139,.15)}
.shield-bubble time{font-variant-numeric:tabular-nums}

.build-plot{position:absolute;left:calc(var(--x)*var(--tile));top:calc(var(--y)*var(--tile));width:calc(var(--w)*var(--tile));height:calc(var(--h)*var(--tile));box-sizing:border-box;border:2px dashed rgba(255,255,255,.34);border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(15,68,39,.035));pointer-events:none;z-index:1}
.build-plot>span{position:absolute;left:8px;top:7px;padding:3px 7px;border-radius:999px;background:rgba(17,57,34,.64);color:#fff;font-size:.66rem;font-weight:800;letter-spacing:.04em;opacity:.7}
.world-building,.resource-node,.terrain,.character-layer,.placement-grid{z-index:3}
.resource-node{z-index:4}.world-building{z-index:5}.placement-grid{z-index:9}.character-layer{z-index:6}

.build-selection-bar{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;margin:0 1rem 1rem;border:1px solid #9acda8;border-radius:16px;background:#f0fbf2;box-shadow:0 10px 25px rgba(20,85,47,.1)}
.build-selection-main{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.1rem .55rem;min-width:180px}
.build-selection-main>span{grid-row:1/3;font-size:1.8rem}.build-selection-bar strong{font-size:1rem}.build-selection-bar small{color:#557060}
.build-selection-cost{display:flex;flex:1 1 auto;flex-wrap:wrap;gap:.28rem;align-items:center}
.build-cost-chip{display:inline-flex;align-items:center;border:1px solid #c7dacb;border-radius:999px;padding:.24rem .45rem;background:#fff;color:#244b30;font-size:.68rem;font-weight:900}
.build-cost-chip.missing{border-color:#df9188;background:#fff0ed;color:#9b3328}
.build-option[data-valid-count="0"]{opacity:.56;filter:grayscale(.4)}
.build-option[data-valid-count="0"]::after{content:"Kein Platz";font-size:.7rem;font-weight:900;background:#8e342d;color:#fff;padding:.2rem .45rem;border-radius:999px}
.placement-grid.active{cursor:default}
.placement-grid.busy{pointer-events:none;filter:saturate(.5)}
.placement-grid.busy .placement-slot{pointer-events:none}
@keyframes validBuildPulse{from{box-shadow:inset 0 0 0 2px rgba(255,255,255,.45),0 0 7px rgba(53,231,101,.38)}to{box-shadow:inset 0 0 0 2px rgba(255,255,255,.8),0 0 22px rgba(53,231,101,.85)}}

.world-page-heading{align-items:flex-start}
.world-status-strip{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:flex-end}
.world-status-strip span{display:flex;align-items:center;gap:.4rem;background:#fff;border:1px solid var(--border);border-radius:13px;padding:.65rem .8rem;box-shadow:var(--shadow-sm)}
.global-world-shell{display:grid;grid-template-columns:minmax(0,1fr) 350px;grid-template-rows:auto minmax(620px,72vh);gap:0;border-radius:22px;background:#102f24;box-shadow:0 22px 55px rgba(4,30,19,.22);overflow:hidden;border:1px solid rgba(255,255,255,.14)}
.global-world-toolbar{grid-column:1/3;display:flex;align-items:center;gap:.55rem;padding:.75rem 1rem;background:linear-gradient(180deg,#1a4f38,#123d2b);border-bottom:1px solid rgba(255,255,255,.16);color:#fff;z-index:5}
.global-world-viewport{position:relative;overflow:auto;min-width:0;min-height:0;background:#7fc267;cursor:grab;overscroll-behavior:contain;scrollbar-color:#3f7353 #d7ead7}
.global-world-viewport.is-dragging{cursor:grabbing;user-select:none}
.global-world-scale{position:relative;transform-origin:0 0}
.global-world-map{position:absolute;left:0;top:0;width:calc(var(--world-cols)*var(--world-tile));height:calc(var(--world-rows)*var(--world-tile));transform-origin:0 0;overflow:hidden;background:
 radial-gradient(circle at 18% 18%,rgba(255,255,255,.16) 0 2px,transparent 3px),
 radial-gradient(circle at 72% 76%,rgba(21,92,51,.16) 0 3px,transparent 4px),
 linear-gradient(120deg,rgba(255,226,123,.16),transparent 35%),
 repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 1px,transparent 1px var(--world-tile)),
 repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px var(--world-tile)),
 linear-gradient(135deg,#9bd27d,#6faf61)}
.global-world-map::before{content:"";position:absolute;inset:5%;border:18px solid rgba(89,61,32,.22);border-radius:44% 56% 39% 61%;transform:rotate(-3deg);filter:blur(1px)}
.world-river{position:absolute;width:1600px;height:90px;border-radius:55%;background:linear-gradient(180deg,#8bd9ee,#4aa3cc,#7fd1df);box-shadow:inset 0 8px 0 rgba(255,255,255,.22),0 10px 20px rgba(16,82,112,.2);opacity:.92;z-index:1;pointer-events:none}
.river-one{left:250px;top:730px;transform:rotate(9deg)}.river-two{left:1280px;top:220px;transform:rotate(72deg);width:980px;height:62px}
.world-mountain-range{position:absolute;left:1180px;top:1140px;font-size:3.4rem;letter-spacing:-.65rem;filter:drop-shadow(0 13px 8px rgba(29,54,38,.35));z-index:2;pointer-events:none}
.world-farm-marker,.world-pest-marker{position:absolute;left:calc(var(--wx)*var(--world-tile));top:calc(var(--wy)*var(--world-tile));transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;min-width:94px;padding:.28rem .42rem .4rem;border:0;background:rgba(255,255,255,.93);border-radius:14px;box-shadow:0 10px 19px rgba(23,61,38,.28);cursor:pointer;z-index:4;transition:transform .16s,box-shadow .16s,filter .16s;color:#173528}
.world-farm-marker:hover,.world-pest-marker:hover,.world-farm-marker.selected,.world-pest-marker.selected{transform:translate(-50%,-50%) scale(1.12);box-shadow:0 15px 28px rgba(17,55,33,.38),0 0 0 4px rgba(255,255,255,.7);z-index:9}
.world-farm-marker .marker-icon,.world-pest-marker .marker-icon{font-size:2rem;line-height:1;filter:drop-shadow(0 5px 3px rgba(0,0,0,.16))}
.world-farm-marker strong,.world-pest-marker strong{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.74rem}.world-farm-marker small,.world-pest-marker small{font-size:.62rem;color:#557060}
.world-farm-marker.is-self{background:#fff7ca;box-shadow:0 0 0 4px #f1c84a,0 13px 24px rgba(48,57,23,.3)}
.world-farm-marker.is-protected{background:#e3f5ff}.marker-shield{position:absolute;right:-8px;top:-12px;font-size:1.35rem;filter:drop-shadow(0 4px 4px rgba(0,0,0,.22));animation:shieldFloat 1.6s ease-in-out infinite alternate}
@keyframes shieldFloat{to{transform:translateY(-4px)}}
.world-pest-marker{background:#fff0df;border:2px solid #bb6b35}.world-pest-marker.is-locked{filter:grayscale(1);opacity:.42}.world-pest-marker.is-cooldown{filter:saturate(.45);opacity:.67}
.global-world-shell.hide-farms .world-farm-marker,.global-world-shell.hide-pests .world-pest-marker{display:none}
.world-action-panel{background:#f8fbf7;border-left:1px solid #cfddcf;padding:1rem;overflow:auto;min-height:0}
.world-action-empty{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#5f7365;padding:2rem}.world-action-empty>span{font-size:3.5rem}.world-action-empty h2{color:#173528;margin:.65rem 0 .2rem}
.world-target-head{display:flex;gap:.8rem;align-items:center;padding-bottom:.8rem;border-bottom:1px solid var(--border);margin-bottom:.9rem}.world-target-head>span{font-size:2.8rem}.world-target-head h2{font-size:1.25rem;margin:.08rem 0}.world-target-head small{color:#66766b}.world-target-head.pest>span{animation:pestWiggle 1.7s ease-in-out infinite}
@keyframes pestWiggle{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(7deg) translateY(-3px)}}
.world-info-card,.world-shield-card,.world-lock-card,.scout-report{padding:.85rem;border-radius:14px;margin:.75rem 0;border:1px solid #cfddcf;background:#fff}.world-info-card p,.world-shield-card p,.world-lock-card p{margin:.3rem 0 0;color:#596b5f;font-size:.88rem}.world-shield-card{background:#e9f6ff;border-color:#a9d5ee}.world-lock-card{background:#f1f1f1;border-color:#d3d3d3}
.scout-report{background:linear-gradient(145deg,#fff9df,#fff);border-color:#e8cb6b}.scout-report-head{display:flex;justify-content:space-between;gap:.5rem;align-items:center}.scout-report-head small{color:#85713e;font-size:.7rem}.report-stats{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin:.7rem 0}.report-stats span{font-size:.78rem;background:rgba(255,255,255,.7);padding:.4rem;border-radius:9px}.report-resources{display:flex;flex-wrap:wrap;gap:.35rem}.report-resources span{font-size:.73rem;font-weight:800;background:#eef5eb;border-radius:999px;padding:.3rem .48rem}
.world-unit-grid{display:grid;gap:.42rem;max-height:330px;overflow:auto;padding-right:.2rem}.world-unit-picker{display:flex;align-items:center;gap:.5rem;padding:.48rem;border:1px solid #d6e0d5;border-radius:11px;background:#fff}.world-unit-picker>span{display:grid;grid-template-columns:auto 1fr;gap:.05rem .4rem;align-items:center;flex:1}.world-unit-picker>span>small{grid-column:2;color:#6a796e;font-size:.68rem}.world-unit-picker input{width:68px;padding:.48rem;border:1px solid #b7c8b9;border-radius:9px;text-align:center;font-weight:800}
.battle-form-tools{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.75rem}.battle-form-tools .danger{margin-left:auto}
.battle-resolution{text-align:center;padding:1.25rem;border-radius:17px;background:#fff;border:2px solid #cfdccf}.battle-resolution>span{font-size:3.5rem}.battle-resolution.victory{border-color:#71b979;background:#effbef}.battle-resolution.defeat{border-color:#cf746e;background:#fff1ef}.battle-resolution h2{margin:.3rem 0}.battle-resolution .report-resources{justify-content:center;margin:.8rem 0}

@media (max-width:1100px){.global-world-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(520px,65vh) auto}.global-world-toolbar{grid-column:1}.world-action-panel{border-left:0;border-top:1px solid #cfddcf;max-height:none}.build-selection-bar{flex-wrap:wrap}}
@media (max-width:720px){.global-world-toolbar{overflow-x:auto}.global-world-shell{grid-template-rows:auto 58vh auto}.world-status-strip{justify-content:flex-start}.build-selection-bar{margin:.5rem;padding:.65rem}.build-selection-bar .button{flex:1}.world-action-panel{padding:.75rem}.report-stats{grid-template-columns:1fr}.battle-form-tools .danger{width:100%;margin-left:0}.world-farm-marker,.world-pest-marker{min-width:80px}.world-farm-marker .marker-icon,.world-pest-marker .marker-icon{font-size:1.7rem}}
.build-option.unavailable{opacity:.62;background:#f3f3f1;border-color:#d9d9d2}
.build-option.unavailable em{display:block;margin-top:.2rem;color:#9b3c35;font-size:.68rem;font-style:normal;font-weight:800;line-height:1.2}

.action-hub-card{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:250px;background:linear-gradient(145deg,#fff,#f3f8ef)}
.action-hub-card .action-hub-icon{font-size:3.4rem;filter:drop-shadow(0 8px 7px rgba(34,70,43,.18))}
.action-hub-card h2{margin:.55rem 0 .25rem}.action-hub-card p{max-width:540px;color:var(--muted);margin:0 auto 1rem}

/* 2.1.1: stabileres Karten- und Baumenü */
.world-toolbar{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
@media (max-width:1200px){.build-selection-bar{flex-wrap:wrap}.build-selection-cost{order:4;flex-basis:100%}.toolbar-hint{display:none}}
@media (max-width:900px){.resource-bar{grid-template-columns:repeat(4,minmax(110px,1fr))}.world-grid-layout{grid-template-columns:1fr}.world-inspector{border-left:0;border-top:1px solid rgba(53,82,42,.2);min-height:240px}.build-selection-main{margin-right:auto}}
@media (max-width:560px){.resource-bar{display:flex;overflow-x:auto}.resource-chip{flex:0 0 118px}.placement-slot-label{font-size:.55rem}.placement-slot b{font-size:.66rem}}

/* 2.2.0 – robustes Baumenü, Touch-Bedienung und installierbare App */
:root {
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-right: env(safe-area-inset-right, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --safe-left: env(safe-area-inset-left, 0px);
}
html { -webkit-text-size-adjust: 100%; }
body { padding-bottom: var(--safe-bottom); }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
.button, .map-tool, .text-button, .nav-link { touch-action: manipulation; }
.pwa-install-button { display: inline-flex; align-items: center; gap: .3rem; border: 1px solid rgba(255,255,255,.2); border-radius: 9px; padding: .45rem .65rem; }

.build-selection-bar { align-items: center; }
.build-selection-main { display: grid; grid-template-columns: auto 1fr; column-gap: .55rem; min-width: 190px; }
.build-selection-main > span { grid-row: 1 / span 3; align-self: center; font-size: 1.65rem; }
.build-selection-main strong, .build-selection-main small, .build-selection-main em { grid-column: 2; }
.build-selection-main em { color: #315e40; font-size: .72rem; font-style: normal; font-weight: 850; }
.build-selection-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-left: auto; }
.build-selection-actions .confirm-build:disabled { opacity: .48; cursor: not-allowed; }
.button.ghost { border: 1px solid #c7d6c8; color: #35503b; background: transparent; }

.build-drawer { grid-template-rows: auto auto minmax(0, 1fr); }
.build-drawer.loading::after { content: "Bauzustand wird geprüft …"; position: absolute; z-index: 5; inset: 0; display: grid; place-items: center; color: #173f2b; background: rgba(248,251,245,.82); backdrop-filter: blur(3px); font-weight: 900; }
.build-drawer-head p:last-child { margin: .25rem 0 0; color: var(--muted); font-size: .78rem; }
.build-catalog-tools { display: grid; gap: .65rem; padding: .75rem 1rem; border-bottom: 1px solid var(--border); background: #f7faf5; }
.build-search { display: flex; align-items: center; gap: .45rem; max-width: 540px; border: 1px solid #bfd0c1; border-radius: 12px; padding: .2rem .65rem; background: white; }
.build-search input { width: 100%; min-height: 42px; border: 0; outline: 0; background: transparent; font: inherit; }
.build-category-filter { display: flex; gap: .4rem; overflow-x: auto; padding-bottom: .15rem; scrollbar-width: thin; }
.build-category-filter button { flex: 0 0 auto; min-height: 38px; border: 1px solid #c9d8ca; border-radius: 999px; padding: .45rem .7rem; color: #31563c; background: white; font-weight: 800; cursor: pointer; }
.build-category-filter button.active { border-color: #2e7d4b; color: white; background: #2e7d4b; }
.build-catalog { min-height: 0; overflow-y: auto; align-content: start; }
.build-catalog-empty { grid-column: 1 / -1; margin: 2rem auto; color: var(--muted); font-weight: 800; }
.build-option[hidden] { display: none !important; }
.build-option small + small { margin-top: .18rem; color: #506456; }
.build-option [data-build-reason][hidden] { display: none; }

.placement-slot.selected { border-color: #ffea72; background: rgba(62,221,104,.64); box-shadow: inset 0 0 0 4px #fff7a7, 0 0 0 5px #173f2b, 0 0 24px rgba(255,229,75,.9); animation: none; }
.placement-slot.selected b { color: #173f2b; background: #fff7b3; }
.placement-grid.busy::after { content: "Bauauftrag wird serverseitig geprüft …"; position: absolute; z-index: 40; left: 50%; top: 50%; transform: translate(-50%,-50%); border-radius: 13px; padding: .8rem 1rem; color: white; background: rgba(16,61,35,.92); box-shadow: 0 12px 30px rgba(0,0,0,.3); font-weight: 900; }
.world-viewport, .global-world-viewport { touch-action: none; }
.world-viewport.is-dragging { touch-action: none; }

.app-install-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.app-install-hero { grid-row: span 2; display: flex; flex-direction: column; justify-content: center; text-align: center; }
.app-big-icon { font-size: 5rem; filter: drop-shadow(0 12px 10px rgba(23,63,43,.18)); }
.app-install-hero h2 { margin: .55rem 0 .2rem; }
.app-install-hero small { margin-top: .65rem; color: var(--muted); }
.install-steps { display: grid; gap: .65rem; padding-left: 1.25rem; line-height: 1.5; }
.pwa-modal { position: fixed; z-index: 7000; inset: 0; display: grid; place-items: center; padding: 1rem; background: rgba(7,25,16,.72); backdrop-filter: blur(7px); }
.pwa-modal section { position: relative; width: min(430px, 100%); border-radius: 22px; padding: 2rem; color: #173f2b; background: white; box-shadow: 0 28px 80px rgba(0,0,0,.42); text-align: center; }
.pwa-modal [data-pwa-close] { position: absolute; right: .7rem; top: .7rem; width: 44px; height: 44px; border: 0; border-radius: 12px; background: #edf3ea; font-size: 1.6rem; cursor: pointer; }
.pwa-modal-icon { font-size: 4rem; }
.pwa-modal h2 { margin: .45rem 0; }
.pwa-modal p { color: var(--muted); line-height: 1.55; }

@media (display-mode: standalone) {
    body { padding-top: var(--safe-top); }
    .pwa-install-button, [data-pwa-install] { display: none !important; }
    .topbar { padding-left: max(1rem, var(--safe-left)); padding-right: max(1rem, var(--safe-right)); }
}

@media (max-width: 900px) {
    .topbar { position: sticky; top: 0; z-index: 90; min-height: 58px; padding: calc(.65rem + var(--safe-top)) max(.75rem, var(--safe-right)) .65rem max(.75rem, var(--safe-left)); align-items: center; }
    .topbar-meta { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; scrollbar-width: none; }
    .topbar-meta::-webkit-scrollbar { display: none; }
    .farm-name, .clan-tag { display: none; }
    .brand strong { white-space: nowrap; }
    .resource-bar { position: sticky; top: calc(58px + var(--safe-top)); z-index: 80; display: flex; overflow-x: auto; grid-template-columns: none; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scrollbar-width: thin; }
    .resource-chip { flex: 0 0 112px; scroll-snap-align: start; }
    .app-shell { display: block; min-height: auto; }
    .content { padding: .8rem .7rem calc(86px + var(--safe-bottom)); }
    .sidebar { position: fixed; z-index: 120; left: 0; right: 0; bottom: 0; top: auto; display: flex; gap: .2rem; overflow-x: auto; border: 0; border-top: 1px solid #c8d6c8; padding: .35rem max(.4rem,var(--safe-right)) calc(.35rem + var(--safe-bottom)) max(.4rem,var(--safe-left)); background: rgba(249,252,247,.97); box-shadow: 0 -8px 25px rgba(25,62,37,.14); backdrop-filter: blur(12px); }
    .nav-link { flex: 0 0 72px; min-height: 52px; justify-content: center; gap: .1rem; padding: .35rem .25rem; border-radius: 11px; font-size: .68rem; text-align: center; white-space: nowrap; }
    .nav-link span { display: block; font-size: 1.2rem; }
    .footer { padding-bottom: calc(78px + var(--safe-bottom)); }
    .world-console { border-radius: 16px; }
    .world-toolbar { padding: .55rem; }
    .map-tool, .zoom-controls button { min-height: 44px; min-width: 44px; }
    .world-grid-layout { grid-template-columns: minmax(0,1fr); }
    .world-viewport { height: min(62dvh, 610px); min-height: 390px; }
    .world-inspector { min-height: 0; }
    .build-drawer { position: fixed; z-index: 1000; inset: calc(var(--safe-top) + 6px) max(var(--safe-right),6px) calc(var(--safe-bottom) + 6px) max(var(--safe-left),6px); border-radius: 20px; box-shadow: 0 22px 70px rgba(0,0,0,.4); transform: translateY(30px); }
    body.build-menu-open { overflow: hidden; }
    .build-drawer-head { padding: .85rem; }
    .build-drawer-head h2 { font-size: 1.08rem; }
    .drawer-close { width: 48px; height: 48px; }
    .build-catalog { grid-template-columns: repeat(2,minmax(0,1fr)); padding: .65rem; }
    .build-option { min-height: 118px; padding: .7rem; }
    .map-build-selection { position: sticky; z-index: 70; top: calc(115px + var(--safe-top)); margin: .4rem; border-radius: 15px; box-shadow: 0 10px 25px rgba(16,61,35,.22); }
    .build-selection-actions { width: 100%; margin: 0; }
    .build-selection-actions .confirm-build { flex: 2 1 150px; }
    .build-selection-actions .button { min-height: 44px; }
    .app-install-grid { grid-template-columns: 1fr; }
    .app-install-hero { grid-row: auto; }
}

@media (max-width: 600px) {
    .topbar .brand strong { font-size: .94rem; }
    .season-badge { padding: .35rem .48rem; }
    .pwa-install-button { min-width: 44px; justify-content: center; font-size: .72rem; white-space: nowrap; }
    .admin-console-launch { min-width: 44px; justify-content: center; font-size: .72rem; white-space: nowrap; }
    .resource-chip { flex-basis: 102px; padding: .42rem .55rem; }
    .resource-chip small { font-size: .56rem; }
    .map-heading { padding: .8rem .15rem; }
    .map-heading h1 { font-size: 1.65rem; }
    .map-status-cards { width: 100%; overflow-x: auto; flex-wrap: nowrap; }
    .world-viewport { height: 56dvh; min-height: 350px; }
    .world-inspector { padding: .7rem; }
    .build-catalog { grid-template-columns: 1fr; }
    .build-option { min-height: 98px; }
    .build-option-icon { font-size: 2rem; }
    .build-category-filter button { min-height: 42px; }
    .map-build-selection { top: calc(108px + var(--safe-top)); }
    .build-selection-main { width: 100%; }
    .build-selection-cost { width: 100%; }
    .build-selection-actions { display: grid; grid-template-columns: 44px 1fr 44px; }
    .build-selection-actions .confirm-build, .build-selection-actions .ghost { grid-column: 1 / -1; }
    .placement-slot-label { font-size: .52rem; }
    .placement-slot b { font-size: .61rem; padding: .24rem .35rem; }
    .world-character { display: none; }
    .app-install-grid .panel { padding: 1rem; }
}

@media (max-height: 520px) and (orientation: landscape) and (max-width: 950px) {
    .topbar { position: static; }
    .resource-bar { top: 0; }
    .world-viewport { height: 72dvh; min-height: 300px; }
    .build-drawer { inset: 4px; }
    .build-drawer-head { padding: .5rem .75rem; }
    .build-catalog-tools { padding: .4rem .65rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}

/* === Version 2.2.3: gezielte Bautrupp-Auswahl === */
.builder-picker{display:grid;gap:.28rem;min-width:180px;padding:.55rem .65rem;border:1px solid #c7dacb;border-radius:12px;background:#fff}
.builder-picker>span{font-size:.7rem;font-weight:900;color:#31573d;text-transform:uppercase;letter-spacing:.045em}
.builder-picker select{width:100%;min-height:38px;border:1px solid #aec7b4;border-radius:9px;padding:.42rem .55rem;background:#f9fff9;color:#173528;font:inherit;font-size:.82rem;font-weight:800}
.builder-picker select:disabled{background:#f1f1ed;color:#8a918a;cursor:not-allowed}
.builder-picker>small{color:var(--muted);font-size:.7rem;line-height:1.35}
.inspector-builder-picker{margin:0 0 .75rem}

.builder-roster{display:flex;align-items:center;gap:.8rem;margin:0 1rem .8rem;padding:.6rem .75rem;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:rgba(16,54,35,.9);color:#fff;overflow:hidden}
.builder-roster-head{display:grid;gap:.08rem;min-width:130px}
.builder-roster-head strong{font-size:.84rem}.builder-roster-head small{font-size:.67rem;color:#cfe5d4}
.builder-roster-list{display:flex;gap:.45rem;overflow-x:auto;padding:.08rem 0;scrollbar-width:thin;flex:1}
.builder-card{display:grid;grid-template-columns:auto minmax(100px,1fr) auto;align-items:center;gap:.45rem;min-width:220px;padding:.42rem .52rem;border-radius:11px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.08)}
.builder-card.free{background:rgba(151,232,165,.14);border-color:rgba(151,232,165,.38)}
.builder-card.busy{background:rgba(255,208,109,.12);border-color:rgba(255,208,109,.34)}
.builder-number{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.14);font-weight:900;font-size:.72rem}
.builder-card div{display:grid;min-width:0}.builder-card strong{font-size:.75rem}.builder-card small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d9e8dc;font-size:.63rem}
.builder-card>b,.builder-card time{font-size:.68rem;font-variant-numeric:tabular-nums;white-space:nowrap}.builder-card.free>b{color:#bff4c8}.builder-card.busy time{color:#ffe2a0}

@media (max-width:900px){.builder-roster{align-items:stretch;flex-direction:column}.builder-roster-head{display:flex;justify-content:space-between;width:100%}.builder-roster-list{width:100%}.build-builder-picker{order:3;flex:1 1 190px}}
@media (max-width:600px){.builder-roster{margin:.4rem .5rem .65rem;padding:.55rem}.builder-card{min-width:205px}.builder-picker{min-width:0;width:100%}}

/* === Version 2.2.4: dauerhafte Bautrupp-Verträge === */
.builder-card.hireable{background:rgba(119,196,255,.13);border-color:rgba(119,196,255,.38)}
.builder-card.locked{background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.1);opacity:.68}
.builder-card.hireable>b{color:#bfe4ff}.builder-card.locked>b{color:#c4ccc6}
.builder-card.locked .builder-number{filter:grayscale(1)}
.builder-management{display:grid;gap:.65rem}
.builder-hire-offer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem;border:1px solid #bfd6c5;border-radius:12px;background:#f7fff8}
.builder-hire-offer>span{display:grid;gap:.32rem;min-width:0}.builder-hire-offer b{font-size:.82rem}.builder-hire-offer small{display:flex;flex-wrap:wrap;gap:.3rem}.builder-hire-offer em{font-size:.68rem;color:#9a402f;font-style:normal;font-weight:750}
.builder-hire-note{margin:0;padding:.55rem .65rem;border-radius:10px;background:#f3f5f2;color:#5b675e;font-size:.75rem;font-weight:700}
.builder-hire-note.success{background:#eaf8ed;color:#266437}
@media (max-width:560px){.builder-hire-offer{align-items:stretch;flex-direction:column}.builder-hire-offer .button{width:100%}}

/* === Version 2.2.5: temporärer Premium-Builder === */
.builder-card.premium{background:linear-gradient(135deg,rgba(255,226,117,.16),rgba(189,135,255,.15));border-color:rgba(255,224,119,.46)}
.builder-card.premium_free{box-shadow:inset 0 0 0 1px rgba(255,236,164,.2)}
.builder-card.premium_busy{background:linear-gradient(135deg,rgba(255,198,88,.18),rgba(159,119,255,.18));border-color:rgba(255,211,112,.5)}
.builder-card.premium_expired{opacity:.74;filter:saturate(.7)}
.builder-card.premium_grace{background:rgba(224,160,88,.15);border-color:rgba(255,190,106,.42)}
.builder-card.premium_free time,.builder-card.premium_busy time{color:#ffe7a6}
.builder-card.premium_expired>b{color:#d9c8aa}.builder-card.premium_grace>b{color:#ffd39d}
.premium-offer{border-color:#dbc474;background:linear-gradient(135deg,#fffbea,#f6efff)}
.premium-offer b{color:#664b16}.premium-offer em{color:#725d2b}

/* === Version 2.2.6: Bauzeit-Beschleunigung === */
.construction-speedups{display:grid;gap:.65rem}
.construction-speedups>p{margin:0;color:var(--muted);font-size:.76rem;line-height:1.45}
.construction-speedup-offer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem;border:1px solid #c7d6ca;border-radius:12px;background:#f8fcf8}
.construction-speedup-offer.finish{border-color:#d4bd79;background:linear-gradient(135deg,#fffaf0,#fff5d7)}
.construction-speedup-offer>span{display:grid;gap:.3rem;min-width:0}
.construction-speedup-offer b{font-size:.82rem}
.construction-speedup-offer small{display:flex;flex-wrap:wrap;gap:.3rem}
.construction-speedup-offer em{font-size:.68rem;color:#9a402f;font-style:normal;font-weight:750}
@media (max-width:560px){.construction-speedup-offer{align-items:stretch;flex-direction:column}.construction-speedup-offer .button{width:100%}}

/* === Version 2.2.7: Bauwarteschlangen === */
.status-queued_building,.status-queued_upgrading{filter:saturate(.78)}
.construction-overlay.queue-overlay{border-style:solid;border-color:rgba(63,91,121,.48);background:rgba(211,232,250,.9);color:#213c53}
.construction-overlay.queue-overlay>span{animation:none}
.construction-overlay.queue-overlay b{font-size:.7rem}
.construction-overlay.queue-overlay time{color:#315c7d}
.builder-card.busy,.builder-card.premium_busy,.builder-card.premium_grace{border-width:1px}
.builder-card[title*="Warteschlange"]{box-shadow:inset 0 -3px 0 rgba(118,183,231,.34)}
.builder-queue-info{display:grid;gap:.45rem;border-color:#b8d1e2;background:linear-gradient(135deg,#f6fbff,#eef7ff)}
.builder-queue-info>p,.builder-queue-info>small{margin:0;color:#526978;font-size:.75rem;line-height:1.45}
.builder-queue-info time{font-weight:850;color:#2e617f;font-variant-numeric:tabular-nums}
.builder-picker option{font-weight:700}

/* === Version 2.2.8: Warteschlangen-Steuerung === */
.builder-queue-controls{display:grid;gap:.55rem;margin-top:.2rem;padding-top:.6rem;border-top:1px solid rgba(68,105,132,.18)}
.queue-order-buttons{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}
.queue-order-buttons .button{min-width:0;padding:.55rem .65rem;font-size:.72rem}
.queue-cancel-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.58rem;border:1px solid rgba(184,66,50,.2);border-radius:10px;background:rgba(255,248,246,.8)}
.queue-cancel-row>span{display:grid;gap:.28rem;min-width:0}
.queue-cancel-row>span>small{font-weight:800;color:#70463e}
.queue-cancel-row>span>.cost-item{display:inline-flex;margin-right:.3rem}
.queue-cancel-row>span>em{font-size:.68rem;color:var(--muted);font-style:normal}
@media (max-width:560px){.queue-cancel-row{align-items:stretch;flex-direction:column}.queue-cancel-row .button{width:100%}}


/* === Version 2.2.9: zentrale Bauübersicht === */
body.construction-center-open{overflow:hidden}
.construction-center{position:fixed;z-index:6500;inset:0;display:grid;place-items:center;padding:clamp(.5rem,2vw,1.5rem)}
.construction-center[hidden]{display:none}
.construction-center-backdrop{position:absolute;inset:0;border:0;background:rgba(7,25,16,.76);backdrop-filter:blur(7px);cursor:default}
.construction-center-dialog{position:relative;width:min(1120px,100%);max-height:min(880px,calc(100vh - 2rem));display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;border:1px solid rgba(255,255,255,.28);border-radius:22px;background:#f5f8f2;box-shadow:0 32px 100px rgba(0,0,0,.48)}
.construction-center-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;color:#fff;background:linear-gradient(135deg,#173f2b,#275c39)}
.construction-center-head .eyebrow{color:#bfe4c8}.construction-center-head h2{margin:.08rem 0;font-size:1.45rem}.construction-center-head p:last-child{margin:.2rem 0 0;color:#d6e8da;font-size:.74rem}
.construction-center-toolbar{display:flex;align-items:end;gap:.75rem;padding:.8rem 1rem;border-bottom:1px solid #cad8c9;background:#fff}
.construction-center-summary{display:flex;flex-wrap:wrap;gap:.4rem;flex:1}
.construction-center-summary>span{display:inline-flex;align-items:center;gap:.25rem;padding:.42rem .58rem;border:1px solid #d4dfd2;border-radius:999px;background:#f5f8f3;color:#365642;font-size:.72rem;font-weight:850}
.construction-center-toolbar label{display:grid;gap:.25rem;min-width:210px}.construction-center-toolbar label span{font-size:.66rem;font-weight:900;color:#496653;text-transform:uppercase;letter-spacing:.045em}.construction-center-toolbar select{min-height:38px;border:1px solid #b9cdbd;border-radius:9px;padding:.4rem .55rem;background:#fbfefb;font:inherit;font-size:.78rem;font-weight:800;color:#173528}
.construction-center-list{display:grid;gap:.65rem;overflow:auto;padding:1rem;overscroll-behavior:contain}
.construction-center-card{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:.75rem;align-items:start;padding:.78rem;border:1px solid #cbd8ca;border-radius:15px;background:#fff;box-shadow:0 6px 18px rgba(36,66,41,.07)}
.construction-center-card.active-job{border-left:5px solid #d9a62f}.construction-center-card.queued-job{border-left:5px solid #6194b8;background:linear-gradient(135deg,#fff,#f4f9fc)}
.construction-center-job-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:#edf4ea;font-size:1.75rem}
.construction-center-job-main{display:grid;gap:.5rem;min-width:0}.construction-center-job-title{display:flex;align-items:flex-start;justify-content:space-between;gap:.7rem}.construction-center-job-title>span{display:grid;min-width:0}.construction-center-job-title small{color:#66806c;font-size:.67rem;font-weight:800}.construction-center-job-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#173b29;font-size:.94rem}
.construction-center-status{flex:0 0 auto;padding:.28rem .45rem;border-radius:999px;background:#eef4ec;color:#43604a;font-size:.64rem}.active-job .construction-center-status{background:#fff2cf;color:#765719}.queued-job .construction-center-status{background:#e7f3fb;color:#315d7b}
.construction-center-schedule{display:flex;flex-wrap:wrap;gap:.35rem .8rem;color:#67796a;font-size:.69rem}.construction-center-schedule span{white-space:nowrap}
.construction-center-actions{display:flex;flex-wrap:wrap;gap:.38rem}.construction-center-actions .button{min-height:34px;padding:.42rem .58rem;font-size:.69rem}
.construction-center-refund{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;padding-top:.42rem;border-top:1px dashed #d5dfd4;color:#73554c;font-size:.68rem}.construction-center-refund small{font-weight:850}.construction-center-refund .cost-item{display:inline-flex}
.construction-center-timer{min-width:78px;padding-top:.2rem;text-align:right}.construction-center-timer time{font-weight:950;color:#274d34;font-variant-numeric:tabular-nums}
.construction-center-empty{display:grid;place-items:center;gap:.35rem;margin:auto;padding:3rem;color:#617064;text-align:center}.construction-center-empty>span{font-size:3rem}.construction-center-empty p{max-width:420px;margin:0;font-size:.78rem}
.construction-center.loading .construction-center-dialog::after{content:"Bauzeitplan wird aktualisiert …";position:absolute;z-index:3;inset:0;display:grid;place-items:center;background:rgba(247,250,245,.82);backdrop-filter:blur(2px);color:#244b31;font-weight:900}
@media(max-width:760px){.construction-center{padding:.35rem}.construction-center-dialog{max-height:calc(100vh - .7rem);border-radius:16px}.construction-center-toolbar{align-items:stretch;flex-direction:column}.construction-center-toolbar label{width:100%;min-width:0}.construction-center-toolbar>.button{width:100%}.construction-center-card{grid-template-columns:42px minmax(0,1fr)}.construction-center-job-icon{width:42px;height:42px}.construction-center-timer{grid-column:2;min-width:0;padding:0;text-align:left}.construction-center-job-title{align-items:stretch;flex-direction:column}.construction-center-status{align-self:flex-start}}
@media(max-width:480px){.construction-center-head{padding:.75rem}.construction-center-list{padding:.55rem}.construction-center-card{padding:.62rem}.construction-center-actions .button{flex:1 1 45%}}

/* === Version 2.3.0: Builder-Dispatcher mit Drag-and-drop === */
.construction-center-toolbar{flex-wrap:wrap}
.construction-dispatch-hint{flex:1 0 100%;margin:0;color:#647569;font-size:.7rem;line-height:1.35}
.construction-lane{display:grid;gap:.45rem;padding:.65rem;border:1px solid #c8d7c8;border-radius:17px;background:#edf4eb}
.construction-lane-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.15rem .2rem .35rem}
.construction-lane-head>div{display:grid;grid-template-columns:auto auto;align-items:center;gap:.05rem .4rem;min-width:0}
.construction-lane-head>div>span{grid-row:1 / span 2;font-size:1.35rem}
.construction-lane-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#173b29;font-size:.9rem}
.construction-lane-head small{color:#607467;font-size:.66rem;font-weight:750}
.construction-lane-head>b{flex:0 0 auto;padding:.3rem .48rem;border-radius:999px;background:#fff;color:#45604c;font-size:.64rem}
.construction-lane.cannot-accept .construction-lane-head>b{background:#f2e7dd;color:#795846}
.construction-lane-jobs{display:grid;gap:.35rem}
.construction-center-card.queued-job.is-draggable{grid-template-columns:28px 48px minmax(0,1fr) auto}
.construction-drag-handle{display:grid;place-items:center;align-self:stretch;min-height:48px;border:1px dashed #8aabbf;border-radius:10px;color:#47728d;background:#edf7fc;font-size:1.1rem;font-weight:950;letter-spacing:-.22rem;cursor:grab;user-select:none;touch-action:none}
.construction-drag-handle:hover,.construction-drag-handle:focus{outline:0;border-color:#34749b;background:#dff2fc;box-shadow:0 0 0 3px rgba(52,116,155,.16)}
.construction-drag-handle:active{cursor:grabbing}
.construction-center-card.dragging{opacity:.38;filter:saturate(.5);transform:scale(.99)}
.construction-drop-zone{display:flex;align-items:center;justify-content:center;gap:.35rem;min-height:24px;border:1px dashed #afc5b4;border-radius:10px;color:#6b7e6e;background:rgba(255,255,255,.48);font-size:.64rem;transition:min-height .14s,background .14s,border-color .14s,transform .14s}
.construction-drop-zone>span{font-weight:950}.construction-drop-zone>small{font:inherit;font-weight:800}
.construction-drop-zone.drag-over{min-height:44px;border:2px solid #2f7b4b;color:#1f653b;background:#dff4e3;transform:scale(1.005);box-shadow:0 5px 15px rgba(39,104,61,.12)}
.construction-lane.cannot-accept .construction-drop-zone{opacity:.58}
.construction-dispatch-picker{display:inline-flex;align-items:stretch;gap:.3rem;max-width:100%}
.construction-dispatch-picker select{max-width:250px;min-height:34px;border:1px solid #b9cdbd;border-radius:8px;padding:.32rem .42rem;background:#fff;color:#274b32;font:inherit;font-size:.68rem;font-weight:800}
@media(max-width:760px){.construction-center-card.queued-job.is-draggable{grid-template-columns:28px 42px minmax(0,1fr)}.construction-center-card.queued-job .construction-center-timer{grid-column:3}.construction-drag-handle{min-height:42px}.construction-dispatch-picker{flex:1 1 100%}.construction-dispatch-picker select{flex:1;max-width:none;min-width:0}.construction-dispatch-picker .button{flex:0 0 auto}.construction-lane-head{align-items:flex-start}.construction-lane-head>b{white-space:nowrap}}
@media(max-width:480px){.construction-lane{padding:.45rem}.construction-dispatch-picker{display:grid;grid-template-columns:minmax(0,1fr) auto}.construction-center-card.queued-job .construction-center-job-main{grid-column:3}.construction-center-card.queued-job .construction-center-timer{grid-column:3}}

/* 2.4.0 – Greenforge Frontier: World & Feel Overhaul */
:root {
    --bg: #091710;
    --surface: #f8f3e7;
    --surface-2: #efe7d3;
    --ink: #17241d;
    --muted: #657268;
    --primary: #237a55;
    --primary-dark: #0f4c3a;
    --accent: #d9a441;
    --accent-bright: #ffd978;
    --danger: #b84438;
    --border: rgba(50, 70, 56, .16);
    --shadow: 0 22px 55px rgba(2, 19, 12, .18);
    --radius: 20px;
    --frontier-night: #071b17;
    --frontier-panel: #102d27;
    --frontier-panel-2: #173b31;
    --frontier-gold: #e9ba55;
    --frontier-cream: #fff6df;
    --frontier-teal: #2ca67d;
}

body.frontier-ui {
    color: var(--ink);
    background:
        radial-gradient(circle at 80% -10%, rgba(55, 143, 107, .22), transparent 34rem),
        radial-gradient(circle at 8% 25%, rgba(218, 165, 72, .11), transparent 30rem),
        linear-gradient(145deg, #07150f 0, #0c2119 44%, #101c16 100%);
}
.frontier-ui .content {
    background:
        linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px),
        radial-gradient(circle at 20% 5%, rgba(53,150,109,.12), transparent 32rem);
    background-size: 32px 32px, 32px 32px, auto;
}
.frontier-ui .topbar {
    min-height: 74px;
    padding-top: calc(.7rem + var(--safe-top));
    background: linear-gradient(100deg, rgba(7,26,22,.98), rgba(16,53,43,.98) 55%, rgba(42,57,35,.98));
    border-bottom: 1px solid rgba(245,210,127,.24);
    box-shadow: 0 12px 32px rgba(0,0,0,.34);
    backdrop-filter: blur(18px);
}
.frontier-brand { gap: .72rem; min-width: max-content; }
.frontier-brand .brand-emblem {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255,224,145,.45);
    border-radius: 14px 4px 14px 4px;
    background: linear-gradient(145deg, rgba(233,186,85,.28), rgba(42,166,125,.16));
    box-shadow: inset 0 0 18px rgba(255,255,255,.08), 0 8px 18px rgba(0,0,0,.22);
}
.frontier-brand > span:last-child { display: grid; line-height: 1.05; }
.frontier-brand strong { color: #fff7df; letter-spacing: -.025em; }
.frontier-brand small { margin-top: .25rem; color: #d8bd77; font-size: .58rem; font-weight: 900; letter-spacing: .16em; text-transform: uppercase; }
.frontier-ui .topbar-meta { gap: .65rem; }
.frontier-ui .farm-name, .frontier-ui .season-badge, .frontier-ui .clan-tag,
.frontier-ui .command-power, .frontier-ui .daily-command-link, .frontier-ui .sound-toggle {
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 12px;
    background: rgba(255,255,255,.055);
    box-shadow: inset 0 1px rgba(255,255,255,.06);
}
.frontier-ui .farm-name { padding: .45rem .65rem; }
.command-power { display: grid; min-width: 88px; padding: .34rem .62rem; line-height: 1; }
.command-power small { color: rgba(255,255,255,.57); font-size: .55rem; text-transform: uppercase; letter-spacing: .08em; }
.command-power strong { margin-top: .18rem; color: var(--accent-bright); font-size: .9rem; }
.daily-command-link, .sound-toggle { min-height: 38px; padding: .45rem .65rem !important; text-decoration: none !important; font-weight: 900; }
.sound-toggle { min-width: 40px; }

.frontier-ui .resource-bar {
    top: calc(74px + var(--safe-top));
    grid-template-columns: repeat(8, minmax(112px, 1fr));
    gap: 4px;
    padding: 5px clamp(.5rem,2vw,1.2rem);
    background: linear-gradient(180deg, rgba(7,22,18,.98), rgba(10,29,23,.97));
    border-bottom: 1px solid rgba(233,186,85,.21);
    box-shadow: 0 10px 24px rgba(0,0,0,.22);
}
.frontier-ui .resource-chip {
    position: relative;
    overflow: hidden;
    min-height: 52px;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 11px;
    color: #fff8e8;
    background: linear-gradient(145deg, rgba(255,255,255,.1), rgba(255,255,255,.035));
    transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.frontier-ui .resource-chip::after {
    content: "";
    position: absolute;
    inset: auto -30% -70% 20%;
    height: 100%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(233,186,85,.18), transparent 68%);
}
.frontier-ui .resource-chip:hover { transform: translateY(-2px); border-color: rgba(255,217,120,.4); background: rgba(255,255,255,.12); }
.frontier-ui .resource-chip strong { position: relative; z-index: 1; }
.frontier-ui .resource-chip small { color: rgba(255,255,255,.54); }
.frontier-ui .resource-chip.resource-gain { animation: resourceGain .9s ease; }
@keyframes resourceGain { 35% { transform: translateY(-4px) scale(1.07); border-color: #ffd978; box-shadow: 0 0 24px rgba(255,217,120,.55); } }

.frontier-ui .app-shell { grid-template-columns: 226px minmax(0,1fr); }
.frontier-ui .sidebar {
    position: relative;
    z-index: 12;
    padding: 1.1rem .75rem;
    color: #dce8df;
    border-right: 1px solid rgba(233,186,85,.17);
    background:
        linear-gradient(180deg, rgba(10,32,25,.97), rgba(7,22,18,.98)),
        radial-gradient(circle at 20% 20%, rgba(44,166,125,.2), transparent 20rem);
    box-shadow: 10px 0 28px rgba(0,0,0,.18);
}
.frontier-ui .nav-link {
    position: relative;
    min-height: 49px;
    margin-bottom: .38rem;
    color: rgba(236,246,239,.72);
    border: 1px solid transparent;
    border-radius: 12px 5px 12px 5px;
    transition: transform .18s ease, color .18s ease, background .18s ease, border-color .18s ease;
}
.frontier-ui .nav-link:hover { transform: translateX(4px); color: white; border-color: rgba(255,255,255,.1); background: rgba(255,255,255,.07); }
.frontier-ui .nav-link.active {
    color: #fff7df;
    border-color: rgba(255,218,126,.45);
    background: linear-gradient(90deg, rgba(38,139,99,.85), rgba(31,94,74,.8));
    box-shadow: inset 3px 0 #ffd978, 0 10px 24px rgba(0,0,0,.2);
}
.frontier-ui .nav-link span { font-size: 1.18rem; filter: drop-shadow(0 3px 4px rgba(0,0,0,.25)); }

.frontier-map-heading {
    position: relative;
    overflow: hidden;
    align-items: stretch;
    margin: 0 0 1rem;
    border: 1px solid rgba(255,221,139,.24);
    border-radius: 24px 8px 24px 8px;
    padding: clamp(1.15rem,3vw,2rem);
    color: #f9f6e9;
    background:
        linear-gradient(105deg, rgba(8,35,28,.97), rgba(18,72,55,.93) 58%, rgba(95,78,38,.9)),
        radial-gradient(circle at 85% 0, rgba(255,222,143,.3), transparent 25rem);
    box-shadow: 0 20px 52px rgba(0,0,0,.27);
}
.frontier-map-heading::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(120deg, transparent 0 52%, rgba(255,255,255,.07) 52.5% 53%, transparent 53.5%);
    opacity: .45;
}
.frontier-title-block { position: relative; z-index: 1; max-width: 790px; }
.frontier-map-heading .eyebrow { color: #efd07d !important; }
.frontier-map-heading h1 { margin: .08rem 0 .45rem; font-size: clamp(2.25rem,5vw,4.25rem); color: #fff7e1; text-shadow: 0 5px 18px rgba(0,0,0,.25); }
.frontier-map-heading p { max-width: 760px; color: rgba(244,250,246,.72); }
.frontier-heading-actions { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.15rem; }
.frontier-map-heading .button.ghost { color: #fff8e6; border-color: rgba(255,255,255,.24); background: rgba(255,255,255,.06); }
.frontier-command-panel {
    position: relative;
    z-index: 1;
    align-self: center;
    min-width: 270px;
    display: grid;
    border: 1px solid rgba(255,220,135,.35);
    border-radius: 18px 5px 18px 5px;
    padding: 1rem 1.1rem;
    background: linear-gradient(145deg, rgba(5,23,19,.68), rgba(255,255,255,.065));
    backdrop-filter: blur(12px);
    box-shadow: inset 0 1px rgba(255,255,255,.08), 0 12px 24px rgba(0,0,0,.16);
}
.command-panel-icon { position: absolute; right: .9rem; top: .6rem; font-size: 2rem; opacity: .72; }
.frontier-command-panel > small { color: #d8c482; text-transform: uppercase; letter-spacing: .11em; font-size: .62rem; font-weight: 900; }
.frontier-command-panel > strong { margin: .3rem 0 .7rem; color: #fff5d8; font-size: 1.45rem; }
.command-panel-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; }
.command-panel-metrics span { border-radius: 9px; padding: .38rem .45rem; color: rgba(255,255,255,.78); background: rgba(255,255,255,.07); font-size: .7rem; font-weight: 800; }

.daily-operations {
    position: relative;
    overflow: hidden;
    margin-bottom: 1rem;
    border: 1px solid rgba(233,186,85,.28);
    border-radius: 20px 6px 20px 6px;
    padding: 1rem;
    background: linear-gradient(145deg, rgba(12,41,33,.98), rgba(17,48,39,.98));
    box-shadow: 0 18px 45px rgba(0,0,0,.22);
}
.daily-operations::before {
    content: "";
    position: absolute;
    width: 380px;
    height: 380px;
    right: -180px;
    top: -260px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(233,186,85,.25), transparent 70%);
    pointer-events: none;
}
.daily-operations.attention-pulse { animation: objectiveAttention .8s ease; }
@keyframes objectiveAttention { 45% { transform: translateY(-4px); box-shadow: 0 0 0 4px rgba(255,217,120,.18), 0 24px 60px rgba(0,0,0,.3); } }
.daily-operations-head { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .8rem; }
.daily-operations-head .eyebrow { color: #eac668 !important; }
.daily-operations-head h2 { margin: .05rem 0 .15rem; color: #fff7e5; font-size: 1.25rem; }
.daily-operations-head p { margin: 0; color: rgba(238,248,241,.62); font-size: .78rem; }
.daily-operation-score { min-width: 82px; display: grid; place-items: center; border: 1px solid rgba(255,218,126,.35); border-radius: 14px; padding: .55rem; color: #fff0bd; background: rgba(255,255,255,.06); }
.daily-operation-score span { font-size: 1.25rem; font-weight: 950; }
.daily-operation-score small { color: rgba(255,255,255,.52); font-size: .57rem; text-transform: uppercase; letter-spacing: .07em; }
.daily-mission-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .65rem; }
.daily-mission {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto auto;
    gap: .5rem .65rem;
    min-height: 190px;
    border: 1px solid rgba(255,255,255,.105);
    border-radius: 15px 5px 15px 5px;
    padding: .8rem;
    color: #eff8f1;
    background: linear-gradient(145deg, rgba(255,255,255,.075), rgba(0,0,0,.08));
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.daily-mission:hover { transform: translateY(-3px); border-color: rgba(255,220,130,.36); box-shadow: 0 12px 26px rgba(0,0,0,.19); }
.daily-mission.complete { border-color: rgba(75,208,147,.48); background: linear-gradient(145deg, rgba(44,166,125,.2), rgba(255,255,255,.065)); }
.daily-mission.claimed { opacity: .7; filter: saturate(.7); }
.daily-mission.claimed::after { content: "✓"; position: absolute; right: .6rem; top: .45rem; color: #7ce0aa; font-size: 1.3rem; font-weight: 950; }
.daily-bonus { border-color: rgba(233,186,85,.38); background: linear-gradient(145deg, rgba(233,186,85,.18), rgba(255,255,255,.06)); }
.daily-mission-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px 4px 12px 4px; background: rgba(255,255,255,.1); font-size: 1.45rem; box-shadow: inset 0 1px rgba(255,255,255,.08); }
.daily-mission-copy small { color: #d6bd75; font-size: .56rem; font-weight: 900; text-transform: uppercase; letter-spacing: .07em; }
.daily-mission-copy h3 { margin: .05rem 0; color: #fff7e2; font-size: .95rem; }
.daily-mission-copy p { margin: 0; color: rgba(237,247,240,.62); font-size: .69rem; line-height: 1.35; }
.mission-progress { grid-column: 1/-1; height: 7px; overflow: hidden; border-radius: 99px; background: rgba(0,0,0,.27); box-shadow: inset 0 1px 2px rgba(0,0,0,.25); }
.mission-progress span { display: block; width: var(--mission-progress); height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2ca67d, #88d5a7); box-shadow: 0 0 12px rgba(80,210,150,.45); transition: width .4s ease; }
.bonus-progress span { background: linear-gradient(90deg,#d79c39,#ffe18b); box-shadow: 0 0 12px rgba(255,213,105,.5); }
.mission-progress-label { grid-column: 1/-1; display: flex; align-items: center; justify-content: space-between; gap: .4rem; }
.mission-progress-label > strong { color: #fff2c9; font-size: .72rem; }
.mission-progress-label > span { display: flex; flex-wrap: wrap; justify-content: end; gap: .2rem; }
.daily-mission .cost-item { border-radius: 999px; padding: .12rem .28rem; color: #f9eed1; background: rgba(0,0,0,.2); font-size: .56rem; }
.daily-mission .button { grid-column: 1/-1; min-height: 36px; font-size: .72rem; }
.daily-mission .button.is-claiming { animation: claimButton .65s ease infinite alternate; }
@keyframes claimButton { to { filter: brightness(1.3); transform: scale(.98); } }

.frontier-ui .world-console {
    overflow: hidden;
    border: 1px solid rgba(233,186,85,.35);
    border-radius: 24px 7px 24px 7px;
    background: #10271d;
    box-shadow: 0 28px 70px rgba(0,0,0,.36), inset 0 0 0 1px rgba(255,255,255,.04);
}
.frontier-ui .world-toolbar {
    min-height: 60px;
    background: linear-gradient(90deg, #0b2c25, #194b3b 60%, #3f4828);
    border-bottom-color: rgba(255,218,126,.27);
}
.frontier-ui .map-tool, .frontier-ui .zoom-controls button {
    border-radius: 11px 4px 11px 4px;
    border-color: rgba(255,226,151,.18);
    background: rgba(255,255,255,.055);
}
.frontier-ui .map-tool.active, .frontier-ui .map-tool:hover { color: #fff4d0; border-color: rgba(255,220,128,.45); background: linear-gradient(145deg, rgba(44,166,125,.5), rgba(255,255,255,.08)); }
.map-command-dock {
    display: grid;
    grid-template-columns: repeat(5,minmax(0,1fr));
    gap: 1px;
    border-bottom: 1px solid rgba(255,216,120,.16);
    background: rgba(0,0,0,.25);
}
.map-command-dock > * {
    min-height: 67px;
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: 1fr 1fr;
    align-items: center;
    gap: 0 .55rem;
    border: 0;
    border-right: 1px solid rgba(255,255,255,.065);
    padding: .6rem .75rem;
    color: rgba(244,250,246,.78);
    background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.015));
    text-align: left;
    text-decoration: none;
    transition: background .16s ease, color .16s ease, transform .16s ease;
}
.map-command-dock > *:hover { color: white; text-decoration: none; background: rgba(44,166,125,.17); }
.map-command-dock span { grid-row: 1/3; font-size: 1.45rem; filter: drop-shadow(0 4px 4px rgba(0,0,0,.24)); }
.map-command-dock b { align-self: end; font-size: .74rem; }
.map-command-dock small { align-self: start; color: rgba(255,255,255,.43); font-size: .58rem; }

.frontier-ui .builder-roster { color: #eaf5ec; background: linear-gradient(180deg, #102e26, #0d241e); border-color: rgba(255,216,120,.18); }
.frontier-ui .builder-card { border-color: rgba(255,255,255,.09); color: #f4f7ed; background: rgba(255,255,255,.055); }
.frontier-ui .builder-card small { color: rgba(255,255,255,.49); }
.frontier-ui .builder-card.free, .frontier-ui .builder-card.premium_free { border-color: rgba(75,208,147,.36); background: rgba(44,166,125,.15); }
.frontier-ui .builder-number { color: #ffe096; background: rgba(0,0,0,.2); }

.frontier-ui .world-viewport {
    height: 720px;
    background: linear-gradient(180deg,#91cbb6 0,#7bb697 16%,#456e4e 100%);
    scrollbar-color: rgba(255,221,139,.45) rgba(4,20,14,.4);
}
.frontier-ui .world-map {
    background-color: #6fa661;
    background-image:
        radial-gradient(circle at 22% 24%, rgba(244,255,210,.14), transparent 18rem),
        linear-gradient(135deg, rgba(255,255,255,.045) 25%, transparent 25% 75%, rgba(0,0,0,.025) 75%),
        repeating-linear-gradient(0deg, transparent 0 calc(var(--tile) - 1px), rgba(28,70,45,.1) calc(var(--tile) - 1px) var(--tile)),
        repeating-linear-gradient(90deg, transparent 0 calc(var(--tile) - 1px), rgba(28,70,45,.1) calc(var(--tile) - 1px) var(--tile));
    background-size: auto, 50px 50px, var(--tile) var(--tile), var(--tile) var(--tile);
    box-shadow: inset 0 0 150px rgba(9,43,25,.45), inset 0 0 0 8px rgba(8,42,28,.14);
}
.frontier-ui .world-map::after {
    content: "";
    position: absolute;
    z-index: 95;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(ellipse at center, transparent 55%, rgba(6,30,19,.25) 100%);
    mix-blend-mode: multiply;
}
.world-atmosphere { --parallax-x:0px; --parallax-y:0px; position:absolute; z-index:90; inset:0; overflow:hidden; pointer-events:none; transform:translate(calc(var(--parallax-x) * -1),calc(var(--parallax-y) * -1)); }
.cloud { position:absolute; width:180px; height:54px; border-radius:50%; background:rgba(247,255,244,.26); filter:blur(1px); box-shadow:55px 8px 0 -5px rgba(247,255,244,.23),95px -8px 0 -20px rgba(247,255,244,.2); animation:cloudDrift 38s linear infinite; }
.cloud-one { left:-220px; top:8%; }
.cloud-two { left:20%; top:36%; transform:scale(.7); animation-duration:52s; animation-delay:-20s; opacity:.6; }
.cloud-three { left:55%; top:15%; transform:scale(1.2); animation-duration:68s; animation-delay:-35s; opacity:.5; }
@keyframes cloudDrift { to { transform:translateX(1750px); } }
.sun-wash { position:absolute; width:520px; height:520px; right:-120px; top:-190px; border-radius:50%; background:radial-gradient(circle,rgba(255,243,184,.38),rgba(255,221,116,.1) 40%,transparent 70%); animation:sunBreathe 6s ease-in-out infinite; }
@keyframes sunBreathe { 50% { opacity:.65; transform:scale(1.04); } }
.bird-flight { position:absolute; left:15%; top:12%; color:rgba(15,55,40,.45); font-size:1.6rem; letter-spacing:.4rem; animation:birdFlight 17s linear infinite; }
@keyframes birdFlight { 50% { transform:translate(780px,70px) scale(.8); } 100% { transform:translate(1500px,-20px) scale(.55); opacity:.15; } }

.frontier-ui .terrain-road {
    background:
        linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent),
        repeating-linear-gradient(100deg,#b79861 0 22px,#c8aa72 22px 44px);
    border-color: rgba(74,57,31,.16);
    box-shadow: inset 0 0 0 2px rgba(255,255,255,.12), inset 0 6px 12px rgba(0,0,0,.08), 0 8px 12px rgba(25,54,30,.12);
}
.frontier-ui .build-plot { border-color: rgba(255,238,167,.08); background: rgba(255,255,255,.012); }
.frontier-ui .build-plot > span { color: rgba(255,248,215,.68); background: rgba(9,43,31,.64); backdrop-filter: blur(4px); }

.frontier-ui .world-building { transform-origin: 50% 80%; }
.frontier-ui .world-building:hover, .frontier-ui .world-building.selected { transform: translateY(-7px) scale(1.025); filter: brightness(1.09) saturate(1.13); }
.frontier-ui .world-building.is-activated .building-sprite { animation: buildingActivate .36s cubic-bezier(.2,.85,.3,1.3); }
@keyframes buildingActivate { 50% { transform:translateY(-10px) scale(1.08); } }
.frontier-ui .world-building.selected::after { inset: 1px; border: 2px solid #ffe38c; border-radius: 50%; box-shadow: 0 0 0 5px rgba(255,227,140,.18), 0 0 30px rgba(255,220,100,.55); }
.building-aura { position:absolute; inset:12% 5% 8%; border-radius:50%; background:radial-gradient(ellipse,rgba(255,231,158,.16),transparent 65%); opacity:0; transition:opacity .18s ease; }
.world-building:hover .building-aura,.world-building.selected .building-aura { opacity:1; }
.building-foundation { position:absolute; left:7%; right:7%; bottom:6%; height:28%; border-radius:50%; border:2px solid rgba(255,255,255,.13); background:linear-gradient(180deg,#82966b,#556f4a); box-shadow:inset 0 5px 0 rgba(255,255,255,.1),0 10px 12px rgba(19,44,24,.2); transform:skewX(-7deg); }
.frontier-ui .building-shadow { bottom:7%; background:rgba(7,30,19,.36); filter:blur(5px); }
.frontier-ui .building-sprite { transform:translateY(-8px); filter:drop-shadow(0 12px 7px rgba(14,36,20,.32)); }
.frontier-ui .building-face { border-color:rgba(55,45,29,.35); box-shadow:inset -12px -12px 0 rgba(59,37,18,.09),inset 4px 4px rgba(255,255,255,.14); }
.frontier-ui .building-roof { box-shadow:inset 0 -8px 0 rgba(49,24,16,.19),inset 5px 5px rgba(255,255,255,.1); }
.frontier-ui .building-icon { filter:drop-shadow(0 3px 1px rgba(255,255,255,.45)) drop-shadow(0 7px 5px rgba(0,0,0,.18)); }
.building-level-ring { position:absolute; z-index:6; right:7%; top:8%; display:flex; gap:2px; border:1px solid rgba(255,230,159,.3); border-radius:999px; padding:3px 4px; background:rgba(7,30,22,.6); backdrop-filter:blur(4px); }
.building-level-ring i { width:4px; height:4px; border-radius:50%; background:#ffd875; box-shadow:0 0 5px rgba(255,216,117,.8); }
.frontier-ui .building-caption { left:8%; right:8%; bottom:-2px; border-color:rgba(255,225,145,.25); border-radius:9px 3px 9px 3px; color:#f9f2dc; background:linear-gradient(90deg,rgba(7,39,27,.91),rgba(18,70,49,.9)); box-shadow:0 6px 12px rgba(0,0,0,.22); }
.frontier-ui .building-caption b { color:#ffdb7d; }
.building-sparks { position:absolute; z-index:7; right:13%; top:45%; color:#ffd65f; text-shadow:-12px 8px #fff1a6,8px -9px #ffb84d; animation:sparkBlink 1.3s steps(2) infinite; }
@keyframes sparkBlink { 50% { opacity:.25; transform:scale(.65) rotate(30deg); } }
.water-ripple { position:absolute; z-index:1; left:15%; right:15%; bottom:0; height:24%; border:2px solid rgba(96,218,255,.55); border-radius:50%; animation:waterPulse 2s ease-out infinite; }
@keyframes waterPulse { to { transform:scale(1.45); opacity:0; } }
.crop-wave { position:absolute; z-index:6; inset:auto 0 8%; color:#ffe47e; font-size:2rem; letter-spacing:.18rem; animation:cropWave 1.8s ease-in-out infinite; }
@keyframes cropWave { 50% { transform:skewX(-12deg) translateX(4px); } }
.frontier-ui .chimney-smoke { animation:frontierSmoke 3s ease-in-out infinite; }
@keyframes frontierSmoke { 50% { transform:translate(6px,-16px) scale(1.45); opacity:.25; } }

.frontier-ui .construction-overlay {
    inset: 5%;
    border-color: rgba(255,220,120,.62);
    color: #f7e8bf;
    background: linear-gradient(145deg, rgba(22,54,42,.91), rgba(105,79,32,.88));
    backdrop-filter: blur(5px);
    box-shadow: inset 0 0 25px rgba(255,223,139,.08),0 10px 20px rgba(0,0,0,.24);
}
.frontier-ui .queue-overlay { background: linear-gradient(145deg,rgba(25,43,57,.92),rgba(47,74,68,.9)); }
.frontier-ui .resource-node { border:1px solid rgba(255,239,188,.16); box-shadow:inset 0 0 0 5px rgba(22,55,36,.2),0 12px 17px rgba(18,45,27,.28); }
.frontier-ui .resource-node small { color:#f8efd9; background:rgba(7,37,27,.75); }
.frontier-ui .world-character { border:1px solid rgba(255,255,255,.24); background:rgba(255,248,220,.72); box-shadow:0 7px 10px rgba(17,47,27,.24); animation:characterBob 1.1s ease-in-out infinite alternate; }
@keyframes characterBob { to { margin-top:-3px; } }

.frontier-ui .world-inspector {
    color:#eff7f0;
    border-left-color:rgba(255,219,126,.18);
    background:linear-gradient(180deg,#102f27,#0c241e);
    box-shadow:-14px 0 32px rgba(0,0,0,.24);
}
.frontier-ui .inspector-empty h2,.frontier-ui .inspector-title h2 { color:#fff6dd; }
.frontier-ui .inspector-empty p,.frontier-ui .inspector-building>p { color:rgba(235,246,239,.59); }
.frontier-ui .inspector-title { border-bottom-color:rgba(255,255,255,.1); }
.frontier-ui .inspector-title>span { border:1px solid rgba(255,220,132,.27); background:rgba(255,255,255,.08); }
.frontier-ui .inspector-title small { color:#e5be63; }
.frontier-ui .inspector-level,.frontier-ui .special-action-card { color:#eef6ef; border-color:rgba(255,255,255,.1); background:rgba(255,255,255,.055); }
.frontier-ui .inspector-timer { color:#fff0bd; background:rgba(216,162,58,.16); }
.frontier-ui .special-action-card p { color:rgba(235,246,239,.56); }
.frontier-ui .button.secondary { color:#eaf7ef; border-color:rgba(99,205,157,.3); background:rgba(44,166,125,.14); }
.frontier-ui .button.ghost { color:#ecf4ee; border-color:rgba(255,255,255,.17); }

.frontier-ui .panel,.frontier-ui .game-card,.frontier-ui .stat-card {
    border-color:rgba(233,186,85,.18);
    background:linear-gradient(145deg,#fffaf0,#eee6d3);
    box-shadow:0 16px 38px rgba(0,0,0,.15);
}
.frontier-ui .page-heading h1 { color:#fff8e9; }
.frontier-ui .page-heading p { color:rgba(237,246,240,.62); }
.frontier-ui .page-heading .eyebrow { color:#e8bc5e !important; }

.reward-particle {
    position:fixed;
    z-index:10000;
    pointer-events:none;
    font-size:1.3rem;
    filter:drop-shadow(0 4px 5px rgba(0,0,0,.35));
    animation:rewardBurst .95s cubic-bezier(.1,.7,.2,1) forwards;
}
@keyframes rewardBurst {
    from { transform:translate(-50%,-50%) scale(.35) rotate(0); opacity:0; }
    18% { opacity:1; }
    to { transform:translate(calc(-50% + var(--burst-x)),calc(-50% + var(--burst-y))) scale(1.15) rotate(var(--burst-r)); opacity:0; }
}

/* Landing: eigene Frontier-Identität */
.landing-page {
    background:
        radial-gradient(circle at 72% 16%,rgba(255,213,108,.18),transparent 26rem),
        radial-gradient(circle at 14% 78%,rgba(44,166,125,.22),transparent 35rem),
        linear-gradient(130deg,#061813 0,#123a2d 55%,#5c4b24 100%);
}
.landing-page .hero-panel h1 { color:#fff5da; text-shadow:0 12px 38px rgba(0,0,0,.28); }
.landing-page .feature-row span { border-color:rgba(255,220,132,.22); background:rgba(255,255,255,.065); backdrop-filter:blur(8px); }
.landing-page .auth-card { border-color:rgba(255,223,143,.38); border-radius:28px 8px 28px 8px; background:linear-gradient(145deg,rgba(255,251,239,.98),rgba(237,228,205,.98)); }

@media (prefers-reduced-motion: reduce) {
    .cloud,.bird-flight,.sun-wash,.world-character,.wind-blades,.chimney-smoke,.building-sparks,.water-ripple,.crop-wave { animation:none !important; }
    .frontier-ui * { scroll-behavior:auto !important; }
}
@media (max-width: 1250px) {
    .daily-mission-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .frontier-command-panel { min-width:235px; }
    .frontier-ui .topbar-meta .season-badge,.frontier-ui .topbar-meta .farm-name { display:none; }
}
@media (max-width: 980px) {
    .frontier-ui .app-shell { grid-template-columns:78px minmax(0,1fr); }
    .frontier-ui .sidebar { padding:.8rem .45rem; }
    .frontier-ui .nav-link { justify-content:center; padding:.72rem .4rem; font-size:0; }
    .frontier-ui .nav-link span { width:auto; font-size:1.35rem; }
    .frontier-map-heading { display:grid; grid-template-columns:1fr; }
    .frontier-command-panel { width:100%; grid-template-columns:auto 1fr; align-items:center; }
    .frontier-command-panel>small,.frontier-command-panel>strong { grid-column:1; }
    .command-panel-metrics { grid-column:2; grid-row:1/3; }
    .map-command-dock { grid-template-columns:repeat(5,150px); overflow-x:auto; }
}
@media (max-width: 720px) {
    body.frontier-ui { padding-bottom:74px; }
    .frontier-ui .topbar { min-height:62px; }
    .frontier-brand small,.frontier-ui .command-power,.frontier-ui .daily-command-link { display:none; }
    .frontier-ui .resource-bar { top:calc(62px + var(--safe-top)); padding:4px; }
    .frontier-ui .resource-chip { flex-basis:104px; min-height:48px; }
    .frontier-ui .app-shell { display:block; }
    .frontier-ui .sidebar {
        position:fixed;
        z-index:1500;
        left:0; right:0; bottom:0;
        display:flex;
        gap:2px;
        overflow-x:auto;
        padding:5px max(5px,var(--safe-right)) calc(5px + var(--safe-bottom)) max(5px,var(--safe-left));
        border-top:1px solid rgba(255,220,132,.22);
        border-right:0;
        background:rgba(5,24,19,.96);
        backdrop-filter:blur(15px);
    }
    .frontier-ui .nav-link { flex:0 0 62px; min-height:52px; margin:0; border-radius:10px; }
    .frontier-ui .nav-link.active { box-shadow:inset 0 3px #ffd978; }
    .frontier-ui .content { padding:.75rem; }
    .frontier-map-heading { border-radius:18px 5px 18px 5px; padding:1rem; }
    .frontier-map-heading h1 { font-size:2.15rem; }
    .frontier-heading-actions .button { flex:1; min-width:130px; }
    .frontier-command-panel { display:block; }
    .command-panel-metrics { margin-top:.5rem; }
    .daily-operations { padding:.75rem; }
    .daily-operations-head { align-items:flex-start; }
    .daily-mission-grid { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:.25rem; }
    .daily-mission { flex:0 0 min(82vw,290px); scroll-snap-align:start; }
    .map-command-dock { grid-template-columns:repeat(5,135px); }
    .frontier-ui .world-viewport { height:62vh; min-height:510px; }
    .frontier-ui .world-grid-layout { min-height:0; }
}

/* Greenforge-Weltkarte und übrige Spielseiten */
.frontier-ui .global-world-shell {
    overflow: hidden;
    border: 1px solid rgba(233,186,85,.3);
    border-radius: 22px 7px 22px 7px;
    background: #0c2921;
    box-shadow: 0 26px 65px rgba(0,0,0,.32);
}
.frontier-ui .global-world-toolbar {
    color: #edf7ef;
    border-bottom-color: rgba(255,220,132,.2);
    background: linear-gradient(90deg,#0b2b24,#18483a 65%,#49482a);
}
.frontier-ui .global-world-viewport {
    background:
        radial-gradient(circle at 22% 18%,rgba(180,231,204,.2),transparent 20rem),
        linear-gradient(180deg,#6d9c7a,#3e6a54 55%,#294d3d);
}
.frontier-ui .global-world-map {
    box-shadow: inset 0 0 150px rgba(4,29,18,.55);
    filter: saturate(1.08) contrast(1.03);
}
.frontier-ui .world-farm-marker,.frontier-ui .world-pest-marker {
    border-color: rgba(255,229,158,.3);
    border-radius: 16px 5px 16px 5px;
    color: #f8f4df;
    background: linear-gradient(145deg,rgba(8,42,32,.92),rgba(25,78,59,.9));
    box-shadow: 0 12px 24px rgba(0,0,0,.28),inset 0 1px rgba(255,255,255,.08);
}
.frontier-ui .world-farm-marker:hover,.frontier-ui .world-farm-marker.selected,
.frontier-ui .world-pest-marker:hover,.frontier-ui .world-pest-marker.selected {
    border-color: #ffdc7b;
    box-shadow: 0 0 0 4px rgba(255,220,123,.15),0 18px 34px rgba(0,0,0,.32);
    transform: translateY(-5px) scale(1.035);
}
.frontier-ui .world-pest-marker { background: linear-gradient(145deg,rgba(65,31,27,.94),rgba(117,57,38,.9)); }
.frontier-ui .world-action-panel {
    color: #edf6ef;
    border-left-color: rgba(255,220,132,.17);
    background: linear-gradient(180deg,#102f27,#0b221c);
}
.frontier-ui .world-action-empty { color: rgba(235,246,239,.58); }
.frontier-ui .world-action-empty h2,.frontier-ui .world-target-head h2 { color: #fff4d4; }
.frontier-ui .world-target-head { border-bottom-color: rgba(255,255,255,.1); }
.frontier-ui .world-target-head small { color: rgba(235,246,239,.55); }
.frontier-ui .world-info-card,.frontier-ui .world-shield-card,.frontier-ui .world-lock-card,
.frontier-ui .scout-report,.frontier-ui .world-unit-picker {
    color: #edf6ef;
    border-color: rgba(255,255,255,.11);
    background: rgba(255,255,255,.06);
}
.frontier-ui .world-info-card p,.frontier-ui .world-shield-card p,.frontier-ui .world-lock-card p { color: rgba(235,246,239,.57); }
.frontier-ui .scout-report { border-color: rgba(233,186,85,.34); background: linear-gradient(145deg,rgba(117,84,31,.25),rgba(255,255,255,.055)); }
.frontier-ui .report-stats span,.frontier-ui .report-resources span { color: #f5eed8; background: rgba(0,0,0,.2); }
.frontier-ui .world-unit-picker input { color: #f9f6e8; border-color: rgba(255,255,255,.14); background: rgba(0,0,0,.2); }
.frontier-ui .battle-resolution { color: #edf6ef; border-color: rgba(255,255,255,.15); background: linear-gradient(145deg,#13372d,#0c251e); }
.frontier-ui .battle-resolution.victory { border-color: rgba(82,211,146,.55); background: linear-gradient(145deg,#174f3a,#102d25); }
.frontier-ui .battle-resolution.defeat { border-color: rgba(226,101,83,.55); background: linear-gradient(145deg,#4c2624,#291c1a); }
.frontier-ui .world-status-strip span { color:#f5f1df; border-color:rgba(255,220,132,.18); background:rgba(255,255,255,.055); }

.frontier-ui .game-card,.frontier-ui .panel,.frontier-ui .stat-card { transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease; }
.frontier-ui .game-card:hover,.frontier-ui .stat-card:hover { transform:translateY(-3px); border-color:rgba(190,140,48,.35); box-shadow:0 22px 45px rgba(0,0,0,.2); }
.frontier-ui .card-grid .game-card>span,.frontier-ui .stat-card>span { filter:drop-shadow(0 7px 6px rgba(25,47,30,.18)); }
.frontier-ui .queue-item { border-color:rgba(45,75,55,.14); background:rgba(255,255,255,.52); }
.frontier-ui .ranking-table tr:hover td,.frontier-ui table tbody tr:hover td { background:rgba(44,166,125,.08); }
.frontier-ui .content>section,.frontier-ui .content>.alert { animation:frontierPageIn .38s ease both; }
@keyframes frontierPageIn { from { opacity:0; transform:translateY(8px); } }
.frontier-ui .footer { color:rgba(238,247,241,.5); border-top-color:rgba(233,186,85,.14); background:rgba(5,22,17,.65); }

@media (max-width:720px) {
    .frontier-ui .global-world-shell { border-radius:17px 5px 17px 5px; }
    .frontier-ui .world-action-panel { border-left:0; border-top:1px solid rgba(255,220,132,.16); }
}

/* 2.4.1 – Mobile Controls, Stability & Performance */
.network-status {
    position: fixed;
    z-index: 12000;
    left: 50%;
    top: calc(76px + var(--safe-top));
    width: max-content;
    max-width: min(92vw, 620px);
    transform: translateX(-50%);
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 999px;
    padding: .58rem .9rem;
    color: #fff;
    background: rgba(21,92,61,.96);
    box-shadow: 0 12px 35px rgba(0,0,0,.3);
    font-size: .78rem;
    font-weight: 850;
    text-align: center;
}
.network-status.offline { background: rgba(145,55,43,.97); }
.network-status[hidden] { display: none; }
form[aria-busy="true"] { cursor: progress; }
form[aria-busy="true"] button[type="submit"] { cursor: progress; }

.map-gesture-toggle { display: none; }
.world-viewport,
.global-world-viewport,
.world-map,
.global-world-map { contain: layout paint style; }
.resource-chip,
.world-building,
.world-farm-marker,
.world-pest-marker { contain: layout paint; }
.frontier-ui .daily-operations,
.frontier-ui .map-bottom-grid,
.frontier-ui main.content > .panel,
.frontier-ui main.content > .card-grid {
    content-visibility: auto;
    contain-intrinsic-size: 1px 420px;
}
.page-hidden .cloud,
.page-hidden .bird-flight,
.page-hidden .sun-wash,
.page-hidden .wind-blades,
.page-hidden .chimney-smoke,
.page-hidden .building-sparks,
.page-hidden .water-ripple,
.page-hidden .crop-wave,
.page-hidden .construction-overlay > span,
.page-hidden .resource-node.node-gold { animation-play-state: paused !important; }
.performance-lite .cloud-two,
.performance-lite .cloud-three,
.performance-lite .bird-flight,
.performance-lite .sun-wash { display: none !important; }
.performance-lite .world-map::after,
.performance-lite .global-world-map { filter: none; mix-blend-mode: normal; }
.performance-lite .frontier-ui .topbar,
.performance-lite .frontier-ui .sidebar,
.performance-lite .build-drawer,
.performance-lite .construction-center-backdrop,
.performance-lite .pwa-modal { backdrop-filter: none !important; }
.performance-lite .frontier-ui .game-card,
.performance-lite .frontier-ui .panel,
.performance-lite .frontier-ui .stat-card,
.performance-lite .world-building { box-shadow: 0 8px 20px rgba(0,0,0,.13); }

@media (hover: none) {
    .frontier-ui .game-card:hover,
    .frontier-ui .stat-card:hover,
    .world-farm-marker:hover,
    .world-pest-marker:hover,
    .build-option:hover,
    .button:hover { transform: none; }
}

@media (pointer: coarse) {
    .map-gesture-toggle { display: inline-flex; }
    .world-viewport:not(.gesture-captured),
    .global-world-viewport:not(.gesture-captured) { touch-action: pan-y; cursor: default; }
    .world-viewport.gesture-captured,
    .global-world-viewport.gesture-captured { touch-action: none; cursor: grabbing; }
}

@media (max-width: 900px) {
    .frontier-ui .sidebar {
        scroll-snap-type: x proximity;
        overscroll-behavior-x: contain;
        scrollbar-width: none;
    }
    .frontier-ui .sidebar::-webkit-scrollbar { display: none; }
    .frontier-ui .nav-link { scroll-snap-align: center; }
    .construction-center-dialog { max-height: calc(100dvh - 1rem); }
}

@media (max-width: 720px) {
    body.frontier-ui { padding-bottom: calc(84px + var(--safe-bottom)); }
    .frontier-ui .topbar {
        position: sticky;
        top: 0;
        min-height: 58px;
        flex-wrap: nowrap;
        padding: calc(.45rem + var(--safe-top)) max(.55rem,var(--safe-right)) .45rem max(.55rem,var(--safe-left));
    }
    .frontier-ui .frontier-brand { flex: 0 1 auto; min-width: 0; }
    .frontier-ui .frontier-brand strong { display:block; overflow:hidden; max-width: 42vw; text-overflow:ellipsis; white-space:nowrap; }
    .frontier-ui .topbar-meta { flex: 1 1 auto; min-width: 0; margin-left: auto; }
    .frontier-ui .topbar-meta > * { flex: 0 0 auto; }
    .frontier-ui .sound-toggle,
    .frontier-ui .topbar-meta form .text-button { min-width: 44px; min-height: 44px; border-radius: 11px; }
    .frontier-ui .topbar-meta form .text-button { font-size: 0; text-decoration: none; }
    .frontier-ui .topbar-meta form .text-button::before { content: "↪"; font-size: 1.25rem; }
    .frontier-ui .resource-bar { top: calc(58px + var(--safe-top)); scrollbar-width:none; }
    .frontier-ui .resource-bar::-webkit-scrollbar { display:none; }
    .frontier-ui .sidebar { min-height: calc(66px + var(--safe-bottom)); }
    .frontier-ui .nav-link {
        flex-basis: 68px;
        min-height: 58px;
        display: grid;
        grid-template-rows: 26px auto;
        place-items: center;
        gap: 0;
        font-size: .58rem;
        line-height: 1.05;
    }
    .frontier-ui .nav-link span { display:block; font-size:1.25rem; line-height:1; }
    .frontier-ui .nav-link.active { box-shadow: inset 0 3px #ffd978, 0 0 0 1px rgba(255,217,120,.16); }
    .frontier-ui .content { padding-bottom: calc(92px + var(--safe-bottom)); }
    .frontier-ui .world-toolbar,
    .frontier-ui .global-world-toolbar { scroll-snap-type:x proximity; }
    .frontier-ui .world-toolbar > *,
    .frontier-ui .global-world-toolbar > * { scroll-snap-align:start; }
    .frontier-ui .world-viewport {
        height: clamp(360px, calc(100dvh - 235px - var(--safe-top) - var(--safe-bottom)), 600px);
        min-height: 360px;
    }
    .global-world-shell { grid-template-rows:auto minmax(380px, 58dvh) auto; }
    .global-world-viewport { min-height: 380px; }
    .network-status { top:auto; bottom:calc(78px + var(--safe-bottom)); border-radius:14px; }
    .game-toast { bottom:calc(82px + var(--safe-bottom)); }
    .construction-center { padding:max(.25rem,var(--safe-top)) max(.25rem,var(--safe-right)) max(.25rem,var(--safe-bottom)) max(.25rem,var(--safe-left)); }
    .construction-center-dialog { max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - .5rem); }
}

@media (max-width: 420px) {
    .frontier-ui .frontier-brand strong { max-width: 34vw; font-size:.82rem; }
    .frontier-ui .topbar-meta { gap:.35rem; }
    .frontier-ui .pwa-install-button,
    .frontier-ui .admin-console-launch { max-width:44px; overflow:hidden; padding:.4rem; white-space:nowrap; }
    .frontier-ui .resource-chip { flex-basis:96px; }
    .frontier-ui .nav-link { flex-basis:64px; }
    .frontier-ui .world-viewport { min-height:330px; }
    .daily-mission { flex-basis:min(88vw,290px); }
}

@media (max-height: 520px) and (orientation: landscape) and (max-width: 950px) {
    .frontier-ui .topbar { position: static; }
    .frontier-ui .resource-bar { top:0; }
    .frontier-ui .world-viewport { height:72dvh; min-height:280px; }
    .global-world-shell { grid-template-rows:auto minmax(300px,72dvh) auto; }
}

/* 2.4.1 follow-up: reliable hidden states and tablet navigation */
[hidden] { display: none !important; }
@media (max-width: 900px) {
    .frontier-ui .world-console { margin-left: -.7rem; margin-right: -.7rem; }
    .frontier-ui .nav-link {
        display: grid;
        grid-template-rows: 26px auto;
        place-items: center;
        gap: 0;
        font-size: .6rem;
        line-height: 1.05;
    }
    .frontier-ui .nav-link span { display:block; width:auto; font-size:1.25rem; line-height:1; }
}
@media (max-width: 720px) {
    .frontier-ui .world-console { margin-left: -.75rem; margin-right: -.75rem; }
}
@media (max-width: 420px) {
    .frontier-ui .pwa-install-button,
    .frontier-ui .admin-console-launch { font-size:0; }
    .frontier-ui .pwa-install-button::before { content:"📱"; font-size:1.1rem; }
    .frontier-ui .admin-console-launch::before { content:"🛠️"; font-size:1.1rem; }
    .frontier-ui .admin-console-launch kbd { display:none; }
}
/* Fixed overlays inside the map must remain viewport-bound. */
.frontier-ui .content > .world-console { animation: none; transform: none; }

/* 2.4.2 – Bau-Button-Hotfix */
.build-drawer { pointer-events: none; }
.build-drawer.open { pointer-events: auto; }
.build-drawer[hidden] { display: none !important; }
.map-build-selection { position: relative; z-index: 260; pointer-events: auto; isolation: isolate; }
.map-build-selection button,
.map-build-selection select,
.map-build-selection label { pointer-events: auto; }
.confirm-build[data-needs-builder-refresh="1"] { opacity: .78; }
@media (max-width: 900px) {
    .map-build-selection { z-index: 1260; }
}

/* 2.5.0 – Frontier Pulse: MMO-Live-Lage, Weltaktivität und Gefechtsinszenierung */
.frontier-event-link {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    border: 1px solid rgba(255, 211, 105, .32);
    background: linear-gradient(135deg, rgba(112, 78, 24, .72), rgba(29, 73, 58, .78));
    box-shadow: inset 0 1px rgba(255,255,255,.12), 0 8px 22px rgba(0,0,0,.18);
}
.frontier-event-link span { font-weight: 900; color: #ffe59f; }
.online-commanders,
.world-online-status {
    display: inline-flex;
    align-items: center;
    gap: .32rem;
    color: #c8dfd4;
    font-size: .72rem;
    font-weight: 750;
    white-space: nowrap;
}
.online-commanders i,
.world-online-status i,
.live-indicator i {
    width: .55rem;
    height: .55rem;
    border-radius: 50%;
    background: #55e7a1;
    box-shadow: 0 0 0 4px rgba(85,231,161,.12), 0 0 13px rgba(85,231,161,.8);
    animation: frontierLivePulse 1.65s ease-in-out infinite;
}
.button.event {
    color: #fff2bd;
    border-color: rgba(255,215,111,.42);
    background: linear-gradient(145deg, rgba(101,67,19,.9), rgba(31,91,68,.92));
}

.frontier-live-event {
    --event-accent: #ffcb68;
    --event-accent-soft: rgba(255,203,104,.18);
    position: relative;
    isolation: isolate;
    overflow: hidden;
    margin: 1rem 0;
    border: 1px solid color-mix(in srgb, var(--event-accent) 52%, transparent);
    border-radius: 24px;
    padding: 1rem;
    color: #edf8f2;
    background:
        radial-gradient(circle at 10% 0%, var(--event-accent-soft), transparent 33%),
        radial-gradient(circle at 92% 105%, rgba(68,181,132,.16), transparent 36%),
        linear-gradient(150deg, rgba(17,50,40,.98), rgba(7,25,21,.98));
    box-shadow: 0 24px 58px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.08);
}
.frontier-live-event.accent-red { --event-accent:#f47763; --event-accent-soft:rgba(244,119,99,.2); }
.frontier-live-event.accent-cyan { --event-accent:#62d9df; --event-accent-soft:rgba(98,217,223,.18); }
.frontier-event-glow {
    position: absolute;
    z-index: -1;
    width: 300px;
    height: 300px;
    right: -90px;
    top: -150px;
    border-radius: 50%;
    background: radial-gradient(circle, var(--event-accent-soft), transparent 68%);
    filter: blur(7px);
    animation: eventGlowDrift 5.5s ease-in-out infinite alternate;
}
.frontier-event-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: .25rem .25rem .9rem;
    border-bottom: 1px solid rgba(255,255,255,.1);
}
.frontier-event-identity { display:flex; gap:.85rem; min-width:0; }
.frontier-event-icon {
    display:grid;
    place-items:center;
    flex:0 0 68px;
    width:68px;
    height:68px;
    border-radius:20px;
    font-size:2.15rem;
    color:#071b17;
    background: linear-gradient(145deg, #fff2c3, var(--event-accent));
    box-shadow: 0 0 0 5px var(--event-accent-soft), 0 14px 30px rgba(0,0,0,.28);
    animation: eventIconFloat 2.8s ease-in-out infinite;
}
.frontier-event-identity h2 { margin:.08rem 0 .18rem; font-size:clamp(1.25rem,2vw,1.8rem); }
.frontier-event-identity p { margin:.25rem 0 0; max-width:760px; color:#bdd1c8; }
.frontier-event-identity .event-subtitle { display:block; color:var(--event-accent); font-size:.82rem; letter-spacing:.02em; }
.frontier-event-clock {
    flex:0 0 auto;
    min-width:150px;
    padding:.65rem .75rem;
    border-radius:16px;
    text-align:right;
    background:rgba(0,0,0,.2);
    border:1px solid rgba(255,255,255,.09);
}
.frontier-event-clock small,.frontier-event-clock span { display:block; color:#9eb7ad; font-size:.65rem; }
.frontier-event-clock time { display:block; color:var(--event-accent); font-size:1.35rem; font-weight:950; font-variant-numeric:tabular-nums; }
.frontier-event-grid { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(250px,.85fr); gap:1rem; padding-top:1rem; }
.frontier-event-progress-card,.frontier-pulse-panel {
    border:1px solid rgba(255,255,255,.09);
    border-radius:19px;
    background:rgba(1,15,12,.3);
    box-shadow: inset 0 1px rgba(255,255,255,.04);
}
.frontier-event-progress-card { padding:.9rem; }
.event-progress-heading { display:flex; justify-content:space-between; align-items:end; gap:.7rem; }
.event-progress-heading span { display:grid; }
.event-progress-heading small { color:#91aa9f; font-size:.67rem; text-transform:uppercase; letter-spacing:.08em; }
.event-progress-heading strong { font-size:.92rem; }
.event-progress-heading > b { color:var(--event-accent); font-size:.82rem; }
.event-progress-heading.personal { margin-top:.85rem; }
.event-progress-track {
    position:relative;
    height:13px;
    margin-top:.42rem;
    overflow:hidden;
    border-radius:999px;
    background:rgba(0,0,0,.34);
    box-shadow:inset 0 2px 5px rgba(0,0,0,.35),0 1px rgba(255,255,255,.06);
}
.event-progress-track::after {
    content:"";
    position:absolute;
    inset:0;
    opacity:.18;
    background:repeating-linear-gradient(115deg,transparent 0 10px,rgba(255,255,255,.3) 10px 14px);
}
.event-progress-track > span {
    display:block;
    width:var(--event-progress,0%);
    height:100%;
    border-radius:inherit;
    background:linear-gradient(90deg,color-mix(in srgb,var(--event-accent) 70%,#258a62),var(--event-accent),#fff0ae);
    box-shadow:0 0 16px var(--event-accent-soft);
    transition:width .65s cubic-bezier(.2,.8,.2,1);
}
.event-progress-track.personal > span { background:linear-gradient(90deg,#38a875,#6ddaa6,#d8ffd9); }
.frontier-milestones { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; margin-top:1rem; }
.frontier-milestone {
    position:relative;
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:center;
    gap:.65rem;
    min-height:80px;
    padding:.62rem;
    border:1px solid rgba(255,255,255,.08);
    border-radius:15px;
    color:#9cb2a8;
    background:rgba(2,19,15,.45);
    transition:transform .18s,border-color .18s,background .18s;
}
.frontier-milestone.unlocked { color:#eaf8f0; border-color:color-mix(in srgb,var(--event-accent) 45%,transparent); background:linear-gradient(140deg,var(--event-accent-soft),rgba(2,19,15,.48)); }
.frontier-milestone.unlocked:not(.claimed) { animation:milestoneReady 2.1s ease-in-out infinite; }
.frontier-milestone.claimed { opacity:.68; }
.frontier-milestone.global { grid-column:1/-1; background:linear-gradient(135deg,rgba(38,104,80,.55),rgba(108,75,23,.4)); }
.milestone-sigil {
    display:grid;
    place-items:center;
    width:42px;
    height:42px;
    border-radius:13px;
    color:#071b17;
    font-weight:1000;
    background:linear-gradient(145deg,#f6edd1,var(--event-accent));
    box-shadow:0 7px 16px rgba(0,0,0,.22);
}
.frontier-milestone > div { display:grid; min-width:0; gap:.1rem; }
.frontier-milestone > div > small { font-size:.62rem; color:#8ca69b; text-transform:uppercase; letter-spacing:.06em; }
.frontier-milestone > div > strong { font-size:.82rem; }
.frontier-milestone .cost-item { font-size:.62rem; padding:.12rem .22rem; }
.frontier-milestone .button { min-width:82px; padding:.45rem .62rem; font-size:.7rem; }
.frontier-pulse-panel { overflow:hidden; }
.frontier-pulse-panel > header { display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.75rem .8rem; border-bottom:1px solid rgba(255,255,255,.08); }
.frontier-pulse-panel h3 { margin:.05rem 0 0; }
.live-indicator { display:flex; align-items:center; gap:.35rem; color:#69e8aa; font-size:.65rem; font-weight:950; letter-spacing:.1em; }
.frontier-pulse-list { max-height:350px; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; }
.frontier-pulse-item {
    display:grid;
    grid-template-columns:35px minmax(0,1fr);
    gap:.55rem;
    padding:.65rem .75rem;
    border-bottom:1px solid rgba(255,255,255,.055);
    transition:background .18s,transform .18s;
}
.frontier-pulse-item:hover { background:rgba(255,255,255,.035); }
.frontier-pulse-item.is-new { animation:pulseEntry .7s ease-out; }
.frontier-pulse-item > span { display:grid; place-items:center; width:34px; height:34px; border-radius:11px; font-size:1.05rem; background:rgba(255,255,255,.06); }
.frontier-pulse-item div { min-width:0; }
.frontier-pulse-item strong { font-size:.75rem; color:#e4f4eb; }
.frontier-pulse-item p { margin:.1rem 0; color:#a9c0b5; font-size:.68rem; line-height:1.35; }
.frontier-pulse-item time { color:#6f8e81; font-size:.6rem; }
.frontier-pulse-item.kind-combat > span { background:rgba(226,89,74,.14); }
.frontier-pulse-item.kind-construction > span { background:rgba(255,202,91,.13); }
.frontier-pulse-item.kind-social > span { background:rgba(99,182,237,.13); }
.frontier-pulse-item.kind-event > span { background:rgba(97,232,177,.13); }
.frontier-pulse-empty { padding:1.2rem; color:#829d90; text-align:center; font-size:.75rem; }

.world-event-ribbon {
    --event-accent:#ffcb68;
    display:grid;
    grid-template-columns:auto minmax(220px,1fr) minmax(180px,.7fr) auto auto;
    align-items:center;
    gap:.8rem;
    margin:0 0 .8rem;
    padding:.7rem .8rem;
    border:1px solid color-mix(in srgb,var(--event-accent) 45%,transparent);
    border-radius:18px;
    color:#e8f5ed;
    background:linear-gradient(135deg,rgba(16,52,41,.98),rgba(7,27,23,.97));
    box-shadow:0 13px 30px rgba(0,0,0,.19),inset 0 1px rgba(255,255,255,.06);
}
.world-event-ribbon.accent-red { --event-accent:#f47763; }
.world-event-ribbon.accent-cyan { --event-accent:#62d9df; }
.world-event-ribbon-icon { display:grid; place-items:center; width:46px; height:46px; border-radius:14px; font-size:1.45rem; background:linear-gradient(145deg,#fff3c7,var(--event-accent)); box-shadow:0 8px 20px rgba(0,0,0,.25); }
.world-event-ribbon > div:nth-child(2) { display:grid; gap:.08rem; }
.world-event-ribbon > div:nth-child(2) strong { color:var(--event-accent); }
.world-event-ribbon > div:nth-child(2) small { color:#9bb3a8; }
.world-event-ribbon-progress { display:grid; gap:.25rem; }
.world-event-ribbon-progress > span { height:9px; overflow:hidden; border-radius:99px; background:rgba(0,0,0,.35); }
.world-event-ribbon-progress i { display:block; width:var(--event-progress,0%); height:100%; border-radius:inherit; background:linear-gradient(90deg,#4ab384,var(--event-accent)); }
.world-event-ribbon-progress b { font-size:.68rem; color:#a9c0b5; text-align:right; }
.world-event-ribbon > time { min-width:72px; color:var(--event-accent); font-weight:900; font-variant-numeric:tabular-nums; }

.world-farm-marker.is-online { box-shadow:0 0 0 3px rgba(83,229,160,.28),0 12px 26px rgba(0,0,0,.3); }
.marker-online {
    position:absolute;
    left:-5px;
    top:-5px;
    width:12px;
    height:12px;
    border:2px solid #102b22;
    border-radius:50%;
    background:#56e5a1;
    box-shadow:0 0 10px #56e5a1;
    animation:frontierLivePulse 1.5s ease-in-out infinite;
}
.online-text { color:#50d99a; font-weight:900; }
.world-march-route {
    position:absolute;
    z-index:3;
    height:3px;
    transform-origin:left center;
    pointer-events:none;
}
.world-march-route i {
    position:absolute;
    inset:-1px 0;
    border-radius:99px;
    background:repeating-linear-gradient(90deg,#ffe69a 0 12px,rgba(255,230,154,.15) 12px 22px);
    box-shadow:0 0 9px rgba(255,221,120,.72);
    animation:marchRoute 1.05s linear infinite;
}
.world-march-route span {
    position:absolute;
    right:-8px;
    top:50%;
    transform:translateY(-50%);
    color:#ffe497;
    font-size:1.15rem;
    filter:drop-shadow(0 0 7px rgba(255,220,105,.85));
}

.battle-cinematic {
    position:fixed;
    z-index:4000;
    inset:0;
    display:grid;
    place-items:center;
    padding:max(1rem,var(--safe-top)) max(1rem,var(--safe-right)) max(1rem,var(--safe-bottom)) max(1rem,var(--safe-left));
}
.battle-cinematic-backdrop { position:absolute; inset:0; background:rgba(0,8,7,.82); backdrop-filter:blur(12px); animation:cinematicFade .25s ease-out; }
.battle-cinematic-dialog {
    position:relative;
    width:min(720px,100%);
    max-height:calc(100dvh - 2rem);
    overflow:auto;
    border:1px solid rgba(255,255,255,.14);
    border-radius:25px;
    padding:1rem;
    color:#edf8f2;
    background:
      radial-gradient(circle at 50% 25%,rgba(255,197,87,.12),transparent 28%),
      linear-gradient(155deg,#173b30,#071b17 65%,#06120f);
    box-shadow:0 35px 90px rgba(0,0,0,.62),inset 0 1px rgba(255,255,255,.09);
    animation:cinematicRise .35s cubic-bezier(.2,.9,.2,1);
}
.battle-cinematic-dialog header { text-align:center; padding:.2rem 2.4rem .5rem; }
.battle-cinematic-dialog h2 { margin:.1rem 0; font-size:clamp(1.4rem,4vw,2.1rem); }
.battle-cinematic-dialog header p:last-child { margin:.1rem 0; color:#9eb7ad; }
.battle-cinematic-close { position:absolute; z-index:2; right:.7rem; top:.7rem; width:38px; height:38px; border:1px solid rgba(255,255,255,.14); border-radius:12px; color:#fff; background:rgba(0,0,0,.28); font-size:1.35rem; cursor:pointer; }
.battle-horizon {
    position:relative;
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:150px;
    margin:.4rem 0 .8rem;
    padding:1rem 8%;
    overflow:hidden;
    border-radius:18px;
    background:
      linear-gradient(180deg,rgba(45,102,84,.5),rgba(17,53,42,.2) 52%,rgba(43,39,22,.85) 53%),
      repeating-linear-gradient(90deg,transparent 0 70px,rgba(255,255,255,.025) 70px 71px);
    box-shadow:inset 0 -18px 30px rgba(0,0,0,.25);
}
.battle-horizon::after { content:""; position:absolute; left:0; right:0; bottom:22%; height:2px; background:rgba(255,221,132,.2); }
.battle-army { position:relative; z-index:2; display:flex; align-items:end; gap:.15rem; font-size:2.2rem; filter:drop-shadow(0 9px 7px rgba(0,0,0,.45)); }
.battle-army.attacker { animation:armyAdvance 1.05s ease-in-out infinite alternate; }
.battle-army.defender { animation:armyDefend .7s ease-in-out infinite alternate; }
.battle-impact { position:absolute; left:50%; top:49%; z-index:3; transform:translate(-50%,-50%); font-size:2.2rem; opacity:.2; filter:drop-shadow(0 0 15px #ffd06a); }
.battle-cinematic[data-phase="clash"] .battle-impact,
.battle-cinematic.resolved .battle-impact { animation:battleImpact .7s steps(2,end) infinite; opacity:1; }
.battle-phases { display:grid; grid-template-columns:repeat(4,1fr); gap:.35rem; margin:.4rem 0 .8rem; padding:0; list-style:none; }
.battle-phases li { display:grid; place-items:center; gap:.15rem; min-height:52px; border:1px solid rgba(255,255,255,.08); border-radius:13px; color:#698b7d; background:rgba(0,0,0,.2); font-weight:900; transition:.25s; }
.battle-phases li span { font-size:.6rem; text-transform:uppercase; letter-spacing:.06em; }
.battle-phases li.active { color:#fff2bd; border-color:rgba(255,210,104,.5); background:rgba(111,76,24,.42); box-shadow:0 0 18px rgba(255,205,96,.13); }
.battle-phases li.complete { color:#78e0ad; border-color:rgba(85,225,159,.25); }
.battle-power-board { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:.8rem; margin:.5rem 0; }
.battle-power-board > div { display:grid; gap:.15rem; }
.battle-power-board > div:last-child { text-align:right; }
.battle-power-board small { color:#91aa9f; }
.battle-power-board strong { font-size:1.4rem; }
.battle-power-board > b { color:#ffcf70; }
.battle-power-track { height:10px; overflow:hidden; border-radius:99px; background:rgba(0,0,0,.35); }
.battle-power-track i { display:block; width:var(--battle-power,0%); height:100%; border-radius:inherit; background:linear-gradient(90deg,#4cb884,#88e3ae); transition:width .9s cubic-bezier(.2,.8,.2,1); }
.battle-power-track.enemy i { margin-left:auto; background:linear-gradient(90deg,#ffb069,#e66556); }
.battle-cinematic-result { display:grid; place-items:center; gap:.2rem; min-height:105px; margin:.8rem 0; padding:.75rem; text-align:center; border:1px solid rgba(255,255,255,.08); border-radius:16px; background:rgba(0,0,0,.18); }
.battle-cinematic-result p,.battle-cinematic-result small { margin:.1rem 0; color:#a9c0b5; }
.battle-result-emblem { font-size:2.5rem; animation:eventIconFloat 1.5s ease-in-out infinite; }
.battle-loader { width:34px; height:34px; border:3px solid rgba(255,255,255,.14); border-top-color:#ffd16e; border-radius:50%; animation:spin .75s linear infinite; }
.battle-cinematic.victory .battle-cinematic-dialog { border-color:rgba(84,230,159,.45); box-shadow:0 35px 90px rgba(0,0,0,.62),0 0 45px rgba(84,230,159,.12); }
.battle-cinematic.defeat .battle-cinematic-dialog { border-color:rgba(235,104,85,.45); box-shadow:0 35px 90px rgba(0,0,0,.62),0 0 45px rgba(235,104,85,.12); }
body.battle-cinematic-open { overflow:hidden; }

/* Additional atmosphere without external artwork. */
.frontier-ui .world-building:not(.status-building):not(.status-upgrading):not(.status-queued_building):not(.status-queued_upgrading) .building-aura {
    animation:buildingAuraBreath 3.8s ease-in-out infinite;
}
.frontier-ui .world-building:hover .building-sprite,
.frontier-ui .world-building.selected .building-sprite { filter:drop-shadow(0 12px 12px rgba(0,0,0,.38)) brightness(1.08); }
.frontier-ui .world-building.status-building .construction-overlay,
.frontier-ui .world-building.status-upgrading .construction-overlay { animation:constructionWork 1.4s ease-in-out infinite; }
.frontier-ui .character-layer::before {
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    opacity:.18;
    background:radial-gradient(circle at 45% 50%,rgba(255,232,158,.35),transparent 18%);
    animation:mapHeartbeat 7s ease-in-out infinite alternate;
}

@keyframes frontierLivePulse { 0%,100%{transform:scale(.82);opacity:.7}50%{transform:scale(1.16);opacity:1} }
@keyframes eventGlowDrift { from{transform:translate(-18px,5px) scale(.92)}to{transform:translate(12px,28px) scale(1.12)} }
@keyframes eventIconFloat { 0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1deg)} }
@keyframes milestoneReady { 0%,100%{box-shadow:0 0 0 rgba(255,204,102,0)}50%{box-shadow:0 0 22px var(--event-accent-soft)} }
@keyframes pulseEntry { from{opacity:0;transform:translateX(14px);background:var(--event-accent-soft)}to{opacity:1;transform:none;background:transparent} }
@keyframes marchRoute { to{background-position:22px 0} }
@keyframes cinematicFade { from{opacity:0}to{opacity:1} }
@keyframes cinematicRise { from{opacity:0;transform:translateY(25px) scale(.96)}to{opacity:1;transform:none} }
@keyframes armyAdvance { from{transform:translateX(-8px)}to{transform:translateX(13px)} }
@keyframes armyDefend { from{transform:translateX(4px) rotate(-1deg)}to{transform:translateX(-3px) rotate(1deg)} }
@keyframes battleImpact { 0%,100%{transform:translate(-50%,-50%) scale(.75);filter:drop-shadow(0 0 4px #ffd06a)}50%{transform:translate(-50%,-50%) scale(1.35);filter:drop-shadow(0 0 22px #fff1a8)} }
@keyframes spin { to{transform:rotate(360deg)} }
@keyframes buildingAuraBreath { 0%,100%{opacity:.25;transform:scale(.96)}50%{opacity:.6;transform:scale(1.04)} }
@keyframes constructionWork { 0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)} }
@keyframes mapHeartbeat { from{transform:translate(-3%,-2%) scale(.9)}to{transform:translate(4%,3%) scale(1.12)} }

@media (max-width: 1050px) {
    .frontier-event-grid { grid-template-columns:1fr; }
    .frontier-pulse-list { max-height:260px; }
    .world-event-ribbon { grid-template-columns:auto 1fr auto; }
    .world-event-ribbon-progress { grid-column:1/-1; grid-row:2; }
    .world-event-ribbon > time { justify-self:end; }
}
@media (max-width: 720px) {
    .frontier-event-link span { display:none; }
    .online-commanders { font-size:0; }
    .online-commanders strong { font-size:.72rem; }
    .online-commanders::after { content:""; }
    .frontier-live-event { margin:.75rem -.4rem; padding:.72rem; border-radius:19px; }
    .frontier-event-head { align-items:stretch; flex-direction:column; }
    .frontier-event-icon { flex-basis:54px; width:54px; height:54px; border-radius:16px; font-size:1.65rem; }
    .frontier-event-clock { display:grid; grid-template-columns:1fr auto; align-items:center; min-width:0; text-align:left; }
    .frontier-event-clock span { grid-column:1/-1; }
    .frontier-milestones { display:flex; overflow-x:auto; padding-bottom:.3rem; scroll-snap-type:x proximity; }
    .frontier-milestone { flex:0 0 min(86vw,330px); grid-template-columns:42px minmax(0,1fr); scroll-snap-align:center; }
    .frontier-milestone .button { grid-column:1/-1; width:100%; }
    .frontier-milestone.global { flex-basis:min(90vw,350px); }
    .world-event-ribbon { grid-template-columns:auto 1fr; border-radius:15px; }
    .world-event-ribbon > time,.world-event-ribbon > .button { grid-row:3; }
    .world-event-ribbon > time { justify-self:start; }
    .world-event-ribbon > .button { justify-self:end; }
    .battle-cinematic { padding:.35rem; }
    .battle-cinematic-dialog { max-height:calc(100dvh - .7rem); border-radius:19px; padding:.72rem; }
    .battle-horizon { min-height:120px; padding:1rem 5%; }
    .battle-army { font-size:1.65rem; }
    .battle-phases li { min-height:45px; }
    .battle-phases li span { font-size:.52rem; }
    .battle-power-board { gap:.4rem; }
}
@media (max-width: 430px) {
    .frontier-event-identity { gap:.55rem; }
    .frontier-event-identity p { font-size:.72rem; }
    .frontier-event-head .eyebrow { font-size:.56rem; }
    .frontier-pulse-list { max-height:220px; }
    .world-event-ribbon { margin-left:-.25rem; margin-right:-.25rem; }
    .battle-horizon { min-height:105px; }
    .battle-army span:nth-child(3) { display:none; }
    .battle-phases { gap:.2rem; }
    .battle-phases li { padding:.25rem; font-size:.7rem; }
}
@media (prefers-reduced-motion: reduce) {
    .frontier-event-icon,.frontier-event-glow,.frontier-milestone,.live-indicator i,.online-commanders i,.world-online-status i,.marker-online,
    .world-march-route i,.battle-army,.battle-impact,.battle-result-emblem,.battle-loader,
    .frontier-ui .world-building .building-aura,.frontier-ui .world-building .construction-overlay,.frontier-ui .character-layer::before { animation:none !important; }
}
.performance-lite .frontier-event-glow,
.performance-lite .frontier-ui .character-layer::before { display:none; }
.performance-lite .frontier-pulse-list { max-height:250px; }
.performance-lite .battle-cinematic-backdrop { backdrop-filter:none; }

/* 2.5.0 Stabilität: Live-Ereignis darf in CSS-Grid und mobilen Karussells nie seine Spalte aufweiten. */
.frontier-event-progress-card,
.frontier-pulse-panel,
.frontier-event-grid,
.frontier-milestones {
    min-width: 0;
    max-width: 100%;
}
@media (max-width: 720px) {
    .frontier-live-event { margin-left: 0; margin-right: 0; }
}

/* 2.6.0 – Base Reborn: sichtbare Gebäudestufen, Kontextsteuerung und Ausbaukommando */
body.upgrade-dialog-open { overflow: hidden; }

/* Programmierte Gebäudefassaden ersetzen das Emoji als Hauptgrafik. Das Symbol
   bleibt nur als kleines Funktionswappen erhalten. */
.frontier-ui .building-face { overflow: visible; }
.facade-window,.facade-door,.building-annex,.building-banner { position:absolute; display:block; pointer-events:none; }
.facade-window { z-index:3; top:38%; width:15%; height:22%; border:2px solid rgba(38,47,39,.42); border-radius:3px 3px 5px 5px; background:linear-gradient(145deg,#dff8ff,#70b4c8 70%); box-shadow:inset 0 0 0 2px rgba(255,255,255,.28),0 2px 0 rgba(36,46,34,.18); }
.window-one { left:15%; }
.window-two { right:15%; }
.facade-door { z-index:3; left:42%; bottom:-1%; width:16%; height:37%; border:2px solid rgba(48,38,25,.38); border-radius:4px 4px 1px 1px; background:linear-gradient(90deg,#80532d,#b17942 48%,#754724 49%); box-shadow:inset 3px 0 rgba(255,255,255,.08); }
.facade-door::after { content:""; position:absolute; right:18%; top:49%; width:3px; height:3px; border-radius:50%; background:#ffe28a; box-shadow:0 0 4px #ffd66a; }
.building-annex { z-index:1; left:-5%; bottom:5%; width:36%; height:40%; border:2px solid rgba(52,43,29,.3); border-radius:6px 6px 9px 9px; background:linear-gradient(145deg,#b88a53,#78502f); opacity:0; transform:translateX(12px) scale(.75); transition:opacity .25s ease,transform .25s ease; }
.building-banner { z-index:6; right:10%; top:24%; width:4px; height:46%; border-radius:3px; background:#d5c49e; opacity:0; }
.building-banner::after { content:""; position:absolute; left:4px; top:0; width:23px; height:16px; clip-path:polygon(0 0,100% 15%,78% 52%,100% 100%,0 86%); background:linear-gradient(135deg,#f0c563,#a85a32); box-shadow:0 3px 5px rgba(0,0,0,.2); animation:baseBanner 2.4s ease-in-out infinite; transform-origin:left center; }
@keyframes baseBanner { 50% { transform:skewY(-8deg) scaleX(.88); } }

.frontier-ui .building-icon { left:50%; top:57%; width:31px; height:31px; display:grid; place-items:center; border:1px solid rgba(255,232,172,.36); border-radius:9px; color:#fff7dc; background:linear-gradient(145deg,rgba(8,48,35,.92),rgba(20,80,55,.92)); box-shadow:0 4px 8px rgba(0,0,0,.24),inset 0 0 0 2px rgba(255,255,255,.05); font-size:1.08rem; filter:none; }
.frontier-ui .building-field .building-icon,.frontier-ui .building-forest .building-icon { width:auto; height:auto; border:0; background:transparent; box-shadow:none; font-size:3.1rem; }
.frontier-ui .building-stone_quarry .building-icon,.frontier-ui .building-iron_mine .building-icon,.frontier-ui .building-gold_mine .building-icon { top:49%; background:rgba(15,32,27,.68); }
.frontier-ui .building-wind_turbine .building-icon { display:none; }
.building-field .facade-window,.building-field .facade-door,.building-forest .facade-window,.building-forest .facade-door,.building-wind_turbine .facade-window,.building-wind_turbine .facade-door,.building-stone_quarry .facade-window,.building-stone_quarry .facade-door,.building-iron_mine .facade-window,.building-iron_mine .facade-door,.building-gold_mine .facade-window,.building-gold_mine .facade-door { display:none; }

/* Jede fünfte Stufe verändert die Silhouette sichtbar. */
.visual-tier-2 .building-sprite { width:min(82%,158px); height:min(69%,121px); }
.visual-tier-2 .building-annex { opacity:1; transform:translateX(0) scale(1); }
.visual-tier-2 .building-face { top:25%; }
.visual-tier-3 .building-sprite { width:min(86%,166px); height:min(73%,128px); }
.visual-tier-3 .building-annex,.visual-tier-4 .building-annex,.visual-tier-5 .building-annex { opacity:1; transform:translateX(0) scale(1); }
.visual-tier-3 .building-banner,.visual-tier-4 .building-banner,.visual-tier-5 .building-banner { opacity:1; }
.visual-tier-3 .building-roof::after,.visual-tier-4 .building-roof::after,.visual-tier-5 .building-roof::after { content:""; position:absolute; left:42%; top:-17%; width:16%; height:28%; border:2px solid rgba(57,40,24,.35); border-radius:3px 3px 0 0; background:linear-gradient(#d9c28f,#8e6a3d); box-shadow:0 2px 5px rgba(0,0,0,.18); }
.visual-tier-4 .building-sprite { width:min(90%,174px); height:min(77%,136px); }
.visual-tier-4 .building-foundation { border-color:rgba(255,221,125,.3); box-shadow:inset 0 5px 0 rgba(255,255,255,.13),0 12px 18px rgba(19,44,24,.3),0 0 18px rgba(255,205,91,.14); }
.visual-tier-4 .building-face::after,.visual-tier-5 .building-face::after { content:""; position:absolute; left:6%; right:6%; top:8%; height:6px; border-radius:99px; background:linear-gradient(90deg,#e6bd5b,#fff0aa,#d79538); box-shadow:0 0 7px rgba(255,215,105,.4); }
.visual-tier-5 .building-sprite { width:min(94%,182px); height:min(81%,144px); }
.visual-tier-5 .building-aura { opacity:.68; background:radial-gradient(ellipse,rgba(255,220,105,.29),rgba(68,213,154,.12) 45%,transparent 70%); animation:eliteBuildingAura 2.8s ease-in-out infinite; }
.visual-tier-5 .building-level-ring { border-color:rgba(255,218,105,.7); background:rgba(75,50,12,.72); box-shadow:0 0 13px rgba(255,206,79,.35); }
@keyframes eliteBuildingAura { 50% { transform:scale(1.08); opacity:.36; } }

.category-militaer .building-foundation,.category-verteidigung .building-foundation { background:linear-gradient(180deg,#8b826b,#4f5c4c); }
.category-produktion .building-foundation { background:linear-gradient(180deg,#8a9277,#536b58); }
.category-rohstoffe .building-foundation { background:linear-gradient(180deg,#93866c,#5d5947); }
.category-verwaltung .building-foundation { background:linear-gradient(180deg,#839b70,#4c7353); }

.selected-building-dock { position:fixed; z-index:1650; right:18px; bottom:18px; width:min(760px,calc(100vw - 36px)); display:grid; grid-template-columns:minmax(190px,1fr) minmax(220px,1.2fr) auto; align-items:center; gap:.75rem; border:1px solid rgba(255,218,122,.32); border-radius:18px; padding:.72rem; color:#f7f2df; background:linear-gradient(135deg,rgba(7,33,25,.97),rgba(14,63,44,.97)); box-shadow:0 22px 50px rgba(0,0,0,.4),inset 0 0 0 1px rgba(255,255,255,.04); backdrop-filter:blur(14px); animation:selectedDockIn .26s cubic-bezier(.18,.8,.2,1); }
@keyframes selectedDockIn { from { opacity:0; transform:translateY(18px) scale(.98); } }
.selected-building-dock-identity { display:grid; grid-template-columns:48px minmax(0,1fr); align-items:center; gap:.65rem; min-width:0; }
.selected-building-dock-identity>span { grid-row:1/4; width:48px; height:48px; display:grid; place-items:center; border:1px solid rgba(255,224,143,.26); border-radius:14px; background:rgba(255,255,255,.075); font-size:1.8rem; }
.selected-building-dock small { color:rgba(239,247,241,.57); font-size:.62rem; letter-spacing:.07em; text-transform:uppercase; }
.selected-building-dock strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#fff5d6; }
.selected-building-dock-identity b { color:#e7bd62; font-size:.72rem; }
.selected-building-dock-benefit { min-width:0; border-left:1px solid rgba(255,255,255,.1); padding-left:.8rem; }
.selected-building-dock-benefit>strong { display:block; font-size:.76rem; }
.selected-building-dock-benefit>span { display:flex; flex-wrap:wrap; gap:.2rem; margin-top:.26rem; }
.selected-building-dock-benefit .cost-item { color:#fff5d9; background:rgba(255,255,255,.075); }
.selected-building-dock-actions { display:flex; gap:.4rem; }
.selected-building-dock-actions .button { min-height:46px; }
.selected-building-dock-actions .ghost { width:42px; padding:0; font-size:1.25rem; }

.upgrade-command-dialog { position:fixed; z-index:5000; inset:0; display:grid; place-items:center; padding:1rem; background:rgba(2,17,12,.78); backdrop-filter:blur(9px); opacity:0; transition:opacity .18s ease; }
.upgrade-command-dialog.open { opacity:1; }
.upgrade-command-card { width:min(850px,100%); max-height:min(900px,calc(100vh - 2rem)); overflow:auto; border:1px solid rgba(255,220,128,.3); border-radius:24px; color:#edf7f0; background:radial-gradient(circle at 75% 0,rgba(255,205,85,.12),transparent 32%),linear-gradient(145deg,#102f27,#081f19 70%); box-shadow:0 32px 90px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.04); transform:translateY(18px) scale(.975); transition:transform .2s cubic-bezier(.18,.8,.2,1); outline:none; }
.upgrade-command-dialog.open .upgrade-command-card { transform:none; }
.upgrade-command-head { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; border-bottom:1px solid rgba(255,255,255,.1); padding:1.05rem 1.15rem; background:linear-gradient(90deg,rgba(255,255,255,.045),transparent); }
.upgrade-command-head h2 { display:flex; align-items:center; gap:.45rem; margin:.18rem 0; color:#fff1c8; font-size:1.35rem; }
.upgrade-command-head h2>span:first-child { width:43px; height:43px; display:grid; place-items:center; border:1px solid rgba(255,221,136,.25); border-radius:13px; background:rgba(255,255,255,.075); }
.upgrade-command-head p:last-child { margin:.2rem 0 0; color:rgba(237,247,240,.55); font-size:.75rem; }
.upgrade-command-head .drawer-close { color:#f5f5ed; border-color:rgba(255,255,255,.13); background:rgba(255,255,255,.06); }
.upgrade-command-body { display:grid; grid-template-columns:1fr 1fr; gap:.8rem; padding:1rem 1.15rem; }
.upgrade-level-stage { grid-column:1/-1; display:grid; grid-template-columns:1fr 90px 1fr; align-items:center; gap:.6rem; border:1px solid rgba(255,216,121,.18); border-radius:18px; padding:.85rem; background:linear-gradient(90deg,rgba(255,255,255,.035),rgba(255,198,66,.06),rgba(255,255,255,.035)); }
.upgrade-level-node { min-height:96px; display:grid; place-items:center; align-content:center; gap:.18rem; border:1px solid rgba(255,255,255,.1); border-radius:15px; background:rgba(255,255,255,.045); text-align:center; }
.upgrade-level-node.next { border-color:rgba(255,210,98,.36); background:linear-gradient(145deg,rgba(255,203,80,.13),rgba(53,189,133,.1)); box-shadow:0 0 25px rgba(255,201,78,.08); }
.upgrade-level-node small { color:rgba(239,246,241,.5); text-transform:uppercase; letter-spacing:.08em; }
.upgrade-level-node strong { color:#fff0bd; font-size:1.25rem; }
.upgrade-level-node span { color:#71d7aa; font-size:.68rem; font-weight:800; }
.upgrade-level-arrow { display:flex; align-items:center; color:#ffd66e; }
.upgrade-level-arrow i { flex:1; height:1px; background:linear-gradient(90deg,transparent,rgba(255,213,107,.6)); }
.upgrade-level-arrow i:last-child { background:linear-gradient(90deg,rgba(255,213,107,.6),transparent); }
.upgrade-level-arrow span { width:36px; height:36px; display:grid; place-items:center; border:1px solid rgba(255,217,119,.3); border-radius:50%; background:rgba(255,201,69,.1); animation:upgradeArrow 1.5s ease-in-out infinite; }
@keyframes upgradeArrow { 50% { transform:translateY(-4px); box-shadow:0 0 18px rgba(255,210,89,.25); } }
.upgrade-benefit-panel,.upgrade-resource-panel,.upgrade-order-panel { border:1px solid rgba(255,255,255,.09); border-radius:16px; padding:.8rem; background:rgba(255,255,255,.035); }
.upgrade-benefit-panel header,.upgrade-resource-panel header { display:flex; align-items:end; justify-content:space-between; gap:.5rem; margin-bottom:.55rem; }
.upgrade-benefit-panel h3 { margin:.1rem 0 0; color:#f7e7b7; font-size:1rem; }
.upgrade-benefit-list { display:grid; gap:.4rem; }
.upgrade-benefit-list article { display:grid; grid-template-columns:minmax(0,1fr) auto 24px auto; align-items:center; gap:.4rem; border-radius:10px; padding:.52rem .6rem; background:rgba(0,0,0,.15); font-size:.73rem; }
.upgrade-benefit-list article span { color:rgba(240,247,242,.64); }
.upgrade-benefit-list article b { color:#c8d1ca; }
.upgrade-benefit-list article i { color:#d8ad55; text-align:center; }
.upgrade-benefit-list article strong { color:#72dfa9; }
.upgrade-resource-panel header strong { color:#74dfa9; font-size:.72rem; }
.upgrade-resource-panel header strong.missing { color:#ff8f7a; }
.upgrade-resource-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; }
.upgrade-resource-grid article { display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:.42rem; border:1px solid rgba(255,255,255,.08); border-radius:11px; padding:.48rem; background:rgba(0,0,0,.14); }
.upgrade-resource-grid article>span { font-size:1.25rem; }
.upgrade-resource-grid article b,.upgrade-resource-grid article small { display:block; }
.upgrade-resource-grid article small { color:rgba(235,245,238,.48); font-size:.62rem; }
.upgrade-resource-grid article em { color:#6edca6; font-style:normal; font-weight:900; }
.upgrade-resource-grid article.missing { border-color:rgba(239,99,78,.34); background:rgba(160,48,35,.12); }
.upgrade-resource-grid article.missing em { color:#ff8d79; }
.upgrade-resource-panel>p { margin:.55rem 0 0; color:rgba(235,245,238,.5); font-size:.67rem; }
.upgrade-order-panel { grid-column:1/-1; display:grid; grid-template-columns:190px minmax(0,1fr); gap:.75rem; align-items:center; }
.upgrade-duration { display:flex; align-items:center; gap:.6rem; border-right:1px solid rgba(255,255,255,.1); }
.upgrade-duration>span { font-size:1.55rem; }
.upgrade-duration small,.upgrade-duration strong { display:block; }
.upgrade-duration small { color:rgba(235,245,238,.48); }
.upgrade-duration strong { color:#fff0c4; }
.upgrade-order-panel .builder-picker { margin:0; }
.upgrade-order-panel .builder-picker span { color:#e7bd65; }
.upgrade-order-panel .builder-picker small { color:rgba(235,245,238,.5); }
.upgrade-order-panel select { color:#edf7f0; border-color:rgba(255,255,255,.14); background:#12372c; }
.upgrade-command-footer { display:flex; justify-content:flex-end; gap:.55rem; border-top:1px solid rgba(255,255,255,.1); padding:.85rem 1.15rem 1rem; }
.upgrade-command-footer .upgrade-confirm { min-width:260px; background:linear-gradient(180deg,#e4aa3f,#b96d24); box-shadow:0 8px 22px rgba(206,126,33,.25); }
.upgrade-command-footer .upgrade-confirm:not(:disabled):hover { background:linear-gradient(180deg,#f1bd55,#c87a2c); }

@media (max-width:760px) {
    .selected-building-dock { left:.5rem; right:.5rem; bottom:calc(68px + env(safe-area-inset-bottom)); width:auto; grid-template-columns:minmax(0,1fr) auto; gap:.5rem; border-radius:16px; padding:.58rem; }
    .selected-building-dock-benefit { grid-column:1/-1; grid-row:2; border-left:0; border-top:1px solid rgba(255,255,255,.09); padding:.5rem 0 0; }
    .selected-building-dock-actions { grid-column:2; grid-row:1; }
    .selected-building-dock-actions .primary { min-width:108px; }
    .upgrade-command-dialog { align-items:end; padding:0; }
    .upgrade-command-card { width:100%; max-height:calc(100vh - env(safe-area-inset-top)); border-radius:22px 22px 0 0; }
    .upgrade-command-body { grid-template-columns:1fr; padding:.75rem; }
    .upgrade-level-stage,.upgrade-order-panel { grid-column:1; }
    .upgrade-benefit-panel,.upgrade-resource-panel { grid-column:1; }
    .upgrade-level-stage { grid-template-columns:1fr 52px 1fr; }
    .upgrade-level-node { min-height:80px; }
    .upgrade-order-panel { grid-template-columns:1fr; }
    .upgrade-duration { border-right:0; border-bottom:1px solid rgba(255,255,255,.1); padding-bottom:.55rem; }
    .upgrade-command-footer { position:sticky; bottom:0; background:#0b261e; padding-bottom:calc(.85rem + env(safe-area-inset-bottom)); }
    .upgrade-command-footer .button { flex:1; min-width:0; }
}
@media (max-width:420px) {
    .selected-building-dock-identity>span { width:42px; height:42px; font-size:1.5rem; }
    .selected-building-dock-actions .ghost { display:none; }
    .upgrade-resource-grid { grid-template-columns:1fr; }
    .upgrade-level-stage { gap:.25rem; padding:.55rem; }
    .upgrade-level-node strong { font-size:1rem; }
    .upgrade-command-head { padding:.8rem; }
}
@media (prefers-reduced-motion:reduce) {
    .building-banner::after,.visual-tier-5 .building-aura,.upgrade-level-arrow span { animation:none; }
}

/* Gebäudespezifische Aktivität – rein mit CSS, ohne fremde Grafikdateien. */
.building-mill .building-annex::after { content:"✣"; position:absolute; right:-18px; top:5px; color:#d9c9a2; text-shadow:0 2px 3px rgba(0,0,0,.35); font-size:2.35rem; animation:millWheel 5s linear infinite; }
.building-sawmill .building-annex::after { content:""; position:absolute; right:-13px; top:9px; width:28px; height:28px; border:4px dashed #d8d3c4; border-radius:50%; box-shadow:0 0 0 2px rgba(45,42,34,.38); animation:millWheel 2.8s linear infinite; }
@keyframes millWheel { to { transform:rotate(360deg); } }
.building-bakery .building-face::before,.building-woodchip_heater .building-face::before { content:""; position:absolute; right:13%; top:-29%; width:11%; height:31%; border:2px solid rgba(54,42,30,.35); border-radius:3px 3px 0 0; background:linear-gradient(90deg,#735647,#a07a5f); }
.building-warehouse .building-annex::before,.building-machine_hall .building-annex::before { content:""; position:absolute; left:12%; right:12%; bottom:12%; height:38%; border:2px solid rgba(29,45,41,.35); background:repeating-linear-gradient(90deg,#657b78 0 8px,#526764 8px 12px); }
.building-watchtower .building-face { left:31%; right:31%; top:20%; }
.building-watchtower .building-roof { left:20%; right:20%; }
.building-watchtower .building-banner { opacity:1; }
.building-barracks .building-banner { opacity:1; }
.building-clinic .building-face::after { content:"+"; position:absolute; left:50%; top:12%; transform:translateX(-50%); width:25px; height:25px; display:grid; place-items:center; border-radius:6px; color:#fff; background:#c94642; box-shadow:0 3px 6px rgba(0,0,0,.2); font-weight:900; }
.building-machine_hall .building-face { background:linear-gradient(145deg,#809595,#425957); }
.building-machine_hall .building-face::after { content:""; position:absolute; left:10%; right:10%; bottom:8%; height:8px; border-radius:8px; background:repeating-linear-gradient(90deg,#e4a93d 0 9px,#293b39 9px 18px); box-shadow:0 0 8px rgba(238,174,55,.3); }
.building-gold_mine .building-sprite::after { content:"✦"; position:absolute; z-index:8; left:18%; top:26%; color:#ffe587; text-shadow:24px 14px #f0b942,48px -3px #fff0a4; animation:sparkBlink 1.1s steps(2) infinite; }
.building-chicken_coop .building-foundation::after { content:"• • •"; position:absolute; left:14%; bottom:18%; color:#fff1cb; letter-spacing:5px; animation:animalYard 2.2s ease-in-out infinite; }
.building-cow_barn .building-foundation::after { content:"••"; position:absolute; right:17%; bottom:18%; color:#423a2c; letter-spacing:8px; animation:animalYard 2.8s ease-in-out infinite reverse; }
@keyframes animalYard { 50% { transform:translateX(8px); opacity:.55; } }
@media (prefers-reduced-motion:reduce) { .building-mill .building-annex::after,.building-sawmill .building-annex::after,.building-chicken_coop .building-foundation::after,.building-cow_barn .building-foundation::after { animation:none; } }

.settlement-progression { display:grid; grid-template-columns:minmax(190px,.8fr) minmax(300px,1.7fr) minmax(230px,1fr); align-items:center; gap:1rem; margin:0 0 1rem; border:1px solid rgba(255,218,121,.2); border-radius:20px; padding:.85rem 1rem; color:#edf7f0; background:radial-gradient(circle at 12% 50%,rgba(255,206,84,.11),transparent 25%),linear-gradient(135deg,#0d2f25,#0a211b 70%); box-shadow:0 16px 38px rgba(0,0,0,.2),inset 0 0 0 1px rgba(255,255,255,.03); }
.settlement-rank-badge { display:grid; grid-template-columns:52px minmax(0,1fr); align-items:center; gap:.65rem; min-width:0; }
.settlement-rank-badge>span { grid-row:1/4; width:52px; height:52px; display:grid; place-items:center; border:1px solid rgba(255,219,123,.36); border-radius:16px 7px 16px 7px; color:#ffe095; background:linear-gradient(145deg,rgba(255,202,71,.16),rgba(50,184,130,.1)); box-shadow:inset 0 0 18px rgba(255,221,137,.06); font-size:1.65rem; }
.settlement-rank-badge small,.settlement-next-order small { color:rgba(238,247,241,.5); font-size:.61rem; text-transform:uppercase; letter-spacing:.08em; }
.settlement-rank-badge strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#fff1c6; }
.settlement-rank-badge em { color:#6fd8a6; font-size:.7rem; font-style:normal; font-weight:800; }
.settlement-rank-track { --settlement-progress:0%; position:relative; display:grid; grid-template-columns:repeat(5,1fr); align-items:start; gap:.25rem; min-height:58px; padding-top:8px; }
.settlement-rank-track>i { position:absolute; left:5%; right:5%; top:22px; height:7px; border-radius:99px; background:rgba(255,255,255,.09); box-shadow:inset 0 2px 4px rgba(0,0,0,.2); }
.settlement-rank-track>i::after { content:""; position:absolute; inset:0 auto 0 0; width:var(--settlement-progress); max-width:100%; border-radius:inherit; background:linear-gradient(90deg,#39b982,#e0b44f); box-shadow:0 0 12px rgba(95,220,158,.24); }
.settlement-rank-track>span { position:relative; z-index:2; display:grid; justify-items:center; gap:.18rem; color:rgba(237,246,240,.36); }
.settlement-rank-track>span b { width:31px; height:31px; display:grid; place-items:center; border:2px solid rgba(255,255,255,.12); border-radius:50%; background:#112f28; box-shadow:0 5px 10px rgba(0,0,0,.2); }
.settlement-rank-track>span small { font-size:.58rem; }
.settlement-rank-track>span.reached { color:#dcefe4; }
.settlement-rank-track>span.reached b { border-color:#64d59f; color:#effff6; background:linear-gradient(145deg,#287e5b,#154a39); }
.settlement-rank-track>span.current b { border-color:#ffd778; color:#4b3511; background:linear-gradient(#ffe9a4,#d9a43f); box-shadow:0 0 0 5px rgba(255,215,120,.1),0 0 18px rgba(255,210,95,.28); animation:rankPulse 1.8s ease-in-out infinite; }
@keyframes rankPulse { 50% { transform:scale(1.08); } }
.settlement-next-order { display:grid; justify-items:end; text-align:right; }
.settlement-next-order strong { margin:.12rem 0 .45rem; color:#f6e5b6; }
.settlement-next-order .button { min-height:40px; }
@media(max-width:980px){.settlement-progression{grid-template-columns:1fr 1.6fr}.settlement-next-order{grid-column:1/-1;grid-template-columns:1fr auto;align-items:center;justify-items:start;text-align:left}.settlement-next-order small{grid-column:1}.settlement-next-order strong{grid-column:1;margin:0}.settlement-next-order .button{grid-column:2;grid-row:1/3}}
@media(max-width:650px){.settlement-progression{grid-template-columns:1fr;padding:.7rem}.settlement-rank-track{grid-column:1}.settlement-next-order{grid-column:1;grid-template-columns:1fr}.settlement-next-order .button{grid-column:1;grid-row:auto;width:100%;margin-top:.4rem}.settlement-rank-track>span small{display:none}}
@media(prefers-reduced-motion:reduce){.settlement-rank-track>span.current b{animation:none}}

/* 2.7.0 – Ingame-Updatesystem */
.admin-console-tabs{display:flex;gap:.5rem;padding:.75rem 1.35rem;border-bottom:1px solid rgba(151,210,167,.14);background:rgba(0,0,0,.12);overflow-x:auto}
.admin-console-tabs button{min-height:42px;border:1px solid rgba(166,217,178,.16);border-radius:11px;padding:.6rem .9rem;color:#bcd1c1;background:rgba(255,255,255,.035);font:inherit;font-weight:850;white-space:nowrap;cursor:pointer}
.admin-console-tabs button.active{border-color:rgba(105,221,137,.52);color:#effff3;background:linear-gradient(135deg,rgba(51,154,80,.34),rgba(27,89,52,.22));box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.admin-update-panel[hidden],[data-admin-console-panel][hidden]{display:none!important}
.admin-update-panel{padding:1rem 1.35rem 0}
.admin-update-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.9rem;border:1px solid rgba(112,205,139,.2);border-radius:16px;padding:1rem;background:linear-gradient(135deg,rgba(42,119,65,.18),rgba(7,24,17,.3))}
.admin-update-hero h3{margin:.15rem 0 .35rem;font-size:1.25rem;color:#f2fff5}.admin-update-hero p{margin:0;color:#adc8b4}
.admin-update-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:.9rem}
.admin-update-status-grid>span{display:grid;gap:.25rem;border:1px solid rgba(166,217,178,.14);border-radius:12px;padding:.75rem .85rem;background:rgba(255,255,255,.035)}
.admin-update-status-grid small{color:#8fae98;font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.admin-update-status-grid strong{color:#fff;overflow:hidden;text-overflow:ellipsis}
.admin-update-layout,.admin-update-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;margin-bottom:.85rem}
.admin-update-card{display:grid;align-content:start;gap:.8rem;border:1px solid rgba(166,217,178,.17);border-radius:15px;padding:1rem;background:rgba(3,13,8,.24)}
.admin-update-card label{display:grid;gap:.35rem;color:#cfe5d4;font-size:.78rem;font-weight:850}.admin-update-card input[type=file]{width:100%;box-sizing:border-box;border:1px dashed rgba(126,226,154,.38);border-radius:12px;padding:.85rem;color:#eaf8ec;background:#0b1b12}
.admin-update-hint,.admin-update-package-empty{margin:0;color:#9bb7a3;font-size:.78rem;line-height:1.55}
.admin-update-package{display:grid;gap:.65rem}.admin-update-package-head{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start}.admin-update-package-head h4{margin:0;color:#fff;font-size:1rem}.admin-update-package-head p{margin:.2rem 0 0;color:#a9c2af;font-size:.78rem}
.admin-update-badge{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:.28rem .55rem;font-size:.68rem;font-weight:900;white-space:nowrap}.admin-update-badge.verified{border-color:#55d97866;color:#a9f5bb;background:#23843b2b}.admin-update-badge.warning{border-color:#f7c85c66;color:#ffe3a0;background:#9c6d172d}
.admin-update-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.admin-update-metrics span{display:grid;gap:.15rem;border-radius:9px;padding:.55rem;background:rgba(255,255,255,.04)}.admin-update-metrics small{color:#8da895;font-size:.64rem;text-transform:uppercase}.admin-update-metrics strong{color:#effbf1;font-size:.8rem;overflow:hidden;text-overflow:ellipsis}
.admin-update-notes{margin:0;padding-left:1.1rem;color:#bcd2c2;font-size:.78rem}.admin-update-notes li+li{margin-top:.25rem}
.admin-update-confirm{display:flex!important;grid-template-columns:auto 1fr!important;align-items:flex-start;gap:.55rem!important;border-radius:10px;padding:.65rem;background:rgba(255,255,255,.035)}.admin-update-confirm input{margin-top:.18rem}
.admin-update-actions{display:flex;gap:.55rem;flex-wrap:wrap}.admin-update-actions .button{flex:1 1 180px}
.admin-update-progress{display:flex;align-items:center;gap:.8rem;margin-bottom:.85rem;border:1px solid rgba(92,209,126,.28);border-radius:14px;padding:.85rem 1rem;background:rgba(33,111,55,.16)}.admin-update-progress p{margin:.15rem 0 0;color:#a9c4b0;font-size:.78rem}.admin-update-spinner{width:28px;height:28px;border:3px solid rgba(126,226,154,.18);border-top-color:#7ee29a;border-radius:50%;animation:admin-update-spin .8s linear infinite}@keyframes admin-update-spin{to{transform:rotate(360deg)}}
.admin-update-list{display:grid;gap:.55rem;max-height:290px;overflow:auto}.admin-update-list-item{display:grid;grid-template-columns:1fr auto;gap:.6rem;align-items:center;border:1px solid rgba(166,217,178,.12);border-radius:11px;padding:.7rem;background:rgba(255,255,255,.025)}.admin-update-list-item strong{display:block;color:#f2fff5;font-size:.82rem}.admin-update-list-item small{display:block;margin-top:.15rem;color:#8fae98;font-size:.68rem}.admin-update-list-item .button{min-height:36px;padding:.45rem .65rem;font-size:.72rem}
.admin-update-history-state{display:inline-block;margin-right:.35rem;font-size:.72rem}.admin-update-history-state.success{color:#79e998}.admin-update-history-state.failed{color:#ff9c91}.admin-update-history-state.pending{color:#f7d272}
.admin-update-security-note{margin-bottom:.85rem;border:1px solid rgba(246,197,87,.22);border-radius:13px;padding:.8rem .9rem;color:#d9cda9;background:rgba(124,83,14,.12)}.admin-update-security-note p{margin:.25rem 0 0;font-size:.76rem;line-height:1.55}.admin-update-security-note code{color:#fff0bd}
@media(max-width:900px){.admin-update-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-update-layout,.admin-update-columns{grid-template-columns:1fr}}
@media(max-width:640px){.admin-console-tabs,.admin-update-panel{padding-left:.8rem;padding-right:.8rem}.admin-update-hero{display:grid}.admin-update-hero .button{width:100%}.admin-update-status-grid{grid-template-columns:1fr 1fr}.admin-update-metrics{grid-template-columns:1fr}.admin-update-list-item{grid-template-columns:1fr}.admin-update-list-item .button{width:100%}}

/* ================================================================
   2.8.0 · Fortified Homestead
   Sichtbare Ringmauer, zentraler Kommandokern und Außenwirtschaft.
   ================================================================ */
.frontier-ui .fortified-farm-map {
    background:
        radial-gradient(circle at 50% 48%, rgba(255,229,154,.13), transparent 25%),
        linear-gradient(180deg, rgba(81,125,73,.12), rgba(30,77,48,.18)),
        #6eaa62;
}
.frontier-ui .fortified-farm-map .road-horizontal { top:calc(11 * var(--tile) + 8px); }
.frontier-ui .fortified-farm-map .road-vertical { left:calc(15 * var(--tile) - 20px); }
.frontier-ui .fortified-farm-map .pond { left:calc(24 * var(--tile)); top:calc(6 * var(--tile)); }
.frontier-ui .fortified-farm-map .flower-patch { left:calc(3 * var(--tile)); top:calc(3 * var(--tile)); }
.frontier-ui .fortified-farm-map .hay-bales { left:calc(24 * var(--tile)); top:calc(16 * var(--tile)); }

.build-plot.zone-inner {
    border-color:rgba(255,222,135,.12);
    background:linear-gradient(145deg,rgba(255,231,164,.035),rgba(15,49,36,.025));
}
.build-plot.zone-outer {
    border-color:rgba(201,238,174,.08);
    background:linear-gradient(145deg,rgba(198,231,166,.025),rgba(35,87,49,.02));
}
.build-plot.zone-inner > span { background:rgba(85,58,27,.68); color:#ffe8aa; }
.build-plot.zone-outer > span { background:rgba(14,62,36,.68); color:#dbf2c6; }

.fortified-courtyard {
    position:absolute;
    left:calc(var(--wall-x) * var(--tile));
    top:calc(var(--wall-y) * var(--tile));
    width:calc(var(--wall-w) * var(--tile));
    height:calc(var(--wall-h) * var(--tile));
    pointer-events:none;
    z-index:7;
    filter:drop-shadow(0 18px 18px rgba(8,33,20,.22));
}
.courtyard-ground {
    position:absolute;
    inset:14px;
    z-index:0;
    border:2px solid rgba(255,227,160,.12);
    border-radius:24px;
    background:
        radial-gradient(circle at 50% 52%, rgba(255,225,142,.1), transparent 27%),
        repeating-linear-gradient(28deg, rgba(255,255,255,.018) 0 18px, rgba(0,0,0,.018) 18px 36px),
        linear-gradient(155deg,#69835d,#4d6e4d 62%,#3e6346);
    box-shadow:inset 0 0 65px rgba(15,46,30,.35), inset 0 0 0 8px rgba(255,255,255,.025);
}
.courtyard-ground::before,
.courtyard-ground::after {
    content:"";
    position:absolute;
    pointer-events:none;
}
.courtyard-ground::before {
    left:50%; top:0; bottom:0; width:36px; transform:translateX(-50%);
    background:repeating-linear-gradient(0deg,rgba(211,190,141,.24) 0 16px,rgba(171,146,95,.18) 16px 32px);
    border-left:1px solid rgba(255,255,255,.06); border-right:1px solid rgba(0,0,0,.08);
}
.courtyard-ground::after {
    top:50%; left:0; right:0; height:36px; transform:translateY(-50%);
    background:repeating-linear-gradient(90deg,rgba(211,190,141,.2) 0 16px,rgba(171,146,95,.14) 16px 32px);
    border-top:1px solid rgba(255,255,255,.06); border-bottom:1px solid rgba(0,0,0,.08);
}

.fort-wall,
.fort-corner,
.fort-gate,
.fort-scout-tower,
.fort-catapult {
    position:absolute;
    appearance:none;
    pointer-events:auto;
    border:0;
    color:#f9edcf;
    cursor:pointer;
    z-index:45;
    transition:filter .18s ease, transform .18s ease;
}
.fort-wall:hover,
.fort-corner:hover,
.fort-gate:hover,
.fort-scout-tower:hover,
.fort-catapult:hover {
    filter:brightness(1.16) saturate(1.08);
    transform:translateY(-2px);
}
.fort-wall:focus-visible,
.fort-corner:focus-visible,
.fort-gate:focus-visible,
.fort-scout-tower:focus-visible,
.fort-catapult:focus-visible {
    outline:3px solid #ffe38b;
    outline-offset:4px;
}
.fort-wall {
    border:2px solid rgba(54,39,25,.58);
    border-radius:7px;
    background:
        linear-gradient(180deg,rgba(255,255,255,.16),transparent 30%),
        repeating-linear-gradient(90deg,#95806a 0 34px,#806b58 34px 37px,#a08a71 37px 70px,#77624f 70px 74px);
    box-shadow:inset 0 5px rgba(255,255,255,.09),inset 0 -7px rgba(40,27,18,.18),0 9px 12px rgba(15,35,22,.3);
}
.fort-wall::before,
.fort-wall::after {
    content:"";
    position:absolute;
    background:repeating-linear-gradient(90deg,#b39d82 0 21px,#806c58 21px 24px);
    border:2px solid rgba(50,36,24,.42);
    box-shadow:inset 0 3px rgba(255,255,255,.12);
}
.fort-wall.wall-north { left:0; top:-8px; width:100%; height:30px; }
.fort-wall.wall-south { left:0; bottom:-8px; width:100%; height:34px; }
.fort-wall.wall-west { left:-8px; top:0; width:30px; height:100%; background:repeating-linear-gradient(0deg,#95806a 0 34px,#806b58 34px 37px,#a08a71 37px 70px,#77624f 70px 74px); }
.fort-wall.wall-east { right:-8px; top:0; width:30px; height:100%; background:repeating-linear-gradient(0deg,#95806a 0 34px,#806b58 34px 37px,#a08a71 37px 70px,#77624f 70px 74px); }
.fort-wall.wall-north::before,
.fort-wall.wall-south::before { left:8px; right:8px; top:-10px; height:13px; clip-path:polygon(0 100%,0 25%,12% 25%,12% 100%,25% 100%,25% 25%,37% 25%,37% 100%,50% 100%,50% 25%,62% 25%,62% 100%,75% 100%,75% 25%,87% 25%,87% 100%,100% 100%); }
.fort-wall.wall-west::before,
.fort-wall.wall-east::before { top:8px; bottom:8px; left:-10px; width:13px; background:repeating-linear-gradient(0deg,#b39d82 0 21px,#806c58 21px 24px); clip-path:polygon(100% 0,25% 0,25% 12%,100% 12%,100% 25%,25% 25%,25% 37%,100% 37%,100% 50%,25% 50%,25% 62%,100% 62%,100% 75%,25% 75%,25% 87%,100% 87%); }

.wall-tier-2 .fort-wall { background-color:#93816c; filter:saturate(.92); }
.wall-tier-3 .fort-wall { background-image:linear-gradient(180deg,rgba(255,255,255,.18),transparent 32%),repeating-linear-gradient(90deg,#8d8f8b 0 34px,#626864 34px 38px,#9ea09b 38px 70px,#5c625f 70px 74px); }
.wall-tier-4 .fort-wall { border-color:#423f3b; box-shadow:inset 0 5px rgba(255,255,255,.12),inset 0 -8px rgba(16,18,18,.25),0 10px 16px rgba(8,24,17,.36),0 0 15px rgba(126,203,173,.08); }
.wall-tier-5 .fort-wall { background-image:linear-gradient(180deg,rgba(109,229,190,.12),transparent 40%),repeating-linear-gradient(90deg,#666e70 0 34px,#3f4849 34px 38px,#7b8586 38px 70px,#394243 70px 74px); box-shadow:inset 0 5px rgba(255,255,255,.13),inset 0 -8px rgba(7,14,14,.32),0 10px 18px rgba(8,24,17,.42),0 0 24px rgba(82,228,179,.12); }

.fort-corner {
    width:58px; height:72px;
    border:3px solid rgba(48,34,22,.58);
    border-radius:10px 10px 15px 15px;
    background:linear-gradient(90deg,#7f6c59,#a08b72 48%,#6e5a49);
    box-shadow:inset 0 6px rgba(255,255,255,.1),inset 0 -9px rgba(39,25,17,.18),0 12px 14px rgba(10,31,20,.34);
}
.fort-corner::before { content:""; position:absolute; left:-8px; right:-8px; top:-14px; height:24px; clip-path:polygon(0 100%,0 20%,20% 20%,20% 100%,40% 100%,40% 20%,60% 20%,60% 100%,80% 100%,80% 20%,100% 20%,100% 100%); background:#a08a71; border:2px solid rgba(48,34,22,.45); }
.fort-corner::after { content:""; position:absolute; left:17px; right:17px; top:23px; height:24px; border:3px solid #453528; border-bottom:0; border-radius:12px 12px 0 0; background:#22392e; box-shadow:inset 0 0 10px rgba(255,221,120,.22); }
.fort-corner i { position:absolute; left:50%; bottom:-13px; width:36px; height:18px; transform:translateX(-50%); border-radius:50%; background:rgba(14,35,23,.35); filter:blur(4px); }
.corner-nw { left:-22px; top:-30px; }
.corner-ne { right:-22px; top:-30px; }
.corner-sw { left:-22px; bottom:-30px; }
.corner-se { right:-22px; bottom:-30px; }
.wall-tier-3 .fort-corner { background:linear-gradient(90deg,#666b68,#919792 48%,#535a57); }
.wall-tier-5 .fort-corner::after { background:#17382f; box-shadow:inset 0 0 13px rgba(90,239,188,.32),0 0 9px rgba(87,234,184,.18); }

.fort-gate {
    left:50%; bottom:-27px; width:124px; height:88px; transform:translateX(-50%);
    border:3px solid #4b3525; border-radius:12px 12px 4px 4px;
    background:linear-gradient(90deg,#75614e,#9d866c 48%,#6b5746);
    box-shadow:inset 0 7px rgba(255,255,255,.11),inset 0 -10px rgba(35,23,16,.22),0 13px 16px rgba(9,29,18,.36);
}
.fort-gate:hover { transform:translateX(-50%) translateY(-3px); }
.fort-gate::before { content:""; position:absolute; left:-12px; right:-12px; top:-18px; height:30px; clip-path:polygon(0 100%,0 18%,18% 18%,18% 100%,34% 100%,34% 18%,50% 18%,50% 100%,66% 100%,66% 18%,82% 18%,82% 100%,100% 100%); background:#a38c71; border:2px solid rgba(49,34,23,.52); }
.gate-door { position:absolute; left:24px; right:24px; bottom:0; height:59px; border:4px solid #443023; border-bottom:0; border-radius:30px 30px 0 0; background:repeating-linear-gradient(90deg,#493526 0 13px,#624735 13px 16px); box-shadow:inset 0 0 17px rgba(0,0,0,.28); }
.gate-door::after { content:""; position:absolute; left:50%; top:0; bottom:0; width:3px; background:#2e2119; }
.gate-banner { position:absolute; z-index:2; left:50%; top:3px; transform:translateX(-50%); min-width:36px; padding:4px 7px 9px; clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%); color:#ffe29a; background:#173f32; border:1px solid rgba(255,225,145,.4); font-size:.66rem; font-weight:950; letter-spacing:.08em; }
.fort-gate small { position:absolute; z-index:3; left:50%; bottom:-27px; transform:translateX(-50%); white-space:nowrap; padding:4px 9px; border:1px solid rgba(255,221,140,.22); border-radius:999px; color:#fff2ca; background:rgba(7,34,25,.9); font-size:.66rem; font-weight:850; }

.fort-scout-tower {
    width:52px; height:94px;
    border:3px solid #443225; border-radius:10px 10px 7px 7px;
    background:linear-gradient(90deg,#6b5948,#9a846b 48%,#5d4b3d);
    box-shadow:inset 0 6px rgba(255,255,255,.1),0 12px 15px rgba(8,28,18,.36);
}
.fort-scout-tower::before { content:""; position:absolute; left:-7px; right:-7px; top:-13px; height:31px; clip-path:polygon(0 100%,0 20%,24% 20%,24% 100%,40% 100%,40% 20%,60% 20%,60% 100%,76% 100%,76% 20%,100% 20%,100% 100%); background:#9d876e; border:2px solid #493729; }
.fort-scout-tower span { position:absolute; left:50%; top:24px; transform:translateX(-50%); width:27px; height:27px; display:grid; place-items:center; border-radius:50%; color:#9af0cf; background:#173d32; box-shadow:inset 0 0 10px rgba(106,243,194,.22),0 0 12px rgba(76,228,176,.18); animation:scoutSweep 2.8s ease-in-out infinite; }
.fort-scout-tower small { position:absolute; left:50%; bottom:8px; transform:translateX(-50%); color:#ffdf94; font-size:.58rem; font-weight:900; }
.scout-west { left:20%; top:-57px; }
.scout-east { right:20%; top:-57px; }
@keyframes scoutSweep { 50% { transform:translateX(-50%) rotate(90deg); filter:brightness(1.25); } }

.fort-catapult {
    right:9%; bottom:29px; width:116px; height:84px;
    border:2px solid rgba(58,39,24,.6); border-radius:50% 50% 14px 14px;
    background:radial-gradient(ellipse at 50% 82%,#614832 0 25%,transparent 26%),linear-gradient(180deg,rgba(255,255,255,.08),rgba(80,57,35,.2));
    box-shadow:0 10px 12px rgba(10,31,19,.27);
}
.fort-catapult::before,
.fort-catapult::after { content:""; position:absolute; bottom:8px; width:30px; height:30px; border:6px solid #4b3423; border-radius:50%; background:#7b6248; box-shadow:inset 0 0 0 4px #392719; }
.fort-catapult::before { left:13px; }
.fort-catapult::after { right:13px; }
.catapult-arm { position:absolute; left:53px; bottom:23px; width:11px; height:82px; border:3px solid #3e2c1f; border-radius:8px; background:linear-gradient(90deg,#755236,#a77a4f,#5d412d); transform-origin:50% 88%; transform:rotate(-37deg); animation:catapultReady 4.8s ease-in-out infinite; }
.catapult-arm::before { content:""; position:absolute; left:-15px; top:-10px; width:35px; height:19px; border:4px solid #453124; border-radius:50% 50% 35% 35%; background:#6a4b34; }
.catapult-stone { position:absolute; left:23px; top:2px; width:24px; height:24px; display:grid; place-items:center; color:#5d6461; font-size:1.6rem; filter:drop-shadow(0 3px 2px rgba(0,0,0,.3)); animation:catapultStone 4.8s ease-in-out infinite; }
.fort-catapult small { position:absolute; left:50%; bottom:-20px; transform:translateX(-50%); white-space:nowrap; color:#ffe5a2; background:rgba(9,36,26,.88); border-radius:999px; padding:3px 7px; font-size:.58rem; font-weight:900; }
@keyframes catapultReady { 0%,65%,100%{transform:rotate(-37deg)}72%{transform:rotate(14deg)}78%{transform:rotate(-42deg)} }
@keyframes catapultStone { 0%,65%,100%{transform:none;opacity:1}72%{transform:translate(38px,-52px) scale(.65);opacity:.2}78%{opacity:0}84%{opacity:1} }

.central-command-beacon {
    position:absolute; left:50%; top:50%; width:190px; height:190px; transform:translate(-50%,-50%);
    display:grid; place-items:center; pointer-events:none; z-index:1;
    border-radius:50%; border:1px solid rgba(255,223,132,.08);
    background:radial-gradient(circle,rgba(255,223,132,.08),transparent 66%);
}
.central-command-beacon i { width:82px; height:82px; border:1px solid rgba(255,221,128,.18); border-radius:50%; box-shadow:0 0 35px rgba(255,217,110,.1),inset 0 0 20px rgba(255,217,110,.08); animation:commandBeacon 5s ease-in-out infinite; }
.central-command-beacon span { position:absolute; bottom:12px; color:rgba(255,232,170,.35); font-size:.54rem; font-weight:950; letter-spacing:.2em; }
@keyframes commandBeacon { 50%{transform:scale(1.18);opacity:.5} }

/* Das Haupthaus wird als sichtbarer Kommandoturm im Zentrum inszeniert. */
.frontier-ui .building-farmhouse { z-index:38 !important; }
.frontier-ui .building-farmhouse .building-sprite { height:min(91%,165px); transform:translateY(-20px); }
.frontier-ui .building-farmhouse .building-face { inset:31% 12% 2%; border-radius:9px 9px 13px 13px; }
.frontier-ui .building-farmhouse .building-roof { left:7%; right:7%; top:0; height:38%; }
.frontier-ui .building-farmhouse .building-annex { display:block; position:absolute; z-index:1; left:36%; top:-38%; width:28%; height:75%; border:3px solid rgba(58,43,28,.42); border-radius:9px 9px 3px 3px; background:linear-gradient(90deg,#b98b55,#e0b773 48%,#9f7142); box-shadow:inset 4px 4px rgba(255,255,255,.12); }
.frontier-ui .building-farmhouse .building-annex::before { content:""; position:absolute; left:-9px; right:-9px; top:-16px; height:25px; clip-path:polygon(50% 0,100% 60%,88% 100%,12% 100%,0 60%); background:linear-gradient(155deg,#5d3630,#351f1c); }
.frontier-ui .building-farmhouse .building-annex::after { content:"✦"; position:absolute; left:50%; top:28%; transform:translateX(-50%); color:#ffe08a; text-shadow:0 0 12px rgba(255,217,105,.55); }
.frontier-ui .building-farmhouse.visual-tier-3 .building-annex,
.frontier-ui .building-farmhouse.visual-tier-4 .building-annex,
.frontier-ui .building-farmhouse.visual-tier-5 .building-annex { top:-49%; height:87%; }
.frontier-ui .building-farmhouse.visual-tier-5 .building-annex { background:linear-gradient(90deg,#66706b,#a1aaa2 48%,#555e5a); box-shadow:inset 4px 4px rgba(255,255,255,.14),0 0 18px rgba(81,230,178,.12); }

.fortification-dialog {
    position:fixed; inset:0; z-index:1400; display:grid; place-items:center; padding:clamp(.65rem,2vw,1.4rem);
}
.fortification-dialog[hidden] { display:none !important; }
.fortification-backdrop { position:absolute; inset:0; border:0; background:rgba(3,16,12,.78); backdrop-filter:blur(8px); }
.fortification-command-card {
    position:relative; z-index:1; width:min(1040px,100%); max-height:min(90vh,880px); overflow:auto;
    border:1px solid rgba(255,224,144,.2); border-radius:24px;
    color:#edf8f1; background:linear-gradient(145deg,#122f27,#0a211b 72%);
    box-shadow:0 35px 100px rgba(0,0,0,.62),inset 0 1px rgba(255,255,255,.05);
}
.fortification-command-card:focus { outline:none; }
.fortification-command-head { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; padding:1.25rem 1.35rem 1rem; border-bottom:1px solid rgba(255,255,255,.08); background:radial-gradient(circle at 15% 0,rgba(255,211,115,.1),transparent 27%); }
.fortification-command-head h2 { margin:.18rem 0 .3rem; color:#fff0c3; font-size:clamp(1.55rem,3vw,2.25rem); }
.fortification-command-head p { margin:0; color:#9fb7ad; }
.fortification-overview { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.75rem; padding:1rem 1.35rem; }
.fortification-overview > div { display:grid; grid-template-columns:auto 1fr; align-items:center; column-gap:.65rem; padding:.85rem; border:1px solid rgba(255,255,255,.08); border-radius:15px; background:rgba(255,255,255,.035); }
.fortification-overview span { grid-row:1/3; font-size:1.65rem; }
.fortification-overview small { color:#90a99f; }
.fortification-overview strong { color:#ffe19a; }
.fortification-components { display:grid; gap:.8rem; padding:0 1.35rem 1.3rem; }
.fortification-component { display:grid; grid-template-columns:74px minmax(0,1fr) minmax(230px,.48fr); gap:1rem; align-items:center; padding:1rem; border:1px solid rgba(255,255,255,.08); border-radius:18px; background:linear-gradient(100deg,rgba(255,255,255,.045),rgba(255,255,255,.018)); transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease; }
.fortification-component.upgrade-ready { border-color:rgba(255,216,119,.18); }
.fortification-component.is-focused { border-color:#ffe08a; box-shadow:0 0 0 4px rgba(255,216,119,.12),0 0 30px rgba(255,205,91,.12); transform:translateY(-2px); }
.fortification-component-icon { width:64px; height:64px; display:grid; place-items:center; border:1px solid rgba(255,222,136,.18); border-radius:18px; background:linear-gradient(145deg,#755f49,#3f4f46); font-size:2rem; box-shadow:inset 0 0 18px rgba(255,255,255,.06); }
.fortification-component-copy small { color:#7fa293; text-transform:uppercase; letter-spacing:.09em; font-weight:850; }
.fortification-component-copy h3 { margin:.2rem 0; color:#fff0c6; font-size:1.2rem; }
.fortification-component-copy p { margin:.25rem 0 .55rem; color:#a5bcb2; }
.fortification-level-compare { display:flex; align-items:center; flex-wrap:wrap; gap:.45rem; font-size:.77rem; }
.fortification-level-compare span { padding:.25rem .48rem; border-radius:8px; background:rgba(255,255,255,.05); }
.fortification-level-compare span:last-child { color:#8ce1b6; background:rgba(71,209,145,.08); }
.fortification-level-compare b { color:#ffda7c; }
.fortification-component-order { display:grid; justify-items:stretch; gap:.55rem; }
.fortification-component-order > strong { color:#ffe198; font-size:1rem; }
.fortification-component-order > small { color:#e8a991; font-size:.72rem; }
.fortification-cost { display:flex; flex-wrap:wrap; gap:.3rem; }
.fortification-cost .cost-item { color:#e9f4ed; background:rgba(255,255,255,.055); border-color:rgba(255,255,255,.08); }
.fortification-command-footer { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 1.35rem; border-top:1px solid rgba(255,255,255,.08); color:#90a89e; }
body.fortification-dialog-open { overflow:hidden; }

@media (max-width:900px) {
    .fortification-overview { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .fortification-component { grid-template-columns:64px minmax(0,1fr); }
    .fortification-component-order { grid-column:1/-1; grid-template-columns:1fr auto; align-items:center; }
    .fortification-component-order .fortification-cost { grid-column:1/2; }
    .fortification-component-order > small { grid-column:1/2; }
    .fortification-component-order .button { grid-column:2/3; grid-row:1/4; min-width:130px; }
}
@media (max-width:620px) {
    .fortification-dialog { align-items:end; padding:0; }
    .fortification-command-card { width:100%; max-height:92dvh; border-radius:22px 22px 0 0; }
    .fortification-command-head { padding:1rem; }
    .fortification-overview { grid-template-columns:1fr 1fr; padding:.8rem 1rem; gap:.5rem; }
    .fortification-overview > div { padding:.65rem; }
    .fortification-overview span { font-size:1.35rem; }
    .fortification-components { padding:0 1rem 1rem; }
    .fortification-component { grid-template-columns:52px minmax(0,1fr); gap:.7rem; padding:.8rem; }
    .fortification-component-icon { width:48px; height:48px; border-radius:14px; font-size:1.55rem; }
    .fortification-component-copy h3 { font-size:1rem; }
    .fortification-component-copy p { font-size:.76rem; }
    .fortification-component-order { grid-template-columns:1fr; }
    .fortification-component-order .button { grid-column:1; grid-row:auto; width:100%; }
    .fortification-command-footer { align-items:stretch; flex-direction:column; padding:.85rem 1rem calc(.85rem + env(safe-area-inset-bottom)); }
    .fortification-command-footer .button { width:100%; }
    .fort-scout-tower { transform:scale(.9); }
    .fort-catapult { transform:scale(.9); transform-origin:right bottom; }
}
@media (prefers-reduced-motion:reduce) {
    .fort-scout-tower span,.catapult-arm,.catapult-stone,.central-command-beacon i { animation:none !important; }
}
.performance-lite .fort-scout-tower span,
.performance-lite .catapult-arm,
.performance-lite .catapult-stone,
.performance-lite .central-command-beacon i { animation:none !important; }
.fortified-courtyard { z-index:auto; }

/* ========================================================================== 
   2.9.0 CITADEL PRESTIGE — programmed visual quality pass
   ========================================================================== */
:root {
    --prestige-gold:#f5ce73;
    --prestige-gold-soft:#ffe9ae;
    --prestige-jade:#55d2a0;
    --prestige-ink:#061812;
    --prestige-panel:#0b2921;
    --prestige-line:rgba(255,226,153,.22);
    --scene-light-x:50%;
    --scene-light-y:18%;
}
.frontier-ui {
    background:
        radial-gradient(circle at 18% 0,rgba(66,177,133,.09),transparent 30rem),
        radial-gradient(circle at 92% 18%,rgba(245,206,115,.065),transparent 28rem),
        linear-gradient(180deg,#071b16,#071511 62%,#050f0c);
}
.frontier-ui .topbar {
    border-bottom:1px solid rgba(255,226,153,.2);
    background:
        linear-gradient(180deg,rgba(15,52,42,.98),rgba(7,29,23,.98)),
        repeating-linear-gradient(90deg,transparent 0 46px,rgba(255,255,255,.025) 46px 47px);
    box-shadow:0 10px 35px rgba(0,0,0,.32),inset 0 -1px rgba(255,255,255,.035);
}
.frontier-ui .topbar::after {
    content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none;
    background:linear-gradient(90deg,transparent,rgba(245,206,115,.68) 18%,rgba(85,210,160,.58) 50%,rgba(245,206,115,.68) 82%,transparent);
    opacity:.5;
}
.frontier-ui .frontier-brand .brand-emblem {
    position:relative;isolation:isolate;
    border:1px solid rgba(255,225,149,.35);
    background:radial-gradient(circle at 35% 30%,#fff1b6,#c89a3c 44%,#193f32 46%,#0b241d 70%);
    box-shadow:inset 0 1px rgba(255,255,255,.35),0 0 18px rgba(241,200,91,.2),0 7px 12px rgba(0,0,0,.28);
}
.frontier-ui .resource-bar {
    gap:.55rem;padding:.62rem clamp(.65rem,2vw,1.25rem);
    border-bottom:1px solid rgba(255,225,149,.12);
    background:linear-gradient(180deg,rgba(6,27,21,.97),rgba(9,38,29,.94));
    box-shadow:0 12px 24px rgba(0,0,0,.18);
}
.frontier-ui .resource-chip {
    position:relative;isolation:isolate;overflow:hidden;min-height:58px;padding:.55rem .72rem .68rem;
    grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;
    border:1px solid rgba(255,230,166,.14);border-radius:14px 5px 14px 5px;
    background:
        linear-gradient(135deg,rgba(255,255,255,.105),rgba(255,255,255,.025)),
        rgba(10,45,35,.88);
    box-shadow:inset 0 1px rgba(255,255,255,.06),0 8px 18px rgba(0,0,0,.18);
}
.frontier-ui .resource-chip::before {
    content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
    background:linear-gradient(90deg,rgba(85,210,160,.12) var(--resource-fill),transparent var(--resource-fill));
    opacity:.75;
}
.frontier-ui .resource-chip.resource-coins::before { background:linear-gradient(90deg,rgba(245,206,115,.18) var(--resource-fill),transparent var(--resource-fill)); }
.frontier-ui .resource-chip.resource-energy::before { background:linear-gradient(90deg,rgba(96,202,255,.18) var(--resource-fill),transparent var(--resource-fill)); }
.frontier-ui .resource-chip .resource-emblem {
    grid-row:1/4;width:34px;height:34px;display:grid;place-items:center;border-radius:11px 4px 11px 4px;
    background:linear-gradient(145deg,rgba(255,255,255,.15),rgba(0,0,0,.1));
    box-shadow:inset 0 1px rgba(255,255,255,.12),0 5px 9px rgba(0,0,0,.18);
}
.frontier-ui .resource-chip strong { font-size:.91rem;color:#fff8e5;text-shadow:0 2px 4px rgba(0,0,0,.25); }
.frontier-ui .resource-chip small { font-size:.55rem;letter-spacing:.065em;color:rgba(235,247,239,.54); }
.resource-capacity-meter { grid-column:2;height:3px;overflow:hidden;border-radius:99px;background:rgba(0,0,0,.25);box-shadow:inset 0 1px 2px rgba(0,0,0,.3); }
.resource-capacity-meter>i { display:block;width:var(--resource-fill);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--prestige-jade),#b6e49d);box-shadow:0 0 8px rgba(85,210,160,.55); }
.resource-coins .resource-capacity-meter>i { background:linear-gradient(90deg,#c89235,#ffe08b);box-shadow:0 0 8px rgba(245,206,115,.55); }
.resource-energy .resource-capacity-meter>i { background:linear-gradient(90deg,#4b9fd1,#9ee8ff); }

/* Premium map frame and depth */
.frontier-ui .world-console {
    position:relative;isolation:isolate;
    border:1px solid rgba(255,226,153,.38);border-radius:28px 9px 28px 9px;
    background:linear-gradient(145deg,#102c23,#071b16);
    box-shadow:0 34px 90px rgba(0,0,0,.42),0 0 0 5px rgba(255,255,255,.018),inset 0 1px rgba(255,255,255,.06);
}
.frontier-ui .world-console::before {
    content:"";position:absolute;z-index:30;inset:0;pointer-events:none;border-radius:inherit;
    box-shadow:inset 0 0 0 1px rgba(255,237,189,.05),inset 0 0 60px rgba(0,0,0,.15);
}
.frontier-ui .world-toolbar {
    position:relative;z-index:31;min-height:64px;padding:.55rem .75rem;
    background:
        linear-gradient(90deg,rgba(6,34,27,.98),rgba(22,76,58,.97) 56%,rgba(64,68,37,.96)),
        repeating-linear-gradient(135deg,transparent 0 18px,rgba(255,255,255,.025) 18px 19px);
    box-shadow:0 8px 20px rgba(0,0,0,.24),inset 0 -1px rgba(255,229,158,.15);
}
.frontier-ui .world-viewport {
    position:relative;height:760px;
    background:linear-gradient(180deg,#9bd3c0,#6f9c75 26%,#3f6949 100%);
    box-shadow:inset 0 18px 28px rgba(0,0,0,.16);
}
.frontier-ui .fortified-farm-map {
    --scene-shift-x:0px;--scene-shift-y:0px;
    isolation:isolate;overflow:hidden;
    background-color:#6f9c58;
    background-image:
        radial-gradient(circle at var(--scene-light-x) var(--scene-light-y),rgba(255,248,196,.24),transparent 26rem),
        radial-gradient(ellipse at 38% 62%,rgba(53,112,64,.2),transparent 42%),
        repeating-linear-gradient(118deg,rgba(255,255,255,.025) 0 2px,transparent 2px 23px),
        repeating-linear-gradient(0deg,transparent 0 calc(var(--tile) - 1px),rgba(30,69,42,.075) calc(var(--tile) - 1px) var(--tile)),
        repeating-linear-gradient(90deg,transparent 0 calc(var(--tile) - 1px),rgba(30,69,42,.075) calc(var(--tile) - 1px) var(--tile));
    background-size:auto,auto,72px 72px,var(--tile) var(--tile),var(--tile) var(--tile);
    box-shadow:inset 0 0 190px rgba(4,28,16,.46),inset 0 0 0 10px rgba(5,37,22,.14);
}
.frontier-ui .fortified-farm-map::before {
    content:"";position:absolute;z-index:0;inset:0;pointer-events:none;opacity:.58;
    background:
        radial-gradient(circle at 8% 20%,rgba(46,87,49,.22) 0 2px,transparent 3px),
        radial-gradient(circle at 84% 72%,rgba(229,223,143,.17) 0 1px,transparent 2px),
        repeating-radial-gradient(ellipse at center,transparent 0 14px,rgba(35,85,48,.055) 15px 16px);
    background-size:56px 48px,43px 51px,130px 90px;
}
.frontier-ui .world-map::after {
    z-index:120;
    background:
        linear-gradient(115deg,rgba(255,247,199,.08),transparent 27%,transparent 74%,rgba(5,21,14,.16)),
        radial-gradient(ellipse at center,transparent 50%,rgba(4,24,14,.32) 100%);
    mix-blend-mode:multiply;
}

/* Time-of-day palette */
.scene-phase-dawn { filter:saturate(.92) sepia(.035); }
.scene-phase-dawn .sky-glow { background:linear-gradient(150deg,rgba(255,175,116,.22),transparent 42%); }
.scene-phase-day .sky-glow { background:linear-gradient(150deg,rgba(255,249,198,.13),transparent 42%); }
.scene-phase-dusk { filter:saturate(.88) sepia(.08); }
.scene-phase-dusk .sky-glow { background:linear-gradient(155deg,rgba(255,148,91,.24),transparent 48%); }
.scene-phase-night { filter:saturate(.78) brightness(.76) hue-rotate(5deg); }
.scene-phase-night .sky-glow { background:linear-gradient(155deg,rgba(43,75,137,.32),transparent 52%); }
.world-atmosphere { z-index:105; }
.sky-glow { position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen; }
.moon-wash { position:absolute;width:330px;height:330px;right:6%;top:3%;border-radius:50%;opacity:0;background:radial-gradient(circle,rgba(204,229,255,.32),rgba(101,150,205,.09) 35%,transparent 68%); }
.scene-phase-night .moon-wash { opacity:1; }
.scene-phase-night .sun-wash { opacity:0; }
.scene-phase-dusk .sun-wash { background:radial-gradient(circle,rgba(255,189,122,.42),rgba(236,116,72,.12) 42%,transparent 70%); }
.light-shaft { position:absolute;top:-15%;width:150px;height:82%;opacity:.16;transform:rotate(18deg);background:linear-gradient(180deg,rgba(255,244,196,.62),transparent 78%);filter:blur(6px);animation:prestigeLight 9s ease-in-out infinite alternate; }
.shaft-one { right:16%; }
.shaft-two { right:34%;width:80px;animation-delay:-4s;opacity:.1; }
.mist-bank { position:absolute;height:90px;width:620px;border-radius:50%;background:rgba(235,255,241,.11);filter:blur(22px);animation:mistDrift 28s linear infinite; }
.mist-one { left:-420px;top:68%; }
.mist-two { left:28%;top:28%;transform:scale(.7);animation-duration:42s;animation-delay:-19s;opacity:.45; }
.dust-field { position:absolute;inset:0;opacity:.28;background-image:radial-gradient(circle,rgba(255,239,179,.8) 0 1px,transparent 1.4px);background-size:71px 63px;animation:dustFloat 14s linear infinite; }
@keyframes prestigeLight { to { opacity:.27;transform:translateX(34px) rotate(18deg); } }
@keyframes mistDrift { to { transform:translateX(1900px) scale(1.1); } }
@keyframes dustFloat { to { background-position:40px -63px; } }
.scene-phase-night .cloud { opacity:.18; }
.scene-phase-night .light-shaft { opacity:.035; }
.scene-phase-night .dust-field { opacity:.16; }

/* District composition */
.world-district-label {
    position:absolute;z-index:20;display:grid;gap:1px;pointer-events:none;padding:.35rem .55rem;
    border-left:2px solid rgba(255,220,126,.54);border-radius:0 8px 8px 0;
    color:rgba(255,246,211,.78);background:linear-gradient(90deg,rgba(6,37,26,.78),rgba(6,37,26,.08));
    text-shadow:0 2px 4px rgba(0,0,0,.5);backdrop-filter:blur(2px);
}
.world-district-label span { font-size:.54rem;font-weight:950;letter-spacing:.16em; }
.world-district-label small { color:rgba(230,244,235,.48);font-size:.46rem;letter-spacing:.05em; }
.district-fields { left:calc(1.1 * var(--tile));top:calc(15.8 * var(--tile)); }
.district-mines { right:calc(1.1 * var(--tile));top:calc(2.2 * var(--tile));text-align:right;border-left:0;border-right:2px solid rgba(255,220,126,.54);border-radius:8px 0 0 8px;background:linear-gradient(270deg,rgba(6,37,26,.78),rgba(6,37,26,.08)); }
.district-citadel { left:50%;top:38px;transform:translateX(-50%);z-index:8;text-align:center;border:1px solid rgba(255,224,142,.24);border-radius:999px;background:rgba(8,40,30,.58);box-shadow:0 8px 18px rgba(0,0,0,.16); }
.courtyard-road-grid { position:absolute;z-index:2;inset:28px;pointer-events:none;opacity:.76; }
.courtyard-road-grid::before,.courtyard-road-grid::after { content:"";position:absolute;background:repeating-linear-gradient(90deg,#ad9366 0 16px,#c3a879 16px 32px);border:1px solid rgba(66,47,25,.15);box-shadow:inset 0 2px rgba(255,255,255,.14),0 4px 8px rgba(38,54,29,.12); }
.courtyard-road-grid::before { left:0;right:0;top:50%;height:22px;transform:translateY(-50%); }
.courtyard-road-grid::after { top:0;bottom:0;left:50%;width:22px;transform:translateX(-50%);background:repeating-linear-gradient(0deg,#ad9366 0 16px,#c3a879 16px 32px); }
.courtyard-road-grid i { position:absolute;left:50%;top:50%;width:106px;height:106px;transform:translate(-50%,-50%) rotate(45deg);border:12px solid rgba(184,158,107,.78);border-radius:18px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.12),0 5px 10px rgba(0,0,0,.1); }
.courtyard-road-grid i:last-child { width:154px;height:154px;border-width:4px;border-style:dashed;opacity:.35; }

/* Living world elements */
.world-life-layer { position:absolute;z-index:25;inset:0;pointer-events:none;overflow:hidden; }
.ambient-cart { position:absolute;width:54px;height:31px;filter:drop-shadow(0 7px 4px rgba(15,45,24,.3));animation:cartRoute 34s linear infinite; }
.ambient-cart::before { content:"";position:absolute;left:13px;right:3px;top:5px;height:17px;border:2px solid #513b28;border-radius:4px;background:linear-gradient(180deg,#b4834d,#765033); }
.ambient-cart::after { content:"";position:absolute;left:7px;bottom:0;width:10px;height:10px;border:3px solid #3e2e22;border-radius:50%;background:#8f714e;box-shadow:32px 0 0 -3px #8f714e,32px 0 0 0 #3e2e22; }
.ambient-cart i { position:absolute;left:0;top:10px;width:17px;height:9px;border-radius:50% 60% 45% 45%;background:#9e7650; }
.cart-one { left:-70px;top:calc(11 * var(--tile) + 2px); }
.cart-two { left:calc(30 * var(--tile));top:calc(11 * var(--tile) + 28px);animation-name:cartRouteReverse;animation-duration:46s;animation-delay:-12s;transform:scaleX(-1);opacity:.7; }
.ambient-lantern { position:absolute;width:6px;height:28px;border-radius:3px;background:#493a2c;box-shadow:0 2px 3px rgba(0,0,0,.25); }
.ambient-lantern::after { content:"";position:absolute;left:-5px;top:-4px;width:16px;height:16px;border-radius:50%;background:#ffd779;box-shadow:0 0 12px 5px rgba(255,195,83,.33);animation:lanternFlicker 2.2s ease-in-out infinite alternate; }
.lantern-one { left:calc((var(--wall-x) - .5) * var(--tile));top:calc((var(--wall-y) + 5) * var(--tile)); }
.lantern-two { left:calc((var(--wall-x) + var(--wall-w) + .35) * var(--tile));top:calc((var(--wall-y) + 8) * var(--tile));animation-delay:-1.1s; }
.scene-phase-day .ambient-lantern,.scene-phase-dawn .ambient-lantern { opacity:.2; }
.ambient-fireflies { position:absolute;inset:0;opacity:0;background-image:radial-gradient(circle,#fff2a8 0 1.2px,transparent 1.8px);background-size:83px 71px;animation:fireflyDrift 7s ease-in-out infinite alternate; }
.scene-phase-dusk .ambient-fireflies,.scene-phase-night .ambient-fireflies { opacity:.48; }
@keyframes cartRoute { from{transform:translateX(0)} to{transform:translateX(calc(30 * var(--tile) + 140px))} }
@keyframes cartRouteReverse { from{transform:translateX(0) scaleX(-1)} to{transform:translateX(calc(-30 * var(--tile) - 140px)) scaleX(-1)} }
@keyframes lanternFlicker { to{filter:brightness(1.25);transform:scale(.88)} }
@keyframes fireflyDrift { to{background-position:35px -22px;opacity:.7} }

/* Fortress materials */
.fortified-courtyard {
    border-radius:8px;
    filter:drop-shadow(0 24px 22px rgba(5,28,16,.28));
}
.courtyard-ground {
    background:
        radial-gradient(circle at 50% 50%,rgba(255,239,185,.1),transparent 34%),
        repeating-linear-gradient(45deg,rgba(255,255,255,.025) 0 1px,transparent 1px 24px),
        linear-gradient(145deg,#789362,#657f55);
    box-shadow:inset 0 0 60px rgba(25,55,29,.22),inset 0 0 0 8px rgba(255,255,255,.035);
}
.fort-wall {
    overflow:visible!important;
    border-color:rgba(55,45,36,.58)!important;
    background-image:
        linear-gradient(180deg,rgba(255,255,255,.19),transparent 38%),
        repeating-linear-gradient(90deg,#a18d75 0 33px,#725f4e 33px 37px,#b09a80 37px 69px,#665443 69px 74px)!important;
    box-shadow:inset 0 5px rgba(255,255,255,.16),inset 0 -9px rgba(41,30,22,.24),0 11px 15px rgba(8,25,15,.34),0 0 0 1px rgba(255,239,200,.05)!important;
}
.fort-wall::after {
    content:"";position:absolute;inset:4px;pointer-events:none;opacity:.42;
    background:repeating-linear-gradient(90deg,transparent 0 26px,rgba(55,39,28,.22) 26px 28px),repeating-linear-gradient(0deg,transparent 0 12px,rgba(255,255,255,.08) 12px 13px);
}
.wall-west::after,.wall-east::after { background:repeating-linear-gradient(0deg,transparent 0 26px,rgba(55,39,28,.22) 26px 28px),repeating-linear-gradient(90deg,transparent 0 12px,rgba(255,255,255,.08) 12px 13px); }
.wall-tier-4 .fort-wall,.wall-tier-5 .fort-wall { filter:saturate(.85) contrast(1.06); }
.wall-tier-5 .fort-wall { box-shadow:inset 0 5px rgba(255,255,255,.14),inset 0 -9px rgba(4,15,13,.34),0 12px 18px rgba(5,21,14,.44),0 0 18px rgba(85,210,160,.13)!important; }
.fort-corner {
    border:1px solid rgba(55,43,33,.7)!important;
    box-shadow:inset 5px 5px rgba(255,255,255,.13),inset -7px -9px rgba(37,26,20,.18),0 14px 18px rgba(5,25,14,.38)!important;
}
.fort-corner::before { filter:drop-shadow(0 4px 3px rgba(0,0,0,.25)); }
.fort-gate {
    background:linear-gradient(90deg,#7b5b3b,#b18354 46%,#6a4a31)!important;
    box-shadow:inset 5px 0 rgba(255,255,255,.08),inset -7px 0 rgba(38,25,16,.24),0 12px 18px rgba(0,0,0,.35)!important;
}
.gate-door { background:repeating-linear-gradient(90deg,#745237 0 8px,#4e3525 8px 11px)!important;box-shadow:inset 0 5px rgba(255,255,255,.05),inset 0 -7px rgba(0,0,0,.2); }

/* High-detail buildings */
.frontier-ui .world-building {
    --building-depth:0;--building-accent:#f1ca72;
    z-index:calc(32 + var(--building-depth));
    perspective:420px;
    transition:transform .2s cubic-bezier(.2,.8,.25,1),filter .2s ease;
}
.frontier-ui .world-building:hover,.frontier-ui .world-building.selected { transform:translateY(-9px) scale(1.035);filter:brightness(1.08) saturate(1.12); }
.frontier-ui .building-shadow { left:12%;right:5%;bottom:5%;height:21%;background:rgba(4,23,12,.44);filter:blur(7px);transform:skewX(-21deg) translateX(6px); }
.frontier-ui .building-foundation {
    left:4%;right:4%;bottom:5%;height:30%;border:2px solid rgba(255,255,255,.12);
    background:
        repeating-linear-gradient(95deg,rgba(255,255,255,.045) 0 8px,transparent 8px 18px),
        linear-gradient(180deg,#899d70,#4d6746);
    box-shadow:inset 0 5px rgba(255,255,255,.12),inset 0 -8px rgba(29,52,28,.16),0 12px 15px rgba(15,39,20,.24);
    transform:skewX(-9deg);
}
.frontier-ui .building-sprite {
    transform:translateY(-10px) rotateX(1deg);
    filter:drop-shadow(0 14px 8px rgba(8,30,16,.36));
    transform-style:preserve-3d;
}
.frontier-ui .building-face {
    overflow:visible;border-width:2px;
    background:
        linear-gradient(110deg,rgba(255,255,255,.2),transparent 28%),
        linear-gradient(145deg,#d9b879,#ae7543 62%,#87542f);
    box-shadow:inset -13px -12px rgba(58,35,18,.12),inset 4px 4px rgba(255,255,255,.13),0 4px 0 rgba(75,48,26,.24);
}
.frontier-ui .building-face::before {
    content:"";position:absolute;inset:5px;border:1px solid rgba(255,255,255,.08);border-radius:5px;pointer-events:none;
    background:repeating-linear-gradient(0deg,transparent 0 14px,rgba(83,52,29,.08) 14px 15px);
}
.frontier-ui .building-roof {
    background:
        repeating-linear-gradient(165deg,rgba(255,255,255,.08) 0 3px,transparent 3px 11px),
        linear-gradient(155deg,#b34f3d,#6f2b27 74%);
    box-shadow:inset 0 -9px rgba(53,21,18,.22),inset 5px 5px rgba(255,255,255,.1),0 5px 0 rgba(64,29,23,.12);
}
.building-trim { position:absolute;z-index:5;left:13%;right:13%;bottom:12%;height:5px;border-radius:4px;background:linear-gradient(90deg,#665039,#e2c68f 42%,#604934);box-shadow:0 3px 4px rgba(0,0,0,.25); }
.building-props { position:absolute;z-index:6;left:8%;right:8%;bottom:4%;height:24%;pointer-events:none; }
.frontier-ui .facade-window {
    border:1px solid rgba(52,38,24,.5);background:linear-gradient(145deg,#bce4df,#4f8790 70%);
    box-shadow:inset 0 0 5px rgba(255,255,255,.5),0 2px 3px rgba(0,0,0,.18);
}
.scene-phase-dusk .facade-window,.scene-phase-night .facade-window { background:#ffd06d;box-shadow:inset 0 0 5px #fff4b0,0 0 11px rgba(255,194,71,.52); }
.frontier-ui .facade-door { background:repeating-linear-gradient(90deg,#6f4b31 0 6px,#4d3425 6px 8px);box-shadow:inset 3px 0 rgba(255,255,255,.06),0 2px 3px rgba(0,0,0,.18); }
.frontier-ui .building-icon {
    left:17%;top:31%;width:28px;height:28px;display:grid;place-items:center;
    border:1px solid rgba(255,235,181,.28);border-radius:9px 3px 9px 3px;
    font-size:1.05rem;background:linear-gradient(145deg,rgba(8,44,31,.91),rgba(25,84,58,.88));
    box-shadow:inset 0 1px rgba(255,255,255,.1),0 5px 8px rgba(0,0,0,.24);
    filter:drop-shadow(0 2px 1px rgba(0,0,0,.2));
}
.frontier-ui .building-caption {
    left:6%;right:4%;bottom:-5px;display:flex;align-items:center;justify-content:space-between;gap:.35rem;
    border:1px solid rgba(255,226,151,.25);border-radius:10px 3px 10px 3px;padding:4px 6px;
    color:#f8f1dc;background:linear-gradient(90deg,rgba(5,31,22,.95),rgba(15,69,47,.93));
    box-shadow:0 7px 13px rgba(0,0,0,.28),inset 0 1px rgba(255,255,255,.05);
    text-align:left;
}
.frontier-ui .building-caption>span { overflow:hidden;text-overflow:ellipsis; }
.frontier-ui .building-caption b { flex:0 0 auto;padding:2px 4px;border-radius:5px;color:#ffe291;background:rgba(255,212,103,.09);font-size:.55rem; }
.building-activity-light { position:absolute;z-index:10;right:6%;top:15%;width:7px;height:7px;border-radius:50%;background:#70dfa7;box-shadow:0 0 8px rgba(72,223,155,.75); }
.status-building .building-activity-light,.status-upgrading .building-activity-light { background:#ffd361;box-shadow:0 0 10px rgba(255,196,65,.8);animation:activityPulse .8s ease-in-out infinite alternate; }
.status-queued_building .building-activity-light,.status-queued_upgrading .building-activity-light { background:#7dc9ff;box-shadow:0 0 9px rgba(100,190,255,.72); }
@keyframes activityPulse { to{transform:scale(1.55);opacity:.55} }
.frontier-ui .building-level-ring { top:8%;right:5%;padding:3px 5px;background:rgba(4,27,19,.78);box-shadow:0 4px 8px rgba(0,0,0,.22); }
.frontier-ui .world-building.selected::after { inset:-3px;border:2px solid #ffe696;border-radius:45%;box-shadow:0 0 0 5px rgba(255,226,135,.16),0 0 35px rgba(255,213,91,.5);animation:selectedBuildingGlow 1.8s ease-in-out infinite alternate; }
@keyframes selectedBuildingGlow { to{box-shadow:0 0 0 8px rgba(255,226,135,.08),0 0 46px rgba(255,213,91,.62)} }

/* Building progression visibly changes silhouette */
.frontier-ui .visual-tier-2 .building-sprite { height:min(85%,138px); }
.frontier-ui .visual-tier-3 .building-sprite { height:min(90%,148px); }
.frontier-ui .visual-tier-4 .building-sprite { height:min(94%,157px); }
.frontier-ui .visual-tier-5 .building-sprite { height:min(98%,166px); }
.frontier-ui .visual-tier-3 .building-annex,.frontier-ui .visual-tier-4 .building-annex,.frontier-ui .visual-tier-5 .building-annex { opacity:1;transform:translateX(0) scale(1); }
.frontier-ui .visual-tier-4 .building-banner,.frontier-ui .visual-tier-5 .building-banner { opacity:1; }
.frontier-ui .visual-tier-5 .building-aura { opacity:.36;background:radial-gradient(ellipse,rgba(255,224,128,.28),transparent 68%);animation:tierFiveAura 3.4s ease-in-out infinite alternate; }
@keyframes tierFiveAura { to{transform:scale(1.09);opacity:.62} }

/* Category-specific architecture */
.frontier-ui .category-landwirtschaft { --building-accent:#d8ba58; }
.frontier-ui .category-landwirtschaft .building-face { background:linear-gradient(145deg,#e3c27e,#a97042); }
.frontier-ui .category-landwirtschaft .building-roof { background:repeating-linear-gradient(165deg,#8f642f 0 7px,#6e4926 7px 13px); }
.frontier-ui .category-industrie { --building-accent:#94b6b2; }
.frontier-ui .category-industrie .building-face { background:linear-gradient(145deg,#899f9c,#4e6866); }
.frontier-ui .category-industrie .building-roof { background:repeating-linear-gradient(165deg,#6e7978 0 7px,#4b5756 7px 12px); }
.frontier-ui .category-militaer { --building-accent:#d26c55; }
.frontier-ui .category-militaer .building-face { background:linear-gradient(145deg,#b68665,#76523d); }
.frontier-ui .category-militaer .building-roof { background:repeating-linear-gradient(165deg,#7b3533 0 7px,#552526 7px 13px); }
.frontier-ui .category-versorgung { --building-accent:#60b6a7; }
.frontier-ui .category-versorgung .building-face { background:linear-gradient(145deg,#d5c59b,#9a865f); }
.frontier-ui .category-verwaltung .building-face { background:linear-gradient(145deg,#dcb879,#9d653c); }

/* Programmed props make each building recognizable without external images */
.building-field .building-face,.building-field .building-roof,.building-field .building-trim { display:none; }
.building-field .building-sprite { inset:23% 1% 6%;background:repeating-linear-gradient(90deg,#8f6c2f 0 7px,#e7cb58 7px 12px,#b48a31 12px 18px);border-radius:50% 50% 24% 24%;transform:skewX(-7deg) translateY(-3px);box-shadow:inset 0 8px rgba(255,240,133,.2),0 11px 10px rgba(39,65,29,.25); }
.building-field .building-icon { left:50%;top:43%;background:rgba(91,65,24,.72); }
.building-field .building-props::before { content:"";position:absolute;left:8%;right:8%;bottom:8%;height:6px;border-radius:50%;background:rgba(85,55,22,.22);box-shadow:0 -15px rgba(255,229,94,.14),0 -30px rgba(255,229,94,.09); }
.building-chicken_coop .building-props::after { content:"•••";position:absolute;right:4%;bottom:0;color:#fff2d0;letter-spacing:4px;text-shadow:0 2px 2px rgba(0,0,0,.25);animation:animalYard 2.1s ease-in-out infinite; }
.building-cow_barn .building-props::after { content:"●  ●";position:absolute;right:2%;bottom:-1px;color:#43382d;letter-spacing:3px;text-shadow:0 2px #f4e3c4;animation:animalYard 2.8s ease-in-out infinite reverse; }
.building-warehouse .building-props::before { content:"";position:absolute;left:4%;bottom:0;width:25px;height:18px;border:2px solid #60482f;background:repeating-linear-gradient(0deg,#b2874d 0 5px,#7b5a36 5px 7px);box-shadow:31px 2px 0 -2px #977044; }
.building-barracks .building-props::before { content:"⚔";position:absolute;right:4%;bottom:1px;color:#e7d0a0;font-size:1.35rem;text-shadow:0 3px 3px rgba(0,0,0,.32); }
.building-clinic .building-props::before { content:"+";position:absolute;right:5%;bottom:3px;width:23px;height:23px;display:grid;place-items:center;border-radius:5px;color:white;background:#b9443f;box-shadow:0 4px 7px rgba(0,0,0,.24);font-weight:950; }
.building-water_pump .building-props::before { content:"";position:absolute;right:2%;bottom:0;width:34px;height:19px;border:3px solid #537d83;border-radius:50%;background:#73b7c1;box-shadow:inset 0 0 0 4px rgba(190,242,244,.42); }
.building-stone_quarry .building-props::before,.building-iron_mine .building-props::before,.building-gold_mine .building-props::before { content:"◆◆";position:absolute;right:-2%;bottom:0;color:#7d8581;letter-spacing:-4px;font-size:1.25rem;text-shadow:0 4px 3px rgba(0,0,0,.32); }
.building-iron_mine .building-props::before { color:#74868e; }
.building-gold_mine .building-props::before { color:#e6bd50;text-shadow:0 0 7px rgba(255,211,82,.48),0 4px 3px rgba(0,0,0,.3); }
.building-sawmill .building-props::before { content:"";position:absolute;right:1%;bottom:0;width:27px;height:27px;border:4px dashed #d5d0bf;border-radius:50%;box-shadow:0 0 0 2px rgba(48,42,34,.45);animation:millWheel 2.8s linear infinite; }
.building-wind_turbine .building-face { left:39%;right:39%;top:28%; }
.building-wind_turbine .building-roof { display:none; }
.building-wind_turbine .building-trim { display:none; }
.building-wind_turbine .wind-blades { font-size:4rem!important;color:#e9e4d3;filter:drop-shadow(0 5px 3px rgba(0,0,0,.22)); }
.building-farmhouse .building-trim { height:7px;background:linear-gradient(90deg,#5b4532,#f0d49c 40%,#604631); }
.building-farmhouse .building-props::before,.building-farmhouse .building-props::after { content:"";position:absolute;bottom:-2px;width:15px;height:33px;border:2px solid rgba(49,37,25,.42);background:linear-gradient(90deg,#7a5b3d,#c0935d); }
.building-farmhouse .building-props::before { left:1%; }
.building-farmhouse .building-props::after { right:1%; }

/* Inspector and command surfaces */
.frontier-ui .world-inspector {
    border-left:1px solid rgba(255,225,148,.2);
    background:
        radial-gradient(circle at 50% 0,rgba(245,206,115,.085),transparent 18rem),
        linear-gradient(180deg,#102e27,#081d18);
    box-shadow:-18px 0 40px rgba(0,0,0,.28),inset 1px 0 rgba(255,255,255,.025);
}
.frontier-ui .world-inspector::before { content:"";display:block;height:3px;margin:-1rem -1rem 1rem;background:linear-gradient(90deg,transparent,var(--prestige-gold),var(--prestige-jade),transparent);opacity:.55; }
.frontier-ui .inspector-title>span { background:radial-gradient(circle at 35% 25%,rgba(255,238,187,.18),rgba(255,255,255,.045));box-shadow:inset 0 1px rgba(255,255,255,.08),0 8px 18px rgba(0,0,0,.2); }
.frontier-ui .map-command-dock { border:1px solid rgba(255,225,147,.18);border-radius:18px 6px 18px 6px;background:linear-gradient(145deg,rgba(10,44,35,.96),rgba(6,27,22,.96));box-shadow:0 14px 32px rgba(0,0,0,.25); }
.frontier-ui .map-command-dock>* { border-right:1px solid rgba(255,255,255,.06); }
.frontier-ui .map-command-dock>*:hover { background:linear-gradient(145deg,rgba(85,210,160,.19),rgba(245,206,115,.08));box-shadow:inset 0 -2px rgba(245,206,115,.35); }

/* Responsive and performance safeguards */
@media (max-width:900px) {
    .frontier-ui .world-viewport { height:min(72dvh,690px); }
    .world-district-label { transform:scale(.88);transform-origin:left top; }
    .district-mines { transform:scale(.88);transform-origin:right top; }
    .district-citadel { transform:translateX(-50%) scale(.85); }
    .ambient-cart { opacity:.7; }
}
@media (max-width:620px) {
    .frontier-ui .resource-bar { padding:.45rem .55rem;gap:.4rem; }
    .frontier-ui .resource-chip { flex-basis:116px;min-height:52px;padding:.45rem .55rem .58rem; }
    .frontier-ui .resource-chip .resource-emblem { width:30px;height:30px; }
    .frontier-ui .world-viewport { height:66dvh;min-height:500px; }
    .world-district-label { display:none; }
    .ambient-cart { opacity:.48; }
    .frontier-ui .building-caption { bottom:-7px;padding:3px 5px; }
    .frontier-ui .building-caption>span { max-width:74%; }
    .courtyard-road-grid { inset:24px;opacity:.62; }
}
@media (prefers-reduced-motion:reduce) {
    .light-shaft,.mist-bank,.dust-field,.ambient-cart,.ambient-lantern::after,.ambient-fireflies,.building-activity-light,.visual-tier-5 .building-aura,.world-building.selected::after { animation:none!important; }
}
.performance-lite .light-shaft,.performance-lite .mist-bank,.performance-lite .dust-field,.performance-lite .ambient-cart,.performance-lite .ambient-fireflies { display:none!important; }
.performance-lite .fortified-farm-map { background-image:radial-gradient(circle at 50% 18%,rgba(255,248,196,.16),transparent 22rem),repeating-linear-gradient(0deg,transparent 0 calc(var(--tile) - 1px),rgba(30,69,42,.06) calc(var(--tile) - 1px) var(--tile)),repeating-linear-gradient(90deg,transparent 0 calc(var(--tile) - 1px),rgba(30,69,42,.06) calc(var(--tile) - 1px) var(--tile)); }
.page-hidden .light-shaft,.page-hidden .mist-bank,.page-hidden .dust-field,.page-hidden .ambient-cart,.page-hidden .ambient-fireflies { animation-play-state:paused!important; }
.frontier-ui .category-produktion { --building-accent:#d89955; }
.frontier-ui .category-produktion .building-face { background:linear-gradient(145deg,#c99d69,#79583f); }
.frontier-ui .category-produktion .building-roof { background:repeating-linear-gradient(165deg,#6f5550 0 7px,#4e3c39 7px 13px); }
.frontier-ui .category-rohstoffe { --building-accent:#8d9b95; }
.frontier-ui .category-rohstoffe .building-face { background:linear-gradient(145deg,#8b928b,#4d5b55); }
.frontier-ui .category-rohstoffe .building-roof { background:repeating-linear-gradient(165deg,#5c6763 0 7px,#404b47 7px 13px); }
.frontier-ui .command-panel-metrics .command-daylight { grid-column:1/-1;color:#ffe4a2;border:1px solid rgba(255,220,128,.14);background:linear-gradient(90deg,rgba(245,206,115,.11),rgba(85,210,160,.07)); }

/* ========================================================================== 
   3.0.0 FRONTIER DOMINION — MMO engine, command progression and operations
   ========================================================================== */
:root {
    --dominion-gold: #f2c96d;
    --dominion-mint: #78e0b0;
    --dominion-cyan: #64c8d4;
    --dominion-red: #ef7468;
    --dominion-ink: #071a18;
    --dominion-panel: rgba(8, 31, 28, .94);
}

.game-page {
    background:
        radial-gradient(circle at 20% -10%, rgba(68, 165, 124, .18), transparent 34rem),
        radial-gradient(circle at 90% 18%, rgba(225, 165, 64, .11), transparent 30rem),
        linear-gradient(180deg, #071a17 0, #0a201b 28rem, #081612 100%);
}

.commander-rank {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    gap: .55rem;
    min-width: 10.5rem;
    padding: .48rem .72rem .58rem;
    overflow: hidden;
    border: 1px solid rgba(242, 201, 109, .35);
    border-radius: 14px;
    background: linear-gradient(145deg, rgba(25, 58, 48, .95), rgba(7, 29, 26, .98));
    box-shadow: inset 0 1px rgba(255,255,255,.08), 0 10px 28px rgba(0,0,0,.2);
}
.commander-rank > i { color: var(--dominion-gold); font-size: 1.25rem; filter: drop-shadow(0 0 9px rgba(242,201,109,.55)); }
.commander-rank span { display: grid; line-height: 1.05; }
.commander-rank small { color: #a9c8bc; font-size: .62rem; text-transform: uppercase; letter-spacing: .08em; }
.commander-rank strong { color: #f7edcf; font-size: .78rem; white-space: nowrap; }
.commander-rank > em {
    position: absolute; inset: auto 0 0; height: 3px; background: rgba(255,255,255,.08);
}
.commander-rank > em::after {
    content: ""; display: block; width: var(--command-progress, 0%); height: 100%;
    background: linear-gradient(90deg, var(--dominion-mint), var(--dominion-gold));
    box-shadow: 0 0 12px rgba(120,224,176,.7); transition: width .45s ease;
}

.dominion-command-deck {
    display: grid;
    grid-template-columns: minmax(17rem, 1.05fr) minmax(19rem, 1.3fr) minmax(15rem, .85fr);
    gap: 1rem;
    margin: 0 0 1rem;
    padding: 1rem;
    border: 1px solid rgba(120, 224, 176, .2);
    border-radius: 22px;
    background:
        linear-gradient(120deg, rgba(10, 45, 38, .97), rgba(7, 25, 23, .98)),
        radial-gradient(circle at 0 0, rgba(120,224,176,.12), transparent 25rem);
    box-shadow: inset 0 1px rgba(255,255,255,.07), 0 20px 50px rgba(0,0,0,.24);
    contain: layout paint;
}
.dominion-command-core { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .85rem; }
.dominion-command-core > strong { grid-column: 1 / -1; justify-self: start; padding: .32rem .58rem; border-radius: 999px; color: #baf5d5; background: rgba(120,224,176,.1); border: 1px solid rgba(120,224,176,.25); font-size: .72rem; }
.dominion-rank-emblem {
    display: grid; place-items: center; width: 3.45rem; aspect-ratio: 1; border-radius: 18px;
    color: #ffe4a1; font-size: 1.65rem; background: linear-gradient(145deg, #9b7227, #33220c);
    border: 1px solid rgba(255,226,152,.45); box-shadow: 0 0 28px rgba(242,201,109,.22), inset 0 1px rgba(255,255,255,.2);
    transform: rotate(45deg);
}
.dominion-rank-emblem::first-letter { transform: rotate(-45deg); }
.dominion-command-core h2 { margin: .1rem 0 .2rem; color: #fff3cf; font-size: clamp(1.08rem, 2vw, 1.42rem); }
.dominion-command-core p:last-child { margin: 0; color: #a9c8bc; font-size: .8rem; line-height: 1.45; }
.dominion-command-progress { display: grid; align-content: center; gap: .55rem; padding: .75rem 1rem; border-inline: 1px solid rgba(255,255,255,.08); }
.dominion-command-progress > div { display: flex; justify-content: space-between; gap: .7rem; color: #b5cec4; font-size: .75rem; }
.dominion-command-progress b { color: #fff0c8; }
.dominion-command-track { height: 14px; padding: 3px; border-radius: 999px; background: rgba(0,0,0,.35); border: 1px solid rgba(255,255,255,.08); overflow: hidden; }
.dominion-command-track i { display: block; width: var(--command-progress, 0%); height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4cc993, #e7c05f); box-shadow: 0 0 18px rgba(92,218,159,.5); transition: width .6s cubic-bezier(.2,.8,.2,1); }
.dominion-command-progress small { color: #819f95; line-height: 1.35; }
.dominion-rank-rewards { display: grid; align-content: center; gap: .55rem; }
.rank-reward-ready, .rank-reward-next {
    display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .65rem; width: 100%; padding: .7rem .8rem;
    color: #f7edcf; text-align: left; border: 1px solid rgba(242,201,109,.25); border-radius: 14px;
    background: linear-gradient(135deg, rgba(104,74,23,.36), rgba(18,45,38,.92)); cursor: pointer; text-decoration: none;
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.rank-reward-ready:hover, .rank-reward-next:hover { transform: translateY(-2px); border-color: rgba(242,201,109,.58); box-shadow: 0 10px 24px rgba(0,0,0,.22); }
.rank-reward-ready > span, .rank-reward-next > span { grid-row: 1 / 3; font-size: 1.45rem; }
.rank-reward-ready strong, .rank-reward-next strong { font-size: .8rem; }
.rank-reward-ready small, .rank-reward-next small { color: #9ebbb0; font-size: .68rem; }
.rank-reward-ready .cost-item { font-size: .65rem; margin-right: .25rem; }

.dominion-scene-canvas {
    position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; pointer-events: none;
    opacity: .9; mix-blend-mode: screen; contain: strict;
}
.farm-scene-canvas { z-index: 7; opacity: .75; }
.world-building, .world-farm-marker, .world-pest-marker, .world-operation-marker { contain: layout style paint; }
/* Interactive absolute-positioned objects must stay in the hit-test tree.
   content-visibility:auto caused sporadic missed clicks in transformed,
   scrollable desktop maps in Chromium-based browsers. */
.world-building { content-visibility:visible; }

.world-operation-deck {
    display: grid; gap: .8rem; margin: 0 0 1rem; padding: 1rem;
    border: 1px solid rgba(100,200,212,.24); border-radius: 20px;
    background: linear-gradient(120deg, rgba(8,35,36,.96), rgba(8,25,27,.98));
    box-shadow: inset 0 1px rgba(255,255,255,.06), 0 18px 42px rgba(0,0,0,.22);
}
.world-operation-deck > header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.world-operation-deck h2 { margin: .1rem 0; color: #dffdf4; }
.world-operation-deck header p:last-child { margin: 0; color: #9bbcb6; font-size: .8rem; }
.world-operation-deck header > strong { flex: 0 0 auto; padding: .5rem .8rem; color: #d6f8ef; border-radius: 999px; background: rgba(100,200,212,.12); border: 1px solid rgba(100,200,212,.28); }
.world-operation-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: .65rem; }
.world-operation-card {
    display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .7rem; min-height: 4.7rem; padding: .7rem .8rem;
    border: 1px solid rgba(255,255,255,.09); border-radius: 15px; background: rgba(1,15,15,.38); overflow: hidden; position: relative;
}
.world-operation-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--dominion-gold); }
.world-operation-card.status-ready::before { background: var(--dominion-mint); box-shadow: 0 0 14px var(--dominion-mint); }
.world-operation-card > span { font-size: 1.6rem; }
.world-operation-card > div { display: grid; gap: .12rem; }
.world-operation-card small { color: #87aaa2; text-transform: uppercase; letter-spacing: .07em; font-size: .58rem; }
.world-operation-card strong { color: #f1f7e9; font-size: .82rem; }
.world-operation-card time, .world-operation-card em { color: #f4cf75; font-size: .72rem; font-style: normal; }
.world-operation-empty { grid-column: 1 / -1; margin: 0; padding: .85rem; color: #8ea9a3; text-align: center; border: 1px dashed rgba(255,255,255,.12); border-radius: 13px; }

.world-operation-marker {
    position: absolute; left: calc(var(--wx) * var(--world-tile)); top: calc(var(--wy) * var(--world-tile));
    z-index: 14; display: grid; justify-items: center; min-width: 7.2rem; padding: .35rem .55rem .45rem;
    color: #fff4cf; border: 1px solid rgba(242,201,109,.48); border-radius: 17px;
    background: linear-gradient(155deg, rgba(76,54,14,.93), rgba(8,31,29,.95));
    box-shadow: 0 8px 22px rgba(0,0,0,.34), 0 0 0 4px rgba(242,201,109,.08);
    transform: translate(-50%, -50%); cursor: pointer;
    animation: operation-marker-pulse 2.8s ease-in-out infinite;
}
.world-operation-marker .marker-icon { font-size: 1.55rem; filter: drop-shadow(0 4px 7px rgba(0,0,0,.4)); }
.world-operation-marker strong { font-size: .67rem; white-space: nowrap; }
.world-operation-marker small { color: #d2b96e; font-size: .56rem; }
.world-operation-marker:hover, .world-operation-marker.selected { z-index: 20; transform: translate(-50%, -50%) scale(1.08); border-color: #ffe4a1; box-shadow: 0 12px 32px rgba(0,0,0,.4), 0 0 26px rgba(242,201,109,.32); }
.world-operation-marker.is-locked { opacity: .52; filter: grayscale(.55); animation: none; }
.world-operation-marker.is-active { border-color: rgba(120,224,176,.65); box-shadow: 0 0 0 4px rgba(120,224,176,.1), 0 10px 28px rgba(0,0,0,.35); }
.global-world-shell.hide-operations .world-operation-marker { display: none; }
@keyframes operation-marker-pulse { 0%,100% { box-shadow: 0 8px 22px rgba(0,0,0,.34), 0 0 0 4px rgba(242,201,109,.06); } 50% { box-shadow: 0 8px 22px rgba(0,0,0,.34), 0 0 0 11px rgba(242,201,109,0); } }

.world-target-head.operation > span { background: linear-gradient(145deg, rgba(242,201,109,.32), rgba(46,93,76,.25)); }
.operation-brief { border-color: rgba(242,201,109,.2); background: linear-gradient(145deg, rgba(75,55,18,.18), rgba(9,32,29,.65)); }
.operation-brief-stats { display: grid; gap: .4rem; margin-top: .55rem; }
.operation-brief-stats > span { display: flex; flex-wrap: wrap; gap: .3rem; color: #a8c4ba; font-size: .72rem; }
.operation-brief-stats .report-resources { display: inline-flex; flex-wrap: wrap; }
.operation-power-preview { display: grid; grid-template-columns: 1fr 1fr auto; align-items: center; gap: .5rem; margin-bottom: .7rem; padding: .62rem .7rem; border-radius: 12px; background: rgba(0,0,0,.23); border: 1px solid rgba(255,255,255,.08); }
.operation-power-preview span { display: grid; color: #8facA4; font-size: .62rem; }
.operation-power-preview strong { color: #f2ecd8; font-size: .8rem; }
.operation-power-preview b { justify-self: end; padding: .28rem .48rem; border-radius: 999px; font-size: .62rem; color: #ffd29e; background: rgba(239,116,104,.12); }
.operation-power-preview b.good { color: #baf6d3; background: rgba(120,224,176,.12); }
.operation-power-preview b.warning { color: #ffe1a3; background: rgba(242,201,109,.12); }
.button.operation { color: #132116; background: linear-gradient(135deg, #f2c96d, #8dd9aa); border-color: rgba(255,255,255,.25); box-shadow: 0 10px 24px rgba(106,195,147,.16); }
.button.operation:disabled { filter: grayscale(.6); opacity: .48; }

/* Faster composition: large, scrollable scenes stay isolated from the HUD. */
.world-viewport, .global-world-viewport { contain: layout paint size; overscroll-behavior: contain; }
.world-map, .global-world-map { isolation: isolate; transform-origin: 0 0; backface-visibility: hidden; }
.page-hidden .dominion-scene-canvas { visibility: hidden; }
html[data-dominion-quality="lite"] .dominion-scene-canvas { opacity: .55; }
html[data-dominion-quality="static"] .dominion-scene-canvas { display: none; }

@media (max-width: 1100px) {
    .dominion-command-deck { grid-template-columns: 1fr 1fr; }
    .dominion-rank-rewards { grid-column: 1 / -1; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
    .dominion-command-progress { border-inline-end: 0; }
}
@media (max-width: 760px) {
    .commander-rank { min-width: 0; padding-inline: .55rem; }
    .commander-rank strong { display: none; }
    .dominion-command-deck { grid-template-columns: 1fr; padding: .8rem; border-radius: 17px; }
    .dominion-command-progress { border: 0; border-top: 1px solid rgba(255,255,255,.08); border-bottom: 1px solid rgba(255,255,255,.08); padding-inline: 0; }
    .dominion-rank-rewards { grid-column: auto; grid-template-columns: 1fr; }
    .world-operation-deck > header { align-items: flex-start; }
    .world-operation-deck header > strong { font-size: .72rem; }
    .world-operation-card { grid-template-columns: auto 1fr; }
    .world-operation-card > button, .world-operation-card > em { grid-column: 1 / -1; width: 100%; text-align: center; }
    .operation-power-preview { grid-template-columns: 1fr 1fr; }
    .operation-power-preview b { grid-column: 1 / -1; justify-self: stretch; text-align: center; }
}
@media (prefers-reduced-motion: reduce) {
    .world-operation-marker { animation: none; }
    .commander-rank > em::after, .dominion-command-track i { transition: none; }
}

/* ========================================================================== */
/* 3.0.1 – Frontier Radio                                                     */
/* ========================================================================== */
.radio-topbar-toggle{display:inline-flex;align-items:center;gap:.35rem}
.frontier-radio{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:6900;pointer-events:none;font-family:inherit}
.frontier-radio>*{pointer-events:auto}
.radio-launcher{display:flex;align-items:center;gap:.7rem;min-width:178px;padding:.68rem .82rem;border:1px solid rgba(122,255,202,.28);border-radius:18px;background:linear-gradient(145deg,rgba(7,28,25,.97),rgba(12,49,40,.96));color:#eefcf7;box-shadow:0 16px 42px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.08);cursor:pointer;text-align:left;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.radio-launcher:hover,.radio-launcher:focus-visible{transform:translateY(-2px);border-color:rgba(122,255,202,.6);box-shadow:0 18px 48px rgba(0,0,0,.46),0 0 0 3px rgba(73,227,164,.12)}
.radio-launcher-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:radial-gradient(circle at 35% 28%,#83ffd0,#1c8b67 58%,#0b3a31);font-size:1.3rem;box-shadow:inset 0 1px rgba(255,255,255,.4),0 5px 16px rgba(0,0,0,.28)}
.radio-launcher>span:nth-child(2){display:flex;flex-direction:column;min-width:0}
.radio-launcher small{color:#9ec5b8;font-size:.66rem;letter-spacing:.09em;text-transform:uppercase}
.radio-launcher strong{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.92rem}
.radio-launcher>i{width:9px;height:9px;margin-left:auto;border-radius:50%;background:#516b63;box-shadow:0 0 0 4px rgba(81,107,99,.12)}
.radio-launcher>i.active{background:#58f7a7;box-shadow:0 0 0 4px rgba(88,247,167,.14),0 0 16px rgba(88,247,167,.8);animation:radioPulse 1.6s ease-in-out infinite}
.radio-panel{width:min(390px,calc(100vw - 24px));max-height:min(740px,calc(100dvh - 40px));overflow:auto;border:1px solid rgba(119,255,204,.3);border-radius:24px;background:linear-gradient(165deg,rgba(5,22,20,.985),rgba(8,39,33,.985) 56%,rgba(10,29,30,.985));color:#eefcf7;box-shadow:0 26px 78px rgba(0,0,0,.58),inset 0 1px rgba(255,255,255,.07);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);scrollbar-width:thin;scrollbar-color:rgba(91,220,168,.45) transparent}
.frontier-radio:not(.radio-standalone) .radio-panel{position:absolute;right:0;bottom:0}
.frontier-radio.is-open .radio-launcher{display:none}
.radio-panel-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:.9rem 1rem;border-bottom:1px solid rgba(143,255,217,.12);background:rgba(5,23,20,.91);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.radio-brandmark{display:flex;align-items:center;gap:.65rem}
.radio-brandmark>span{display:grid;place-items:center;width:36px;height:36px;border:1px solid rgba(122,255,202,.36);border-radius:12px;color:#70ffc0;background:rgba(50,215,153,.1);box-shadow:inset 0 0 18px rgba(50,215,153,.08)}
.radio-brandmark>div{display:flex;flex-direction:column}
.radio-brandmark small{color:#7fa99b;font-size:.58rem;letter-spacing:.13em}
.radio-brandmark strong{font-size:1rem;letter-spacing:.02em}
.radio-window-actions{display:flex;gap:.4rem}
.radio-window-actions button{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(255,255,255,.11);border-radius:11px;background:rgba(255,255,255,.05);color:#dff8ef;cursor:pointer;font-size:1rem}
.radio-window-actions button:hover,.radio-window-actions button:focus-visible{border-color:rgba(113,255,199,.48);background:rgba(73,227,164,.12)}
.radio-now-playing{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.9rem;margin:1rem;padding:1rem;border:1px solid rgba(112,246,195,.17);border-radius:19px;background:radial-gradient(circle at 15% 25%,rgba(75,235,170,.16),transparent 48%),linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.018));overflow:hidden}
.radio-now-playing::after{content:"";position:absolute;inset:auto -15% -52% 34%;height:80%;background:radial-gradient(ellipse,rgba(69,227,170,.15),transparent 68%);pointer-events:none}
.radio-station-emblem{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:linear-gradient(145deg,#1b765a,#0a342c);font-size:1.7rem;box-shadow:inset 0 1px rgba(255,255,255,.18),0 10px 24px rgba(0,0,0,.28)}
.radio-now-copy{display:flex;flex-direction:column;min-width:0}
.radio-now-copy small{color:#72dbaa;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.radio-now-copy strong{margin-top:.12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.24rem}
.radio-now-copy span{margin-top:.16rem;color:#9fbdb4;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.radio-equalizer{display:flex;align-items:flex-end;gap:3px;width:34px;height:34px;padding:5px;border-radius:10px;background:rgba(0,0,0,.18)}
.radio-equalizer i{display:block;width:3px;height:18%;border-radius:4px;background:#58f3a7;opacity:.38;transform-origin:bottom}
.frontier-radio.is-playing .radio-equalizer i{opacity:.95;animation:radioBar .86s ease-in-out infinite alternate}
.frontier-radio.is-playing .radio-equalizer i:nth-child(2){animation-delay:-.31s}.frontier-radio.is-playing .radio-equalizer i:nth-child(3){animation-delay:-.62s}.frontier-radio.is-playing .radio-equalizer i:nth-child(4){animation-delay:-.18s}.frontier-radio.is-playing .radio-equalizer i:nth-child(5){animation-delay:-.48s}
.radio-station-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(116px,1fr);gap:.62rem;margin:0 1rem;padding:.12rem .08rem .72rem;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:rgba(83,213,161,.32) transparent}
.radio-station-card{scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:.18rem;min-height:98px;padding:.72rem;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:rgba(255,255,255,.035);color:#e8f8f2;text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}
.radio-station-card:hover,.radio-station-card:focus-visible{transform:translateY(-2px);border-color:rgba(99,241,185,.45);background:rgba(73,227,164,.08)}
.radio-station-card.active{border-color:rgba(99,241,185,.72);background:linear-gradient(145deg,rgba(60,221,157,.17),rgba(35,144,111,.08));box-shadow:inset 0 0 0 1px rgba(104,255,199,.08),0 8px 18px rgba(0,0,0,.16)}
.radio-station-card>span{font-size:1.25rem}.radio-station-card strong{font-size:.84rem}.radio-station-card small{color:#8facA3;font-size:.66rem;line-height:1.25}
.radio-controls{display:flex;align-items:center;justify-content:center;gap:1rem;padding:.85rem 1rem .45rem}
.radio-controls button{display:grid;place-items:center;width:46px;height:46px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:rgba(255,255,255,.045);color:#eafff7;font-size:1.55rem;cursor:pointer}
.radio-controls button:hover,.radio-controls button:focus-visible{border-color:rgba(106,248,193,.52);background:rgba(73,227,164,.1)}
.radio-controls .radio-play{width:66px;height:66px;border-color:rgba(114,255,200,.55);border-radius:22px;background:linear-gradient(145deg,#3ddd9b,#177454);color:#03261d;font-size:1.42rem;box-shadow:0 12px 30px rgba(25,190,127,.24),inset 0 1px rgba(255,255,255,.4)}
.frontier-radio[data-radio-state="loading"] .radio-play{animation:radioLoading 1.4s ease-in-out infinite}
.frontier-radio[data-radio-state="error"] .radio-play{border-color:rgba(255,123,113,.65);background:linear-gradient(145deg,#9b463e,#572622);color:#fff}
.radio-volume-row{display:grid;grid-template-columns:38px minmax(0,1fr) 46px;align-items:center;gap:.55rem;padding:.56rem 1rem}
.radio-volume-row button{width:36px;height:36px;border:0;border-radius:11px;background:rgba(255,255,255,.05);color:#eafff7;cursor:pointer}
.radio-volume-row input{width:100%;accent-color:#51e6a3}
.radio-volume-row output{color:#92b9ac;font-size:.72rem;text-align:right}
.radio-connection{display:flex;align-items:flex-start;gap:.55rem;margin:.38rem 1rem 0;padding:.7rem .78rem;border-radius:14px;background:rgba(0,0,0,.17);color:#a9c9be;font-size:.73rem;line-height:1.35}
.radio-connection>i{flex:0 0 auto;width:8px;height:8px;margin-top:.14rem;border-radius:50%;background:#60756e}
.frontier-radio[data-radio-state="playing"] .radio-connection>i{background:#58f7a7;box-shadow:0 0 10px rgba(88,247,167,.8)}
.frontier-radio[data-radio-state="loading"] .radio-connection>i{background:#ffd66f;box-shadow:0 0 10px rgba(255,214,111,.6)}
.frontier-radio[data-radio-state="error"] .radio-connection>i{background:#ff7b71;box-shadow:0 0 10px rgba(255,123,113,.65)}
.frontier-radio[data-radio-state="remote"] .radio-connection>i{background:#7ac9ff;box-shadow:0 0 10px rgba(122,201,255,.62)}
.radio-footer{display:flex;flex-direction:column;gap:.3rem;padding:.72rem 1rem 1rem;color:#789b90;font-size:.62rem;line-height:1.35}
.radio-footer a{width:max-content;max-width:100%;color:#7be4bb;text-decoration:none}.radio-footer a:hover{text-decoration:underline}
.radio-window-page{min-height:100dvh;margin:0;background:radial-gradient(circle at 30% 10%,#14503f 0,#081f1c 42%,#04110f 100%);color:#eefcf7}
.radio-window-shell{display:grid;place-items:center;min-height:100dvh;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
.radio-standalone{position:static;width:min(420px,100%);pointer-events:auto}
.radio-standalone .radio-panel{width:100%;max-height:none}
.radio-disabled-card{max-width:420px;padding:2rem;border:1px solid rgba(126,255,206,.25);border-radius:24px;background:rgba(5,26,22,.9);text-align:center;box-shadow:0 22px 60px rgba(0,0,0,.4)}
.radio-disabled-card>span{font-size:3rem}.radio-disabled-card h1{margin:.7rem 0}.radio-disabled-card p{color:#a2c0b6}
@keyframes radioBar{from{height:18%}to{height:95%}}
@keyframes radioPulse{0%,100%{transform:scale(.88);opacity:.75}50%{transform:scale(1.12);opacity:1}}
@keyframes radioLoading{0%,100%{box-shadow:0 12px 30px rgba(25,190,127,.2),0 0 0 0 rgba(88,247,167,.22)}50%{box-shadow:0 12px 30px rgba(25,190,127,.32),0 0 0 9px rgba(88,247,167,0)}}
@media (min-width:901px){.radio-launcher{display:none}.frontier-radio:not(.radio-standalone) .radio-panel{bottom:0}.frontier-radio.is-open .radio-panel{display:block}.radio-topbar-toggle{display:inline-flex}}
@media (max-width:900px){.radio-topbar-toggle{display:none}.frontier-radio{right:max(10px,env(safe-area-inset-right));bottom:calc(76px + env(safe-area-inset-bottom))}.frontier-radio.is-open{inset:0;display:grid;align-items:end;padding:0;z-index:7000;background:rgba(1,10,9,.58);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.frontier-radio:not(.radio-standalone) .radio-panel{position:relative;right:auto;bottom:auto;width:100%;max-height:min(82dvh,760px);border-radius:25px 25px 0 0;border-bottom:0}.radio-launcher{min-width:0;width:58px;height:58px;padding:8px;border-radius:19px}.radio-launcher-icon{width:40px;height:40px}.radio-launcher>span:nth-child(2),.radio-launcher>i{display:none}.radio-panel-header{padding:.82rem 1rem}.radio-now-playing{margin:.78rem}.radio-station-strip{margin:0 .78rem}.radio-connection{margin-inline:.78rem}.radio-footer{padding-inline:.78rem}.radio-controls{padding-top:.58rem}}
@media (max-width:430px){.radio-panel{border-radius:21px 21px 0 0}.radio-now-playing{grid-template-columns:auto minmax(0,1fr)}.radio-equalizer{display:none}.radio-station-strip{grid-auto-columns:minmax(106px,43%)}.radio-controls .radio-play{width:60px;height:60px}.radio-footer span{font-size:.58rem}}
@media (prefers-reduced-motion:reduce){.radio-launcher>i.active,.frontier-radio.is-playing .radio-equalizer i,.frontier-radio[data-radio-state="loading"] .radio-play{animation:none!important}.radio-launcher,.radio-station-card{transition:none!important}}

/* ========================================================================== */
/* 3.3.0 – World Front: sectors, resources, radar and persistent marches     */
/* ========================================================================== */
.global-world-shell{position:relative}
.world-sector{position:absolute;left:calc(var(--sx)*var(--world-tile));top:calc(var(--sy)*var(--world-tile));width:calc(var(--sw)*var(--world-tile));height:calc(var(--sh)*var(--world-tile));z-index:0;overflow:hidden;border:1px solid rgba(255,255,255,.07);pointer-events:none;box-shadow:inset 0 0 70px rgba(0,0,0,.12)}
.world-sector::before,.world-sector::after{content:"";position:absolute;inset:0;pointer-events:none}
.world-sector::before{background:radial-gradient(circle at 20% 25%,rgba(255,255,255,.11),transparent 26%),radial-gradient(circle at 75% 70%,rgba(0,0,0,.13),transparent 35%);mix-blend-mode:soft-light}
.world-sector::after{opacity:.18;background-image:repeating-linear-gradient(118deg,transparent 0 34px,rgba(255,255,255,.11) 35px 36px,transparent 37px 76px)}
.world-sector>span,.world-sector>small{position:absolute;left:32px;z-index:1;text-transform:uppercase;text-shadow:0 3px 12px rgba(0,0,0,.46)}
.world-sector>span{top:28px;color:rgba(247,252,241,.68);font-size:1.1rem;font-weight:950;letter-spacing:.15em}
.world-sector>small{top:55px;color:rgba(232,245,237,.45);font-size:.64rem;font-weight:800;letter-spacing:.08em}
.world-sector.sector-forest{background:linear-gradient(145deg,rgba(49,98,61,.42),rgba(30,79,51,.16))}
.world-sector.sector-ridge{background:linear-gradient(145deg,rgba(104,94,66,.4),rgba(70,63,47,.15))}
.world-sector.sector-ash{background:linear-gradient(145deg,rgba(90,69,60,.44),rgba(75,54,52,.17))}
.world-sector.sector-water{background:linear-gradient(145deg,rgba(45,105,115,.36),rgba(47,86,104,.16))}
.world-sector.sector-heart{background:linear-gradient(145deg,rgba(96,115,59,.35),rgba(61,93,49,.14))}
.world-sector.sector-black{background:linear-gradient(145deg,rgba(55,58,61,.5),rgba(38,44,43,.21))}

.world-resource-marker{position:absolute;left:calc(var(--wx)*var(--world-tile));top:calc(var(--wy)*var(--world-tile));transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;min-width:92px;padding:.36rem .48rem .42rem;border:1px solid rgba(128,255,225,.44);border-radius:16px;background:linear-gradient(155deg,rgba(8,43,42,.95),rgba(12,75,66,.92));color:#effff9;box-shadow:0 10px 25px rgba(0,0,0,.36),0 0 0 3px rgba(85,231,194,.06);cursor:pointer;z-index:7;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,filter .18s ease}
.world-resource-marker::before{content:"";position:absolute;inset:-8px;border:1px dashed rgba(111,251,213,.25);border-radius:21px;animation:resourceRadar 5s linear infinite;pointer-events:none}
.world-resource-marker .marker-icon{font-size:1.8rem;line-height:1;filter:drop-shadow(0 5px 6px rgba(0,0,0,.45))}
.world-resource-marker strong{max-width:112px;margin-top:.12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem}
.world-resource-marker small{color:#8ce8cf;font-size:.56rem;font-weight:800}
.world-resource-marker:hover,.world-resource-marker.selected{z-index:22;transform:translate(-50%,-50%) scale(1.1);border-color:#b8ffe7;box-shadow:0 16px 38px rgba(0,0,0,.48),0 0 28px rgba(71,235,190,.31)}
.world-resource-marker.is-locked{opacity:.43;filter:grayscale(.8);pointer-events:auto}
.world-resource-marker.is-locked::before{animation:none}
.world-resource-marker.is-occupied{border-color:rgba(255,157,104,.65);background:linear-gradient(155deg,rgba(62,35,25,.95),rgba(98,55,35,.93));box-shadow:0 10px 25px rgba(0,0,0,.36),0 0 0 3px rgba(255,137,78,.08)}
.world-resource-marker.is-self-occupied,.world-resource-marker.is-active{border-color:rgba(255,220,117,.82);box-shadow:0 10px 25px rgba(0,0,0,.36),0 0 0 5px rgba(255,221,116,.12),0 0 28px rgba(255,214,93,.24)}
.global-world-shell.hide-resources .world-resource-marker{display:none}
@keyframes resourceRadar{to{transform:rotate(360deg)}}

.world-coordinate-hud{position:absolute;left:82px;top:84px;z-index:34;display:grid;min-width:156px;padding:.55rem .7rem;border:1px solid rgba(118,255,211,.22);border-radius:12px;background:linear-gradient(145deg,rgba(4,29,27,.91),rgba(8,53,45,.88));color:#eafff7;box-shadow:0 10px 26px rgba(0,0,0,.3);pointer-events:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.world-coordinate-hud span{color:#72dfb7;font-size:.58rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.world-coordinate-hud b{margin:.06rem 0;color:#f3fff9;font-size:.78rem;font-variant-numeric:tabular-nums}
.world-coordinate-hud small{max-width:220px;color:#9fc7bb;font-size:.58rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.world-radar-panel{position:absolute;right:362px;top:64px;bottom:14px;z-index:90;display:flex;flex-direction:column;width:min(380px,calc(100% - 390px));min-width:320px;border:1px solid rgba(112,255,205,.32);border-radius:20px;background:linear-gradient(165deg,rgba(4,24,23,.985),rgba(7,46,39,.98));color:#eafff7;box-shadow:0 24px 68px rgba(0,0,0,.55),inset 0 1px rgba(255,255,255,.07);overflow:hidden;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.world-radar-panel[hidden]{display:none!important}
.world-radar-panel>header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid rgba(124,255,212,.13);background:rgba(5,31,27,.9)}
.world-radar-panel>header strong{font-size:1.05rem}
.world-radar-panel>header button{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(255,255,255,.12);border-radius:11px;background:rgba(255,255,255,.05);color:#fff;font-size:1.2rem;cursor:pointer}
.world-radar-search{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.55rem;margin:.78rem .85rem .6rem;padding:.62rem .72rem;border:1px solid rgba(123,255,210,.18);border-radius:13px;background:rgba(0,0,0,.2)}
.world-radar-search span{color:#62e9b5;font-size:1.2rem}
.world-radar-search input{min-width:0;border:0;outline:0;background:transparent;color:#f1fff9;font:inherit;font-size:.78rem}
.world-radar-search input::placeholder{color:#789c91}
.world-minimap-wrap{position:relative;margin:0 .85rem .65rem;border:1px solid rgba(127,255,214,.17);border-radius:14px;overflow:hidden;background:#102d28;box-shadow:inset 0 0 28px rgba(0,0,0,.35)}
.world-minimap-wrap canvas{display:block;width:100%;height:126px;cursor:crosshair}
.world-minimap-wrap>i{position:absolute;border:1px solid #f8d873;border-radius:4px;background:rgba(248,216,115,.12);box-shadow:0 0 12px rgba(248,216,115,.45);pointer-events:none}
.world-radar-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;padding:0 .85rem .6rem}
.world-radar-summary span{display:grid;padding:.45rem;border-radius:10px;background:rgba(255,255,255,.045);color:#8fb4a9;font-size:.55rem;text-align:center}
.world-radar-summary b{color:#edfff8;font-size:.82rem}
.world-radar-results{display:grid;gap:.36rem;min-height:0;padding:0 .7rem .8rem;overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(81,225,169,.4) transparent}
.world-radar-result{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.62rem;width:100%;padding:.58rem .65rem;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.035);color:#eafff7;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}
.world-radar-result:hover,.world-radar-result:focus-visible{transform:translateX(3px);border-color:rgba(103,241,188,.38);background:rgba(77,221,164,.09)}
.world-radar-result>span{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:rgba(0,0,0,.2);font-size:1.15rem}
.world-radar-result>div{display:flex;min-width:0;flex-direction:column}
.world-radar-result strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.74rem}
.world-radar-result small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#88aa9f;font-size:.58rem}
.world-radar-result em{color:#f0cf73;font-size:.6rem;font-style:normal;font-weight:900;white-space:nowrap}
.world-radar-result.is-locked{opacity:.48;filter:grayscale(.45)}
.world-radar-empty{padding:1.2rem;color:#8eadA3;font-size:.72rem;text-align:center}
.global-world-shell.radar-open .global-world-viewport::after{content:none}

.world-active-marches{position:absolute;inset:0;z-index:5;pointer-events:none}
.world-live-march{position:absolute;height:2px;transform-origin:0 50%;border-top:1px dashed rgba(255,230,143,.56);filter:drop-shadow(0 0 5px rgba(255,215,105,.4));opacity:.9}
.world-live-march.kind-gathering{border-color:rgba(102,242,211,.58);filter:drop-shadow(0 0 5px rgba(83,225,193,.42))}
.world-live-march>b{position:absolute;inset:-2px 0 auto;height:5px;background:linear-gradient(90deg,transparent,rgba(255,229,133,.3),transparent);opacity:.5}
.world-live-march>i{position:absolute;left:var(--march-progress,0%);top:50%;display:grid;place-items:center;width:25px;height:25px;border:1px solid rgba(255,239,171,.58);border-radius:50%;background:#173c31;color:#ffe486;box-shadow:0 4px 12px rgba(0,0,0,.38),0 0 14px rgba(255,220,104,.34);transform:translate(-50%,-50%) rotate(calc(-1 * var(--march-angle,0deg)));transition:left .95s linear}
.world-live-march.kind-gathering>i{border-color:rgba(119,255,217,.6);color:#8ff4d8;box-shadow:0 4px 12px rgba(0,0,0,.38),0 0 14px rgba(86,234,194,.32)}
.world-live-march>i>span{display:block;font-size:.75rem;transform:rotate(calc(-1 * var(--line-angle,0rad)))}
.world-live-march[data-phase="gathering"]>i{animation:gatherPulse 1.1s ease-in-out infinite}
.world-live-march[data-phase="ready"]{width:1px!important;border:0;filter:none}
.world-live-march[data-phase="ready"]>i{border-color:#90ffbd;background:#1f6848;animation:returnPulse 1.25s ease-in-out infinite}
@keyframes gatherPulse{50%{transform:translate(-50%,-50%) scale(1.18);box-shadow:0 4px 12px rgba(0,0,0,.38),0 0 24px rgba(86,234,194,.62)}}
@keyframes returnPulse{50%{transform:translate(-50%,-50%) scale(1.2);box-shadow:0 0 0 8px rgba(116,255,178,0),0 0 22px rgba(116,255,178,.75)}}

.world-target-head.resource>span{background:linear-gradient(145deg,rgba(79,224,190,.24),rgba(20,90,78,.2));border-radius:16px;padding:.35rem}
.resource-brief{border-color:rgba(92,228,197,.23);background:linear-gradient(145deg,rgba(22,82,73,.2),rgba(8,35,32,.68))}
.world-operation-card.gathering-card{border-color:rgba(85,224,193,.25);background:linear-gradient(145deg,rgba(19,81,71,.28),rgba(7,33,30,.86))}
.world-operation-card.gathering-card>em{color:#89efd7}
.occupied-card{border-color:rgba(255,157,104,.35);background:rgba(91,48,30,.35)}

.global-world-shell[data-world-zoom="far"] .world-farm-marker strong,.global-world-shell[data-world-zoom="far"] .world-farm-marker small,.global-world-shell[data-world-zoom="far"] .world-pest-marker strong,.global-world-shell[data-world-zoom="far"] .world-pest-marker small,.global-world-shell[data-world-zoom="far"] .world-operation-marker strong,.global-world-shell[data-world-zoom="far"] .world-operation-marker small,.global-world-shell[data-world-zoom="far"] .world-resource-marker strong,.global-world-shell[data-world-zoom="far"] .world-resource-marker small{display:none}
.global-world-shell[data-world-zoom="far"] .world-farm-marker,.global-world-shell[data-world-zoom="far"] .world-pest-marker,.global-world-shell[data-world-zoom="far"] .world-operation-marker,.global-world-shell[data-world-zoom="far"] .world-resource-marker{min-width:0;padding:.36rem;border-radius:50%}
.global-world-shell[data-world-zoom="far"] .world-sector>small{display:none}

@media (max-width:1100px){
    .world-radar-panel{right:14px;top:64px;bottom:auto;width:min(390px,calc(100% - 28px));min-width:0;max-height:calc(100% - 78px)}
    .world-coordinate-hud{left:72px}
}
@media (max-width:760px){
    .world-coordinate-hud{left:10px;top:119px;min-width:136px;padding:.44rem .58rem}
    .world-coordinate-hud small{max-width:145px}
    .world-radar-panel{position:fixed;inset:auto 0 0 0;z-index:7050;width:100%;max-height:88dvh;min-width:0;border-radius:24px 24px 0 0;border-bottom:0;padding-bottom:env(safe-area-inset-bottom)}
    .global-world-shell.radar-open::after{content:"";position:fixed;inset:0;z-index:7040;background:rgba(1,10,9,.62);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
    .world-minimap-wrap canvas{height:112px}
    .world-radar-results{max-height:42dvh}
    .world-sector>span{left:20px;top:20px;font-size:.88rem}
    .world-sector>small{left:20px;top:43px}
    .world-resource-marker{min-width:82px}
}
@media (max-width:430px){
    .world-radar-summary{grid-template-columns:1fr 1fr}
    .world-radar-summary span:last-child{grid-column:1/-1}
    .world-coordinate-hud{top:112px}
}
@media (prefers-reduced-motion:reduce){
    .world-resource-marker::before,.world-live-march[data-phase="gathering"]>i,.world-live-march[data-phase="ready"]>i{animation:none!important}
    .world-live-march>i{transition:none!important}
}
html[data-dominion-quality="static"] .world-sector::after,html[data-dominion-quality="static"] .world-resource-marker::before,html[data-dominion-quality="static"] .world-live-march>b{display:none}

/* ========================================================================== */
/* 3.5.0 – Territory Harvest: expanded sectors and finite resource economy     */
/* ========================================================================== */
.world-sector.sector-crown{background:linear-gradient(145deg,rgba(116,93,46,.42),rgba(81,65,36,.15))}
.world-sector.sector-gold{background:linear-gradient(145deg,rgba(141,104,39,.42),rgba(103,72,28,.17))}
.world-sector.sector-ember{background:linear-gradient(145deg,rgba(132,66,43,.42),rgba(82,42,34,.17))}
.world-resource-marker.tier-2{border-color:rgba(119,190,255,.65);box-shadow:0 10px 25px rgba(0,0,0,.36),0 0 0 4px rgba(100,176,255,.08)}
.world-resource-marker.tier-3{border-color:rgba(255,205,95,.78);box-shadow:0 10px 25px rgba(0,0,0,.38),0 0 0 5px rgba(255,193,71,.1),0 0 26px rgba(255,188,52,.12)}
.world-resource-marker.source-alliance{border-color:rgba(111,213,255,.82);background:linear-gradient(155deg,rgba(16,45,67,.97),rgba(16,82,97,.94));box-shadow:0 10px 28px rgba(0,0,0,.4),0 0 0 5px rgba(82,190,255,.1),0 0 30px rgba(81,194,255,.18)}
.world-resource-marker.source-alliance::after{content:"🛡";position:absolute;right:-8px;top:-10px;display:grid;place-items:center;width:24px;height:24px;border:1px solid rgba(180,232,255,.72);border-radius:50%;background:#10384a;color:#c9f1ff;font-size:.72rem;box-shadow:0 5px 12px rgba(0,0,0,.4)}
.world-resource-marker.is-depleted{opacity:.58;filter:saturate(.35) grayscale(.28);border-style:dashed;background:linear-gradient(155deg,rgba(32,39,39,.95),rgba(48,55,53,.91));box-shadow:0 8px 20px rgba(0,0,0,.3)}
.world-resource-marker.is-depleted::before{animation:none;border-color:rgba(255,255,255,.13)}
.world-resource-marker.is-depleted .marker-icon{filter:grayscale(.72) drop-shadow(0 4px 5px rgba(0,0,0,.35))}
.world-resource-stock{width:100%;height:7px;margin:.52rem 0 .16rem;border:1px solid rgba(255,255,255,.11);border-radius:99px;background:rgba(0,0,0,.3);overflow:hidden}
.world-resource-stock>i{display:block;width:var(--stock,100%);height:100%;border-radius:inherit;background:linear-gradient(90deg,#40d5a2,#9ff1bc);box-shadow:0 0 10px rgba(70,221,166,.35)}
.world-resource-marker.tier-3 .world-resource-stock>i{background:linear-gradient(90deg,#e39736,#ffe47b)}
.world-resource-badge{display:inline-flex;align-items:center;gap:.28rem;padding:.28rem .48rem;border:1px solid rgba(132,243,211,.18);border-radius:999px;background:rgba(0,0,0,.2);font-size:.62rem;font-weight:800;color:#a8eee0}
.world-resource-collectors{display:grid;gap:.42rem;margin:.75rem 0}
.world-resource-collectors article{display:grid;grid-template-columns:auto 1fr auto;gap:.55rem;align-items:center;padding:.52rem .6rem;border:1px solid rgba(122,230,202,.12);border-radius:10px;background:rgba(0,0,0,.18)}
.world-resource-collectors article>span{font-size:1.15rem}.world-resource-collectors strong,.world-resource-collectors small{display:block}.world-resource-collectors small{color:#8eb9ad;font-size:.68rem}.world-resource-collectors time{color:#ffd581;font-size:.7rem;font-weight:800}
.world-resource-protection{display:flex;gap:.48rem;align-items:flex-start;padding:.64rem .7rem;border:1px solid rgba(112,206,255,.28);border-radius:11px;background:rgba(39,139,179,.09);color:#bdeaff;font-size:.75rem;line-height:1.35}
@media(max-width:900px){.world-resource-stock{height:6px}.world-resource-marker.source-alliance::after{right:-6px;top:-8px;width:21px;height:21px}.world-resource-collectors article{grid-template-columns:auto 1fr}.world-resource-collectors time{grid-column:2}}

/* ================================================================
   3.7.1 · Android Game Edition
   Every relevant map object exposes its primary gameplay action in place.
   ================================================================ */
.object-command-menu{
    --command-left:calc(50vw - 190px);--command-top:120px;
    position:fixed;z-index:260;left:var(--command-left);top:var(--command-top);width:min(420px,calc(100vw - 32px));
    padding:12px;border:1px solid rgba(255,218,118,.42);border-radius:18px;
    background:linear-gradient(145deg,rgba(20,29,27,.98),rgba(8,15,15,.98));
    box-shadow:0 24px 70px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.08);
    max-height:calc(100dvh - 108px);overflow:auto;overscroll-behavior:contain;
    color:#eef8ef;transform:translateY(8px) scale(.96);opacity:0;pointer-events:none;
    transition:transform .16s ease,opacity .16s ease;backdrop-filter:blur(16px)
}
.object-command-menu.open{transform:none;opacity:1;pointer-events:auto}
.object-command-menu[data-command-placement="below"]{transform-origin:50% 0}
.object-command-menu[data-command-placement="above"]{transform-origin:50% 100%}
.object-command-menu::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 20% 0,rgba(255,202,83,.15),transparent 42%)}
.object-command-menu header{position:relative;display:flex;align-items:center;gap:11px;padding:4px 36px 11px 4px;border-bottom:1px solid rgba(255,255,255,.09)}
.object-command-menu header>span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:linear-gradient(145deg,#ffe197,#a8731f);font-size:1.55rem;box-shadow:0 8px 24px rgba(255,181,50,.2)}
.object-command-menu header div{display:grid;gap:1px;min-width:0}.object-command-menu header small{color:#99ae9f}.object-command-menu header strong{font-size:1.03rem;color:#fff4cf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.object-command-menu header b{color:#9fd9a9;font-size:.75rem}
.object-command-close{position:absolute;z-index:2;right:8px;top:8px;width:32px;height:32px;border:0;border-radius:50%;background:rgba(255,255,255,.09);color:#fff;font-size:1.25rem;cursor:pointer}
.object-command-actions{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding-top:11px}
.object-command-action{min-height:88px;padding:9px 6px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:linear-gradient(160deg,rgba(55,73,62,.68),rgba(20,29,27,.78));color:#f3f8f3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;touch-action:manipulation;transition:transform .14s ease,border-color .14s ease,background .14s ease}
.object-command-action:hover,.object-command-action:focus-visible{transform:translateY(-2px);border-color:rgba(255,218,118,.55);outline:none}.object-command-action.primary{background:linear-gradient(145deg,#c98c25,#765114);border-color:#f4cb70;color:#fff8df}.object-command-action>span{font-size:1.45rem}.object-command-action strong{font-size:.84rem}.object-command-action small{font-size:.66rem;opacity:.78;text-align:center}.object-command-action:disabled{opacity:.42;cursor:not-allowed;transform:none}
.object-command-quick{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.object-command-quick button{min-height:44px;border:1px solid rgba(119,218,140,.42);border-radius:12px;background:rgba(40,111,63,.3);color:#dff8e4;font-weight:800;cursor:pointer}

.map-command-dialog{position:fixed;z-index:420;inset:0;display:grid;place-items:center;padding:22px;opacity:0;pointer-events:none;transition:opacity .16s ease}
.map-command-dialog.open{opacity:1;pointer-events:auto}.map-command-backdrop{position:absolute;inset:0;border:0;background:rgba(3,8,9,.76);backdrop-filter:blur(8px);cursor:default}
.map-command-card{position:relative;width:min(1080px,96vw);max-height:min(88vh,900px);display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(255,219,118,.34);border-radius:24px;background:linear-gradient(145deg,#17231f,#0a1211 72%);box-shadow:0 34px 100px rgba(0,0,0,.62);color:#eef7ef;transform:translateY(16px) scale(.98);transition:transform .18s ease}
.map-command-dialog.open .map-command-card{transform:none}.map-command-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px 18px;border-bottom:1px solid rgba(255,255,255,.09);background:linear-gradient(100deg,rgba(255,187,61,.12),transparent 52%)}.map-command-head h2{margin:.15rem 0;color:#fff1c8;font-size:clamp(1.25rem,3vw,2rem)}.map-command-head p{margin:.2rem 0;max-width:680px;color:#a9b9ad}.map-command-head .eyebrow{color:#e5bb65}.map-command-filter{display:flex;gap:8px;padding:12px 22px;border-bottom:1px solid rgba(255,255,255,.08);overflow:auto}.map-command-filter button{min-height:38px;padding:0 16px;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(255,255,255,.05);color:#cbd9ce;font-weight:800;white-space:nowrap;cursor:pointer}.map-command-filter button.active{background:#9b6a1e;border-color:#e7bd66;color:#fff7df}
.inline-training-grid,.map-research-grid{padding:18px 22px;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;overscroll-behavior:contain}.inline-training-card,.map-research-node{position:relative;border:1px solid rgba(255,255,255,.11);border-radius:17px;padding:14px;background:linear-gradient(150deg,rgba(42,59,51,.76),rgba(17,27,24,.88));box-shadow:inset 0 1px rgba(255,255,255,.05);display:grid;gap:10px}.inline-training-card::after,.map-research-node::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(120deg,transparent,rgba(255,211,105,.05),transparent)}.inline-training-card header,.map-research-node header{display:flex;align-items:center;gap:9px}.inline-training-card header>span,.map-research-node header>span{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;background:rgba(255,207,103,.12);font-size:1.4rem}.inline-training-card header div,.map-research-node header div{display:grid;flex:1}.inline-training-card header small,.map-research-node header small{color:#9bad9e}.inline-training-card header strong,.map-research-node header strong{color:#fff1c9}.inline-training-card header>b{color:#85d894}.inline-unit-stats{display:flex;gap:7px;flex-wrap:wrap}.inline-unit-stats span{padding:5px 8px;border-radius:8px;background:rgba(0,0,0,.2);font-size:.75rem}.inline-unit-cost,.map-research-cost{display:flex;gap:5px;flex-wrap:wrap}.inline-unit-lock{margin:0;color:#efb0a2;font-size:.78rem}.inline-train-order{display:grid;grid-template-columns:minmax(78px,100px) 1fr auto;gap:8px;align-items:end}.inline-train-order label{display:grid;gap:3px;font-size:.7rem;color:#a9b9ad}.inline-train-order input{width:100%;min-height:42px;border:1px solid rgba(255,255,255,.17);border-radius:10px;background:#0d1715;color:#fff;padding:0 9px}.inline-train-order div{display:grid;gap:2px}.inline-train-order div small{color:#9bad9e}.inline-train-order div strong{font-size:.8rem;color:#dce8de}.inline-training-card.is-locked{opacity:.64}
.map-command-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:14px 22px;border-top:1px solid rgba(255,255,255,.08);background:#0d1715}.map-command-footer>span{margin-right:auto;color:#92a498;font-size:.78rem}
.map-research-active{margin:14px 22px 0;padding:12px 14px;border:1px solid rgba(104,199,236,.3);border-radius:14px;background:linear-gradient(120deg,rgba(34,108,135,.2),rgba(28,51,48,.32));display:flex;align-items:center;gap:11px}.map-research-active>span{font-size:1.5rem}.map-research-active div{display:grid;flex:1}.map-research-active small{color:#9eb6b7}.map-research-active strong{color:#e4fbff}.map-research-node.is-ready{border-color:rgba(103,215,137,.38)}.map-research-node.is-maxed{background:linear-gradient(145deg,rgba(48,84,57,.7),rgba(18,39,25,.8))}.map-research-node p{margin:0;color:#b7c6ba;font-size:.82rem}.map-research-effect{display:grid;gap:3px;padding:9px;border-radius:10px;background:rgba(0,0,0,.18)}.map-research-effect small{color:#aab8ac}.map-research-effect strong{color:#8de7a4;font-size:.8rem}.map-research-cost{align-items:center}.map-research-cost time{margin-left:auto;color:#9db3a1;font-size:.75rem}

.wall-garrison-command{margin-top:18px;border:1px solid rgba(111,174,231,.3);border-radius:18px;padding:15px;background:linear-gradient(135deg,rgba(32,67,91,.24),rgba(14,28,28,.68))}.wall-garrison-command>header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.wall-garrison-command h3{margin:.1rem 0;color:#dff3ff}.wall-garrison-command p{margin:.25rem 0;color:#a9bbc0}.wall-garrison-summary{display:grid;gap:4px;text-align:right}.wall-garrison-summary span{color:#c5d4da}.wall-garrison-summary strong{color:#82d5ff}.wall-garrison-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:9px;margin-top:13px}.wall-garrison-grid article{display:grid;grid-template-columns:40px 1fr 84px 84px;gap:8px;align-items:center;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:13px;background:rgba(0,0,0,.18)}.wall-garrison-grid article>span{font-size:1.35rem}.wall-garrison-grid article>div{display:grid}.wall-garrison-grid article strong{color:#e9f5f1}.wall-garrison-grid article small{color:#9eb0ac;font-size:.68rem}.wall-garrison-grid label{display:grid;gap:3px;color:#9fb2ad;font-size:.65rem}.wall-garrison-grid input{width:100%;min-height:38px;border:1px solid rgba(255,255,255,.14);border-radius:9px;background:#0b1514;color:#fff;padding:0 7px}.wall-garrison-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;flex-wrap:wrap}

/* Research center: own architectural silhouette instead of a generic icon. */
.world-building.building-research_center .building-sprite{filter:drop-shadow(0 14px 13px rgba(0,0,0,.34))}.world-building.building-research_center .building-face{background:linear-gradient(160deg,#486a69,#203d40 62%,#152b31);border-color:#8bc9c7;border-radius:44% 44% 12% 12%}.world-building.building-research_center .building-roof{width:64%;height:48%;left:18%;top:-13%;border-radius:50% 50% 22% 22%;background:radial-gradient(circle at 50% 25%,#d8ffff 0 10%,#67b9c3 12% 35%,#284d59 38% 72%,#152c35 74%);clip-path:none;border:2px solid rgba(185,243,246,.7)}.world-building.building-research_center .building-roof::after{content:"";position:absolute;inset:22%;border:2px solid rgba(159,244,255,.72);border-radius:50%;box-shadow:0 0 14px #6fefff}.world-building.building-research_center .building-annex{display:block;position:absolute;width:32%;height:34%;right:-14%;bottom:10%;border-radius:8px;background:linear-gradient(#5b7772,#233e3c);border:2px solid #82aaa3}.world-building.building-research_center .building-props{display:block;position:absolute;left:-8%;bottom:16%;width:24%;height:42%;border-radius:50% 50% 8px 8px;background:linear-gradient(#74cbd0,#1f4e58);border:2px solid #a8eef0}.world-building.building-research_center .building-props::after{content:"";position:absolute;width:160%;height:22%;left:-30%;top:27%;border:2px solid rgba(132,237,248,.75);border-radius:50%;animation:researchOrbit 3.4s linear infinite}.world-building.building-research_center .building-activity-light{background:#6ef2ff;box-shadow:0 0 18px 5px rgba(100,238,255,.6)}
@keyframes researchOrbit{to{transform:rotate(360deg)}}

/* Higher visual clarity and feedback on all buildings. */
.world-building{transition:filter .16s ease,transform .16s ease}.world-building:hover,.world-building:focus-visible{filter:brightness(1.12) saturate(1.08);z-index:65!important}.world-building.selected{z-index:80!important}.world-building.selected .building-foundation{box-shadow:0 0 0 3px rgba(255,214,97,.78),0 0 25px 8px rgba(255,190,61,.25)}.world-building.selected .building-caption{transform:translateY(-2px);border-color:#efc960;background:rgba(15,22,18,.94)}.world-building .building-face{box-shadow:inset 0 2px rgba(255,255,255,.17),inset 0 -8px rgba(0,0,0,.14),0 7px 10px rgba(0,0,0,.24)}.world-building .building-trim{filter:drop-shadow(0 2px 2px rgba(0,0,0,.3))}

.world-action-close{position:sticky;z-index:5;top:0;margin-left:auto;display:grid;place-items:center;width:38px;height:38px;border:1px solid rgba(255,255,255,.13);border-radius:50%;background:rgba(16,27,25,.92);color:#fff;font-size:1.35rem;cursor:pointer}.world-target-head.alliance>span{background:linear-gradient(145deg,#315775,#152f42)}

@media (max-width:1100px){
    .global-world-shell .world-action-panel{position:fixed;z-index:370;left:0;right:0;bottom:0;max-height:min(82vh,720px);overflow:auto;border:1px solid rgba(255,219,118,.3);border-radius:24px 24px 0 0;background:linear-gradient(150deg,#17231f,#081211 75%);box-shadow:0 -25px 80px rgba(0,0,0,.55);transform:translateY(105%);opacity:0;pointer-events:none;transition:transform .2s ease,opacity .2s ease;padding:12px max(14px,env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
    .global-world-shell.world-action-open .world-action-panel{transform:none;opacity:1;pointer-events:auto}.global-world-shell.world-action-open::after{content:"";position:fixed;z-index:360;inset:0;background:rgba(2,7,8,.54);backdrop-filter:blur(3px);pointer-events:none}.world-action-panel [data-world-action-content]{padding-bottom:8px}
}
@media (max-width:760px){
    .object-command-menu{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));top:auto;bottom:calc(76px + env(safe-area-inset-bottom));width:auto;border-radius:20px;padding:10px;transform:translateY(22px)}.object-command-actions{gap:6px}.object-command-action{min-height:76px}.object-command-menu header>span{width:42px;height:42px}.selected-building-dock{bottom:calc(144px + env(safe-area-inset-bottom))}
    .map-command-dialog{align-items:end;padding:0}.map-command-card{width:100%;max-height:92dvh;border-radius:24px 24px 0 0;border-left:0;border-right:0;border-bottom:0}.map-command-head{padding:18px 16px 13px}.map-command-filter{padding:10px 14px}.inline-training-grid,.map-research-grid{grid-template-columns:1fr;padding:12px 13px}.map-command-footer{padding:11px 13px calc(12px + env(safe-area-inset-bottom));flex-wrap:wrap}.map-command-footer>span{width:100%;margin:0}.map-research-active{margin:10px 13px 0}.inline-train-order{grid-template-columns:88px 1fr}.inline-train-order .button{grid-column:1/-1;min-height:46px}.wall-garrison-command>header{display:grid}.wall-garrison-summary{text-align:left}.wall-garrison-grid{grid-template-columns:1fr}.wall-garrison-grid article{grid-template-columns:36px 1fr 76px}.wall-garrison-grid article label:last-child{grid-column:2/4}.wall-garrison-actions .button{flex:1 1 140px}
}
@media (prefers-reduced-motion:reduce){.object-command-menu,.map-command-dialog,.map-command-card,.global-world-shell .world-action-panel{transition:none}.world-building.building-research_center .building-props::after{animation:none}}
.research-center-required{display:flex;align-items:center;gap:16px;margin:0 0 18px;padding:17px 19px;border:1px solid rgba(106,226,236,.35);border-radius:18px;background:linear-gradient(120deg,rgba(29,101,116,.28),rgba(13,30,31,.72));color:#eafcff}.research-center-required>span{font-size:2.2rem}.research-center-required>div{flex:1}.research-center-required h2{margin:.1rem 0;color:#dcfbff}.research-center-required p{margin:.2rem 0;color:#a9c7c9}.research-center-required .eyebrow{color:#78dce4}@media(max-width:720px){.research-center-required{display:grid;grid-template-columns:auto 1fr}.research-center-required .button{grid-column:1/-1}}


/* 3.7.1 – eindeutige und funktionsfähige Operationsformationen */
.operation-form-hint{margin:-.35rem 0 .7rem;padding:.55rem .65rem;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(0,0,0,.16);color:#9eb9af;font-size:.69rem;line-height:1.4}
.operation-form-hint.warning{border-color:rgba(242,201,109,.24);color:#ffe1a3;background:rgba(242,201,109,.08)}
.operation-form-hint.good{border-color:rgba(120,224,176,.25);color:#baf6d3;background:rgba(120,224,176,.08)}
.operation-form-hint.danger{border-color:rgba(239,116,104,.28);color:#ffc0ba;background:rgba(239,116,104,.09)}
.operation-form-tools [data-fill-operation].active{border-color:rgba(255,222,137,.62);color:#fff0bd;background:linear-gradient(180deg,rgba(110,84,26,.95),rgba(61,43,12,.98));box-shadow:inset 0 1px rgba(255,255,255,.14),0 0 0 2px rgba(245,200,94,.11)}
.operation-form-tools button[type="submit"]{flex:1 0 100%;margin-left:0}
@media (max-width:520px){.operation-form-tools>.button{flex:1 1 calc(50% - .4rem)}.operation-form-tools button[type="submit"]{flex-basis:100%}}

/* 4.3.1 – March Recovery: returned armies never trap command slots. */
.world-operation-actions{display:flex!important;align-items:center;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.world-operation-actions .button{min-height:2.15rem;padding:.42rem .65rem;font-size:.68rem}.world-return-card{display:grid;gap:.65rem;padding:.85rem;border:1px solid rgba(95,239,196,.34);border-radius:14px;background:linear-gradient(145deg,rgba(22,105,83,.34),rgba(4,37,32,.88));box-shadow:inset 0 1px rgba(255,255,255,.06)}.world-return-card strong{color:#b8ffe8}.world-return-card p{margin:0;color:#a8c9bf;line-height:1.45}.world-shield-card .button{margin-top:.7rem}
@media(max-width:760px){.world-operation-actions{grid-column:1/-1;display:grid!important;justify-content:stretch}.world-operation-actions .button{width:100%}}

/* 4.4.0 – Shield Arsenal */
.shield-bubble { text-decoration: none; }
.shield-bubble.shield-locked { background: linear-gradient(135deg,#ffe0d5,#ffc7b4); border-color:#e99a7d; color:#672816; box-shadow:0 8px 20px rgba(151,54,23,.18); }

/* 5.1.0 – Admin Commerce Control */
.admin-shop-panel{padding:1rem 1.35rem 1.2rem}
.admin-shop-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.9rem;padding:1rem;border:1px solid rgba(108,216,144,.18);border-radius:16px;background:linear-gradient(135deg,rgba(41,130,69,.14),rgba(6,22,14,.12))}.admin-shop-hero h3{margin:.15rem 0 .35rem;font-size:1.25rem}.admin-shop-hero p{margin:0;color:#abc3b1}
.admin-shop-live-state{display:flex;align-items:center;gap:.45rem;white-space:nowrap;padding:.48rem .65rem;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:rgba(0,0,0,.16);color:#b9c9bd;font-weight:850;font-size:.78rem}.admin-shop-live-state i{width:9px;height:9px;border-radius:50%;background:#8e9b91}.admin-shop-live-state.online{color:#a9efbc;border-color:rgba(94,220,126,.28)}.admin-shop-live-state.online i{background:#69df8a;box-shadow:0 0 12px rgba(105,223,138,.65)}.admin-shop-live-state.offline{color:#ffc0ad;border-color:rgba(255,126,99,.3)}.admin-shop-live-state.offline i{background:#ff7e63}
.admin-shop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.admin-shop-card{display:grid;align-content:start;gap:.75rem;padding:1rem;border:1px solid rgba(166,217,178,.15);border-radius:15px;background:rgba(255,255,255,.035)}.admin-shop-card.admin-shop-wide{grid-column:1/-1}.admin-shop-card label{display:grid;gap:.35rem;color:#cfe5d4;font-size:.78rem;font-weight:850}.admin-shop-card input,.admin-shop-card select,.admin-shop-card textarea{width:100%;min-height:44px;border:1px solid rgba(166,217,178,.24);border-radius:10px;padding:.65rem .75rem;color:#effbf1;background:#0b1b12;outline:none;font:inherit}.admin-shop-card textarea{min-height:96px;resize:vertical}.admin-shop-card input:focus,.admin-shop-card select:focus,.admin-shop-card textarea:focus{border-color:#6ada87;box-shadow:0 0 0 3px rgba(106,218,135,.16)}
.admin-toggle-row{display:grid!important;grid-template-columns:1fr auto;align-items:center;gap:1rem;padding:.75rem;border:1px solid rgba(166,217,178,.12);border-radius:12px;background:rgba(0,0,0,.12)}.admin-toggle-row span{display:grid;gap:.2rem}.admin-toggle-row small{color:#8fa898;font-weight:650}.admin-toggle-row input{appearance:none;width:48px!important;min-height:26px!important;height:26px;padding:0!important;border-radius:999px;background:#253b2c;position:relative;cursor:pointer}.admin-toggle-row input::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#b7c8bb;transition:.15s}.admin-toggle-row input:checked{background:#237843}.admin-toggle-row input:checked::after{left:25px;background:#ecfff2}.admin-shop-security-hint{margin:0;padding:.65rem .75rem;border:1px solid rgba(255,199,78,.17);border-radius:10px;background:rgba(255,198,69,.055);color:#dbc98f;font-size:.76rem;line-height:1.45}
.admin-shop-actions{display:flex;justify-content:flex-end;gap:.65rem;margin-top:.9rem}.admin-shop-form>.admin-console-status{margin:.8rem 0 0}
@media(max-width:760px){.admin-shop-panel{padding-left:.8rem;padding-right:.8rem}.admin-shop-hero{display:grid}.admin-shop-grid{grid-template-columns:1fr}.admin-shop-card.admin-shop-wide{grid-column:auto}.admin-shop-actions{display:grid;grid-template-columns:1fr}.admin-shop-actions .button{width:100%}}


/* 7.1.4 – Admin Premium-Zahlungsfreigaben */
.admin-payment-orders{margin-top:1rem;padding:1rem;border:1px solid rgba(255,205,92,.18);border-radius:16px;background:rgba(255,194,50,.035)}
.admin-payment-orders-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem}.admin-payment-orders-head h3{margin:.12rem 0 .3rem}.admin-payment-orders-head p{margin:0;color:#abc3b1;max-width:760px}.admin-payment-orders-list{display:grid;gap:.55rem}.admin-payment-order-empty{padding:.8rem;border:1px dashed rgba(255,255,255,.13);border-radius:11px;color:#91aa97}
.admin-payment-order{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem .8rem;align-items:center;padding:.75rem;border:1px solid rgba(166,217,178,.14);border-radius:12px;background:rgba(255,255,255,.03)}.admin-payment-order-main{display:grid;grid-template-columns:auto 1fr;gap:.65rem;align-items:center}.admin-payment-order-main>span{font-size:1.4rem}.admin-payment-order strong,.admin-payment-order small,.admin-payment-order code{display:block}.admin-payment-order small{margin:.12rem 0;color:#91aa97}.admin-payment-order code{width:fit-content;max-width:100%;word-break:break-all;padding:.18rem .32rem;border-radius:6px;background:#07140c;color:#dff3e4}.admin-payment-order>b{font-size:.76rem;color:#f6d06f}.admin-payment-order.status-completed>b{color:#78dda0}.admin-payment-order.status-rejected>b{color:#ff9c92}.admin-payment-order-actions{grid-column:1/-1;display:flex;gap:.5rem;justify-content:flex-end}
@media(max-width:760px){.admin-payment-orders-head{display:grid}.admin-payment-orders-head .button{width:100%}.admin-payment-order{grid-template-columns:1fr}.admin-payment-order-actions{display:grid;grid-template-columns:1fr}.admin-payment-order-actions .button{width:100%}}

/* 7.2.0: Heldenkarten aus Schädlingskämpfen */
.hero-card-drop{display:flex;align-items:center;gap:.7rem;margin:.8rem 0;padding:.7rem .85rem;border:1px solid rgba(211,176,92,.42);border-radius:12px;background:linear-gradient(135deg,rgba(84,56,105,.32),rgba(99,74,31,.2));box-shadow:inset 0 0 18px rgba(236,198,107,.07)}.hero-card-drop>span{font-size:2rem}.hero-card-drop>div{display:grid;text-align:left}.hero-card-drop small{color:#d5bd83}.hero-card-drop strong{color:#fff}.hero-card-drop em{font-size:.72rem;font-style:normal;color:#b7c8bb}

/* 7.5.0 Realm Command: schnelle Marschformationen auf der Weltkarte */
.world-preset-strip{margin:12px 0 14px;padding:11px;border:1px solid rgba(219,190,104,.14);border-radius:14px;background:linear-gradient(135deg,rgba(213,177,77,.055),rgba(24,50,39,.08))}.world-preset-strip>small{display:block;margin-bottom:8px;color:#c8ae68;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.world-preset-strip>div{display:flex;gap:7px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}.world-preset-chip{flex:0 0 auto;display:grid;grid-template-columns:auto auto;gap:1px 7px;align-items:center;min-width:118px;padding:8px 10px;border:1px solid rgba(255,255,255,.08);border-radius:11px;background:#0b1814;color:#daeae2;cursor:pointer;text-align:left}.world-preset-chip:hover,.world-preset-chip:focus-visible{border-color:rgba(112,217,165,.4);background:#10251d}.world-preset-chip b{grid-row:1/3;display:grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#1a3a2d;color:#b8ead2}.world-preset-chip span{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800}.world-preset-chip em{font-size:9px;color:#a99053;font-style:normal}

/* 8.7.0 – Battle result recovery, rewards and scouting intelligence */
.battle-cinematic[hidden], .march-cinematic[hidden] { display:none !important; }
.battle-cinematic.resolved .battle-cinematic-backdrop { cursor:pointer; }
.battle-cinematic.resolved .battle-cinematic-dialog { box-shadow:0 35px 90px rgba(0,0,0,.62),0 0 0 1px rgba(255,213,111,.08),0 0 48px rgba(82,220,157,.08); }
.battle-rewards { width:100%; display:grid; gap:.6rem; margin:.65rem 0 .25rem; padding:.7rem; border:1px solid rgba(243,205,105,.2); border-radius:14px; background:linear-gradient(145deg,rgba(100,74,26,.2),rgba(0,0,0,.16)); text-align:left; }
.battle-rewards > header { display:flex; align-items:center; gap:.55rem; }
.battle-rewards > header > span { font-size:1.35rem; }
.battle-rewards > header > div { display:grid; gap:.05rem; }
.battle-rewards > header small { color:#d5bd83; text-transform:uppercase; letter-spacing:.06em; font-size:.62rem; }
.battle-rewards > header strong { color:#fff3c4; }
.battle-bonus-rewards { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:.45rem; width:100%; }
.battle-reward-card { display:flex; align-items:center; gap:.55rem; min-width:0; padding:.55rem .6rem; border:1px solid rgba(255,255,255,.08); border-radius:11px; background:rgba(2,17,14,.6); }
.battle-reward-card > span { flex:0 0 auto; font-size:1.55rem; }
.battle-reward-card > div { min-width:0; display:grid; gap:.06rem; }
.battle-reward-card small { color:#94b5a5; font-size:.62rem; text-transform:uppercase; letter-spacing:.05em; }
.battle-reward-card strong { overflow:hidden; text-overflow:ellipsis; color:#f7f3db; font-size:.82rem; white-space:nowrap; }
.battle-reward-card em { color:#a9c7b6; font-size:.66rem; font-style:normal; }
.battle-reward-card.diamond { border-color:rgba(122,206,255,.26); box-shadow:inset 0 0 16px rgba(93,185,255,.06); }
.battle-reward-card.hero-card { border-color:rgba(205,139,255,.22); }
.battle-reward-card.xp { border-color:rgba(255,213,100,.2); }
.scout-optics-line { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.35rem; align-items:center; margin:.5rem 0; padding:.45rem .55rem; border-radius:9px; background:rgba(32,80,65,.08); font-size:.72rem; }
.scout-optics-line span { font-weight:800; }
.scout-optics-line b { color:#567a69; font-size:.68rem; }
.scout-report.exact { border-color:#62cda0; box-shadow:inset 0 0 0 1px rgba(98,205,160,.12); }
.scout-report.exact .scout-optics-line b { color:#23845c; }
.scout-unit-intel { display:flex; flex-wrap:wrap; gap:.3rem; margin:.45rem 0; }
.scout-unit-intel span { padding:.3rem .42rem; border:1px solid rgba(47,110,83,.14); border-radius:8px; background:rgba(255,255,255,.62); font-size:.7rem; }
.frontier-ui .scout-optics-line { background:rgba(67,145,111,.12); }
.frontier-ui .scout-optics-line b { color:#8fd8b6; }
.frontier-ui .scout-unit-intel span { border-color:rgba(116,215,169,.14); background:rgba(3,24,19,.48); }
@media (max-width:700px) {
  .battle-bonus-rewards { grid-template-columns:1fr; }
  .battle-reward-card strong { white-space:normal; }
}


/* 8.9.4 stable building layer: dynamic buildings never race DOM anchors. */
.building-layer{position:absolute;inset:0;z-index:5;pointer-events:none;}
.building-layer>.world-building{pointer-events:auto;}

/* 10.1.2 · Frontier-Claim-Fallback: Das Formular ist bewusst echtes HTML,
   damit Eventbelohnungen auch bei einem Karten-/JavaScriptfehler per POST
   abholbar bleiben. */
.frontier-claim-form { margin:0; min-width:82px; }
.frontier-claim-form .button { width:100%; }
@media (max-width:720px) {
    .frontier-milestone .frontier-claim-form { grid-column:1/-1; width:100%; }
}

/* 10.1.3: Tagesziel-Claims besitzen einen echten POST-Fallback und bleiben
   trotzdem an derselben Stelle im Kartenlayout wie der frühere Direktbutton. */
.daily-objective-claim-form {
    grid-column: 1 / -1;
    width: 100%;
    margin: 0;
}
.daily-objective-claim-form .button { width: 100%; }
.session-compass-claim-form { margin: 0; }
.session-compass-claim-form .session-compass-cta { width: 100%; }
.spotlight-actions form[data-daily-spotlight-claim-form] { margin: 0; display: flex; }
.spotlight-actions form[data-daily-spotlight-claim-form] .button { width: 100%; }
