@font-face{font-family:Story;src:local("Palatino Linotype"),local("Book Antiqua"),local("Georgia");font-display:swap}
:root{color-scheme:light;--ink:#21332b;--forest:#1f342e;--moss:#3b5747;--paper:#fff8e4;--parchment:#ead7a4;--gold:#c99a3c;--gold-soft:#ecd08a;--rule:#d8c698;--rust:#a4532f;--shadow:#3a2c1a26;--ui:"Trebuchet MS",system-ui,sans-serif;--story:Story,Georgia,serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100vh;color:var(--ink);font:16px/1.5 var(--ui);background:#e6dbbf radial-gradient(circle at 12% -10%,#f6edd3 0,#f6edd300 46%),radial-gradient(circle at 100% 0,#d9cfae 0,#d9cfae00 40%);background-attachment:fixed}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-family:var(--story);line-height:1.12}
h1{font-size:clamp(1.75rem,3.6vw,2.7rem);letter-spacing:-.02em;font-weight:normal}
h2{font-size:1.3rem;font-weight:normal}
h3{font-size:1.15rem}
a{color:inherit}
button,textarea{font:inherit}
button,a{touch-action:manipulation}
button{border:1px solid #a8956a;border-radius:.6rem;background:#fffaea;color:var(--ink);min-height:44px;padding:.5rem .8rem;cursor:pointer;box-shadow:0 1px 0 #b9a77a;transition:background .12s,transform .08s}
button:hover{background:#f4e4b9}
button:active{transform:translateY(1px);box-shadow:none}
button:disabled{cursor:wait;opacity:.65}
:focus-visible{outline:3px solid #126b7f;outline-offset:2px}

.masthead{display:flex;align-items:center;justify-content:space-between;gap:.6rem;background:var(--forest) linear-gradient(#27413a,#1c2f2a);color:var(--paper);padding:.55rem max(1rem,env(safe-area-inset-right)) .55rem max(1rem,env(safe-area-inset-left));border-bottom:3px solid var(--gold);box-shadow:0 2px 10px #0003}
.brand{text-decoration:none;font:1.25rem/1.15 var(--story);display:flex;gap:.6rem;align-items:center}
.brand span{color:var(--gold-soft);font-size:1.5rem}
nav{display:flex;gap:.3rem;flex-wrap:wrap}
nav button{border-color:#5d7868;background:#ffffff0d;color:inherit;box-shadow:none;padding:.4rem .75rem}
nav button:hover{background:#435e50}

main{max-width:1280px;margin:auto;padding:clamp(.7rem,2vw,1.5rem) max(clamp(.7rem,2.2vw,1.6rem),env(safe-area-inset-right)) calc(2rem + env(safe-area-inset-bottom)) max(clamp(.7rem,2.2vw,1.6rem),env(safe-area-inset-left))}
#load-status{font:1.2rem var(--story);padding:2rem 0;text-align:center}
.scene-head{display:flex;align-items:end;justify-content:space-between;gap:.8rem;flex-wrap:wrap;margin-bottom:.85rem}
.place{color:#6a5a34;font-size:.82rem;letter-spacing:.07em;text-transform:uppercase;margin-bottom:.2rem}
.scene-meta{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.save{font-size:.82rem;color:#405943;white-space:nowrap}
.party-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .75rem;border-radius:2rem;background:var(--forest);color:#fdf1cd;font-size:.86rem;border:1px solid var(--gold);cursor:help}
.party-badge strong{font-weight:700;letter-spacing:.01em}
.pips{display:inline-flex;gap:.12rem;color:var(--gold-soft)}
.pips i{font-style:normal;font-size:.8rem}

.board{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(0,1fr);gap:1rem;align-items:start}
.col{display:grid;gap:1rem;align-content:start;min-width:0}
.story,.action-book,.party{background:var(--paper);border:1px solid #cdb98a;border-radius:.9rem;padding:clamp(.8rem,1.6vw,1.15rem);box-shadow:inset 0 0 0 3px var(--paper),inset 0 0 0 4px #e6d6ab,0 4px 14px var(--shadow)}
.turn-heading,.story-heading,.party-heading{display:flex;align-items:center;justify-content:space-between;gap:.7rem}

.map-board{margin:0;background:var(--forest);border:1px solid #142620;border-radius:.9rem;padding:.5rem;box-shadow:0 5px 16px #2a1f1040}
.map{position:relative;aspect-ratio:8/5;background:var(--parchment);border-radius:.55rem;isolation:isolate}
canvas{width:100%;height:100%;display:block;border-radius:inherit}
#map-points,.gm-points{position:absolute;inset:0;pointer-events:none}
.pin{position:absolute;transform:translate(-50%,-50%);min-width:46px;width:46px;height:46px;min-height:46px;border-radius:50%;padding:0;display:grid;place-items:center;font-size:1.25rem;font-weight:bold;pointer-events:auto;border:2px solid #fbe8ae;background:#345045;color:#fff8dc;box-shadow:0 2px 6px #31241980}
button.pin::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid #fbe8aecc;opacity:0;pointer-events:none}
.pin:hover{background:#54765c}
.pin:active{transform:translate(-50%,-50%) scale(.95)}
.pin:disabled{opacity:1}
.pin[aria-current=true]{background:#f9edc6;color:#214339;border-color:#284a39}
.pin.passive{pointer-events:none;background:#c8b98e;color:#3e432d;border-color:#514c33;box-shadow:none}
.pin-label{position:absolute;top:100%;left:50%;transform:translateX(-50%);width:max-content;max-width:112px;font:700 .74rem/1.08 var(--ui);margin-top:.2rem;padding:.18rem .32rem;color:#263a30;background:#fff6d8;border:1px solid #aa9866;border-radius:.3rem;pointer-events:none;box-shadow:0 1px 2px #0002}
.map-caption{display:flex;justify-content:space-between;gap:.4rem;flex-wrap:wrap;color:#fff2cf;font-size:.83rem;padding:.5rem .25rem .1rem}
#npcs{display:flex;gap:.25rem .6rem;flex-wrap:wrap}
.companion-token{display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap}
.companion-token canvas{width:1.25rem;height:1.25rem;border-radius:50%}

.story-heading{border-bottom:1px solid var(--rule);padding-bottom:.45rem;margin-bottom:.75rem}
.story-heading h2::before{content:"🧙 ";font-size:1.05rem}
.audio-actions{display:flex;gap:.25rem}
.audio-actions button{padding:.3rem .55rem;min-height:40px}
#scene-story{font:1.13rem/1.55 var(--story)}
#scene-story::first-letter{font-size:2.6em;float:left;line-height:.85;padding:.06em .08em 0 0;color:var(--moss)}
.reaction{margin-top:.85rem;padding:.7rem .8rem;border-radius:.6rem;background:#f3ecd2;border-left:4px solid var(--moss);font:1.08rem/1.5 var(--story)}
.reaction-buttons{margin-top:.5rem;display:flex;gap:.35rem;flex-wrap:wrap;font-family:var(--ui)}
.reaction-buttons button{min-height:38px;padding:.25rem .6rem;font-size:.88rem}
.inscription{margin-top:.7rem;font:italic 1.04rem/1.4 var(--story)}
.lesson{margin:.8rem 0 0;padding:.5rem .7rem;border-radius:.5rem;background:#eaf0db;border:1px dashed #86a07b;font-size:.88rem;color:#2f4637}
details{margin-top:.75rem;padding-top:.45rem;border-top:1px solid var(--rule)}
summary{cursor:pointer;padding:.35rem 0;font-weight:bold}
details p{padding:.25rem 0 .5rem}

.d20{display:inline-block;width:64px;height:64px;flex:none;filter:drop-shadow(0 3px 3px #0003)}
.d20.big{width:120px;height:120px}
.d20 svg{width:100%;height:100%;display:block;overflow:visible}
.d20-body{fill:#2f4a3d;stroke:var(--gold);stroke-width:3;stroke-linejoin:round}
.d20-face{fill:#3d6050;stroke:var(--gold-soft);stroke-width:1.5;stroke-linejoin:round}
.d20-edge{fill:none;stroke:var(--gold-soft);stroke-width:1.3;opacity:.75}
.d20-number{font:700 30px var(--story);fill:#fff6d6}
.d20[data-state=ok] .d20-body{fill:#2f6a44}
.d20[data-state=ok] .d20-face{fill:#3f8a58}
.d20[data-state=fail] .d20-body{fill:#7d4a34}
.d20[data-state=fail] .d20-face{fill:#a4633f}
.dice-result{display:flex;align-items:center;gap:.8rem;margin-bottom:.6rem;padding-bottom:.6rem;border-bottom:1px dashed #b9a877;font-family:var(--ui)}
.dice-sum{font-weight:700;font-size:1rem}
.dice-parts{font-size:.84rem;color:#5a553c;margin-top:.15rem}
@keyframes tumble{0%{transform:rotate(0) translateY(0)}25%{transform:rotate(90deg) translateY(-7px)}50%{transform:rotate(180deg) translateY(0)}75%{transform:rotate(270deg) translateY(-4px)}100%{transform:rotate(360deg) translateY(0)}}
@keyframes land{0%{transform:scale(1.25)}60%{transform:scale(.94)}100%{transform:scale(1)}}
@media(prefers-reduced-motion:no-preference){
  .d20.rolling{animation:tumble .45s linear infinite}
  .d20[data-state=ok],.d20[data-state=fail]{animation:land .35s ease-out}
  .dice-dialog .d20{animation:tumble 6s linear infinite}
}
.dice-dialog{width:min(30rem,calc(100% - 1.5rem));text-align:center}
.dice-dialog header{text-align:left}
.dice-action{font:1.15rem/1.35 var(--story);margin-bottom:.7rem}
.dice-stage{display:flex;align-items:center;justify-content:center;gap:1.1rem;margin:.4rem 0 1rem;text-align:left}
.dice-need{font:700 1.45rem/1.2 var(--story);color:var(--forest)}
.roll-button{font-size:1.2rem;padding:.75rem 1.6rem;min-height:56px;width:100%}
#dice-form{margin-top:.9rem;padding-top:.8rem;border-top:1px solid var(--rule);font-size:.92rem}
#dice-value{width:4.5rem}

.turn-heading{flex-wrap:wrap;align-items:end;margin-bottom:.7rem}
fieldset{border:0;margin:0;padding:0;display:flex;gap:.35rem;flex-wrap:wrap}
legend{font-size:.78rem;padding:0;color:#6a5a34}
fieldset label{display:flex;align-items:center;min-height:44px;padding:.2rem .7rem;border-radius:1.5rem;border:1px solid var(--rule);cursor:pointer;background:#fffdf3}
fieldset label:has(:checked){background:var(--forest);border-color:var(--forest);color:#fdf1cd;font-weight:700}
input{accent-color:var(--moss)}
#move-form label{font:1.02rem var(--story);color:#4f5d45}
textarea{display:block;width:100%;margin:.3rem 0 .5rem;padding:.6rem .7rem;border:1px solid #a8956a;border-radius:.6rem;color:var(--ink);background:#fffdf3;font-size:16px;resize:vertical;box-shadow:inset 0 1px 3px #0001}
.move-buttons{display:flex;gap:.45rem;flex-wrap:wrap}
.move-buttons .primary{flex:1;min-width:9rem}
.primary{background:var(--moss) linear-gradient(#47695a,#35503f);color:#fff;border-color:#2c4335;box-shadow:0 2px 0 #223529;font-weight:700}
.primary:hover{background:var(--forest)}
#mic[aria-pressed=true]{background:#ffdcc6;border-color:var(--rust)}
.note,.status{font-size:.88rem;margin-top:.5rem}
.note{color:#5a553c}
.status{padding:.45rem .65rem;background:#e1e9d4;border-radius:.45rem}
.status.gm-voice{background:#f6ecd0;border-left:4px solid var(--gold);font:1.04rem/1.45 var(--story)}
.status.gm-voice::before{content:"🧙 "}
.hints{margin-top:.9rem;padding-top:.6rem;border-top:1px solid var(--rule)}
.hints>summary{font:1rem var(--story);color:#4f5d45;padding:.2rem 0 .5rem}
.hints:not([open])>summary{border:1px dashed #a6976c;border-radius:.6rem;padding:.6rem .75rem;background:#fffaf0}
.actions{display:grid;gap:.45rem}
.actions button{text-align:left;display:flex;justify-content:space-between;align-items:center;gap:.5rem;border-left:4px solid #9bb08d;padding:.55rem .7rem}
.actions button.rolls{border-left-color:var(--gold)}
.actions button.suggested{outline:3px solid var(--gold);outline-offset:1px;background:#fff3cf}
.tag{flex:none;white-space:nowrap;font-size:.76rem;padding:.16rem .5rem;border-radius:1rem;background:#e7eedb;color:#35503f;border:1px solid #b9c9aa}
.tag.dice{background:#f8e7b8;color:#5b430f;border-color:#d4b467;font-weight:700}
.actions kbd{display:inline-grid;place-items:center;min-width:1.35rem;height:1.35rem;margin-right:.15rem;border:1px solid #9e8e66;border-bottom-width:2px;border-radius:.25rem;background:#f3e6c2;font:700 .74rem/1 var(--ui);color:#4a5a44;vertical-align:.08em}
@media(hover:none),(pointer:coarse){.actions kbd{display:none}}
#game[aria-busy=true] .actions button:disabled{cursor:progress}
#chapter-library a{display:block;padding:.65rem .75rem;min-height:44px;border:1px solid var(--rule);border-radius:.5rem;text-decoration:none;background:#fffdf3}
#chapter-library a:hover{background:#f4e4b9}
#chapter-library a[aria-current=page]{background:#dbe4ca}
#replay-banner{margin:0 0 .7rem}
#replay-banner button{min-height:36px;padding:.2rem .6rem;margin-left:.4rem}

.party{background:#f3e6bf}
.party-heading{margin-bottom:.6rem}
#save-export{font-size:.84rem;min-height:36px;display:inline-flex;align-items:center}
.heroes{align-items:start;display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.5rem}
.hero{align-content:start;display:grid;grid-template-columns:44px 1fr;gap:.15rem .55rem;align-items:center;padding:.5rem;border-radius:.65rem;background:#fffaea;border:1px solid var(--rule)}
.hero.player{border-color:#8fa783}
.hero.active{box-shadow:0 0 0 2px var(--moss);background:#fffdf3}
.hero canvas{width:44px;height:44px;border-radius:50%;border:2px solid var(--gold);object-fit:cover}
.hero-name{display:grid;line-height:1.15;min-width:0}
.hero-name strong{font:700 1rem var(--story)}
.hero-name small{font-size:.74rem;color:#6a5a34}
.hero.player .hero-name strong::after{content:" · hraje";font:400 .72rem var(--ui);color:#3b5747}
.hero-bag{grid-column:1/-1;list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem}
.hero-bag .empty{font-size:.76rem;color:#8a7a52;font-style:italic}
.item-chip{min-height:32px;padding:.12rem .5rem;font-size:.8rem;border-radius:1rem;box-shadow:none;background:#f6ecd0;border-color:#cdb98a;text-align:left}
.item-chip.talisman{background:#f8e7b8;border-color:#d4b467}
.item-chip span{color:#35503f}
.item-note{margin-top:.6rem;padding:.5rem .7rem;border-radius:.5rem;background:#fffaea;border-left:4px solid var(--gold);font-size:.9rem}

dialog{border:1px solid #cdb98a;border-radius:.9rem;color:var(--ink);background:var(--paper);width:min(44rem,calc(100% - 1.5rem));max-height:86vh;max-height:86dvh;padding:1rem 1.1rem;overflow:auto;box-shadow:0 12px 34px #15251d80}
dialog::backdrop{background:#16241fcc}
dialog header{display:flex;align-items:start;justify-content:space-between;gap:.75rem;margin-bottom:.6rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule)}
dialog header button{min-height:38px;padding:.25rem .7rem}
dialog h3{margin:.6rem 0 .25rem}
dialog p+ p{margin-top:.5rem}
dialog details p{padding:0}
dialog ol{padding-left:1.6rem}
dialog li+li{margin-top:.65rem}
audio{width:100%;margin-top:.65rem}
select,input:not([type=radio]):not([type=checkbox]):not([type=range]){font:inherit;max-width:100%;padding:.35rem;border:1px solid #a08b61;border-radius:.4rem;background:#fffdf1;color:var(--ink)}
#character-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,175px),1fr));gap:.65rem;margin:.8rem 0}
.character-card,.draft-card{border:1px solid var(--rule);padding:.6rem;border-radius:.6rem;background:#fffaea}
.character-card canvas{max-width:144px;height:auto;margin:0 auto .55rem;border-radius:.45rem}
.character-card h3{margin:0}
.character-card p{font-size:.88rem}
.character-card button{margin-top:.35rem;font-size:.88rem;min-height:38px}
.badge-control{display:flex;align-items:center;gap:.4rem;margin-top:.45rem;font-size:.84rem}
.avatar-preview canvas{width:173px;height:auto;border-radius:.6rem;margin:0 auto 1rem}
.avatar-fields,#avatar-crop{display:grid;grid-template-columns:repeat(auto-fit,minmax(143px,1fr));gap:.65rem;margin:.65rem 0}
.avatar-fields label,#avatar-crop label{display:grid;gap:.3rem}
.avatar-fields label,.avatar-fields select,#avatar-crop label,#avatar-crop input{min-width:0;max-width:100%}
#avatar-file{display:block;margin:.3rem 0}
#avatar-form p{margin:.55rem 0}
.avatar-edit{display:block;margin-top:.45rem}
.avatar-notes,.avatar-files label{display:grid;gap:.3rem;min-width:0}
.avatar-files{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.75rem;margin-top:.8rem}
.avatar-files input{min-width:0;width:100%;max-width:100%;margin:.3rem 0}
.character-skill{border-left:3px solid var(--rule);padding:.3rem .65rem}
.draft-card{margin-top:.6rem}
.draft-card button,.draft-card a{margin:.4rem .35rem .1rem 0}
#gm-content section{margin:.8rem 0;padding:.5rem 0;border-top:1px solid var(--rule)}
#gm-content canvas{height:auto;aspect-ratio:8/5;margin:.4rem 0}
#gm-content h4{margin:.5rem 0 .15rem}
#profile-form{padding-bottom:.8rem;border-bottom:1px solid var(--rule)}
#profile-form p{margin-bottom:.4rem}
.gm-map .pin{width:32px;min-width:32px;height:32px;min-height:32px}

@keyframes glow-map{0%,100%{filter:none}35%{filter:brightness(1.22) saturate(1.35)}}
@keyframes roll-map{20%,65%{transform:rotate(-.65deg)}40%,85%{transform:rotate(.65deg)}}
@keyframes beckon{0%{opacity:.9;transform:scale(.8)}100%{opacity:0;transform:scale(1.25)}}
@media(prefers-reduced-motion:no-preference){
  .map[data-effect=find] canvas,.map[data-effect=door] canvas{animation:glow-map .5s ease}
  .map[data-effect=dice] canvas{animation:roll-map .45s ease}
  #map-points button.pin:not(:disabled)::after{animation:beckon 2.4s ease-out infinite}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

@media(max-width:900px){
  .board{display:flex;flex-direction:column}
  .col{display:contents}
  .map-board{order:1}.story{order:2}.action-book{order:3}.party{order:4}
}
@media(max-width:520px){
  .masthead{flex-wrap:wrap}
  .masthead nav{width:100%;display:grid;grid-template-columns:repeat(4,1fr) 44px}
  .masthead nav button{padding:.35rem .2rem;font-size:.86rem}
  #open-settings span{display:none}
  .map{aspect-ratio:1.24}
  .pin-label{max-width:82px;font-size:.67rem}
  .heroes{grid-template-columns:1fr 1fr}
  .hero{grid-template-columns:36px 1fr;padding:.4rem}
  .hero canvas{width:36px;height:36px}
  .dice-stage{flex-direction:column;text-align:center;gap:.5rem}
  .scene-meta{width:100%;justify-content:space-between}
}
@media print{
  body{background:white}
  body>header,body>main,dialog:not([open]),dialog button,dialog form,.badge-control,#avatar-dialog{display:none!important}
  dialog[open]{position:static;width:100%;max-height:none;overflow:visible;border:0;box-shadow:none;margin:0;background:white}
  dialog::backdrop{display:none}
  .character-card,#gm-content section{break-inside:avoid}
}
.hero-name .traits{color:#35503f;font-size:.78rem;letter-spacing:.02em}
.hero-name .traits.later{opacity:.5}
.story-heading h2{font-size:1.15rem}
.audio-actions button{white-space:nowrap}
#team-plan{margin:.45rem 0 .6rem}
#team-plan label{display:inline-block;margin:.4rem .3rem .25rem 0}
#table-question{font:700 clamp(1.2rem,3vw,1.7rem) var(--story);color:#36564a;margin:.8rem 0 0}
.combat-status{margin:.8rem 0;padding:.7rem .85rem;border:1px solid #9f7548;border-radius:.55rem;background:#f2e3bf;color:#382a21}
.combat-status h3{margin:0 0 .4rem}
.combat-status p{margin:.4rem 0 0}
.combat-clue{color:#654526;font-weight:700}
.pin.combat-target{background:#794436;color:#fff2cd;border-color:#ffd894}
.combat-meters{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:.35rem .8rem;font-size:.9rem}
.combat-meters meter{display:block;width:100%;height:.8rem;accent-color:#507451}
.pin-art{display:block;width:100%;height:100%}
.pin-art>canvas,.party-map-tokens canvas{display:block;object-fit:cover;border-radius:50%;width:100%;height:100%}
.party-map-tokens{display:flex;align-items:center;justify-content:center;position:absolute;bottom:94%;left:50%;transform:translateX(-50%);width:max-content;pointer-events:none}
.party-map-tokens canvas{width:clamp(23px,4.5vw,40px);height:clamp(23px,4.5vw,40px);margin-left:-4px;border:2px solid #f4d68e;box-shadow:0 2px 5px #1f271caa}
.party-map-tokens canvas:first-child{margin-left:0;width:clamp(28px,5vw,48px);height:clamp(28px,5vw,48px);border-color:white;z-index:1}
.party-map-pin{font-size:0}
.party-map-pin .pin-art::after{content:'⚑';font-size:1.35rem;position:absolute;inset:0;display:grid;place-items:center}
.show-mode .masthead,.show-mode .party,.show-mode .action-book,.show-mode #lesson,.show-mode #recap,.show-mode #replay-banner,.show-mode .save,.show-mode #party-badge{display:none}
.show-mode main{max-width:1500px}
.show-mode .board{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.show-mode .map{aspect-ratio:8/5}
.show-mode .story{font-size:1.13rem}
.show-mode #scene-story{font-size:clamp(1.06rem,2.4vw,1.45rem)}
.show-mode #show-mode{background:#29443a;color:#fff6d8}
.show-mode #map-points{pointer-events:none}
@media(max-width:900px){.show-mode .map-board,.show-mode .story{width:100%}}
.ending-box{margin:.2rem 0 .6rem;padding:.8rem .9rem;border-radius:.7rem;background:#fff3cf;border:1px solid var(--gold);text-align:left}
.ending-name{font:1.35rem/1.2 var(--story);color:var(--forest)}
.ending-count{margin-top:.3rem;font-size:.92rem}
.ending-list{list-style:none;margin:.45rem 0 .2rem;padding:0;display:grid;gap:.15rem;font-size:.92rem}
.ending-list .unknown{color:#8a7a52;font-style:italic}
.ending-buttons{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}
.button-link{display:inline-flex;align-items:center;min-height:44px;padding:.5rem .8rem;border:1px solid #a8956a;border-radius:.6rem;background:#fffaea;text-decoration:none;box-shadow:0 1px 0 #b9a77a}
.button-link:hover{background:#f4e4b9}

/* Úvodní karta kapitoly */
.chapter-card{width:min(32rem,calc(100% - 1.5rem));text-align:center;padding:1.6rem 1.4rem 1.3rem;background:var(--paper) radial-gradient(circle at 50% 0,#fff8e2 0,#fff8e200 70%);border:2px solid var(--gold);box-shadow:inset 0 0 0 5px var(--paper),inset 0 0 0 6px #e0c98d,0 16px 40px #10201a99}
.chapter-kicker{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#7a6330}
.chapter-kicker::before,.chapter-kicker::after{content:" ✦ ";color:var(--gold)}
.chapter-card h2{font-size:clamp(1.6rem,5vw,2.2rem);margin:.4rem 0 .6rem;color:var(--forest)}
.chapter-card-summary{font:1.08rem/1.5 var(--story)}
.chapter-card-lesson{margin-top:.8rem;padding:.5rem .7rem;border-radius:.5rem;background:#eaf0db;font-size:.9rem;color:#2f4637}
.chapter-card-lesson:empty{display:none}
.chapter-card form{margin-top:1.1rem}
.chapter-card .primary{font-size:1.1rem;padding:.7rem 1.6rem}
/* Přechod scén a oslavy */
@keyframes scene-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes card-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes badge-pop{0%{transform:scale(1)}35%{transform:scale(1.18);box-shadow:0 0 0 6px #c99a3c55}100%{transform:scale(1)}}
@keyframes star-fall{0%{transform:translateY(-10vh) rotate(0);opacity:1}100%{transform:translateY(105vh) rotate(540deg);opacity:.2}}
@media(prefers-reduced-motion:no-preference){
  .board.scene-enter .story,.board.scene-enter .map-board{animation:scene-in .45s ease-out both}
  .board.scene-enter .map-board{animation-delay:.05s}
  .chapter-card[open]{animation:card-in .35s ease-out}
  .party-badge.level-up{animation:badge-pop .9s ease-out 2}
}
.celebration{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:50}
.celebration span{position:absolute;top:0;font-size:1.3rem;animation:star-fall 2.2s ease-in forwards}

/* --- Jarda D&D Launcher --- */
.launcher-body { background: #16111a; color: #f1e9f5; }
.launcher-head { background: #221828; border-bottom: 2px solid #e20074; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.75rem; }
.badge-tmobile { background: #e20074; color: #fff; font-weight: 700; font-size: 0.85rem; padding: 0.25rem 0.7rem; border-radius: 999px; }
.launcher-main { max-width: 1120px; margin: 1.5rem auto; padding: 0 1rem 3rem; display: grid; gap: 1.25rem; }
.roast-banner { background: linear-gradient(135deg, #2d1626, #21192a); border: 1px solid #e20074; border-radius: 12px; padding: 1rem 1.25rem; display: flex; flex-direction: column; gap: 0.5rem; }
.roast-kicker { margin: 0; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; color: #ff7ec4; font-weight: 700; }
.roast-text { margin: 0; font-size: 1.05rem; line-height: 1.45; }
.roast-btn { align-self: flex-start; background: #3b1d30; color: #ffd4ec; border: 1px solid #e20074; padding: 0.35rem 0.75rem; border-radius: 6px; cursor: pointer; }
.launcher-card { background: #211a26; border: 1px solid #3c2f47; border-radius: 12px; padding: 1.25rem; display: grid; gap: 1rem; }
.launcher-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; }
.launcher-card h1, .launcher-card h2 { margin: 0; color: #fff; }
.launcher-card .muted { color: #b8a8c4; margin: 0.25rem 0 0; }
.gate-badge { padding: 0.45rem 0.85rem; border-radius: 8px; font-weight: 700; font-size: 0.9rem; }
.gate-locked { background: #4a1c24; color: #ffb3be; border: 1px solid #c94a5a; }
.gate-ready { background: #163d29; color: #a7f3c8; border: 1px solid #2ea669; }
.gate-warning { background: #4a1c24; color: #ffd2d8; padding: 0.65rem 0.9rem; border-radius: 8px; margin: 0; border: 1px solid #c94a5a; }
.api-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; }
.api-box { background: #18121d; border: 1px solid #392d44; border-radius: 10px; padding: 1rem; display: flex; flex-direction: column; gap: 0.6rem; }
.api-required { border-color: #e20074; }
.api-box-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.5rem; flex-wrap: wrap; }
.api-box-head h2 { font-size: 1rem; margin: 0; }
.tag-req { background: #e20074; color: #fff; font-size: 0.72rem; padding: 0.15rem 0.45rem; border-radius: 4px; margin-left: 0.3rem; }
.tag-free { background: #1e4b35; color: #a7f3c8; font-size: 0.72rem; padding: 0.15rem 0.45rem; border-radius: 4px; }
.tag-opt { background: #373040; color: #d1c4db; font-size: 0.72rem; padding: 0.15rem 0.45rem; border-radius: 4px; }
.api-guide { font-size: 0.85rem; color: #cbbcd6; margin: 0; line-height: 1.4; }
.api-guide a { color: #ff7ec4; text-decoration: underline; }
.api-box label { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.85rem; color: #e2d8ea; }
.api-box input, .create-world-form input, .create-world-form select, .create-world-form textarea { background: #110d14; color: #fff; border: 1px solid #4d3e5a; border-radius: 6px; padding: 0.45rem 0.6rem; font: inherit; }
.api-actions { display: flex; align-items: center; gap: 0.6rem; margin-top: auto; }
.test-key-btn { background: #2f2438; color: #f1e9f5; border: 1px solid #594669; padding: 0.35rem 0.7rem; border-radius: 6px; cursor: pointer; }
.test-status { font-size: 0.85rem; }
.test-status.ok { color: #7ef0b1; }
.test-status.err { color: #ff8a98; }
.worlds-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; }
.world-card { background: #18121d; border: 1px solid #3c2f47; border-radius: 10px; padding: 1rem; display: flex; flex-direction: column; gap: 0.6rem; }
.world-card-head { display: flex; justify-content: space-between; gap: 0.5rem; align-items: baseline; }
.world-card-head h3 { margin: 0; color: #fff; font-size: 1.05rem; }
.world-meta { font-size: 0.78rem; color: #ff7ec4; white-space: nowrap; }
.world-heroes { margin: 0; font-size: 0.88rem; color: #e2d8ea; }
.world-chapters { margin: 0; padding-left: 1.2rem; font-size: 0.85rem; color: #cbbcd6; }
.world-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: auto; padding-top: 0.4rem; }
.world-actions .primary { background: #e20074; color: #fff; border: none; padding: 0.45rem 0.85rem; border-radius: 6px; text-decoration: none; font-weight: 700; cursor: pointer; }
.world-actions button { background: #2f2438; color: #f1e9f5; border: 1px solid #594669; padding: 0.4rem 0.7rem; border-radius: 6px; cursor: pointer; }
.disabled-link { opacity: 0.45; pointer-events: auto; cursor: not-allowed; }
.create-world-form { display: grid; gap: 0.8rem; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.8rem; }
.create-world-form label { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.88rem; color: #e2d8ea; }
.form-actions { display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap; }
.form-actions .primary { background: #e20074; color: #fff; border: none; padding: 0.55rem 1rem; border-radius: 6px; font-weight: 700; cursor: pointer; }
.form-actions .primary:disabled, .world-actions button:disabled { opacity: 0.45; cursor: not-allowed; }
.trial-bar { display: flex; align-items: center; gap: 0.85rem; flex-wrap: wrap; background: #1a131f; border: 1px dashed #e20074; border-radius: 8px; padding: 0.75rem 1rem; }
.jebu-to-btn { background: #3b1d30; color: #ffd4ec; border: 1px solid #e20074; padding: 0.45rem 0.9rem; border-radius: 6px; font-weight: 700; cursor: pointer; }
.jebu-to-btn:hover { background: #542442; }
