
:root{
  --ink:#18352f;
  --muted:#6f817c;
  --cream:#fffaf0;
  --card:#ffffff;
  --green:#2f6b5f;
  --sage:#a8bfa3;
  --gold:#c9a84c;
  --peach:#f2b8a2;
  --line:#e9eee9;
  --shadow:0 18px 45px rgba(36,74,65,.10);
}
*{box-sizing:border-box}
body{
  margin:0;
  color:var(--ink);
  background:
    radial-gradient(circle at top left,#f1f8f1 0,transparent 35%),
    radial-gradient(circle at top right,#fff0df 0,transparent 30%),
    var(--cream);
  font-family:Inter,system-ui,sans-serif;
}
button,select{font:inherit}
button{cursor:pointer}
.app-shell{max-width:1180px;margin:auto;padding:28px 22px 70px}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{font-family:Fredoka,Inter,sans-serif}
h1{font-size:clamp(2rem,5vw,3.6rem);line-height:.95;margin-bottom:8px}
.subtitle,.muted{color:var(--muted)}
.eyebrow{font-size:.72rem;letter-spacing:.16em;font-weight:800;color:var(--green);margin-bottom:8px}
.icon-btn{border:0;background:white;width:44px;height:44px;border-radius:50%;box-shadow:var(--shadow);font-size:1.2rem;color:var(--green)}
.hero-card{
  min-height:220px;padding:32px;border-radius:32px;background:linear-gradient(135deg,#234f46,#36796a);
  color:white;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow);overflow:hidden
}
.hero-card h2{max-width:720px;font-size:clamp(1.8rem,4vw,3rem);margin:12px 0}
.hero-card p{color:#dbeae6}
.pill{display:inline-block;background:rgba(255,255,255,.14);padding:8px 12px;border-radius:999px;font-size:.78rem;font-weight:700}
.hero-emoji{font-size:clamp(5rem,12vw,8rem);transform:rotate(5deg)}
.kids-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:20px 0}
.kid-card{background:var(--card);border-radius:24px;padding:22px;box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.8)}
.kid-head{display:flex;align-items:center;gap:14px}
.kid-head strong{margin-left:auto;font-family:Fredoka;font-size:2.4rem}
.avatar{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;font-family:Fredoka;font-size:1.6rem;font-weight:700}
.evans .avatar{background:#e5efe4;color:#2f6b5f}.cyrus .avatar{background:#fff0e7;color:#a34f2a}
.kid-head h3{margin-bottom:2px}.kid-head p{margin:0;color:var(--muted);font-size:.86rem}
.progress{height:9px;background:#edf1ee;border-radius:999px;overflow:hidden;margin:18px 0 8px}
.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--gold),#e1ca76);width:0;transition:.25s}
.goal{font-size:.82rem;color:var(--muted);margin:0}
.tabs{display:flex;gap:8px;margin:26px 0 18px;overflow:auto;padding-bottom:3px}
.tab{border:0;background:#ecefe9;padding:11px 16px;border-radius:999px;color:var(--muted);white-space:nowrap;font-weight:700}
.tab.active{background:var(--ink);color:white}
.tab-panel{display:none}.tab-panel.active{display:block}
.section-title{display:flex;justify-content:space-between;align-items:end;margin:18px 0}
.section-title h2{font-size:2rem;margin-bottom:0}
.task-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.name-label{margin-bottom:10px}
.task-list{display:grid;gap:10px}
.task{
  display:flex;align-items:center;gap:12px;background:white;padding:15px;border:1px solid var(--line);border-radius:17px;
  transition:.2s
}
.task.done{opacity:.55;background:#f3f5f2}
.task input{width:20px;height:20px;accent-color:var(--green)}
.task span:nth-child(2){flex:1;font-weight:650}
.points-badge{font-weight:800;color:var(--green);background:#edf5ef;padding:5px 9px;border-radius:999px}
.secondary-btn,.primary-btn{
  border:0;border-radius:14px;padding:11px 15px;font-weight:800
}
.secondary-btn{background:#edf1ed;color:var(--green)}
.primary-btn{background:var(--green);color:white}
.full{width:100%;padding:15px;margin-top:14px}
.select{border:1px solid var(--line);background:white;padding:11px 14px;border-radius:14px;color:var(--ink)}
.notice{background:#fff4d7;border:1px solid #f0dda2;padding:13px 15px;border-radius:15px;margin-bottom:16px;font-size:.9rem}
.menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.menu-card{background:white;border:1px solid var(--line);border-radius:20px;padding:17px;display:flex;flex-direction:column;gap:10px}
.menu-card h3{font-size:1.08rem;margin:0}
.menu-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:.83rem}
.tier{font-size:.72rem;text-transform:uppercase;font-weight:800;letter-spacing:.08em}
.tier.green{color:#2f7d4d}.tier.amber{color:#b7791f}.tier.red{color:#bd3c30}
.redeem-btn{border:0;background:var(--ink);color:white;border-radius:12px;padding:10px;font-weight:800}
.redeem-btn:disabled{background:#cbd3cf;cursor:not-allowed}
.vote-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.vote-card{background:white;border:2px solid transparent;border-radius:20px;padding:18px;text-align:center;box-shadow:0 8px 22px rgba(50,70,60,.06)}
.vote-card.selected{border-color:var(--gold);background:#fff9e9}
.vote-card .emoji{font-size:2.4rem}
.vote-card button{border:0;background:#edf1ed;border-radius:10px;padding:8px 10px;font-weight:700}
.vote-count{font-family:Fredoka;font-size:1.7rem;margin:8px 0}
.winner-box{margin-top:15px;padding:20px;border-radius:20px;background:linear-gradient(135deg,#f6e8a6,#f4c9a9);text-align:center}
.hidden{display:none}
.history-list{display:grid;gap:10px}
.history-item{background:white;border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;justify-content:space-between;gap:12px}
.history-item small{color:var(--muted)}
.empty{color:var(--muted);background:white;border:1px dashed #cfd8d2;padding:22px;border-radius:18px;text-align:center}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);background:var(--ink);color:white;padding:12px 18px;border-radius:999px;opacity:0;pointer-events:none;transition:.25s;z-index:10}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:800px){
  .hero-emoji{display:none}
  .kids-grid,.task-columns{grid-template-columns:1fr}
  .menu-grid{grid-template-columns:1fr 1fr}
  .vote-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){
  .app-shell{padding:18px 14px 50px}
  .hero-card{padding:24px;border-radius:24px}
  .menu-grid{grid-template-columns:1fr}
  .section-title{align-items:center}
}

.set-card{gap:14px}
.set-parts{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.set-parts div{background:#f7f8f5;border-radius:13px;padding:10px 7px;text-align:center;display:flex;flex-direction:column;gap:3px}
.set-parts span{font-size:1.4rem}
.set-parts small{font-size:.7rem;color:var(--muted);min-height:30px}
.set-parts strong{font-size:.72rem}
.drink-label{font-size:.78rem;font-weight:800;display:grid;gap:6px}
.drink-select{width:100%;border:1px solid var(--line);background:white;border-radius:11px;padding:9px;color:var(--ink);font-size:.78rem}
.set-total{display:flex;justify-content:space-between;align-items:center;padding-top:8px;border-top:1px solid var(--line);font-size:.85rem}
.set-total strong{font-family:Fredoka;font-size:1.05rem}
.points-total strong{color:var(--green)}
@media(max-width:520px){.set-parts{grid-template-columns:1fr 1fr 1fr}}

body.logged-out .app-shell{filter:blur(8px);pointer-events:none;user-select:none}
.login-screen{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,rgba(241,248,241,.96),rgba(255,240,223,.96));z-index:100}
.login-screen.hidden{display:none}
.login-card{width:min(460px,100%);background:white;border-radius:30px;padding:30px;box-shadow:var(--shadow);text-align:center}
.login-card h1{font-size:2.7rem}
.login-intro{color:var(--muted);margin-bottom:22px}
.profile-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
.profile-choice{border:2px solid transparent;background:#f5f7f4;border-radius:18px;padding:14px 8px;display:grid;gap:7px;place-items:center;color:var(--ink)}
.profile-choice.active{border-color:var(--gold);background:#fff9e9}
.profile-avatar{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;font-family:Fredoka;font-size:1.4rem}
.evans-avatar{background:#e5efe4;color:#2f6b5f}.cyrus-avatar{background:#fff0e7;color:#a34f2a}.parent-avatar{background:#f4e9c3;color:#765f14}
.pin-field,.admin-card label{display:grid;gap:7px;text-align:left;font-size:.82rem;font-weight:800}
.pin-field input,.admin-card input{border:1px solid var(--line);border-radius:13px;padding:12px;font-size:1rem}
.login-help{font-size:.76rem;color:var(--muted);margin:14px 0 0}
.login-error{min-height:20px;color:#b42318;font-size:.82rem;margin:10px 0 0}
.header-actions{display:flex;align-items:center;gap:10px}
.user-badge{background:white;border:1px solid var(--line);padding:9px 13px;border-radius:999px;font-size:.78rem;font-weight:800}
.owner-label{font-size:.82rem;color:var(--muted);font-weight:700}
.parent-only.hidden{display:none}
.admin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.admin-card{background:white;border:1px solid var(--line);border-radius:20px;padding:20px;display:grid;gap:14px;align-content:start}
.admin-card h3{margin-bottom:2px}
.admin-card .select{width:100%}
.danger-btn{border:0;border-radius:14px;padding:11px 15px;font-weight:800;background:#fee4e2;color:#b42318}
.admin-note{font-size:.78rem;color:var(--muted);line-height:1.5;margin:0}
.kid-card.locked{opacity:.55}
.kid-card.locked::after{content:"View only";float:right;margin-top:-28px;font-size:.72rem;color:var(--muted)}
@media(max-width:800px){.admin-grid{grid-template-columns:1fr}}

.vote-card.selected{box-shadow:0 0 0 2px rgba(201,168,76,.18)}

.restaurant-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.restaurant-card{
  border:0;border-radius:26px;padding:24px;text-align:left;display:flex;gap:18px;align-items:center;
  min-height:190px;box-shadow:var(--shadow);transition:.2s;color:var(--ink)
}
.restaurant-card:hover{transform:translateY(-3px)}
.restaurant-card.mcdonalds{background:linear-gradient(135deg,#fff4cf,#fff)}
.restaurant-card.popeyes{background:linear-gradient(135deg,#ffe7d8,#fff)}
.restaurant-emoji{font-size:4.2rem}
.restaurant-copy h3{font-size:1.75rem;margin:8px 0 5px}
.restaurant-copy p{color:var(--muted);margin-bottom:15px;line-height:1.45}
.restaurant-copy strong{color:var(--green)}
.restaurant-badge{
  display:inline-block;background:#edf1ed;color:var(--green);font-size:.7rem;font-weight:800;
  border-radius:999px;padding:6px 9px;text-transform:uppercase;letter-spacing:.05em
}
.menu-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}
.menu-note{color:var(--muted);font-size:.82rem;text-align:right}
.category-bar{display:flex;gap:8px;overflow:auto;padding-bottom:12px;margin-bottom:8px}
.category-chip{border:0;background:#edf1ed;color:var(--muted);padding:9px 13px;border-radius:999px;white-space:nowrap;font-weight:800}
.category-chip.active{background:#f47b20;color:white}
.popeyes-card{position:relative}
.popeyes-icon{font-size:2.4rem}
.popeyes-badge{background:#fff0e5;color:#b84b10}
.nutrition-unavailable{color:var(--muted);font-size:.78rem;margin:0}
@media(max-width:700px){
  .restaurant-grid{grid-template-columns:1fr}
  .restaurant-card{min-height:150px}
  .menu-toolbar{align-items:flex-start;flex-direction:column}
  .menu-note{text-align:left}
}

.vote-featured{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.featured-vote-card{border:2px solid transparent;background:white;border-radius:22px;padding:20px;display:grid;gap:7px;text-align:left;color:var(--ink);box-shadow:0 8px 22px rgba(50,70,60,.06)}
.featured-vote-card>span{font-size:2.3rem}.featured-vote-card strong{font-family:Fredoka;font-size:1.22rem}.featured-vote-card small{color:var(--muted);line-height:1.4}
.featured-vote-card.selected{border-color:var(--gold);background:#fff9e9}.westgate-feature{background:linear-gradient(135deg,#edf5ef,#fff)}
.current-vote-box{background:white;border:1px solid var(--line);border-radius:18px;padding:15px 17px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}
.current-vote-box div{display:grid;gap:3px}.current-vote-box span,.current-vote-box small{font-size:.78rem;color:var(--muted)}.current-vote-box strong{font-family:Fredoka;font-size:1.15rem}
.westgate-picker{background:white;border:1px solid var(--line);border-radius:24px;padding:20px;margin:16px 0}
.westgate-picker-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.westgate-picker-head h3{font-size:1.55rem;margin:0}
.restaurant-search{width:100%;border:1px solid var(--line);background:#fafbf9;border-radius:14px;padding:13px 15px;font-size:1rem;margin:16px 0 12px;color:var(--ink)}
.westgate-vote-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.westgate-restaurant-card{border:1px solid var(--line);background:#fafbf9;border-radius:16px;padding:13px;display:grid;grid-template-columns:auto 1fr;gap:8px 10px;text-align:left;color:var(--ink)}
.westgate-restaurant-card.selected{border:2px solid var(--gold);background:#fff9e9}
.restaurant-vote-emoji{font-size:1.6rem;grid-row:1/3}.restaurant-vote-copy{display:grid;gap:2px}.restaurant-vote-copy strong{font-size:.86rem}.restaurant-vote-copy small{font-size:.7rem;color:var(--muted)}
.restaurant-vote-count{font-size:.7rem;color:var(--muted);grid-column:2}.restaurant-vote-action{font-size:.72rem;font-weight:800;color:var(--green);grid-column:2}
@media(max-width:800px){.westgate-vote-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.vote-featured{grid-template-columns:1fr}.westgate-vote-grid{grid-template-columns:1fr}}

.all-restaurant-vote-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin-bottom:20px;
}
.restaurant-choice-card{
  border:1px solid var(--line);
  background:#fff;
  border-radius:17px;
  padding:14px;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:7px 11px;
  text-align:left;
  color:var(--ink);
  min-height:112px;
}
.restaurant-choice-card:hover{
  transform:translateY(-1px);
  box-shadow:0 8px 20px rgba(50,70,60,.07);
}
.restaurant-choice-card.selected{
  border:2px solid var(--gold);
  background:#fff9e9;
}
.restaurant-choice-emoji{
  font-size:1.8rem;
  grid-row:1/3;
}
.restaurant-choice-copy{
  display:grid;
  gap:3px;
}
.restaurant-choice-copy strong{
  font-size:.9rem;
  line-height:1.25;
}
.restaurant-choice-copy small{
  font-size:.72rem;
  color:var(--muted);
}
.restaurant-choice-meta{
  grid-column:2;
  font-size:.72rem;
  color:var(--muted);
}
.restaurant-choice-action{
  grid-column:2;
  font-size:.74rem;
  font-weight:800;
  color:var(--green);
}
@media(max-width:850px){
  .all-restaurant-vote-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:540px){
  .all-restaurant-vote-grid{grid-template-columns:1fr}
}

.tabs .tab{
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

.balance-preview{
  background:#edf5ef;
  color:var(--green);
  border-radius:13px;
  padding:11px 13px;
  font-family:Fredoka;
  font-weight:700;
}
.field-help{
  margin:-5px 0 0;
  color:var(--muted);
  font-size:.76rem;
  line-height:1.45;
}
.update-result{
  background:#eaf7ed;
  border:1px solid #b9dfc1;
  color:#246b39;
  border-radius:13px;
  padding:11px 13px;
  font-size:.8rem;
  font-weight:700;
}

.sync-status{
  padding:8px 11px;
  border-radius:999px;
  background:#edf1ed;
  color:var(--muted);
  font-size:.72rem;
  font-weight:800;
  white-space:nowrap;
}
.sync-status[data-status="saved"]{background:#e8f5eb;color:#26713c}
.sync-status[data-status="syncing"]{background:#fff4d7;color:#936800}
.sync-status[data-status="error"]{background:#fee4e2;color:#b42318}
#loginBtn:disabled{opacity:.65;cursor:wait}

.restaurant-unit{
  display:block;
  margin-top:3px;
  color:var(--green);
  font-size:.73rem;
  font-weight:800;
}
.restaurant-choice-card{
  min-height:126px;
}

.restaurant-locations{
  display:grid;
  gap:2px;
  margin-top:3px;
}
.restaurant-unit{
  display:block;
  color:var(--green);
  font-size:.72rem;
  font-weight:800;
  line-height:1.35;
}
.restaurant-choice-card{
  min-height:136px;
}

.restaurant-locations{display:grid;gap:2px;margin-top:3px}
.restaurant-unit{display:block;color:var(--green);font-size:.72rem;font-weight:800;line-height:1.35}
.restaurant-choice-card{min-height:138px}

.directory-version{
  margin:6px 0 0;
  color:var(--muted);
  font-size:.78rem;
}
.restaurant-locations{display:grid;gap:2px;margin-top:3px}
.restaurant-unit{display:block;color:var(--green);font-size:.72rem;font-weight:800;line-height:1.35}

.random-subtitle{color:var(--muted);margin:8px 0 0}
.random-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.random-controls label{display:grid;gap:7px;font-size:.8rem;font-weight:800}
.random-machine{
  max-width:760px;margin:0 auto;background:linear-gradient(145deg,#fff,#f3f8f4);
  border:1px solid var(--line);border-radius:32px;padding:34px;text-align:center;
  box-shadow:var(--shadow);min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center
}
.random-label{font-size:.72rem;letter-spacing:.16em;font-weight:900;color:var(--green)}
.random-emoji{font-size:5rem;line-height:1;margin:8px 0 12px}
.random-machine h3{font-size:clamp(2rem,5vw,3.4rem);margin:0 0 8px}
.random-machine>p{color:var(--muted)}
.random-locations{display:grid;gap:5px;margin:8px 0 22px}
.random-locations span{color:var(--green);font-size:.85rem;font-weight:800}
.random-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.random-main-btn{min-width:190px;padding:14px 22px;font-size:1rem}
.random-main-btn.stopping{background:#c9382c;animation:pulseStop .65s infinite alternate}
.random-tip{text-align:center;color:var(--muted);font-size:.78rem;margin-top:14px}
@keyframes pulseStop{from{transform:scale(1)}to{transform:scale(1.035)}}
.restaurant-locations{display:grid;gap:2px;margin-top:3px}
.restaurant-unit{display:block;color:var(--green);font-size:.72rem;font-weight:800;line-height:1.35}
@media(max-width:560px){.random-controls{grid-template-columns:1fr}.random-machine{padding:25px 16px}}

.filter-toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) 190px 170px;
  gap:12px;
  align-items:end;
  margin-bottom:10px;
}
.type-filter-bar{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.type-filter-chip{
  border:0;
  background:#edf1ed;
  color:var(--muted);
  padding:10px 14px;
  border-radius:999px;
  font-weight:800;
  white-space:nowrap;
}
.type-filter-chip.active{
  background:var(--green);
  color:white;
}
.compact-filter{
  display:grid;
  gap:6px;
  font-size:.74rem;
  font-weight:800;
  color:var(--muted);
}
.results-summary{
  margin:8px 0 12px;
  color:var(--muted);
  font-size:.78rem;
  font-weight:700;
}
.random-controls{
  grid-template-columns:repeat(3,1fr);
}
@media(max-width:900px){
  .filter-toolbar{grid-template-columns:1fr 1fr}
  .type-filter-bar{grid-column:1/-1}
}
@media(max-width:560px){
  .filter-toolbar{grid-template-columns:1fr}
  .random-controls{grid-template-columns:1fr}
}

.restaurant-render-error{
  margin:8px 0 12px;
  padding:10px 12px;
  border-radius:12px;
  background:#fee4e2;
  color:#b42318;
  font-size:.78rem;
  font-weight:700;
}

.restaurant-card.burgerking{
  background:linear-gradient(135deg,#fff0d8,#fff);
}
.burgerking-card{
  position:relative;
}
.bk-badge{
  background:#fff0d8;
  color:#8a3c10;
}
.burgerking-icon{
  font-size:2.4rem;
}

.bk-nutrition-row{
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:9px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  font-size:.82rem;
}
.bk-nutrition-row strong{color:var(--green)}
.official-nutrition-link{
  color:var(--green);
  font-size:.76rem;
  font-weight:800;
  text-decoration:none;
}
.meal-mode-label,.bk-set-builder label{
  display:grid;
  gap:6px;
  font-size:.76rem;
  font-weight:800;
}
.bk-set-builder{
  display:grid;
  gap:10px;
  background:#fff8ef;
  border-radius:14px;
  padding:12px;
}
