/* Novelle titanium access key. The controller owns all motion. */
.hero.hero-with-key{isolation:isolate;gap:4%;overflow:hidden;padding-top:94px;padding-bottom:104px;min-height:710px}
.hero-with-key .hero-copy{width:44%;flex:0 0 44%;z-index:2}
.key-night-sky{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;pointer-events:none;opacity:.65;mask-image:linear-gradient(180deg,transparent,#000 18%,#000 78%,transparent)}
.hero-with-key::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#030405 0%,#030405ee 24%,#03040570 47%,transparent 76%)}
.access-key-stage{position:relative;min-width:0;width:54%;max-width:660px;margin-left:auto;padding:30px 0 8px;z-index:1;--tilt-x:8deg;--tilt-y:0deg;--tilt-z:5deg;--key-yaw:-12deg;--key-scale:1;--shine-x:50%}
.key-card-scene{position:relative;perspective:1500px;padding:18px 0 30px;touch-action:pan-y;cursor:grab;border-radius:18px;user-select:none;-webkit-user-select:none}
.key-card-tilt{position:relative;width:100%;aspect-ratio:1.7176;transform-style:preserve-3d;transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y,0deg)) rotateZ(var(--tilt-z)) scale(var(--key-scale,1))}
.key-card-rotor{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(var(--key-yaw,-12deg))}
.key-metal-core{position:absolute;inset:0;border:1px solid #878a8b;border-radius:18px;background:#212324;transform:translateZ(0);transform-style:preserve-3d;pointer-events:none}
.key-metal-core::before,.key-metal-core::after{content:"";position:absolute;inset:0;border:1px solid #b4b6b7;border-radius:inherit;background:#151719;transform:translateZ(.45px);pointer-events:none}
.key-metal-core::after{border-color:#64676a;background:#292c2d;transform:translateZ(-.45px)}
.key-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:18px}
.key-front{transform:translateZ(1px)}
.key-front-button{position:absolute;inset:0;border:0;padding:0;background:transparent;cursor:inherit;border-radius:inherit;color:inherit;overflow:visible}
.key-card-photo{display:block;position:absolute;left:-2.989%;top:-3.90625%;width:105.848%;height:107.8125%;max-width:none;object-fit:fill;pointer-events:none;user-select:none;-webkit-user-drag:none}
.key-front-button::after,.key-back::after{content:"";position:absolute;inset:1px;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,transparent 28%,#ffffff04 42%,#e8eef520 49%,#ffffff03 56%,transparent 72%);background-size:240% 100%;background-position:var(--shine-x) center;mix-blend-mode:screen;opacity:.24;transition:opacity .5s}
.access-key-stage.is-moving .key-front-button::after,.access-key-stage.is-moving .key-back::after{opacity:.32}
.access-key-stage.is-dragging .key-front-button::after{opacity:.4}
.access-key-stage.is-dragging .key-card-scene,.access-key-stage.is-dragging .key-card-scene *{cursor:grabbing}
.key-back{display:flex;flex-direction:column;transform:rotateY(180deg) translateZ(1px);background:repeating-linear-gradient(0deg,#ffffff02 0,#ffffff02 .5px,transparent .5px,transparent 3px),linear-gradient(115deg,#2d3032,#121416 44%,#0c0e10 72%,#1c1e20);border:1px solid #b8bbbe;padding:clamp(22px,2.6vw,36px);box-shadow:inset 0 0 0 2px #030405,inset 0 0 0 3px #e4e9ee22,0 22px 40px #0007;color:#e5e8e9}
.key-back-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;letter-spacing:.16em;line-height:1.2;color:#aab1b6}
.key-back-heading>span:first-child{display:flex;align-items:center;gap:9px;font-family:var(--serif);font-size:20px;letter-spacing:.14em;color:#e7eaec}
.key-back-heading svg{width:17px;height:17px;fill:#cdd3d8}
.key-back h3{font:400 clamp(24px,2.4vw,35px)/1.15 var(--serif);letter-spacing:-.025em;margin:24px 0 18px;color:#f0f1f1}
.key-products{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #dae3ec25;border-bottom:1px solid #dae3ec25}
.key-products button{display:grid;grid-template-columns:1fr 20px;align-items:center;gap:8px;text-align:left;border:0;background:transparent;padding:17px 12px 17px 0;color:#e0e5e8;cursor:pointer;min-height:58px}
.key-products button+button{border-left:1px solid #dae3ec25;padding-left:20px;padding-right:0}
.key-products button>span{font-size:10px;letter-spacing:.12em;color:#a3adb5;grid-column:1/-1}
.key-products strong{font-size:clamp(12px,1.15vw,16px);font-weight:450;line-height:1.3}
.key-products svg{width:19px;height:19px}
.key-products button:hover{color:#fff;background:#ffffff05}
.key-back-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:17px}
.key-serial{font:10px/1.6 var(--sans);letter-spacing:.13em;color:#c1c9ce}.key-serial small{font-size:9px;color:#929da6;letter-spacing:.07em}
.key-enter{display:inline-flex;align-items:center;gap:16px;border-bottom:1px solid #bfc9d350;padding:6px 0;color:#f0f3f4;font-size:13px;font-weight:450;line-height:1.2;text-decoration:none}
.key-enter svg{width:19px;height:19px;transition:transform .2s}.key-enter:hover svg{transform:translateX(3px)}
.key-card-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:25px 2% 0;color:#a6aeb4;font-size:13px;line-height:1.5;letter-spacing:.01em}
.key-drag-hint{flex:0 1 auto;white-space:nowrap}
.key-motion-controls{display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto;gap:4px;min-width:0}
.key-motion-button,.key-turn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;background:transparent;color:#cdd3d7;border:1px solid transparent;border-radius:2px;padding:8px 7px;font:400 13px/1.25 var(--sans);letter-spacing:.01em;cursor:pointer;white-space:nowrap;transition:background .18s,border-color .18s,color .18s}
.key-turn svg{width:15px;height:15px;flex-shrink:0}.key-spin-icon{font-size:13px;width:11px;line-height:1}
.key-motion-button:hover:not(:disabled),.key-turn:hover{color:#fff;background:#ffffff08;border-color:#ffffff24}
.key-motion-button:active:not(:disabled),.key-turn:active{background:#ffffff12;border-color:#ffffff40}
.key-motion-button:disabled{opacity:.4;cursor:not-allowed}
.access-key-stage button:focus-visible,.access-key-stage a:focus-visible,.key-card-scene:focus-visible{outline:1px solid #d0d9df;outline-offset:5px}
.key-card-scene:focus-visible{box-shadow:0 0 0 2px #050505}
.key-control-description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
.access-key-stage.is-flipped .key-front{pointer-events:none}.access-key-stage:not(.is-flipped) .key-back{pointer-events:none}

/* Impact light is clipped to each titanium face and inherits its 3D rotation.
   Static gradients form the optics; the finite controller animates only opacity
   and transforms, with no blur/filter or additional rendering loop. */
.key-impact-surface{position:absolute;inset:1px;z-index:5;overflow:hidden;pointer-events:none;border-radius:var(--key-radius-x,3.4%) / var(--key-radius-y,5.84%);mix-blend-mode:screen;isolation:isolate}
.key-impact-surface[hidden]{display:none}
.key-impact-surface>span{position:absolute;display:block;opacity:0;pointer-events:none}
.key-impact-wash{inset:-24%;background:radial-gradient(ellipse at center,#e6f7ff80 0%,#c5e9ff4a 18%,#91c9f02a 39%,#629ed50b 58%,transparent 72%)}
.key-impact-core{left:50%;top:50%;width:58%;aspect-ratio:1;background:radial-gradient(circle,#fff 0%,#eaf9fff2 2%,#d7f0ffb3 8%,#b2dcff62 19%,#83bded30 34%,#549cda0c 50%,transparent 68%)}
.key-impact-contact{left:50%;top:50%;width:65%;height:20%;background:radial-gradient(ellipse,#fff 0%,#eefaffdf 3%,#d3edff85 10%,#a1d5fc32 25%,transparent 67%)}
.key-impact-contact::before{content:"";position:absolute;left:47.8%;top:-100%;width:4.4%;height:300%;background:radial-gradient(ellipse,#fff 0%,#eefbffbf 7%,#b7e0ff35 30%,transparent 70%)}
.key-impact-wave{left:50%;top:50%;width:72%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,transparent 54%,#a3d5f40d 59%,#d8f2ff3d 61.5%,#f1fbff85 62%,#b7e1ff38 63.5%,transparent 68%)}
.key-impact-rim{inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px #e6f7ffdb,inset 0 0 8px #b8e1ff6b,inset 0 0 23px #8ec6ee25;background:linear-gradient(115deg,#e6f7ff0f,transparent 30%,transparent 70%,#aedbfc12)}
body.nai-motion-off .key-impact-surface{display:none}
@media(prefers-reduced-motion:reduce){.key-impact-surface{display:none}}
@media(forced-colors:active){.key-impact-surface{display:none}}
@media(min-width:1600px){.access-key-stage{max-width:690px}}
@media(min-width:761px) and (max-width:1100px){.hero.hero-with-key{gap:4%;min-height:650px;padding:70px 7% 84px;flex-direction:row;align-items:center}.hero-with-key .hero-copy{width:44%;flex-basis:44%}.access-key-stage{width:54%;padding:0}.key-back{padding:20px}.key-back h3{font-size:25px;margin:17px 0 12px}.key-back-heading>span:first-child{font-size:15px}.key-back-heading>span:last-child{font-size:8px;letter-spacing:.08em}.key-products button{padding-block:11px;min-height:53px}.key-products strong{font-size:13px}.key-products button+button{padding-left:12px}.key-products button>span{font-size:9px}.key-back-footer{padding-top:10px}.key-enter{font-size:12px;gap:10px}.key-serial{font-size:9px}.key-serial small{font-size:8px}.key-card-caption{font-size:12px;gap:8px;margin-inline:0}.key-motion-controls{gap:2px}.key-motion-button,.key-turn{font-size:12px;padding-inline:5px}}
@media(max-width:760px){.hero.hero-with-key{flex-direction:column;align-items:stretch;padding:52px 7% 42px;min-height:0;gap:16px}.hero-with-key .hero-copy{width:100%;flex-basis:auto;max-width:none}.key-night-sky{object-position:65% center;mask-image:linear-gradient(180deg,transparent 35%,#000 62%,#000 85%,transparent)}.hero-with-key::after{background:linear-gradient(180deg,#030405 0%,#030405 34%,transparent 68%)}.access-key-stage{width:100%;max-width:550px;margin:20px auto 0;padding:15px 0 0}.key-card-scene{padding:15px 0 20px}.key-face,.key-metal-core{border-radius:14px}.key-back{padding:24px}.key-back h3{font-size:28px;margin:18px 0 14px}.key-back-heading{font-size:9px}.key-back-heading>span:first-child{font-size:17px}.key-products button{padding-block:12px}.key-products strong{font-size:14px}.key-back-footer{padding-top:13px}.key-card-caption{margin-top:16px;font-size:13px}.key-motion-button,.key-turn{font-size:13px}}
@media(max-width:420px){.key-back{padding:17px}.key-back-heading>span:first-child{font-size:14px;gap:6px}.key-back-heading>span:last-child{font-size:8px;letter-spacing:.06em}.key-back-heading svg{width:14px;height:14px}.key-back h3{font-size:24px;margin:12px 0 10px}.key-products button{padding-block:9px;min-height:49px;gap:5px}.key-products button+button{padding-left:12px}.key-products strong{font-size:13px}.key-products button>span{font-size:8px}.key-back-footer{padding-top:10px}.key-serial{font-size:9px}.key-serial small{font-size:8px}.key-enter{font-size:12px;gap:10px}.key-card-caption{font-size:12px;gap:6px;margin-inline:0}.key-motion-controls{gap:1px}.key-motion-button,.key-turn{font-size:12px;padding-inline:4px;gap:4px}.key-turn svg{width:14px;height:14px}}
@media(max-width:360px){.key-back{padding:13px}.key-back-heading>span:first-child{font-size:12px}.key-back-heading>span:last-child{font-size:7px}.key-back h3{font-size:21px;margin:9px 0 8px}.key-products button{padding-block:6px;min-height:44px;gap:3px}.key-products button+button{padding-left:9px}.key-products strong{font-size:12px}.key-products button>span{font-size:7px}.key-products svg{width:16px;height:16px}.key-back-footer{padding-top:7px}.key-serial{font-size:8px;line-height:1.35}.key-serial small{font-size:7px}.key-enter{font-size:11px;gap:7px;padding-block:4px}.key-motion-button,.key-turn{padding-inline:3px}}
@media(prefers-reduced-motion:reduce){.key-turn,.key-motion-button,.key-enter svg{transition:none}.key-front-button::after,.key-back::after{display:none}.key-enter:hover svg{transform:none}}
@media(forced-colors:active){.key-motion-button,.key-turn{border-color:ButtonText;color:ButtonText}.key-motion-button:disabled{color:GrayText;border-color:GrayText;opacity:1}.access-key-stage button:focus-visible,.access-key-stage a:focus-visible,.key-card-scene:focus-visible{outline-color:Highlight}}
@media(min-width:761px) and (max-width:900px){.key-back{padding:14px}.key-back-heading>span:first-child{font-size:14px}.key-back-heading>span:last-child{font-size:8px}.key-back h3{font-size:22px;margin:12px 0 10px}.key-products button{padding-block:7px;min-height:44px;gap:4px}.key-products strong{font-size:12px}.key-products button>span{font-size:8px}.key-back-footer{padding-top:8px}.key-enter{font-size:11px;padding-block:4px}.key-serial{font-size:8px}.key-serial small{font-size:7px}}
