html.room-html{background:#050d14;color-scheme:dark}.room-page{--accent:#38BDF8;background:#050d14;color:#eaf6fb;min-height:100vh;line-height:1.65}.room-page a{color:inherit}.room-page a:hover{color:inherit}.room-scene{position:fixed;inset:-16px;z-index:-2;overflow:hidden;transform:translate(calc(var(--px,0) * -14px),calc(var(--py,0) * -14px))}.room-scene img{width:100%;height:100%;max-width:none;object-fit:cover;opacity:.75;animation:roomZoom 2.2s var(--ease-out) both}@keyframes roomZoom{from{transform:scale(1.3);opacity:0}to{transform:scale(1);opacity:.75}}.room-shade{position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 20%,transparent 0%,rgba(3,10,16,.6) 70%),linear-gradient(180deg,rgba(3,10,16,.6),rgba(3,10,16,.86))}.room-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3) var(--space-5);padding:var(--space-3) var(--space-6);background:rgba(5,13,20,.7);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.1)}.room-back,.room-chip,.room-profile{display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-5);border-radius:var(--r-full);font-size:var(--text-sm);font-weight:var(--fw-semibold);text-decoration:none;color:#fff;background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.22);transition:background .2s,border-color .2s,transform .2s,color .2s}.room-back:hover,.room-chip:hover,.room-profile:hover{background:rgba(255,255,255,.16);transform:translateY(-1px);color:#fff}.room-switch{display:flex;flex-wrap:wrap;gap:var(--space-2)}.room-chip[aria-current="page"]{background:var(--accent);border-color:var(--accent);color:#06121a}.room-chip[aria-current="page"]:hover{color:#06121a}.room-page :focus-visible{outline:2px solid #fff;outline-offset:3px}.room-profile.is-locked{opacity:.8}.room-main{max-width:1100px;margin:0 auto;padding:clamp(2.5rem,6vw,5rem) var(--space-6) var(--space-12)}.room-eyebrow{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--accent);font-size:var(--text-sm);font-weight:var(--fw-bold);letter-spacing:.16em;text-transform:uppercase;margin-bottom:var(--space-3)}.room-title{font-size:clamp(2.75rem,1.2rem + 7vw,5.25rem);font-weight:var(--fw-extrabold);letter-spacing:-0.045em;line-height:1;color:#fff;text-shadow:0 0 50px color-mix(in srgb,var(--accent) 60%,transparent);margin-bottom:var(--space-5)}.room-intro{font-size:var(--text-lg);line-height:1.7;color:#d3e6ee;max-width:62ch}.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6);margin:clamp(2rem,5vw,3rem) 0}.panel{padding:var(--space-6);border-radius:var(--r-2xl,24px);background:rgba(6,17,26,.76);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid color-mix(in srgb,var(--accent) 38%,rgba(255,255,255,.08));box-shadow:0 20px 50px rgba(0,0,0,.35)}.panel-title{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-sm);font-weight:var(--fw-bold);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-5)}.panel-title::before{content:"";width:4px;height:1.1em;border-radius:2px;background:var(--accent);box-shadow:0 0 10px var(--accent)}.stats{display:flex;flex-direction:column;gap:var(--space-4)}.stat{display:grid;grid-template-columns:1fr auto 3.2rem;align-items:center;gap:var(--space-4)}.stat-name{font-weight:var(--fw-semibold);color:#fff}.stat-lv{font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.08em;color:var(--accent);text-align:right;font-variant-numeric:tabular-nums}.pips{display:inline-flex;gap:5px}.pips i{display:block;width:22px;height:9px;border-radius:5px;background:rgba(255,255,255,.14)}.pips i.on{background:var(--accent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 80%,transparent)}.quests,.cert-lines{display:flex;flex-direction:column;gap:var(--space-4)}.quest{display:flex;gap:var(--space-3);align-items:flex-start}.quest p{color:#f1f9fc;font-size:var(--text-sm);line-height:1.55}.quest small,.cert-line small{display:block;color:#9fc0cd;font-size:var(--text-xs);margin-top:2px}.quest-mark{flex:none;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent);font-size:.7rem;margin-top:1px}.cert-lines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5) var(--space-8)}.cert-line{display:flex;gap:var(--space-3);align-items:flex-start}.cert-line .icon{color:var(--accent);margin-top:3px;font-size:1.1rem}.cert-line strong{color:#fff;font-size:var(--text-sm);font-weight:var(--fw-semibold);line-height:1.35}.room-section{margin-top:clamp(2.5rem,6vw,4rem)}.room-section-title{font-size:clamp(1.5rem,1rem + 1.8vw,2.25rem);font-weight:var(--fw-extrabold);letter-spacing:-0.03em;line-height:1.15;color:#fff;margin-bottom:var(--space-6)}.room-section-title::after{content:"";display:block;width:56px;height:4px;margin-top:var(--space-3);border-radius:2px;background:var(--accent);box-shadow:0 0 14px var(--accent)}.room-proj-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8)}.room-proj{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-2xl,24px);background:rgba(6,17,26,.8);border:1px solid color-mix(in srgb,var(--accent) 34%,rgba(255,255,255,.08));box-shadow:0 20px 50px rgba(0,0,0,.35);transition:transform .35s var(--ease-spring),border-color .3s,box-shadow .3s}.room-proj:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 24px 60px color-mix(in srgb,var(--accent) 28%,rgba(0,0,0,.45))}.room-proj img{width:100%;aspect-ratio:16 / 10;object-fit:cover;object-position:top center}.room-proj-body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-8);flex:1}.room-proj h3{font-size:var(--text-xl);font-weight:var(--fw-bold);letter-spacing:-0.015em;line-height:1.25;color:#fff}.room-proj p{font-size:var(--text-sm);line-height:1.7;color:#c3dae3}.proj-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.proj-tags li{padding:2px var(--space-3);border-radius:var(--r-full);font-size:var(--text-xs);font-weight:var(--fw-medium);color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.proj-links{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:auto;padding-top:var(--space-4);border-top:1px solid rgba(255,255,255,.1)}.proj-link{display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--r-full);text-decoration:none;font-size:var(--text-sm);font-weight:var(--fw-semibold);color:#fff;border:1.5px solid rgba(255,255,255,.25);transition:background .2s,border-color .2s}.proj-link:hover{background:color-mix(in srgb,var(--accent) 25%,transparent);border-color:var(--accent);color:#fff}.next-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.next-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5);border-radius:var(--r-xl,20px);text-decoration:none;background:rgba(6,17,26,.8);border:1px solid color-mix(in srgb,var(--accent) 38%,rgba(255,255,255,.08));transition:transform .3s var(--ease-spring),border-color .3s,box-shadow .3s}.next-card:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:0 0 40px color-mix(in srgb,var(--accent) 35%,transparent);color:inherit}.next-ico{flex:none;width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}.next-card>span:nth-child(2){display:flex;flex-direction:column;min-width:0;flex:1}.next-card small{font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.next-card strong{font-size:var(--text-lg);color:#fff;line-height:1.25}.next-card em{font-style:normal;font-size:var(--text-sm);color:#a9c6d2}.next-arrow{flex:none;color:var(--accent);transition:transform .25s}.next-card:hover .next-arrow{transform:translateX(4px)}.contact-strip{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-6);padding:var(--space-8)}.contact-strip .room-section-title{margin-bottom:var(--space-3)}.contact-strip p{color:#c3dae3;max-width:46ch}.contact-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.room-page .btn-primary{background:var(--accent);color:#06121a;box-shadow:0 10px 30px color-mix(in srgb,var(--accent) 45%,transparent)}.room-page .btn-primary:hover{background:color-mix(in srgb,var(--accent) 85%,#fff);color:#06121a}.room-page .btn-secondary{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.3)}.room-page .btn-secondary:hover{background:rgba(255,255,255,.16);color:#fff}.rise{animation:rise .8s var(--ease-out) both}.room-title.rise{animation-delay:.1s}.room-intro.rise{animation-delay:.2s}.room-grid .panel:nth-child(1){animation-delay:.3s}.room-grid .panel:nth-child(2){animation-delay:.4s}@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.pips i.on{animation:pipOn .5s var(--ease-out) both}.pips i:nth-child(1){animation-delay:.6s}.pips i:nth-child(2){animation-delay:.68s}.pips i:nth-child(3){animation-delay:.76s}.pips i:nth-child(4){animation-delay:.84s}.pips i:nth-child(5){animation-delay:.92s}@keyframes pipOn{from{transform:scaleX(0);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion:reduce){.room-scene img,.rise,.pips i.on{animation:none !important}.room-scene img{opacity:.75}}@media (max-width:992px){.room-grid,.room-proj-grid,.next-grid{grid-template-columns:1fr}.cert-lines{grid-template-columns:1fr}.room-hero{text-align:center}.room-intro{margin-inline:auto}.room-section-title,.panel-title{text-align:center;justify-content:center}.room-section-title::after{margin-inline:auto}.panel-title::before{display:none}.room-proj-body{text-align:center;align-items:center}.proj-tags,.proj-links{justify-content:center}.proj-links{width:100%}.contact-strip{flex-direction:column;text-align:center}.contact-strip p{margin-inline:auto}.contact-actions{justify-content:center}}@media (max-width:768px){.room-bar{padding:var(--space-3) var(--space-4);justify-content:center;flex-wrap:nowrap;gap:var(--space-2)}.room-main{padding-inline:var(--space-5)}.room-chip span,.room-profile span{display:none}.room-back span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.room-back,.room-chip,.room-profile{padding:0;width:44px;flex:none;justify-content:center}.room-chip[aria-current="page"]{width:auto;padding:0 var(--space-4)}.room-chip[aria-current="page"] span{display:inline}.room-switch{flex-wrap:nowrap}.panel{padding:var(--space-5)}.room-proj-body{padding:var(--space-6)}.next-card{padding:var(--space-4)}}@media (max-width:360px){.room-chip[aria-current="page"] span{display:none}.room-chip[aria-current="page"]{width:44px;padding:0}}.room-scene img{opacity:.4}@keyframes roomZoom{from{transform:scale(1.3);opacity:0}to{transform:scale(1);opacity:.4}}.explorer-wrap{margin-top:clamp(2rem,5vw,3rem)}.explorer-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-6)}.explorer-head .room-section-title{margin-bottom:0}.explorer-score{font-size:var(--text-sm);color:#b3cfda}.explorer-score strong{color:var(--accent);font-variant-numeric:tabular-nums}.explorer{position:relative;width:100%;aspect-ratio:16 / 9;border-radius:var(--r-2xl,24px);overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 45%,rgba(255,255,255,.08));box-shadow:0 0 60px color-mix(in srgb,var(--accent) 22%,transparent),0 24px 60px rgba(0,0,0,.5);background:#050d14}.explorer img{width:100%;height:100%;max-width:none;object-fit:cover}.explorer.all-found{box-shadow:0 0 80px color-mix(in srgb,var(--accent) 55%,transparent),0 24px 60px rgba(0,0,0,.5)}.hotspot{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;color:#fff}.hs-dot{width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 0 14px var(--accent);transition:transform .2s}.hs-ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--accent);animation:hsPulse 2s ease-out infinite}@keyframes hsPulse{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.4);opacity:0}}.hs-label{position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%) translateY(-4px);padding:2px 10px;border-radius:999px;white-space:nowrap;font-size:var(--text-xs);font-weight:var(--fw-bold);background:rgba(5,13,20,.9);border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.hotspot:hover .hs-label,.hotspot:focus-visible .hs-label,.hotspot.active .hs-label{opacity:1;transform:translateX(-50%)}.hotspot:hover .hs-dot,.hotspot.active .hs-dot{transform:scale(1.3)}.hotspot.found .hs-dot{background:#6ee7b7;box-shadow:0 0 14px #6ee7b7}.hotspot.found .hs-ring{border-color:#6ee7b7;animation-duration:3.5s}.hotspot.active .hs-label{border-color:var(--accent)}.hotspot-card{margin-top:var(--space-5);min-height:120px}.hotspot-card h3{font-size:var(--text-xl);font-weight:var(--fw-bold);letter-spacing:-0.015em;color:#fff;margin-bottom:var(--space-2)}.hotspot-card p{color:#d3e6ee;line-height:1.7;max-width:70ch}.hotspot-card .proj-tags{margin-top:var(--space-4)}.hotspot-card .hs-hint{color:#9fc0cd}.hotspot-card.pop{animation:rise .45s var(--ease-out)}.lock-toast{position:fixed;left:50%;bottom:var(--space-8);z-index:1500;transform:translate(-50%,24px);opacity:0;display:flex;align-items:center;gap:var(--space-3);width:max-content;max-width:min(92vw,520px);padding:var(--space-4) var(--space-5);border-radius:var(--r-xl,20px);background:rgba(6,17,26,.96);border:1px solid rgba(251,191,36,.6);box-shadow:0 20px 50px rgba(0,0,0,.5);color:#fff;font-size:var(--text-sm);line-height:1.5;transition:opacity .35s,transform .35s var(--ease-out)}@media (max-width:992px){.explorer-head{justify-content:center;text-align:center}.hotspot-card{text-align:center}.hotspot-card p{margin-inline:auto}.hotspot-card .proj-tags{justify-content:center}}@media (max-width:768px){.hs-label{display:none}.explorer{border-radius:var(--r-xl,18px)}}.npc-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.npc{position:relative;display:flex;align-items:flex-start;gap:var(--space-3);max-width:560px;padding:var(--space-3) var(--space-5) var(--space-3) var(--space-3);border-radius:var(--r-xl,20px);background:rgba(6,17,26,.78);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid color-mix(in srgb,var(--accent,#5BB8D0) 50%,rgba(255,255,255,.1));box-shadow:0 12px 36px rgba(0,0,0,.4);text-align:left;min-height:3.6rem}.npc-name{flex:none;align-self:flex-start;padding:2px 10px;border-radius:999px;font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.06em;color:#06121a;background:var(--accent,#5BB8D0);transition:background .4s}.npc-line{color:#e8f6fb;font-size:var(--text-sm);line-height:1.6;min-height:3.2em}.npc.typing .npc-text::after{content:"▍";margin-left:2px;color:var(--accent,#5BB8D0);animation:npcBlink .8s steps(2) infinite}@keyframes npcBlink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.npc.typing .npc-text::after{animation:none}}.sfx-toggle{position:fixed;left:var(--space-5);bottom:var(--space-5);z-index:30;width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;cursor:pointer;color:#cfe3ec;background:rgba(6,17,26,.7);border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:color .2s,border-color .2s,background .2s}.sfx-toggle:hover{color:#fff;border-color:rgba(255,255,255,.5)}.sfx-toggle .sfx-on{display:none}.sfx-toggle[aria-pressed="true"]{color:#FBBF24;border-color:rgba(251,191,36,.6)}.sfx-toggle[aria-pressed="true"] .sfx-on{display:block}.sfx-toggle[aria-pressed="true"] .sfx-off{display:none}.sfx-toggle:focus-visible{outline:2px solid #fff;outline-offset:3px}.room-npc{margin-top:var(--space-6)}.xp{margin-bottom:var(--space-5)}.xp-head{display:flex;justify-content:space-between;font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:#b3cfda;margin-bottom:var(--space-2)}.xp-head strong{color:var(--accent)}.xp-bar{height:10px;border-radius:6px;background:rgba(255,255,255,.12);overflow:hidden}.xp-bar span{display:block;height:100%;width:var(--w,0%);border-radius:6px;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 70%,#000),var(--accent));box-shadow:0 0 14px var(--accent);transform-origin:left;animation:xpFill 1.2s .5s var(--ease-out) both}@keyframes xpFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.xp-bar span{animation:none}}@media (max-width:992px){.room-npc{margin-inline:auto}}.room-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:var(--space-4);border-radius:18px;font-size:1.8rem;color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:0 0 30px color-mix(in srgb,var(--accent) 35%,transparent);view-transition-name:vt-room-icon}.room-title{view-transition-name:vt-room-title}@media (max-width:992px){.room-icon{margin-inline:auto}}.npc .npc-line{display:grid;align-items:center}.npc .npc-line::before{content:attr(data-full);visibility:hidden;grid-area:1 / 1}.npc .npc-line>.npc-text{grid-area:1 / 1}.explorer-stage{position:absolute;inset:0;transform-origin:0 0}.hotspot.hint .hs-dot{background:#fff;transform:scale(1.5)}.hotspot.hint .hs-ring{animation-duration:.6s;border-width:3px}.rotate-hint{display:none;margin-top:var(--space-3);text-align:center;font-size:var(--text-xs);color:#9fc0cd}@media (pointer:coarse) and (orientation:portrait){.rotate-hint{display:block}}.explore-mode .room-bar{display:none}.explore-mode .explorer{width:min(100%,calc((100dvh - 24px) * 16 / 9));margin-inline:auto;touch-action:none}