/* Terraria World Workshop series: shared episode styles (Ember / Create). */
.code-block{background:#070a0e;border:1px solid rgba(255,255,255,.08);border-radius:11px;overflow:hidden;margin:14px 0}
.code-block-header{padding:8px 14px;border-bottom:1px solid rgba(255,255,255,.05);display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.02)}
.dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.code-fname{font-family:'JetBrains Mono',monospace;font-size:.64rem;color:rgba(232,234,242,.4);margin-left:4px}
.code-pre{padding:14px 16px;font-family:'JetBrains Mono',monospace;font-size:.75rem;line-height:1.75;overflow-x:auto;white-space:pre;color:#d6deeb;margin:0}
@media(max-width:600px){.code-pre{font-size:.66rem;white-space:pre-wrap;word-break:break-word}}
@media print{.site-header,.series-strip,.progress-wrap,.xp-wrap,.step-card.locked,.quiz-gate,.code-challenge,.concept-fill,.finish-banner,.site-footer,.hero-btns,.print-btn,.skills-strip{display:none!important}.hero{padding:16px 0 10px;border:none}.step-card{border:1px solid #ccc;break-inside:avoid;margin-bottom:12px}.step-body{display:block!important}h1,h3,.step-title,.finish-title{color:#111}.hero-sub,.step-blurb,.big-goal-text p{color:#444}}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden;min-height:100vh}
.reveal{opacity:1!important;transform:none!important}

/* In-browser world planner (hub) */
.tw-planner{max-width:760px;margin:0 auto 36px;padding:0 4px}
.tw-planner-bar{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 14px}
.tw-swatch{font:inherit;font-size:.8rem;font-weight:700;color:var(--text);background:var(--card);border:1.5px solid var(--border);border-radius:999px;padding:7px 14px 7px 32px;position:relative;cursor:pointer;transition:box-shadow .15s,border-color .15s}
.tw-swatch::before{content:"";position:absolute;left:11px;top:50%;transform:translateY(-50%);width:14px;height:14px;border-radius:4px;background:var(--sw);border:1px solid rgba(0,0,0,.18)}
.tw-swatch.is-active{border-color:#2e7d32;box-shadow:0 0 0 2px rgba(46,125,50,.28)}
.tw-swatch.tw-tool::before{background:repeating-linear-gradient(45deg,#e8e2d4,#e8e2d4 4px,#cfc7b4 4px,#cfc7b4 8px)}
.tw-planner-stage{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
#twPlanner{display:block;width:100%;height:auto;border-radius:8px;touch-action:none;image-rendering:pixelated;cursor:crosshair}
.tw-planner-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:14px 0 0}
.tw-planner-btn{font:inherit;font-weight:700;font-size:.85rem;border-radius:8px;border:1.5px solid var(--border);background:var(--card);color:var(--text);padding:9px 18px;cursor:pointer}
.tw-planner-btn:hover{border-color:#2e7d32}
.tw-planner-btn--primary{background:var(--teal-dk,#4e7d80);border-color:var(--teal-dk,#4e7d80);color:#fff}
.tw-planner-btn--primary:hover{border-color:var(--teal-dk,#4e7d80)}
.tw-planner-hint{text-align:center;font-size:.8rem;color:var(--muted);margin:12px auto 0;max-width:560px}

/* Terraria World Studio (companion interactive page) */
.twms-wrap{max-width:1080px;margin:0 auto;padding:0 20px 40px}
.twms-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 22px}
.twms-tab{font:inherit;font-weight:700;font-size:.85rem;border-radius:999px;border:1.5px solid var(--border);background:var(--card);color:var(--text);padding:9px 16px;cursor:pointer}
.twms-tab:hover{border-color:#2e7d32}
.twms-tab.is-active{background:var(--teal-dk,#4e7d80);border-color:var(--teal-dk,#4e7d80);color:#fff}
.twms-panel{display:none}
.twms-panel.is-active{display:block}
.twms-grid-2{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:820px){.twms-grid-2{grid-template-columns:minmax(0,1fr) 340px}}
.twms-card{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:16px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.twms-card h3{font-family:'Fredoka',sans-serif;font-size:1.05rem;margin:0 0 10px}
.twms-label{display:block;font-weight:700;font-size:.82rem;margin:0 0 4px}
.twms-input,.twms-select{font:inherit;width:100%;padding:8px 10px;border-radius:8px;border:1.5px solid var(--border);background:var(--bg);color:var(--text);margin:0 0 12px}
.twms-check{display:flex;align-items:center;gap:8px;font-size:.85rem;margin:0 0 8px}
.twms-pre{background:#070a0e;color:#d6deeb;border-radius:10px;padding:14px 16px;font-family:'JetBrains Mono',monospace;font-size:.72rem;line-height:1.6;overflow:auto;max-height:340px;margin:0;white-space:pre}
.twms-msg{font-size:.82rem;font-weight:700;margin:10px 0 0}
.twms-msg.ok{color:#1b5e20}
.twms-msg.bad{color:var(--rose,#BC4749)}
.twms-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.twms-btn{font:inherit;font-weight:700;font-size:.85rem;border-radius:8px;border:1.5px solid var(--border);background:var(--card);color:var(--text);padding:9px 16px;cursor:pointer}
.twms-btn:hover{border-color:#2e7d32}
.twms-btn--primary{background:var(--teal-dk,#4e7d80);border-color:var(--teal-dk,#4e7d80);color:#fff}
.twms-canvas-stage{background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.06);position:relative}
#twmsMap{display:block;width:100%;height:auto;border-radius:8px;touch-action:none;image-rendering:pixelated;cursor:crosshair}
.twms-console{background:#0b0f14;border-radius:12px;padding:14px;font-family:'JetBrains Mono',monospace;font-size:.74rem;line-height:1.7;color:#c9d3df;overflow:auto}
.twms-log{cursor:pointer;padding:2px 6px;border-radius:6px;display:block}
.twms-log:hover{background:rgba(255,255,255,.06)}
.twms-log.err{color:#ff8a8a}
.twms-log.sel{background:rgba(255,138,138,.16);outline:1px solid #ff8a8a}
.twms-map-mini{display:block;width:100%;height:auto;border-radius:8px;image-rendering:pixelated;background:#0b0f14}
.twms-dpad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:6px;justify-content:center;margin:12px 0 0}
.twms-dpad button{font-size:1.1rem;border-radius:10px;border:1.5px solid var(--border);background:var(--card);color:var(--text);cursor:pointer}
.twms-chip{display:inline-block;font-size:.72rem;font-weight:800;padding:3px 10px;border-radius:999px;background:var(--teal-lt,#e8f2f3);color:var(--teal-dk,#4e7d80);border:1px solid var(--teal,#70A3A7);margin:0 6px 6px 0}

/* Studio toolbar */
.twms-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.twms-tool{font:inherit;font-weight:700;font-size:.82rem;border-radius:8px;border:1.5px solid var(--border);background:var(--card);color:var(--text);padding:8px 12px;cursor:pointer}
.twms-tool:hover{border-color:#2e7d32}
.twms-tool.is-active{background:var(--teal-dk,#4e7d80);border-color:var(--teal-dk,#4e7d80);color:#fff}
.twms-tool:disabled{opacity:.45;cursor:default}
.twms-tool-group{display:inline-flex;border:1.5px solid var(--border);border-radius:8px;overflow:hidden}
.twms-tool-group .twms-tool{border:none;border-radius:0;border-right:1.5px solid var(--border)}
.twms-tool-group .twms-tool:last-child{border-right:none}

/* Challenges */
.twms-challenge{display:flex;align-items:center;gap:10px;font-size:.86rem;padding:7px 0;border-bottom:1px dashed var(--border)}
.twms-challenge:last-child{border-bottom:none}
.twms-challenge .tick{width:20px;text-align:center;font-weight:800;color:var(--muted)}
.twms-challenge.done{color:#1b5e20}
.twms-challenge.done .tick{color:#1b5e20}

/* My worlds gallery */
.twms-worlds{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:12px 0 0}
.twms-worldcard{border:1.5px solid var(--border);border-radius:12px;padding:8px;background:var(--bg)}
.twms-worldthumb{display:block;width:100%;height:auto;border-radius:8px;image-rendering:pixelated;background:#0b0f14;border:1px solid var(--border)}
.twms-worldname{font-size:.78rem;font-weight:700;margin:6px 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.twms-worldrow{display:flex;gap:6px}
.twms-worldrow .twms-btn{flex:1;padding:6px 8px;font-size:.78rem}
.twms-worldrow .twms-btn.load{background:var(--teal-dk,#4e7d80);border-color:var(--teal-dk,#4e7d80);color:#fff}

/* Living world hero */
.tw-hw{position:relative;max-width:1100px;margin:0 auto 26px;padding:0 20px}
.tw-hw-stage{background:#0b0f14;border:1.5px solid var(--border);border-radius:18px;overflow:hidden;box-shadow:0 8px 30px rgba(0,0,0,.18)}
#twHero{display:block;width:100%;height:auto;image-rendering:pixelated}
.tw-hw-bar{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0 0}

/* Progress dashboard */
.tw-prog{display:grid;grid-template-columns:1fr;gap:16px;margin:0 0 28px}
@media(min-width:720px){.tw-prog{grid-template-columns:1.4fr 1fr}}
.tw-prog-card{background:var(--card);border:1.5px solid var(--border);border-radius:16px;padding:16px 18px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.tw-prog-bar{height:12px;border-radius:999px;background:var(--beige);overflow:hidden;margin:10px 0 6px}
.tw-prog-fill{height:100%;width:0;background:linear-gradient(90deg,#66bb6a,#2e7d32);transition:width .4s}
.tw-prog-badge{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:.9rem;color:var(--muted)}
.tw-prog-badge.earned{color:#1b5e20}

/* Full-screen play mode */
.twms-play{position:fixed;inset:0;z-index:9999;background:rgba(8,12,10,.94);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px}
.twms-play[hidden]{display:none}
#playCanvas{max-width:96vw;max-height:70vh;border-radius:12px;image-rendering:pixelated;background:#0b0f14;border:2px solid rgba(255,255,255,.16)}
.twms-play-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:center}
.twms-play-msg{color:#e8e2d4;font-size:.9rem;font-weight:700;min-height:1.2em;text-align:center}
.twms-play .twms-dpad button{background:#2a2f26;color:#e8e2d4;border-color:rgba(255,255,255,.22)}
.twms-play .twms-btn{background:#2a2f26;color:#e8e2d4;border-color:rgba(255,255,255,.22)}

/* Minimap + keyboard paint cursor */
#twMinimap{position:absolute;right:18px;bottom:18px;width:144px;height:96px;border-radius:8px;border:1.5px solid var(--border);background:#0b0f14;image-rendering:pixelated;box-shadow:0 2px 8px rgba(0,0,0,.3);opacity:.92}

/* Guided tour */
.twms-tour{position:fixed;inset:0;z-index:10000;background:rgba(8,12,10,.9);display:flex;align-items:center;justify-content:center;padding:20px}
.twms-tour[hidden]{display:none}
.twms-tour-card{background:var(--card);color:var(--text);border:1.5px solid var(--border);border-radius:16px;max-width:540px;padding:22px 24px;box-shadow:0 10px 40px rgba(0,0,0,.35)}
.twms-tour-card h3{font-family:'Fredoka',sans-serif;font-size:1.2rem;margin:0 0 8px}
.twms-tour-card p{font-size:.92rem;color:var(--muted);margin:0 0 14px}
.twms-tour-dots{display:flex;gap:6px;margin:0 0 14px}
.twms-tour-dots span{width:8px;height:8px;border-radius:50%;background:var(--border)}
.twms-tour-dots span.on{background:#2e7d32}
.twms-tour-bar{display:flex;gap:10px;justify-content:flex-end}

/* Embedded Studio (inside episode iframes) */
.twms-embed .site-header,.twms-embed .hero,.twms-embed .site-footer,.twms-embed .twms-tabs,.twms-embed .callout.tip{display:none!important}
.twms-embed .twms-wrap{padding-top:6px;padding-bottom:22px}
.twms-embed .twms-panel.is-active{margin-top:0}
.twms-embed .hero+.twms-wrap{margin-top:0}

/* A1457: done-state green and "ok" status text on the dark workshop theme.
   #1b5e20 is the light-theme green; on the dark card it is unreadable. */
.twms-msg.ok,.twms-challenge.done,.twms-challenge.done .tick,.tw-prog-badge.earned{color:var(--green,#06d6a0)}
