/* The Learn Center dashboard, built for one older user on a phone.
   Big targets, high contrast, no clever gestures. */

:root{
  --yellow:#F5B921;
  --yellow-dark:#d89f12;
  --ink:#111;
  --bg:#F3F1EE;
  --card:#fff;
  --line:#E2DED8;
  --muted:#6C6862;
  --ok:#1c7a3e;
  --no:#b3261e;
}

*{box-sizing:border-box}
/* must beat .sheet{display:flex} and .signin{display:flex} */
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font:17px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-text-size-adjust:100%;
  padding-bottom:env(safe-area-inset-bottom);
}
button,input,textarea,a{font:inherit}
button{cursor:pointer}

.signin{
  min-height:100dvh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding:24px 22px;text-align:center;
}
.signin-logo{width:280px;max-width:78vw;height:auto;display:block}
.signin-help{margin:18px 0 14px;color:var(--muted)}
#signin-form{width:100%;max-width:420px}
#email{
  width:100%;padding:16px;border:1px solid var(--line);border-radius:12px;
  background:#fff;margin-bottom:12px;
}
#open-btn{
  width:100%;padding:17px;border:0;border-radius:12px;
  background:var(--yellow);color:#111;font-weight:700;
}
#open-btn:disabled{opacity:.6}
.signin-error{color:#b3261e;margin-top:14px;font-weight:600}

.hdr{
  background:#111;color:#fff;text-align:center;
  padding:calc(14px + env(safe-area-inset-top)) 16px 12px;
}
.hdr-logo{
  display:block;margin:0 auto;
  height:56px;width:auto;
  max-width:min(70vw,320px);
  object-fit:contain;
}
.hdr-sub{margin-top:6px;color:#bdb9b3;font-size:15px}

.tabs{display:flex;background:#fff;border-bottom:1px solid var(--line)}
.tab{
  flex:1;background:none;border:0;padding:14px 6px 12px;
  border-bottom:4px solid transparent;color:var(--muted);
  position:relative;
}
.tab-n{display:block;font-size:30px;font-weight:800;line-height:1.1;color:var(--ink)}
.tab-l{display:block;font-size:15px;font-weight:600}
.tab.has-owed::after{
  content:"";position:absolute;top:12px;right:12px;
  width:10px;height:10px;border-radius:50%;background:var(--no);
}
.tab.is-active{border-bottom-color:var(--yellow)}
.tab.is-active .tab-n{color:var(--yellow-dark)}
.tab.is-active .tab-l{color:var(--ink)}

.hint{margin:16px 18px 8px;color:var(--muted);font-size:16px}

.list{padding:8px 14px 28px;display:flex;flex-direction:column;gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}
.card-top{display:flex;gap:14px;align-items:flex-start}

.check{
  flex:0 0 auto;width:42px;height:42px;border-radius:50%;
  border:2px solid #C9C4BC;background:#fff;margin-top:2px;
}
.check[aria-pressed="true"]{background:var(--ok);border-color:var(--ok);color:#fff;font-size:22px;line-height:1}

.who-name{font-size:21px;font-weight:800;margin:0}
.who-phone{
  display:inline-block;margin-top:2px;font-size:20px;font-weight:700;
  color:var(--ink);text-decoration:none;border-bottom:3px solid var(--yellow);
}
.who-meta{margin:8px 0 0;color:var(--muted);font-size:15px}

.tagline{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:6px}
.tagpill{background:#F6EFDC;border:1px solid #E8DBB4;color:#6a5410;
  border-radius:999px;padding:3px 10px;font-size:13px;font-weight:600}
.notepeek{margin:8px 0 0;color:var(--muted);font-size:15px;white-space:pre-wrap}

.row{display:flex;gap:10px;margin-top:14px}
.btn{
  flex:1;text-align:center;padding:14px 8px;border-radius:12px;
  border:2px solid var(--ink);text-decoration:none;color:var(--ink);
  font-weight:700;background:#fff;
}
.btn-call{background:var(--yellow);border-color:var(--yellow)}
.btn-note{flex:0 0 62px}
.btn-save{background:var(--ink);color:#fff;border-color:var(--ink)}

.empty{text-align:center;color:var(--muted);padding:48px 20px}

.foot{display:flex;align-items:center;justify-content:space-between;
  padding:4px 18px 30px;color:var(--muted);font-size:14px}
.refresh{background:none;border:0;color:var(--muted);text-decoration:underline;padding:8px 0}

/* ---- Tours: which day, and did they turn up ---- */

/* Group headings inside the tours list. */
.listhead{
  margin:14px 2px -4px;font-size:15px;font-weight:800;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
}
.listhead:first-child{margin-top:2px}

/* The date banner. One per day, above everyone booked for that day. */
.daybar{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  background:var(--ink);color:#fff;border-radius:12px;
  padding:12px 16px;margin:10px 0 0;
}
.daybar:first-child{margin-top:2px}
.daybar-d{font-size:18px;font-weight:800;line-height:1.25}
.daybar-n{flex:0 0 auto;font-size:14px;font-weight:700;color:var(--yellow)}

/* The round result marker on a tour card, same size as the lead circle
   so the two lists feel like the same app. */
.tmark{
  flex:0 0 auto;width:42px;height:42px;border-radius:50%;margin-top:2px;
  border:2px dashed #C9C4BC;background:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:23px;line-height:1;color:transparent;
}
.tmark.is-yes{border:2px solid var(--ok);background:var(--ok);color:#fff}
.tmark.is-no{border:2px solid var(--no);background:var(--no);color:#fff}

/* Attended / no-show buttons, on the card and in the sheet. */
.att{
  flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 8px;border-radius:12px;border:2px solid var(--line);
  background:#fff;color:var(--muted);font-weight:700;
}
.att .att-mark{
  width:24px;height:24px;border-radius:50%;flex:0 0 auto;
  border:2px solid #C9C4BC;display:inline-flex;align-items:center;
  justify-content:center;font-size:15px;line-height:1;color:transparent;
}
.att-yes[aria-pressed="true"]{border-color:var(--ok);background:#EAF5EE;color:var(--ok)}
.att-yes[aria-pressed="true"] .att-mark{background:var(--ok);border-color:var(--ok);color:#fff}
.att-no[aria-pressed="true"]{border-color:var(--no);background:#FBECEB;color:var(--no)}
.att-no[aria-pressed="true"] .att-mark{background:var(--no);border-color:var(--no);color:#fff}

.attend-row{display:flex;gap:10px;margin-bottom:6px}

.resultline{margin:8px 0 0;font-size:15px;font-weight:700}
.resultline.is-yes{color:var(--ok)}
.resultline.is-no{color:var(--no)}

/* Move somebody to a different Saturday. */
.movebtn{
  width:100%;margin-top:4px;padding:14px 10px;border-radius:12px;
  border:2px dashed #C9C4BC;background:#fff;color:var(--ink);font-weight:700;
}

/* The month grid he moves somebody with. */
.cal{border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px}
.cal.is-busy{opacity:.5;pointer-events:none}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.cal-title{font-size:18px;font-weight:800}
.cal-nav{
  width:44px;height:44px;flex:0 0 auto;border-radius:12px;
  border:2px solid var(--line);background:#fff;font-size:22px;line-height:1;font-weight:800;
}
.cal-nav:disabled{opacity:.35}
.cal-dow{
  display:grid;grid-template-columns:repeat(7,1fr);gap:4px;
  font-size:12px;font-weight:700;color:var(--muted);text-align:center;margin-bottom:4px;
}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-d{
  aspect-ratio:1/1;border-radius:10px;border:2px solid transparent;
  background:#F7F5F2;color:var(--ink);font-size:16px;font-weight:700;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  padding:0;
}
.cal-d.is-blank{background:none;pointer-events:none}
.cal-d:disabled{color:#BBB6AE;background:#FAF9F7}
.cal-d .cal-n{font-size:10px;font-weight:800;line-height:1}
.cal-d.is-open{border-color:var(--yellow);background:#FFF8E6}
.cal-d.is-booked{background:var(--ink);color:#fff;border-color:var(--ink)}
.cal-d.is-booked .cal-n{color:var(--yellow)}
.cal-d.is-now{background:var(--yellow);border-color:var(--yellow);color:#111}
.cal-d.is-now .cal-n{color:#6a5410}
.cal-d.is-picked{outline:3px solid var(--ink);outline-offset:2px}
.cal-d.is-booked.is-picked{outline-color:var(--yellow)}

/* Nothing moves until he reads this and taps Save. */
.pick-confirm{border-top:1px solid var(--line);background:#FFF8E6}
.pick-confirm .sheet-actions{border-top:0;padding-top:0}
.pick-confirm-text{margin:0;padding:14px 18px 10px;font-size:16px;font-weight:700;line-height:1.35}
.pick-confirm-text small{display:block;margin-top:4px;font-size:14px;font-weight:600;color:var(--muted)}

.cal-key{
  display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;
  margin:10px 2px 0;font-size:13px;font-weight:600;color:var(--muted);
}
.cal-key .key{width:14px;height:14px;border-radius:4px;border:2px solid var(--line);display:inline-block}
.cal-key .k-open{border-color:var(--yellow);background:#FFF8E6}
.cal-key .k-booked{background:var(--ink);border-color:var(--ink)}
.cal-key .k-now{background:var(--yellow);border-color:var(--yellow)}

.sheet{position:fixed;inset:0;background:rgba(0,0,0,.45);
  display:flex;align-items:flex-end;justify-content:center;z-index:20}
#pick{z-index:30}
.sheet-card{
  background:#fff;width:100%;max-width:560px;border-radius:20px 20px 0 0;
  max-height:92dvh;display:flex;flex-direction:column;
}
.sheet-top{display:flex;justify-content:space-between;align-items:flex-start;
  padding:18px 18px 8px;border-bottom:1px solid var(--line)}
.sheet-name{font-size:21px;font-weight:800}
.sheet-phone{font-size:18px;font-weight:700;color:var(--ink);
  border-bottom:3px solid var(--yellow);text-decoration:none}
.sheet-when{margin-top:6px;color:var(--muted);font-size:15px}
.sheet-close{background:none;border:0;font-size:34px;line-height:1;color:var(--muted);padding:0 6px}
.sheet-body{padding:16px 18px 4px;overflow:auto}
.sheet-label{margin:6px 0 10px;font-weight:700;font-size:15px;color:var(--muted)}

.chips{display:flex;flex-direction:column;gap:10px}
.chip{
  text-align:left;padding:15px 16px;border-radius:14px;
  border:2px solid var(--line);background:#fff;font-weight:600;
  display:flex;align-items:center;gap:12px;
}
.chip .box{
  flex:0 0 auto;width:26px;height:26px;border-radius:7px;
  border:2px solid #C9C4BC;display:inline-flex;align-items:center;
  justify-content:center;font-size:17px;line-height:1;color:transparent;
}
.chip[aria-pressed="true"]{border-color:var(--yellow);background:#FFF8E6}
.chip[aria-pressed="true"] .box{background:var(--yellow);border-color:var(--yellow);color:#111}

.custom{width:100%;padding:14px;border:2px solid var(--line);
  border-radius:14px;resize:vertical;background:#fff}
.sheet-meta{color:var(--muted);font-size:14px;margin:12px 0 4px;min-height:20px}
.sheet-actions{display:flex;gap:10px;padding:12px 18px calc(18px + env(safe-area-inset-bottom));
  border-top:1px solid var(--line)}

.saving{opacity:.6;pointer-events:none}

@media (min-width:640px){
  .list{max-width:620px;margin:0 auto}
  .hint{max-width:620px;margin-left:auto;margin-right:auto}
  .sheet{align-items:center}
  .sheet-card{border-radius:20px}
}

/* Save and Cancel sit there from the start, so the sheet never jumps when a
   day is tapped. They only wake up once a day is picked. */
.pick-confirm .btn:disabled{opacity:.35;cursor:default}
.pick-confirm-text{min-height:62px}

/* The Tour Information Form, as a PDF. One big tap, opens in Safari. */
.formlink{
  display:flex;align-items:center;gap:10px;margin:10px 0 0;padding:12px 14px;
  border-radius:12px;border:2px solid var(--ink);background:#fff;
  color:var(--ink);font-weight:700;text-decoration:none;
}
.formlink .formlink-ic{font-size:18px;line-height:1}
.formlink small{margin-left:auto;font-size:13px;font-weight:600;color:var(--muted)}
.formlink-sheet{margin:0 0 14px}
