#mood-scene svg{width:100%;height:100%;display:block}.overlay-fade{animation:overlayIn 1.2s ease both}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0e0c0a;--surface: #1a1713;--border: #2e2a25;--amber: #f5a623;--cream: #f5ede0;--muted: #6b6050;--text: #e8ddd0;--green: #3ecf8e;--ai: #a78bfa;--mood-color: transparent;--mood-bg: #0e0c0a}html{height:100%}body{display:flex;flex-direction:column;min-height:100vh;background:var(--bg);color:var(--ink);font-family:Nunito,sans-serif;overflow-x:hidden}#mood-canvas{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .8s ease}@media (max-width: 768px){#mood-canvas{opacity:.25!important}#mood-scene{opacity:.2!important}body:before{opacity:.5}}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 100%,var(--mood-bg) 0%,transparent 65%);transition:background 1.5s ease,opacity 1s ease}.screen{display:none;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;width:100%;padding:16px 20px;gap:14px;position:relative;z-index:2;overflow:hidden}#screen-write{padding:12px 18px 24px;gap:12px}.screen.active{display:flex}.back{align-self:flex-start;background:var(--surface);border:1.5px solid var(--border);border-radius:10px;padding:8px 14px;color:var(--muted);font-size:.85rem;font-weight:700;text-decoration:none;z-index:100;transition:all .2s}.back:active{transform:scale(.95);background:var(--border)}.title-main{font-family:Lora,serif;font-size:clamp(2.5rem,10vw,4rem);color:var(--cream);line-height:1;text-align:center}.title-main em{color:var(--amber);font-style:italic}.title-sub{font-size:.9rem;color:var(--muted);max-width:300px;line-height:1.6;text-align:center}.title-sub strong{color:var(--amber)}.btn{display:flex;align-items:center;justify-content:center;padding:15px 28px;border-radius:10px;border:none;font-family:DM Sans,sans-serif;font-size:1rem;font-weight:700;cursor:pointer;width:100%;max-width:340px;-webkit-tap-highlight-color:transparent;transition:all .15s}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.4;cursor:default}.btn-amber{background:var(--amber);color:#1e130a}.btn-ghost{background:transparent;color:var(--muted);border:1.5px solid var(--border)}.setup-group{width:100%;max-width:340px;text-align:left}.setup-group label{display:block;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:8px}.custom-select{width:100%;padding:14px;border-radius:12px;border:2px solid var(--border);background:var(--surface);font-family:inherit;font-size:1rem;font-weight:700;color:var(--text);outline:none;cursor:pointer;appearance:none}.custom-select:focus{border-color:var(--amber)}.join-group{display:flex;gap:8px;width:100%;max-width:340px}.join-group input{flex:1;padding:14px;border-radius:12px;border:2px solid var(--border);background:var(--surface);font-family:DM Mono,monospace;font-size:1.2rem;text-align:center;text-transform:uppercase;outline:none;color:#fff;min-width:0}.join-group input:focus{border-color:var(--amber)}.join-group .btn{width:auto;padding:14px 20px;max-width:none;flex-shrink:0}@media (max-width: 360px){.join-group{flex-direction:column;max-width:300px}.join-group .btn{width:100%}}.code-big{font-family:DM Mono,monospace;font-size:3.5rem;color:var(--amber);letter-spacing:8px}.story-box{background:#161412b3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:2px solid var(--border);border-radius:16px;padding:16px 20px 8px;width:100%;max-width:460px;flex:1;min-height:100px;overflow-y:auto;scrollbar-width:none;position:relative}#lobby-starter-container,#guest-starter-container{flex:none;min-height:unset;padding:16px 20px;margin:10px 0}.story-lbl{position:sticky;top:-16px;left:0;right:0;background:#1a1713f2;padding:4px 0;font-size:.65rem;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--amber);margin-bottom:4px;z-index:5;border-bottom:1px solid rgba(245,166,35,.2)}.story-box::-webkit-scrollbar{display:none}.story-box-amber{border-color:var(--amber);background:#f5a6231a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.story-lbl{font-size:.62rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px}.story-lbl-amber{color:var(--amber)}#story-display,#lobby-starter-preview,#guest-starter-preview{font-family:Lora,serif;font-size:1.15rem;line-height:1.6;font-style:italic;color:#b5b5b5}.sent-starter{color:var(--muted)}.sent-p1{color:var(--amber)}.sent-p2{color:var(--green)}.sent-ai{color:var(--ai)}.placeholder{color:var(--muted)}.react-inline{font-style:normal;font-size:.82em;letter-spacing:-1px}.progress-wrap{width:100%;max-width:460px;display:flex;flex-direction:column;gap:4px}.progress-bar-bg{width:100%;height:4px;background:var(--border);border-radius:99px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--amber);border-radius:99px;transition:width .5s ease}.progress-row{display:flex;justify-content:space-between;align-items:center}.turn-indicator{font-size:.85rem;font-weight:700}.progress-label{font-size:.9rem;font-weight:500;color:var(--muted);opacity:.6}.textarea{width:100%;max-width:460px;padding:14px;border-radius:12px;border:1.5px solid var(--border);background:#1a1713;color:var(--cream);font-family:Lora,serif;font-size:1rem;line-height:1.4;font-style:italic;outline:none;resize:none;min-height:80px;transition:border-color .2s}.textarea:focus{border-color:var(--amber)}#mood-panel,#react-panel,#reactor-panel{width:100%;max-width:460px;display:none;flex-direction:column;gap:6px;background:#161412b3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1.5px solid var(--border);border-radius:16px;padding:12px 0}.mood-btns,.react-btns{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;padding:4px 8px;scrollbar-width:none;scroll-behavior:smooth}.mood-btns::-webkit-scrollbar,.react-btns::-webkit-scrollbar{display:none}.mood-btn{flex:0 0 100px;background:#111;border:1.5px solid var(--border);border-radius:10px;padding:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .2s}.mood-btn.active{background:var(--amber);border-color:var(--amber)}.mood-btn.active .mood-name{color:#1e130a}.mood-emoji{font-size:1.2rem}.mood-name{font-size:.65rem;font-weight:800;color:var(--muted)}.react-emoji-btn{flex:0 0 42px;height:42px;background:#111;border:1px solid var(--border);border-radius:8px;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.3rem;transition:all .2s}.react-emoji-btn:active{transform:scale(.9);background:var(--amber)}#word-bank-panel{width:100%;max-width:460px;padding:4px;display:none;align-items:center;justify-content:center;gap:8px}#word-bank-label{font-size:.55rem;font-weight:800;text-transform:uppercase;color:var(--amber);opacity:.8;white-space:nowrap}#word-bank-list{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}.word-tag{color:var(--amber);padding:2px 6px;font-size:.65rem;font-weight:700;opacity:.8;text-transform:uppercase;letter-spacing:.5px}.waiting-box{background:#111;border-radius:16px;padding:16px 20px;width:100%;max-width:460px;color:var(--muted);font-style:italic;font-size:1rem;text-align:left}#reactor-panel{width:100%;max-width:460px;background:#1a1713;border-radius:20px;padding:16px;flex-direction:column;gap:12px;display:none}.react-panel-label{font-size:.68rem;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:8px}.scroll-wrap{flex:1;background:#111;border-radius:12px;overflow:hidden;display:flex;align-items:center;min-width:0}.scroll-viewport{width:100%;overflow:hidden}.scroll-arrow{width:24px;display:flex;align-items:center;justify-content:center;color:var(--amber);font-size:1.6rem;cursor:pointer;opacity:.2;transition:opacity .2s;-webkit-tap-highlight-color:transparent;user-select:none;pointer-events:none}.emoji-board::-webkit-scrollbar,.fx-board::-webkit-scrollbar{display:none}.emoji-board,.fx-board{display:flex;flex-wrap:nowrap;gap:6px;padding:6px;width:100%;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth}.nudge-btn{flex:0 0 40px;height:40px;aspect-ratio:1;font-size:1.1rem;padding:4px;background:#1a1713}.fx-btn{flex:0 0 85px;white-space:nowrap;font-size:.6rem;padding:8px;background:#1a1713}@media (max-width: 600px){.nudge-btn{flex:0 0 calc((100% - 18px)/4);font-size:1.2rem}.fx-btn{flex:0 0 calc((100% - 6px)/2);font-size:.65rem}}.nudge-btn,.fx-btn{background:#111;border:none;border-radius:12px;padding:12px;cursor:pointer;font-size:1.4rem;transition:all .2s;display:flex;align-items:center;justify-content:center}.fx-btn{font-size:.75rem;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--text);justify-content:flex-start;gap:10px;padding:14px}.nudge-btn:active,.fx-btn:active{background:#222;transform:scale(.95)}.fx-flash{position:fixed;inset:0;background:#fff;z-index:1000;animation:flashAnim .6s ease-out forwards;pointer-events:none}@keyframes flashAnim{0%{opacity:0}10%{opacity:.8}to{opacity:0}}.fx-bolt{position:fixed;top:0;width:80px;height:100vh;z-index:1001;pointer-events:none;animation:boltAnim .4s ease-out forwards}@keyframes boltAnim{0%{transform:scaleY(0);opacity:1}to{transform:scaleY(1);opacity:0}}.fx-quake{animation:quakeAnim .5s linear}@keyframes quakeAnim{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px,-5px)}20%,40%,60%,80%{transform:translate(5px,5px)}}.fx-sparkle{position:fixed;z-index:1000;pointer-events:none;animation:sparkleAnim 1s ease-out forwards;font-size:1.5rem}@keyframes sparkleAnim{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}.fx-heart{position:fixed;bottom:-40px;z-index:1000;pointer-events:none;font-size:2rem;animation:heartAnim 2s ease-out forwards}@keyframes heartAnim{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(-100vh) rotate(360deg);opacity:0}}.fx-void{position:fixed;inset:0;background:#000;z-index:2000;animation:voidAnim 1.5s ease-in-out forwards;pointer-events:none}@keyframes voidAnim{0%{opacity:0}30%{opacity:1}70%{opacity:1}to{opacity:0}}.fx-confetti{position:fixed;z-index:1000;width:10px;height:10px;pointer-events:none;animation:confettiAnim 2s ease-out forwards}@keyframes confettiAnim{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--tx),var(--ty)) rotate(720deg);opacity:0}}.fx-fog{position:fixed;inset:0;background:#ffffff1a;backdrop-filter:blur(4px);z-index:1500;animation:fogAnim 4s ease-in-out forwards;pointer-events:none}@keyframes fogAnim{0%{opacity:0;transform:translate(-20px)}30%{opacity:1;transform:translate(0)}70%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}.fx-rainbow{position:fixed;bottom:100px;left:50%;transform:translate(-50%);width:300px;z-index:1500;pointer-events:none;animation:rainbowAnim 3s ease-in-out forwards}@keyframes rainbowAnim{0%{opacity:0;transform:translate(-50%) scale(.8)}20%{opacity:.6;transform:translate(-50%) scale(1)}80%{opacity:.6;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%) scale(1.1)}}#react-panel{width:100%;max-width:460px;background:#1a1713e6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1.5px solid var(--border);border-radius:14px;padding:14px 16px;flex-direction:column;gap:10px;display:none}.react-panel-label{font-size:.7rem;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}.react-item{display:flex;flex-direction:column;gap:6px;padding-bottom:10px;border-bottom:1px solid var(--border)}.react-item:last-child{border-bottom:none;padding-bottom:0}.react-who{font-size:.6rem;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}.react-text{font-family:Lora,serif;font-size:.88rem;font-style:italic;color:var(--text);line-height:1.5;border-left:2px solid var(--border);padding-left:10px;margin:2px 0}.emoji-floater{position:fixed;bottom:120px;font-size:2rem;z-index:999;animation:floatUp 1.8s ease-out forwards;pointer-events:none}@keyframes floatUp{0%{transform:translateY(0) scale(1);opacity:1}70%{transform:translateY(-120px) scale(1.3);opacity:.9}to{transform:translateY(-180px) scale(.8);opacity:0}}#screen-ending-wait{justify-content:center;text-align:center;gap:20px}.typing-dots{display:inline-flex;gap:4px}.typing-dots span{width:8px;height:8px;border-radius:50%;background:var(--amber);animation:dot 1.2s ease-in-out infinite}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes dot{0%,to{transform:translateY(0);opacity:.4}50%{transform:translateY(-6px);opacity:1}}#screen-book{background:linear-gradient(160deg,#1a1208,#0a0806);justify-content:center}.book-wrap{width:100%;max-width:480px;background:linear-gradient(160deg,#f5ede0,#ede0cc);border-radius:4px 16px 16px 4px;box-shadow:-4px 0 #c4935a,-8px 0 #a07840,0 20px 60px #0009;display:flex;flex-direction:column;height:68vh;overflow:hidden}.book-header{background:linear-gradient(135deg,#8b5e3c,#6b4423);padding:14px 22px;display:flex;align-items:center;justify-content:space-between}.book-title{font-family:Lora,serif;font-size:.95rem;font-style:italic;color:#f5ede0}.book-page-num{font-size:.68rem;color:#c4a06a;font-family:DM Mono,monospace}.book-content{flex:1;padding:16px 22px 14px;font-family:Lora,serif;font-size:.95rem;line-height:1.55;display:flex;flex-direction:column;gap:10px;position:relative;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.1) transparent}.book-content::-webkit-scrollbar{width:4px}.book-content::-webkit-scrollbar-thumb{background:#0000001a;border-radius:10px}.book-content.page-flip{animation:pageFlip .4s ease both}@keyframes pageFlip{0%{opacity:0;transform:perspective(700px) rotateY(8deg)}to{opacity:1;transform:perspective(700px) rotateY(0)}}.book-sentence{font-style:italic;color:#2a1a0a;display:flex;align-items:flex-start;gap:12px;padding-bottom:14px;border-bottom:1px solid rgba(0,0,0,.06)}.book-sentence:last-child{border-bottom:none;padding-bottom:0}.book-glyph{font-style:normal;font-size:.82rem;flex-shrink:0;margin-top:5px;opacity:.45}.book-sent-starter{color:#5a4030}.book-sent-p1 .book-glyph{color:#c07832;opacity:1}.book-sent-p2 .book-glyph{color:#2a7a50;opacity:1}.book-sent-ai{font-weight:600;color:#1a0a2a}.book-sent-ai .book-glyph{color:#7c3aed;opacity:1}.book-footer{padding:12px 22px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid rgba(0,0,0,.1);background:#00000008}.book-nav-btn{background:none;border:none;font-family:DM Sans,sans-serif;font-size:.85rem;font-weight:700;color:#8b5e3c;cursor:pointer;padding:8px 12px;border-radius:8px;transition:all .15s;-webkit-tap-highlight-color:transparent}.book-nav-btn:hover{background:#0000000f}.book-nav-btn:disabled{opacity:.25;cursor:default}.book-legend{display:flex;gap:16px;font-size:.72rem;color:#8b6a4a;font-family:DM Sans,sans-serif}.book-legend span{display:flex;align-items:center;gap:4px}.book-done-btns{display:flex;gap:10px;width:100%;max-width:480px;margin-top:10px}.book-done-btns .btn{max-width:none;flex:1}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.screen.active>*{animation:slideUp .3s ease both}.screen.active>*:nth-child(2){animation-delay:.05s}.screen.active>*:nth-child(3){animation-delay:.1s}.screen.active>*:nth-child(4){animation-delay:.15s}.disconnect-banner{position:fixed;top:16px;left:50%;transform:translate(-50%);background:#f43f5e;color:#fff;padding:12px 24px;border-radius:99px;font-weight:700;font-size:.9rem;z-index:9999;box-shadow:0 4px 12px #f43f5e4d;display:none;align-items:center;gap:8px}.disconnect-spinner{border:2.5px solid rgba(255,255,255,.3);border-top:2.5px solid white;border-radius:50%;width:16px;height:16px;display:inline-block;animation:disconnect-spin 1s linear infinite}@keyframes disconnect-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}[data-joining=true] .screen{display:none!important}[data-joining=true] #screen-loading{display:flex!important;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:100vh}.joining-spinner{border:3.5px solid rgba(244,99,30,.15);border-top:3.5px solid var(--orange, #f4631e);border-radius:50%;width:44px;height:44px;animation:joining-spin .8s linear infinite;margin-bottom:20px}@keyframes joining-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
