/* HeartEase Atlas 3D — explore.html (Atlas3D.jsx + atlas-3d.js) */
.ax{--g:#E6B655;--g2:#F3DDA2;--gi:#8A6620;--navy:#021D42;--ink:#15264A;--ink2:#3A4A6B;--parch:#F7F2E9;--paper:#FBF8F2;--glass:rgba(3,20,48,.62);--hair:rgba(230,182,85,.32);position:relative;background:#010c22;color:var(--parch)}
.ax [lang="zh-Hant"]{font-family:"Noto Serif TC","Noto Serif SC",serif}
.ax button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
.ax a{color:inherit;text-decoration:none}
body.ax-immersive .hh-util,body.ax-immersive .hh-nav,body.ax-immersive .hh-footer,body.ax-immersive .hh-wip{display:none!important}
body.ax-immersive{overflow:hidden}
.ax-stage{position:relative;height:calc(100vh - var(--ax-top));height:calc(100dvh - var(--ax-top));transition:height .6s cubic-bezier(.2,.7,.2,1);min-height:520px;overflow:hidden;isolation:isolate}
.ax-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:none}
.ax-canvas:active{cursor:grabbing}
.ax-labels{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}

/* labels (engine-managed) */
.ax-lbl{position:absolute;left:0;top:0;white-space:nowrap;display:flex;align-items:baseline;gap:8px;padding:7px 12px 7px 11px;margin:-44px 0 0 0;translate:-50% 0;background:rgba(2,16,40,.78);border:1px solid var(--hair);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:opacity .25s;animation:axLbl .45s cubic-bezier(.2,.8,.2,1)}
.ax-lbl::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:12px;background:linear-gradient(var(--g),transparent)}
.ax-lbl b{font:500 17px/1 "Cormorant Garamond",Georgia,serif;color:var(--parch)}
.ax-lbl i{font-style:normal;font-size:12px;color:var(--g);letter-spacing:.12em}
.ax-lbl__n{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--g);font:600 10px/1 var(--font-sans);color:var(--g);align-self:center}
.ax-lbl.is-hot{border-color:var(--g);box-shadow:0 0 0 3px rgba(230,182,85,.08),0 10px 30px -10px rgba(0,0,0,.6)}
@keyframes axLbl{from{opacity:0;filter:blur(4px)}to{opacity:1;filter:none}}

/* title screen */
.ax-title{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;background:radial-gradient(ellipse at 50% 55%,rgba(1,12,34,0) 0%,rgba(1,12,34,.55) 70%);animation:axFade 1.6s ease both}
.ax-title__eb{font:600 11px/1 var(--font-sans);letter-spacing:.42em;text-transform:uppercase;color:var(--g);animation:axUp 1.4s cubic-bezier(.2,.7,.2,1) .2s both}
.ax-title__zh{margin:22px 0 0;font-size:clamp(110px,17vw,230px);font-weight:900;line-height:.95;letter-spacing:.14em;padding-left:.14em;background:linear-gradient(100deg,#8E0B0B 0%,#E63946 30%,#D31515 48%,#FF8A80 58%,#B51212 80%,#7A0909 100%);background-size:240% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 12px 40px rgba(211,21,21,.3));animation:axUp 1.8s cubic-bezier(.2,.7,.2,1) .35s both,axSheen 8s ease-in-out 2s infinite}
.ax-title__en{margin-top:10px;font:italic 400 clamp(22px,2.4vw,32px)/1.2 "Cormorant Garamond",Georgia,serif;color:rgba(247,242,233,.92);animation:axUp 1.6s cubic-bezier(.2,.7,.2,1) .7s both}
.ax-title__en em{color:var(--g)}
.ax-title__rule{width:1px;height:56px;margin:30px 0 26px;background:linear-gradient(transparent,var(--g),transparent);animation:axGrow 1.6s ease 1s both}
.ax-enter{display:inline-flex;align-items:center;gap:14px;padding:17px 30px!important;border:1px solid var(--g)!important;color:var(--parch)!important;font:600 11.5px/1 var(--font-sans)!important;letter-spacing:.28em;text-transform:uppercase;background:rgba(2,16,40,.4)!important;position:relative;overflow:hidden;transition:color .3s,background .3s;animation:axUp 1.4s cubic-bezier(.2,.7,.2,1) 1.2s both}
.ax-enter [lang]{letter-spacing:.3em;color:var(--g);font-weight:500;transition:color .3s}
.ax-enter::before{content:"";position:absolute;inset:0;background:var(--g);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.7,0,.2,1);z-index:-1}
.ax-enter:hover{color:var(--navy)!important}.ax-enter:hover [lang]{color:var(--navy)}.ax-enter:hover::before{transform:none}
.ax-title__hint{margin-top:22px;font:500 11px/1 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(247,242,233,.55);animation:axFade 1.4s ease 1.8s both}
.ax-title--fail{cursor:default;gap:18px}
@keyframes axFade{from{opacity:0}to{opacity:1}}
@keyframes axUp{from{opacity:0;transform:translateY(22px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes axGrow{from{transform:scaleY(0)}to{transform:none}}
@keyframes axSheen{0%,100%{background-position:100% 0}50%{background-position:0 0}}

/* HUD */
.ax-hud{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;transition:opacity 1.2s ease 3s}
.ax.is-entered .ax-hud{opacity:1}
.ax-hud>*{pointer-events:auto}
.ax-ic{width:42px;height:42px;display:grid;place-items:center;background:var(--glass)!important;border:1px solid var(--hair)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font:300 20px/1 var(--font-sans)!important;color:var(--parch)!important;transition:border-color .25s,color .25s}
.ax-ic:hover{border-color:var(--g)!important;color:var(--g)!important}
.ax-brand{position:absolute;left:24px;top:22px;display:flex;gap:14px;align-items:flex-start}
.ax-brand__back{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--hair);background:var(--glass);backdrop-filter:blur(10px);font:300 18px/1 var(--font-sans);transition:all .25s}
.ax-brand__back:hover{border-color:var(--g);color:var(--g)}
.ax-brand__t{font:600 11px/1.3 var(--font-sans);letter-spacing:.3em;text-transform:uppercase;color:var(--parch);text-shadow:0 1px 10px rgba(0,0,0,.6)}
.ax-brand__t [lang]{display:block;margin-top:5px;letter-spacing:.3em;color:var(--g);font-weight:500}
.ax-disc{display:flex;align-items:baseline;gap:6px;margin-top:10px;font:500 10px/1 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(247,242,233,.7)}
.ax-disc b{font:500 18px/1 "Cormorant Garamond",Georgia,serif;color:var(--g);letter-spacing:0;margin-left:4px}
.ax-disc i{font-style:normal;letter-spacing:.06em}
.ax-disc__bar{width:84px;height:2px;background:rgba(230,182,85,.2);align-self:center;margin-left:6px;position:relative}
.ax-disc__bar span{position:absolute;left:0;top:0;bottom:0;background:var(--g);box-shadow:0 0 8px var(--g);transition:width .8s cubic-bezier(.2,.7,.2,1)}
.ax-tr{position:absolute;right:24px;top:22px;display:flex;gap:8px;align-items:flex-start}
.ax-glyph-search{width:13px;height:13px;border:1.5px solid currentColor;border-radius:50%;position:relative;margin:-3px 0 0 -3px}
.ax-glyph-search::after{content:"";position:absolute;width:6px;height:1.5px;background:currentColor;right:-6px;bottom:-3px;transform:rotate(45deg)}
.ax-find{position:relative}
.ax-find__box{position:absolute;right:0;top:50px;width:min(360px,80vw);background:rgba(2,16,40,.9);border:1px solid var(--hair);backdrop-filter:blur(12px);animation:axDrop .3s cubic-bezier(.2,.8,.2,1)}
.ax-find__box input{width:100%;box-sizing:border-box;border:0;border-bottom:1px solid var(--hair);background:transparent;padding:16px 18px;font:italic 400 20px/1.2 "Cormorant Garamond",Georgia,serif;color:var(--parch);outline:none}
.ax-find__box input::placeholder{color:rgba(247,242,233,.4)}
.ax-find__box ul{list-style:none;margin:0;padding:6px 0}
.ax-find__box li button{width:100%;display:flex;align-items:baseline;gap:10px;padding:10px 18px;text-align:left}
.ax-find__box li button:hover{background:rgba(230,182,85,.1)}
.ax-find__box b{font:500 18px/1.2 "Cormorant Garamond",Georgia,serif}.ax-find__box i{font-style:normal;font-size:12px;color:var(--g)}
.ax-find__box em{margin-left:auto;font:500 10px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;font-style:normal;color:rgba(247,242,233,.55)}
@keyframes axDrop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.ax-compass__rose{position:relative;width:26px;height:26px;border-radius:50%;border:1px solid rgba(230,182,85,.5);display:block}
.ax-compass__rose i{position:absolute;left:50%;top:3px;width:0;height:0;margin-left:-3.5px;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-bottom:10px solid var(--g)}
.ax-compass__rose b{position:absolute;left:50%;top:-13px;transform:translateX(-50%);font:600 8px/1 var(--font-sans);color:var(--g)}

.ax-cap{position:absolute;left:50%;top:26px;transform:translateX(-50%);text-align:center;pointer-events:none!important;animation:axUp 1s cubic-bezier(.2,.7,.2,1) both}
.ax-cap__zh{font-size:40px;font-weight:700;letter-spacing:.4em;padding-left:.4em;color:var(--g);text-shadow:0 2px 24px rgba(0,0,0,.7)}
.ax-cap__en{font:italic 400 22px/1 "Cormorant Garamond",Georgia,serif;margin-top:6px;text-shadow:0 1px 12px rgba(0,0,0,.8)}
.ax-cap__tag{font:600 10px/1 var(--font-sans);letter-spacing:.24em;text-transform:uppercase;color:rgba(247,242,233,.72);margin-top:10px;text-shadow:0 1px 8px rgba(0,0,0,.8)}

.ax-peek{position:absolute;left:50%;bottom:108px;transform:translateX(-50%);width:min(440px,calc(100% - 48px));padding:14px 18px;background:rgba(2,16,40,.8);border:1px solid var(--hair);backdrop-filter:blur(10px);pointer-events:none!important;animation:axUp .45s cubic-bezier(.2,.7,.2,1) both;text-align:center}
.ax-peek__eb{font:600 9.5px/1.3 var(--font-sans);letter-spacing:.24em;text-transform:uppercase;color:var(--g)}
.ax-peek__line{font:400 13.5px/1.55 var(--font-sans);color:rgba(247,242,233,.88);margin-top:7px;text-wrap:pretty}
.ax-peek__cta{font:italic 400 14px/1 "Cormorant Garamond",Georgia,serif;color:var(--g2);margin-top:8px}

.ax-bl{position:absolute;left:24px;bottom:24px}
.ax-br{position:absolute;right:24px;bottom:24px;display:flex;gap:8px;align-items:flex-end}
.ax-zoom{display:flex;flex-direction:column;gap:0}.ax-zoom .ax-ic+.ax-ic{border-top:0!important}
.ax-pill{height:42px;display:inline-flex;align-items:center;gap:10px;padding:0 16px!important;background:var(--glass)!important;border:1px solid var(--hair)!important;backdrop-filter:blur(10px);font:500 12px/1 var(--font-sans)!important;letter-spacing:.14em;text-transform:uppercase;transition:border-color .25s}
.ax-pill:hover,.ax-pill.is-on{border-color:var(--g)!important}
.ax-pill__k{color:var(--g);font-weight:600;letter-spacing:.24em;font-size:10px}
.ax-pill__car{font-size:9px;color:var(--g)}
.ax-pill__n{min-width:22px;height:22px;border-radius:11px;display:grid;place-items:center;background:var(--g);color:var(--navy);font-weight:700;letter-spacing:0}
.ax-pill--voy.is-on{background:rgba(230,182,85,.16)!important}
.ax-lens{position:relative}
.ax-lens__menu{position:absolute;left:0;bottom:50px;list-style:none;margin:0;padding:6px 0;min-width:250px;background:rgba(2,16,40,.9);border:1px solid var(--hair);backdrop-filter:blur(12px);animation:axUp .3s cubic-bezier(.2,.8,.2,1)}
.ax-lens__menu button{width:100%;display:flex;align-items:baseline;gap:10px;padding:10px 16px;text-align:left;font:500 12px/1 var(--font-sans);letter-spacing:.12em;text-transform:uppercase}
.ax-lens__menu button:hover{background:rgba(230,182,85,.1)}
.ax-lens__menu button.is-on{color:var(--g)}
.ax-lens__menu i{font-style:normal;font-size:12px;letter-spacing:.08em;text-transform:none;color:rgba(230,182,85,.8)}
.ax-lens__menu em{margin-left:auto;font-style:normal;color:rgba(247,242,233,.55);letter-spacing:0}

.ax-dock{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);display:flex;background:var(--glass);border:1px solid var(--hair);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);max-width:calc(100% - 420px);overflow-x:auto;scrollbar-width:none}
.ax-dock::-webkit-scrollbar{display:none}
.ax-dock button{flex:none;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 14px 9px;position:relative;transition:background .25s}
.ax-dock button+button{border-left:1px solid rgba(230,182,85,.14)}
.ax-dock button span{font-size:15px;letter-spacing:.14em;color:var(--parch);white-space:nowrap}
.ax-dock button em{font:500 9px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;font-style:normal;color:rgba(247,242,233,.6);white-space:nowrap}
.ax-dock button::after{content:"";position:absolute;left:30%;right:30%;bottom:0;height:2px;background:var(--g);transform:scaleX(0);transition:transform .35s cubic-bezier(.2,.7,.2,1);box-shadow:0 0 10px var(--g)}
.ax-dock button:hover{background:rgba(230,182,85,.08)}
.ax-dock button.is-on span{color:var(--g)}.ax-dock button.is-on::after{transform:none}
.ax-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 20px;background:rgba(2,16,40,.72);border:1px solid var(--hair);font:500 11px/1 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(247,242,233,.85);pointer-events:none!important;animation:axHint 6.4s ease both;white-space:nowrap}
@keyframes axHint{0%{opacity:0}10%,80%{opacity:1}100%{opacity:0}}
.ax.has-panel .ax-cap,.ax.has-panel .ax-peek{display:none}

/* panel (opens only on click) */
.ax-panel{position:absolute;left:0;top:0;bottom:0;width:min(480px,40vw);z-index:6;background:var(--paper);color:var(--ink);overflow-y:auto;box-shadow:30px 0 80px -30px rgba(0,0,0,.7);animation:axPanel .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes axPanel{from{transform:translateX(-40px);opacity:0;clip-path:inset(0 100% 0 0)}to{transform:none;opacity:1;clip-path:inset(0 0 0 0)}}
.ax-panel__x{position:sticky;top:14px;float:right;margin:14px 14px 0 0;width:44px;height:44px;border-radius:50%;background:rgba(2,29,66,.85)!important;color:var(--g)!important;font:300 24px/1 var(--font-sans)!important;z-index:3;backdrop-filter:blur(6px);transition:background .25s}
.ax-panel__x:hover{background:#D31515!important;color:#fff!important}
.ax-panel__img{height:min(42vh,360px);margin-top:-58px;background:center/cover no-repeat var(--navy);animation:axKen 16s ease-out both}
.ax-panel__img.is-type{display:grid;place-items:center;background:var(--navy) url(/assets/pattern-meridians.svg) center/360px;animation:none}
.ax-panel__img.is-type span{font-size:64px;font-weight:700;letter-spacing:.2em;color:var(--g)}
@keyframes axKen{from{background-size:118%}to{background-size:104%}}
.ax-panel__body{position:relative;padding:34px clamp(22px,3vw,44px) 48px}
.ax-panel--voy .ax-panel__body{padding-top:72px}
.ax-seal{position:absolute;right:clamp(22px,3vw,44px);top:30px;width:56px;height:56px;display:grid;place-items:center;background:#B8160F;color:#FBEFE6;border-radius:5px;box-shadow:inset 0 0 0 3px #B8160F,inset 0 0 0 4.5px rgba(251,239,230,.9);transform:rotate(-4deg);animation:axStamp .6s cubic-bezier(.3,1.6,.5,1) .45s both;mix-blend-mode:multiply}
.ax-seal span{writing-mode:vertical-rl;font-weight:900;line-height:1.02;max-height:84%}
@keyframes axStamp{from{opacity:0;transform:scale(1.8) rotate(-16deg)}to{opacity:.94;transform:rotate(-4deg)}}
.ax-eb{font:600 10.5px/1.4 var(--font-sans);letter-spacing:.3em;text-transform:uppercase;color:var(--gi)}
.ax-eb [lang]{letter-spacing:.2em;font-weight:500;margin-left:8px}
.ax-panel__t{font:400 clamp(36px,3.4vw,52px)/1 "Cormorant Garamond",Georgia,serif;letter-spacing:-.015em;color:var(--ink);margin:14px 70px 0 0}
.ax-panel__zh{font-size:18px;letter-spacing:.4em;color:var(--gi);margin:10px 0 12px}
.ax-marks{display:flex;gap:6px;flex-wrap:wrap}
.ax-marks span{font:600 9.5px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;padding:5px 7px;border:1px solid rgba(138,102,32,.45);color:var(--gi)}
.ax-marks span.is-u{background:var(--navy);border-color:var(--navy);color:var(--g)}
.ax-panel__line{font:italic 400 21px/1.5 "Cormorant Garamond",Georgia,serif;color:var(--ink2);margin:20px 0 0;text-wrap:pretty}
.ax-facts{margin:26px 0 0;border-top:1px solid rgba(21,38,74,.14)}
.ax-facts>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;padding:12px 0;border-bottom:1px solid rgba(21,38,74,.14)}
.ax-facts dt{font:600 9.5px/1.9 var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-mute,#6B7790)}
.ax-facts dd{margin:0;font:400 14.5px/1.55 var(--font-sans);color:var(--ink)}
.ax-sub{margin-top:26px}.ax-sub__h{font:600 9.5px/1 var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gi);margin-bottom:6px}
.ax-sub ul{list-style:none;margin:0;padding:0}.ax-sub li{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-bottom:1px dotted rgba(21,38,74,.14)}
.ax-sub b{font:500 18px/1.2 "Cormorant Garamond",Georgia,serif}.ax-sub b [lang]{font-size:12px;margin-left:8px;color:var(--gi);font-weight:500}
.ax-sub li>span{font:400 13px/1.5 var(--font-sans);color:var(--ink2)}
.ax-cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:28px}
.ax-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 20px!important;font:600 10.5px/1 var(--font-sans)!important;letter-spacing:.2em;text-transform:uppercase;transition:all .25s}
.ax-btn--gold{background:var(--navy)!important;color:var(--g)!important;border:1px solid var(--navy)!important}
.ax-btn--gold:hover{background:#D31515!important;border-color:#D31515!important;color:#fff!important}
.ax-btn--line{border:1px solid var(--ink)!important;color:var(--ink)!important}
.ax-btn--line:hover{background:var(--ink)!important;color:var(--parch)!important}
.ax-btn--line.is-on{border-color:var(--gi)!important;color:var(--gi)!important}
.ax-fine{font:400 12px/1.6 var(--font-sans);color:var(--ink-mute,#6B7790);margin:18px 0 0}
.ax-fine [lang]{margin-left:4px}
.ax-pn{display:flex;justify-content:space-between;gap:14px;margin-top:30px;padding-top:16px;border-top:1px solid rgba(21,38,74,.14)}
.ax-pn button{font:italic 400 17px/1.2 "Cormorant Garamond",Georgia,serif!important;color:var(--ink2)!important}
.ax-pn button:hover{color:#D31515!important}
.ax-stats{display:grid;grid-template-columns:1fr 1fr;margin:22px 0 0;border-top:1px solid rgba(21,38,74,.14);border-bottom:1px solid rgba(21,38,74,.14)}
.ax-stats>div{padding:14px 0}.ax-stats>div+div{border-left:1px solid rgba(21,38,74,.14);padding-left:16px}
.ax-stats dt{font:600 9.5px/1 var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-mute,#6B7790)}
.ax-stats dd{margin:8px 0 0;font:400 38px/1 "Cormorant Garamond",Georgia,serif;color:var(--ink)}.ax-stats small{font:500 14px var(--font-sans);color:var(--ink-mute,#6B7790)}
.ax-voy{list-style:none;margin:22px 0 0;padding:0}
.ax-voy__leg{margin-left:14px;padding:6px 0 6px 26px;border-left:1px dashed rgba(138,102,32,.6);font:500 10.5px/1 var(--font-sans);letter-spacing:.14em;color:var(--gi)}
.ax-voy__stop{display:flex;align-items:center;gap:14px;padding:5px 0}
.ax-voy__n{width:30px;height:30px;flex:none;border-radius:50%;background:var(--navy);color:var(--g);display:grid;place-items:center;font:600 11px/1 var(--font-sans)}
.ax-voy__name{font:500 20px/1.2 "Cormorant Garamond",Georgia,serif!important;text-align:left;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.ax-voy__name [lang]{font-size:12px;color:var(--gi)}.ax-voy__name:hover{color:#D31515!important}
.ax-voy__x{margin-left:auto;font-size:20px!important;color:var(--ink-mute,#6B7790)!important;width:28px}.ax-voy__x:hover{color:#D31515!important}
.ax-link{margin-top:18px;font:600 10.5px/1 var(--font-sans)!important;letter-spacing:.18em;text-transform:uppercase;color:#D31515!important;border-bottom:1px solid currentColor!important;padding-bottom:3px!important}

@media (max-width:1100px){.ax-dock{max-width:calc(100% - 48px);bottom:80px}.ax-peek{bottom:160px}.ax-zoom{flex-direction:row}.ax-zoom .ax-ic+.ax-ic{border-top:1px solid var(--hair)!important;border-left:0!important}}
@media (max-width:900px){
  .ax-stage{min-height:480px}
  .ax-brand{left:14px;top:14px}.ax-brand__t [lang]{display:none}.ax-disc__bar{width:50px}
  .ax-tr{right:14px;top:14px}
  .ax-bl{left:14px;bottom:14px}.ax-br{right:14px;bottom:14px}
  .ax-dock{left:14px;right:14px;transform:none;max-width:none;bottom:66px}
  .ax-dock button{padding:9px 11px 8px}.ax-dock button span{font-size:14px}
  .ax-cap{top:84px}.ax-cap__zh{font-size:30px}
  .ax-peek{bottom:136px}
  .ax-panel{top:auto;height:62%;width:100%;box-shadow:0 -30px 80px -30px rgba(0,0,0,.7);animation-name:axSheet}
  .ax-panel__img{height:200px}
  @keyframes axSheet{from{transform:translateY(60px);opacity:0}to{transform:none;opacity:1}}
  .ax-hint{white-space:normal;width:80%;text-align:center;line-height:1.6}
}
@media (prefers-reduced-motion:reduce){.ax *{animation-duration:.01ms!important;animation-delay:0s!important;transition:none!important}}

/* floating callouts (engine-positioned) */
.ax-card{position:absolute;left:0;top:0;display:flex;align-items:center;gap:10px;white-space:nowrap;opacity:0;will-change:transform,opacity;transform-origin:50% 100%;pointer-events:none}
.ax-card--spot{padding:6px 12px 6px 6px;background:rgba(2,16,40,.8)!important;border:1px solid var(--hair)!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 14px 30px -14px rgba(0,0,0,.8);transition:border-color .25s,box-shadow .25s;cursor:pointer}
.ax-card--spot:not(.has-img){padding-left:12px}
.ax-card--spot::after{content:"";position:absolute;left:50%;top:100%;width:7px;height:7px;margin:-4px 0 0 -3.5px;background:var(--g);transform:rotate(45deg);box-shadow:0 0 8px var(--g)}
.ax-card--spot:hover,.ax-card.is-hot{border-color:var(--g)!important;box-shadow:0 0 0 3px rgba(230,182,85,.1),0 14px 30px -12px rgba(0,0,0,.8)}
.ax-card__img{width:38px;height:38px;flex:none;background:center/cover no-repeat;outline:1px solid rgba(230,182,85,.45);outline-offset:-3px}
.ax-card__t{display:flex;flex-direction:column;gap:3px;text-align:left}
.ax-card__t b{font:500 16px/1 "Cormorant Garamond",Georgia,serif;color:var(--parch)}
.ax-card__t i{font-style:normal;font-size:11px;letter-spacing:.14em;color:var(--g)}
.ax-card em{font:600 8.5px/1 var(--font-sans);letter-spacing:.18em;font-style:normal;color:var(--navy);background:var(--g);padding:4px 5px;align-self:center}
.ax-card--city{flex-direction:column;gap:4px;padding:0 0 12px!important;text-align:center;cursor:pointer;background:none!important;border:0!important;font:inherit;color:inherit;-webkit-appearance:none;appearance:none}
.ax-card--city:hover i{color:var(--g2)}.ax-card--city:hover b{color:var(--g)}
.ax-card--city i{font-style:normal;font-size:15px;font-weight:700;letter-spacing:.3em;padding-left:.3em;color:var(--parch);text-shadow:0 2px 14px rgba(0,0,0,.9)}
.ax-card--city b{font:600 8.5px/1 var(--font-sans);letter-spacing:.3em;color:rgba(230,182,85,.85);text-shadow:0 1px 8px rgba(0,0,0,.9)}
.ax-card--city.is-major i{font-size:21px;color:var(--g)}
.ax-card--city.is-major b{color:var(--parch)}
.ax-card--city::after{content:"";position:absolute;left:50%;bottom:-3px;width:6px;height:6px;margin-left:-3px;border:1px solid var(--g);transform:rotate(45deg);background:#021634;box-shadow:0 0 8px rgba(230,182,85,.6)}
.ax.has-panel .ax-card--city{opacity:0!important}

/* map disclaimer */
.ax-note{position:absolute;left:50%;bottom:6px;transform:translateX(-50%);font:500 9.5px/1.4 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:rgba(247,242,233,.5);white-space:nowrap;pointer-events:none!important;text-shadow:0 1px 6px rgba(0,0,0,.8)}
.ax-note [lang]{letter-spacing:.1em;margin-left:8px;text-transform:none}
.ax-title__note{margin-top:14px;font:400 11px/1.5 var(--font-sans);letter-spacing:.06em;color:rgba(247,242,233,.5);max-width:34em;animation:axFade 1.4s ease 2s both}
@media (max-width:900px){.ax-note{white-space:normal;width:calc(100% - 28px);text-align:center;bottom:4px;font-size:8.5px}.ax-note [lang]{display:none}}

/* ---------- touch & phone ---------- */
.ax-touch{display:none}
@media (hover:none),(pointer:coarse){.ax-touch{display:inline}.ax-mouse{display:none}.ax-peek{display:none}.ax-zoom{display:none}}
.ax-grab{display:none}
@media (max-width:900px){
  .ax-hud{padding-bottom:env(safe-area-inset-bottom)}
  .ax-bl{bottom:calc(14px + env(safe-area-inset-bottom))}.ax-br{bottom:calc(14px + env(safe-area-inset-bottom))}
  .ax-dock{bottom:calc(66px + env(safe-area-inset-bottom))}
  .ax-note{top:66px;bottom:auto;left:14px;transform:none;width:auto;max-width:60%;text-align:left;white-space:normal;font-size:8.5px;letter-spacing:.12em}
  .ax-panel{height:64%;height:64dvh;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom);overscroll-behavior:contain}
  .ax-panel__img{margin-top:0;height:180px;border-radius:16px 16px 0 0}
  .ax-panel__x{position:absolute;top:12px;right:12px;float:none;margin:0;width:40px;height:40px}
  .ax-grab{display:block;position:absolute;left:50%;top:8px;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:rgba(247,242,233,.85);z-index:4;box-shadow:0 1px 4px rgba(0,0,0,.4)}
  .ax-panel--voy .ax-grab{background:rgba(21,38,74,.3)}
  .ax-panel--voy .ax-panel__body{padding-top:56px}
  .ax-panel__t{font-size:34px;margin-right:64px}
  .ax-panel__line{font-size:19px}
  .ax-facts>div{grid-template-columns:100px minmax(0,1fr)}
  .ax-seal{width:48px;height:48px;top:26px}
  .ax-btn{padding:15px 18px!important}
  .ax-lens__menu{max-height:52vh;overflow-y:auto;min-width:220px}
  .ax-lens__menu button{padding:13px 16px}
  .ax-find__box{position:fixed;left:14px;right:14px;top:66px;width:auto}
  .ax-find__box li button{padding:13px 18px}
}
@media (max-width:560px){
  .ax-title__zh{font-size:clamp(96px,30vw,150px)}
  .ax-title__en{font-size:21px}
  .ax-title__rule{height:36px;margin:20px 0 18px}
  .ax-title__note{padding:0 22px;font-size:10.5px}
  .ax-enter{padding:16px 24px!important}
  .ax-brand__t{font-size:9.5px;letter-spacing:.24em}
  .ax-disc span:first-child{display:none}.ax-disc{margin-top:6px}
  .ax-ic,.ax-brand__back{width:40px;height:40px}
  .ax-pill{height:40px;padding:0 13px!important;font-size:11px!important}
  .ax-dock button{padding:9px 12px 8px}
  .ax-cap{top:96px}.ax-cap__zh{font-size:26px}.ax-cap__en{font-size:18px}.ax-cap__tag{font-size:9px}
  .ax-card--spot{padding:4px 9px 4px 4px;gap:7px}.ax-card--spot:not(.has-img){padding-left:9px}
  .ax-card__img{width:28px;height:28px}.ax-card__t b{font-size:14px}.ax-card__t i{font-size:10px}
  .ax-card em{display:none}
  .ax-card--city i{font-size:13px}.ax-card--city.is-major i{font-size:17px}.ax-card--city b{font-size:7.5px}
  .ax-lbl b{font-size:15px}
  .ax-hint{font-size:10px;padding:12px 14px}
}
@media (max-width:900px) and (orientation:landscape) and (max-height:500px){
  .ax-panel{top:0;height:100%;width:min(380px,55vw);border-radius:0}
  .ax-panel__img{height:130px;border-radius:0}.ax-grab{display:none}
  .ax-dock{bottom:14px;left:auto;right:170px;max-width:calc(100% - 330px)}
  .ax-note{display:none}.ax-cap{top:14px}
}

/* ---------- HeartEase branding ---------- */
.ax{--red:#D31515;--red2:#E63946;--navy1:#1A3E6E}
.ax-brand{align-items:center;gap:16px}
.ax-brand__logo{display:flex;align-items:center;gap:10px;padding:6px 14px 6px 8px;background:rgba(247,242,233,.94);border-top:2px solid var(--red);box-shadow:0 10px 28px -12px rgba(0,0,0,.6);transition:transform .3s}
.ax-brand__logo:hover{transform:translateY(-1px)}
.ax-brand__logo img{width:30px;height:auto;display:block}
.ax-brand__lock{display:flex;flex-direction:column;line-height:1}
.ax-brand__lock [lang]{font-size:13px;font-weight:700;letter-spacing:.12em;color:var(--navy1)}
.ax-brand__lock b{font:600 15px/1.1 "Cormorant Garamond",Georgia,serif;color:var(--red);letter-spacing:.02em;margin-top:2px}
.ax-brand__div{width:1px;height:34px;background:rgba(230,182,85,.4)}
.ax-brand__back{display:none!important}
.ax-exit{position:absolute;left:24px;top:84px;font:italic 400 16px/1 "Cormorant Garamond",Georgia,serif;color:rgba(247,242,233,.75);text-shadow:0 1px 8px rgba(0,0,0,.7);transition:color .25s}
.ax-exit:hover{color:var(--g)}
.ax-motto{position:absolute;right:26px;bottom:78px;font-family:var(--font-script,"Great Vibes",cursive);font-size:26px;line-height:1;color:rgba(243,221,162,.85);text-shadow:0 2px 14px rgba(0,0,0,.6);pointer-events:none!important}
.ax-cap{display:flex;flex-direction:column;align-items:center}
.ax-cap__seal{width:46px;height:46px;margin-bottom:10px;display:grid;place-items:center;background:#B8160F;color:#FBEFE6;border-radius:4px;box-shadow:inset 0 0 0 3px #B8160F,inset 0 0 0 4.5px rgba(251,239,230,.85),0 8px 20px rgba(0,0,0,.35);font-size:15px;font-weight:900;writing-mode:vertical-rl;line-height:1.02;transform:rotate(-4deg);animation:axStamp .6s cubic-bezier(.3,1.6,.5,1) .2s both}
.ax-dock button.is-on span{color:#fff}
.ax-dock button::after{background:var(--red);box-shadow:0 0 10px rgba(211,21,21,.8)}
.ax-pill__n{background:var(--red);color:#fff}
.ax-disc__bar span{background:linear-gradient(90deg,var(--g),var(--red))}
.ax-panel{border-top:3px solid var(--red)}
.ax-panel__mark{position:absolute;right:clamp(22px,3vw,44px);bottom:26px;width:46px;opacity:.12;pointer-events:none}
.ax-btn--gold{background:var(--red)!important;border-color:var(--red)!important;color:#fff!important}
.ax-btn--gold:hover{background:var(--navy1)!important;border-color:var(--navy1)!important}
.ax-eb{color:var(--red)}
.ax-link--navy{color:var(--navy1)!important;margin-left:4px}
.ax-marks span.is-u{background:var(--navy1);border-color:var(--navy1)}
.ax-lbl,.ax-card--spot{border-top:2px solid var(--red)!important}
.ax-card--city.is-major i{color:#fff}
.ax-card--city.is-major::after{border-color:var(--red);background:var(--red);box-shadow:0 0 10px rgba(211,21,21,.8)}
/* intro veil — logo lockup that dissolves as the camera descends */
.ax-intro{position:absolute;inset:0;z-index:7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;pointer-events:none;background:radial-gradient(ellipse at 50% 50%,rgba(1,12,34,.2),rgba(1,12,34,.75) 70%);animation:axIntro 3.6s ease forwards}
.ax-intro img{width:78px;height:auto;filter:drop-shadow(0 8px 24px rgba(0,0,0,.5));animation:axUp 1.1s cubic-bezier(.2,.7,.2,1) both}
.ax-intro__zh{margin-top:10px;font-size:34px;font-weight:700;letter-spacing:.4em;padding-left:.4em;color:#fff;animation:axUp 1.1s cubic-bezier(.2,.7,.2,1) .15s both}
.ax-intro__en{font:600 11px/1 var(--font-sans);letter-spacing:.36em;text-transform:uppercase;color:var(--g);animation:axUp 1.1s cubic-bezier(.2,.7,.2,1) .3s both}
.ax-intro__motto{margin-top:10px;font-family:var(--font-script,"Great Vibes",cursive);font-size:30px;color:#F3DDA2;animation:axUp 1.1s cubic-bezier(.2,.7,.2,1) .45s both}
@keyframes axIntro{0%,55%{opacity:1}100%{opacity:0;visibility:hidden}}
@media (max-width:900px){.ax-brand__lock{display:none}.ax-brand__logo{padding:6px}.ax-brand__div{display:none}.ax-exit{top:66px;left:14px;font-size:14px}.ax-motto{display:none}.ax-note{top:92px}}

/* fixes: centre without transform (animation fill overrides it); keep motto clear of the dock */
.ax-cap{left:0!important;right:0;margin:0 auto;width:max-content;max-width:calc(100% - 48px);transform:none!important}
.ax-peek{left:0!important;right:0;margin:0 auto;transform:none!important}
@media (max-width:1100px){.ax-motto{display:none}}

/* logo lockup — floats on the scene, no badge */
.ax-brand__logo{background:none!important;border:0!important;box-shadow:none!important;padding:0!important;gap:12px!important}
.ax-brand__logo img{width:40px!important;filter:drop-shadow(0 0 1px rgba(247,242,233,.9)) drop-shadow(0 0 10px rgba(247,242,233,.35)) drop-shadow(0 4px 14px rgba(0,0,0,.55))}
.ax-brand__lock{gap:3px}
.ax-brand__lock [lang]{color:#F7F2E9!important;font-size:14px!important;letter-spacing:.22em!important;text-shadow:0 1px 10px rgba(0,0,0,.7)}
.ax-brand__lock b{color:var(--g)!important;font-size:19px!important;font-weight:500!important;letter-spacing:.04em!important;text-shadow:0 1px 10px rgba(0,0,0,.7)}
.ax-brand__logo:hover .ax-brand__lock b{color:#F3DDA2!important}
.ax-brand__div{height:40px!important;background:linear-gradient(transparent,rgba(230,182,85,.55),transparent)!important}
@media (max-width:900px){.ax-brand__logo img{width:34px!important}}

/* ---------- static export: crawlable index + no-WebGL fallback ---------- */
.ax [hidden]{display:none!important}
.ax-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
html:not(.ax-gl) .ax-stage{display:none}
html.ax-gl .ax-index{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
html:not(.ax-gl) .ax{background:var(--parchment,#F7F2E9);color:var(--ink,#15264A)}
.ax-index__inner{max-width:980px;margin:0 auto;padding:64px 40px 96px}
.ax-index__eb{display:inline-flex;align-items:center;gap:14px;margin:0;font:600 11px/1 var(--font-sans);letter-spacing:.32em;text-transform:uppercase;color:#D31515}
.ax-index__eb::before{content:"";width:44px;height:1px;background:#E6B655}
.ax-index h2{margin:18px 0 0;font:500 clamp(34px,4vw,50px)/1.08 var(--font-display);color:#1A3E6E;letter-spacing:-.02em}
.ax-index__note,.ax-index__disc{font:400 13px/1.6 var(--font-sans);color:#6B7790;margin:14px 0 0}
.ax-index__reg{margin-top:48px;border-top:1px solid rgba(21,38,74,.14);padding-top:24px}
.ax-index h3{margin:0;font:500 30px/1.1 var(--font-display);color:#1A3E6E}
.ax-index h3 span{font-size:16px;letter-spacing:.2em;color:#8A6620;margin-left:6px}
.ax-index__tag{margin:6px 0 0;font:italic 400 18px/1.4 var(--font-display);color:#3A4A6B}
.ax-index ul{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 32px}
.ax-index li{padding:14px 0;border-bottom:1px solid rgba(21,38,74,.1)}
.ax-index h4{margin:0;font:500 20px/1.2 var(--font-display);color:#15264A}
.ax-index h4 a{color:inherit;text-decoration:none}.ax-index h4 a:hover{color:#D31515}
.ax-index h4 span{font-size:12px;color:#8A6620;margin-left:6px;letter-spacing:.08em}
.ax-index li p{margin:6px 0 0;font:400 13.5px/1.55 var(--font-sans);color:#3A4A6B}
.ax-index .ax-index__meta{font-size:12px;color:#6B7790}
.ax-index .ax-index__meta a{color:#D31515;text-decoration:none;font-weight:600}
@media (max-width:560px){.ax-index__inner{padding:44px 18px 72px}}
