:root{color-scheme:light;--paper: #f5f2ea;--paper-soft: #fbfaf6;--ink: #151515;--ink-soft: #4a4a47;--line: rgba(21, 21, 21, .16);--line-strong: rgba(21, 21, 21, .32);--night: #151617;--moon: #e8edf2;--lantern: #c99b62;--panel: rgba(251, 250, 246, .94);--shadow: 0 20px 70px rgba(20, 20, 18, .18);--sans: "Inter", "IBM Plex Sans TC", "Noto Sans TC", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--sans)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--paper);color:var(--ink)}button,input,textarea{font:inherit}button{cursor:pointer}img{display:block;max-width:100%}.boot-screen{min-height:100vh;display:grid;place-items:center;background:var(--night);color:var(--paper-soft);font-weight:800}.entry-screen{min-height:100vh}.portal-entry{position:fixed;inset:0;display:block;width:100%;height:100dvh;min-height:100svh;margin:0;overflow:hidden;padding:clamp(1.1rem,4vw,3.5rem);background:#0f1012;color:#f7f4ec;font-family:var(--sans)}.portal-entry:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#090a0cd1,#090a0c7a,#090a0c14 68%),linear-gradient(180deg,#090a0c1f,#090a0cc2);pointer-events:none}.character-screen{position:fixed;inset:0;display:grid;grid-template-columns:minmax(18rem,29rem) minmax(0,1fr);gap:clamp(1rem,4vw,4rem);width:100%;height:100dvh;min-height:100svh;overflow:hidden;padding:clamp(1.2rem,4vw,3.6rem);background:linear-gradient(90deg,#040405e0,#04040594 34%,#0404050a 74%),url(/assets/character/character-choosing-bg.png) center / cover no-repeat;color:#f7f4ec}.character-screen:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#00000014,#00000047),radial-gradient(circle at 76% 72%,rgba(247,244,236,.12),transparent 14rem);pointer-events:none}.character-setup-panel,.character-preview-stage{position:relative;z-index:2}.character-setup-panel{align-self:center;display:grid;gap:clamp(.85rem,1.6vw,1.25rem);width:min(100%,26rem)}.character-setup-panel .eyebrow{color:#f7f4ec8f;font-size:.62rem;font-weight:600;letter-spacing:.18em}.character-setup-panel h1{margin:0;color:#f7f4ec;font-size:clamp(2rem,4.4vw,4.2rem);font-weight:720;letter-spacing:.06em;line-height:.95}.character-form{display:grid;gap:1.05rem}.character-form label,.character-choice-field legend{color:#f7f4ecad;font-size:.72rem;font-weight:400;letter-spacing:.08em;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.character-form input{min-height:2.35rem;border:0;border-bottom:1px solid rgba(247,244,236,.56);border-radius:0;background:transparent;color:#f7f4ec;padding:.2rem 0 .55rem;font-size:1.08rem;font-weight:400;letter-spacing:0;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.character-form input:focus{border-bottom-color:#f7f4ec;outline:none;box-shadow:none}.character-choice-field{display:grid;gap:.62rem}.character-choice-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.68rem}.character-choice-card{position:relative;display:grid;min-height:9.8rem;align-content:end;overflow:hidden;border:1px solid rgba(247,244,236,.2);border-radius:0;background:#03030461;color:#f7f4ecb8;padding:.75rem;text-align:left;transition:border-color .22s ease,background .22s ease,color .22s ease,transform .22s cubic-bezier(.2,.82,.22,1)}.character-choice-card:hover,.character-choice-card:focus-visible,.character-choice-card.is-active{border-color:#f7f4ecc7;background:#f7f4ec14;color:#f7f4ec;outline:none}.character-choice-card:active{transform:translateY(1px)}.character-choice-card span,.character-choice-card small{position:relative;z-index:2;text-shadow:0 .5rem 1.2rem rgba(0,0,0,.7)}.character-choice-card span{font-size:1.2rem;font-weight:600}.character-choice-card small{color:currentColor;font-size:.68rem;font-weight:300;opacity:.62}.character-choice-card img{position:absolute;right:-.45rem;bottom:.1rem;z-index:1;width:5.6rem;opacity:.68;filter:drop-shadow(0 .7rem 1.1rem rgba(0,0,0,.62));transition:opacity .22s ease,transform .22s cubic-bezier(.2,.82,.22,1)}.character-choice-card.is-active img{opacity:1;transform:translateY(-.18rem) scale(1.05)}.character-actions{display:grid;grid-template-columns:minmax(5.5rem,.34fr) minmax(0,1fr);gap:.72rem;margin-top:.4rem}.character-back-button,.character-form .primary-button{min-height:3rem;border-radius:0;background:transparent;color:#f7f4ec;font-weight:550;letter-spacing:.03em;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.6)}.character-back-button{border:0;border-bottom:1px solid rgba(247,244,236,.42);color:#f7f4ec8f}.character-form .primary-button{border-color:#f7f4ecc2}.character-back-button:hover,.character-back-button:focus-visible,.character-form .primary-button:hover,.character-form .primary-button:focus-visible{background:#f7f4ec1a;color:#f7f4ec}.character-preview-stage{align-self:stretch;min-width:0}.character-preview-floor{position:absolute;left:43%;bottom:10%;width:min(34rem,52vw);aspect-ratio:1 / .18;transform:translate(-50%);border-radius:50%;background:radial-gradient(ellipse at center,rgba(247,244,236,.24),rgba(247,244,236,.08) 34%,transparent 68%);filter:blur(.1rem);opacity:.7;pointer-events:none;animation:characterStepShadow .9s ease-in-out infinite}.character-preview-actor{position:absolute;left:min(44vw,55%);bottom:11%;display:grid;place-items:center;width:min(24rem,32vw);aspect-ratio:1 / 1.25;transform:translate(-50%)}.character-summon-ring{position:absolute;left:50%;bottom:5%;width:82%;aspect-ratio:1 / .24;border:1px solid rgba(247,244,236,.22);border-radius:50%;box-shadow:0 0 1.8rem #f7f4ec1f,inset 0 0 1.4rem #f7f4ec14;transform:translate(-50%);animation:characterRing 3.8s ease-in-out infinite}.character-dust-field{position:absolute;inset:0;z-index:4;pointer-events:none}.character-dust{position:absolute;left:var(--dust-x);top:var(--dust-y);width:var(--dust-size);height:var(--dust-size);border-radius:50%;background:#f7f4eceb;box-shadow:0 0 calc(var(--dust-size) * 2.5) #f7f4ecd1,0 0 calc(var(--dust-size) * 7) #c99b626b;opacity:0;animation:characterDustGather .98s cubic-bezier(.2,.82,.22,1) forwards;animation-delay:var(--dust-delay)}.character-material{position:relative;z-index:3;width:min(17rem,23vw);aspect-ratio:256 / 341;animation:characterMaterialize .98s cubic-bezier(.2,.82,.22,1) both}.character-sprite-stack{position:absolute;inset:0;transform-origin:50% 100%;animation:characterWalkBody .9s cubic-bezier(.42,0,.2,1) infinite;will-change:transform}.character-walk-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transform:scaleX(var(--frame-scale-x, 1));transform-origin:50% 100%;filter:drop-shadow(0 1.4rem 1.5rem rgba(0,0,0,.58));will-change:opacity}.character-walk-frame-1{animation:characterWalkOne .9s steps(1,end) infinite}.character-walk-frame-2{animation:characterWalkTwo .9s steps(1,end) infinite}.character-walk-frame-3{animation:characterWalkThree .9s steps(1,end) infinite}.character-walk-frame-4{animation:characterWalkFour .9s steps(1,end) infinite}.character-walk-frame-5{animation:characterWalkFive .9s steps(1,end) infinite}.character-walk-frame-6{animation:characterWalkSix .9s steps(1,end) infinite}.character-eye-blink{position:absolute;left:57.5%;top:29.5%;z-index:5;width:.72rem;height:1.55rem;border-radius:999px;background:#050506eb;opacity:0;transform:scaleY(.1);animation:characterEyeBlink 4.6s ease-in-out infinite}.character-material-male .character-eye-blink{left:56.5%;top:29%}.portal-stage,.portal-layer{position:absolute;inset:0}.portal-stage{overflow:hidden}.portal-layer{background-repeat:no-repeat}.portal-bg{background-image:url(/assets/portal/portal-page-bg.webp);background-position:center;background-size:cover;opacity:.98}.portal-star-dust,.portal-animated-stars,.portal-tree-sparkles{position:absolute;inset:0;pointer-events:none}.portal-star-dust{z-index:2;mix-blend-mode:screen}.portal-animated-stars,.portal-tree-sparkles{z-index:3;mix-blend-mode:screen}.portal-dust-dot{position:absolute;left:var(--dust-x);top:var(--dust-y);width:var(--dust-size);height:var(--dust-size);border-radius:999px;background:rgba(255,255,255,var(--dust-alpha));box-shadow:0 0 calc(var(--dust-size) * 3.2) rgba(255,255,255,calc(var(--dust-alpha) * .7)),0 0 calc(var(--dust-size) * 8) rgba(232,220,200,calc(var(--dust-alpha) * .24));opacity:calc(var(--dust-alpha) * .72);animation:portalDustShimmer var(--dust-duration) ease-in-out infinite;animation-delay:var(--dust-delay);will-change:opacity,transform}.portal-star-dot{position:absolute;left:var(--star-x);top:var(--star-y);width:var(--star-size);height:var(--star-size);border-radius:999px;background:rgba(255,255,255,calc(.72 + var(--star-glow) * .22));box-shadow:0 0 calc(var(--star-size) * 3.6) rgba(255,255,255,calc(.42 + var(--star-glow) * .36)),0 0 calc(var(--star-size) * 10) rgba(232,220,200,calc(.16 + var(--star-glow) * .22)),0 0 calc(var(--star-size) * 18) rgba(255,255,255,calc(.08 + var(--star-glow) * .12));opacity:.34;animation:portalStarBlink var(--star-duration) ease-in-out infinite;animation-delay:var(--star-delay);will-change:opacity,transform}.portal-tree-diamond{position:absolute;left:var(--diamond-x);top:var(--diamond-y);width:var(--diamond-size);height:var(--diamond-size);border:1px solid rgba(255,255,255,.92);background:#ffffffb8;box-shadow:0 0 calc(var(--diamond-size) * 3) #ffffffd1,0 0 calc(var(--diamond-size) * 7) #c99b6261;opacity:.18;transform:rotate(45deg) scale(.74);animation:portalDiamondBlink var(--diamond-duration) ease-in-out infinite;animation-delay:var(--diamond-delay)}.entry-copy{align-self:end}.portal-copy,.portal-form{position:relative;z-index:4}.portal-language-toggle{position:absolute;top:clamp(1rem,3vw,2.2rem);right:clamp(1rem,3vw,2.2rem);z-index:4;display:inline-flex;align-items:center;gap:.32rem;color:#f7f4ec75;font-size:.68rem;font-weight:500;letter-spacing:.12em;line-height:1;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.portal-language-toggle button{min-height:2rem;border:0;border-bottom:1px solid transparent;border-radius:0;background:transparent;color:#f7f4ec85;padding:0 .08rem .14rem;font:inherit;letter-spacing:inherit;text-transform:uppercase}.portal-language-toggle button:hover,.portal-language-toggle button:focus-visible,.portal-language-toggle button.is-active{border-bottom-color:#f7f4ecc7;color:#f7f4ec;outline:none}.portal-copy{position:absolute;left:clamp(1.15rem,3vw,2.6rem);top:clamp(1.15rem,4.2vw,3rem);display:grid;gap:clamp(.55rem,.9vw,.85rem);width:min(18.5rem,24vw);padding:0;transform:none}.portal-copy:before{content:"";width:clamp(2.4rem,4vw,4rem);height:1px;background:#f7f4ec80}.eyebrow{margin:0 0 .45rem;color:var(--ink-soft);font-size:.76rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.portal-entry .eyebrow{margin:0;color:#f7f4ec94;font-size:clamp(.54rem,.72vw,.66rem);font-weight:700;letter-spacing:.16em}.entry-copy h1{margin:0;font-size:clamp(3.4rem,9vw,7.6rem);line-height:.9;letter-spacing:0}.portal-copy h1{color:#f7f4ec;font-size:clamp(1.65rem,2.45vw,2.65rem);font-weight:720;letter-spacing:.08em;line-height:1;text-shadow:0 0 1.8rem rgba(255,255,255,.12)}.entry-copy p:last-child{max-width:34rem;margin:1.1rem 0 0;color:var(--ink-soft);font-size:clamp(1.05rem,2.3vw,1.32rem);line-height:1.55}.portal-copy p:last-child{max-width:17.5rem;margin:0;color:#f7f4ec94;font-size:clamp(.74rem,.86vw,.88rem);font-weight:300;line-height:1.82}.entry-form,.place-panel,.modal-panel{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.entry-form{align-self:start;display:grid;gap:1rem;padding:clamp(1rem,3vw,1.35rem)}.portal-form{position:absolute;left:50%;top:50%;z-index:4;width:min(24.5rem,calc(100% - 2rem));transform:translate(-50%,-50%);gap:.86rem;border:0;border-radius:0;background:transparent;box-shadow:none;padding:0;-webkit-backdrop-filter:none;backdrop-filter:none}.portal-brand{display:grid;justify-items:center;gap:.5rem;margin-bottom:.75rem;padding-bottom:.35rem;border-bottom:0;filter:drop-shadow(0 .8rem 1.5rem rgba(0,0,0,.42))}.portal-brand img{width:min(10.8rem,58vw);height:auto;opacity:.94}.portal-brand span{color:#f7f4ec9e;font-size:.62rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase}.portal-auth-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;margin:-.18rem 0 .15rem}.portal-auth-toggle button{min-height:2.18rem;border:0;border-bottom:1px solid rgba(247,244,236,.26);border-radius:0;background:transparent;color:#f7f4ec7a;padding:.1rem 0 .44rem;font-size:.72rem;font-weight:400;letter-spacing:.16em;text-transform:uppercase;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.68);transition:border-color .22s ease,color .22s ease,transform .22s cubic-bezier(.2,.82,.22,1)}.portal-auth-toggle button:hover,.portal-auth-toggle button:focus-visible,.portal-auth-toggle button.is-active{border-bottom-color:#f7f4ecd1;color:#f7f4ec;outline:none}.portal-auth-toggle button:active{transform:translateY(1px)}label{display:grid;gap:.45rem;color:var(--ink-soft);font-size:.86rem;font-weight:800}.portal-form label,.portal-form legend{color:#f7f4ecbd;font-size:.76rem;font-weight:500;letter-spacing:.06em;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.portal-phone-field{display:grid;gap:.42rem}.portal-phone-row{display:grid;grid-template-columns:minmax(4.75rem,.34fr) minmax(0,1fr);gap:.8rem}.portal-phone-row label{gap:.28rem}.dial-code-picker{position:relative;display:grid;gap:.28rem}.portal-phone-row label span,.portal-phone-sublabel{color:#f7f4ec85;font-size:.62rem;font-weight:400;letter-spacing:.08em}.dial-code-trigger{display:flex;align-items:center;justify-content:space-between;gap:.45rem;min-height:2rem;border:0;border-bottom:1px solid rgba(247,244,236,.52);border-radius:0;background:transparent;color:#f7f4ec;padding:.2rem 0 .5rem;font-size:.98rem;font-weight:400;letter-spacing:0;line-height:1.2;text-align:left;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.dial-code-trigger:focus-visible{border-bottom-color:#f7f4ec;outline:none}.dial-code-trigger span:last-child{color:#f7f4ec6b;font-size:.86rem;line-height:1;transform:translateY(-.02rem);transition:color .2s ease,transform .22s cubic-bezier(.2,.82,.22,1)}.dial-code-trigger:hover span:last-child,.dial-code-trigger span:last-child.is-open{color:#f7f4ecd1}.dial-code-trigger span:last-child.is-open{transform:translateY(.02rem) rotate(180deg)}.dial-code-popover{position:absolute;left:50%;top:calc(100% - 1.08rem);z-index:8;width:max(14rem,calc(100% + 7.2rem));border:0;background:linear-gradient(180deg,#0000,#000000e0 18%,#000000fa,#000000e0 82%,#0000);box-shadow:0 1.4rem 3.2rem #0000006b;padding:.5rem 0;transform:translate(-50%,-50%);animation:dialRollerIn .2s cubic-bezier(.2,.82,.22,1) both}.dial-code-popover:before{top:0;background:linear-gradient(180deg,#0000,#121214b8)}.dial-code-popover:after{bottom:0;background:linear-gradient(0deg,#0000,#121214b8)}.dial-code-popover:before,.dial-code-popover:after,.dial-code-popover .dial-code-selection{content:"";position:absolute;pointer-events:none}.dial-code-popover:before,.dial-code-popover:after{left:0;right:0;z-index:3;height:2.35rem}.dial-code-popover .dial-code-selection{left:.55rem;right:.55rem;top:50%;z-index:1;height:2.74rem;border-radius:.62rem;background:#f7f4ec1c;box-shadow:inset 0 0 0 1px #f7f4ec0d,0 .7rem 1.6rem #00000047;transform:translateY(-50%)}.dial-code-scroll{position:relative;z-index:2;display:grid;max-height:13.2rem;overflow-y:auto;overscroll-behavior:contain;padding:4.95rem .85rem;scroll-behavior:smooth;scroll-padding-block:5rem;scroll-snap-type:y proximity;scrollbar-width:none;-webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 27%,#000 73%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0%,#000 27%,#000 73%,transparent 100%)}.dial-code-scroll::-webkit-scrollbar{display:none}.dial-code-scroll button{display:grid;grid-template-columns:4rem minmax(0,1fr);align-items:center;gap:.72rem;min-height:2.72rem;border:0;border-radius:0;background:transparent;color:#f7f4ec42;opacity:.7;padding:.3rem .78rem;scroll-snap-align:center;text-align:left;transform:scale(.88);transform-origin:center;transition:color .22s ease,opacity .22s ease,transform .22s cubic-bezier(.2,.82,.22,1)}.dial-code-scroll button:hover,.dial-code-scroll button:focus-visible,.dial-code-scroll button.is-active{color:#f7f4ec;opacity:1;outline:none;transform:scale(.98)}.dial-code-scroll button.is-active{background:transparent;transform:scale(1.08)}.dial-code-scroll button span:first-child{font-size:1.18rem;font-weight:500}.dial-code-scroll small{overflow:hidden;color:currentColor;font-size:.8rem;font-weight:300;opacity:.68;text-overflow:ellipsis;white-space:nowrap}input,textarea{width:100%;border:1px solid var(--line-strong);border-radius:6px;background:#ffffffbd;color:var(--ink);padding:.8rem .9rem;outline:none}.portal-form input{min-height:2rem;border:0;border-bottom:1px solid rgba(247,244,236,.52);border-radius:0;background:transparent;color:#f7f4ec;padding:.2rem 0 .5rem;font-size:.98rem;font-weight:400;letter-spacing:0;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.portal-form input:focus{border-bottom-color:#f7f4ec;outline:none;outline-offset:0;box-shadow:none}.portal-form input::placeholder{color:#f7f4ec57}.portal-form input:-webkit-autofill,.portal-form input:-webkit-autofill:hover,.portal-form input:-webkit-autofill:focus{-webkit-text-fill-color:#f7f4ec;caret-color:#f7f4ec;box-shadow:0 0 0 1000px transparent inset;transition:background-color 9999s ease-out}input{min-height:2.8rem}input:focus,textarea:focus,button:focus-visible{border-color:var(--ink);outline:3px solid rgba(201,155,98,.28);outline-offset:2px}.portal-form button:focus-visible{outline:1px solid rgba(247,244,236,.55);outline-offset:3px}fieldset{margin:0;padding:0;border:0}legend{margin-bottom:.55rem;color:var(--ink-soft);font-size:.86rem;font-weight:800}.choice-row{display:flex;flex-wrap:wrap;gap:.55rem}.choice-button{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:2.35rem;border:1px solid var(--line);border-radius:999px;background:#ffffff85;color:var(--ink);padding:0 .8rem}.portal-form .choice-button{min-height:2.15rem;border-color:#f7f4ec57;border-radius:0;background:transparent;color:#f7f4ecc2;padding:0 .7rem}.choice-button input{position:absolute;opacity:0;pointer-events:none}.choice-button:has(input:checked){border-color:var(--ink);background:#fff}.portal-form .choice-button:has(input:checked){border-color:#f7f4ec;background:#f7f4ec14;color:#f7f4ec}.primary-button,.icon-button,.moment-actions button,.place-list button,.round-button{border:1px solid var(--ink);border-radius:6px;font-weight:850}.primary-button{min-height:3rem;background:var(--ink);color:#fff;padding:0 1rem}.portal-form .primary-button{margin-top:.55rem;border-color:#f7f4ecc7;border-radius:0;background:transparent;color:#f7f4ec;font-weight:600;letter-spacing:.03em;text-transform:none;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.6)}.portal-form .primary-button:hover,.portal-form .primary-button:focus-visible{background:#f7f4ec1f}.portal-form .primary-button:disabled{cursor:wait;opacity:.5}.portal-auth-message{margin:-.2rem 0 0;color:#f7f4ecbd;font-size:.7rem;font-weight:300;letter-spacing:.03em;line-height:1.5;text-shadow:0 .45rem 1.4rem rgba(0,0,0,.72)}.world-app{min-height:100vh;padding:clamp(.8rem,2vw,1.35rem)}.top-bar{width:min(1460px,100%);margin:0 auto .85rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.top-bar h2{margin:0;font-size:clamp(1.5rem,3vw,2.3rem);line-height:1}.top-actions{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:flex-end}.icon-button,.moment-actions button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.5rem;background:var(--paper-soft);color:var(--ink);padding:0 .82rem}.world-layout{width:min(1460px,100%);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(19rem,24rem);gap:1rem;align-items:stretch}.game-shell{min-width:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--night);box-shadow:var(--shadow)}.game-canvas{width:100%;min-height:min(72vh,48rem);display:grid;place-items:center}.game-canvas canvas{display:block;max-width:100%}.game-loading{min-height:min(72vh,48rem);display:grid;place-items:center;color:var(--paper-soft);font-size:clamp(2rem,8vw,5rem);font-weight:850}.place-panel{display:flex;flex-direction:column;min-height:min(72vh,48rem);padding:clamp(1rem,2vw,1.25rem)}.place-panel h1{margin:0;font-size:clamp(1.45rem,2.6vw,2.05rem);line-height:1.08;letter-spacing:0}.place-panel p{color:var(--ink-soft);line-height:1.58}.moment-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.4rem}.moment-actions button{background:var(--ink);color:#fff}.soft-status{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.85rem 0}.place-list{display:grid;gap:.5rem;margin-top:auto}.place-list button{display:grid;gap:.15rem;justify-items:start;min-height:3rem;background:#ffffff8f;color:var(--ink);padding:.58rem .7rem;text-align:left}.place-list button.is-active{background:var(--ink);color:#fff}.place-list small{color:currentColor;opacity:.68}.exit-list{margin-top:auto}.exit-item{display:grid;gap:.15rem;min-height:3rem;border:1px solid var(--line);border-radius:6px;background:#ffffff85;color:var(--ink);padding:.58rem .7rem}.exit-item small{color:var(--ink-soft)}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:#0c0c0c6b;padding:1rem}.modal-panel{width:min(40rem,100%);max-height:calc(100vh - 2rem);overflow:auto;padding:1rem}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.modal-header h2{margin:0;font-size:1.55rem;line-height:1.1}.round-button{width:2.35rem;height:2.35rem;border-radius:999px;background:var(--ink);color:#fff;padding:0;font-size:1.4rem;line-height:1}.wish-form{display:grid;gap:.9rem}.checkbox-line{display:flex;align-items:center;gap:.55rem}.checkbox-line input{width:1rem;min-height:1rem}.wish-list{display:grid;gap:.7rem}.wish-item{border:1px solid var(--line);border-radius:6px;background:#fff;padding:.8rem}.wish-item p{margin:0;line-height:1.55}.wish-item small{display:block;margin-top:.45rem;color:var(--ink-soft)}.artwork-panel{width:min(60rem,100%)}.artwork-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.artwork-item{display:grid;gap:.55rem;margin:0}.artwork-item img{width:100%;border:1px solid var(--line);border-radius:6px;background:#fff}.artwork-item figcaption{display:grid;gap:.2rem;color:var(--ink-soft);font-size:.86rem;line-height:1.35}.artwork-item strong{color:var(--ink)}.world-map-panel{width:min(58rem,100%)}.journey-map{min-height:min(68vh,42rem);border:1px solid var(--line);border-radius:8px;background:radial-gradient(circle at 50% 20%,rgba(255,255,255,.12),transparent 12rem),#171819;overflow:hidden;padding:clamp(1rem,3vw,2rem)}.journey-island{position:relative;width:min(42rem,100%);aspect-ratio:1 / .82;margin:0 auto;border:1px solid rgba(255,255,255,.36);border-radius:48% 48% 42% 42%;background:linear-gradient(145deg,#fff3,#ffffff0a),#ebe5da;box-shadow:inset 0 34px 80px #ffffff3d,0 40px 80px #0000004d}.journey-path{position:absolute;left:50%;top:42%;width:30%;border-top:2px dashed rgba(21,21,21,.18);transform-origin:left center}.path-tree-forest{transform:rotate(180deg)}.path-tree-gallery{transform:rotate(0)}.path-tree-lake{transform:rotate(124deg)}.path-tree-cafe{transform:rotate(56deg)}.path-tree-hill{transform:rotate(-90deg)}.path-tree-train{transform:rotate(90deg)}.journey-node{position:absolute;left:var(--map-x);top:var(--map-y);display:grid;gap:.12rem;min-width:7rem;transform:translate(-50%,-50%);border:1px solid rgba(21,21,21,.22);border-radius:8px;background:#fbfaf6db;padding:.48rem .6rem;text-align:center;box-shadow:0 10px 24px #1515151a}.journey-node.is-current{border-color:var(--ink);box-shadow:0 0 0 3px #c99b623d,0 10px 24px #15151524}.journey-node strong{color:var(--ink);font-size:.9rem}.journey-node small{color:var(--ink-soft);font-size:.7rem;line-height:1.2}@keyframes dialRollerIn{0%{opacity:0;transform:translate(-50%,calc(-50% - .36rem)) scale(.985)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes characterMaterialize{0%{opacity:0;filter:blur(.55rem) brightness(1.45);transform:translateY(1.4rem) scale(.82)}46%{opacity:.78;filter:blur(.12rem) brightness(1.25)}to{opacity:1;filter:blur(0) brightness(1);transform:translateY(0) scale(1)}}@keyframes characterDustGather{0%{opacity:0;transform:translate3d(var(--dust-drift-x),var(--dust-drift-y),0) scale(.34)}40%{opacity:1;transform:translate3d(calc(var(--dust-drift-x) * .2),calc(var(--dust-drift-y) * .2),0) scale(1.15)}to{opacity:0;transform:translateZ(0) scale(1.9)}}@keyframes characterRing{0%,to{opacity:.42;transform:translate(-50%) scale(.98)}50%{opacity:.82;transform:translate(-50%) scale(1.04)}}@keyframes characterStepShadow{0%,to{opacity:.56;transform:translate(-50%) scaleX(.95)}50%{opacity:.76;transform:translate(-50%) scaleX(1.03)}}@keyframes characterWalkBody{0%,to{transform:translateZ(0) rotate(0)}8%{transform:translate3d(.04rem,-.08rem,0) rotate(.18deg)}16.66%{transform:translate3d(.08rem,-.24rem,0) rotate(.42deg)}25%{transform:translate3d(.02rem,-.08rem,0) rotate(.08deg)}33.33%{transform:translate3d(-.04rem,0,0) rotate(-.18deg)}41.66%{transform:translate3d(-.08rem,-.12rem,0) rotate(-.32deg)}50%{transform:translate3d(-.1rem,-.28rem,0) rotate(-.48deg)}58.33%{transform:translate3d(-.04rem,-.1rem,0) rotate(-.16deg)}66.66%{transform:translate3d(.04rem,0,0) rotate(.12deg)}75%{transform:translate3d(.09rem,-.12rem,0) rotate(.32deg)}83.33%{transform:translate3d(.11rem,-.26rem,0) rotate(.5deg)}91.66%{transform:translate3d(.04rem,-.08rem,0) rotate(.18deg)}}@keyframes characterWalkOne{0%,16.65%{opacity:1}16.66%,to{opacity:0}}@keyframes characterWalkTwo{0%,16.65%,33.33%,to{opacity:0}16.66%,33.32%{opacity:1}}@keyframes characterWalkThree{0%,33.32%,50%,to{opacity:0}33.33%,49.99%{opacity:1}}@keyframes characterWalkFour{0%,49.99%,66.66%,to{opacity:0}50%,66.65%{opacity:1}}@keyframes characterWalkFive{0%,66.65%,83.33%,to{opacity:0}66.66%,83.32%{opacity:1}}@keyframes characterWalkSix{0%,83.32%{opacity:0}83.33%,to{opacity:1}}@keyframes characterEyeBlink{0%,7%,9.2%,to{opacity:0;transform:scaleY(.08)}7.8%,8.5%{opacity:1;transform:scaleY(1)}}@keyframes starPulse{0%,to{opacity:.45}50%{opacity:1}}@keyframes portalDustShimmer{0%{opacity:calc(var(--dust-alpha) * .2);transform:translateZ(0) scale(.68)}45%{opacity:calc(var(--dust-alpha) * 1.55);transform:translate3d(var(--dust-drift-x),var(--dust-drift-y),0) scale(1.08)}to{opacity:calc(var(--dust-alpha) * .32);transform:translate3d(calc(var(--dust-drift-x) * -.22),calc(var(--dust-drift-y) * .12),0) scale(.76)}}@keyframes portalStarBlink{0%{opacity:calc(.1 + var(--star-glow) * .1);transform:translateZ(0) scale(.56)}38%{opacity:calc(.72 + var(--star-glow) * .36);transform:translate3d(var(--star-drift-x),var(--star-drift-y),0) scale(1.16)}62%{opacity:calc(.28 + var(--star-glow) * .22);transform:translate3d(calc(var(--star-drift-x) * .26),calc(var(--star-drift-y) * .16),0) scale(.76)}to{opacity:calc(.12 + var(--star-glow) * .12);transform:translate3d(calc(var(--star-drift-x) * -.12),calc(var(--star-drift-y) * .08),0) scale(.62)}}@keyframes portalDiamondBlink{0%{opacity:.14;transform:rotate(45deg) scale(.58)}48%{opacity:.9;transform:rotate(45deg) scale(1.18)}to{opacity:.22;transform:rotate(45deg) scale(.72)}}@media(max-width:1020px){.world-layout{grid-template-columns:1fr}.place-panel{min-height:auto}}@media(max-width:980px){.character-screen{grid-template-columns:1fr;align-items:stretch;padding:1.1rem}.character-setup-panel{align-self:start;width:min(100%,24rem)}.character-preview-stage{position:absolute;inset:0;z-index:1;pointer-events:none}.character-preview-actor{left:70%;bottom:8%;width:min(18rem,40vw)}.character-material{width:min(13rem,34vw)}.portal-copy{top:clamp(1rem,3vw,1.6rem);left:clamp(1rem,3vw,1.6rem);width:min(16rem,calc(100% - 5rem));transform:none}.portal-copy h1{font-size:clamp(1.35rem,4vw,2rem)}.portal-copy p:last-child{display:none}}@media(max-width:680px){.character-screen{background-position:62% center}.character-screen:after{background:linear-gradient(90deg,#00000057,#0000001f),linear-gradient(180deg,#00000047,#00000094)}.character-setup-panel{width:min(100%,21rem)}.character-choice-card{min-height:7.8rem;padding:.62rem}.character-choice-card img{width:4.55rem}.character-actions{grid-template-columns:1fr}.character-preview-actor{left:75%;bottom:6%;width:min(12rem,38vw)}.character-material{width:min(9.5rem,30vw)}.portal-entry{height:100dvh;min-height:100svh;padding:1rem}.portal-copy{left:1rem;top:1rem;bottom:auto;width:min(13rem,calc(100% - 4.5rem));padding-left:0;transform:none}.portal-copy h1{font-size:clamp(1.28rem,7vw,1.75rem)}.portal-copy p:last-child{max-width:23rem;font-size:.94rem;display:none}.portal-form{width:100%;max-width:calc(100% - 2rem);padding-top:1rem;padding-bottom:.8rem}.portal-brand{padding-bottom:.85rem}.portal-brand img{width:min(10.5rem,56vw)}.portal-bg{background-position:58% center}.world-app{padding:.75rem}.top-bar{align-items:flex-start;flex-direction:column}.top-actions{justify-content:flex-start}.game-canvas{min-height:31rem}.artwork-grid{grid-template-columns:1fr}}@media(max-height:620px){.portal-copy{display:none}.portal-form{gap:.72rem}.portal-brand{gap:.35rem;margin-bottom:0;padding-bottom:.7rem}.portal-brand img{width:min(9rem,50vw)}.portal-form input{min-height:2.18rem;padding-bottom:.45rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
