:root{
  --hx-sky:#7dd3fc;--hx-sky-soft:#bae6fd;--hx-gold:#fbbf24;--hx-amber:#f59e0b;
  --hx-ink:#172554;--hx-muted:#475569;--hx-white:#fff;--hx-green:#10b981;--hx-coral:#fb7185;
  --safe-top:max(10px,env(safe-area-inset-top));--safe-right:max(10px,env(safe-area-inset-right));
  --safe-bottom:max(10px,env(safe-area-inset-bottom));--safe-left:max(10px,env(safe-area-inset-left));
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{height:100%;touch-action:manipulation;overscroll-behavior:none;background:#7dd3fc}
body{margin:0;height:100%;overflow:hidden;position:fixed;inset:0;font-family:'Nunito',system-ui,sans-serif;background:#7dd3fc;color:var(--hx-ink);user-select:none;-webkit-user-select:none}
button,a{font:inherit}
button{touch-action:manipulation}
button:focus-visible,a:focus-visible{outline:4px solid #fde047;outline-offset:3px}
#main-content{position:fixed;inset:0;overflow:hidden;isolation:isolate}
#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;background:#7dd3fc}
[hidden]{display:none!important}

/* Screen system */
.screen{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:calc(var(--safe-top) + 8px) calc(var(--safe-right) + 8px) calc(var(--safe-bottom) + 8px) calc(var(--safe-left) + 8px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility .25s ease;background:linear-gradient(150deg,#bae6fd,#fef3c7);overflow:auto}
.screen::before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(circle at 12% 12%,rgba(255,255,255,.9) 0 3px,transparent 4px) 0 0/38px 38px,linear-gradient(150deg,#bae6fd 0%,#e0f2fe 42%,#fef3c7 100%);opacity:.8}
.screen.active{opacity:1;visibility:visible;pointer-events:auto}
.screen-card{position:relative;width:min(94vw,600px);max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 18px);overflow:auto;background:rgba(255,255,255,.96);border:3px solid rgba(255,255,255,.94);border-radius:28px;padding:clamp(18px,4vw,32px);box-shadow:0 12px 0 rgba(14,116,144,.18),0 24px 60px rgba(15,23,42,.2);text-align:center;scrollbar-width:thin;scrollbar-color:#7dd3fc transparent}
.screen-card::-webkit-scrollbar{width:6px}.screen-card::-webkit-scrollbar-thumb{background:#7dd3fc;border-radius:6px}
.start-card{width:min(96vw,1000px)}
body[data-hajj-explorer-v2] .start-card .sg-game-stamp{display:none}
body[data-hajj-explorer-v2] .hero-button.sg-start-cta{background:linear-gradient(135deg,#fbbf24,#f59e0b)!important;box-shadow:0 6px 0 #b45309,0 12px 22px rgba(245,158,11,.25)!important;color:#fff!important}
.brand-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.home-link{display:inline-flex;align-items:center;min-height:44px;color:#0369a1;text-decoration:none;font-weight:900;padding:8px 10px;border-radius:12px;background:#e0f2fe}
.new-badge{font-size:.69rem;font-weight:900;letter-spacing:.1em;color:#065f46;background:#d1fae5;border:2px solid #6ee7b7;border-radius:999px;padding:6px 10px}
.hero-layout{display:grid;grid-template-columns:1.04fr .96fr;gap:clamp(18px,4vw,42px);align-items:center;text-align:left}
.hero-copy{text-align:left}.eyebrow{margin:0 0 6px;color:#0284c7;text-transform:uppercase;letter-spacing:.1em;font-weight:900;font-size:.75rem}
h1,h2,p{margin-top:0}.hero-copy h1{font-size:clamp(2.4rem,6vw,4.8rem);line-height:.9;letter-spacing:-.055em;margin:0 0 14px;color:#172554;font-weight:900}.hero-copy h1 span{display:block;color:#f59e0b}
.hero-subtitle{font-size:clamp(.95rem,2vw,1.15rem);line-height:1.55;color:#475569;font-weight:700;margin-bottom:20px;max-width:520px}
.hero-mark{width:88px;height:70px;position:relative;margin:4px 0 12px}.hero-orb{position:absolute;z-index:2;right:6px;top:9px;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff 0 18%,#fef3c7 40%,#fbbf24 100%);box-shadow:0 0 0 8px rgba(251,191,36,.16),0 8px 20px rgba(245,158,11,.35)}.hero-trail,.hero-trail::before,.hero-trail::after{position:absolute;content:"";height:9px;border-radius:99px;background:linear-gradient(90deg,transparent,#38bdf8)}.hero-trail{left:0;top:26px;width:50px}.hero-trail::before{right:8px;top:-15px;width:32px}.hero-trail::after{right:4px;top:16px;width:42px}
.primary-button,.secondary-button,.back-button{border:0;cursor:pointer;font-weight:900;min-height:48px;border-radius:16px;padding:12px 20px;color:#172554}
.primary-button{background:linear-gradient(135deg,#fbbf24,#f59e0b);box-shadow:0 6px 0 #b45309,0 12px 22px rgba(245,158,11,.25);font-size:1.08rem;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.15)}
.primary-button:active{transform:translateY(4px);box-shadow:0 2px 0 #b45309}
.hero-button{min-width:220px;min-height:58px;font-size:1.18rem}
.secondary-button{background:#e0f2fe;border:2px solid #bae6fd;color:#075985;box-shadow:0 3px 0 #7dd3fc}
.secondary-button:active{transform:translateY(2px);box-shadow:0 1px 0 #7dd3fc}
.back-button{display:flex;align-items:center;background:#f1f5f9;color:#475569;margin-bottom:14px;padding:9px 14px}
.quick-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.quick-controls span{display:inline-flex;align-items:center;min-height:34px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;padding:5px 9px;color:#64748b;font-weight:800;font-size:.76rem}.quick-controls b{color:#0369a1;margin-right:5px}
.learning-note{font-size:.72rem;color:#64748b;font-weight:700;line-height:1.4;margin:18px auto 0;text-align:center;max-width:700px}

/* Journey map */
.journey-panel{background:linear-gradient(160deg,#eff6ff,#fefce8);border:3px solid #bae6fd;border-radius:24px;padding:18px;box-shadow:inset 0 0 0 1px #fff,0 8px 24px rgba(14,165,233,.12)}
.panel-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:16px;color:#334155;font-size:.8rem;font-weight:900}.panel-heading b{color:#b45309;background:#fef3c7;border-radius:999px;padding:5px 9px}
.journey-map{display:grid;grid-template-columns:repeat(7,1fr);position:relative;gap:6px;padding:12px 0 8px}.journey-map::before{content:"";position:absolute;top:32px;left:6%;right:6%;height:5px;border-radius:9px;background:#dbeafe}
.stage-node{position:relative;z-index:1;border:0;background:transparent;padding:0;min-width:44px;cursor:pointer;color:#64748b}.stage-node-circle{width:44px;height:44px;margin:0 auto 6px;border-radius:50%;display:grid;place-items:center;background:#e2e8f0;border:4px solid #fff;box-shadow:0 2px 0 #cbd5e1;font-size:.85rem;font-weight:900}.stage-node.unlocked .stage-node-circle{background:#bae6fd;color:#075985;box-shadow:0 3px 0 #38bdf8}.stage-node.current .stage-node-circle{background:#fbbf24;color:#78350f;box-shadow:0 3px 0 #d97706,0 0 0 5px rgba(251,191,36,.2)}.stage-node.complete .stage-node-circle{background:#6ee7b7;color:#065f46;box-shadow:0 3px 0 #10b981}.stage-node small{display:block;font-size:.58rem;font-weight:900;line-height:1.05}.stage-node-stars{display:block;color:#d97706;font-size:.56rem;height:10px;margin-top:3px;white-space:nowrap}.stage-node.locked{opacity:.5;cursor:not-allowed}
.journey-actions{display:flex;gap:8px;margin-top:15px}.journey-actions button{flex:1;font-size:.78rem;padding:9px 8px;min-height:44px}.daily-button{background:#fef3c7;border-color:#fde68a;color:#92400e;box-shadow:0 3px 0 #fbbf24}

/* Briefing/result/settings */
.briefing-card h2,.result-card h2,.settings-card h2,.pause-card h2{font-size:clamp(1.9rem,6vw,3rem);line-height:1;margin:0 0 12px;font-weight:900;color:#172554}.stage-art{width:84px;height:84px;margin:0 auto 10px;border-radius:26px;background:linear-gradient(145deg,#e0f2fe,#fef3c7);display:grid;place-items:center;position:relative;overflow:hidden;border:3px solid #fff;box-shadow:0 7px 0 #bae6fd}.stage-art>span{position:absolute;top:7px;left:10px;font-weight:900;color:#0284c7;font-size:.72rem}.stage-art-orb{width:35px;height:35px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#fbbf24);box-shadow:0 0 0 7px rgba(251,191,36,.2)}
.briefing-intro{color:#475569;line-height:1.5;font-weight:700;margin-bottom:14px}.mission-card,.learn-card{display:flex;align-items:center;gap:13px;text-align:left;border-radius:18px;padding:14px 16px;margin:12px 0}.mission-card{background:#fff7ed;border:2px solid #fed7aa}.mission-icon{width:42px;height:42px;flex:0 0 auto;border-radius:14px;display:grid;place-items:center;background:#fbbf24;color:#fff;font-size:1.25rem}.mission-card small,.learn-card small{display:block;color:#c2410c;font-weight:900;font-size:.66rem;letter-spacing:.08em;margin-bottom:3px}.mission-card strong{display:block;color:#7c2d12;font-size:.96rem;line-height:1.35}.learn-card{display:block;background:#eff6ff;border:2px solid #bfdbfe}.learn-card small{color:#0369a1}.learn-card p{margin:0;color:#334155;line-height:1.45;font-weight:700;font-size:.9rem}.briefing-meta{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;margin:12px 0 16px}.briefing-meta span{background:#f1f5f9;border-radius:999px;padding:6px 10px;color:#475569;font-size:.72rem;font-weight:900}
.result-emblem,.pause-icon{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;background:#d1fae5;color:#047857;font-size:2rem;font-weight:900;border:5px solid #fff;box-shadow:0 7px 0 #6ee7b7}.try-emblem{background:#fef3c7;color:#b45309;box-shadow:0 7px 0 #fcd34d}.result-stars{font-size:clamp(2rem,9vw,3.4rem);letter-spacing:.12em;color:#fbbf24;filter:drop-shadow(0 3px 0 #d97706);min-height:54px}.result-stars .empty{color:#cbd5e1;filter:none}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.result-stats>div{background:#f8fafc;border:2px solid #e2e8f0;border-radius:15px;padding:11px 6px}.result-stats b{display:block;color:#0369a1;font-size:1.25rem;font-weight:900}.result-stats small{display:block;color:#64748b;font-size:.64rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.result-learn{margin:14px 0}.result-actions{display:flex;gap:7px;justify-content:center;flex-wrap:wrap}.result-actions button{min-width:120px}.result-message{color:#475569;line-height:1.5;font-weight:700}.gentle-button{display:block;margin:9px auto}
.pause-card{max-width:420px}.pause-card>button{display:block;width:100%;margin-top:10px}.pause-icon{background:#e0f2fe;color:#0369a1;box-shadow:0 7px 0 #7dd3fc}
.settings-intro{color:#64748b;font-weight:700}.difficulty-options{display:grid;gap:10px;margin-top:16px}.difficulty-option{width:100%;min-height:74px;border:3px solid #e2e8f0;background:#f8fafc;border-radius:18px;padding:13px 15px;text-align:left;cursor:pointer;color:#334155}.difficulty-option.active{border-color:#38bdf8;background:#e0f2fe;box-shadow:0 4px 0 #38bdf8}.difficulty-option b{display:block;font-size:1.03rem;color:#075985}.difficulty-option small{display:block;margin-top:3px;color:#64748b;font-weight:700;line-height:1.3}.journey-finale{width:90px;height:90px;border-radius:30px;background:linear-gradient(145deg,#fef3c7,#fbbf24);margin:0 auto 12px;display:grid;place-items:center;position:relative;box-shadow:0 8px 0 #d97706}.journey-finale span{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff,#fde68a);box-shadow:0 0 0 7px rgba(255,255,255,.28)}.journey-finale b{position:absolute;right:8px;top:5px;color:#7c2d12;font-size:.8rem}

/* HUD */
/* Hajj owns this full-screen positioning layer. Keep its class unique so a
   shared card component can never paint an opaque panel over the Canvas. */
#gameHud.hajj-game-hud{position:absolute;z-index:8;inset:0;display:block;pointer-events:none;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);margin:0;background:transparent;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.hud-row-top{display:flex;justify-content:space-between;gap:8px;padding:0 54px}.hud-cluster{display:flex;gap:6px}.hud-pill{display:flex;align-items:center;gap:6px;min-height:44px;padding:5px 10px;border-radius:15px;background:rgba(15,23,42,.82);border:2px solid rgba(255,255,255,.35);box-shadow:0 4px 12px rgba(15,23,42,.25);color:#fff;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.hud-pill>b,.hud-pill span>b{font-size:.95rem;color:#fbbf24;font-weight:900;display:block;line-height:1}.hud-pill small{font-size:.56rem;color:#e2e8f0;display:block;font-weight:800;white-space:nowrap}.focus-pill b{color:#67e8f9}.objective-pill b{color:#a7f3d0}.hearts-pill{gap:2px;padding:5px 8px}.heart-shape{width:16px;height:15px;display:inline-block;position:relative;transform:rotate(-45deg);background:#fb7185;border-radius:3px 0 4px 0;margin:4px}.heart-shape::before,.heart-shape::after{content:"";position:absolute;width:16px;height:15px;background:#fb7185;border-radius:50%}.heart-shape::before{top:-8px;left:0}.heart-shape::after{left:8px;top:0}.heart-shape.lost,.heart-shape.lost::before,.heart-shape.lost::after{background:#64748b;opacity:.45}
.stage-chip{position:absolute;top:calc(var(--safe-top) + 48px);left:50%;transform:translateX(-50%);background:linear-gradient(135deg,#fbbf24,#f59e0b);border:2px solid rgba(255,255,255,.8);border-radius:999px;color:#fff;padding:5px 15px;font-size:.72rem;font-weight:900;box-shadow:0 4px 10px rgba(120,53,15,.25);white-space:nowrap}.progress-track{position:absolute;top:calc(var(--safe-top) + 82px);left:50%;transform:translateX(-50%);width:min(62vw,350px);height:9px;background:rgba(15,23,42,.3);border:2px solid rgba(255,255,255,.55);border-radius:999px;overflow:hidden}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,#34d399,#fbbf24);border-radius:999px;transform-origin:left center}
.mission-prompt{position:absolute;top:calc(var(--safe-top) + 103px);left:50%;transform:translateX(-50%) translateY(-8px);max-width:min(86vw,440px);opacity:0;background:rgba(15,23,42,.88);color:#fff;padding:8px 14px;border-radius:12px;border:2px solid rgba(255,255,255,.4);font-size:.76rem;font-weight:900;text-align:center;transition:opacity .18s,transform .18s}.mission-prompt.visible{opacity:1;transform:translateX(-50%) translateY(0)}
.round-button{position:absolute;z-index:30;top:var(--safe-top);width:46px;height:46px;border-radius:50%;border:3px solid rgba(255,255,255,.75);background:rgba(15,23,42,.82);color:#fbbf24;font-weight:900;cursor:pointer;display:grid;place-items:center;box-shadow:0 4px 12px rgba(15,23,42,.25);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.pause-button{left:var(--safe-left)}.sound-button{right:var(--safe-right)}
.touch-controls{position:absolute;z-index:10;left:var(--safe-left);right:var(--safe-right);bottom:var(--safe-bottom);display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}.control-group{display:flex;gap:8px;pointer-events:auto}.control-button{width:58px;height:58px;border:3px solid rgba(255,255,255,.88);border-radius:18px;background:rgba(15,23,42,.82);color:#fff;font-size:1.7rem;font-weight:900;box-shadow:0 6px 0 rgba(15,23,42,.45);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);cursor:pointer}.control-button:active,.control-button.pressed{transform:translateY(4px);box-shadow:0 2px 0 rgba(15,23,42,.45);background:#0369a1}.action-button{width:64px}.action-button span{display:block;line-height:.8}.action-button small{font-size:.52rem;letter-spacing:.05em}.jump-button{background:rgba(3,105,161,.9)}.slide-button{background:rgba(124,58,237,.88)}
.countdown-screen{position:absolute;inset:0;z-index:15;display:grid;place-content:center;text-align:center;pointer-events:none;background:rgba(15,23,42,.18);color:#fff;text-shadow:0 4px 18px rgba(15,23,42,.55)}.countdown-screen div{font-size:clamp(3rem,16vw,7rem);font-weight:900;line-height:1}.countdown-screen p{max-width:80vw;margin:10px auto 0;font-size:clamp(.9rem,3vw,1.25rem);font-weight:900}

@media(max-width:760px){
  .screen{align-items:flex-start}.screen-card{margin:auto}.hero-layout{display:block}.hero-copy{text-align:center}.hero-mark{margin:0 auto 8px}.hero-copy h1 span{display:inline}.hero-subtitle{margin-left:auto;margin-right:auto}.journey-panel{margin-top:18px;overflow:hidden}.quick-controls{justify-content:center}.start-card{padding:16px}.journey-map{gap:2px}.stage-node{min-width:0}.stage-node-circle{width:39px;height:39px;border-width:3px}.journey-map::before{top:29px}.stage-node small{display:none}.stage-node-stars{font-size:.5rem}.hud-row-top{padding:0 48px}.hud-pill{padding:4px 7px}.focus-pill{display:none}.control-button{width:56px;height:56px}.action-button{width:60px}
}
@media(max-width:380px){
  .screen-card{border-radius:22px;padding:14px;box-shadow:0 8px 0 rgba(14,116,144,.16),0 16px 34px rgba(15,23,42,.18)}.brand-row{margin-bottom:2px}.hero-mark{width:70px;height:52px;transform:scale(.78);transform-origin:center}.hero-copy h1{font-size:2.15rem;margin-bottom:8px}.hero-subtitle{font-size:.84rem;line-height:1.35;margin-bottom:11px}.hero-button{min-height:52px}.quick-controls{margin-top:12px}.journey-panel{padding:12px;margin-top:13px}.panel-heading{margin-bottom:8px}.journey-map{padding:7px 0 4px}.journey-map::before{top:25px}.stage-node-circle{width:36px;height:36px}.journey-actions{margin-top:9px}.learning-note{margin-top:12px}.hud-pill small{display:none}.objective-pill{display:none}.result-stats{gap:5px}.result-stats>div{padding:8px 3px}.result-stats b{font-size:1.08rem}.touch-controls{gap:6px}.control-button{width:50px;height:50px;border-radius:15px;font-size:1.4rem}.action-button{width:54px}.action-button small{font-size:.45rem}
}
@media(max-width:480px){
  .journey-map{grid-template-columns:repeat(8,1fr);gap:10px 0;padding:7px 0 4px}
  .journey-map::before{display:none}
  .stage-node{grid-column:span 2;min-width:44px;min-height:52px}
  .stage-node:nth-child(5){grid-column:2 / span 2}
}
@media(orientation:landscape) and (max-height:520px){
  .journey-map{grid-template-columns:repeat(8,1fr);gap:8px 0}.journey-map::before{display:none}.stage-node{grid-column:span 2;min-width:44px;min-height:52px}.stage-node:nth-child(5){grid-column:2 / span 2}
  .screen{padding:6px calc(var(--safe-right) + 8px) 6px calc(var(--safe-left) + 8px)}.screen-card{max-height:calc(100dvh - 12px);padding:14px 20px}.start-card{width:min(95vw,940px)}.hero-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.hero-copy{text-align:left}.hero-mark{display:none}.hero-copy h1{font-size:2.4rem}.hero-copy h1 span{display:inline}.hero-subtitle{font-size:.82rem;line-height:1.35;margin-bottom:10px}.hero-button{min-height:48px}.quick-controls{justify-content:flex-start;margin-top:10px}.journey-panel{margin-top:0;padding:12px}.learning-note{margin-top:9px}.briefing-card,.result-card{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;align-items:center;width:min(92vw,780px);text-align:left}.briefing-card .back-button,.briefing-card .stage-art,.briefing-card .eyebrow,.briefing-card h2,.briefing-card .briefing-intro{grid-column:1}.briefing-card .mission-card,.briefing-card .learn-card,.briefing-card .briefing-meta,.briefing-card>.primary-button{grid-column:2}.briefing-card .back-button{width:max-content}.stage-art{margin:0}.briefing-meta{justify-content:flex-start}.result-card .result-emblem,.result-card .eyebrow,.result-card h2,.result-card .result-stars,.result-card .result-message{grid-column:1}.result-card .result-stats,.result-card .result-learn,.result-card .result-actions,.result-card>.primary-button,.result-card>.secondary-button{grid-column:2}.hud-row-top{padding:0 50px}.stage-chip{top:var(--safe-top);left:34%;}.progress-track{top:calc(var(--safe-top) + 17px);left:66%;width:28vw}.mission-prompt{top:calc(var(--safe-top) + 53px)}.control-button{width:48px;height:48px;border-radius:14px}.action-button{width:54px}.action-button small{display:none}
}
@media(min-width:1000px){
  #game-canvas{left:50%;transform:translateX(-50%);width:min(100%,1100px);box-shadow:0 0 80px rgba(15,23,42,.15)}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition-duration:.001ms!important}
}
