/* --- COOL BEANS v7: Desktop fixed 1280×720 letterboxed; Mobile simple static --- */
:root{
  --fg:#fff;
  --muted:#a6b0c2;
  --accent:#ffb31a;
  --accent-2:#ffd25c;
  --card:#0a0f1cbb;
  --border:#ffffff33;
  --shadow:rgba(0,0,0,.45);
  --bg:#05070e;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  color: var(--fg);
  overflow:hidden;
  background:var(--bg);
}

/* Desktop Hero */
.hero{ position:relative; min-height:100vh; width:100%; display:grid; place-items:center; isolation:isolate; }
.hero .three{ position:absolute; inset:0; }

/* Place canvas centered (JS sets size/transform). Add a container helper */
#three-container canvas{ position:absolute; left:50%; top:50%; transform:translate(-50%, -50%); }

.topbar{
  position:absolute; top:1rem; left:0; right:0;
  display:flex; align-items:center; justify-content:space-between;
  padding:0 1rem; gap:1rem;
}
.brand{display:flex; align-items:center; gap:.75rem; }
.brand img{width:56px; height:56px; border-radius:50%; box-shadow:0 6px 16px var(--shadow);}
.brand h1{ margin:0; letter-spacing:.02em; line-height:1; font-family:Bangers,cursive; font-size:2.4rem; text-shadow:0 2px 0 #000, 0 8px 30px rgba(0,0,0,.6); }
.brand p{margin:.15rem 0 0; font-weight:600; color:var(--muted)}

.nav .pill{
  display:flex; align-items:center; gap:.5rem;
  text-decoration:none; color:#000;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
  padding:.5rem .75rem; border-radius:999px; font-weight:800;
  box-shadow:0 8px 24px rgba(255,179,26,.35);
}
.tg{width:20px; height:20px; display:block}
.hide-sm{display:none}
@media(min-width:720px){ .hide-sm{display:inline} }

.center-copy{
  position:absolute; top:15vh; left:50%; transform:translateX(-50%);
  text-align:center; text-shadow: 0 2px 0 rgba(0,0,0,.8), 0 10px 30px rgba(0,0,0,.6);
  user-select:none;
}
.center-copy h2{margin:0; font-size: clamp(1.05rem,2.8vw,1.8rem); font-weight:800}
.center-copy kbd{display:inline-block; padding:.15rem .4rem; border:2px solid #fff; border-bottom-width:4px; border-radius:.4rem; font-weight:800}

.contract-card{
  position:absolute; bottom:7vh; left:50%; transform:translateX(-50%);
  width:min(840px, 92vw);
  background:var(--card);
  border:1px solid var(--border);
  border-radius:1rem; padding:1.1rem;
  box-shadow:0 16px 50px rgba(0,0,0,.55);
  backdrop-filter: blur(8px) saturate(1.1);
}
.contract-card .label{ font-weight:800; letter-spacing:.12em; font-size:.78rem; color:var(--muted); margin-bottom:.25rem}
.contract-card .addr{
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: clamp(1.05rem, 4.6vw, 1.5rem);
  font-weight:900;
  letter-spacing:.03em;
  word-break: break-all;
  color:#fff;
  text-shadow:0 2px 0 #000, 0 10px 30px rgba(0,0,0,.6);
}
.cta-row{ display:flex; gap:.65rem; margin-top:.9rem; flex-wrap:wrap }
.btn{
  appearance:none; border:0; border-radius:.7rem; padding:.68rem 1rem; font-weight:900; cursor:pointer;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
  color:#000; box-shadow:0 8px 24px rgba(255,179,26,.35);
}
.btn.ghost{
  background:transparent; color:#fff; border:1px solid #ffffff66; box-shadow:none;
}
.btn:active{ transform: translateY(1px) }

#flash{ position:absolute; inset:0; background: radial-gradient(circle at center, rgba(255,255,255,.85), rgba(255,255,255,0) 60%);
  opacity:0; pointer-events:none; transition:opacity .25s ease; mix-blend-mode:screen; z-index:2; }
#flash.active{opacity:.45}

/* Footer */
.foot{ position:fixed; bottom:.5rem; left:0; right:0; text-align:center; font-size:.8rem; opacity:.8; pointer-events:none; z-index:10; }

/* ---------------- Mobile/Tablet simple layout ---------------- */
.mhero{ display:none; }

@media (max-width: 1024px) {
  .hero--desktop{ display:none; }
  .mhero{ display:block; position:relative; min-height:100vh; width:100%; overflow:hidden;
          background:
            radial-gradient(180vmax 120vmax at 20% -10%, rgba(48,90,200,.35), transparent 60%),
            radial-gradient(140vmax 100vmax at 80% 110%, rgba(210,60,200,.28), transparent 60%),
            var(--bg);
  }

  .mtopbar{
    position:relative; padding:14px 14px 0; display:flex; justify-content:space-between; align-items:center; gap:10px;
  }
  .mbrand{ display:flex; align-items:center; gap:10px; }
  .mbrand img{ width:44px; height:44px; border-radius:50%; box-shadow:0 6px 16px rgba(0,0,0,.45); }
  .mbrand h1{ font-family:Bangers,cursive; font-size:1.9rem; margin:0; }
  .mbrand p{ margin:2px 0 0; color:var(--muted); font-weight:600; font-size:.9rem; }
  .tg-pill{ display:flex; align-items:center; gap:8px; text-decoration:none; padding:10px 12px; border-radius:999px;
            background:linear-gradient(180deg,var(--accent),var(--accent-2)); color:#000; font-weight:900; box-shadow:0 8px 24px rgba(255,179,26,.35);}

  .mcenter{ position:relative; display:grid; place-items:center; margin-top:6vh; }
  .mshine{ position:absolute; width:72vw; height:72vw; max-width:420px; max-height:420px; border-radius:50%;
           background: radial-gradient(circle at 50% 50%, rgba(255,245,200,.55), rgba(255,255,255,0) 60%);
           filter: blur(2px); }
  .bean-static{ width:68vw; max-width:380px; height:auto; filter: drop-shadow(0 14px 40px rgba(0,0,0,.55)); z-index:1; }

  .mcard{
    position: absolute; bottom: 8vh; left: 50%; transform: translateX(-50%);
    width: 92vw; background: #0a0f1cbb; backdrop-filter: blur(8px) saturate(1.1);
    border:1px solid #ffffff22; border-radius: 16px; padding: 14px;
    box-shadow: 0 16px 40px rgba(0,0,0,.55);
  }
  .mlabel{ font-weight:800; letter-spacing:.12em; font-size:.78rem; color:var(--muted); margin-bottom:6px }
  .maddr{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Courier New", monospace;
          font-weight:900; font-size: clamp(1rem, 5.2vw, 1.6rem); word-break: break-all; }
  .mrow{ display:flex; gap:8px; margin-top:10px; flex-wrap:wrap }
  .mbtn{ appearance:none; border:none; border-radius:12px; padding:12px 14px; font-weight:900; background:#fff; color:#000; }
  .mbtn.outline{ background:transparent; color:#fff; border:1px solid #ffffff66 }
  .mbtn.primary{ background:linear-gradient(180deg,var(--accent),var(--accent-2)); color:#000; }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce){
  #flash{transition:none}
}

/* Disclaimer Modal */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.75);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}

.modal-content {
  background: var(--card);
  color: var(--fg);
  padding: 2rem;
  border-radius: 1rem;
  max-width: 520px;
  width: 90%;
  text-align: left;
  line-height: 1.5;
  box-shadow: 0 12px 40px var(--shadow);
  animation: fadeInUp .4s ease;
}

.modal-content h2 {
  margin-top: 0;
  margin-bottom: 1rem;
  text-align: center;
  color: var(--accent);
}

.modal-content p {
  margin-bottom: 1rem;
}

.modal-content .btn {
  display: block;
  margin: 1.5rem auto 0;
}

/* Smooth fade-up animation */
@keyframes fadeInUp {
  from {opacity:0; transform: translateY(20px);}
  to {opacity:1; transform: translateY(0);}
}


/* Scrollable modal fade shadows */
.modal-content {
  position: relative;
}

.modal-content::before,
.modal-content::after {
  content: "";
  position: sticky;
  left: 0;
  right: 0;
  height: 1.5rem;
  pointer-events: none; /* Don't block interaction */
  z-index: 5;
}

.modal-content::before {
  top: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,0.45), transparent);
}

.modal-content::after {
  bottom: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.45), transparent);
}

@media (max-width: 768px) {
  .tg {
    width: 16px;
    height: 16px;
  }
}

@media (max-width: 480px) {
  .tg {
    width: 14px;
    height: 14px;
  }
}


/* ================= Disclaimer Modal ================= */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.75);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  padding: 1rem;
}

.modal-content {
  background: var(--card);
  color: var(--fg);
  padding: 2rem;
  border-radius: 1rem;
  max-width: 520px;
  width: 90%;
  text-align: left;
  line-height: 1.5;
  box-shadow: 0 12px 40px var(--shadow);
  animation: fadeInUp .4s ease;
  display: flex;
  flex-direction: column;
  position: relative;
}

.modal-content h2 {
  margin-top: 0;
  margin-bottom: 1rem;
  text-align: center;
  color: var(--accent);
}

.scroll-body {
  flex: 1 1 auto;
  overflow-y: auto;
  margin-bottom: 1rem;
  padding-right: 0.25rem;
}

.scroll-fade {
  position: absolute;
  bottom: 3.2rem; /* sits above button */
  left: 0;
  right: 0;
  height: 1rem;
  background: linear-gradient(to top, rgba(0,0,0,0.45), transparent);
  pointer-events: none;
  transition: opacity 0.25s ease;
}
.scroll-fade.hidden {
  opacity: 0;
}

.modal-content .btn {
  flex: 0 0 auto;
  display: block;
  width: 100%;
  margin-top: auto;
  font-size: 1rem;
}

/* Smooth fade-up animation */
@keyframes fadeInUp {
  from {opacity:0; transform: translateY(20px);}
  to {opacity:1; transform: translateY(0);}
}

/* ================= Responsive ================= */

/* Tablet */
@media (max-width: 768px) {
  .modal-content {
    max-width: 90%;
    padding: 1.2rem;
    font-size: 0.9rem;
  }
  .modal-content h2 { font-size: 1.3rem; }
  .modal-content p, .modal-content ul { font-size: 0.9rem; }
  .modal-content .btn { padding: 0.8rem; }
  .tg { width: 16px; height: 16px; } /* shrink Telegram icon */
}

/* Mobile */
@media (max-width: 480px) {
  .modal-content {
    max-width: 92%;
    padding: 1rem;
    font-size: 0.85rem;
  }
  .modal-content h2 { font-size: 1.1rem; }
  .modal-content .btn { font-size: 0.95rem; padding: 0.75rem; }
  .tg { width: 14px; height: 14px; } /* smaller Telegram icon */
}

/* Ultra-small (e.g. iPhone SE) */
@media (max-width: 380px) {
  .modal {
    align-items: flex-start;  /* align to top */
  }
  .modal-content {
    max-width: 95%;
    max-height: 90vh;
    font-size: 0.82rem;
    line-height: 1.35;
  }
}


/* Contract address responsive scaling */

/* Tablet */
@media (max-width: 768px) {
  .contract-card .addr {
    font-size: 1.2rem;   /* smaller than desktop */
    word-break: break-all;
  }
  .maddr {
    font-size: 1rem;
  }
}

/* Mobile */
@media (max-width: 480px) {
  .contract-card .addr {
    font-size: 1rem;
  }
  .maddr {
    font-size: 0.68rem;
  }
}

/* Ultra-small (e.g. iPhone SE) */
@media (max-width: 380px) {
  .contract-card .addr {
    font-size: 0.85rem;
  }
  .maddr {
    font-size: 0.68rem;
  }
}

/* Contract card responsive adjustments */

/* Tablet */
@media (max-width: 768px) {
  .contract-card {
    padding: 0.9rem;
    border-radius: 0.8rem;
    margin: 0 auto 1rem;
  }
}

/* Mobile */
@media (max-width: 480px) {
  .contract-card {
    padding: 0.7rem;
    border-radius: 0.6rem;
    margin: 0 auto 0.8rem;
  }

  .contract-card .label {
    font-size: 0.7rem;
  }

  .contract-card .addr {
    font-size: 0.9rem;
    word-break: break-all;
  }
}

/* Ultra-small (e.g. iPhone SE) */
@media (max-width: 380px) {
  .contract-card {
    padding: 0.6rem;
    margin: 0 auto 0.6rem;
  }

  .contract-card .addr {
    font-size: 0.8rem;
  }
}


/* Fix overlapping contract card buttons on small screens */

/* Tablet */
@media (max-width: 768px) {
  .cta-row {
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.6rem;
  }
  .cta-row .btn {
    flex: 1 1 45%;     /* allow two per row */
    min-width: 120px;
  }
}

/* Mobile phones */
@media (max-width: 480px) {
  .cta-row {
    flex-direction: column;   /* stack buttons vertically */
    align-items: stretch;
    gap: 0.5rem;
    margin-top: 0.6rem;
  }
  .cta-row .btn {
    flex: 1 1 auto;
    width: 100%;
    text-align: center;
    padding: 0.75rem;
  }

  /* contract card spacing */
  .contract-card {
    padding: 0.7rem;
    border-radius: 0.6rem;
  }

  .contract-card .addr {
    font-size: 0.9rem;
    line-height: 1.4;
    margin-bottom: 0.4rem;
  }
}

/* Ultra-small (iPhone SE etc) */
@media (max-width: 380px) {
  .cta-row {
    gap: 0.4rem;
  }
  .cta-row .btn {
    font-size: 0.9rem;
    padding: 0.65rem;
  }
  .contract-card .addr {
    font-size: 0.82rem;
  }
}


/* Truncate contract address on mobile */
@media (max-width: 480px) {
  .contract-card .addr,
  .maddr {
    font-size: 0.9rem;
    white-space: nowrap;      /* prevent wrapping */
    overflow: hidden;         /* hide overflow */
    text-overflow: ellipsis;  /* show ... */
    display: block;
    max-width: 100%;          /* fit in card */
  }
}

/* Extra small (iPhone SE etc.) */
@media (max-width: 380px) {
  .contract-card .addr,
  .maddr {
    font-size: 0.8rem;
  }
}


/* Contract Card Redesign */
.contract-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: 1rem 1.2rem;
  margin: 1.2rem auto;
  text-align: center;
  box-shadow: 0 12px 30px rgba(0,0,0,0.45);
}

.contract-card .label {
  font-weight: 800;
  letter-spacing: .1em;
  font-size: 0.75rem;
  color: var(--muted);
  margin-bottom: 0.5rem;
  text-transform: uppercase;
}

/* Address pill */
.contract-card .addr {
  display: inline-block;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 0.6rem;
  padding: 0.4rem 0.6rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
  word-break: break-all;
  margin-bottom: 0.8rem;
}

/* CTA row redesign */
.cta-row {
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
  justify-content: center;
}

.cta-row .btn {
  flex: 1 1 auto;
  min-width: 130px;
  border-radius: 0.7rem;
  padding: 0.7rem 1rem;
  font-weight: 800;
  text-align: center;
}

/* Mobile adjustments */
@media (max-width: 480px) {
  .contract-card {
    padding: 0.8rem 1rem;
    border-radius: 0.8rem;
  }

  .contract-card .addr {
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
  }

  .cta-row {
    flex-direction: column;
    align-items: stretch;
  }

  .cta-row .btn {
    width: 100%;
  }
}

/* Mobile copy toast */
#mobile-copy-toast {
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent, #ffb31a);
  color: #000;
  font-weight: 700;
  padding: 0.6rem 1rem;
  border-radius: 0.6rem;
  box-shadow: 0 4px 20px rgba(0,0,0,0.4);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease, transform 0.3s ease;
  z-index: 9999;
}
#mobile-copy-toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(-10px);
}


/* Scale down bean image on smaller screens */
@media (max-width: 768px) {
  .bean-static {
    max-width: 260px;
    width: 65vw;
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
}

@media (max-width: 480px) {
  .bean-static {
    max-width: 200px;
    width: 60vw;
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
  }
}




