:root{--bg:#10131a;--panel:#1a2030;--panel2:#242c3d;--text:#eef2ff;--muted:#aab4cc;--accent:#7c5cff;--danger:#ff637d;--good:#5ad29a;--border:#34405a}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#1b2340,var(--bg) 55%);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 5%;background:#0b0e15dd;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}.topbar strong{font-size:1.2rem}.subtitle{display:block;color:var(--muted);font-size:.8rem}.topbar nav{display:flex;gap:14px;align-items:center}.topbar a{color:#cfc6ff;text-decoration:none}.container{width:min(1180px,92%);margin:28px auto}.card{background:linear-gradient(160deg,var(--panel),#141925);border:1px solid var(--border);border-radius:16px;padding:22px;box-shadow:0 18px 50px #0005}.hero{text-align:center}.auth-grid,.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:22px}label{display:grid;gap:7px;color:var(--muted);margin:14px 0}input,textarea,select,button{font:inherit}input,textarea,select{width:100%;padding:12px;border-radius:10px;border:1px solid var(--border);background:#0f1420;color:var(--text)}button{border:0;border-radius:10px;padding:12px 18px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}.alert{padding:13px 16px;border-radius:10px;margin-bottom:16px}.error{background:#4b1721;color:#ffd5dc}.success{background:#143c2d;color:#c8ffe8}.city-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin-top:22px}.city-card{display:block;background:var(--panel);border:1px solid var(--border);border-radius:16px;overflow:hidden;color:var(--text);text-decoration:none;transition:.2s}.city-card:hover{transform:translateY(-4px);border-color:var(--accent)}.city-card img{width:100%;height:180px;object-fit:cover}.city-card div{padding:16px}.city-card p{color:var(--muted)}.game-layout{display:grid;grid-template-columns:320px 1fr;gap:22px}.city-hero{width:100%;height:210px;object-fit:cover;border-radius:12px}.command-list{display:flex;flex-wrap:wrap;gap:8px}.command-chip{padding:8px 10px;background:var(--panel2)}.feed-panel{min-height:70vh;display:flex;flex-direction:column}.feed{flex:1;max-height:65vh;overflow:auto;padding-right:6px}.feed-message{border-left:4px solid var(--accent);background:#111724;margin:0 0 12px;padding:13px;border-radius:10px}.feed-message.item{border-color:#f4cf55}.feed-message.enemy{border-color:var(--danger)}.feed-message.system{border-color:#8892a8}.message-head{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem}.typed{font-family:ui-monospace,monospace;color:#b8c3ff;margin:6px 0}.result{display:flex;gap:12px;align-items:center}.result img{width:84px;height:84px;object-fit:cover;border-radius:10px}.result p{margin:4px 0}.command-form{display:grid;grid-template-columns:1fr auto;gap:10px;margin-top:12px}.status{color:var(--muted);font-size:.85rem}.full-width{grid-column:1/-1}.admin-city{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}.admin-city img{width:90px;height:70px;object-fit:cover;border-radius:9px}@media(max-width:800px){.auth-grid,.admin-grid,.game-layout{grid-template-columns:1fr}.topbar{align-items:flex-start;gap:12px;flex-direction:column}.feed-panel{min-height:60vh}.command-form{grid-template-columns:1fr}.city-info{order:2}}
.health-box{margin:14px 0;padding:12px;border:1px solid var(--border);border-radius:10px;background:#0f1420}.health-box strong{color:var(--good)}.damage-label{font-size:.75rem;color:#ff9bad;margin-right:5px}.command-list{align-items:center}
.form-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.city-image-button{display:block;width:100%;padding:0;background:transparent;border:0}.city-image-button:hover{transform:none}.image-hint{font-size:.8rem;color:var(--muted);text-align:center;margin-top:7px}.enemy-command{background:#5a2232}.city-enemies{display:grid;gap:10px}.map-enemy{display:flex;gap:10px;align-items:center;background:#101622;border:1px solid var(--border);padding:9px;border-radius:10px}.map-enemy img{width:62px;height:62px;object-fit:cover;border-radius:8px}.map-enemy small{display:block;color:var(--muted);margin-top:4px}.map-dialog{width:min(1000px,94vw);max-height:92vh;background:#111724;color:var(--text);border:1px solid var(--border);border-radius:16px;padding:18px}.map-dialog::backdrop{background:#000c}.map-dialog img{display:block;width:100%;max-height:75vh;object-fit:contain;border-radius:12px;background:#080b10}.dialog-close{float:right;background:#3b4357}.enemy-admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.enemy-admin-card{display:flex;gap:12px;align-items:center;background:#111724;border:1px solid var(--border);padding:10px;border-radius:12px}.enemy-admin-card img{width:80px;height:80px;object-fit:cover;border-radius:9px}.enemy-admin-card p{margin:5px 0;color:var(--muted)}small{color:var(--muted)}@media(max-width:800px){.form-columns{grid-template-columns:1fr}}
.input-tabs{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:14px;color:var(--text)}.input-tabs span{font-size:.8rem;color:var(--muted)}.chat-title{border-top:1px solid var(--border);padding-top:14px}.chat-form button{background:#287a66}.feed-message.chat{border-color:#48c7a6;background:#10231f}.chat-message{font-size:1rem;line-height:1.45;margin-top:7px;white-space:pre-wrap;overflow-wrap:anywhere}.city-card img,.city-hero,.admin-city img,.enemy-admin-card img,.map-enemy img{background:#080b10}.broken-image{display:none}@media(max-width:600px){.input-tabs{align-items:flex-start;flex-direction:column}.input-tabs span{margin-top:-7px}}
.activity-message{font-size:1.02rem;font-weight:700;margin:.4rem 0 .65rem;padding:.65rem .8rem;border-left:4px solid currentColor;background:rgba(255,255,255,.06);border-radius:6px}.message-preview{margin-top:.75rem;padding:.7rem;border:1px solid rgba(255,255,255,.12);border-radius:8px}.message-preview p{margin:.25rem 0 .6rem}.message-builder textarea{min-height:180px}.enemy-message-card{align-items:flex-start}.enemy-message-card>div{width:100%}
/* Adventure builder and RPG expansion */
.adventure-builder{background:radial-gradient(circle at 15% 0,#3b245f 0,transparent 35%),radial-gradient(circle at 90% 10%,#143d55 0,transparent 32%),linear-gradient(#0c1019,#080b11);background-attachment:fixed}.adventure-builder .topbar{background:linear-gradient(90deg,#120f21ee,#19132bee);border-bottom-color:#9d78ff}.adventure-builder .card{background:linear-gradient(145deg,#1e1830,#101725 68%);border-color:#5d4b83;box-shadow:0 20px 55px #0009,0 0 0 1px #b89cff14 inset}.adventure-builder h2{font-family:Georgia,serif;color:#f6dd9b;text-shadow:0 2px 10px #f3ad3740}.builder-heading{display:flex;gap:14px;align-items:center;border-bottom:1px solid #705c98;padding-bottom:14px;margin-bottom:12px}.builder-heading h2,.builder-heading p{margin:0}.builder-heading p{color:#bcb4d2;margin-top:4px}.builder-rune{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:radial-gradient(circle,#f3d486,#8a5ec9);box-shadow:0 0 24px #ac78ff88;color:#21162e;font-size:1.7rem}.quest-card fieldset{border:1px solid #5d4b83;border-radius:12px;margin:16px 0;padding:14px}.quest-card legend{color:#f6dd9b;padding:0 8px}.form-columns.three{grid-template-columns:repeat(3,minmax(0,1fr))}.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:9px}.check-card{display:flex;align-items:center;gap:9px;margin:0;padding:10px;background:#0d1421;border:1px solid #3c4962;border-radius:10px}.check-card input,.toggle input{width:auto}.toggle-row{display:flex;flex-wrap:wrap;gap:12px}.toggle{display:flex;align-items:center;gap:9px;padding:12px 14px;background:#142338;border:1px solid #46658b;border-radius:10px}.loot-grid,.shop-grid,.building-grid,.inventory-grid{display:grid;gap:10px}.loot-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.loot-card,.shop-item,.inventory-item{display:flex;gap:11px;align-items:center;background:#0e1521;border:1px solid var(--border);border-radius:12px;padding:10px}.loot-card img,.shop-item img,.inventory-item img{width:70px;height:70px;object-fit:cover;border-radius:9px}.shop-item small{display:block;margin:4px 0}.buy-button{padding:6px 10px;background:#b27c28}.building-command{background:#36577d}.shop-command{background:#876020}.stat-strip{display:grid;grid-template-columns:1fr 1fr;gap:8px}.money-box{margin:14px 0;padding:12px;border:1px solid #7a6128;border-radius:10px;background:#211a0d}.money-box strong{color:#f6d06d}.inventory-item img{width:42px;height:42px}.inventory-item span{font-size:.85rem}.building-card{border-color:#4a7199}@media(max-width:800px){.form-columns.three{grid-template-columns:1fr}.stat-strip{grid-template-columns:1fr}.toggle-row{display:grid}.shop-grid{grid-template-columns:1fr}}


/* Persistent player health bar */
.health-panel{width:100%;min-width:220px;padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(8,13,24,.72);box-shadow:inset 0 0 18px rgba(0,0,0,.35)}
.health-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px;font-size:.92rem}
.health-bar{height:18px;overflow:hidden;border:2px solid rgba(255,255,255,.2);border-radius:999px;background:#241318;box-shadow:inset 0 2px 6px rgba(0,0,0,.65)}
.health-bar-fill{height:100%;width:100%;border-radius:inherit;background:linear-gradient(90deg,#8f1515,#ef3e32 62%,#ff8178);box-shadow:0 0 12px rgba(239,62,50,.65);transition:width .35s ease}
.health-panel.health-low .health-bar-fill{animation:healthPulse .85s infinite alternate}
.health-panel.health-empty{filter:grayscale(.35)}
@keyframes healthPulse{from{opacity:.72}to{opacity:1;box-shadow:0 0 20px rgba(255,30,30,.95)}}
@media(max-width:700px){.stat-strip{align-items:stretch}.health-panel{min-width:0}.health-label{font-size:.85rem}}

/* Inventory equipment and battle UI */
.inventory-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px}
.inventory-heading h3{margin:0}.inventory-open{padding:8px 12px;background:#6f4fc7}
.equipped-summary{padding:11px;margin:10px 0;border:1px solid #6c5b99;border-radius:10px;background:#17132a}
.unequip-button{padding:6px 9px;margin-left:8px;background:#5d3441}
.inventory-dialog{position:fixed;inset:0;z-index:50;background:#000c;display:grid;place-items:center;padding:18px}
.inventory-dialog[hidden]{display:none}.inventory-dialog-card{width:min(760px,96vw);max-height:88vh;overflow:auto;background:linear-gradient(145deg,#211a35,#101725);border:1px solid #8d71cf;border-radius:18px;padding:20px;box-shadow:0 30px 90px #000}
.inventory-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.inventory-card{display:flex;gap:12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#0d1420}
.inventory-card.is-equipped{border-color:#e1bd58;box-shadow:0 0 18px #e1bd5833}.inventory-card img{width:76px;height:76px;object-fit:cover;border-radius:9px}
.inventory-card-info{display:grid;gap:5px;align-content:start}.inventory-card-info small{display:block}.equip-button{padding:7px 10px;margin-top:4px}.is-equipped .equip-button{background:#8f762c}
.active-enemy-panel{display:flex;gap:12px;align-items:center;padding:12px;margin:12px 0;border:1px solid #a44455;border-radius:12px;background:#29131a}
.active-enemy-panel img{width:76px;height:76px;object-fit:cover;border-radius:10px}.active-enemy-panel>div{flex:1}.active-enemy-panel small{display:block;margin:4px 0}
.enemy-health-track{height:12px;background:#17090d;border-radius:999px;overflow:hidden;margin:7px 0}.enemy-health-track span{display:block;height:100%;background:linear-gradient(90deg,#8f1515,#ff4b5e)}
.active-enemy-panel button{padding:8px 11px;background:#a62f48}.attack-command{background:#8c273c}
.builder-nav{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:12px 14px;border:1px solid #6b5791;border-radius:14px;background:#151024;position:sticky;top:84px;z-index:3}
.builder-nav a{color:#f7dfa2;text-decoration:none;padding:7px 10px;border-radius:8px;background:#2a2042}.builder-nav span{color:#bdb4d4;font-size:.85rem}
.builder-section{scroll-margin-top:150px;outline:1px solid transparent}.builder-section:target{outline-color:#d4b760;box-shadow:0 0 30px #d4b76033}
@media(max-width:700px){.builder-nav{position:static}.inventory-dialog-card{padding:14px}.inventory-card{align-items:center}}


/* Enemy markers shown directly on the city map */
.city-map-stage{
    position:relative;
    width:100%;
    min-height:260px;
    margin:12px 0 18px;
    overflow:hidden;
    border:1px solid #67558b;
    border-radius:15px;
    background:#0b0f18;
}
.city-map-background{
    display:block;
    width:100%;
    min-height:260px;
    max-height:460px;
    object-fit:cover;
    opacity:.82;
}
.enemy-map-markers{
    position:absolute;
    inset:0;
}
.enemy-map-marker{
    position:absolute;
    left:var(--marker-x);
    top:var(--marker-y);
    transform:translate(-50%,-50%);
    display:grid;
    justify-items:center;
    gap:3px;
    width:auto;
    min-width:68px;
    padding:5px;
    border:1px solid #e15567;
    border-radius:10px;
    background:#210d14e8;
    color:#fff;
    box-shadow:0 0 18px #d93f5559;
    z-index:2;
}
.enemy-map-marker:hover{
    transform:translate(-50%,-50%) scale(1.08);
}
.enemy-map-marker img{
    width:48px;
    height:48px;
    object-fit:cover;
    border-radius:8px;
}
.enemy-map-marker span{
    max-width:100px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:.72rem;
}
@media(max-width:700px){
    .city-map-stage,.city-map-background{min-height:220px}
    .enemy-map-marker img{width:40px;height:40px}
    .enemy-map-marker{min-width:58px}
}

/* Reliable city map, presence, profiles, and public inventory */
.city-map-stage{background:linear-gradient(135deg,#11182a,#22142e)}
.city-map-background{background:#121827}
.city-map-background.map-image-failed{visibility:hidden}
.players-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}
.players-heading h3{margin:0}.players-heading span{font-size:.85rem;color:#c8badf}
.city-players{display:grid;gap:8px;margin:10px 0 16px}
.player-presence-card{display:flex;align-items:center;text-align:left;gap:10px;width:100%;padding:9px;border:1px solid #55476f;border-radius:12px;background:#121827;color:#fff}
.player-presence-card:hover{border-color:#b08fe3;transform:translateY(-1px)}
.player-presence-card span:nth-child(2){display:grid;gap:2px;flex:1}.player-presence-card small{color:#aaa0bd}.player-presence-card em{font-size:.72rem;color:#d6bdff;font-style:normal}
.player-avatar{width:46px;height:46px;object-fit:cover;border-radius:50%;border:2px solid #9b7ad0;background:#2a2240;display:grid;place-items:center;flex:0 0 auto}
.avatar-initial{font-weight:800;font-size:1.1rem;color:#fff;background:linear-gradient(145deg,#7250a6,#2e6c84)}
.profile-avatar{width:96px;height:96px;font-size:2rem}
.profile-header{display:flex;gap:18px;align-items:flex-start;padding:10px 0 18px}.profile-header h2{margin:4px 0}.profile-header p{white-space:pre-wrap}
.profile-dialog-card{width:min(820px,96vw)}
.profile-edit-form{display:grid;gap:14px}.profile-edit-form label{display:grid;gap:7px}.profile-edit-form textarea{resize:vertical;min-height:120px}
.nav-button{background:transparent;border:1px solid #67568b;padding:7px 10px}
.item-placeholder{width:76px;height:76px;border-radius:9px;background:#222b3a;display:grid;place-items:center;font-weight:bold}
.equipped-label{color:#f6d36f!important;font-weight:bold}
.public-inventory{margin-top:10px}
@media(max-width:650px){.profile-header{display:grid;justify-items:center;text-align:center}.player-presence-card em{display:none}}
