:root{
  --vh: 100vh;
  --gold: #E9C77B;
  --amber: #c87b00;
  --ink: #0a0a0a;
  --pill: #ffffff20;
  --text: #f7f7f0;
  --muted: #d7d1c7cc;
  --cards-top: 30vh;
  --fab-top: 18vh;
}

*{box-sizing:border-box;-webkit-tap-highlight-color: transparent;}
html,body{height:100%;background:#000;margin:0;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;}
.app{position:relative;width:100%;height:var(--vh);overflow:hidden;}
.bgvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:contrast(1.05) saturate(0.9) brightness(0.9);z-index:0;}
.vignette{position:absolute;inset:0;background: radial-gradient(ellipse at center, #0000 30%, #0008 90%);pointer-events:none;z-index:1;}
.canvas-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;}
#solarCanvas{z-index:2;}
#fxCanvas{z-index:7;}

.cards{
  position:absolute;left:0;right:0;
  top:var(--cards-top); bottom:86px;
  padding:0 14px 10px;
  display:flex;flex-direction:column;gap:8px;
  perspective:900px; z-index:5;
}
.card{
  display:flex;flex-direction:column;gap:4px;
  padding:10px 12px;
  background:#0b0b0bdd;border:1px solid #ffffff18;border-radius:16px;
  box-shadow:0 4px 24px #0007;
}
.card h4{margin:0;font-size:18px;line-height:1.18;font-weight:700;color:#fffef6;text-align:center;}
.card .mini{font-size:12px;text-align:center;color:var(--muted);}
.price-mini{font-size:13px;color:var(--gold);opacity:.92;text-align:center;margin-top:2px;}

.footer-nav{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:space-evenly;align-items:center;padding:4px 10px;background:linear-gradient(to top,#000a,#0000);gap:4px;z-index:6;}
.footer-nav .day{appearance:none;border:1px solid #ffffff18;background:transparent;color:#eee;opacity:.72;font-size:14px;letter-spacing:.12em;padding:10px 12px;border-radius:12px;transition:.24s transform,.24s opacity,.24s background,.24s box-shadow,.24s color,.24s border-color;}
.footer-nav .day.active{opacity:1;color:#ffde8a;border-color:#ffde8a55;box-shadow:0 0 6px #ffde8a88,0 0 14px #c88c1fcc,0 0 28px #9a5a00aa;text-shadow:0 0 6px #ffde8a,0 0 14px #c88c1f,0 0 28px #9a5a00;}
.footer-nav .day:active{transform:scale(.96);}

.modal[hidden]{display:none;}
.modal{position:absolute;inset:0;display:grid;place-items:center;z-index:9999;}
.modal__backdrop{position:absolute;inset:0;background:#000a;backdrop-filter:blur(2px);z-index:0;}
.modal__card{position:relative;width:92vw;max-width:520px;background:#0b0b0f;border:1px solid #ffffff1a;border-radius:18px;box-shadow:0 20px 60px #000a;overflow:hidden;z-index:1;}
.modal__close{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:10px;border:0;font-size:22px;background:#ffffff10;color:#fff;}
.modal__img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;background:#111;}
.modal__body{padding:12px 14px 16px;}
.modal__body h3{margin:4px 0 6px 0; font-size:18px;}
.pill{display:inline-block;margin:0 0 6px 0;padding:4px 8px;border-radius:999px;background:var(--pill);font-size:12px;color:#fff;}
.price{font-size:16px;color:var(--gold);}

.fab{position:absolute;top:var(--fab-top);width:56px;height:56px;border-radius:16px;background:#0b0b0bcc;border:1px solid #ffffff22;box-shadow:0 8px 24px #000a,inset 0 0 0 1px #0007;display:grid;place-items:center;z-index:6;}
.fab img{width:32px;height:32px;object-fit:contain;filter:drop-shadow(0 0 3px #000);}
.fab-left{left:14px;} .fab-right{right:14px;}
.fab:active{transform:scale(.96);}

/* Swipe animations */
@keyframes cardOutLeft{0%{transform:rotateY(0) translateX(0);opacity:1;}100%{transform:rotateY(-24deg) translateX(-30px);opacity:0;}}
@keyframes cardOutRight{0%{transform:rotateY(0) translateX(0);opacity:1;}100%{transform:rotateY(24deg) translateX(30px);opacity:0;}}
@keyframes cardInLeft{0%{transform:rotateY(24deg) translateX(30px);opacity:0;}100%{transform:rotateY(0) translateX(0);opacity:1;}}
@keyframes cardInRight{0%{transform:rotateY(-24deg) translateX(-30px);opacity:0;}100%{transform:rotateY(0) translateX(0);opacity:1;}}
.card.out-left{animation:cardOutLeft .22s ease both;}
.card.out-right{animation:cardOutRight .22s ease both;}
.card.in-left{animation:cardInLeft .24s ease both;}
.card.in-right{animation:cardInRight .24s ease both;}

:focus-visible{outline:2px dashed #fff5;outline-offset:4px;}
