:root{--ink:#2b1e3a;--spark:#7b5ba6;--spark-shade:#553c80;--spark-light:#b39bdb;--cream:#fff8ec;--glow:#ffc94d;--brass:#c2853a;--parchment:#f1e8d8;--page:#e6dac5;--ink-soft:#5f5361;--line-strong:#766971;--focus-ring:var(--ink);--brass-ink:#7a5226;--berry:#8a2338;color:var(--ink);background:var(--page);font-family:Segoe UI,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;line-height:1.45}*{box-sizing:border-box}body{margin:0}.app-header{background:var(--ink);color:var(--cream);align-items:baseline;gap:24px;padding:14px 32px;display:flex}.app-header h1{letter-spacing:.02em;margin:0;font-size:1.35rem}.app-header nav{gap:20px;display:flex}.app-header nav a{color:var(--spark-light);border-radius:4px;font-weight:600;text-decoration:none}.app-header nav a[aria-current=page]{color:var(--glow)}.settings{align-items:center;gap:16px;margin-left:auto;display:flex}.setting{min-height:26px;color:var(--cream);cursor:pointer;align-items:center;gap:6px;font-size:.92rem;font-weight:600;display:inline-flex}.setting input{width:18px;height:18px;accent-color:var(--glow);cursor:pointer;margin:0}main{padding:20px 32px 40px}.preview{max-width:900px}.preview-heading{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.preview-heading h2{margin:0;font-size:1.25rem}.badge{border:2px dashed var(--brass);color:var(--brass-ink);background:#ffc94d2e;border-radius:999px;margin:0;padding:3px 12px;font-size:.85rem;font-weight:600}.stage-frame{background:var(--parchment);box-shadow:0 0 0 3px var(--ink), 0 8px 24px #2b1e3a2e;border-radius:18px;margin-top:14px;padding:10px;display:inline-block}.pixi-stage{border-radius:10px;position:relative;overflow:hidden}.pixi-stage-note{place-items:center;margin:0;font-weight:600;display:grid;position:absolute;inset:0}.pixi-stage-error{color:var(--berry)}.stage-captions{color:var(--ink-soft);text-align:center;grid-template-columns:1fr 1fr;padding:6px 4px 0;font-size:.85rem;display:grid}.controls{flex-wrap:wrap;gap:24px;margin-top:18px;display:flex}fieldset{border:2px solid #2b1e3a40;border-radius:14px;margin:0;padding:10px 14px 12px}legend{padding:0 6px;font-weight:700}.button-row{flex-wrap:wrap;gap:8px;display:flex}.hint{max-width:380px;color:var(--ink-soft);margin:8px 0 0;font-size:.85rem}button{font:inherit;border:2px solid var(--ink);background:var(--spark);color:var(--cream);cursor:pointer;box-shadow:0 2px 0 var(--ink);border-radius:12px;padding:7px 16px;font-weight:600}button:hover{background:var(--spark-shade)}button:active{box-shadow:0 1px 0 var(--ink);transform:translateY(1px)}button[aria-pressed=true]{background:var(--glow);color:var(--ink)}button[aria-disabled=true]{color:var(--ink-soft);cursor:default;background:#cfc3d9}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;box-shadow:0 0 0 2px var(--glow)}.app-header :focus-visible{outline-color:var(--glow);box-shadow:none}button:focus-visible{box-shadow:0 0 0 2px var(--glow), 0 2px 0 var(--ink)}.side-tab:focus-visible,.side-panel:focus-visible,.trace-scroll:focus-visible{outline-offset:-3px;box-shadow:none}.status{margin:12px 0 0;font-weight:600}.criteria{background:#fff8ecb3;border-radius:14px;max-width:600px;margin-top:20px;padding:12px 18px}.criteria h3{margin:0 0 6px;font-size:1rem}.criteria ol{margin:0;padding-left:22px}.patchwork{max-width:1000px}.caption{color:var(--ink-soft);margin:6px 0 0}.patchwork-captions{grid-template-columns:452px 1fr}.patchwork .controls fieldset{flex:0 auto}.pieces{margin-top:18px}.piece-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.piece{border:2px dashed var(--line-strong);background:#fff8ec8c;border-radius:12px;padding:8px 10px 10px}.piece[data-attached=true]{background:#fff8ece6;border-style:solid}.piece-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.piece-name{font-weight:700}.piece-state{color:var(--ink-soft);margin-left:auto;font-size:.8rem}.piece .button-row button{padding:4px 12px;font-size:.9rem}.piece-hint{color:var(--brass-ink);margin:6px 0 0;font-size:.8rem;font-weight:600}.swatch{border:2px solid var(--ink);border-radius:50%;flex:none;width:14px;height:14px}.swatch-spark{background:var(--spark)}.swatch-moss{background:#6f9a4c}.swatch-brass{background:var(--brass)}.swatch-ink{background:var(--cream)}main.route-playground{padding:10px 12px 0}.playground{grid-template-rows:auto 486px auto;grid-template-columns:800px 440px;justify-content:center;gap:8px 14px;display:grid}.playground-heading{grid-column:1/-1;align-items:center;gap:16px;display:flex}.playground-heading h2{flex:none;margin:0;font-size:1.25rem}.playground-stage{border-radius:12px;grid-area:2/1;align-self:start;width:800px;height:480px;margin:3px 0 0;padding:0}.playground-bar{grid-area:3/1;align-self:start;align-items:center;gap:20px;display:flex}.playground-bar .button-row{flex-wrap:nowrap;flex:none}.playground-bar button{min-width:84px}.playground-bar button:disabled{color:var(--ink-soft);cursor:default;background:#cfc3d9;transform:none}.playground-bar .reset-button{background:var(--cream);color:var(--ink)}.playground-bar .reset-button:hover{background:#f3e3c4}.playground-status{margin:0}.playground-status-group{flex-direction:column;gap:1px;min-width:0;display:flex}.save-status{color:var(--ink-soft);margin:0;font-size:.85rem;line-height:1.4}.save-status[data-save=invalid],.save-status[data-save=off]{color:var(--brass-ink);font-weight:600}.playground-side{flex-direction:column;grid-area:2/2/4;gap:6px;height:600px;min-height:0;display:flex}.playground-side .friendship-meter{padding-top:3px;padding-bottom:3px}.playground-side>*{flex:none}.playground-side fieldset{padding:6px 12px 8px}.playground-side .preset-group{padding:2px 12px 3px}.preset-group legend{float:left;margin-right:18px;padding:0;line-height:1.45}.side-tabs{flex-direction:column;display:flex}.side-tab-row{align-items:flex-end;gap:10px;display:flex}.side-tablist{flex:none;gap:4px;display:flex}.side-tab{background:var(--parchment);min-width:72px;color:var(--ink);box-shadow:none;border:2px solid #2b1e3a59;border-radius:10px 10px 0 0;padding:3px 16px 4px;font-size:.92rem;position:relative;bottom:-2px}.side-tab:hover{background:#f3e3c4}.side-tab:active{box-shadow:none;transform:none}.side-tab[aria-selected=true]{z-index:1;border-bottom-color:var(--cream);background:var(--cream);text-decoration:underline;-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink);text-underline-offset:4px;font-weight:800;text-decoration-thickness:3px}.side-panel{background:var(--cream);border:2px solid #2b1e3a59;border-radius:0 14px 14px;height:230px;padding:8px 12px;overflow-y:auto}.side-panel[hidden]{display:none}.radio-row{gap:20px;display:flex}.radio{cursor:pointer;align-items:center;gap:6px;min-height:26px;font-weight:600;display:inline-flex}.radio input{width:18px;height:18px;accent-color:var(--spark);margin:0}.part-columns{grid-template-columns:1fr 1fr;column-gap:14px;display:grid}.part-column-title{margin:0 0 3px;font-size:.95rem}.part-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.part-row{grid-template-columns:1fr auto auto;align-items:center;gap:5px;display:grid}.part-title{font-size:.88rem;font-weight:700;line-height:1.1}.part-row[data-attached=false] .part-title{font-style:italic;font-weight:600}.part-row button{border-radius:10px;padding:2px 8px;font-size:.82rem}.part-row:has(.part-use){row-gap:1px}.part-use{border:1.5px solid var(--ink);border-radius:999px;grid-column:1/-1;justify-self:start;padding:0 6px;font-size:.72rem;font-weight:700;line-height:1.15}.part-use[data-use=needed]{background:#ffc94d2e;border-style:dashed}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.part-notice{min-width:0;color:var(--ink-soft);flex:auto;min-height:1.25em;margin:0 0 3px;font-size:.78rem;line-height:1.25}.trace-panel{background:#fff8ecbf;border:2px solid #2b1e3a40;border-radius:14px;flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.playground-side>.trace-panel{flex:auto}.trace-panel h3{border-bottom:1px solid #2b1e3a26;margin:0;padding:3px 12px;font-size:.95rem;line-height:1.3}.trace-scroll{flex:auto;min-height:0;padding:4px 10px 6px;overflow-y:auto}.trace-empty{color:var(--ink-soft);margin:4px 2px;font-style:italic}.trace-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.trace-entry{border-left:3px solid #0000;padding:3px 4px;font-size:.9rem;line-height:1.3}.trace-entry[data-missing]{border-left:3px dashed var(--line-strong);background:#8a23380f}.trace-tick{font-variant-numeric:tabular-nums;font-weight:700}.trace-source{letter-spacing:.02em;border:2px solid var(--ink);border-radius:6px;padding:0 7px;font-size:.8rem;font-weight:700;display:inline-block}.trace-source-rule{background:var(--cream)}.trace-source-ai{background:var(--glow);border-radius:999px}.trace-source-rules_mode{background:#e3dcec;border-style:dashed}.trace-reason{color:var(--ink-soft);font-size:.8rem}.trace-entry[data-tick-start]:not(:first-child){border-top:2px solid #2b1e3a4d;margin-top:3px;padding-top:4px}.trace-entry[data-latest]{background:#ffd66638}.trace-entry[data-latest][data-missing]{background:#8a23381a}.trace-latest{border:2px solid var(--ink);letter-spacing:.04em;text-transform:uppercase;vertical-align:1px;border-radius:999px;padding:0 6px;font-size:.72rem;font-weight:700;display:inline-block}.trace-cause{color:var(--ink-soft);margin:1px 0 0 12px;font-size:.78rem;line-height:1.2;display:block}.friendship-meter{background:#fff8ecbf;border:2px solid #2b1e3a40;border-radius:14px;align-items:center;gap:12px;padding:5px 12px;display:flex}.friendship-text{margin:0;font-weight:700}.friendship-pips{gap:6px;margin-left:auto;display:inline-flex}.friendship-pip{border:2px solid var(--ink);border-radius:50%;flex:none;width:16px;height:16px}.friendship-pip[data-filled=true]{background:var(--ink);box-shadow:inset 0 0 0 2px var(--glow)}.friendship-pip[data-filled=false]{background:0 0}.rule-editor{gap:8px;font-size:.86rem;display:grid}.rule-group{gap:4px;display:grid}.rule-group-title{margin:0;font-size:.95rem}.rule-empty{color:var(--ink-soft);margin:0;font-style:italic}.rule-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.rule-row{background:#fff8ecbf;border:2px solid #2b1e3a33;border-radius:10px;grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"head head head remove""trigger arrow action.";align-items:center;gap:2px 6px;padding:4px 6px 5px;display:grid}.rule-head{grid-area:head;font-weight:600;line-height:1.2}.rule-number{font-variant-numeric:tabular-nums;font-weight:800}.rule-remove{grid-area:remove;justify-self:end}.rule-trigger{grid-area:trigger}.rule-arrow{grid-area:arrow;font-weight:800}.rule-action{grid-area:action;justify-self:start}.rule-editor select{font:inherit;border:2px solid var(--ink);background:var(--cream);max-width:100%;color:var(--ink);cursor:pointer;border-radius:8px;padding:2px 4px;font-weight:600}.rule-editor button{border-radius:10px;padding:2px 10px;font-size:.82rem}.rule-remove{background:var(--cream);color:var(--ink)}.rule-remove:hover{background:#f3e3c4}.rule-add-row{align-items:center;gap:8px;display:flex}.rule-count{color:var(--ink-soft);font-size:.8rem}.rule-footer{border-top:1px dashed #2b1e3a4d;justify-content:space-between;align-items:center;gap:8px;padding-top:6px;display:flex}.rule-order-note{color:var(--ink-soft);margin:0;font-size:.8rem}.rule-restore{background:var(--cream);color:var(--ink);flex:none}.rule-restore:hover{background:#f3e3c4}.guide{flex:auto;align-items:center;gap:12px;min-width:0;display:flex}.guide-text{flex:auto;min-width:0;margin:0;font-size:.95rem;font-weight:600}.guide-steps{flex:none;gap:5px;margin:0;padding:0;list-style:none;display:flex}.guide-step{border:2px dashed var(--line-strong);text-align:center;font-variant-numeric:tabular-nums;background:0 0;border-radius:999px;min-width:38px;padding:0 7px;font-size:.85rem;font-weight:700;line-height:1.5}.guide-step[data-done=true]{border:2px solid var(--ink);background:var(--cream)}.guide-step[aria-current=step]{border-width:3px;border-color:var(--ink);background:#ffc94d4d}.guide-start-over{background:var(--cream);color:var(--ink);flex:none;padding:3px 12px;font-size:.85rem}.guide-start-over:hover{background:#f3e3c4}html[data-motion=reduced] *,html[data-motion=reduced] :before,html[data-motion=reduced] :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html[data-motion=reduced] button:active{transform:none}@media (width<=1263.98px){.app-header{flex-wrap:wrap;row-gap:6px}main.route-playground{padding:8px}.playground{grid-template-rows:none;grid-template-columns:minmax(0,800px)}.playground-heading{flex-wrap:wrap}.playground-stage{width:100%;height:auto}.playground-bar{flex-wrap:wrap;grid-row:auto}.playground-side{grid-area:auto/1;height:auto}.playground-side>.trace-panel{min-height:16rem}}.pixi-stage canvas{width:100%!important;height:100%!important}.pixi-stage,.stage-frame{max-width:100%}.home{max-width:1040px;margin:0 auto}.home-hero{flex-wrap:wrap;align-items:center;gap:28px;display:flex}.home-hero-text{flex:380px}.home-hero h2{margin:0 0 12px;font-size:1.9rem;line-height:1.2}.home-lead{max-width:34em;margin:0 0 18px;font-size:1.1rem;line-height:1.5}.home-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.home-start,.home-video{border:2px solid var(--ink);box-shadow:0 2px 0 var(--ink);border-radius:12px;padding:12px 20px;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-block}.home-start{background:var(--glow);color:var(--ink)}.home-start:hover{background:var(--cream)}.home-video{background:var(--cream);color:var(--ink)}.home-video:hover{background:var(--parchment)}.home-start:focus-visible,.home-video:focus-visible{box-shadow:0 0 0 2px var(--glow), 0 2px 0 var(--ink)}.home-small{color:var(--ink-soft);margin:12px 0 0}.home-hero-art{flex:none;margin-top:0}.home-steps,.home-grownups{margin-top:28px}.home-steps h2,.home-grownups h2{margin:0 0 8px;font-size:1.25rem}.home-steps ol,.home-grownups ul{max-width:46em;margin:0;padding-left:1.4em;line-height:1.55}.home-steps li,.home-grownups li{margin-bottom:6px}.home-footer{border-top:2px solid var(--line-strong);color:var(--ink-soft);margin-top:32px;padding-top:12px;font-size:.9rem}.home-footer p{margin:4px 0}.home-footer a{color:var(--ink);font-weight:600}.library{max-width:1100px;margin:0 auto}.library h2{margin:0 0 8px}.library-lead{max-width:46em;margin:0 0 14px;line-height:1.5}.library-picker{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.library-cast{margin:0;font-weight:700}.library-play{background:var(--glow);color:var(--ink)}.library-play[aria-disabled=true]{background:var(--parchment);color:var(--ink-soft)}.library-notice{color:var(--brass-ink);flex-basis:100%;min-height:1.4em;margin:0}.library-cards{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.library-card{background:var(--cream);border:2px solid var(--line-strong);border-radius:14px;align-items:flex-start;gap:12px;padding:12px;display:flex}.library-card[data-on-stage=true]{border:3px solid var(--ink)}.library-card h3{margin:0 0 4px;font-size:1.2rem}.library-twist{color:var(--ink-soft);margin:0 0 6px}.library-card-text{flex:auto;min-width:0}.library-card dl{margin:0 0 8px;font-size:.92rem;line-height:1.35}.library-card dt{font-weight:700}.library-card dd{margin:0 0 4px}.library-pick{align-items:center;gap:6px;font-weight:700;display:inline-flex}.monster-portrait{flex:none}.monster-portrait img{pointer-events:none}.cast-line{color:var(--ink-soft);margin:2px 0 0;font-size:.9rem}.cast-line a{color:var(--ink);font-weight:600}.free-play{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.free-play p{margin:0}.part-lends{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:4px;display:flex}.part-row .part-lend{white-space:nowrap;padding:1px 8px;font-size:.78rem}.part-worn{white-space:nowrap;color:var(--ink-soft);border:2px dashed var(--line-strong);border-radius:8px;padding:0 6px;font-size:.78rem}.challenge-now{max-width:62em;line-height:1.35}.challenge-hint{color:var(--ink-soft)}.status-line{flex-wrap:wrap;column-gap:10px;min-width:0;display:flex}.run-notes{margin:0;font-size:.85rem;font-weight:600;line-height:1.4}.challenges,.badges{max-width:1100px;margin:0 auto}.challenges h2,.badges h2{margin:0 0 8px}.challenges-lead,.badges-lead{max-width:46em;margin:0 0 10px;line-height:1.5}.challenges-notice{color:var(--brass-ink);min-height:1.4em;margin:0 0 6px}.challenge-cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.challenge-card{background:var(--cream);border:2px solid var(--line-strong);border-radius:14px;flex-direction:column;gap:6px;padding:12px;display:flex}.challenge-card[data-solved=true]{border:3px solid var(--ink)}.challenge-card h3{margin:0;font-size:1.15rem}.challenge-card p{margin:0;line-height:1.4}.challenge-cast{color:var(--ink-soft);font-size:.92rem}.challenge-state{font-weight:700}.challenge-card button{align-self:flex-start;margin-top:4px}.badge-group{margin-top:18px}.badge-group h3{margin:0 0 8px;font-size:1.15rem}.badge-list{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.badge-item{background:var(--cream);border:2px solid var(--line-strong);border-radius:12px;align-items:flex-start;gap:10px;padding:10px;display:flex}.badge-medal{border:3px dashed var(--line-strong);width:40px;height:40px;color:var(--ink);border-radius:50%;flex:none;place-items:center;font-size:1.3rem;line-height:1;display:grid}.badge-medal[data-earned=true]{border:3px solid var(--ink);background:var(--glow)}.badge-text{flex-direction:column;gap:2px;min-width:0;display:flex}.badge-state{font-size:.85rem;font-weight:700}.badge-item[data-earned=false] .badge-state{color:var(--ink-soft)}.badge-hint{color:var(--ink-soft);font-size:.88rem;line-height:1.35}.badges-clear{flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px;display:flex}.badges-clear p{margin:0}.home-more a{color:var(--ink);font-weight:600}
