html{-webkit-text-size-adjust:100%}
body{margin:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:#0b3d5c;font-family:"Trebuchet MS",sans-serif;color:#3b2412;display:flex;flex-direction:column;align-items:center}
h1{color:#f6e2b3;margin:12px 0 4px;text-shadow:2px 2px #000;text-align:center}
#bar{color:#f6e2b3;margin-bottom:8px;font-size:18px;padding:0 12px;text-align:center}
#demo-bar{display:none;background:#ffd166;color:#3b2412;border-radius:10px;padding:8px 14px;margin:0 12px 8px;text-align:center;font-weight:bold}
#demo-bar button{margin-left:8px;font-size:15px;min-height:44px;padding:6px 12px;border-radius:8px;border:2px solid #7a4a1e;background:#fff3d6;cursor:pointer}
#wrap{display:flex;gap:14px;align-items:flex-start;justify-content:center;width:98vw;flex-wrap:wrap}
#map{position:relative;width:calc(96vw - 320px);max-width:1500px;aspect-ratio:1600/1000;background:url(map.jpg) center/cover;border-radius:12px;box-shadow:0 8px 30px #0008}
.spot{position:absolute;left:var(--wx);top:var(--wy);width:13.75%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;border:none;background:transparent;cursor:pointer}
.spot:hover,.spot:focus,.spot:active{background:radial-gradient(#fff6 0,#ffd70044 50%,transparent 70%);outline:none}
.spot.done::after{content:"⭐";position:absolute;top:0;right:10%;font-size:clamp(16px,3vw,40px)}
.spot.locked{cursor:not-allowed;filter:grayscale(1)}
.spot.demo-lock::after{content:"🔒";position:absolute;top:0;right:10%;font-size:clamp(14px,2.4vw,32px)}
#side{box-sizing:border-box;width:280px;flex:none;background:#f6e2b3;border:5px solid #7a4a1e;border-radius:12px;padding:10px;text-align:center}
#side h3{margin:4px 0}
#shipbox{position:relative;width:100%;aspect-ratio:844/672}
#shipbox img{position:absolute;inset:0;width:100%;transition:opacity .8s}
#shipbox img.off{opacity:.08}
#badges{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:6px}
#badges img{width:100%;transition:filter .5s}#badges img.off{filter:grayscale(1) opacity(.25)}
@media (max-width:900px),(orientation:portrait){#map{width:96vw}#side{width:96vw;display:grid;grid-auto-flow:column;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;gap:4px 16px;align-items:start}}

#modal{position:fixed;inset:0;background:#0009;display:none;align-items:center;justify-content:center;z-index:10;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overscroll-behavior:contain}
#card{box-sizing:border-box;background:#f6e2b3;border:6px solid #7a4a1e;border-radius:14px;max-width:680px;width:94vw;max-height:94vh;max-height:calc(94dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;overflow-wrap:break-word;-webkit-overflow-scrolling:touch;padding:18px 22px 26px;box-shadow:0 10px 40px #000;font-size:17px;line-height:1.45}
#close{position:sticky;top:0;float:right;font-size:24px;background:#f6e2b3;border:2px solid #7a4a1e;border-radius:50%;width:44px;height:44px;cursor:pointer;z-index:2;box-shadow:0 2px 6px #0006}
.art{width:100%;border-radius:8px;display:block;margin-top:8px}
#card h2{margin:10px 0 0}
.meet{font-style:italic;margin:2px 0 8px}
.steps{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 4px;font-size:14px}
.steps span{background:#fff3d6;border:2px solid #c9a46a;border-radius:20px;padding:3px 10px}
.steps span.ok{background:#9be39b;border-color:#3c8d3c}
.sec{background:#fff8e6;border:2px solid #c9a46a;border-radius:12px;padding:12px 14px;margin:14px 0}
.sec h3{margin:0 0 6px;color:#7a4a1e}
.myth{background:#fff3d6;border-left:5px solid #c0392b;padding:8px 10px;margin:10px 0}
.btn,.ans{font:inherit;font-size:17px;min-height:48px;padding:10px 14px;border-radius:10px;border:2px solid #7a4a1e;background:#fff3d6;cursor:pointer;color:#3b2412}
.btn.primary{background:#ffd166;font-weight:bold}
.ans{display:block;width:100%;margin:7px 0;text-align:left}
.ans.right{background:#9be39b;border-color:#3c8d3c}.ans.wrong{background:#f2a3a3;opacity:.75}
.ans:disabled{cursor:default}
.q{border-top:2px dashed #c9a46a;padding-top:10px;margin-top:12px}
.q:first-of-type{border-top:none;margin-top:0;padding-top:0}
.q .num{font-size:13px;color:#7a4a1e;font-weight:bold}
.fb{min-height:1.4em;font-weight:bold;margin:4px 0 0}
.fb.good{color:#2e7d32}.fb.bad{color:#b23a2a}
.done-msg{background:#9be39b;border:3px solid #3c8d3c;border-radius:12px;padding:12px;text-align:center;font-weight:bold;margin-top:14px}
.todo-msg{text-align:center;font-size:15px;color:#7a4a1e;margin-top:14px}
@keyframes pop{0%{transform:scale(.3)}70%{transform:scale(1.15)}100%{transform:scale(1)}}.popin{animation:pop .6s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}.shake{animation:shake .35s}
.win{width:100%}

/* drag & tap-to-place */
.drag{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.drag.sel{outline:4px solid #ffb300;outline-offset:2px;border-radius:10px}
.ghost{position:fixed;pointer-events:none;z-index:100;opacity:.9;transform:translate(-50%,-50%) scale(1.1)}
.drop.over{outline:4px dashed #ffb300;outline-offset:2px}
.hint{font-size:14px;color:#7a4a1e;margin:4px 0}

/* treasure split */
.pile{display:flex;flex-wrap:wrap;gap:4px;min-height:60px;padding:8px;border:2px dashed #c9a46a;border-radius:10px;align-items:center;justify-content:center;background:#fff3d6}
.coin{width:46px;height:46px}
.crew{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.mate{background:#fff3d6;border:2px solid #7a4a1e;border-radius:10px;padding:6px;text-align:center;min-height:96px;font-size:14px;cursor:pointer}
.mate .role{font-weight:bold}
.mate .got{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;min-height:34px}
.mate .got img{width:44px;height:44px}
.mate.right{background:#9be39b}.mate.wrongc{background:#f2a3a3}
@media (max-width:520px){.crew{grid-template-columns:repeat(2,1fr)}}

/* demand */
.opt{display:block;width:100%;margin:7px 0;text-align:left}

/* flag */
.flagwrap{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}
.flag{width:240px;max-width:100%;aspect-ratio:3/2;border-radius:6px;position:relative;box-shadow:0 4px 12px #0006;display:flex;align-items:center;justify-content:center;gap:2px;flex-wrap:wrap;padding:8px;box-sizing:border-box}
.flag.black{background:#1b1b1b}.flag.red{background:#b3141b}
.flag img{width:30%;}
.syms{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;flex:1;min-width:220px}
.sym{background:#2b2b2b;color:#fff;border-radius:10px;border:3px solid transparent;padding:4px;cursor:pointer;font:inherit;font-size:14px;min-height:48px}
.sym img{width:56px;height:56px;display:block;margin:0 auto}
.sym.on{border-color:#ffd166}
.meaning{min-height:2.8em;background:#fff3d6;border-radius:8px;padding:6px 10px;margin:8px 0;font-size:15px}

/* timeline */
.tl{display:flex;flex-direction:column;gap:6px}
.ev{text-align:left}
.ev.used{opacity:.35}
.slot{display:flex;gap:8px;align-items:center;background:#fff3d6;border:2px dashed #c9a46a;border-radius:10px;padding:8px;min-height:48px;box-sizing:border-box;cursor:pointer;font-size:15px}
.slot b{background:#7a4a1e;color:#fff;border-radius:50%;min-width:28px;height:28px;display:flex;align-items:center;justify-content:center}
.slot.right{background:#9be39b;border-style:solid}.slot.wrongs{background:#f2a3a3;border-style:solid}

/* real or fake */
.rule{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-bottom:1px dashed #c9a46a;padding:8px 0}
.rule p{flex:1 1 240px;margin:0}
.rule .btn{min-width:84px}
.rule.right p{color:#2e7d32;font-weight:bold}

/* loot */
.loot{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;min-height:40px}
.item{width:96px;text-align:center;font-size:12px;background:#fff3d6;border:2px solid #c9a46a;border-radius:10px;padding:4px}
.item img{width:72px;height:72px;display:block;margin:0 auto}
.chests{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.chest{border:3px solid #7a4a1e;border-radius:12px;background:#fff3d6;text-align:center;padding:6px;min-height:150px;cursor:pointer}
.chest>img{width:96px;height:96px}
.chest .in{display:flex;flex-wrap:wrap;justify-content:center;gap:2px}
.chest .in img{width:36px;height:36px}

/* island labels (both maps) */
.spot .lbl{position:absolute;left:50%;top:84%;transform:translateX(-50%);white-space:nowrap;background:#f6e2b3ee;color:#3b2412;border:2px solid #7a4a1e;border-radius:10px;padding:1px 8px;font:bold clamp(11px,1.1vw,16px) "Trebuchet MS",sans-serif;pointer-events:none;box-shadow:0 2px 4px #0005}
.spot.locked .lbl,.spot.demo-lock .lbl{opacity:.85}
.spot.done .lbl{background:#9be39bee;border-color:#3c8d3c}

/* ---------- phones, upright: tall map ---------- */
@media (orientation:portrait) and (max-width:600px){
  h1{font-size:24px;margin:10px 8px 2px}
  #bar{font-size:15px;margin-bottom:6px}
  #demo-bar{font-size:15px;padding:8px 10px}
  #wrap{width:100%;gap:10px;padding:0 2vw;box-sizing:border-box}
  #map{width:96vw;max-width:none;aspect-ratio:1000/1600;background-image:url(map-tall.webp)}
  .spot{left:var(--tx);top:var(--ty);width:30%}
  .spot .lbl{font-size:13px;top:80%}
  .spot.done::after{font-size:28px;right:4%}
  .spot.demo-lock::after{font-size:24px;right:4%}
  #side{width:96vw;padding:8px;gap:4px 10px}
  #card{width:100%;max-width:none;max-height:100%;height:100%;border-radius:0;border-width:4px;padding:10px 14px calc(20px + env(safe-area-inset-bottom))}
  #modal{align-items:stretch}
  .crew{grid-template-columns:repeat(2,1fr)}
  .syms{min-width:0}
  .flag{width:100%}
  .item{width:calc(33% - 8px);box-sizing:border-box}
  .item img{width:64px;height:64px}
  .item{font-size:13px}
  .chest>img{width:72px;height:72px}
  .rule .btn{flex:1 1 40%}
}
/* ---------- phones, landscape: wide map sized to the screen height, panel beside it ---------- */
@media (orientation:landscape) and (max-height:500px){
  h1{font-size:20px;margin:4px 0 0}
  #bar{font-size:13px;margin-bottom:4px}
  #bar br{display:none}
  #demo-bar{font-size:13px;padding:4px 10px;margin-bottom:4px}
  #wrap{flex-wrap:nowrap;width:100%;gap:8px;padding:0 8px;box-sizing:border-box}
  #map{width:min(calc(100vw - 230px - env(safe-area-inset-left) - env(safe-area-inset-right)),calc((100dvh - 60px) * 1.6))}
  #side{width:210px;display:block;padding:6px}
  #side h3{font-size:14px}
  .spot .lbl{font-size:11px;padding:0 5px}
  #card{max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 8px);width:min(94vw,680px)}
}

/* keep the bottom clear of any host badge/toolbar (e.g. "Powered by Netlify") */
#wrap{margin-bottom:12px}
/* Play again button at the bottom of the main screen */
#restart{display:block;margin:6px auto calc(64px + env(safe-area-inset-bottom));font:inherit;font-size:17px;font-weight:bold;min-height:48px;padding:10px 22px;border-radius:10px;border:3px solid #7a4a1e;background:#ffd166;color:#3b2412;cursor:pointer}
#restart:hover,#restart:focus-visible{background:#ffe08f;outline:none}
.row2{display:flex;gap:10px;flex-wrap:wrap}.row2 .btn{flex:1 1 160px}
#card{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
@media (orientation:portrait) and (max-width:600px){#card{padding-bottom:calc(72px + env(safe-area-inset-bottom))}}
