/* ─── TOKENS ──────────────────────────────────────────────── */
:root {
  --parchment:      #fcf6ef;
  --parchment-deep: #f0e8db;
  --ink:            #141414;
  --ink-mid:        #1a1a1a;
  --ink-veil:       #242424;
  --ink-soft:       #4a4540;
  --ink-ghost:      #5a504a;
  --gold:           #d2ac47;
  --gold-dim:       #a8892e;
  --off-white:      #141414;
  --margin:         68px;
  --ease:           cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* ─── MOBILE ZOOM PREVENTION ─────────────────────────────── */
@media screen and (max-width: 768px) {
  input, select, textarea { max-width: 100%; }
  html, body { overflow-x: hidden; }
}


/* ─── RESET ───────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { 
  font-size: 16px; 
  background: var(--parchment);
  -webkit-font-smoothing: antialiased; 
  text-rendering: optimizeLegibility; 
  scroll-behavior: initial !important; /* Lenis handles this */
}
body { 
  background: var(--parchment); 
  color: var(--ink); 
  font-family: 'Libre Caslon Text', serif; 
  overflow-x: hidden; 
}

/* Global Selection */
::selection {
  background-color: var(--gold);
  color: var(--parchment);
}

/* Hide scrollbars but allow scrolling */
html::-webkit-scrollbar, body::-webkit-scrollbar {
  display: none;
}
html, body {
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE/Edge */
}
a { text-decoration: none; color: inherit; }
button { background: none; border: none; cursor: pointer; font-family: inherit; color: inherit; padding: 0; }

/* Lenis System CSS */
html.lenis,
html.lenis body {
  height: auto;
}
.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}
.lenis.lenis-stopped {
  overflow: hidden;
}
.lenis.lenis-scrolling iframe {
  pointer-events: none;
}

/* ─── GRAIN ───────────────────────────────────────────────── */
.grain {
  position: fixed; inset: 0; z-index: 9999; pointer-events: none; opacity: 0.03;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 180px 180px;
}
.grain-parchment {
  position: fixed; inset: 0; z-index: 2; pointer-events: none; opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 220px 220px;
}

/* ─── SCREENS ─────────────────────────────────────────────── */
.screen { display: none; width: 100%; min-height: 100vh; }
.screen.active { display: flex; }

/* ─── FADE TRANSITION ─────────────────────────────────────── */
#wipe {
  position: fixed; inset: 0; background: #fcf6ef;
  z-index: 8000; opacity: 0; pointer-events: none;
  transition: opacity 0.65s var(--ease);
}
#wipe.in  { opacity: 1; pointer-events: auto; }
#wipe.out { opacity: 0; pointer-events: none; }

/* ══════════════════════════════════════════════════
   ENTRANCE — full-screen logomark → shrinks to login
══════════════════════════════════════════════════ */
#screen-login {
  flex-direction: column; align-items: center; justify-content: center;
  background: #fcf6ef; position: relative; overflow: hidden;
}

/* ── Phase 1: logomark sits large and centred ── */
.entrance-mark {
  position: fixed;
  /* will be positioned via JS once login-mark rect is known */
  z-index: 20;
  pointer-events: none;
}
.entrance-mark img { width: 100%; display: block; }

/* ── Travelling state — JS applies inline transform transition ── */
.entrance-mark.travel {
  transition:
    top    0.8s cubic-bezier(0.76, 0, 0.24, 1),
    left   0.8s cubic-bezier(0.76, 0, 0.24, 1),
    width  0.8s cubic-bezier(0.76, 0, 0.24, 1);
}

/* ── Login card ── */
.login-wrap {
  position: relative; z-index: 5;
  display: flex; flex-direction: column; align-items: center;
  width: 100%; max-width: 560px; padding: 0 40px;
  opacity: 1;
  pointer-events: none;
}
/* login-mark is invisible until the travelling mark lands */
.login-mark { visibility: hidden; }

.login-wrap.revealed {
  pointer-events: auto;
}
.login-wrap.revealed .login-content {
  animation: loginReveal 0.75s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
@keyframes loginReveal {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* hide content below the mark until revealed */
.login-content { opacity: 0; }

/* Submark in login header — small */
.login-mark {
  width: 44px; margin-bottom: 28px;
}
.login-mark img { width: 100%; display: block; }

.login-title {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: 32px;
  color: var(--off-white); letter-spacing: 0.01em;
  text-align: center; margin-bottom: 6px;
}
.login-subtitle {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: 15px;
  color: rgba(20,20,20,0.72);
  text-align: center; margin-bottom: 22px;
}

/* Gold rule divider */
.login-divider {
  width: 48px; height: 1px; background: var(--gold);
  opacity: 0.55; margin: 0 auto 36px;
}

/* Fields */
.login-form { width: 100%; display: flex; flex-direction: column; gap: 0; }

.field-group { margin-bottom: 8px; }
.field-group-label {
  display: block; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.26em; text-transform: uppercase;
  color: rgba(20,20,20,0.68); margin-bottom: 10px;
}

.field {
  position: relative;
  border-bottom: 1px solid rgba(20,20,20,0.14);
  margin-bottom: 22px;
}
.field input {
  display: block; width: 100%; background: transparent; border: none; outline: none;
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 16px; font-weight: 400;
  color: rgba(20,20,20,0.72); padding: 8px 0 12px;
  caret-color: var(--gold);
}
.field input[type="password"] {
  font-family: 'Montserrat', sans-serif; 
  font-size: 11px; 
  font-style: normal; 
  letter-spacing: 0.22em; 
}
.field input[type="password"]::placeholder {
  font-family: 'Libre Caslon Text', serif; 
  font-style: italic;
  font-size: 16px;
  letter-spacing: normal;
}

/* VIEW toggle for password */
.field-row { display: flex; align-items: center; }
.field-row input { flex: 1; }
.view-toggle {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(20,20,20,0.75); cursor: pointer; flex-shrink: 0;
  padding-bottom: 12px; transition: color 0.3s;
}
.view-toggle:hover { color: var(--gold); }

/* Gold focus underline */
.field::after {
  content: ''; position: absolute; bottom: -1px; left: 0;
  height: 1px; width: 0; background: var(--gold);
  transition: width 0.45s var(--ease);
}
.field:focus-within::after { width: 100%; }

/* Recover access — sits flush left under password line */
.recover-link {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(20,20,20,0.52); cursor: pointer; transition: color 0.3s;
  border: none; background: none; padding: 0;
  margin-top: 4px; margin-bottom: 32px;
  display: block;
}
.recover-link:hover { color: rgba(20,20,20,0.75); }

/* Sign in — centred */
.login-actions {
  display: flex; justify-content: center;
  width: 100%;
}

.sign-in-btn {
  background: var(--gold); border: none;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 9px; letter-spacing: 0.24em; text-transform: uppercase;
  color: #141414; padding: 14px 48px; cursor: pointer;
  transition: background 0.3s, letter-spacing 0.3s;
}
.sign-in-btn:hover { background: #141414; color: #fcf6ef; }

.login-foot {
  margin-top: 44px; font-family: 'Source Sans 3', sans-serif; font-weight: 300;
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(20,20,20,0.75); text-align: center;
}

/* ══════════════════════════════════════════════════
   PORTAL LAYOUT
══════════════════════════════════════════════════ */
#screen-portal { flex-direction: column; min-height: 100vh; background: var(--parchment); }

/* ── FLOATING RIBBON ─────────────────────────── */
.ribbon {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 30px 56px;
  pointer-events: none;
}

.ribbon-logo { pointer-events: auto; flex-shrink: 0; }
.ribbon-logo .wordmark { height: 20px; display: block; opacity: 0.85; }
.ribbon-logo .submark  { height: 24px; display: none; opacity: 0.85; }

.ribbon-nav {
  display: flex; align-items: center; gap: 32px;
  pointer-events: auto;
}

.r-item {
  position: relative; cursor: pointer;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(20,20,20,0.38);
  transition: color 0.3s var(--ease);
  padding-bottom: 5px;
  white-space: nowrap;
}
.r-item::after {
  content: ''; position: absolute; bottom: 0; left: 0;
  width: 0; height: 1px; background: var(--gold);
  transition: width 0.35s var(--ease);
}
.r-item.active { color: rgba(20,20,20,0.82); }
.r-item.active::after { width: 100%; }
.r-item:hover { color: rgba(20,20,20,0.6); }

.ribbon-pfp {
  pointer-events: auto; flex-shrink: 0;
  width: 30px; height: 30px; border-radius: 50%;
  border: 1px solid var(--gold);
  overflow: hidden; background: transparent;
}
.ribbon-pfp img { width: 100%; height: 100%; object-fit: cover; display: block; }

.withdraw-ribbon {
  pointer-events: auto; flex-shrink: 0;
  background: none; border: none; padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: flex-end;
  min-width: 30px; height: 30px;
}

/* ── MAIN ────────────────────────────────────── */
.main {
  flex: 1; width: 100%; min-height: 100vh;
  background: var(--parchment); position: relative;
}

.view {
  display: none;
  padding: var(--margin);
  padding-top: calc(var(--margin) + 94px);
  animation: viewIn 0.65s var(--ease) both;
}
.view.active { display: block; }
@keyframes viewIn {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Section system: gold label → rule with gold terminus */
.s-label {
  display: block; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.28em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 13px;
}
.s-rule {
  height: 1px; background: rgba(20,20,20,0.1);
  position: relative; margin-bottom: 28px;
}

/* ══════════════════════════════════════════════════
   YOUR ATELIER VIEW
══════════════════════════════════════════════════ */
.client-name {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: clamp(36px, 4vw, 52px);
  color: var(--ink); letter-spacing: -0.01em; line-height: 1.1;
  margin-bottom: 12px;
}
.mobile-break { display: none; }
@media (max-width: 600px) {
  .mobile-break { display: block; }
}
.welcome-prose {
  font-family: 'Libre Caslon Text', serif; font-weight: 400;
  font-size: 16px; color: var(--ink-soft);
  line-height: 1.75; max-width: 500px; margin-bottom: 68px;
}
.empty-list-prose {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 16px; color: var(--ink-soft);
  margin-top: 12px;
  text-align: left !important;
}

/* 2-col grid */
.a-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 28px; margin-bottom: 68px;
}
.a-cell {
  background: var(--parchment); padding: 38px 42px;
  cursor: pointer; transition: background 0.3s;
  border: 1px solid rgba(20,20,20,0.08);
}
.a-cell:hover { background: var(--parchment-deep); }

.cell-eye {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.26em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 14px;
}
.cell-head {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: 24px; color: var(--ink);
  margin-bottom: 10px; line-height: 1.2;
}
.cell-body {
  font-family: 'Libre Caslon Text', serif; font-weight: 300;
  font-size: 15px; color: var(--ink-soft); line-height: 1.65;
}
.cell-status {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 20px; font-family: 'Montserrat', sans-serif;
  font-weight: 300; font-size: 7.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-soft);
}
.status-pip { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); flex-shrink: 0; }

/* Next appt */
.next-appt {
  display: flex; align-items: flex-start; gap: 52px;
  padding-top: 10px;
}
.date-block { flex-shrink: 0; text-align: center; min-width: 62px; }
.date-day {
  display: block; font-family: 'Libre Caslon Text', serif;
  font-style: italic; font-size: 54px; font-weight: 300;
  color: var(--ink); line-height: 1;
}
.date-month {
  display: block; font-family: 'Montserrat', sans-serif;
  font-weight: 300; font-size: 7.5px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--gold); margin-top: 4px;
}
.date-divider { width: 1px; align-self: stretch; background: rgba(20,20,20,0.07); flex-shrink: 0; }
.appt-detail { position: relative; }
.appt-eye {
  display: block; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--ink-ghost); margin-bottom: 12px;
}
.appt-title {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: 28px; color: var(--ink); margin-bottom: 8px;
}
.appt-time {
  font-family: 'Libre Caslon Text', serif; font-size: 15px;
  font-weight: 300; color: var(--ink-soft); margin-bottom: 22px;
}
.appt-join {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink); border-bottom: 1px solid rgba(20,20,20,0.18);
  padding-bottom: 2px; cursor: pointer; transition: color 0.3s, border-color 0.3s;
}
.appt-join:hover { color: var(--gold-dim); border-color: var(--gold-dim); }

/* ══════════════════════════════════════════════════
   YOUR COMMISSION VIEW
══════════════════════════════════════════════════ */
.comm-title {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 300; font-size: clamp(38px, 4.5vw, 58px);
  color: var(--ink); letter-spacing: -0.01em; line-height: 1.1; margin-bottom: 10px;
}
.comm-meta {
  font-family: 'Libre Caslon Text', serif; font-weight: 300;
  font-size: 16px; color: var(--ink-soft); margin-bottom: 66px;
}

/* Timeline */
.timeline { position: relative; padding-left: 34px; margin-bottom: 72px; }
.timeline::before {
  content: ''; position: absolute;
  left: 0; top: 14px; bottom: 14px;
  width: 1px; background: rgba(20,20,20,0.09);
}

.t-phase { position: relative; }
.t-phase::before {
  content: ''; position: absolute;
  left: -38px; top: 14px;
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--parchment); border: 1px solid rgba(20,20,20,0.12);
  transition: background 0.3s, border-color 0.3s;
}
.t-phase.done::before   { background: var(--gold); border-color: var(--gold); }
.t-phase.now::before    { background: var(--ink); border-color: var(--ink); box-shadow: 0 0 0 4px rgba(20,20,20,0.06); }

.phase-inner {
  padding-bottom: 48px;
  border-bottom: 1px solid rgba(20,20,20,0.05);
}
.t-phase:last-child .phase-inner { border-bottom: none; }

.phase-state {
  display: block; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--ink-ghost); margin-bottom: 8px;
}
.t-phase.done .phase-state { color: var(--gold); }
.t-phase.now  .phase-state { color: var(--ink); }

.phase-name {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 22px; font-weight: 400; color: var(--ink);
  margin-bottom: 8px; opacity: 0.3;
}
.t-phase.done .phase-name { opacity: 0.45; }
.t-phase.now  .phase-name { opacity: 1; font-size: 27px; }

.phase-desc {
  display: none; font-family: 'Libre Caslon Text', serif; font-weight: 300;
  font-size: 15px; color: var(--ink-soft); line-height: 1.68; max-width: 520px;
}
.t-phase.now .phase-desc { display: block; }

.phase-date {
  display: none; font-family: 'Montserrat', sans-serif; font-weight: 200;
  font-size: 7.5px; letter-spacing: 0.18em; color: var(--ink-ghost); margin-top: 12px;
}
.t-phase.done .phase-date,
.t-phase.now  .phase-date { display: block; }

/* ══════════════════════════════════════════════════
   APPOINTMENTS VIEW
══════════════════════════════════════════════════ */
.view-head {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 300; font-size: clamp(34px, 4vw, 50px);
  color: var(--ink); margin-bottom: 24px; line-height: 1.1;
}

.appts-list {
  display: flex; flex-direction: column; gap: 12px;
  margin-bottom: 64px;
}
.appt-row {
  background: var(--parchment);
  display: grid; grid-template-columns: 82px 1px 1fr auto;
  align-items: stretch; transition: background 0.3s;
  border: 1px solid rgba(20,20,20,0.08);
}
.appt-row:hover { background: var(--parchment-deep); }
.appt-row.past  { opacity: 0.42; }

.row-date {
  padding: 30px 20px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  border-right: 1px solid rgba(20,20,20,0.07);
}
.row-day {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 36px; font-weight: 300; color: var(--ink); line-height: 1;
}
.row-mon {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--gold); margin-top: 4px;
}
.row-body { padding: 30px 36px; }
.row-title {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: 22px; color: var(--ink); margin-bottom: 6px;
}
.row-time {
  font-family: 'Libre Caslon Text', serif; font-weight: 300;
  font-size: 14px; color: var(--ink-soft);
}
.row-action { padding: 30px 36px; display: flex; align-items: center; }
.row-link {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-soft); border-bottom: 1px solid rgba(20,20,20,0.12);
  padding-bottom: 2px; cursor: pointer; transition: color 0.3s;
}
.row-link:hover { color: var(--gold-dim); }

/* ─── KEYFRAMES ───────────────────────────────── */
@keyframes riseIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (min-width: 861px) {
  .r-item .short { display: none; }
  .r-item .full  { display: inline; }
}

/* ─── BREADCRUMBS ─────────────────────────────── */
.breadcrumb {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 44px; flex-wrap: wrap;
}
.bc-seg {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-ghost);
}
.bc-link {
  cursor: pointer; transition: color 0.3s;
  border-bottom: 1px solid transparent;
  padding-bottom: 1px;
}
.bc-link:hover { color: var(--ink-soft); border-bottom-color: rgba(20,20,20,0.18); }
.bc-current { color: var(--ink); }
.bc-div { color: rgba(20,20,20,0.2); font-size: 8px; }

/* ─── DELETE CLIENT ───────────────────────────── */
.delete-client-btn {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(20,20,20,0.28); cursor: pointer; transition: color 0.3s;
  background: none; border: none; padding: 0;
}
.delete-client-btn:hover { color: rgba(180,60,60,0.75); }

/* ─── PHASE LETTER MARKER ─────────────────────── */
.phase-letter {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 14px; font-weight: 400;
  border: 1px solid rgba(20,20,20,0.15);
  color: rgba(20,20,20,0.3);
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.phase-letter.done    { background: var(--gold); border-color: var(--gold); color: #fcf6ef; }
.phase-letter.current { background: var(--ink);  border-color: var(--ink);  color: #fcf6ef; }

/* ─── ADMIN PHASE ROW (BCLR) ──────────────────── */
.bclr-phase-block {
  display: flex; align-items: flex-start; gap: 20px;
  padding: 28px 0; border-bottom: 1px solid rgba(20,20,20,0.06);
}
.bclr-phase-block:last-child { border-bottom: none; }
.bclr-phase-content { flex: 1; }
.bclr-phase-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 16px; gap: 16px; flex-wrap: wrap;
}
.bclr-phase-label {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 22px; color: var(--ink); font-weight: 400;
}
.bclr-phase-state-select {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  background: transparent; border: none; outline: none; cursor: pointer;
  color: var(--ink-ghost); appearance: none;
  border-bottom: 1px solid transparent; transition: border-color 0.3s;
}
.bclr-phase-state-select:focus { border-bottom-color: var(--gold); }

/* Phase task list — admin side */
.phase-tasks-admin { margin-bottom: 12px; }
.phase-task-row {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 0; border-bottom: 1px solid rgba(20,20,20,0.04);
}
.phase-task-row:last-child { border-bottom: none; }
.task-check-small {
  width: 13px; height: 13px; border-radius: 50%; flex-shrink: 0;
  border: 1px solid rgba(20,20,20,0.22); cursor: pointer;
  transition: background 0.25s, border-color 0.25s;
  display: flex; align-items: center; justify-content: center;
}
.task-check-small.done { background: var(--gold); border-color: var(--gold); }
.task-check-small.done::after {
  content: ''; width: 4px; height: 4px; border-radius: 50%; background: #fcf6ef;
}
.phase-task-text {
  flex: 1; font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: 16px; color: var(--ink); transition: opacity 0.25s;
}
.phase-task-text.done-text {
  opacity: 0.32; text-decoration: line-through;
  text-decoration-color: rgba(20,20,20,0.3);
}
.phase-task-delete {
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 6.5px; letter-spacing: 0.15em; text-transform: uppercase;
  color: rgba(20,20,20,0.18); cursor: pointer; background: none; border: none;
  transition: color 0.3s;
}
.phase-task-delete:hover { color: rgba(180,60,60,0.7); }

/* Phase description editable */
.phase-desc-admin {
  font-family: 'Libre Caslon Text', serif; font-size: 15px;
  color: var(--ink-soft); line-height: 1.65; max-width: 520px;
  resize: none; height: auto; overflow: hidden; margin-bottom: 12px;
}
.phase-date-admin {
  font-family: 'Montserrat', sans-serif; font-weight: 200;
  font-size: 7.5px; letter-spacing: 0.18em; color: var(--ink-ghost);
}

/* ─── CLIENT TIMELINE (client-facing) ─────────── */
.phase-tasks-client {
  margin-top: 14px; display: flex; flex-direction: column; gap: 8px;
}
.client-task-item {
  display: flex; align-items: center; gap: 10px;
  font-family: 'Libre Caslon Text', serif; font-weight: 300;
  font-size: 15px; color: var(--ink-soft); line-height: 1.4;
}
.client-task-pip {
  width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0;
}
.client-task-pip.done    { background: var(--gold); }
.client-task-pip.pending { background: rgba(20,20,20,0.18); }

/* ─── FOUNDER TOGGLE ──────────────────────────── */
.founder-toggle {
  margin: 18px auto 0 auto;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(20,20,20,0.28); cursor: pointer; transition: color 0.3s;
  background: none; border: none; display: block;
}
.founder-toggle:hover { color: var(--gold); }


/* ─── ADMIN PORTAL ────────────────────────────── */
/* Admin ribbon nav labels */
.admin-only { display: none; }
#screen-admin { flex-direction: column; min-height: 100vh; background: var(--parchment); }
/* Admin ribbon handled by global .ribbon styles + media queries */
#screen-admin .ribbon { background: var(--parchment); }
#screen-admin .ribbon > * { pointer-events: auto; }

/* ── ADMIN VIEWS ── */
.admin-view { display:none; padding: var(--margin); padding-top: calc(var(--margin) + 74px);
  animation: viewIn 0.65s var(--ease) both; }
.admin-view.active { display:block; }

/* ── INLINE EDITABLE FIELDS ── */
.editable {
  background: transparent; border: none; outline: none;
  font-family: inherit; font-size: inherit; font-weight: inherit;
  font-style: inherit; color: inherit; letter-spacing: inherit;
  width: 100%; cursor: text;
  border-bottom: 1px solid transparent;
  transition: border-color 0.3s;
  padding-bottom: 2px;
}
.editable:focus { border-bottom-color: var(--gold); }
.editable::placeholder { color: rgba(20,20,20,0.25); font-style: italic; }

/* ── CLIENT GRID ── */
.clients-viewport {
  width: calc(100% + var(--margin));
  margin-left: 0;
  overflow: hidden;
  cursor: grab;
  position: relative;
  margin-bottom: 52px;
}
.clients-viewport:active { cursor: grabbing; }

.clients-grid {
  display: flex;
  gap: 40px;
  width: max-content;
  will-change: transform;
}
.client-card {
  width: 480px; 
  flex-shrink: 0;
  cursor: pointer; 
  position: relative;
  display: flex; flex-direction: column;
  padding: 0; background: none; border: none;
}
.client-card-header { margin-bottom: 20px; }
.client-card-name {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-size: clamp(16px, 1.8vw, 22px); font-weight: 400; color: var(--ink);
  letter-spacing: 0.03em; line-height: 1.1; margin: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  width: 100%; display: block;
}
.client-card-image {
    width: 100%; aspect-ratio: 3/2; background: #e8e2d9;
    overflow: hidden; position: relative;
    border: 1px solid rgba(20,20,20,0.05);
    transition: transform 0.4s var(--ease), background 0.4s;
}
.client-card:hover .client-card-image { transform: translateY(-6px); background: #f0ede8; }
.client-card-image img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.8s var(--ease);
}
.client-card:hover .client-card-image img { transform: scale(1.04); }

.client-card-meta {
  margin-top: 20px;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-ghost); display: flex; justify-content: space-between; align-items: center;
}
.client-card-status-pill {
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--gold);
}
.card-pip { width: 4px; height: 4px; border-radius: 50%; background: var(--gold); }

/* Add client button */
.add-btn {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--ink-soft); cursor: pointer; transition: color 0.3s;
  border-bottom: 1px solid rgba(20,20,20,0.15); padding-bottom: 2px;
  margin-bottom: 52px; background: none; border-top:none; border-left:none; border-right:none;
}
.add-btn:hover { color: var(--gold); border-bottom-color: var(--gold); }
.add-btn-plus { font-size: 14px; line-height: 1; color: var(--gold); }

/* ── CLIENT DETAIL ── */
.back-link {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 7.5px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-ghost); cursor: pointer; transition: color 0.3s;
  margin-bottom: 48px; background: none; border: none;
}
.back-link:hover { color: var(--ink-soft); }
.back-arrow { font-size: 10px; }

/* Client detail header */
.detail-name-row {
  display: flex; align-items: flex-start; gap: 24px; margin-bottom: 8px;
}
.client-pfp-admin {
  width: 52px; height: 52px; border-radius: 50%;
  border: 1px solid var(--gold); flex-shrink: 0;
  overflow: hidden; background: transparent;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; position: relative;
}
.client-pfp-admin img { width:100%; height:100%; object-fit:cover; display:block; }
.pfp-upload-hint {
  position: absolute; inset: 0; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Montserrat', sans-serif; font-size: 6px;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--gold); opacity: 0; transition: opacity 0.3s;
  background: rgba(252,246,239,0.85);
}
.client-pfp-admin:hover .pfp-upload-hint { opacity: 1; }

.detail-name-input {
  font-family: 'Libre Caslon Text', serif; font-style: italic;
  font-weight: 400; font-size: clamp(36px, 4vw, 54px);
  color: var(--ink); letter-spacing: -0.01em; line-height: 1.1;
  flex: 1;
}
.detail-prose-input {
  font-family: 'Libre Caslon Text', serif; font-weight: 400;
  font-size: 16px; color: var(--ink-soft); line-height: 1.7;
  max-width: 520px; margin-bottom: 60px;
}

/* ── PROJECT LIST IN CLIENT ── */
.proj-section-label {
  display: block; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.28em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 13px;
}
.proj-rule {
  height: 1px; background: rgba(20,20,20,0.1); position: relative; margin-bottom: 32px;
}
.proj-list { display:flex; flex-direction:column; gap:1px;
  background:rgba(20,20,20,0.07); border:1px solid rgba(20,20,20,0.07); margin-bottom:20px; }
.proj-row {
  background: var(--parchment); display:flex; align-items:center;
  justify-content:space-between; padding: 22px 28px;
  cursor: pointer; transition: background 0.3s;
}
.proj-row:hover { background: var(--parchment-deep); }
.proj-row-name {
  font-family: 'Libre Caslon Text', serif; font-style:italic;
  font-size: 20px; color: var(--ink);
}
.proj-row-meta {
  font-family: 'Montserrat', sans-serif; font-weight:300;
  font-size: 7.5px; letter-spacing:0.18em; text-transform:uppercase;
  color: var(--ink-ghost);
}
.proj-row-right { display:flex; align-items:center; gap:20px; }
.proj-delete-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7px; letter-spacing:0.18em; text-transform:uppercase;
  color: rgba(20,20,20,0.22); cursor:pointer; transition:color 0.3s;
  background:none; border:none; padding:4px;
}
.proj-delete-btn:hover { color: rgba(180,60,60,0.7); }

/* Undo strip */
.undo-row {
  background: var(--parchment-deep);
  display:flex; align-items:center; justify-content:space-between;
  padding: 14px 28px; animation: viewIn 0.3s var(--ease) both;
}
.undo-text {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-ghost);
}
.undo-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--gold); cursor:pointer; background:none; border:none;
  transition: color 0.3s;
}
.undo-btn:hover { color: var(--gold-dim); }

/* ── PROJECT DETAIL ── */
.phase-admin-row {
  display:flex; align-items:flex-start; gap:16px;
  padding-bottom:36px; border-bottom:1px solid rgba(20,20,20,0.05);
  margin-bottom:0; position:relative;
}
.phase-controls {
  display:flex; flex-direction:column; gap:6px;
  flex-shrink:0; padding-top:2px;
}
.phase-ctrl-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:6.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:rgba(20,20,20,0.28); cursor:pointer; background:none; border:none;
  transition:color 0.3s; white-space:nowrap;
}
.phase-ctrl-btn:hover { color:var(--gold); }
.phase-ctrl-btn.active-ctrl { color:var(--ink); }
.phase-ctrl-btn.delete-ctrl:hover { color:rgba(180,60,60,0.7); }

.phase-state-select {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--gold); background:transparent; border:none; outline:none;
  cursor:pointer; margin-bottom:6px; appearance:none;
}
.phase-name-editable {
  font-family:'Libre Caslon Text',serif; font-style:italic;
  font-size:22px; color:var(--ink);
}
.phase-desc-editable {
  font-family:'Libre Caslon Text',serif; font-size:15px;
  color:var(--ink-soft); line-height:1.65; max-width:480px; margin-top:6px;
  resize:none; height:auto; overflow:hidden;
}
.phase-date-editable {
  font-family:'Montserrat',sans-serif; font-weight:200;
  font-size:7.5px; letter-spacing:0.18em; color:var(--ink-ghost); margin-top:8px;
}

/* Appt admin row */
.appt-admin-row {
  background:var(--parchment); display:grid;
  grid-template-columns:82px 1px 1fr auto auto;
  align-items:stretch; transition:background 0.3s;
  border-bottom:1px solid rgba(20,20,20,0.07);
}
.appt-admin-row:last-child { border-bottom:none; }
.appt-day-edit, .appt-mon-edit {
  font-family:'Libre Caslon Text',serif; font-style:italic;
  color:var(--ink);
}
.appt-day-edit { font-size:34px; font-weight:400; line-height:1; }
.appt-mon-edit { font-size:11px; }

/* ── PAYMENTS ── */
.payments-table {
  width:100%; border-collapse:collapse; margin-bottom:52px;
}
.payments-table th {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.22em; text-transform:uppercase;
  color:var(--ink-ghost); text-align:left;
  padding:0 0 14px; border-bottom:1px solid rgba(20,20,20,0.1);
}
.payments-table td {
  padding:18px 0; border-bottom:1px solid rgba(20,20,20,0.05);
  font-family:'Libre Caslon Text',serif; font-size:16px; color:var(--ink);
  vertical-align:middle;
}
.payments-table td.td-meta {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-soft);
}
.pay-status {
  display:inline-flex; align-items:center; gap:6px;
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7.5px; letter-spacing:0.18em; text-transform:uppercase;
}
.pay-status.due   { color:rgba(180,120,40,0.9); }
.pay-status.paid  { color:rgba(60,120,80,0.8);  }
.pay-pip { width:5px; height:5px; border-radius:50%; background:currentColor; }
.pay-toggle-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7px; letter-spacing:0.18em; text-transform:uppercase;
  color:rgba(20,20,20,0.3); cursor:pointer; background:none; border:none;
  transition:color 0.3s; padding:4px;
}
.pay-toggle-btn:hover { color:var(--gold); }
.pay-delete-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7px; letter-spacing:0.18em; text-transform:uppercase;
  color:rgba(20,20,20,0.2); cursor:pointer; background:none; border:none;
  transition:color 0.3s; padding:4px; margin-left:8px;
}
.pay-delete-btn:hover { color:rgba(180,60,60,0.7); }

/* ── TASKS ── */
.task-row {
  display:flex; align-items:center; gap:16px;
  padding:16px 0; border-bottom:1px solid rgba(20,20,20,0.06);
  position:relative;
}
.task-check {
  width:14px; height:14px; border-radius:50%;
  border:1px solid rgba(20,20,20,0.25); flex-shrink:0;
  cursor:pointer; transition:background 0.25s, border-color 0.25s;
  display:flex; align-items:center; justify-content:center;
}
.task-check.done { background:var(--gold); border-color:var(--gold); }
.task-check.done::after {
  content:''; width:5px; height:5px; border-radius:50%; background:#fcf6ef;
}
.task-text {
  flex:1; font-family:'Libre Caslon Text',serif; font-style:italic;
  font-size:18px; color:var(--ink); line-height:1.3;
}
.task-text.done-text { opacity:0.35; text-decoration:line-through; text-decoration-color:rgba(20,20,20,0.3); }
.task-priority {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink-ghost); flex-shrink:0;
}
.task-delete-btn {
  font-family:'Montserrat',sans-serif; font-weight:300;
  font-size:7px; letter-spacing:0.18em; text-transform:uppercase;
  color:rgba(20,20,20,0.18); cursor:pointer; background:none; border:none;
  transition:color 0.3s;
}
.task-delete-btn:hover { color:rgba(180,60,60,0.7); }

/* ── PHASE TASKS (PROJECT DETAIL) ── */
.phase-task-row {
  display: flex; align-items: center; gap: 12px; 
  padding: 8px 0; border-bottom: 1px solid rgba(20,20,20,0.04);
}
.task-check-small {
  width: 13px; height: 13px; border-radius: 50%; flex-shrink: 0; 
  border: 1px solid rgba(20,20,20,0.22); cursor: pointer; 
  display: flex; align-items: center; justify-content: center; 
  background: transparent; transition: background 0.3s, border-color 0.3s;
}
.task-check-small.done { background: var(--gold); border-color: var(--gold); }
.phase-task-text {
  flex: 1; font-family: 'Libre Caslon Text', serif; font-style: italic; 
  font-size: 16px; color: var(--ink); background: transparent; border: none;
}
.phase-task-delete {
  font-family: 'Montserrat', sans-serif; font-weight: 300; 
  font-size: 6.5px; letter-spacing: 0.15em; text-transform: uppercase; 
  color: rgba(20,20,20,0.18); cursor: pointer; background: none; 
  border: none; transition: color 0.3s;
}
.phase-task-delete:hover { color: rgba(180,60,60,0.7); }

/* ── CLIENT PROFILE DRAWER ── */
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; left: 0;
  z-index: 1000; visibility: hidden; pointer-events: none;
  transition: visibility 0.4s;
}
.drawer.active { visibility: visible; pointer-events: auto; }

.drawer-overlay {
  position: absolute; top: 0; right: 0; bottom: 0; left: 0;
  background: rgba(20,20,20,0.15); backdrop-filter: blur(8px);
  opacity: 0; transition: opacity 0.4s ease;
}
.drawer.active .drawer-overlay { opacity: 1; }

.drawer-content {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: 400px; max-width: 85%;
  background: var(--parchment);
  transform: translateX(100%);
  transition: transform 0.6s cubic-bezier(0.19, 1, 0.22, 1);
  padding: 80px 56px;
  display: flex; flex-direction: column;
  box-shadow: -20px 0 60px rgba(0,0,0,0.05);
}
.drawer.active .drawer-content { transform: translateX(0); }

.drawer-header {
  margin-bottom: 64px; display: flex; justify-content: space-between; align-items: baseline;
}
.drawer-close {
  background: none; border: none; font-family: 'Montserrat',sans-serif;
  font-size: 8px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-ghost); cursor: pointer; padding: 0;
  border-bottom: 1px solid rgba(20,20,20,0.1); padding-bottom: 2px;
  transition: all 0.3s;
}
.drawer-close:hover {
  color: var(--ink);
  border-bottom-color: var(--ink);
}

.user-info { margin-bottom: 32px; display: flex; flex-direction: column; align-items: center; text-align: center; }
.drawer-pfp {
  width: 100px; height: 100px; border-radius: 50%;
  border: 1px solid var(--gold); margin-bottom: 32px;
  overflow: hidden; display: flex; align-items: center; justify-content: center;
  font-family: 'Libre Caslon Text', serif; font-size: 32px; color: var(--gold);
  background: var(--parchment-deep);
}
.drawer-pfp img { width: 100%; height: 100%; object-fit: cover; }
.drawer-name {
  font-family: 'Libre Caslon Text', serif; font-style: italic; font-weight: 400;
  font-size: min(18px, 4.5vw) !important; color: var(--ink); margin-bottom: 8px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;
}
.drawer-email {
  font-family: 'Montserrat', sans-serif; font-weight: 300; font-size: 9px;
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-ghost);
  margin-bottom: 24px;
}

.drawer-meta-group { margin-bottom: 32px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.drawer-meta-label { 
  font-family: 'Montserrat', sans-serif; font-weight: 300; font-size: 7.5px; 
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold);
}
.drawer-meta-value {
  font-family: 'Libre Caslon Text', serif; font-size: 16px; color: var(--ink-soft);
}
.drawer-prose {
  font-family: 'Montserrat', sans-serif; font-weight: 300; font-size: 11px; line-height: 1.6;
  color: var(--ink-soft); text-align: center; margin-top: 4px;
  max-width: 280px;
}

.drawer-actions {
  margin-top: 32px; display: flex; flex-direction: column; gap: 14px;
  align-items: center; width: 100%;
}
.drawer-btn {
  background: none; border: 1px solid rgba(20,20,20,0.08);
  padding: 14px 24px; font-family: 'Montserrat', sans-serif; font-weight: 300;
  font-size: 8px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--ink-soft); cursor: pointer; transition: all 0.3s;
  text-align: center; border-radius: 2px; width: 100%;
}
.drawer-btn:hover { border-color: rgba(20,20,20,0.15); color: var(--ink); background: var(--parchment-deep); }
.drawer-btn.withdraw { 
  border: none; padding: 12px 0; color: var(--ink-ghost); font-size: 8px; 
  margin-top: 16px; text-align: center; opacity: 0.6;
}
.drawer-btn.withdraw:hover { color: var(--ink); background: none; opacity: 1; }

/* ── ADMIN DETAIL LAYOUTS ── */
.admin-meta-row {
  display: flex; gap: 24px; margin-bottom: 24px; flex-wrap: wrap;
}
.admin-meta-item {
  flex: 1; min-width: 140px; display: flex; flex-direction: column;
}
.admin-finance-grid {
  display: flex; gap: 24px; flex-wrap: wrap;
}
.finance-block {
  flex: 1; min-width: 240px; background: var(--parchment); 
  padding: 22px; border: 1px solid rgba(20,20,20,0.05);
}
.admin-phase-row {
  display: flex; align-items: flex-start; gap: 20px; 
  padding: 28px 0; border-bottom: 1px solid rgba(20,20,20,0.06);
}
.admin-phase-content { flex: 1; }
.admin-phase-header {
  display: flex; align-items: center; justify-content: space-between; 
  margin-bottom: 16px; gap: 16px;
}
.admin-appt-row {
  background: var(--parchment); display: grid; 
  grid-template-columns: 82px 1px 1fr auto auto; 
  align-items: stretch; transition: background 0.3s; 
  border-bottom: 1px solid rgba(20,20,20,0.07);
}
/* ─── PROGRESS BAR & TIMELINE ─── */
.progress-container {
  margin: 40px 0 60px;
  position: relative;
}
.progress-track {
  display: flex;
  justify-content: space-between;
  position: relative;
  align-items: center;
  padding: 0 10px;
}
.progress-line {
  position: absolute;
  top: 50%;
  left: 30px;
  right: 30px;
  height: 1px;
  background: rgba(20,20,20,0.08);
  z-index: 1;
  transform: translateY(-50%);
}
.progress-line-active {
  position: absolute;
  top: 50%;
  left: 30px;
  height: 1px;
  background: var(--gold);
  z-index: 2;
  transform: translateY(-50%);
  transition: width 0.8s cubic-bezier(0.19, 1, 0.22, 1);
  width: 0%;
}
.progress-step {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 60px;
}
.step-node {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--parchment);
  border: 1px solid rgba(20,20,20,0.15);
  transition: all 0.4s ease;
  margin-bottom: 12px;
}
.progress-step.active .step-node {
  background: var(--gold);
  border-color: var(--gold);
  box-shadow: 0 0 12px rgba(210,172,71,0.3);
  transform: scale(1.2);
}
.progress-step.completed .step-node {
  background: var(--ink);
  border-color: var(--ink);
}
.step-label {
  font-family: 'Montserrat', sans-serif;
  font-weight: 300;
  font-size: 7px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-ghost);
  transition: color 0.3s;
}
.progress-step.active .step-label {
  color: var(--gold);
}

/* ─── PROJECT BLOCKS (COMMISSION GRID) ─── */
.project-grid {
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-top: 32px;
}
.project-card {
  background: var(--parchment);
  border: 1px solid rgba(20,20,20,0.08);
  padding: 38px 42px;
  cursor: pointer;
  transition: background 0.3s var(--ease);
  position: relative;
  overflow: hidden;
  width: 100%;
}
.project-card:hover {
  background: var(--parchment-deep);
}
.project-card-title {
  font-family: 'Libre Caslon Text', serif;
  font-style: italic;
  font-size: 20px;
  color: var(--ink);
  margin-bottom: 8px;
}
.project-card-meta {
  font-family: 'Source Sans 3', sans-serif;
  font-size: 13px;
  color: var(--ink-ghost);
  margin-bottom: 24px;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.project-card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: auto;
}
.card-phase-label {
  font-family: 'Montserrat', sans-serif;
  font-weight: 300;
  font-size: 7.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--gold);
}
.card-mini-bar {
  height: 2px;
  background: rgba(20,20,20,0.05);
  width: 60px;
  position: relative;
  border-radius: 1px;
}
.card-mini-progress {
  position: absolute;
  top: 0; left: 0; bottom: 0;
  background: var(--gold);
  border-radius: 1px;
  transition: width 0.6s ease;
}

@media (max-width: 600px) {
  .project-grid { grid-template-columns: 1fr; }
  .project-card { padding: 24px; }
  .progress-line { left: 20px; right: 20px; }
  .progress-line-active { left: 20px; }
}

.admin-task-row {
  display: flex; align-items: center; gap: 12px; 
  padding: 8px 0; border-bottom: 1px solid rgba(20,20,20,0.04);
}

/* ─── RESPONSIVE ──────────────────────────────── */
@media (max-width: 860px) {
  :root { --margin: 28px; }
  .ribbon { padding: 20px 24px; }
  .ribbon-logo .wordmark { display: none; }
  .ribbon-logo .submark  { display: block; }
  .ribbon-nav { gap: 16px; }
  .r-item .full  { display: none; }
  .r-item .short { display: inline; }
  .a-grid { grid-template-columns: 1fr; gap: 20px; }
  .next-appt { flex-direction: column; gap: 28px; }
  .appt-row { grid-template-columns: 52px 1px 1fr auto; }
  .row-date { padding: 20px 10px; }
  .row-body { padding: 20px 16px; }
  .row-action { padding: 20px 12px; display: flex; justify-content: flex-end; }
  .row-day { font-size: 24px; }
  .row-title { font-size: 16px; }
  .clients-grid { 
    display: grid !important; 
    grid-template-columns: 1fr 1fr !important;
    width: 100% !important; 
    gap: 16px !important;
    transform: none !important;
  }
  .clients-viewport { 
    overflow: visible; width: 100% !important; 
    margin-left: 0; cursor: default;
  }
  .client-card { width: 100% !important; flex-shrink: 1 !important; }
  .client-card-name { 
    font-size: clamp(12px, 3.5vw, 14px) !important; 
    letter-spacing: 0.01em !important; 
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .client-card-header { margin-bottom: 10px !important; }
  .payments-table thead { display: none; }
  .payments-table tr { 
    display: flex; flex-direction: column; 
    padding: 24px 0; border-bottom: 1px solid rgba(20,20,20,0.08); 
    cursor: pointer;
    transition: all 0.3s ease;
  }
  .payments-table td { 
    display: none; /* Accordion: hidden by default */
    padding: 8px 0 !important; border: none !important; 
    font-size: 13px !important; align-items: center; justify-content: space-between;
  }
  .payments-table td::before {
    content: attr(data-label);
    font-family: 'Montserrat', sans-serif; font-weight: 300;
    font-size: 7px; letter-spacing: 0.15em; text-transform: uppercase;
    color: var(--gold);
  }

  /* Condensed View: Project + Price */
  .payments-table td[data-label="Description"],
  .payments-table td[data-label="Amount"] {
    display: flex;
    font-size: 11px !important;
    letter-spacing: 0.02em;
    padding: 4px 0 !important;
  }
  .payments-table td[data-label="Description"]::before,
  .payments-table td[data-label="Amount"]::before {
    display: none; /* Hide labels in condensed view for 'airy' feel */
  }
  .payments-table td[data-label="Description"] {
    font-family: 'Libre Caslon Text', serif; font-style: italic; font-size: 16px !important;
    margin-bottom: 4px;
  }
  .payments-table td[data-label="Amount"] {
    font-family: 'Montserrat', sans-serif; font-weight: 300; opacity: 0.6;
    text-transform: uppercase; font-size: 9px !important; letter-spacing: 0.1em;
  }

  /* Expanded View */
  .payments-table tr.expanded {
    padding: 32px 0;
  }
  .payments-table tr.expanded td {
    display: flex;
  }
  .payments-table tr.expanded td[data-label="Description"]::before,
  .payments-table tr.expanded td[data-label="Amount"]::before {
    display: block;
  }
  .payments-table tr.expanded td[data-label="Description"] {
    font-size: 18px !important; margin-bottom: 12px;
  }
  .payments-table tr.expanded td[data-label="Amount"] {
    font-size: 16px !important; opacity: 1; font-family: 'Libre Caslon Text', serif;
    text-transform: none; letter-spacing: 0;
  }
  .payments-table .pay-status { margin-left: auto; }
  .detail-name-row { gap: 16px; }
  .detail-name-input { font-size: clamp(28px,7vw,42px); }
  .appt-admin-row { grid-template-columns: 68px 1px 1fr !important; }
  .appt-admin-row > div:nth-child(4),
  .appt-admin-row > div:nth-child(5) { display: none; }
  .bclr-phase-header { flex-direction: column; align-items: flex-start; gap: 8px; }

  /* Admin Details Responsive */
  .admin-meta-row { gap: 12px; }
  .admin-meta-item { min-width: 100%; }
  .admin-finance-grid { flex-direction: column; }
  .finance-block { min-width: 100%; }
  
  .admin-phase-row { 
    flex-direction: column !important; 
    gap: 8px !important; 
    padding: 32px 0 20px 0 !important;
  }
  .admin-phase-content { 
    padding-left: 36px !important; 
    width: 100% !important; 
    box-sizing: border-box;
  }
  .admin-phase-header { flex-direction: column; align-items: flex-start; gap: 8px; }
  
  .phase-task-row { 
    display: flex !important; 
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 14px 0 !important;
    border-bottom: 1px solid rgba(20,20,20,0.04) !important;
  }
  .phase-task-text { 
    flex: 1 !important; 
    width: auto !important;
    font-size: 14px !important;
    min-width: 0 !important;
  }
  .phase-task-delete { 
    width: 100% !important; 
    text-align: right !important; 
    margin-top: 4px !important;
    font-size: 7px !important;
    opacity: 0.5;
    order: 3;
  }
  .detail-prose-input { max-width: 100% !important; }
  .bclr-phase-label { font-size: 19px !important; display: block; margin-bottom: 4px; }

  .admin-appt-row { 
    grid-template-columns: 68px 1px 1fr !important; 
  }
  .admin-appt-row > div:nth-child(4),
  .admin-appt-row > div:nth-child(5) { 
    grid-column: 3;
    text-align: left !important;
    padding-top: 0 !important;
    padding-bottom: 10px !important;
  }
  .admin-task-row { flex-wrap: wrap; }

  /* ─── RETAINER MOBILE REFINEMENT ─── */
  .admin-retainer-row {
    padding: 16px 20px !important;
    margin: 0 !important; /* Remove grey gaps and return to standard flow */
    width: 100% !important;
    border-radius: 0 !important; /* Remove rounding to match studio grid */
    border: none !important;
    border-bottom: 1px solid rgba(20,20,20,0.05) !important;
    background: var(--parchment) !important;
  }
  .retainer-controls { 
    display: flex !important; 
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 12px !important;
  }
  .retainer-name-field { 
    flex: 1 0 100% !important; 
    font-size: 16px !important; 
    margin-bottom: 4px;
  }
  .retainer-price-field { 
    font-size: 15px !important; 
    width: 80px !important; 
    text-align: right !important;
  }
  .retainer-status-select { font-size: 8px !important; }
  .retainer-inclusions-field { font-size: 11px !important; line-height: 1.4 !important; }
}
@media (max-width: 600px) {
  .login-wrap { max-width: 100%; padding: 0 24px; }
  .ribbon-nav { gap: 10px; }
  .r-item { font-size: 7px; letter-spacing: 0.12em; }
  .ribbon-pfp { width: 26px; height: 26px; }
  .view { padding-left: 24px; padding-right: 24px; }
  .admin-view { padding-left: 20px; padding-right: 20px; padding-bottom: 100px; }
  .a-cell { padding: 24px 20px; }
  
  /* Cinematic Wrapping */
  .proj-row-name, 
  .task-text, 
  .client-name, 
  .detail-name-input,
  .payments-table td:nth-child(2),
  .bc-seg {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    line-height: 1.2 !important;
  }
}

/* ─── FINAL POLISH: MOBILE SAFETIES ─── */
@media (max-width: 480px) {
  :root { --margin: 24px; }
  .login-title { font-size: 38px !important; }
  .login-subtitle { font-size: 10px !important; }
  .sign-in-btn { width: 100%; border-radius: 0; }
  .ribbon { padding: 0 16px; height: 60px; }
  .view { padding: 94px 20px 40px 20px; }
  .p-header { font-size: 32px !important; }
  .project-fat-title {
    font-family: 'Libre Caslon Text', serif;
    font-style: italic;
    font-weight: 400;
    font-size: clamp(24px, 8vw, 52px) !important;
    line-height: 1.1;
    margin-bottom: 24px;
    white-space: normal !important;
    word-break: break-word !important;
    width: 100%;
  }
  .comm-title { font-size: clamp(24px, 8vw, 52px) !important; }
  .roadmap-phase-title { font-size: 18px !important; }
}

/* ─── PAYMENT LOG ACCORDION (MOBILE) ─── */
.mobile-only { display: none !important; }
.desktop-only { display: table-cell !important; }

@media (max-width: 600px) {
    .mobile-only { display: block !important; }
    .desktop-only { display: none !important; }

    .payments-table thead { display: none !important; }
    .payments-table tr { 
        display: flex !important; flex-direction: column !important; 
        padding: 8px 0 !important; 
        border: none !important; 
        border-bottom: 1.5px solid rgba(20,20,20,0.1) !important;
        cursor: pointer;
        background: transparent !important;
        width: 100% !important;
        transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .accordion-bar {
        display: block !important;
        padding: 24px 0 !important;
        border-bottom: none !important;
        width: 100% !important;
        background: transparent !important;
    }
    .bar-content {
        display: flex;
        justify-content: space-between;
        align-items: center;
        width: 100%;
    }
    .bar-title {
        font-family: 'Libre Caslon Text', serif;
        font-style: italic;
        font-size: 17px;
        color: var(--ink);
        line-height: 1.2;
    }
    .bar-icon {
        font-size: 20px;
        color: var(--ink);
        width: 24px;
        height: 24px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: transform 0.4s ease;
    }
    .bar-icon::after { content: '+'; font-weight: 300; }
    tr.expanded .bar-icon::after { content: '−'; }

    /* The smaller details shown when expanded: CLIENT: name, etc. */
    .payments-table td:not(.accordion-bar) {
        display: flex !important;
        max-height: 0;
        opacity: 0;
        overflow: hidden;
        padding: 0 !important;
        border: none !important;
        font-family: 'Montserrat', sans-serif !important;
        font-weight: 300 !important;
        font-size: 10.5px !important;
        color: var(--ink);
        width: 100% !important;
        justify-content: flex-start;
        align-items: center;
        background: transparent !important;
        transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), 
                    opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
                    padding 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;
        text-transform: uppercase !important;
        letter-spacing: 0.05em;
    }

    /* Detail values (CLIENT NAME, £1000) strictly matching */
    .payments-table td:not(.accordion-bar) {
         font-family: 'Montserrat', sans-serif !important;
         font-style: normal !important;
         font-weight: 300 !important;
         font-size: 10.5px !important;
         line-height: normal !important;
         text-transform: uppercase !important;
         letter-spacing: 0.05em;
    }

    /* Specifically hide Description on mobile expanded view */
    .payments-table td[data-label="Description"] {
        display: none !important;
    }

    tr.expanded td:not(.accordion-bar):not([data-label="Description"]) {
        max-height: 40px; /* Snappier reverse */
        opacity: 1;
        padding: 10px 0 !important;
    }
    .payments-table td[data-label]::before {
        content: attr(data-label) ": ";
        font-weight: 600;
        color: var(--ink-ghost);
        margin-right: 8px;
        font-size: 10.5px;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        flex-shrink: 0;
        width: 85px; /* Fixed width to prevent shifting */
        display: inline-block;
    }
    .payments-table td[data-label="Client"]::before {
        content: "CLIENT: ";
    }
    .pay-status {
        margin-left: 0 !important;
        font-size: 9px !important;
        padding: 4px 10px !important;
        border-radius: 20px;
    }
    tr.expanded {
        padding-bottom: 32px !important;
    }
    tr.expanded .accordion-bar {
        padding-bottom: 8px !important;
    }
}

/* ─── DELIVERABLES / RESOURCES ─── */
.deliverables-grid {
  display: flex;
  flex-direction: column;
  gap: 1px;
  margin-top: 24px;
}
.file-card {
  background: var(--parchment);
  padding: 16px 24px;
  display: flex;
  align-items: center;
  gap: 16px;
  transition: all 0.3s var(--ease);
  position: relative;
  text-align: left;
}
.file-card:hover { border-color: var(--gold); background: var(--parchment-deep); }
.file-icon {
  width: 32px; height: 32px; background: rgba(20,20,20,0.03);
  display: flex; align-items: center; justify-content: center;
  border-radius: 2px; color: var(--gold); flex-shrink: 0;
}
.file-info { flex: 1; min-width: 0; }
.file-name {
  display: block; font-family: 'Montserrat', sans-serif; font-size: 11px;
  font-weight: 500; color: var(--ink); margin-bottom: 4px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.file-meta {
  display: block; font-family: 'Montserrat', sans-serif; font-size: 8px;
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-ghost);
}
.file-download {
  color: var(--gold); cursor: pointer; padding: 8px;
  transition: transform 0.3s;
  background: none; border: none;
}
.file-download:hover { transform: translateY(2px); }

.upload-zone {
  border: 1px dashed rgba(20,20,20,0.15);
  padding: 40px; text-align: center; cursor: pointer;
  transition: all 0.3s; margin-top: 24px; background: rgba(20,20,20,0.02);
}
.upload-zone:hover, .upload-zone.dragging {
  border-color: var(--gold); background: rgba(210,172,71,0.05);
}
.upload-progress-wrap {
    margin-top: 16px; height: 2px; background: rgba(20,20,20,0.05);
    width: 100%; display: none;
    position: relative;
    overflow: hidden;
}
.upload-progress-bar {
    height: 100%; background: var(--gold); width: 0%;
    transition: width 0.3s ease;
}

/* File Actions (Delete) */
.file-delete {
  position: absolute; top: 8px; right: 8px;
  font-family: 'Montserrat', sans-serif; font-size: 7px;
  letter-spacing: 0.1em; color: rgba(20,20,20,0.2);
  text-transform: uppercase; border: none; background: none;
  cursor: pointer; opacity: 0; transition: opacity 0.3s;
}
.file-card:hover .file-delete { opacity: 1; }
.file-delete:hover { color: #A04444; }
