/* World page. Fallback = masonry columns; with WebGL (html.world-gl-on) the list goes visually hidden. */
.visually-hidden,.world-gl-on .world-items{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.world-gl-on .world-items>li{position:absolute}
.world main{padding:140px 16px 80px}
.world-items{list-style:none;margin:0 auto;padding:0;columns:4 280px;column-gap:28px;max-width:1400px}
.world-items>li{break-inside:avoid;margin:0 0 28px}
.world-items img,.world-items video{width:100%;height:auto;border-radius:14px;background:var(--line)}
.world-items p{margin:10px 0 0;font-size:15px;line-height:19px}
.world-gl,.world-hint,.world-view,.world-zoom{display:none}
.world-gl-on body{overflow:hidden}
.world-gl-on .world-gl{display:block;position:fixed;inset:0;width:100%;height:100%;z-index:1;touch-action:none;cursor:grab}
.world-gl-on .site-header{background:transparent;z-index:10}
.world-gl-on .world-hint{display:block;position:fixed;left:50%;bottom:120px;translate:-50% 0;z-index:5;margin:0;font-size:16px;line-height:1;color:var(--tm);background:var(--tb);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);padding:10px 16px;border-radius:999px;pointer-events:none;transition:opacity .3s ease,background-color .25s ease,color .25s ease}
.world-hint.is-gone{opacity:0}
.world-hint,.world-zoom{--tb:rgba(255,252,245,.4);--tf:var(--ink);--tm:var(--muted)}
.world-hint[data-tone=dark],.world-zoom[data-tone=dark]{--tb:rgba(16,13,6,.45);--tf:#fffcf5;--tm:rgba(255,252,245,.7)}
/* Zoom ruler: ticks are positioned + swelled from world.js; the needle stays put. */
.world-gl-on .world-zoom{display:block;position:fixed;left:50%;bottom:32px;translate:-50% 0;z-index:5;width:328px;max-width:calc(100vw - 32px);height:48px;border-radius:999px;background:var(--tb);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);cursor:ew-resize;touch-action:none;user-select:none;-webkit-user-select:none;transition:opacity .2s ease,scale .2s ease,background-color .25s ease;animation:world-zoom-in .6s cubic-bezier(.23,1,.32,1) .6s backwards}
@keyframes world-zoom-in{from{opacity:0;translate:-50% 12px}}
@keyframes world-zoom-fade{from{opacity:0}}
.world-zoom.is-hidden{opacity:0;scale:.96;pointer-events:none}
.world-zoom-track{position:absolute;inset:0;overflow:hidden;border-radius:inherit}
.world-zoom-ruler{position:absolute;left:24px;top:50%}
.world-zoom-ruler span{position:absolute;left:-.75px;top:-5px;width:1.5px;height:10px;border-radius:1px;background:var(--tm);transition:background-color .25s ease}
.world-zoom-ruler .is-major{top:-8px;height:16px}
.world-zoom-ruler .is-home{top:-11px;height:22px}
.world-zoom-needle{position:absolute;left:23px;top:50%;width:2px;height:26px;margin-top:-13px;border-radius:1px;background:var(--tf);transition:scale .16s cubic-bezier(.23,1,.32,1),background-color .25s ease}
.world-zoom.is-active .world-zoom-needle{scale:1 1.2}
.world-zoom-value{position:absolute;left:50%;bottom:calc(100% + 8px);translate:-50% 0;padding:4px 9px;border-radius:999px;background:var(--tb);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);font-size:13px;line-height:1;color:var(--tm);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background-color .25s ease,color .16s ease-out,translate .16s cubic-bezier(.23,1,.32,1)}
.world-zoom:is(.is-active,:focus-visible) .world-zoom-value{color:var(--tf);translate:-50% -2px}
.world-gl-on .world-view{display:block;position:fixed;inset:0;z-index:20;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility 0s .2s}
.world-view.is-open{opacity:1;visibility:visible;pointer-events:none;transition:opacity .2s ease .35s,visibility 0s .35s}
.world-view-caption{position:absolute;left:50%;bottom:32px;translate:-50% 0;margin:0;max-width:min(560px,calc(100% - 32px));text-align:center;font-size:18px;line-height:1.2}
.world-view-close{position:absolute;top:84px;right:40px;width:44px;height:44px;border:0;border-radius:50%;background:var(--ink);color:var(--paper);font-size:28px;line-height:1;cursor:pointer;pointer-events:auto;transition:scale .16s ease-out}
.world-view-close:active{scale:.94}
@media(max-width:809px){.world-gl-on .site-header{background:transparent}.world-view-close{top:72px;right:16px}.world-items{columns:2 150px;column-gap:16px}.world-gl-on .world-hint{bottom:112px}.world-gl-on .world-zoom{bottom:24px}}
@media(prefers-reduced-motion:reduce){.world-hint,.world-view,.world-view-close,.world-zoom,.world-zoom-needle,.world-zoom-value{transition-duration:.01ms!important;transition-delay:0s!important}.world-gl-on .world-zoom{animation-name:world-zoom-fade}}
