/* ==========================================================
   Restie · CS 147 Autumn 2026
   Palette: "Warm Afternoon"
   ========================================================== */
:root {
  --paper: #FBF6ED;
  --paper-2: #F5EBDA;
  --cream: #FFFDF8;
  --orange: #E88A54;
  --terracotta: #B85C38;
  --cocoa: #40372F;
  --cocoa-soft: #6E6157;
  --sage: #A5B9A0;
  --blue: #A9BFCA;
  --butter: #F0D69A;
  --lilac: #C8B6D2;
  --line: #E8D9C2;

  --radius: 26px;
  --radius-sm: 16px;
  --shadow: 0 4px 0 #E8D9C2, 0 14px 30px -18px rgba(64, 55, 47, .35);
  --font-head: "Fredoka", "Baloo 2", "Arial Rounded MT Bold", system-ui, sans-serif;
  --font-body: "Nunito", "Avenir Next", system-ui, -apple-system, "Segoe UI", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.6;
  color: var(--cocoa);
  background-color: var(--paper);
  /* soft gingham, like a picnic blanket */
  background-image:
    linear-gradient(90deg, rgba(240, 214, 154, .18) 50%, transparent 50%),
    linear-gradient(rgba(240, 214, 154, .18) 50%, transparent 50%);
  background-size: 48px 48px;
  overflow-x: hidden;
}

img { max-width: 100%; display: block; }
a { color: var(--terracotta); }
h1, h2, h3 { font-family: var(--font-head); line-height: 1.15; margin: 0; color: var(--cocoa); }

.skip {
  position: absolute; left: -999px; top: 8px;
  background: var(--cocoa); color: var(--paper); padding: 8px 14px; border-radius: 10px; z-index: 100;
}
.skip:focus { left: 8px; }

:focus-visible { outline: 3px dashed var(--terracotta); outline-offset: 3px; border-radius: 8px; }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 20;
  background: rgba(251, 246, 237, .92);
  backdrop-filter: blur(8px);
  border-bottom: 2px dashed var(--line);
}
.header-inner {
  max-width: 1120px; margin: 0 auto; padding: 10px 20px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.brand { display: flex; align-items: center; gap: 8px; text-decoration: none; }
.brand-cat { width: 80px; height: 42px; transition: transform .3s; }
.brand:hover .brand-cat { transform: rotate(-8deg) scale(1.06); }
.wordmark { display: block; width: 90px; height: 30px; }
.tabs { display: flex; gap: 8px; }
.tabs a {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 16px;
  font-family: var(--font-head); font-weight: 500; font-size: 16px;
  color: var(--cocoa); text-decoration: none;
  background: var(--cream);
  border: 2px solid var(--cocoa);
  border-radius: 14px 14px 14px 14px;
  box-shadow: 0 3px 0 var(--cocoa);
  transition: transform .15s, box-shadow .15s, background .15s;
}
.tabs a svg { width: 15px; height: 15px; color: var(--orange); }
.tabs a:hover { background: var(--butter); transform: translateY(-2px); box-shadow: 0 5px 0 var(--cocoa); }
.tabs a:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--cocoa); }

/* ---------- Hero ---------- */
.hero { max-width: 1120px; margin: 28px auto 0; padding: 0 20px; }
.window {
  background: var(--cream);
  border: 3px solid var(--cocoa);
  border-radius: 30px;
  box-shadow: 0 8px 0 var(--cocoa);
  overflow: hidden;
}
.window-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 18px;
  background: var(--sage);
  border-bottom: 3px solid var(--cocoa);
}
.window-bar .dot { width: 14px; height: 14px; border-radius: 50%; border: 2px solid var(--cocoa); background: var(--paper); }
.window-bar .dot:nth-child(1) { background: var(--orange); }
.window-bar .dot:nth-child(2) { background: var(--butter); }
.address {
  flex: 1; margin: 0 8px;
  padding: 4px 16px;
  font-family: var(--font-head); font-weight: 500; font-size: 15px;
  background: var(--paper); border: 2px solid var(--cocoa); border-radius: 999px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.bar-heart { width: 24px; height: 24px; color: var(--terracotta); }

.hero-body {
  display: grid; grid-template-columns: .85fr 1.15fr; gap: 36px; align-items: center;
  padding: 44px 44px 48px;
  background:
    radial-gradient(circle at 12% 88%, rgba(240, 214, 154, .45) 0 120px, transparent 121px),
    radial-gradient(circle at 92% 8%, rgba(200, 182, 210, .35) 0 90px, transparent 91px),
    var(--cream);
}
.eyebrow {
  display: inline-block; margin: 0 0 12px;
  padding: 4px 14px;
  font-family: var(--font-head); font-weight: 500; font-size: 14px; letter-spacing: .5px;
  background: var(--butter); border-radius: 999px;
}
.hero h1 {
  font-size: clamp(64px, 10vw, 112px); font-weight: 700; letter-spacing: -2px;
  color: var(--terracotta);
  text-shadow: 4px 4px 0 var(--butter);
}
.value-prop { font-size: clamp(18px, 2vw, 22px); line-height: 1.5; margin: 14px 0 28px; max-width: 30ch; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.btn {
  display: inline-block; padding: 12px 24px;
  font-family: var(--font-head); font-weight: 600; font-size: 17px; text-decoration: none;
  border: 2.5px solid var(--cocoa); border-radius: 999px;
  box-shadow: 0 4px 0 var(--cocoa);
  transition: transform .15s, box-shadow .15s;
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 6px 0 var(--cocoa); }
.btn:active { transform: translateY(2px); box-shadow: 0 2px 0 var(--cocoa); }
.btn-primary { background: var(--orange); color: var(--cream); }
.btn-ghost { background: var(--cream); color: var(--cocoa); }

/* Rusty's room: every object is its own layer, positioned in % so it scales */
.hero-art { margin: 0; }
.room {
  position: relative; aspect-ratio: 3 / 2; overflow: hidden;
  container-type: inline-size;
  background: url("../assets/rusty/room-web.jpg") center 70% / cover no-repeat, var(--paper-2);
  border: 3px solid var(--cocoa); border-radius: 24px;
  box-shadow: 0 6px 0 var(--cocoa);
}
.obj { position: absolute; height: auto; display: block; }
.obj > img { width: 100%; height: auto; display: block; }
/* wall: kept inside the back wall (8%-92% across, 8%-63% down) and hung at eye level */
.o-window { left: 11%; top: 15%; width: 22%; }
.o-clock  { left: 37%; top: 17%; width: 8.5%; }
.o-board  { left: 48.5%; top: 18%; width: 26%; }
.o-frame  { left: 78.5%; top: 19%; width: 10.5%; }
/* floor */
.o-bed    { left: -1%; bottom: 2%;  width: 42%; }
.o-desk   { left: 41%; bottom: 18%; width: 26%; }
.o-easel  { right: 11%; bottom: 3%; width: 18%; z-index: 1; }
.o-plant  { right: -1%; bottom: 6%; width: 14%; z-index: 1; }

/* sticky notes pinned to the tracking board */
.note {
  position: absolute; width: 22%; padding: 3% 2%;
  font-family: var(--font-head); font-weight: 500; line-height: 1.1; text-align: center;
  font-size: 1.35cqw; color: var(--cocoa);
  box-shadow: 0 1px 2px rgba(64, 55, 47, .3);
}
.n1 { left: 16%; top: 22%; background: var(--butter); transform: rotate(-5deg); }
.n2 { left: 40%; top: 30%; background: #F6C9AE; transform: rotate(3deg); }
.n3 { left: 63%; top: 21%; background: #CFE0CB; transform: rotate(-2deg); }

/* keepsake frame with a little memory tucked behind it */
.o-frame .frame-photo { position: absolute; left: 24%; top: 24%; width: 52%; height: 61%; object-fit: cover; }

/* Rusty + speech bubble move together per pose */
.rusty { z-index: 2; left: var(--rx); bottom: var(--ry); width: var(--rw); transition: left .35s ease, bottom .35s ease, width .35s ease; }
.room[data-pose="painting"]    { --rx: 51%; --ry: 1%;  --rw: 21%; --bx: 47%; --by: 32%; }
.room[data-pose="reading"]     { --rx: 39%; --ry: 1%;  --rw: 19%; --bx: 35%; --by: 37%; }
.room[data-pose="sleeping"]    { --rx: 8%;  --ry: 17%; --rw: 24%; --bx: 12%; --by: 42%; }
.room[data-pose="stretching"]  { --rx: 36%; --ry: 0%;  --rw: 25%; --bx: 35%; --by: 39%; }
.room[data-pose="celebrating"] { --rx: 40%; --ry: 1%;  --rw: 21%; --bx: 37%; --by: 36%; }
.room[data-pose="idle"]        { --rx: 42%; --ry: 1%;  --rw: 18%; --bx: 38%; --by: 31%; }

.rusty-says {
  position: absolute; z-index: 3; left: var(--bx); bottom: var(--by);
  width: max-content; max-width: 40%; margin: 0; padding: .7em 1em;
  font-family: var(--font-head); font-weight: 500; line-height: 1.3;
  font-size: clamp(12px, 2.1cqw, 16px);
  background: var(--cream); border: 2px solid var(--cocoa); border-radius: 16px;
  box-shadow: 0 3px 0 var(--cocoa);
  transition: left .35s ease, bottom .35s ease;
}
.rusty-says::after {
  content: ""; position: absolute; bottom: -8px; left: 22%; width: 12px; height: 12px;
  background: var(--cream); border-right: 2px solid var(--cocoa); border-bottom: 2px solid var(--cocoa);
  transform: rotate(45deg);
}
@media (prefers-reduced-motion: reduce) { .rusty, .rusty-says { transition: none; } }

.pose-bar { margin-top: 18px; }
.poses { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.poses button {
  font: 600 13.5px/1 var(--font-head); color: var(--cocoa); cursor: pointer;
  padding: 9px 4px; background: var(--cream); white-space: nowrap;
  border: 2px solid var(--cocoa); border-radius: 999px; box-shadow: 0 3px 0 var(--cocoa);
  transition: transform .15s, background .15s, box-shadow .15s;
}
.poses button:hover { background: var(--butter); transform: translateY(-1px); }
.poses button[aria-pressed="true"] { background: var(--orange); color: var(--cream); }
.poses button:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--cocoa); }
@media (max-width: 1100px) and (min-width: 961px) { .poses { grid-template-columns: repeat(3, 1fr); } }

/* ---------- Sections ---------- */
.section { max-width: 1120px; margin: 0 auto; padding: 84px 20px 0; scroll-margin-top: 70px; }
.section-label { text-align: center; margin-bottom: 28px; }
.section-label span {
  display: inline-block; padding: 8px 26px;
  font-family: var(--font-head); font-weight: 600; font-size: 22px;
  background: var(--butter);
  border: 2.5px solid var(--cocoa); border-radius: 14px;
  box-shadow: 0 4px 0 var(--cocoa);
  transform: rotate(-1.5deg);
}
.section-intro { text-align: center; max-width: 46ch; margin: -6px auto 36px; color: var(--cocoa-soft); }

.card {
  background: var(--cream);
  border: 2px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

/* About */
.about-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; align-items: stretch; }
.about-card { position: relative; padding: 36px 36px 80px; }
.about-card h2 { font-size: clamp(26px, 3vw, 34px); color: var(--terracotta); margin-bottom: 14px; }
.about-card p { margin: 0; font-size: 18px; }
.corner-cat { position: absolute; right: 22px; bottom: 14px; width: 120px; height: auto; }

.hobby-wall {
  list-style: none; margin: 0; padding: 20px;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px 10px; align-content: center;
  background: var(--paper-2);
  border: 2px dashed #DCC6A6;
  border-radius: var(--radius);
}
.hobby-wall li {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  padding: 12px 4px; font-weight: 700; font-size: 13px;
  background: var(--cream); border-radius: 18px;
  box-shadow: 0 3px 0 var(--line);
  transition: transform .2s;
}
.hobby-wall li:nth-child(odd) { transform: rotate(-2deg); }
.hobby-wall li:nth-child(even) { transform: rotate(2deg); }
.hobby-wall li:hover { transform: rotate(0) scale(1.08); }
.hobby-wall svg { width: 44px; height: 44px; filter: drop-shadow(0 2px 0 rgba(64, 55, 47, .15)); }

.divider {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  margin: 48px 0 40px; color: var(--orange); letter-spacing: 6px; font-weight: 800;
}
.divider svg { width: 26px; height: 26px; color: var(--orange); }

.features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.feature { padding: 26px 22px; text-align: center; transition: transform .2s; }
.feature:hover { transform: translateY(-4px); }
.feature-icon {
  width: auto; max-width: 100%; height: 96px; object-fit: contain; margin: 0 auto 12px; display: block;
}
.feature h3 { font-size: 20px; margin-bottom: 6px; }
.feature p { margin: 0; font-size: 15.5px; color: var(--cocoa-soft); }

.screens {
  display: flex; gap: 18px; margin-top: 44px; padding: 8px 4px 22px;
  overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-color: var(--orange) var(--paper-2);
}
.screens figure { flex: 0 0 auto; margin: 0; scroll-snap-align: start; text-align: center; }
.screens img {
  height: 380px; width: auto;
  border: 3px solid var(--cocoa); border-radius: 26px;
  box-shadow: 0 5px 0 var(--cocoa);
  background: var(--cream);
}
.screens figcaption { margin-top: 10px; font-family: var(--font-head); font-weight: 500; font-size: 15px; }

/* Team */
.team { display: grid; grid-template-columns: repeat(2, minmax(0, 300px)); justify-content: center; gap: 28px; }
.member { padding: 30px 24px 26px; text-align: center; }
.avatar {
  position: relative; width: 118px; height: 118px; margin: 0 auto 16px;
  display: grid; place-items: center;
  border: 3px solid var(--cocoa); border-radius: 50%;
  box-shadow: 0 5px 0 var(--cocoa);
}
.avatar span { font-family: var(--font-head); font-weight: 700; font-size: 52px; color: var(--cream); }
.avatar svg {
  position: absolute; right: -10px; bottom: -6px; width: 48px; height: 48px;
  background: #fff; border-radius: 50%; padding: 5px; border: 2px solid var(--line);
}
.a-orange { background: var(--orange); }
.a-sage { background: var(--sage); }
.member h3 { font-size: 26px; }
.role {
  display: inline-block; margin: 8px 0 0; padding: 3px 14px;
  font-weight: 700; font-size: 15px;
  background: var(--paper-2); border-radius: 999px;
}

/* Process timeline */
.timeline { list-style: none; margin: 0 auto; padding: 0; max-width: 860px; position: relative; }
.timeline::before {
  content: ""; position: absolute; left: 33px; top: 20px; bottom: 20px;
  border-left: 3px dashed #DCC6A6;
}
.step { display: grid; grid-template-columns: 70px 1fr; gap: 18px; align-items: start; margin-bottom: 20px; position: relative; }
.step-badge {
  width: 68px; height: 68px; display: grid; place-items: center;
  font-family: var(--font-head); font-weight: 700; font-size: 22px;
  border: 3px solid var(--cocoa); border-radius: 22px;
  box-shadow: 0 4px 0 var(--cocoa);
  transform: rotate(-4deg);
}
.step:nth-child(even) .step-badge { transform: rotate(4deg); }
.b-orange { background: var(--orange); color: var(--cream); }
.b-sage { background: var(--sage); }
.b-blue { background: var(--blue); }
.b-yellow { background: var(--butter); }
.b-lilac { background: var(--lilac); }
.step-card { padding: 20px 24px; }
.step-card h3 { font-size: 21px; margin-bottom: 4px; }
.step-card p { margin: 0 0 12px; color: var(--cocoa-soft); font-size: 16px; }

.links { display: flex; flex-wrap: wrap; gap: 8px; }
.pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 14px;
  font-weight: 700; font-size: 14.5px; text-decoration: none;
  color: var(--cocoa); background: var(--paper-2);
  border: 2px solid var(--cocoa); border-radius: 999px;
  box-shadow: 0 3px 0 var(--cocoa);
  transition: transform .15s, background .15s, box-shadow .15s;
}
.pill svg { width: 16px; height: 16px; color: var(--terracotta); }
.pill:hover { background: var(--butter); transform: translateY(-2px); box-shadow: 0 5px 0 var(--cocoa); }
.pill em {
  font-style: normal; font-size: 11px; text-transform: uppercase; letter-spacing: .6px;
  padding: 1px 7px; border-radius: 999px; background: var(--line);
}
/* Placeholder links: greyed out until the file is uploaded */
.pill.soon {
  color: #9C8E80; background: transparent;
  border: 2px dashed #CDB9A0; box-shadow: none;
  pointer-events: none; cursor: default;
}
.pill.soon svg { color: #B9A792; }

/* Videos */
.videos { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.video-card { padding: 22px; }
.video-card h3 { font-size: 22px; margin-bottom: 14px; display: flex; align-items: center; gap: 10px; }
.video-card h3 small {
  font-size: 13px; font-weight: 600; padding: 2px 10px; border-radius: 999px; background: var(--butter);
}
.video-frame {
  position: relative; aspect-ratio: 16 / 9; margin-bottom: 16px;
  border: 3px solid var(--cocoa); border-radius: 18px; overflow: hidden;
  background: var(--paper-2);
}
.video-frame iframe, .video-frame video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #000; }
.video-placeholder {
  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  background:
    repeating-linear-gradient(45deg, transparent 0 14px, rgba(240, 214, 154, .35) 14px 28px),
    var(--paper-2);
}

.video-placeholder img { width: 150px; height: auto; }
.video-placeholder p { margin: 0; font-family: var(--font-head); font-weight: 500; color: var(--cocoa-soft); }

/* ---------- Footer ---------- */
.site-footer {
  margin-top: 96px; padding: 40px 20px 34px; text-align: center;
  background: var(--cocoa); color: var(--paper);
  border-radius: 40px 40px 0 0;
  position: relative;
}
.footer-cat { width: 140px; height: auto; position: absolute; top: -78px; left: 50%; transform: translateX(-50%); }
.footer-logo { display: block; width: 110px; height: auto; margin: 26px auto 10px; }
.footer-brand { font-family: var(--font-head); font-weight: 700; font-size: 30px; color: var(--orange); margin: 10px 0 4px; }
.site-footer p { margin: 4px 0; }
.site-footer a { color: var(--butter); }
.site-footer .small { font-size: 14px; }
.inline-heart { width: 16px; height: 16px; color: var(--orange); vertical-align: -2px; }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .hero-body { grid-template-columns: 1fr; padding: 32px 28px 44px; }
  .hero-text { text-align: center; }
  .value-prop { margin-left: auto; margin-right: auto; }
  .hero-actions { justify-content: center; }
  .about-grid { grid-template-columns: 1fr; }
  .features { grid-template-columns: repeat(2, 1fr); }
  .videos { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  body { font-size: 16px; }
  .header-inner { flex-direction: column; gap: 8px; padding: 8px 16px 10px; }
  .site-header { position: static; }
  .tabs { width: 100%; justify-content: center; gap: 6px; }
  .tabs a { padding: 6px 10px; font-size: 14px; }
  .tabs a svg { display: none; }
  .hero, .section { padding-left: 16px; padding-right: 16px; }
  .section { padding-top: 64px; }
  .hero-body { padding: 26px 18px 40px; }
  .address { font-size: 13px; }
  .poses { grid-template-columns: repeat(3, 1fr); }
  .poses button { padding: 9px 4px; font-size: 13px; }
  .rusty-says { max-width: 48%; }
  .about-card { padding: 26px 22px 80px; }
  .hobby-wall { grid-template-columns: repeat(4, 1fr); padding: 12px; gap: 8px; }
  .hobby-wall svg { width: 34px; height: 34px; }
  .hobby-wall li { font-size: 11px; }
  .features { grid-template-columns: 1fr; }
  .screens img { height: 320px; }
  .team { grid-template-columns: 1fr; }
  .timeline::before { left: 25px; }
  .step { grid-template-columns: 52px 1fr; gap: 12px; }
  .step-badge { width: 52px; height: 52px; font-size: 17px; border-radius: 16px; }
  .step-card { padding: 16px 18px; }
}
