/* ================================================================
 * melotune 3.0 — the site as a mood music player
 * Dark chassis (the app's), one live accent = the mood the visitor is
 * touching. Loaded after melotune-2.8.css: body.mmp re-tokens the shared
 * design system (nav, footer, buttons, lists) to dark, then adds the
 * landing's own components. Support / legal / mood pages stay on paper.
 * ================================================================ */

body.mmp{
  --bg:#0b0b0d; --bg-2:#111114; --card:#141418;
  --ink:#f1efe9; --ink-2:#cfcdc6; --mute:#9a978f; --mute-2:#77756f;
  --rule:#232328; --rule-2:#34343b;
  /* live accent — set by js/moods.js from the app's colour function */
  --acc-r:245; --acc-g:159; --acc-b:82;
  --acc:rgb(var(--acc-r) var(--acc-g) var(--acc-b));
  --acc-soft:rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .16);
  --acc-glow:rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .45);
  --accent:var(--acc); --accent-ink:var(--acc);
  background:var(--bg); color:var(--ink);
  transition:background 1s ease;
}
body.mmp .nav{background:rgb(11 11 13 / .78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--rule);}
body.mmp .nav-links .pill{border-color:var(--acc);color:var(--acc);transition:all .6s ease;}
body.mmp .btn{border-color:var(--rule-2);color:var(--ink);}
body.mmp .btn.primary{background:var(--acc);color:#0b0b0d;border-color:var(--acc);transition:all .6s ease;}
body.mmp .btn.primary:hover{filter:brightness(1.08);}
body.mmp .btn.primary .v{color:rgb(11 11 13 / .6);}
body.mmp footer{border-top:1px solid var(--rule);}
body.mmp .foot-grid a{color:var(--ink-2);}
body.mmp .feature-list li{border-color:var(--rule);color:var(--ink-2);}
body.mmp .feature-list li b{color:var(--ink);}
body.mmp .feature-list li .idx{color:var(--acc);}
body.mmp a:hover{color:var(--acc);}
@media (prefers-reduced-motion: reduce){ body.mmp, body.mmp *{transition:none !important; animation:none !important;} }

/* ---------- shared bits ---------- */
.eyebrow{font-family:"Geist Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute);}
.eyebrow .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--acc);margin-right:10px;vertical-align:middle;box-shadow:0 0 12px var(--acc-glow);transition:all .6s ease;}
.h2{font-family:"Geist",sans-serif;font-weight:400;font-size:clamp(30px,3.6vw,46px);line-height:1.05;letter-spacing:-.025em;margin:10px 0 14px;max-width:24ch;text-wrap:balance;}
.h2 em{font-family:"Instrument Serif",serif;font-style:italic;color:var(--acc);transition:color .6s ease;}
.sub{color:var(--ink-2);max-width:60ch;font-size:17px;line-height:1.55;margin:0;}
.lines{list-style:none;padding:0;margin:22px 0 0;}
.lines li{display:grid;grid-template-columns:20px 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--rule);font-size:15.5px;color:var(--ink-2);}
.lines li:last-child{border-bottom:1px solid var(--rule);}
.lines li i{font-style:normal;color:var(--acc);font-family:"Geist Mono",monospace;font-size:11px;letter-spacing:.1em;padding-top:4px;transition:color .6s ease;}
.lines li b{color:var(--ink);font-weight:500;}
.chip{display:inline-block;font-family:"Geist Mono",monospace;font-size:11px;letter-spacing:.08em;padding:4px 9px;border:1px solid var(--rule-2);border-radius:999px;color:var(--ink-2);margin:0 6px 6px 0;}
.chip b{color:var(--ink);font-weight:500;}
.phone{display:block;width:100%;height:auto;border-radius:26px;box-shadow:0 0 0 1px rgb(255 255 255 / .06),0 40px 90px rgb(0 0 0 / .6),0 0 120px var(--acc-soft);transition:box-shadow .8s ease;}
.phone-frame{max-width:320px;margin:0 auto;}

/* ---------- hero ---------- */
.hero3{position:relative;overflow:hidden;padding:120px 0 72px;min-height:92vh;display:flex;align-items:center;
  background:
    radial-gradient(900px 620px at 72% 38%, rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .22), transparent 62%),
    radial-gradient(700px 520px at 14% 92%, rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .10), transparent 60%);
  transition:background 1.1s ease;}
.hero3 .grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;}
.hero3 h1{font-family:"Geist",sans-serif;font-weight:500;font-size:clamp(46px,6.4vw,92px);line-height:.98;letter-spacing:-.03em;margin:14px 0 18px;text-wrap:balance;}
.hero3 h1 em{font-family:"Instrument Serif",serif;font-style:italic;font-weight:400;color:var(--acc);transition:color .6s ease;}
.hero3 .lede{color:var(--ink-2);font-size:18px;max-width:52ch;margin:0;}
.hero3 .fine{margin-top:16px;font-family:"Geist Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);}
.hero3 .fine .sep{margin:0 10px;color:var(--rule-2);}
.now{margin-top:26px;padding:14px 16px;border:1px solid var(--rule);border-radius:16px;background:rgb(255 255 255 / .03);display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;max-width:540px;}
.orb{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle at 35% 30%, #fff8, var(--acc) 42%, rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .35) 100%);box-shadow:0 0 44px var(--acc-glow);transition:all .7s ease;animation:breathe 4.5s ease-in-out infinite;}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
.now b{display:block;font-size:20px;letter-spacing:-.01em;font-weight:500;}
.now small{display:block;color:var(--mute);font-family:"Geist Mono",monospace;font-size:11.5px;letter-spacing:.04em;margin-top:3px;}
.now small a{color:var(--acc);text-decoration:none;}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px;align-items:center;}
.badge{display:inline-block;line-height:0;border-radius:8px;transition:opacity .2s ease;}
.badge img{display:block;width:150px;height:50px;}
.badge:hover{opacity:.85;}
.req{margin-top:14px;font-size:13px;color:var(--mute);max-width:52ch;}
.mmap-wrap{position:relative;max-width:520px;width:100%;justify-self:center;}
.mmap{display:grid;grid-template-columns:repeat(20,1fr);gap:3px;padding:14px;border-radius:22px;background:rgb(255 255 255 / .025);border:1px solid var(--rule);box-shadow:0 30px 100px rgb(0 0 0 / .6);touch-action:none;}
.mmap i{display:block;aspect-ratio:1;border-radius:3px;background:var(--c);opacity:.6;transition:opacity .25s,transform .25s;cursor:crosshair;}
.mmap i:hover,.mmap i.on{opacity:1;transform:scale(1.35);outline:1px solid #fff;z-index:2;}
.mmap-axis{position:absolute;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--mute);}
.mmap-axis.e{left:50%;bottom:-24px;transform:translateX(-50%);}
.mmap-axis.n{left:-34px;top:50%;transform:rotate(-90deg) translateX(50%);transform-origin:left;}
.mmap-hint{margin-top:38px;text-align:center;color:var(--mute);font-size:12.5px;font-family:"Geist Mono",monospace;letter-spacing:.04em;}
.hero3 .corner{position:absolute;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute-2);line-height:1.8;}
.hero3 .corner.tl{top:76px;left:28px;}.hero3 .corner.tr{top:76px;right:28px;text-align:right;}

/* ---------- moments ---------- */
.moment{padding:96px 0;border-top:1px solid var(--rule);position:relative;}
.moment.tint{background:linear-gradient(180deg, rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .07), transparent 55%);}
.moment .cols{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center;}
.moment .cols.flip{grid-template-columns:.9fr 1.1fr;}
.moment .cols.flip > :first-child{order:2;}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:560px;margin:0 auto;}
.duo .phone{border-radius:22px;}
.moods4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:34px;}
.mood-card{display:block;text-decoration:none;color:#0b0b0d;border-radius:18px;padding:22px 20px 18px;min-height:230px;position:relative;overflow:hidden;transition:transform .3s ease;background:var(--tint,#888);}
.mood-card:hover{transform:translateY(-3px);color:#0b0b0d;}
.mood-card .k{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;opacity:.7;}
.mood-card b{display:block;font-size:26px;letter-spacing:-.02em;font-weight:500;margin:6px 0 8px;}
.mood-card p{margin:0;font-size:14px;line-height:1.45;opacity:.85;}
.mood-card .presets{margin-top:14px;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;opacity:.8;line-height:1.7;}
.mood-card .arrow{position:absolute;right:16px;top:14px;font-size:18px;opacity:.6;}
.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px;}
.strip figure{margin:0;background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:16px;}
.strip figure img{display:block;width:100%;height:auto;border-radius:14px;}
.strip figcaption{margin-top:12px;font-size:14px;color:var(--ink-2);}
.strip figcaption b{display:block;color:var(--ink);font-weight:500;font-size:15px;margin-bottom:2px;}
.panels{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:34px;}
.panel3{background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:26px 24px;}
.panel3 .k{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--acc);}
.panel3 h3{font-family:"Geist",sans-serif;font-weight:400;font-size:24px;letter-spacing:-.02em;margin:10px 0 12px;line-height:1.15;}
.panel3 h3 em{font-family:"Instrument Serif",serif;font-style:italic;}
.panel3 p{color:var(--ink-2);margin:0 0 10px;font-size:15px;}
.panels.three{grid-template-columns:repeat(3,1fr);}
.panel3 .big{font-family:"Instrument Serif",serif;font-size:56px;line-height:1;letter-spacing:-.02em;color:var(--acc);margin:14px 0 4px;font-variant-numeric:tabular-nums;transition:color .6s ease;}

.qf3{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:34px;border:1px solid var(--rule);border-radius:16px;overflow:hidden;}
.qf3 .item{padding:18px 20px;border-right:1px solid var(--rule);background:var(--card);}
.qf3 .item:last-child{border-right:0;}
.qf3 .k{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--acc);}
.qf3 .v{margin-top:8px;font-size:13.5px;color:var(--ink-2);line-height:1.5;}
.mesh3{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:start;}
body.mmp .diagram{background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:16px;}
body.mmp .diagram .diag-head{color:var(--mute);}
body.mmp .legend{color:var(--mute);border-color:var(--rule);}
body.mmp .legend i{background:var(--ink);}body.mmp .legend i.acc{background:var(--acc);}body.mmp .legend i.out{border-color:var(--ink);background:transparent;}
.install{padding:110px 0;text-align:center;border-top:1px solid var(--rule);
  background:radial-gradient(700px 400px at 50% 100%, rgb(var(--acc-r) var(--acc-g) var(--acc-b) / .22), transparent 70%);transition:background 1s ease;}
.install .h2{margin:10px auto 14px;}
.install .sub{margin:0 auto;}
.pull3{font-family:"Instrument Serif",serif;font-size:clamp(26px,3.2vw,40px);line-height:1.2;letter-spacing:-.01em;max-width:30ch;margin:0 auto;color:var(--ink);text-align:center;}
.pull3 em{color:var(--acc);}

@media (max-width:960px){
  .hero3{padding:96px 0 56px;min-height:0;}
  .hero3 .grid,.moment .cols,.moment .cols.flip,.mesh3{grid-template-columns:1fr;gap:34px;}
  .moment .cols.flip > :first-child{order:0;}
  .moods4{grid-template-columns:1fr 1fr;}
  .strip,.panels,.panels.three{grid-template-columns:1fr;}
  .qf3{grid-template-columns:1fr 1fr;}
  .qf3 .item{border-bottom:1px solid var(--rule);}
  .hero3 .corner{display:none;}
  .phone-frame{max-width:280px;}
}
@media (max-width:560px){.moods4{grid-template-columns:1fr;} .qf3{grid-template-columns:1fr;} .duo{grid-template-columns:1fr;max-width:280px;}}

/* ---------- journey slideshow: one journey, four moments ---------- */
.slides{position:relative;width:100%;max-width:340px;margin:0 auto;aspect-ratio:3/5;justify-self:center;}
.slides .phone{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;animation:slidefade 20s infinite;}
.slides .phone:nth-child(1){animation-delay:0s}.slides .phone:nth-child(2){animation-delay:5s}.slides .phone:nth-child(3){animation-delay:10s}.slides .phone:nth-child(4){animation-delay:15s}
@keyframes slidefade{0%{opacity:0}4%{opacity:1}25%{opacity:1}30%{opacity:0}100%{opacity:0}}
.slide-caps{position:absolute;left:0;right:0;bottom:-34px;text-align:center;font-family:"Geist Mono",monospace;font-size:11.5px;letter-spacing:.04em;color:var(--mute);height:18px;}
.slide-caps span{position:absolute;left:0;right:0;opacity:0;animation:slidefade 20s infinite;}
.slide-caps span:nth-child(1){animation-delay:0s}.slide-caps span:nth-child(2){animation-delay:5s}.slide-caps span:nth-child(3){animation-delay:10s}.slide-caps span:nth-child(4){animation-delay:15s}
.slide-dots{position:absolute;left:0;right:0;bottom:-56px;display:flex;justify-content:center;gap:8px;}
.slide-dots i{width:6px;height:6px;border-radius:50%;background:var(--rule-2);animation:dotpulse 20s infinite;}
.slide-dots i:nth-child(1){animation-delay:0s}.slide-dots i:nth-child(2){animation-delay:5s}.slide-dots i:nth-child(3){animation-delay:10s}.slide-dots i:nth-child(4){animation-delay:15s}
@keyframes dotpulse{0%{background:var(--rule-2)}4%{background:var(--acc)}25%{background:var(--acc)}30%{background:var(--rule-2)}100%{background:var(--rule-2)}}
.moment .cols .slides{margin-bottom:64px;}
@media (prefers-reduced-motion: reduce){.slides .phone,.slide-caps span,.slide-dots i{animation:none !important}.slides .phone:first-child,.slide-caps span:first-child{opacity:1}.slide-dots i:first-child{background:var(--acc)}}
