:root{
  --cream:#f7f1e6;
  --paper:#fffcf7;
  --green:#2f3d2a;
  --green2:#4a5c44;
  --gold:#c4a35a;
  --gold-soft:#f3e6c4;
  --ink:#2c322a;
  --muted:#6a7264;
  --line:#e2d8c8;
  --line-soft:rgba(53,68,47,.10);
  --ok:#e8f0e3;
  --danger:#a04d43;
  --shadow:0 8px 28px rgba(47,61,42,.08);
  --radius-sm:12px;
  --radius-md:16px;
  --radius-lg:22px;
  --radius-pill:999px;
  --tap:44px;
  --font:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --display:Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--font);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font:inherit}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}

.eyebrow{
  font-size:11px;
  letter-spacing:.14em;
  font-weight:800;
  color:var(--gold);
  text-transform:uppercase;
}

h1,h2,h3,.display{
  font-family:var(--display);
  color:var(--green);
  font-weight:700;
  line-height:1.15;
}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:var(--tap);
  padding:12px 20px;
  border-radius:var(--radius-pill);
  border:1px solid var(--green);
  background:var(--green);
  color:#fff;
  font-weight:700;
  font-size:15px;
  cursor:pointer;
  transition:filter .15s ease, transform .15s ease;
}
.btn:hover{filter:brightness(1.05)}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.secondary{
  background:transparent;
  color:var(--green);
}
.btn.small{
  min-height:36px;
  padding:8px 14px;
  font-size:13px;
}

.chip,.child-pill-btn,.paint-pills button,.paint-toggle button{
  min-height:var(--tap);
  padding:10px 16px;
  border-radius:var(--radius-pill);
  border:1px solid var(--line);
  background:var(--paper);
  color:var(--green);
  font-weight:700;
  font-size:14px;
  cursor:pointer;
}
.chip.active,.child-pill-btn.active,.paint-pills button.active,.paint-toggle button.active{
  background:var(--green);
  border-color:var(--green);
  color:#fff;
}

.card,.modalCard,#gateCard,.schedule-card{
  background:var(--paper);
  border:1px solid var(--line-soft);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
}
/* Hero sits in a soft panel with real inset — never flush to the card edge */
.hero.container,
section.hero{
  background:var(--paper);
  border:1px solid var(--line-soft);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
  padding:56px 48px 60px;
  margin-top:12px;
  margin-bottom:8px;
  box-sizing:border-box;
  overflow:hidden;
}
@media(max-width:900px){
  .hero.container,
  section.hero{
    padding:32px 22px 40px;
    border-radius:18px;
  }
}
@media(max-width:620px){
  .hero.container,
  section.hero{
    padding:28px 18px 36px;
  }
}


input,select,textarea{
  width:100%;
  min-height:var(--tap);
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  background:#fff;
  color:var(--ink);
}
textarea{min-height:96px;resize:vertical}
input:focus,select:focus,textarea:focus{
  outline:2px solid rgba(47,61,42,.18);
  border-color:var(--green);
}

.badge,.status-pill{
  display:inline-flex;
  align-items:center;
  padding:6px 10px;
  border-radius:var(--radius-pill);
  background:var(--ok);
  color:var(--green);
  font-size:11px;
  font-weight:800;
}

.muted{color:var(--muted);line-height:1.55}
.empty{
  padding:18px;
  border:1px dashed var(--line);
  border-radius:var(--radius-md);
  color:var(--muted);
  text-align:center;
  background:rgba(255,255,255,.4);
}

/* Day tiles — shared family */
.day-tile, .parent-day-strip .day-tile, .day-strip-stack .day-tile{
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  background:#fff;
  min-height:72px;
  padding:12px 10px;
  text-align:left;
}
.day-tile.is-full, .day.is-full{border-color:var(--gold)!important;background:#fff6e0!important}
.day-tile.is-half, .day.is-half{border-color:var(--green2)!important;background:var(--ok)!important}

@media(max-width:900px){
  .btn{min-height:48px;font-size:16px}
  .chip,.child-pill-btn,.paint-pills button,.paint-toggle button{min-height:48px;padding:12px 16px;font-size:15px}
}


/* mobile.md v11.69 — safe areas + dock floor */
:root {
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-top: env(safe-area-inset-top, 0px);
}
.app-dock,
.mobile,
nav.app-dock {
  padding-bottom: calc(6px + var(--safe-bottom)) !important;
}
body {
  padding-top: var(--safe-top);
}
.main, .shell .main, #app .main {
  padding-bottom: calc(84px + var(--safe-bottom));
}
.mobile button,
.mobile-link,
.app-dock a {
  min-height: 48px;
  min-width: 44px;
}
.install-tip {
  margin: 12px 0 0;
  padding: 12px 14px;
  border-radius: 14px;
  background: var(--cream, #f4f0e6);
  border: 1px solid var(--line, #e4ddd0);
  color: var(--muted, #5c6b58);
  font-size: 13px;
  line-height: 1.45;
}
.install-tip strong { color: var(--ink, #1c221b); }

/* v11.70 dispatch board */
.dispatch-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
@media(max-width:900px){.dispatch-week{grid-template-columns:1fr;}}
.dispatch-week .day-tile, .day-strip .day-tile{min-height:88px;border-radius:14px;border:1px solid rgba(53,68,47,.12);background:var(--paper,#fff);padding:10px;text-align:left;cursor:pointer}
.dispatch-panel{background:var(--cream,#f4f0e6);border-radius:16px;padding:14px}

/* v11.71 parent month + dispatch rows */
.parent-month-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.parent-month-cal .dow{text-align:center;font-size:11px;color:var(--muted,#5c6b58);font-weight:700;padding:4px 0}
.parent-month-cal .day,.parent-month-cal button.day,.parent-month-cal button.open,.parent-month-cal button.closed{
  min-height:52px;border-radius:12px;border:1px solid rgba(53,68,47,.14);background:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  font-size:14px;font-weight:600;color:var(--ink,#1c221b);cursor:pointer;padding:6px 2px;width:100%
}
.parent-month-cal button.closed{opacity:.4;cursor:default}
.parent-month-cal button.open:hover{border-color:#35442f}
.parent-month-cal button.is-full{background:#35442f;color:#fff;border-color:#35442f}
.parent-month-cal button.is-half{background:#5a7a52;color:#fff;border-color:#5a7a52}
.parent-month-cal button small{font-size:9px;font-weight:600;opacity:.9;line-height:1.1;text-align:center}
.dispatch-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(53,68,47,.08)}
.dispatch-row-acts{display:flex;gap:6px;flex-wrap:wrap}
.dispatch-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.day-pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;background:rgba(53,68,47,.08)}
.day-pill.open{background:rgba(53,68,47,.15);color:#35442f}
.day-pill.closed{background:rgba(0,0,0,.06);color:#666}
.dispatch-week-inner{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
@media(max-width:900px){.dispatch-week-inner{grid-template-columns:1fr}}

/* v11.73 dense dispatch tiles */
.day-tile{min-height:110px;display:flex;flex-direction:column;gap:6px;text-align:left}
.day-tile-top{display:flex;justify-content:space-between;align-items:center;gap:6px}
.day-tile .day-date{font-weight:800;font-size:13px;color:var(--green,#35442f)}
.day-tile .day-names{font-size:12px;line-height:1.35;color:var(--ink,#1c221b);flex:1;min-height:2.4em}
.day-tile .capacity-meta{font-size:11px;color:var(--muted,#5c6b58);font-weight:600}
.day-tile .capacity-track{height:4px;background:rgba(53,68,47,.1);border-radius:99px;overflow:hidden}
.day-tile .capacity-fill{height:100%;background:#35442f;border-radius:99px}
.day-tile.has-pending{border-color:#c9a227;box-shadow:inset 0 0 0 1px rgba(201,162,39,.35)}
.day-tile.is-at-cap{opacity:.92}
.day-tile.is-today{outline:2px solid rgba(53,68,47,.25)}
.day-tile.selected-day{outline:2px solid #35442f}
.tile-badge{font-size:10px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:#8a6d2f;background:#f5e6b8;padding:2px 7px;border-radius:999px}
.day-tile.closed .day-names,.day-tile.closed .capacity-meta{opacity:.7}

/* v11.73 dense dispatch tiles */
.day-tile{min-height:110px;display:flex;flex-direction:column;gap:6px;text-align:left}
.day-tile-top{display:flex;justify-content:space-between;align-items:center;gap:6px}
.day-tile .day-date{font-weight:800;font-size:13px;color:var(--green,#35442f)}
.day-tile .day-names{font-size:12px;line-height:1.35;color:var(--ink,#1c221b);flex:1;min-height:2.4em}
.day-tile .capacity-meta{font-size:11px;color:var(--muted,#5c6b58);font-weight:600}
.day-tile .capacity-track{height:4px;background:rgba(53,68,47,.1);border-radius:99px;overflow:hidden}
.day-tile .capacity-fill{height:100%;background:#35442f;border-radius:99px}
.day-tile.has-pending{border-color:#c9a227;box-shadow:inset 0 0 0 1px rgba(201,162,39,.35)}
.day-tile.is-today{outline:2px solid rgba(53,68,47,.25)}
.day-tile.selected-day{outline:2px solid #35442f}
.tile-badge{font-size:10px;font-weight:800;text-transform:uppercase;color:#8a6d2f;background:#f5e6b8;padding:2px 7px;border-radius:999px}

/* v11.74 dispatch board must paint */
#dayStrip{min-height:120px;margin-top:14px}
.dispatch-week-inner{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;width:100%}
@media(max-width:900px){.dispatch-week-inner{grid-template-columns:1fr}}
.day-tile{background:#fff;border:1px solid rgba(53,68,47,.12);border-radius:14px;padding:10px;cursor:pointer;width:100%;box-sizing:border-box}
#weekHome{overflow:visible}

/* v11.78 Manage week board — readable tiles */
#weekHome{overflow:visible}
#dayStrip{margin-top:16px;min-height:140px;width:100%}
.dispatch-week-inner{
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:10px;
  width:100%;
  box-sizing:border-box;
}
.day-tile{
  display:flex;
  flex-direction:column;
  gap:8px;
  min-height:128px;
  min-width:0;
  width:100%;
  box-sizing:border-box;
  margin:0;
  padding:12px 10px;
  text-align:left;
  border-radius:14px;
  border:1px solid rgba(53,68,47,.14);
  background:#fff;
  color:var(--ink,#1c221b);
  cursor:pointer;
  font:inherit;
  box-shadow:0 1px 2px rgba(28,34,27,.04);
}
.day-tile:hover{border-color:rgba(53,68,47,.35)}
.day-tile-top{
  display:flex;
  align-items:baseline;
  gap:6px;
  flex-wrap:wrap;
}
.day-dow{font-size:12px;font-weight:700;color:var(--muted,#5c6b58);text-transform:uppercase;letter-spacing:.04em}
.day-num{font-size:20px;font-weight:800;color:var(--green,#35442f);line-height:1}
.day-names{
  font-size:12px;
  line-height:1.35;
  min-height:2.5em;
  color:var(--ink,#1c221b);
  overflow:hidden;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.day-tile .capacity-track{
  height:4px;
  background:rgba(53,68,47,.1);
  border-radius:99px;
  overflow:hidden;
  flex-shrink:0;
}
.day-tile .capacity-fill{height:100%;background:#35442f;border-radius:99px}
.day-tile .capacity-meta{
  font-size:11px;
  font-weight:650;
  color:var(--muted,#5c6b58);
  white-space:normal;
  line-height:1.3;
}
.day-tile.is-closed{
  background:#f3f1ea;
  opacity:1;
}
.day-tile.is-closed .day-num{color:#6b7268}
.day-tile.is-open{background:#fff}
.day-tile.has-pending{border-color:#c9a227;box-shadow:inset 0 0 0 1px rgba(201,162,39,.4)}
.day-tile.is-today{outline:2px solid rgba(53,68,47,.35);outline-offset:1px}
.day-tile.selected-day{outline:2px solid #35442f;outline-offset:1px}
.tile-badge{
  margin-left:auto;
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.03em;
  color:#8a6d2f;
  background:#f5e6b8;
  padding:2px 7px;
  border-radius:999px;
}
.tile-badge.today-badge{color:#35442f;background:rgba(53,68,47,.12)}
.day-tile.is-full{background:#fff8e8;border-color:#c4a35a}
.day-tile.is-half{background:#eef5ea;border-color:#5a7753}
@media(max-width:1100px){
  .dispatch-week-inner{grid-template-columns:repeat(2, minmax(0, 1fr))}
}
@media(max-width:560px){
  .dispatch-week-inner{grid-template-columns:1fr}
  .day-tile{min-height:100px}
}

/* v11.79 force readable board — override legacy strip CSS */
#dayStrip .dispatch-week-inner{
  display:grid !important;
  grid-template-columns:repeat(7, minmax(0, 1fr)) !important;
  gap:10px !important;
  width:100% !important;
}
#dayStrip .day-tile{
  display:flex !important;
  flex-direction:column !important;
  min-width:0 !important;
  width:100% !important;
  min-height:120px !important;
  padding:12px 10px !important;
  overflow:hidden !important;
}
#dayStrip .day-dow{display:inline !important;font-size:12px !important}
#dayStrip .day-num{display:inline !important;font-size:20px !important;font-weight:800 !important}
#dayStrip .day-date{display:none !important} /* legacy */
#dayStrip .day-names{font-size:12px !important;line-height:1.3 !important}
#dayStrip .capacity-meta{font-size:11px !important;white-space:normal !important}
@media(max-width:1100px){
  #dayStrip .dispatch-week-inner{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}
@media(max-width:560px){
  #dayStrip .dispatch-week-inner{grid-template-columns:1fr !important}
}
