/* The image and the pin are split at their hinge; only the chain/body can swing. */
#bosphorus-newyear-stocking {
  position: absolute;
  z-index: 36;
  pointer-events: none;
  user-select: none;
  isolation: isolate;
  opacity: 0;
  transition: opacity .45s ease;
  --ny-cut: 12%;
}
#bosphorus-newyear-stocking.is-ready { opacity: 1; }
#bosphorus-newyear-stocking img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; }
#bosphorus-newyear-stocking .ny-pin { clip-path: inset(0 0 calc(100% - var(--ny-cut)) 0); filter: drop-shadow(0 2px 1px #0009); z-index: 2; }
#bosphorus-newyear-stocking .ny-swing { position: absolute; inset: 0; transform-origin: 49.7% var(--ny-cut); will-change: transform; }
/* Continuous gentle sway, with the scroll pendulum added by the outer layer. */
#bosphorus-newyear-stocking .ny-idle-sway { position: absolute; inset: 0; transform-origin: 49.7% var(--ny-cut); animation: ny-sway 5.8s ease-in-out infinite; will-change: transform; }
#bosphorus-newyear-stocking .ny-stocking { z-index:1; clip-path: inset(var(--ny-cut) 0 0 0); filter: drop-shadow(1px 4px 3px #0005); }
/* Follow the curved front edge of the opening. The back lip stays behind the
   card, while this original-image layer covers its lower part and side edges. */
#bosphorus-newyear-stocking .ny-cuff-front {
  z-index:3;
  clip-path:polygon(0 24%,30% 24%,34% 28.2%,40% 29.6%,48% 30.1%,56% 29.9%,64% 28.7%,70% 25.5%,74% 24%,100% 24%,100% 100%,0 100%);
}
#bosphorus-newyear-stocking .ny-fastening-shadow { position: absolute; left: 37%; top: 8.4%; width: 24%; height: 4.2%; border-radius: 50%; background: #07111c50; box-shadow: 0 2px 3px #0005; transform: rotate(-6deg); }
/* Tiny recessed holes, gathered surface and three strands crossing the pin. */
#bosphorus-newyear-stocking .ny-stitch { position: absolute; z-index: 3; width: 3.7%; height: 3.8%; border-radius: 50%; transform: rotate(-18deg); background: radial-gradient(ellipse at 50% 5%,#080d14 0 10%,#ffffff25 16%,transparent 30%),radial-gradient(ellipse at 50% 96%,#080d14 0 10%,#ffffff30 16%,transparent 30%); box-shadow: -2px 0 3px #0003,2px 0 2px #fff1; }
#bosphorus-newyear-stocking .ny-stitch-left { left: 40.5%; top: 8%; }
#bosphorus-newyear-stocking .ny-stitch-right { left: 53.8%; top: 7.3%; }
#bosphorus-newyear-stocking .ny-stitch::after { content: ''; position: absolute; inset: 12% 19%; border-left: 1px solid #e6c98d; border-right: 1px solid #c49a5c; border-radius: 42%; background: linear-gradient(90deg,transparent 35%,#f8e7b7 44% 55%,transparent 65%); box-shadow: 1px 1px 1px #000a; }
#bosphorus-newyear-stocking .ny-lights { position: absolute; inset: 0; z-index:4; }
/* A small enamel clock plate attached to the velvet, moving with the stocking. */
#bosphorus-newyear-stocking .ny-countdown {
  position:absolute; z-index:3; left:25.5%; top:38.5%; width:49%; height:15.5%;
  transform:rotate(-5deg); padding:1.5px;
  background:linear-gradient(135deg,#865511,#ffedac 23%,#b47a24 50%,#ffdf8a 75%,#91601b);
  clip-path:polygon(4% 0,96% 0,100% 7%,100% 93%,96% 100%,4% 100%,0 93%,0 7%);
  filter:drop-shadow(0 2px 2px #0009); pointer-events:none;
}
#bosphorus-newyear-stocking .ny-countdown[hidden] { display:none; }
#bosphorus-newyear-stocking .ny-clock-face { height:100%; display:grid; place-items:center; background:linear-gradient(120deg,#17140f,#060707 60%,#14120e); border:.5px solid #e3ba6680; border-radius:1px; }
#bosphorus-newyear-stocking .ny-clock-digits { font:700 16px/1 Georgia,'Times New Roman',serif; font-variant-numeric:tabular-nums; color:#fff0cd; white-space:nowrap; letter-spacing:-.025em; text-shadow:0 1px 2px #000; }
#bosphorus-newyear-stocking.is-preview .ny-countdown { filter:drop-shadow(0 0 3px #ffe43899); }
#bosphorus-newyear-stocking .ny-bulb { position: absolute; width: 18%; aspect-ratio: 1; transform: translate(-50%,-50%); color: #ffc56a; animation: ny-colour 6.8s linear var(--ny-delay,0s) infinite; }
#bosphorus-newyear-stocking .ny-bulb::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: radial-gradient(circle,currentColor 0%,transparent 68%); opacity: .75; mix-blend-mode: screen; animation: ny-chase-halo 3.36s ease-in-out var(--ny-chase-delay,0s) infinite; }
#bosphorus-newyear-stocking .ny-bulb::after { content: ''; position: absolute; left: 42%; top: 38%; width: 17%; height: 27%; border-radius: 50%; transform: rotate(var(--ny-tilt,0deg)); background: radial-gradient(ellipse at 40% 35%,#fff 0 7%,currentColor 32% 100%); box-shadow: 0 0 4px currentColor,0 0 10px currentColor; animation: ny-chase-core 3.36s ease-in-out var(--ny-chase-delay,0s) infinite; }
#bosphorus-newyear-stocking .ny-local-glow { position: absolute; inset: -15% -25% -5%; color: #ffc56a; background: radial-gradient(ellipse at 50% 45%,currentColor,transparent 68%); opacity: .13; mix-blend-mode: screen; animation: ny-colour 6.8s linear infinite,ny-ambient 3.36s ease-in-out infinite; }
body[data-newyear-badge] .site-header-cta { position: relative; }
body[data-newyear-badge] .site-header-cta::after { content: ''; position: absolute; pointer-events: none; inset: 0; border-radius: inherit; color: #ffc56a; background: radial-gradient(ellipse at 50% 120%,currentColor,transparent 72%); box-shadow: 0 2px 10px -6px currentColor; opacity: .18; animation: ny-colour 6.8s linear infinite; }
@keyframes ny-sway { 0%,100% { transform:rotate(-4.5deg); } 50% { transform:rotate(4.5deg); } }
@keyframes ny-colour { 0%,100% { color:#ffca54; } 20% { color:#ff3d62; } 42% { color:#32f294; } 63% { color:#54caff; } 82% { color:#bd7fff; } }
@keyframes ny-chase-halo { 0%,42%,100% { opacity:.24; transform:scale(.72); } 12%,21% { opacity:.95; transform:scale(1.18); } 30% { opacity:.65; transform:scale(1); } }
@keyframes ny-chase-core { 0%,42%,100% { opacity:.55; filter:brightness(.9); } 12%,21% { opacity:1; filter:brightness(1.25); } 30% { opacity:.9; filter:brightness(1); } }
@keyframes ny-ambient { 0%,100% { opacity:.09; } 50% { opacity:.16; } }
#bosphorus-newyear-stocking.is-paused *,#bosphorus-newyear-stocking.is-paused *::before,#bosphorus-newyear-stocking.is-paused *::after,body[data-newyear-still] .site-header-cta::after { animation-play-state:paused; }
@media (min-width:761px) and (max-width:1023px) { body:has(#main-content > #top.hero) .hero-copy { max-width:calc(100% - 190px); } }
@media (max-width:760px) {
  /* Reserve a small festive row above the title, clear of the sound/menu controls. */
  body:has(#main-content > #top.hero) .hero-inner { padding-top:205px; }
  #bosphorus-newyear-stocking .ny-local-glow { opacity:.08; }
}
@media (prefers-reduced-motion:reduce) {
  #bosphorus-newyear-stocking { transition:none; }
  #bosphorus-newyear-stocking .ny-swing,#bosphorus-newyear-stocking .ny-idle-sway { transform:none!important; will-change:auto; }
  #bosphorus-newyear-stocking *,#bosphorus-newyear-stocking *::before,#bosphorus-newyear-stocking *::after,body[data-newyear-badge] .site-header-cta::after { animation:none!important; }
}

/* A narrow paper tip peeks through the wool opening, between its two lips. */
.ny-paper {
  background: repeating-linear-gradient(8deg,#ffffff0a 0 1px,#b5a48209 1px 2px),linear-gradient(115deg,#fff9e9,#f1e5cb 52%,#fff5df);
  border: 1px solid #cfac6d;
  border-radius: 4px;
  box-shadow: 1px 2px 0 #c5b28d,3px 6px 12px #0c060650;
  overflow: hidden;
}
.ny-paper-frame { position:absolute; inset:6%; border:1px solid #b18b48aa; border-radius:2px; }
.ny-paper-frame::before,.ny-paper-frame::after { content:''; position:absolute; width:20%; height:17%; border:1px solid #b18b48; }
.ny-paper-frame::before { left:3%; top:3%; border-right:0; border-bottom:0; }
.ny-paper-frame::after { right:3%; bottom:3%; border-left:0; border-top:0; }
.ny-paper-corner { position:absolute; top:0; right:0; width:44%; height:28%; clip-path:polygon(0 0,100% 0,100% 100%); background:linear-gradient(135deg,#f3d69c 0%,#d3a35c 5%,#9b233d 7%,#ad3047 54%,#72172b 100%); }
.ny-paper-ribbon { position:absolute; width:9%; inset:0 auto 0 64%; background:linear-gradient(90deg,#6c1523,#ad3041 45%,#741728); box-shadow:1px 0 2px #580c2525; }
.ny-paper-star { position:absolute; left:24%; top:13%; color:#af7b28; font-family:Georgia,serif; font-size:clamp(12px,2vw,28px); line-height:1; text-shadow:0 1px 0 #fff7d8; }
.ny-paper-lines { position:absolute; inset:auto 21% 29%; height:13%; border-top:1px solid #ad925c90; border-bottom:1px solid #ad925c90; }
#bosphorus-newyear-stocking .ny-card-peek {
  position:absolute; z-index:2; left:38.5%; top:22%; width:26%; height:28.5%;
  transform-origin:50% 85%; transform:rotate(-3deg);
  box-shadow:1px 1px 0 #c5b28d,0 1px 2px #5b3b2b30;
  animation:ny-card-escape 4.2s ease-in-out infinite;
}
#bosphorus-newyear-stocking .ny-card-peek .ny-paper-star { font-size:14px; }
#bosphorus-newyear-stocking.is-preview .ny-card-peek { animation:none; transform:translateY(-22%) rotate(-3deg); }
/* Hover/focus is an invitation, never an open action. All bulbs shine together. */
#bosphorus-newyear-stocking.is-preview .ny-bulb { animation:none; color:#ffe438; }
#bosphorus-newyear-stocking.is-preview .ny-bulb::before {
  animation:none; opacity:1; transform:scale(1.65);
  background:radial-gradient(circle,#fffbd5 0%,#ffe84388 22%,#ffd62900 70%);
}
#bosphorus-newyear-stocking.is-preview .ny-bulb::after {
  animation:none; opacity:1; filter:brightness(1.55);
  background:radial-gradient(ellipse at 40% 35%,#fffef1 0 22%,#fff080 48%,#ffdb24 100%);
  box-shadow:0 0 6px #fff8b2,0 0 14px #ffe536,0 0 25px #ffd31c;
}
#bosphorus-newyear-stocking.is-preview .ny-local-glow { animation:none; color:#ffde35; opacity:.3; }
body[data-newyear-preview] .site-header-cta::after { animation:none; color:#ffe34a; opacity:.42; }
#bosphorus-newyear-stocking.is-card-opening .ny-card-peek { animation:none; }
#bosphorus-newyear-stocking.is-card-opening .ny-idle-sway { animation-play-state:paused; }
#bosphorus-newyear-stocking.is-card-away .ny-card-peek { visibility:hidden; }
#bosphorus-newyear-stocking .ny-open-card {
  position:absolute; z-index:5; inset:14% 5% 4% 8%; display:block;
  border:0; border-radius:30%; margin:0; padding:0; background:transparent;
  cursor:pointer; pointer-events:auto; -webkit-tap-highlight-color:transparent;
}
#bosphorus-newyear-stocking .ny-open-card:focus-visible { outline:2px solid #ffe0a1; outline-offset:5px; }
#bosphorus-newyear-stocking .ny-open-card span {
  position:absolute; left:50%; top:102%; transform:translate(-50%,4px); width:max-content;
  padding:6px 11px; border:1px solid #d3b57d70; border-radius:20px;
  background:#121c22eb; color:#fff3d8; font-family:inherit; font-weight:500; font-size:11px; line-height:1.3;
  opacity:0; transition:opacity .2s,transform .2s; pointer-events:none;
}
#bosphorus-newyear-stocking .ny-open-card:is(:hover,:focus-visible) span { opacity:1; transform:translate(-50%,0); }
@keyframes ny-card-escape {
  0%,24%,100% { transform:translateY(0) rotate(-3deg); }
  35% { transform:translateY(-2%) rotate(-4deg); }
  39% { transform:translateY(-3%) rotate(-2deg); }
  43% { transform:translateY(-3%) rotate(-4deg); }
  47% { transform:translateY(-4%) rotate(-2deg); }
  54% { transform:translateY(-5%) rotate(-3deg); }
  65%,72% { transform:translateY(1%) rotate(-2deg); }
  80% { transform:translateY(-1.5%) rotate(-4deg); }
  87% { transform:translateY(0) rotate(-3deg); }
}

/* The dialog's top layer holds the travelling cover and the unfolding spread.
   The background video continues; no video or audio state is changed. */
dialog.ny-card-dialog {
  position:fixed; inset:0; width:100%; height:100%; max-width:none; max-height:none;
  margin:0; padding:24px; border:0; overflow:hidden; background:transparent;
  color:#493c2c; font-family:inherit; perspective:1600px;
}
dialog.ny-card-dialog[open] { display:grid; place-items:center; }
html:has(dialog.ny-card-dialog[open]) { scrollbar-gutter:stable; }
dialog.ny-card-dialog::backdrop { background:transparent; }
.ny-card-shade { position:absolute; inset:0; opacity:0; background:#07121ce3; }
.ny-card-book {
  position:relative; width:min(560px,calc(100vw - 32px),calc((100svh - 104px)*.8)); aspect-ratio:4/5;
  max-height:none; opacity:0; transform-origin:50% 50%;
  perspective:1600px; isolation:isolate;
}
.ny-card-inside {
  position:absolute; inset:0; width:50%; overflow:hidden;
  background:repeating-linear-gradient(3deg,#ffffff0c 0 1px,#c7b8950b 1px 2px),linear-gradient(110deg,#fbf3e2,#f4e9d2);
  box-shadow:0 16px 50px #0005;
}
.ny-card-left { opacity:0; border-radius:5px 0 0 5px; background-color:#f5e6c9; }
.ny-card-right { left:50%; border-radius:0 5px 5px 0; }
.ny-card-left::after { content:''; position:absolute; inset:0 0 0 auto; width:8%; background:linear-gradient(90deg,transparent,#5c3d2414); }
.ny-card-right::after { content:''; position:absolute; inset:0 auto 0 0; width:9%; background:linear-gradient(90deg,#5c3d2426,transparent); }
.ny-inside-border { position:absolute; inset:6%; border:1px solid #b39b663f; border-radius:1px; }
.ny-interior-star { position:absolute; left:0; right:0; top:17%; text-align:center; font:50px/1 Georgia,serif; color:#b99550; }
.ny-card-left h2,.ny-cover-back h2 { position:absolute; left:10%; right:10%; top:40%; margin:0; text-align:center; color:#765731; font:italic 38px/1.15 Georgia,'Times New Roman',serif; letter-spacing:-1px; }
.ny-card-left h2 span,.ny-cover-back h2 span { display:block; margin-bottom:7px; font-family:inherit; font-style:normal; font-size:10px; line-height:1.5; letter-spacing:4px; text-transform:uppercase; }
.ny-card-signature { position:absolute; bottom:14%; left:0; right:0; text-align:center; color:#9a7b49; font-size:9px; letter-spacing:3px; }
.ny-interior-spark { position:absolute; top:16%; left:0; right:0; text-align:center; font:21px/1 Georgia,serif; color:#c4a76d; }
.ny-card-footer { position:absolute; bottom:12%; left:0; right:0; text-align:center; color:#af9770; font-size:8px; letter-spacing:2px; }
.ny-card-cover { position:absolute; inset:0; transform-origin:left center; transform-style:preserve-3d; z-index:2; }
.ny-cover-front,.ny-cover-back { position:absolute; inset:0; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
.ny-cover-front { border-radius:3px 5px 5px 3px; }
.ny-cover-front .ny-paper-star { font-size:56px; }
.ny-cover-back { transform:rotateY(180deg); background:linear-gradient(105deg,#fcf2df,#efe0c3); border:1px solid #ccb686; border-radius:5px 2px 2px 5px; }
.ny-card-dialog:not(.is-card-settled) .ny-card-book,.ny-card-dialog:not(.is-card-settled) .ny-card-cover { will-change:transform; }
.ny-card-close {
  position:absolute; z-index:4; right:-8px; top:-50px; width:38px; height:38px;
  display:grid; place-items:center; padding:0; border:1px solid #e0c79c55;
  border-radius:50%; background:#15212b; color:#fff3d8; cursor:pointer;
  opacity:0; transition:opacity .25s,background .2s;
}
.ny-card-close:hover { background:#31404b; }
.ny-card-close:focus-visible { outline:2px solid #f3c678; outline-offset:4px; }
.is-card-arrived .ny-card-close { opacity:1; }
.is-card-returning .ny-card-close { pointer-events:none; }
.is-card-settled .ny-card-left { opacity:1; }
.is-card-unfolded .ny-card-cover { transform:rotateY(-90deg); }
.is-card-settled .ny-card-cover { pointer-events:none; visibility:hidden; }
.ny-card-dialog.is-card-settled .ny-card-book,.ny-card-dialog.is-card-settled .ny-card-shade { opacity:1; }
.ny-card-campaign { left:0; width:100%; border-radius:9px; background:#071a39; box-shadow:0 20px 70px #0008; }
.ny-card-campaign::after { display:none; }
.ny-campaign-image { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; opacity:0; }
.is-campaign-ready .ny-campaign-image { opacity:1; }
.ny-campaign-status { position:absolute; inset:0; margin:0; display:grid; place-items:center; padding:36px; color:#f4dfb0; text-align:center; font-size:16px; }
.ny-campaign-status[hidden] { display:none; }
.ny-campaign-contact { position:absolute; left:18.5%; right:18.5%; top:90.8%; bottom:3%; border-radius:999px; color:#fff3d8; cursor:pointer; visibility:hidden; }
.is-card-settled .ny-campaign-contact { visibility:visible; }
.ny-campaign-contact span { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.ny-campaign-contact:focus-visible { outline:3px solid #fff0b9; outline-offset:4px; box-shadow:0 0 20px #ffc35d99; }
.ny-campaign-contact:hover { box-shadow:0 0 16px #ffc35d77; }
.ny-card-dialog:not(.is-campaign-ready) .ny-campaign-contact { display:grid; place-items:center; left:8%; right:8%; top:auto; bottom:8%; min-height:48px; padding:10px; background:#7d1424; border:1px solid #d8ac60; text-align:center; font-size:13px; }
.ny-card-dialog:not(.is-campaign-ready) .ny-campaign-contact span { position:static; width:auto; height:auto; overflow:visible; clip-path:none; white-space:normal; }
@media (max-width:600px) {
  .ny-card-left h2,.ny-cover-back h2 { font-size:clamp(22px,6.5vw,34px); }
  .ny-interior-star { font-size:34px; }
  .ny-card-signature { font-size:7px; letter-spacing:1.7px; }
  .ny-card-footer { font-size:6px; letter-spacing:1px; }
  .ny-card-close { right:0; }
  #bosphorus-newyear-stocking .ny-card-peek .ny-paper-star { font-size:8px; }
}
@media (prefers-reduced-motion:reduce) {
  .ny-card-book,.ny-card-cover,.ny-card-close { transition:none!important; }
  .ny-card-dialog.is-card-unfolded .ny-card-cover { display:none; }
}
