:root{
  --bg:#08080a;
  --ink:#f4f1ea;
  --muted:rgba(244,241,234,.62);
  --bar-h:60px;
  --ease:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}

/* ───────────────────────── sections ───────────────────────── */
#apps{padding-bottom:var(--bar-h)}

.app{
  position:relative;
  width:100%;
  min-height:clamp(380px,60vh,660px);
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  border-top:1px solid rgba(255,255,255,.05);
  isolation:isolate;
  cursor:pointer;
  transition:filter .6s var(--ease);
  filter:brightness(.5) saturate(.7);
}
.app.is-active{filter:brightness(1) saturate(1)}

/* background layers */
.app__media{
  position:absolute;inset:0;z-index:-2;
  background:
    radial-gradient(120% 130% at 18% 8%, color-mix(in srgb, var(--accent) 42%, transparent), transparent 55%),
    radial-gradient(90% 120% at 90% 110%, color-mix(in srgb, var(--accent2,var(--accent)) 34%, transparent), transparent 60%),
    linear-gradient(120deg,#0c0c10,#141420 60%,#0a0a0e);
  transform:scale(1.02);
  transition:transform 1.2s var(--ease);
}
.app__photo{
  position:absolute;inset:0;z-index:-2;
  width:100%;height:100%;object-fit:cover;
  opacity:0;transition:opacity .8s ease, transform 6s var(--ease);
  transform:scale(1.05);
}
.app__photo.loaded{opacity:.62}
.app.is-active .app__photo.loaded{opacity:.92}
.app.is-active .app__media{transform:scale(1.08)}
.app.is-active .app__photo{transform:scale(1.12)}

/* blue celestial plate (Polyastrology — matches its site) */
.app--navy .app__media{
  background:
    radial-gradient(120% 130% at 70% 12%, #2f4cc4, transparent 55%),
    radial-gradient(90% 120% at 95% 105%, #4a78ff 0%, transparent 55%),
    linear-gradient(135deg,#0c1948 0%,#0a1336 55%,#070d22 100%);
}
.app--navy::before{
  background:linear-gradient(90deg, rgba(5,8,22,.9) 0%, rgba(5,8,22,.55) 40%, rgba(5,8,22,.05) 72%, transparent 100%),
             linear-gradient(0deg, rgba(5,8,22,.6), transparent 45%);
}

/* freestanding brand mark layered in the plate (e.g. astrolabe) */
.app__mark{
  position:absolute;z-index:-1;right:-7%;top:50%;
  width:auto;height:128%;
  transform:translateY(-50%) scale(1);
  opacity:.4;pointer-events:none;
  filter:drop-shadow(0 0 30px rgba(120,160,255,.25));
  transition:transform 1.4s var(--ease),opacity .8s ease;
}
.app.is-active .app__mark{opacity:.7;transform:translateY(-50%) scale(1.06) rotate(8deg)}

/* faint giant wordmark in the plate */
.app__ghost{
  position:absolute;z-index:-1;right:-2%;bottom:-14%;
  font-family:'Fraunces',serif;font-weight:600;
  font-size:clamp(120px,26vw,420px);line-height:.8;
  letter-spacing:-.04em;white-space:nowrap;
  color:color-mix(in srgb,var(--accent) 24%, transparent);
  opacity:.16;pointer-events:none;
  transform:translateY(20px);
  transition:transform 1.2s var(--ease),opacity .8s ease;
}
.app.is-active .app__ghost{opacity:.26;transform:translateY(0)}

/* legibility scrim, anchored left */
.app::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg, rgba(4,4,6,.86) 0%, rgba(4,4,6,.55) 38%, rgba(4,4,6,.08) 70%, transparent 100%),
             linear-gradient(0deg, rgba(4,4,6,.6), transparent 45%);
}

/* accent edge */
.app__edge{
  position:absolute;left:0;top:0;bottom:0;width:4px;z-index:2;
  background:var(--accent);
  transform:scaleY(0);transform-origin:top;
  transition:transform .55s var(--ease);
  box-shadow:0 0 28px 2px color-mix(in srgb,var(--accent) 70%,transparent);
}
.app.is-active .app__edge{transform:scaleY(1)}

/* ───────────────────────── content ───────────────────────── */
.app__inner{
  position:relative;z-index:3;
  width:100%;max-width:1320px;margin:0 auto;
  padding:clamp(28px,5vw,64px) clamp(24px,6vw,80px);
  display:flex;flex-direction:column;gap:22px;
}

.app__head{display:flex;align-items:center;gap:22px}

.app__icon{
  width:clamp(64px,7vw,104px);height:clamp(64px,7vw,104px);
  border-radius:24px;flex:none;
  display:grid;place-items:center;
  font-family:'Fraunces',serif;font-weight:600;
  font-size:clamp(30px,3.4vw,52px);
  color:#0a0a0c;
  background:linear-gradient(150deg, color-mix(in srgb,var(--accent) 92%,white), var(--accent));
  box-shadow:0 18px 40px -16px color-mix(in srgb,var(--accent) 80%,transparent),
             inset 0 1px 0 rgba(255,255,255,.4);
  transition:transform .6s var(--ease);
}
.app__icon--img{background:none;box-shadow:0 18px 40px -16px rgba(0,0,0,.6);overflow:hidden;padding:0}
.app__icon--img img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
/* natural-aspect marks (e.g. line-art logos): no crop, no tile, slight breathing room */
.app__icon--contain{background:none;box-shadow:none;overflow:visible}
.app__icon--contain img{object-fit:contain}
.app.is-active .app__icon{animation:bob 3.4s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-9px) rotate(-1.5deg)}}

.app__titles{display:flex;flex-direction:column;gap:4px}
.app__word{
  font-family:'Fraunces',serif;font-weight:600;
  font-size:clamp(40px,6.4vw,86px);line-height:.92;
  letter-spacing:-.03em;
  text-shadow:0 2px 30px rgba(0,0,0,.5);
}
.app__kicker{
  font-size:clamp(12px,1.1vw,15px);font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;
  color:color-mix(in srgb,var(--accent) 70%,var(--ink));
}

/* hint to interact */
.app__hint{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;color:var(--muted);font-weight:500;
  opacity:0;transform:translateY(6px);
  transition:opacity .5s var(--ease) .05s,transform .5s var(--ease) .05s;
}
.app.is-active .app__hint{opacity:1;transform:none}
.app.is-open .app__hint{display:none}
.app__hint svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}

/* ───────────────────────── expanding summary ───────────────────────── */
.app__panel{
  display:grid;grid-template-rows:0fr;
  opacity:0;
  transition:grid-template-rows .55s var(--ease),opacity .45s ease;
}
.app.is-open .app__panel{grid-template-rows:1fr;opacity:1}
.app__panelInner{overflow:hidden;min-height:0}

.app__copy{
  max-width:62ch;display:flex;flex-direction:column;gap:14px;
  padding-top:6px;
}
.app__copy p{
  font-size:clamp(15px,1.5vw,19px);line-height:1.55;
  color:var(--ink);
}
.app__copy p+p{color:var(--muted)}

.app__actions{
  display:flex;align-items:center;gap:18px;margin-top:22px;
}
.app__open{
  display:inline-flex;align-items:center;gap:10px;
  font-weight:600;font-size:15px;letter-spacing:.01em;
  padding:12px 22px;border-radius:999px;
  background:var(--accent);color:#0a0a0c;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease);
  box-shadow:0 12px 30px -12px color-mix(in srgb,var(--accent) 80%,transparent);
}
.app__open:hover{transform:translateY(-2px);box-shadow:0 18px 38px -14px color-mix(in srgb,var(--accent) 85%,transparent)}
.app__open svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2}

.app__close{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;font-weight:600;color:var(--muted);
  letter-spacing:.04em;text-transform:uppercase;
}
.app__close:hover{color:var(--ink)}
.app__close svg{
  width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;
  transform:rotate(180deg);transition:transform .3s var(--ease);
}

/* ───────────────────────── bottom bar ───────────────────────── */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;height:var(--bar-h);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 clamp(18px,4vw,40px);
  padding-bottom:env(safe-area-inset-bottom);
  background:rgba(8,8,10,.72);
  backdrop-filter:blur(16px) saturate(1.2);
  border-top:1px solid rgba(255,255,255,.08);
}
.bar__brand{display:inline-flex;align-items:center;gap:12px}
.bar__logo{width:26px;height:26px}
.bar__name{
  font-family:'Fraunces',serif;font-weight:600;font-size:18px;letter-spacing:-.01em;
}
.bar__nav{display:flex;gap:8px}
.bar__link{
  font-size:14px;font-weight:500;color:var(--muted);
  padding:8px 14px;border-radius:999px;
  transition:color .25s,background .25s;
}
.bar__link:hover{color:var(--ink);background:rgba(255,255,255,.06)}

/* ───────────────────────── sheet (about/contact) ───────────────────────── */
.sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}
.sheet[hidden]{display:none}
.sheet__scrim{position:absolute;inset:0;background:rgba(4,4,6,.6);backdrop-filter:blur(4px);
  animation:fade .4s ease}
.sheet__card{
  position:relative;z-index:1;width:min(720px,94vw);
  margin-bottom:calc(var(--bar-h) + 14px);
  background:linear-gradient(180deg,#15151b,#0d0d12);
  border:1px solid rgba(255,255,255,.1);border-radius:24px;
  padding:clamp(30px,5vw,52px);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.8);
  animation:rise .5s var(--ease);
}
@keyframes rise{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet__close{
  position:absolute;top:18px;right:18px;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;color:var(--muted);
  background:rgba(255,255,255,.06);transition:color .2s,background .2s;
}
.sheet__close:hover{color:var(--ink);background:rgba(255,255,255,.12)}
.sheet__close svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2}
.sheet__body{text-align:center}
.sheet__body h2{
  font-family:'Fraunces',serif;font-weight:600;font-size:clamp(26px,4vw,38px);
  letter-spacing:-.02em;margin-bottom:18px;
}
.sheet__body p{font-size:clamp(15px,1.6vw,18px);line-height:1.6;color:var(--muted);max-width:52ch;margin-inline:auto}
.sheet__body p+p{margin-top:14px}
.sheet__body a{color:var(--ink);text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3)}
.sheet__body a:hover{border-color:var(--ink)}
.sheet__contact{margin-top:24px;display:flex;flex-direction:column;align-items:center;gap:10px}
.sheet__contact a{display:inline-flex;align-items:center;gap:10px;width:fit-content;
  font-size:17px;font-weight:500;border:none}

/* ───────────────────────── responsive ───────────────────────── */
@media (max-width:760px){
  .app{min-height:clamp(340px,52vh,520px);align-items:flex-end}
  .app::before{background:linear-gradient(0deg, rgba(4,4,6,.92) 0%, rgba(4,4,6,.55) 45%, rgba(4,4,6,.2) 100%)}
  .app__inner{padding:26px 22px 30px}
  .app__head{gap:16px}
  .app__actions{flex-wrap:wrap;gap:14px}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important}
  .app,.app__media,.app__photo,.app__ghost{transition:filter .3s,opacity .3s}
}
