.page--room{flex-direction:column;height:100svh;display:flex;overflow:clip}.staff-strip{color:var(--fire);font-size:calc(14px * var(--text-scale,1));background:#2d2011;margin:0;padding:6px 20px;font-weight:600;line-height:1.4}.staff-strip a{color:var(--parchment)}.room{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 340px;gap:22px;width:min(1240px,100%);min-height:0;margin:0 auto;padding:18px 20px;display:grid}.room__talk{flex-direction:column;height:100%;min-height:0;display:flex}.room__side{align-content:start;gap:10px;height:100%;min-height:0;display:grid;overflow-y:auto}.room__credit{text-align:center;font-size:calc(12px * var(--text-scale,1));color:var(--muted);margin:0}.intro{place-self:center;gap:14px;max-width:720px;margin:auto 0;padding:22px 24px 24px;display:grid;overflow-y:auto}.intro__title{font-family:var(--font-display);letter-spacing:.02em;overflow-wrap:break-word;color:var(--parchment);font-size:clamp(42px,6vw,64px);font-weight:400;line-height:.92}.intro__topic p,.intro__goals p{margin:0 0 8px}.intro__topic{color:var(--text)}.intro__goals h2{font-size:calc(13px * var(--text-scale,1));color:var(--ember);margin-bottom:6px}.intro__goals{color:var(--muted)}.intro__how{color:var(--text);gap:4px;margin:4px 0 0;padding-left:20px;display:grid}.intro__privacy{color:var(--faint);font-size:calc(14px * var(--text-scale,1));margin:0}.intro__start{min-height:52px;font-size:calc(18px * var(--text-scale,1));justify-self:start;padding:4px 30px}.log{flex:1;min-height:0;padding:4px 6px 16px 0;position:relative;overflow-y:auto}.log__inner{flex-direction:column;gap:16px;display:flex}.line{align-items:flex-start;gap:10px;display:flex}.line--student{justify-content:flex-end}.bubble{max-width:min(680px,88%);font-size:calc(17px * var(--text-scale,1));overflow-wrap:anywhere;padding:10px 14px;line-height:1.6}.bubble p{margin:0 0 10px}.bubble p:last-child,.bubble ul:last-child,.bubble ol:last-child,.bubble pre:last-child{margin-bottom:0}.bubble ul,.bubble ol{margin:0 0 10px;padding-left:22px}.bubble li{margin:2px 0}.bubble code{background:#00000059;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.bubble pre{border-left:3px solid var(--ember);background:#0b0807;margin:0 0 10px;padding:10px 12px;overflow-x:auto}.bubble pre code{font-size:calc(14px * var(--text-scale,1));background:0 0;padding:0;line-height:1.5}.bubble strong{color:var(--fire)}.bubble--tutor{color:var(--text);background-color:#1f1814}.bubble--student{color:var(--parchment-ink)}.bubble--student strong{color:inherit}.bubble--student code,.bubble--student pre{background:#2b1d141f}.bubble--student pre{border-left-color:var(--sand-lo)}.wisp{width:30px;height:42px;image-rendering:pixelated;filter:drop-shadow(0 0 10px #7cc8ff99);background:url(/art/wisp-face.png) 0 0/120px 42px no-repeat;flex:none;margin:4px 6px 0 4px;animation:.62s steps(4,end) infinite wisp}@keyframes wisp{to{background-position:-120px 0}}.thinking{align-items:center;gap:6px;min-height:44px;display:inline-flex}.thinking span{background:var(--crystal);width:8px;height:8px;animation:1.1s steps(2,end) infinite blink}.thinking span:nth-child(2){animation-delay:.18s}.thinking span:nth-child(3){animation-delay:.36s}@keyframes blink{50%{opacity:.2}}.caret{vertical-align:text-bottom;background:var(--fire);width:9px;height:1.05em;margin-left:2px;animation:.8s steps(2,end) infinite blink;display:inline-block}.done{text-align:center;font-size:calc(15px * var(--text-scale,1));align-self:center;gap:4px;padding:10px 18px;display:grid}.done strong{font-size:calc(17px * var(--text-scale,1))}.composer{border-top:2px solid var(--line);grid-template-columns:minmax(0,1fr);gap:8px;padding-top:10px;display:grid}.composer__commands{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.composer__spacer{flex:1}.composer__restart{color:var(--faint);font:inherit;font-size:calc(13px * var(--text-scale,1));cursor:pointer;background:0 0;border:0;padding:6px 2px;text-decoration:underline}.composer__restart:hover{color:var(--text)}.composer__row{align-items:flex-end;gap:10px;padding:4px 4px 4px 8px;display:flex}.composer__box{resize:vertical;min-width:0;min-height:52px;max-height:40vh;color:var(--parchment-ink);font:inherit;font-size:calc(17px * var(--text-scale,1));background:0 0;border:0;outline:none;flex:1;padding:6px 2px;line-height:1.5}.composer__box::placeholder{color:#6f5640}.composer__row:focus-within{outline:3px solid var(--focus);outline-offset:2px}html[data-contrast=high] .composer__row:focus-within{outline-width:4px}@media (forced-colors:active){.composer__row:focus-within{outline-color:highlight}}.composer__send{min-width:92px}.map{gap:12px;padding:12px 14px 14px;display:grid}.map__head{gap:6px;display:grid}.map__body{gap:12px;display:grid}.map__toggle{color:var(--fire);font-family:var(--font-pixel);font-size:calc(12px * var(--text-scale,1));cursor:pointer;background:0 0;border:0;padding:4px 0;text-decoration:underline;display:none}.map__title{font-size:calc(17px * var(--text-scale,1));color:var(--parchment);font-weight:700;line-height:1.3}.map__phase{font-family:var(--font-pixel);font-size:calc(11px * var(--text-scale,1));color:var(--crystal);border:2px solid;justify-self:start;padding:2px 7px}.map__phase--teaching{color:var(--fire)}.map__phase--final{color:var(--ember)}.map__phase--done{color:var(--moss)}.map__overall{font-family:var(--font-pixel);font-size:calc(12px * var(--text-scale,1));color:var(--muted);grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.map__overall-bar{border:2px solid var(--line);background:#0d0a09;height:12px}.map__overall-bar span{background:repeating-linear-gradient(90deg, var(--ember) 0 6px, var(--fire) 6px 8px);height:100%;transition:width .6s steps(12,end);display:block}.map__overall-value{color:var(--parchment);text-align:right;min-width:3.2em}.map__empty{color:var(--muted);font-size:calc(14px * var(--text-scale,1));margin:0}.map__rows{gap:9px;margin:0;padding:0;list-style:none;display:grid}.map__row{grid-template-columns:1fr auto auto;grid-template-areas:"name name name""blocks blocks level";align-items:center;gap:4px 8px;display:grid;position:relative}.map__name{font-size:calc(14px * var(--text-scale,1));color:var(--text);grid-area:name;align-items:center;gap:6px;line-height:1.3;display:flex}.map__row--focus .map__name{color:var(--fire)}.map__torch{width:16px;height:16px;image-rendering:pixelated;background:url(/art/fire.png) 50%/16px 16px no-repeat;flex:none;animation:.5s steps(2,end) infinite flicker}@keyframes flicker{50%{filter:brightness(1.25);transform:translateY(-1px)}}.map__blocks{grid-area:blocks;grid-template-columns:repeat(5,1fr);gap:3px;display:grid}.map__blocks i{height:12px;box-shadow:inset 0 0 0 2px var(--line);background:#15100d;display:block;position:relative}.map__blocks i[data-on]{box-shadow:inset 0 -3px #00000059}.map__blocks i[data-level="1"]{background:#7a4a2a}.map__blocks i[data-level="2"]{background:#b0642c}.map__blocks i[data-level="3"]{background:var(--ember)}.map__blocks i[data-level="4"]{background:var(--fire)}.map__blocks i[data-level="5"]{background:var(--moss)}.map__blocks i[data-goal]:after{content:"";background:var(--parchment);width:2px;position:absolute;top:-4px;bottom:-4px;right:-3px}.map__level{font-family:var(--font-pixel);font-size:calc(12px * var(--text-scale,1));color:var(--muted);text-align:right;grid-area:level;min-width:2.6em}.map__legend{font-size:calc(13px * var(--text-scale,1));color:var(--muted)}.map__legend summary{cursor:pointer;font-family:var(--font-pixel);font-size:calc(12px * var(--text-scale,1));color:var(--muted)}.map__legend ol{gap:2px;margin:8px 0;padding:0;list-style:none;display:grid}.map__legend b{width:1.4em;color:var(--fire);font-family:var(--font-pixel);display:inline-block}.map__legend p{margin:0}@media (max-width:900px){.page--room{height:auto;min-height:100svh;overflow:visible}.room{grid-template-rows:auto;grid-template-columns:minmax(0,1fr);gap:12px;padding:12px}.room__side{order:-1;height:auto;overflow:visible}.map{gap:8px;padding:8px 12px 10px}.map__head{grid-template-columns:1fr auto;align-items:center}.map__title{font-size:calc(15px * var(--text-scale,1));grid-column:1/-1}.map__toggle{justify-self:end;display:inline-block}.map:not([data-open]) .map__body{display:none}.room__talk{height:auto;min-height:70svh}.log{max-height:none;overflow:visible}.composer{background:var(--night);padding-bottom:10px;position:sticky;bottom:0}.bubble{max-width:100%;font-size:calc(16px * var(--text-scale,1))}.wisp{background-size:80px 28px;width:20px;height:28px;margin:4px 2px 0 0}@keyframes wisp{to{background-position:-80px 0}}}
