/* ───────── ABOUT ───────── */
/* ───────── ABOUT ───────── */
#aboutOverlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.70);
  z-index: 4000;              /* above socialDock (2001) */
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
}

#aboutOverlay.show{
  display: flex;
}

/* the panel itself */
#aboutPanel{
  width: min(860px, 96vw);
  height: min(720px, 88vh);

  background: rgb(0,0,0);
  box-shadow: 0 0 0 1px rgba(255,255,255,0.85);

  border-radius: 0px;
  overflow: hidden;

  display: flex;
  flex-direction: column;
}

/* header row */
.aboutHead{
  min-height: 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;

  padding: 14px 18px;
  background: rgba(0,0,0,0.35);
  border-bottom: 1px solid rgba(255,255,255,0.12);
}

.aboutTitleWrap{
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

#aboutTitle{
  color: rgba(255,255,255,0.92);
  font-size: 14px;
  letter-spacing: 0.02em;
}

.aboutMeta{
  color: rgba(255,255,255,0.60);
  font-size: 12px;
}

/* close button */
.aboutClose{
  background: none;
  border: none;
  color: rgba(255,255,255,0.9);
  font-size: 22px;
  cursor: pointer;
}

/* scrollable body */
.aboutBody{
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 18px;

  color: rgba(255,255,255,0.90);
  font-size: 13px;
  line-height: 1.55;
}

/* links inside about */
.aboutBody a{
  color: rgba(255,255,255,0.92);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.aboutBody a:hover{
  opacity: 0.9;
  color: rgb(255, 238, 0);
}

/* thumbnail grid */
.aboutThumbTitle{
  margin: 14px 0 10px;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.85;
}

.aboutThumbGrid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

@media (max-width: 820px){
  .aboutThumbGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.aboutThumb{
  display: block;
  border: 1px solid rgba(255,255,255,0.35);
  background: rgba(0,0,0,0.14);
  text-decoration: none;
  overflow: hidden;
}
.aboutThumb:hover{ border-color: rgb(255, 238, 0); }

.aboutThumb img{
  width: 100%;
  height: 110px;
  object-fit: cover;
  display: block;
}

.aboutThumbCap{
  padding: 8px 10px;
  font-size: 12px;
  opacity: 0.85;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* inline images in HTML blocks */
.aboutInlineImg{
  max-width: 100%;
  height: auto;
  display: block;
  border: 1px solid rgba(255,255,255,0.22);
  background: rgba(0,0,0,0.18);
}

/* OPTIONAL: hide scrollbar (Chrome/Safari) */
.aboutBody::-webkit-scrollbar{
  width: 0;
  height: 0;
  display: none;
}
/* OPTIONAL: hide scrollbar (Firefox) */
.aboutBody{
  scrollbar-width: none;
}



:root{
  --fsPanelH: 170px;          /* panel height */
  --fsPanelLine: 2px;         /* divider thickness */
  --fsPanelLineCol: rgba(255,255,255,0.85);
}










/* ───────── HOLE-CLIPPED FULLSCREEN BOTTOM PANEL (put #fsBottomPanel INSIDE #windowStack) ───────── */
#fsBottomPanel{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;

  height: var(--fsPanelH);
  background: rgba(0,0,0,0.88);
  backdrop-filter: blur(6px);
  border-top: var(--fsPanelLine) solid var(--fsPanelLineCol);

  transform: translateY(110%);
  transition: transform var(--fsDur) var(--fsEase);
  will-change: transform;

  z-index: 999;
  pointer-events: none;
}

body.hero-expanded #fsBottomPanel{
  transform: translateY(0);
}

#fsBottomPanel .fsPanelGrid{
  height: 100%;
  display: grid;
  grid-template-columns: 0.3fr 1px 1fr 1px 1fr;
}

#fsBottomPanel .fsPanelDivider{
  background: var(--fsPanelLineCol);
}

@media (max-width: 820px){

  :root{ --fsPanelH: clamp(84px, 18vh, 210px); }
}

html.no-hole-trans #fsBottomPanel{
  transition: none !important;
}


/* Make sure panel + grid actually have height */
#fsBottomPanel{
  height: var(--fsPanelH, 120px);
}
#fsBottomPanel .fsPanelGrid{
  height: 100%;
}

/* Ensure cells stretch (not centered with shrinking content) */
#fsBottomPanel .fsPanelCell{
  height: 100%;
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  min-height: 0;
  min-width: 0;
}

/* If your overlay/panel uses pointer-events:none anywhere, re-enable input */
#fsBottomPanel,
#fsBottomPanel *{
  pointer-events: auto;
}

/* Column 3 split */
#fsBottomPanel .fsCol3{
  width: 100%;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-rows: auto 1px 1fr;
}

#fsBottomPanel .fsCol3Top{
  padding: 10px 12px;
  font-family: var(--font);
  font-size: 14px;
  opacity: 0.9;
  user-select: none;
}

/* ───────── Column 3: right cell becomes 2-row stack ───────── */
#fsBottomPanel .fsPanelCell.col3{
  padding: 0;
  color: #fff;                 /* default text color for col 3 */
}

/* Force white for anything inside col 3 (prevents theme overrides) */
/* ───────── Bottom panel: Column 3 split ───────── */
#fsBottomPanel .fsPanelCell.col3 {
  padding: 0;
  color: #fff;
}

#fsBottomPanel .col3Inner{
  height: 100%;
  display: grid;
  grid-template-rows: 1fr 1px auto; /* top | divider | input */
  min-height: 0;
}

#fsBottomPanel #col3Output{
  padding: 10px 12px;
  color: #fff;
  overflow: auto;
  white-space: pre-wrap;
}

#fsBottomPanel .col3Split{
  background: rgba(255,255,255,0.25);
}

#fsBottomPanel #col3Input{
  width: 100%;
  min-height: 64px;
  padding: 10px 12px;

  border: 1px solid rgba(255,255,255,0.25);
  outline: none;
  resize: none;

  font-family: var(--font);
  font-size: 14px;
  line-height: 1.35;

  background: transparent;
  color: #fff;
  caret-color: #fff;
}

#fsBottomPanel #col3Input::placeholder{
  color: rgba(255,255,255,0.5);
}

/* ✅ Force column 3 + textarea to use full column width */
#fsBottomPanel .fsPanelCell.col3{
  display: block;        /* overrides any flex styles from .fsPanelCell */
  width: 100%;
  min-width: 0;
}

#fsBottomPanel .fsPanelCell.col3 .col3Inner{
  width: 100%;
  min-width: 0;
}

#fsBottomPanel #col3Input{
  width: 100% !important;
  max-width: none !important;
  justify-self: stretch;
  align-self: stretch;
  box-sizing: border-box;
}


/* COLUMN 3: full-width stack */
#fsBottomPanel .fsPanelCell.col3{
  padding: 0;
  min-width: 0;
}

#fsBottomPanel .col3Inner{
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-rows: auto 1px 1fr; /* top | divider | input */
  min-width: 0;
}

/* Top row */
#fsBottomPanel .col3Top{
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 10px 12px;
  min-width: 0;
}

#fsBottomPanel .col3Title{
  white-space: nowrap;
  user-select: none;
  color: #fff;
  opacity: 0.9;
}
/* color of the response box text */
#fsBottomPanel .col3Output{
  flex: 1;
  min-width: 0;
  color: #eaff00;
  white-space: pre-wrap;
  overflow: auto;
  opacity: 0.95;
}
#fsBottomPanel #col3Output{ color: #eaff00 !important; }
/* Divider */
#fsBottomPanel .col3Split{
  background: rgba(255,255,255,0.25);
}

/* Textbox = full width */
#fsBottomPanel #col3Input{
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  display: block;

  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,0.25);
  outline: none;
  resize: none;

  background: transparent;
  color: #fff;
  caret-color: #fff;

  font-family: var(--font);
  font-size: 14px;
  line-height: 1.35;
}

#fsBottomPanel #col3Input::placeholder{
  color: rgba(255,255,255,0.55);
}


/* ───────── COL3 STARTER PROMPTS ───────── */
#col3Output.is-hints {
  white-space: normal;          /* allow wrapping for the hint UI */
}

#col3Output .hintTitle {
  font-size: 12px;
  opacity: 0.75;
  margin: 0 0 8px 0;
}

#col3Output .hintList {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

#col3Output .hintBtn {
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0,0,0,0.18);
  color: rgba(255,255,255,0.9);
  padding: 6px 10px;
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
}

#col3Output .hintBtn:hover {
  background: rgba(255,255,255,0.08);
}


/* ───────── Bottom Panel: Apps Grid (Column 2) ───────── */
.bp-apps{
  /* controls */
  --tile: 76px;        /* tile width (controls how many columns can fit) */
  --gap-row: 10px;     /* vertical gap */
  --gap-col: 14px;     /* horizontal gap */
  --icon-box: 40px;
  --icon-scale: 0.8;
  --max-cols: 5;       /* cap at 5 columns */

  display: grid;

  /* ✅ auto adjust columns based on available width */
  grid-template-columns: repeat(auto-fit, minmax(var(--tile), 1fr));

  /* ✅ center grid as a block */
  justify-content: center;
  justify-items: center;

  gap: var(--gap-row) var(--gap-col);
  padding: 20px;
  width: 100%;

  /* ✅ prevents it from stretching to 6+ columns when wide */
  max-width: calc((var(--tile) * var(--max-cols)) + (var(--gap-col) * (var(--max-cols) - 1)));
  margin: 0 auto;

  align-content: start;
}


/* each app tile */
.bp-app{
  width: var(--tile);
  display: flex;
  flex-direction: column;   /* name UNDER icon */
  align-items: center;
  gap: 6px;
  text-decoration: none;
  color: #fff;              /* label color (also used if you later switch to mask icons) */
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}

/* icon box */
.bp-appIcon{
  width: var(--icon-box);
  height: var(--icon-box);
  border-radius: 12px;
  background: rgba(0,0,0,0.14);
  overflow: auto;
  display: grid;
  place-items: center;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1),
              filter 180ms cubic-bezier(.22,.61,.36,1);
}

/* the <img> svg */
.bp-appIcon img{
  width: calc(var(--icon-box) * var(--icon-scale));
  height: calc(var(--icon-box) * var(--icon-scale));
  object-fit: contain;
  display: block;

  /* "recolor" workaround for <img src="...svg">:
     if your SVGs are black, this makes them white-ish */
  filter: invert(1) brightness(0.95) contrast(1.1);
}

/* name under icon */
.bp-appName{
  font-size: 12px;
  line-height: 1.1;
  text-align: center;
  opacity: 0.9;
  max-width: 92px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.bp-app{ width: var(--tile-w); }     /* ✅ add this rule anywhere */
.bp-appName{ max-width: 100%; }      /* ✅ replace 92px */


/* hover/press feel */
.bp-app:hover .bp-appIcon{ transform: scale(1.04); filter: brightness(1.05); }
.bp-app:active .bp-appIcon{ transform: scale(0.98); }

/* responsive */
@media (max-width: 820px){

  /* let the apps area take the full cell height (so it has room to scroll) */
  .fsPanelCell.col2{
    align-items: stretch;   /* instead of center */
    overflow: hidden;       /* still prevents bleed */
  }

  /* the scrolling surface */
  .bp-apps{
    height: 100%;
    max-height: 100%;
    overflow-y: auto;                 /* ✅ enables swipe scroll */
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;/* ✅ iOS momentum */
    overscroll-behavior: contain;     /* ✅ stops “scroll leaking” to page */
    touch-action: pan-y;              /* ✅ allow vertical swipe here */
  }


  .bp-apps{
    /* keep scrolling */
    overflow-y: auto;

    /* hide scrollbar (Firefox) */
    scrollbar-width: none;

    /* hide scrollbar (old Edge/IE) */
    -ms-overflow-style: none;
  }

  /* hide scrollbar (Chrome/Safari) */
  .bp-apps::-webkit-scrollbar{
    width: 0;
    height: 0;
    display: none;
  }

}


/* Center the apps block inside column 2 */
.fsPanelCell.col2{
  display: flex;
  justify-content: center;  /* horizontal */
  align-items:flex-start;      /* vertical (use flex-start if you want it top) */
  container-type: inline-size;
  min-width: 0;          /* important inside grids */
  overflow: hidden;      /* prevents bleed */
  justify-content: center;
  align-items: center;

}


@container (min-width: 476px){
  .bp-apps{
    grid-template-columns: repeat(5, var(--tile));
    width: auto;
  }
}





