/* ==========================================================================
   Camp Hatikvah Photo System, concept by Strohl.dev
   Aesthetic: warm camp paper (the palette Dan preferred) carrying the
   handbook's banner motif in terracotta, with rounded friendly type.
   Distinct from the agency house style: no serifs, no italic accent.
   ========================================================================== */

:root{
  /* the warm palette from v1, which Dan preferred */
  --white:      #f7f2e7;   /* warm paper page */
  --card:       #fffdf7;   /* cards sit slightly brighter than the page */
  --sky:        #f0e9d8;   /* warm sand section tint */
  --sky-deep:   #e3d9c2;
  --ink:        #2b2521;
  --ink-soft:   #5c5350;   /* the real logo colour */
  --ink-faint:  #6e645d;
  --terra:      #c4562b;   /* terracotta accent */
  --terra-deep: #a8431d;
  --sun-1:      #e0b45c;   /* muted gold, trim only */
  --sun-text:   #a8431d;   /* small accent text on paper, AA */
  --lake:       #1f6f8b;
  --lake-deep:  #14506b;
  --moss:       #47694a;
  --rule:       rgba(43,37,33,.14);
  --grad:       linear-gradient(96deg, #c4562b 0%, #a8431d 100%);
  --grad-deep:  linear-gradient(96deg, #ba4f24 0%, #a8431d 100%);
  --shadow:     0 1px 2px rgba(43,37,33,.05), 0 10px 26px -12px rgba(43,37,33,.2);
  --shadow-lg:  0 2px 4px rgba(43,37,33,.06), 0 28px 60px -22px rgba(43,37,33,.3);
  --radius:     18px;
  --maxw:       1160px;
  --display:    "Outfit", "Avenir Next", sans-serif;
  --body:       "Nunito Sans", "Helvetica Neue", Arial, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }

h1,h2,h3{
  font-family:var(--display);
  font-weight:500;
  line-height:1.1;
  letter-spacing:-.012em;
  margin:0;
}

.eyebrow{
  font-family:var(--body);
  font-size:.74rem; letter-spacing:.2em; text-transform:uppercase;
  font-weight:800; color:var(--sun-text); margin:0 0 .9rem;
}

/* ---------- top bar ---------- */
.topbar{
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; justify-content:space-between;
  gap:1rem; padding:.6rem clamp(1rem,4vw,2.6rem);
  background:rgba(247,242,231,.92);
  backdrop-filter:saturate(160%) blur(12px);
  -webkit-backdrop-filter:saturate(160%) blur(12px);
  border-bottom:3px solid transparent;
  border-image:var(--grad) 1;
}
.brandmark{ display:flex; align-items:center; gap:.85rem; text-decoration:none; color:inherit; }
.brandmark img{ height:42px; width:auto; }
.divider{ width:1px; height:26px; background:var(--rule); }
.sysname{
  font-family:var(--display); font-size:.8rem; line-height:1.1;
  font-weight:500; letter-spacing:.05em; color:var(--ink-soft);
  text-transform:uppercase;
}
.concept-pill{
  font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; font-weight:800;
  color:var(--lake-deep); border:1.5px solid rgba(31,111,139,.4);
  background:rgba(31,111,139,.08);
  padding:.34rem .7rem; border-radius:999px; white-space:nowrap;
}

/* ---------- hero ---------- */
.hero{
  position:relative; z-index:2;
  background:
    radial-gradient(900px 480px at 88% -12%, rgba(224,180,92,.18) 0%, rgba(224,180,92,0) 60%),
    radial-gradient(700px 420px at -8% 30%, rgba(31,111,139,.08) 0%, rgba(31,111,139,0) 62%),
    var(--white);
}
.hero{
  max-width:none;
}
.hero{
  display:grid; grid-template-columns:1fr; gap:clamp(2rem,5vw,3rem); align-items:center;
  padding:clamp(2.4rem,7vw,5.2rem) clamp(1rem,4vw,2.6rem) clamp(2rem,5vw,3.4rem);
}
@media (min-width:900px){
  .hero{ grid-template-columns:1.16fr .84fr; max-width:var(--maxw); margin:0 auto; }
}

h1{
  font-size:clamp(2.3rem,6.4vw,3.95rem);
  font-weight:600;
}
.h1-accent{
  background:linear-gradient(96deg, #c4562b 0%, #a8431d 100%);
  -webkit-background-clip:text; background-clip:text;
  color:transparent;
  font-weight:600;
}
.lede{
  font-size:clamp(1.02rem,2.1vw,1.17rem);
  color:#4a443f; max-width:34em; margin:1.35rem 0 0;
}
.hero-cta{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.9rem; }
.hero-note{
  margin-top:1.5rem; font-size:.84rem; line-height:1.6; color:var(--ink-faint);
  max-width:36em; padding-left:.9rem; border-left:3px solid var(--terra);
}

.btn{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--display); font-weight:600; font-size:1.1rem; letter-spacing:.01em;
  padding:.8rem 1.7rem; border-radius:999px; text-decoration:none;
  border:2px solid transparent; cursor:pointer;
  transition:transform .18s cubic-bezier(.2,.8,.3,1), box-shadow .18s, background .18s, color .18s, filter .18s;
}
.btn-lg{ padding:.95rem 2.1rem; font-size:1.18rem; }
.btn-primary{
  background:var(--grad-deep); color:#fff;
  box-shadow:0 6px 20px -6px rgba(168,67,29,.45);
  text-shadow:0 1px 2px rgba(120,45,0,.25);
}
.btn-primary:hover{ transform:translateY(-2px); filter:saturate(1.08); box-shadow:0 10px 26px -8px rgba(168,67,29,.5); }
.btn-primary:disabled{ filter:grayscale(.15) brightness(.96); }
.btn-ghost{ border-color:rgba(31,111,139,.45); color:var(--lake-deep); background:var(--card); }
.btn-ghost:hover{ background:rgba(31,111,139,.07); transform:translateY(-2px); }
.btn:focus-visible,.chip:focus-visible,.seg-btn:focus-visible,
.dropzone:focus-visible,.lb-nav:focus-visible,.lb-close:focus-visible,
.daybtn:focus-visible,.tile:focus-visible,.minibtn:focus-visible,
.lb-save:focus-visible,.linkbtn:focus-visible{
  outline:3px solid var(--lake); outline-offset:3px;
}

/* ---------- phone ---------- */
.phone{
  position:relative; margin:0 auto; width:min(300px,84vw); aspect-ratio:9/18.4;
  background:linear-gradient(168deg,#3c3531,#211c19);
  border-radius:42px; padding:11px;
  box-shadow:var(--shadow-lg), inset 0 0 0 1.5px rgba(255,255,255,.13);
}
.phone-sm{ width:min(266px,78vw); }
.phone-notch{
  position:absolute; top:15px; left:50%; transform:translateX(-50%);
  width:31%; height:19px; background:#191512; border-radius:0 0 13px 13px; z-index:3;
}
.phone-screen{
  position:relative; height:100%; border-radius:32px; overflow:hidden;
  background:
    linear-gradient(180deg, rgba(20,26,34,.30), rgba(20,26,34,.62)),
    url("photos/jul-30-01.jpg") center/cover;
  padding:1.15rem .78rem; color:#fff;
}
.lock-time{
  font-family:var(--display); font-size:3.1rem; font-weight:300;
  text-align:center; margin-top:2.5rem; line-height:1;
  text-shadow:0 2px 14px rgba(0,0,0,.4);
}
.lock-date{
  text-align:center; font-size:.8rem; opacity:.94; margin-bottom:1.5rem;
  text-shadow:0 1px 8px rgba(0,0,0,.4);
}
.push{
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  color:var(--ink); border-radius:17px; padding:.62rem .7rem; margin-bottom:.5rem;
  box-shadow:0 6px 18px rgba(0,0,0,.24);
  animation:pushIn .75s cubic-bezier(.2,.9,.25,1) both;
}
.push-2{ opacity:.62; transform:scale(.965); animation-delay:.16s; }
@keyframes pushIn{ from{ opacity:0; transform:translateY(-13px) scale(.94); } }
.push-app{
  display:flex; align-items:center; gap:.35rem;
  font-size:.585rem; letter-spacing:.1em; font-weight:800;
  text-transform:uppercase; color:var(--ink-faint); margin-bottom:.2rem;
}
.push-app img{ border-radius:4px; }
.push-when{ margin-left:auto; letter-spacing:.02em; }
.push-title{ font-weight:800; font-size:.83rem; line-height:1.25; }
.push-body{ font-size:.79rem; line-height:1.34; color:#4a443f; }

/* ---------- problem strip ---------- */
.strip{
  position:relative; z-index:2;
  background:var(--sky);
  border-top:1px solid var(--sky-deep); border-bottom:1px solid var(--sky-deep);
}
.strip-inner{
  max-width:var(--maxw); margin:0 auto;
  padding:clamp(2rem,4.5vw,3.1rem) clamp(1rem,4vw,2.6rem);
  display:grid; gap:1.9rem; grid-template-columns:1fr;
}
@media (min-width:760px){ .strip-inner{ grid-template-columns:repeat(3,1fr); gap:2.4rem; } }
.strip article{ position:relative; padding-top:.3rem; }
.strip-num{
  font-family:var(--display); font-size:.95rem; font-weight:500;
  color:#fff; background:var(--terra);
  width:30px; height:30px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center; margin-bottom:.72rem;
  box-shadow:0 4px 10px -3px rgba(168,67,29,.45);
}
.strip h3{ font-size:1.16rem; margin-bottom:.42rem; font-weight:600; }
.strip p{ margin:0; font-size:.94rem; color:#4f4842; }

/* ---------- sections ---------- */
.section{
  position:relative; z-index:2;
  max-width:var(--maxw); margin:0 auto;
  padding:clamp(3rem,7vw,4.6rem) clamp(1rem,4vw,2.6rem);
}
.section-warm{
  max-width:none;
  background:var(--sky);
  border-top:1px solid var(--sky-deep); border-bottom:1px solid var(--sky-deep);
}
.section-warm > *{ max-width:var(--maxw); margin-left:auto; margin-right:auto; }

/* handbook-style gradient banner heads */
.section-head{ max-width:none; margin-bottom:2.2rem; }
.section-head .eyebrow{ margin-bottom:.8rem; }
.section-head h2{
  display:block;
  background:var(--grad-deep);
  color:#fff;
  font-size:clamp(1.4rem,3.4vw,2rem);
  font-weight:500;
  letter-spacing:.05em;
  text-transform:uppercase;
  padding:.72rem 1.15rem .78rem;
  border-radius:14px;
  border-bottom:5px solid var(--sun-1);
  box-shadow:0 10px 26px -12px rgba(168,67,29,.45);
  text-shadow:0 1px 3px rgba(120,45,0,.28);
}
.section-sub{ color:#4f4842; margin:1.05rem 0 0; font-size:1.03rem; max-width:46rem; }

/* ---------- day rail ---------- */
.dayrail{
  display:flex; gap:.6rem; overflow-x:auto; padding:.3rem .1rem 1.1rem;
  scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.dayrail::-webkit-scrollbar{ height:6px; }
.dayrail::-webkit-scrollbar-thumb{ background:rgba(46,42,39,.2); border-radius:4px; }
.daybtn{
  scroll-snap-align:start; flex:0 0 auto; cursor:pointer;
  background:var(--card); border:2px solid var(--sky-deep);
  border-radius:14px; padding:.6rem .95rem; text-align:left;
  font-family:var(--body); color:var(--ink); min-width:134px;
  transition:transform .16s, border-color .16s, background .16s, box-shadow .16s;
}
.daybtn:hover{ transform:translateY(-2px); border-color:var(--lake); box-shadow:var(--shadow); }
.daybtn strong{ display:block; font-size:.95rem; font-weight:800; }
.daybtn span{ font-size:.77rem; color:var(--ink-faint); }
.daybtn.is-on{
  background:var(--lake); border-color:var(--lake); color:#fff;
  box-shadow:0 8px 20px -8px rgba(31,111,139,.6);
}
.daybtn.is-on span{ color:rgba(255,255,255,.88); }
.daybtn span.newdot{
  display:inline-block; font-size:.6rem; letter-spacing:.12em; text-transform:uppercase;
  font-weight:800; background:var(--terra-deep); color:#fff;
  padding:.14rem .44rem; border-radius:999px; margin-left:.4rem; vertical-align:.1em;
}

.gallery-meta{
  display:flex; align-items:center; gap:.9rem; flex-wrap:wrap;
  margin:.5rem 0 1rem; padding-bottom:.8rem; border-bottom:2px solid var(--sky-deep);
}
.gallery-meta h3{ font-size:1.45rem; font-weight:600; }
.count{ font-size:.87rem; color:var(--ink-faint); font-weight:600; }
.meta-actions{ margin-left:auto; display:flex; gap:.5rem; }

.minibtn{
  display:inline-flex; align-items:center; justify-content:center; min-height:40px;
  font-family:var(--body); font-size:.86rem; font-weight:800; cursor:pointer;
  padding:.42rem 1.05rem; border-radius:999px;
  border:2px solid rgba(31,111,139,.4); background:var(--card); color:var(--lake-deep);
  transition:background .18s, transform .18s, border-color .18s, color .18s, filter .18s;
}
.minibtn:hover{ background:rgba(31,111,139,.07); transform:translateY(-1px); }
.minibtn-solid{ background:var(--lake); border-color:var(--lake); color:#fff; }
.minibtn-solid:hover{ background:var(--lake-deep); }
.minibtn:disabled{ opacity:.45; cursor:default; transform:none; }

.save-hint{
  margin:0 0 1.1rem; font-size:.86rem; color:var(--ink-faint);
  padding-left:.9rem; border-left:3px solid var(--terra);
}
.save-hint strong{ color:var(--ink); }

/* selection mode */
.grid.is-selecting .tile{ cursor:pointer; }
.tile-check{
  position:absolute; top:.42rem; right:.42rem; z-index:3;
  width:26px; height:26px; border-radius:50%;
  border:2px solid rgba(255,255,255,.95); background:rgba(28,24,21,.42);
  display:none; align-items:center; justify-content:center;
  color:#fff; font-size:.8rem; font-weight:800;
  box-shadow:0 1px 6px rgba(0,0,0,.35);
}
.grid.is-selecting .tile-check{ display:flex; }
.tile.is-sel .tile-check{ background:var(--lake); border-color:#fff; }
.tile.is-sel{ outline:3px solid var(--lake); outline-offset:-3px; }

.selectbar{
  position:sticky; bottom:0; z-index:30;
  display:flex; align-items:center; gap:.9rem; flex-wrap:wrap;
  margin-top:1.1rem; padding:.75rem .95rem;
  background:rgba(247,242,231,.95);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border:2px solid var(--sky-deep); border-radius:var(--radius);
  box-shadow:var(--shadow-lg); font-size:.9rem; font-weight:800;
}
.selectbar[hidden]{ display:none; }
.selectbar-actions{ margin-left:auto; display:flex; gap:.5rem; flex-wrap:wrap; }

/* ---------- photo grid ---------- */
.grid{
  display:grid; gap:.8rem;
  grid-template-columns:repeat(2,1fr);
}
@media (min-width:620px){ .grid{ grid-template-columns:repeat(3,1fr); gap:1rem; } }
@media (min-width:1000px){ .grid{ grid-template-columns:repeat(4,1fr); } }

.tile{
  position:relative; padding:0; border:0; cursor:pointer; background:var(--sky);
  border-radius:14px; overflow:hidden; aspect-ratio:4/3;
  box-shadow:var(--shadow);
  transition:transform .22s cubic-bezier(.2,.8,.3,1), box-shadow .22s;
  animation:tileIn .5s cubic-bezier(.2,.8,.3,1) both;
  animation-delay:var(--d,0ms);
}
.tile.is-portrait{ aspect-ratio:3/4; }
@keyframes tileIn{ from{ opacity:0; transform:translateY(14px) scale(.985); } }
.tile img{ width:100%; height:100%; object-fit:cover; transition:transform .5s cubic-bezier(.2,.8,.3,1); }
.tile:hover{ transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.tile:hover img{ transform:scale(1.055); }
.tile::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg, rgba(0,0,0,0) 62%, rgba(0,0,0,.24));
  opacity:0; transition:opacity .22s;
}
.tile:hover::after{ opacity:1; }
.tile-idx{
  position:absolute; left:.5rem; bottom:.42rem; z-index:2;
  font-size:.68rem; font-weight:800; color:#fff; letter-spacing:.04em;
  opacity:0; transform:translateY(4px); transition:opacity .22s, transform .22s;
  text-shadow:0 1px 6px rgba(0,0,0,.5);
}
.tile:hover .tile-idx{ opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
  .tile,.push,.reveal{ animation:none !important; }
  .tile:hover{ transform:none; }
  .tile:hover img{ transform:none; }
}

/* ---------- notify ---------- */
.notify-wrap{
  display:grid; gap:2.2rem; grid-template-columns:1fr; align-items:start;
}
@media (min-width:860px){ .notify-wrap{ grid-template-columns:1.05fr .95fr; gap:3rem; } }

.notify-panel{
  background:var(--card); border:2px solid var(--sky-deep);
  border-radius:var(--radius); padding:clamp(1.2rem,3vw,1.9rem);
  box-shadow:var(--shadow);
}
.field{ margin-bottom:1.5rem; }
.field-label{
  display:block; font-size:.71rem; letter-spacing:.16em; text-transform:uppercase;
  font-weight:800; color:var(--ink-faint); margin-bottom:.6rem;
}
.seg{
  display:inline-flex; background:var(--sky); border:2px solid var(--sky-deep);
  border-radius:999px; padding:3px; gap:2px; flex-wrap:wrap;
}
.seg-btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:44px; border:0; background:transparent; cursor:pointer;
  font-family:var(--body); font-weight:800; font-size:.89rem; color:var(--ink-soft);
  padding:.5rem 1.15rem; border-radius:999px; transition:background .18s, color .18s;
}
.seg-btn.is-on{ background:var(--lake); color:#fff; }

.chips{ display:flex; flex-wrap:wrap; gap:.5rem; }
.chip{
  display:inline-flex; align-items:center; min-height:44px;
  cursor:pointer; font-family:var(--body); font-size:.89rem; font-weight:700;
  padding:.5rem 1.05rem; border-radius:999px;
  border:2px solid var(--sky-deep); background:var(--sky); color:var(--ink-soft);
  transition:background .18s, color .18s, border-color .18s;
}
.chip.is-on{ background:rgba(31,111,139,.12); border-color:var(--lake); color:var(--lake-deep); }

.switchrow{ display:flex; align-items:center; gap:.7rem; cursor:pointer; }
.switchrow input{ position:absolute; opacity:0; width:0; height:0; }
.switch{
  flex:0 0 auto; width:46px; height:27px; border-radius:999px;
  background:var(--sky-deep); border:2px solid var(--sky-deep); position:relative;
  transition:background .2s, border-color .2s;
}
.switch::after{
  content:""; position:absolute; top:2px; left:2px; width:19px; height:19px;
  border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25);
  transition:transform .2s cubic-bezier(.2,.8,.3,1);
}
.switchrow input:checked + .switch{ background:var(--lake); border-color:var(--lake); }
.switchrow input:checked + .switch::after{ transform:translateX(19px); }
.switchrow input:focus-visible + .switch{ outline:3px solid var(--terra); outline-offset:3px; }
.switchtext{ font-size:.93rem; color:#4f4842; }

.microcopy{
  font-size:.81rem; color:var(--ink-faint); margin:0; padding-top:1rem;
  border-top:1px solid var(--rule);
}
.fieldnote{
  font-size:.84rem; color:var(--ink-faint); margin:.6rem 0 0; line-height:1.55;
}
.fieldnote strong{ color:var(--ink); font-weight:800; }

.notify-preview{ text-align:center; }
.preview-cap{
  font-size:.71rem; letter-spacing:.16em; text-transform:uppercase;
  font-weight:800; color:var(--ink-faint); margin:0 0 1rem;
}
.phone-screen-msg{
  background:linear-gradient(180deg,#f2ede2,#e7e0d0);
  color:var(--ink); padding:2.9rem .7rem 1rem; display:flex;
  flex-direction:column; justify-content:flex-end; gap:.5rem;
}
.bubble{
  background:#fff; border-radius:17px 17px 17px 5px; padding:.62rem .78rem;
  font-size:.83rem; line-height:1.42; text-align:left;
  box-shadow:0 2px 8px rgba(46,42,39,.13);
  animation:bubbleIn .4s cubic-bezier(.2,.9,.25,1) both;
}
.bubble-from{
  font-size:.6rem; letter-spacing:.11em; text-transform:uppercase;
  font-weight:800; color:var(--ink-faint); margin-bottom:.2rem;
}
.bubble a{ color:var(--lake); font-weight:800; }
.bubble-mail{ border-radius:12px; background:#fff; }
.mail-head{
  border-bottom:1px solid var(--rule); padding-bottom:.4rem; margin-bottom:.45rem;
  font-size:.7rem; color:var(--ink-faint);
}
.mail-subj{ font-weight:800; font-size:.86rem; color:var(--ink); }
@keyframes bubbleIn{ from{ opacity:0; transform:translateY(9px) scale(.97); } }

/* ---------- uploader ---------- */
.uploader{
  background:var(--card); border:2px solid var(--sky-deep);
  border-radius:var(--radius); padding:clamp(1.1rem,3vw,2rem); box-shadow:var(--shadow);
}
.up-head{ display:flex; flex-wrap:wrap; gap:1.2rem; margin-bottom:1.35rem; }
.up-head label{
  display:block; font-size:.71rem; letter-spacing:.16em; text-transform:uppercase;
  font-weight:800; color:var(--ink-faint); margin-bottom:.4rem;
}
.up-head input,.up-head select{
  font-family:var(--body); font-size:.97rem; font-weight:600; color:var(--ink);
  padding:.6rem .8rem; border-radius:12px;
  border:2px solid var(--sky-deep); background:var(--sky); min-height:44px;
}

.dropzone{
  border:2.5px dashed rgba(31,111,139,.45); border-radius:var(--radius);
  background:var(--sky); color:var(--lake-deep);
  padding:clamp(1.8rem,5vw,3rem) 1.2rem; text-align:center; cursor:pointer;
  transition:background .2s, border-color .2s, transform .2s;
}
.dropzone:hover{ background:#ece3cf; border-color:var(--lake); }
.dropzone.is-over{
  background:#f3e4d2; border-color:var(--terra);
  color:var(--sun-text); transform:scale(1.008);
}
.dropzone svg{ margin:0 auto .6rem; display:block; }
.drop-main{ font-family:var(--display); font-size:1.28rem; font-weight:500; margin:0 0 .3rem; }
.drop-sub{ font-size:.87rem; color:var(--ink-faint); margin:0; }

.tray{ margin-top:1.3rem; }
.tray-head{
  display:flex; align-items:center; justify-content:space-between;
  font-size:.85rem; font-weight:700; color:var(--ink-faint); margin-bottom:.6rem;
}
.linkbtn{
  background:none; border:0; cursor:pointer; font-family:var(--body);
  font-size:.85rem; font-weight:800; color:var(--lake); text-decoration:underline;
  padding:.3rem; min-height:34px;
}
.tray-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(78px,1fr)); gap:.5rem; }
.tray-grid img{
  width:100%; aspect-ratio:1; object-fit:cover; border-radius:10px;
  box-shadow:var(--shadow); animation:tileIn .4s cubic-bezier(.2,.8,.3,1) both;
}

/* ---------- shabbat block (staff side) ---------- */
.shabbat-block{
  margin-top:1.5rem; padding:1.2rem;
  border:2px solid var(--sky-deep); border-radius:var(--radius);
  background:var(--sky);
}
.switchrow-lead .switchtext{ font-size:1.02rem; color:var(--ink); font-family:var(--display); font-weight:500; }

.shabtimeline{
  list-style:none; margin:1.1rem 0 0; padding:0;
  border-left:3px solid rgba(31,111,139,.35); padding-left:1rem;
}
.shabtimeline li{
  position:relative; padding:0 0 .95rem 0;
  display:grid; gap:.12rem;
}
.shabtimeline li:last-child{ padding-bottom:0; }
.shabtimeline li::before{
  content:""; position:absolute; left:-1.44rem; top:.38rem;
  width:11px; height:11px; border-radius:50%;
  background:var(--grad); box-shadow:0 0 0 3px var(--sky);
}
.shabtimeline li:last-child::before{ background:var(--lake); }
.sh-time{
  font-size:.73rem; letter-spacing:.14em; text-transform:uppercase;
  font-weight:800; color:var(--lake-deep);
}
.sh-what{ font-size:.93rem; color:#4f4842; line-height:1.5; }
.sh-what strong{ color:var(--ink); font-weight:800; }

.shabbat-block.is-off{ opacity:.5; }
.shabbat-block.is-off .shabtimeline{ display:none; }

.publish-row{
  display:flex; align-items:center; gap:1rem; flex-wrap:wrap;
  margin-top:1.6rem; padding-top:1.3rem; border-top:1px solid var(--rule);
}
.publish-hint{ font-size:.89rem; font-weight:600; color:var(--ink-faint); }

.publish-log{
  margin-top:1.2rem; border-radius:14px; overflow:hidden;
  border:2px solid rgba(71,105,74,.4); background:rgba(71,105,74,.07);
}
.log-line{
  display:flex; align-items:center; gap:.6rem;
  padding:.6rem .9rem; font-size:.91rem; color:#39503c;
  border-bottom:1px solid rgba(71,105,74,.16);
  animation:logIn .35s ease both;
}
.log-line:last-child{ border-bottom:0; }
.log-line b{ font-weight:800; }
.log-tick{
  flex:0 0 auto; width:20px; height:20px; border-radius:50%;
  background:var(--moss); color:#fff; font-size:.7rem;
  display:inline-flex; align-items:center; justify-content:center;
}
@keyframes logIn{ from{ opacity:0; transform:translateX(-9px); } }

/* ---------- closer + footer ---------- */
.closer{
  position:relative; z-index:2;
  background:linear-gradient(160deg, #38302b 0%, #241f1c 70%);
  color:#fff;
  margin-top:clamp(2rem,6vw,4rem);
  overflow:hidden;
}
.closer::before{
  content:""; position:absolute; right:-120px; top:-120px;
  width:340px; height:340px; border-radius:50%;
  background:var(--grad); opacity:.22; filter:blur(10px);
}
.closer-inner{
  position:relative;
  max-width:var(--maxw); margin:0 auto;
  padding:clamp(3rem,7vw,4.8rem) clamp(1rem,4vw,2.6rem);
}
.closer h2{
  font-size:clamp(1.7rem,4.4vw,2.7rem); color:#fff; font-weight:600;
}
.closer p{ max-width:40em; color:rgba(255,255,255,.85); font-size:1rem; }
.closer-link{
  color:#fff; font-weight:800;
  text-decoration:underline; text-decoration-color:rgba(255,206,63,.8);
  text-decoration-thickness:2px; text-underline-offset:3px;
  transition:text-decoration-color .18s;
}
.closer-link:hover{ text-decoration-color:var(--sun-1); }
.closer-link:focus-visible{ outline:3px solid var(--sun-1); outline-offset:3px; }
.closer-sig{
  font-family:var(--display); font-weight:400; font-size:.98rem; letter-spacing:.04em;
  color:rgba(255,255,255,.75); margin-top:2rem;
}
.foot{
  position:relative; z-index:2;
  background:#1b1714; color:rgba(255,255,255,.7);
  padding:1.5rem clamp(1rem,4vw,2.6rem); font-size:.77rem; line-height:1.55;
}
.foot p{ max-width:var(--maxw); margin:0 auto; }

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:100;
  background:rgba(10,22,30,.96);
  display:flex; align-items:center; justify-content:center;
  animation:fadeIn .22s ease both;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.lightbox[hidden]{ display:none; }
@keyframes fadeIn{ from{ opacity:0; } }
.lb-stage{ position:relative; z-index:1; margin:0; max-width:94vw; max-height:88vh; text-align:center; }
.lb-stage img{
  max-width:94vw; max-height:70vh; width:auto; height:auto;
  border-radius:10px; box-shadow:0 30px 80px rgba(0,0,0,.6);
  animation:lbIn .3s cubic-bezier(.2,.8,.3,1) both;
  -webkit-touch-callout:default;
  -webkit-user-select:auto; user-select:auto;
}
@keyframes lbIn{ from{ opacity:0; transform:scale(.97); } }
.lb-stage figcaption{
  color:rgba(255,255,255,.85); font-size:.88rem; margin-top:.85rem;
  display:flex; gap:.7rem; justify-content:center; align-items:baseline; flex-wrap:wrap;
}
.lb-pos{ color:rgba(255,255,255,.62); font-size:.8rem; }
.lb-close,.lb-nav{
  position:absolute; z-index:3;
  background:rgba(16,40,54,.6); color:#fff;
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.28); cursor:pointer;
  border-radius:50%; display:flex; align-items:center; justify-content:center;
  transition:background .18s, transform .18s;
  -webkit-tap-highlight-color:transparent;
}
.lb-close:hover,.lb-nav:hover{ background:rgba(31,111,139,.85); }
.lb-close{ top:1rem; right:1rem; width:46px; height:46px; font-size:1.7rem; line-height:1; }
.lb-nav{ top:50%; transform:translateY(-50%); width:50px; height:50px; font-size:2rem; line-height:1; }
.lb-nav:hover{ transform:translateY(-50%) scale(1.07); }
.lb-prev{ left:.7rem; }
.lb-next{ right:.7rem; }
@media (max-width:600px){
  .lb-nav{ width:44px; height:44px; font-size:1.7rem; }
  .lb-prev{ left:.35rem; } .lb-next{ right:.35rem; }
}

.lb-actions{
  margin-top:.9rem; display:flex; align-items:center; justify-content:center;
  gap:.85rem; flex-wrap:wrap;
}
.lb-save{
  display:inline-flex; align-items:center; gap:.5rem; min-height:46px;
  font-family:var(--display); font-size:1.1rem; font-weight:600; cursor:pointer;
  padding:.6rem 1.5rem; border-radius:999px;
  background:var(--grad-deep); color:#fff; border:0;
  box-shadow:0 6px 22px rgba(0,0,0,.35);
  text-shadow:0 1px 2px rgba(120,45,0,.25);
  transition:transform .18s, filter .18s;
  -webkit-tap-highlight-color:transparent;
}
.lb-save:hover{ transform:translateY(-2px); filter:saturate(1.08); }
.lb-save:disabled{ opacity:.65; cursor:default; transform:none; }
.lb-save.is-done{ background:var(--moss); }
.lb-tip{ color:rgba(255,255,255,.7); font-size:.8rem; }
@media (max-width:600px){ .lb-tip{ display:none; } }

/* ---------- reveal ---------- */
.reveal{ animation:revealIn .72s cubic-bezier(.2,.8,.3,1) both; animation-delay:var(--d,0ms); }
@keyframes revealIn{ from{ opacity:0; transform:translateY(17px); } }
