:root{--ink:#f6ecd9;--bark:#1d150e;--bark2:#33261a;--ember:#e09a43;--gold:#e7b75f;--sand:#ead9b8;--pill:rgba(24,17,10,.82);
 --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bark);color:var(--ink);font-family:var(--serif);overflow:hidden}
button{font:inherit;color:inherit}
#meclabs-ai-widget-btn{display:none!important}

/* top bar */
.bar{position:fixed;z-index:30;left:0;right:0;top:0;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:linear-gradient(rgba(20,13,7,.78),rgba(20,13,7,0));pointer-events:none}
.bar>*{pointer-events:auto}
.brand{display:flex;align-items:baseline;gap:14px;min-width:0;text-shadow:0 1px 8px rgba(0,0,0,.7)}
.brand-name{font-size:23px;font-weight:700;letter-spacing:.3px;white-space:nowrap}
.brand-sub{font:600 11px/1 var(--sans);letter-spacing:2.4px;text-transform:uppercase;color:#ecd9ae;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tools{display:flex;gap:8px}
.tools button{width:40px;height:40px;border-radius:50%;border:1px solid rgba(234,217,184,.5);background:rgba(29,21,14,.7);font-size:19px;line-height:1;cursor:pointer;backdrop-filter:blur(6px)}
.tools button:hover{border-color:var(--gold);color:var(--gold)}
body.in-scene .tools{display:none}

/* map */
.view{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;background:#2a2417}
.view.dragging{cursor:grabbing}
.stage{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.map{display:block;width:100%;height:100%;user-select:none;-webkit-user-drag:none}
.lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.sun{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 0% 0%,rgba(255,214,140,.30),rgba(255,200,120,0) 55%),radial-gradient(140% 120% at 50% 45%,rgba(0,0,0,0) 55%,rgba(20,10,0,.42) 100%);animation:sun 14s ease-in-out infinite alternate}
@keyframes sun{from{opacity:.75}to{opacity:1}}

.who,.place,.medal{position:absolute;transform:translate(-50%,-100%) scale(var(--inv,1));transform-origin:50% 100%}
.who{display:flex;flex-direction:column;align-items:center;background:none;border:0;padding:0;cursor:pointer;z-index:3}
.who .fig{height:66px;width:auto;display:block;filter:drop-shadow(0 4px 4px rgba(0,0,0,.55));transition:transform .25s ease,filter .25s ease;transform-origin:50% 100%}
.who::before{content:"";position:absolute;left:50%;bottom:-6px;width:44px;height:14px;margin-left:-22px;border-radius:50%;border:2px solid rgba(255,225,160,.9);box-shadow:0 0 18px rgba(255,205,120,.9),inset 0 0 12px rgba(255,205,120,.5);animation:ring 2.4s ease-out infinite}
@keyframes ring{0%{transform:scale(.55);opacity:.95}100%{transform:scale(1.5);opacity:0}}
.who:hover .fig,.who:focus-visible .fig{transform:scale(1.25);filter:drop-shadow(0 12px 14px rgba(0,0,0,.55)) drop-shadow(0 0 14px rgba(255,214,140,.75))}
.who .tag{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:5px;background:var(--pill);border:1px solid rgba(231,183,95,.65);border-radius:999px;padding:3px 9px 4px;text-align:center;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.45);backdrop-filter:blur(4px)}
.who .tag b{display:block;font-size:13px;letter-spacing:.2px}
.who .tag span{display:block;font:700 8.5px/1.2 var(--sans);letter-spacing:1.4px;text-transform:uppercase;color:#e6cf9f}
.place{transform:translate(-50%,-50%) scale(var(--inv,1));transform-origin:50% 50%;pointer-events:none;font:700 10.5px/1 var(--sans);letter-spacing:1.4px;text-transform:uppercase;color:#fff6e2;background:rgba(20,13,7,.78);border:1px solid rgba(234,217,184,.55);border-radius:5px;padding:4px 8px;white-space:nowrap;z-index:2;box-shadow:0 3px 10px rgba(0,0,0,.45)}
.medal{transform:translate(-50%,-50%) scale(var(--inv,1));transform-origin:50% 50%;pointer-events:none;text-align:center;z-index:2}
.medal img{width:100px;height:100px;border-radius:50%;object-fit:cover;border:3px solid var(--sand);box-shadow:0 10px 26px rgba(0,0,0,.55),0 0 0 6px rgba(29,21,14,.35)}
.medal span{display:inline-block;margin-top:8px;font:700 12px/1 var(--sans);letter-spacing:1.6px;text-transform:uppercase;color:#fff6e2;background:rgba(20,13,7,.78);border:1px solid rgba(234,217,184,.55);border-radius:6px;padding:6px 10px;white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.45)}

.welcome{position:absolute;right:28px;bottom:28px;width:380px;max-width:calc(100% - 56px);background:linear-gradient(160deg,rgba(38,27,16,.93),rgba(24,16,9,.93));border:1px solid rgba(231,183,95,.5);border-radius:18px;padding:22px 24px 24px;box-shadow:0 18px 50px rgba(0,0,0,.55);cursor:default;animation:rise .9s .3s both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.welcome-kicker{margin:0;font:600 11px/1 var(--sans);letter-spacing:2.6px;text-transform:uppercase;color:var(--gold)}
.welcome h1{margin:8px 0 8px;font-size:30px;line-height:1.1}
.welcome-text{margin:0 0 16px;font-size:16px;line-height:1.45;color:#ead9b8}
.btn-gold{border:0;border-radius:999px;padding:12px 22px;background:linear-gradient(#f0c873,#d99a3c);color:#2a1a08;font:700 14px/1 var(--sans);letter-spacing:.4px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.btn-gold:hover{filter:brightness(1.07)}
.hint{display:none;position:absolute;right:24px;bottom:28px;margin:0;background:var(--pill);border-radius:999px;padding:9px 18px;font-size:14px;pointer-events:none;backdrop-filter:blur(4px)}

/* scenes */
.scene{position:fixed;inset:0;z-index:20;overflow:hidden;background:#0d0906}
.scene[hidden]{display:none}
.scene-stage{position:absolute;left:0;top:0;transform-origin:0 0}
.scene-back{position:absolute;inset:-40px;width:calc(100% + 80px);height:calc(100% + 80px);object-fit:cover;filter:blur(26px) brightness(.55);user-select:none}
.scene-stage.soft .scene-photo{-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
.scene-photo{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none}
.scene-glow{position:absolute;border-radius:50%;background:radial-gradient(closest-side,rgba(255,214,150,.26),rgba(255,214,150,0));pointer-events:none}
.scene-figure{position:absolute;display:block;user-select:none;filter:drop-shadow(0 18px 22px rgba(0,0,0,.45));opacity:0;transform:translateY(2.5%);transition:opacity .9s .35s ease,transform 1.1s .35s cubic-bezier(.2,.7,.2,1)}
.scene.ready .scene-figure{opacity:1;transform:none}
.scene-stage.drift{animation:drift 26s ease-in-out infinite alternate}
@keyframes drift{from{scale:1}to{scale:1.035}}
.scene-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(10,6,3,.5),rgba(10,6,3,0) 22%),radial-gradient(130% 110% at 50% 40%,rgba(0,0,0,0) 55%,rgba(8,4,0,.5) 100%)}
.btn-back{position:absolute;left:20px;top:74px;z-index:3;border:1px solid rgba(234,217,184,.55);border-radius:999px;background:rgba(24,17,10,.72);padding:10px 18px;font:600 13px/1 var(--sans);letter-spacing:.3px;cursor:pointer;backdrop-filter:blur(6px)}
.btn-back:hover{border-color:var(--gold);color:var(--gold)}
.plate{position:absolute;z-index:3;left:16px;bottom:14px;max-width:calc(100% - 32px);display:flex;align-items:center;gap:14px;background:rgba(24,16,9,.84);border:1px solid rgba(231,183,95,.45);border-radius:12px;padding:8px 12px 8px 16px;box-shadow:0 8px 26px rgba(0,0,0,.5);backdrop-filter:blur(6px);opacity:0;transform:translateY(10px);transition:opacity .7s .7s,transform .7s .7s}
.scene.ready .plate{opacity:1;transform:none}
.plate-who{display:flex;flex-direction:column;gap:3px}
.plate h2{margin:0;font-size:20px;line-height:1}
.plate-title{margin:0;font:600 9.5px/1 var(--sans);letter-spacing:1.8px;text-transform:uppercase;color:var(--gold);white-space:nowrap}
.plate-post{margin:0;font-size:13.5px;line-height:1.25;color:#ead9b8;max-width:200px;padding-left:14px;border-left:1px solid rgba(234,217,184,.25)}
.plate .btn-gold{padding:8px 14px;font-size:12px;white-space:nowrap}
.others{display:flex;align-items:center;gap:10px;padding-left:14px;border-left:1px solid rgba(234,217,184,.25)}
.others-label{font:600 9px/1.2 var(--sans);letter-spacing:1.4px;text-transform:uppercase;color:#cdb98f;max-width:54px}
.others-row{display:flex;gap:6px}
.other{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.05);border:1px solid rgba(234,217,184,.25);border-radius:999px;padding:3px 10px 3px 3px;cursor:pointer;transition:border-color .2s,background .2s}
.other:hover{border-color:var(--gold);background:rgba(231,183,95,.14)}
.other img{width:30px;height:30px;border-radius:50%;object-fit:cover}
.other b{font-size:13px}.other span{display:none}
.fade{position:fixed;inset:0;z-index:40;background:#0d0906;opacity:0;pointer-events:none;transition:opacity .45s ease}
.fade.on{opacity:1}

@media (max-width:700px){
  .bar{height:56px;padding:0 14px}.brand{flex-direction:column;gap:3px}.brand-name{font-size:18px}.brand-sub{font-size:9px}
  .who .fig{height:58px}.medal img{width:80px;height:80px}
  .welcome{left:12px;right:12px;bottom:12px;width:auto;max-width:none;padding:16px 18px 18px}.welcome h1{font-size:24px}.welcome-text{font-size:15px;margin-bottom:12px}
  .hint{display:none}
  .btn-back{left:12px;top:62px}
  .plate{left:8px;right:8px;bottom:8px;max-width:none;gap:10px;padding:7px 10px;flex-wrap:wrap}
  .plate-post,.others-label{display:none}.others{padding-left:10px}.other{padding:2px}.other b{display:none}.other img{width:34px;height:34px}.plate h2{font-size:18px}
  body.chatting .plate{display:none}
}
@media (prefers-reduced-motion:reduce){.scene-stage.drift,.sun,.who::before{animation:none}}
@media (max-width:1100px){.plate-post{display:none}}
