.preview_page__GLeYo{min-width:0;min-height:100svh;color:#172b4d;background:#f5f7fa}.preview_banner__qRg9m{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:16px max(16px,env(safe-area-inset-right)) 16px max(16px,env(safe-area-inset-left));border-bottom:1px solid #d0d5dd;background:#fff}.preview_banner__qRg9m>div{flex:1 1 440px;min-width:0}.preview_banner__qRg9m p{max-width:100ch;font-size:14px;line-height:1.75;overflow-wrap:anywhere}.preview_banner__qRg9m .preview_title__eh0vA{font-size:16px;font-weight:700}.preview_banner__qRg9m p+p{margin-top:4px}.preview_banner__qRg9m .preview_demo__JdqPC{color:#93370d}.preview_banner__qRg9m>a{min-height:44px;flex:0 0 auto;max-width:100%}.preview_banner__qRg9m>a:focus-visible{outline:3px solid #175cd3;outline-offset:3px}.preview_unavailable__HrLqp{display:grid;gap:16px;width:min(680px,calc(100% - 32px));margin:40px auto;padding:24px;border:1px solid #e4e7ec;border-radius:10px;background:#fff;overflow-wrap:anywhere}.preview_unavailable__HrLqp h1{font-size:24px;font-weight:700;line-height:1.5}.preview_unavailable__HrLqp p{font-size:16px;line-height:1.75}@media (max-width:639px){.preview_banner__qRg9m>a{flex:1 1 100%}.preview_unavailable__HrLqp{margin-block:24px;padding:20px}}.public-portal{--portal-text-scale:1;--portal-scene-height:max(520px,100svh);position:relative;isolation:isolate;height:var(--portal-scene-height);min-height:520px;overflow:clip;color:#20332f;background:var(--sky-bottom,#9bd4ed);font-family:var(--font-noto-thai),"Noto Sans Thai",Arial,sans-serif;font-size:calc(1rem * var(--portal-text-scale));font-synthesis:none;line-height:1.5}.public-portal,.public-portal *,.public-portal :after,.public-portal :before{box-sizing:border-box}.public-portal a,.public-portal button{min-height:44px;-webkit-tap-highlight-color:transparent;touch-action:manipulation;outline-offset:5px}.public-portal button{border:0;cursor:pointer;font:inherit}.public-portal button:disabled{cursor:default;opacity:.55}.public-portal a{color:inherit;text-decoration:none}.public-portal a:focus-visible,.public-portal button:focus-visible{outline:3px solid #ffc955;box-shadow:0 0 0 6px #153c60}.public-portal svg{flex-shrink:0}.public-portal button svg{pointer-events:none}.public-portal .island-label .hub-mark,.public-portal .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.public-portal .sky-backdrop{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,var(--sky-top,#6eb9e3),var(--sky-bottom,#e6f2ee))}.public-portal .sky-backdrop:before{content:"";position:absolute;inset:0;background:url(/public-portal-assets/v1/sky-campus-background.png) 50%/cover;opacity:var(--sky-photo-opacity,1)}.public-portal .world-canvas{position:absolute!important;inset:0;z-index:0;visibility:hidden;touch-action:manipulation;cursor:grab}.public-portal.scene-ready:not(.static-world) .world-canvas{visibility:visible}.public-portal .still-world{position:absolute;inset:0;z-index:0;background:url(/public-portal-assets/v1/sky-campus-still-closed.png) 50%/contain no-repeat;pointer-events:none}.public-portal.scene-ready:not(.static-world) .fallback-services:not(:focus-within),.public-portal.scene-ready:not(.static-world) .scene-status,.public-portal.scene-ready:not(.static-world) .still-world{display:none}.public-portal .atmosphere{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(42,112,164,.1),transparent 24%,transparent 68%,rgba(50,107,131,.16));pointer-events:none}.public-portal .cloud-veil{position:absolute;bottom:-7%;left:-5%;z-index:1;width:110%;height:30%;background:url(/public-portal-assets/v1/sky-cloud.png) bottom/55% 100% repeat-x;opacity:calc(.28 + var(--daylight, 1) * .4);filter:brightness(calc(.4 + var(--daylight, 1) * .6));pointer-events:none}.public-portal .world-header{position:absolute;top:28px;left:32px;right:32px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.public-portal .world-header>*{pointer-events:auto}.public-portal .brand{display:flex;flex:1 1 auto;align-items:center;gap:13px;min-width:0;color:#fff;text-shadow:0 2px 12px #23496e50}.public-portal .brand>:not(img){min-width:0}.public-portal .brand img{flex:0 0 auto;width:56px;height:56px;border-radius:14px;box-shadow:0 8px 24px #2d4e6b20}.public-portal .brand strong{display:block;font-size:calc(1.3125rem * var(--portal-text-scale));font-weight:700;line-height:1.4;overflow-wrap:anywhere}.public-portal .brand small{font-size:calc(.6875rem * var(--portal-text-scale));letter-spacing:2.6px;opacity:.82}.public-portal .header-actions{display:flex;flex:0 0 auto;align-items:center;gap:9px}.public-portal .icon-button{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid #ffffff70;border-radius:50%;color:#fff;background:#244b6499;backdrop-filter:blur(12px);box-shadow:0 3px 14px #32516a15}.public-portal .icon-button:hover{color:#fff;background:#274e6de6}.public-portal .portal-legacy-link{display:inline-flex;align-items:center;justify-content:center;padding:0 10px;border-radius:12px;color:#fff;background:#244b6499;font-size:calc(.6875rem * var(--portal-text-scale));text-align:center}.public-portal .scene-clock{position:absolute;top:94px;left:32px;z-index:30;display:flex;align-items:center;gap:7px;max-width:calc(100% - 64px);padding:7px 12px;border:1px solid #ffffff25;border-radius:24px;color:#fff9ec;background:#10274568;backdrop-filter:blur(10px);font-size:calc(.75rem * var(--portal-text-scale))}.public-portal .scene-clock time{font-variant-numeric:tabular-nums;font-weight:700}.public-portal .scene-clock small{padding-left:8px;border-left:1px solid #ffffff35;color:#eff5ffba;font-size:calc(.625rem * var(--portal-text-scale))}.public-portal .scene-status{position:absolute;top:136px;left:32px;z-index:25;max-width:calc(100% - 64px);padding:9px 17px;border-radius:20px;color:#fff;background:#17384fbd;font-size:calc(.75rem * var(--portal-text-scale));text-align:center;pointer-events:none}.public-portal .world-hint{bottom:35px;left:50%;z-index:20;gap:9px;max-width:calc(100% - 120px);transform:translateX(-50%);font-size:calc(.8125rem * var(--portal-text-scale));text-align:center;text-shadow:0 2px 7px #294e72;pointer-events:none}.public-portal .reset-view,.public-portal .world-hint{position:absolute;display:flex;align-items:center;justify-content:center;color:#fff}.public-portal .reset-view{bottom:28px;right:32px;z-index:30;width:44px;height:44px;border:1px solid #ffffff90;border-radius:50%;background:#325b6b9c;backdrop-filter:blur(10px)}.public-portal .island-label{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px;min-width:0;min-height:44px;max-width:min(7.875rem,calc(100vw - 32px));border-radius:8px;color:#fff7e8;font-size:calc(.6875rem * var(--portal-text-scale));font-weight:700;line-height:1.25;text-shadow:0 2px 3px #10202b80;white-space:nowrap}.public-portal .island-label.azure{width:5.875rem}.public-portal .island-label.forest{width:7.875rem}.public-portal .island-label.amber,.public-portal .island-label.violet{width:80px}.public-portal .plaque-title{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:1.25rem;padding:2px 6px;border:1px solid #dcc59a;border-radius:5px;background:linear-gradient(180deg,#326999,#173d67);box-shadow:inset 0 0 0 1px #ffffff12,0 2px 5px #183e4a45;font-size:inherit;line-height:inherit}.public-portal .forest .plaque-title{border-color:#b08a51;background:repeating-linear-gradient(0deg,transparent 0 13px,#3d281f38 14px 15px),linear-gradient(120deg,#805d36,#4a3323)}.public-portal .violet .plaque-title{border-color:#c4a1c7;background:linear-gradient(180deg,#725379,#46334e)}.public-portal .amber .plaque-title{border-color:#ecc16b;background:linear-gradient(180deg,#ab7b32,#68431d)}.public-portal .island-label:hover .plaque-title{filter:brightness(1.18)}.public-portal .island-label:active .plaque-title{transform:translateY(2px)}.public-portal .airship-banner{display:block;width:242px;padding-left:10px;color:#755c54;font-size:25px;font-weight:700;line-height:1.3;text-align:left;text-shadow:none}.public-portal .fallback-services{position:absolute;left:50%;top:50%;z-index:20;width:min(100vw,calc(var(--portal-scene-height) * 1487 / 1058));height:min(var(--portal-scene-height),calc(100vw * 1058 / 1487));transform:translate(-50%,-50%);pointer-events:none}.public-portal .fallback-link{position:absolute;transform:translate(-50%,-50%);pointer-events:auto}.public-portal .fallback-link.azure{left:55.288839%;top:37.331184%}.public-portal .fallback-link.forest{left:29.093%;top:54.263%}.public-portal.scene-ready:not(.static-world) .world-hint{display:flex}.public-portal .island-dock{display:none;position:absolute;left:50%;bottom:calc(12px + env(safe-area-inset-bottom, 0px));z-index:30;width:min(340px,calc(100% - 24px));transform:translateX(-50%);pointer-events:none}.public-portal .island-dock-heading{margin-bottom:9px;color:#fff9ed;font-size:calc(.6875rem * var(--portal-text-scale));font-weight:700;text-align:center;text-shadow:0 1px 5px #18364c,0 1px 12px #18364c}.public-portal .island-dock-heading>span{padding:3px 10px;border-radius:12px;background:#163c525c;backdrop-filter:blur(4px)}.public-portal .island-menu-scroll{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:24px;overflow-x:auto;overscroll-behavior-x:contain;touch-action:pan-x;padding:7px 5px 4px;scrollbar-width:thin;scrollbar-color:#ffe1a480 transparent;pointer-events:auto}.public-portal .island-route{position:absolute;left:50%;top:35px;width:55%;height:auto;transform:translateX(-50%);pointer-events:none}.public-portal .island-menu-button{position:relative;display:flex;flex:1 0 0;flex-direction:column;align-items:center;gap:7px;min-width:0;padding:0 0 3px;color:#fff;background:transparent;text-align:center}.public-portal .island-menu-medallion{position:relative;display:grid;place-items:center;flex:0 0 auto;width:88px;height:88px;border:2px solid #c0eff4;border-radius:50%;background:#b3e4e9d9;box-shadow:inset 0 0 0 3px #f7ffff80,0 4px 12px #15394a66;transition:transform .16s ease,border-color .16s ease}.public-portal .island-menu-medallion>img{width:82px;height:82px;object-fit:contain;border-radius:50%}.public-portal .island-menu-marker{position:absolute;top:-3px;right:-2px;display:grid;place-items:center;width:23px;height:23px;border:1px solid #ffd976;border-radius:50%;color:#a66b12;background:#fff8e6;visibility:hidden}.public-portal .island-menu-title{width:fit-content;min-width:min(96px,100%);max-width:100%;min-height:26px;padding:4px 7px;border:1px solid #bee1ed55;border-radius:16px;color:#fff;background:#123951e8;font-size:calc(.75rem * var(--portal-text-scale));font-weight:700;line-height:1.45;overflow-wrap:anywhere}.public-portal .island-menu-button[aria-current=true] .island-menu-medallion{border-color:#ffe6a4;background:#fff6dfe6;box-shadow:inset 0 0 0 3px #fffbd1a6,0 0 10px #ffce5ac7,0 4px 14px #15394a55;transform:scale(1.06)}.public-portal .island-menu-button[aria-current=true] .island-menu-marker{visibility:visible}.public-portal .island-menu-button:hover .island-menu-medallion{border-color:#fff1c9}.public-portal .island-menu-button:focus-visible{border-radius:18px;outline-offset:-2px}.public-portal .island-gesture-hint{width:fit-content;max-width:100%;margin:7px auto 0;padding:3px 9px;border-radius:12px;color:#25475b;background:#e7f5f9dc;font-size:calc(.625rem * var(--portal-text-scale));line-height:1.45;text-align:center}@media (max-width:1023px){.public-portal .island-dock{display:block}.public-portal.scene-ready:not(.static-world) .world-hint{display:none}.public-portal .reset-view{display:flex;top:96px;right:32px;bottom:auto}}@media (max-height:600px) and (max-width:1023px){.public-portal{--portal-scene-height:max(360px,100svh);min-height:360px}.public-portal .island-dock-heading,.public-portal .island-gesture-hint{display:none}.public-portal .island-menu-medallion{width:56px;height:56px}.public-portal .island-menu-medallion>img{width:50px;height:50px}}@media (max-width:699px){.public-portal .world-header{top:16px;left:16px;right:16px;align-items:flex-start;gap:9px}.public-portal .brand{gap:8px;padding-top:3px}.public-portal .brand img{width:37px;height:37px;border-radius:10px}.public-portal .brand strong{font-size:calc(.875rem * var(--portal-text-scale))}.public-portal .brand small{font-size:calc(.5rem * var(--portal-text-scale));letter-spacing:1.9px}.public-portal .header-actions{flex-wrap:wrap;justify-content:flex-end;gap:5px;width:93px}.public-portal .portal-legacy-link{display:none}.public-portal .scene-clock{top:max(80px,calc(24px + 4rem * var(--portal-text-scale)));left:16px;gap:5px;max-width:calc(100% - 32px);padding:5px 9px;font-size:calc(.625rem * var(--portal-text-scale))}.public-portal .scene-clock small{font-size:calc(.5rem * var(--portal-text-scale))}.public-portal .scene-status{top:max(118px,calc(52px + 5rem * var(--portal-text-scale)));left:16px;max-width:calc(100% - 32px);padding:7px 12px;font-size:calc(.625rem * var(--portal-text-scale))}.public-portal .cloud-veil{bottom:-5%;height:22%;background-size:110% 100%}.public-portal .still-world{background-size:auto 80%;background-position:center 30%}.public-portal .world-hint{bottom:55px;gap:6px;width:calc(100% - 32px);max-width:calc(100% - 32px);font-size:calc(.625rem * var(--portal-text-scale));white-space:normal}.public-portal .reset-view{top:68px;right:16px}.public-portal .island-label.azure{width:5.625rem}.public-portal .island-label.forest{width:7.75rem}.public-portal .fallback-services{inset:auto 16px 140px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 10px;align-items:start;width:auto;height:auto;transform:none}.public-portal .fallback-link.island-label{position:static;width:100%;max-width:100%;transform:none;font-size:calc(.8125rem * var(--portal-text-scale));line-height:1.35;text-align:center;white-space:normal}.public-portal .fallback-link .plaque-title{min-height:30px;padding:4px 9px}}@media (max-width:360px){.public-portal .world-header{left:12px;right:12px;gap:5px}.public-portal .brand{gap:6px}.public-portal .brand strong{font-size:calc(.75rem * var(--portal-text-scale))}.public-portal .brand small{font-size:calc(.4375rem * var(--portal-text-scale))}.public-portal .brand img{width:32px;height:32px}}@media (max-height:640px) and (min-width:700px){.public-portal .world-header{top:15px}.public-portal .world-hint{bottom:20px}}.public-portal[data-text-scale="2"]{--portal-text-scale:2;--portal-scene-height:max(640px,100svh);min-height:640px}.public-portal[data-text-scale="2"] .world-header{align-items:flex-start}.public-portal[data-text-scale="2"] .brand strong{max-width:220px}.public-portal[data-text-scale="2"] .scene-clock{top:144px;flex-wrap:wrap}.public-portal[data-text-scale="2"] .scene-status{top:232px}.public-portal[data-text-scale="2"] .island-label{width:min(250px,calc(100vw - 32px));max-width:min(250px,calc(100vw - 32px));font-size:calc(.8125rem * var(--portal-text-scale));line-height:1.35;text-align:center;white-space:normal}.public-portal[data-text-scale="2"] .island-label .plaque-title{min-height:44px;padding:4px 9px}.public-portal[data-text-scale="2"] .world-hint{width:calc(100% - 44px);max-width:500px;white-space:normal}@media (max-width:699px){.public-portal[data-text-scale="2"] .brand{gap:5px}.public-portal[data-text-scale="2"] .brand small{display:none}.public-portal[data-text-scale="2"] .brand strong{max-width:160px;font-size:calc(.75rem * var(--portal-text-scale))}.public-portal[data-text-scale="2"] .fallback-services{grid-template-columns:minmax(0,1fr);bottom:100px}.public-portal[data-text-scale="2"] .fallback-link.island-label{width:100%;max-width:100%}.public-portal[data-text-scale="2"] .world-hint{display:none}}@media (prefers-reduced-motion:reduce){.public-portal *,.public-portal :after,.public-portal :before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.public-portal .registry-fallback{top:auto;bottom:90px;height:auto;width:min(680px,calc(100% - 32px));display:flex;flex-wrap:wrap;justify-content:center;gap:12px;transform:translateX(-50%)}.public-portal .registry-fallback .fallback-link{position:static;transform:none;width:auto;max-width:100%}.public-portal .registry-fallback .plaque-title{white-space:normal;overflow-wrap:anywhere}.public-portal .many-islands{justify-content:flex-start}.public-portal .many-islands .island-menu-button{flex:0 0 112px;min-width:112px}@media (max-width:699px){.public-portal .registry-fallback{inset:auto 16px 120px;transform:none;width:auto;max-height:60%;overflow-y:auto;pointer-events:auto}.public-portal .registry-fallback .fallback-link{flex:1 1 130px}}.public-portal .registry-plaque{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere;text-align:center}.public-portal .many-islands .island-menu-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}