/* Camp Charlotte — sticker-book / camp-pennant style */
:root{
  --paper:#FFF4DE; --cream:#FFFDF4; --ink:#3A2A1A;
  --tang:#FF8C42; --tang-d:#E56F1F; --teal:#1FA9A0; --teal-d:#0F7E78;
  --grass:#7CB342; --grass-d:#5A8F2A; --sun:#FFD23F; --coral:#F4574C;
  --pink:#F78FB3; --sky:#7FC8F8;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"Nunito",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:16px; line-height:1.45;
  background-image:radial-gradient(#f3e3c2 1.2px, transparent 1.2px);
  background-size:26px 26px;
}
h1,h2,h3,.chunk{font-family:"Fredoka","Nunito",system-ui,sans-serif; font-weight:700; letter-spacing:.01em; margin:0}
a{color:var(--teal-d)}
button{font-family:inherit}

/* ---------- header ---------- */
.topbar{background:var(--ink); color:var(--cream); padding:14px 18px 16px; position:sticky; top:0; z-index:50;
  border-bottom:4px solid var(--tang);}
.topbar-inner{max-width:1180px; margin:0 auto; display:flex; align-items:center; gap:14px; flex-wrap:wrap}
.logo{display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--cream)}
.logo-badge{width:46px; height:46px; background:var(--sun); border:3px solid var(--cream); border-radius:14px;
  display:flex; align-items:center; justify-content:center; font-size:26px; transform:rotate(-6deg);
  box-shadow:3px 3px 0 rgba(0,0,0,.35)}
.logo-name{font-family:"Fredoka",sans-serif; font-weight:700; font-size:1.5rem; line-height:1}
.logo-sub{font-size:.78rem; opacity:.85}
.privacy-sticker{margin-left:auto; background:var(--grass); color:#fff; border:3px solid var(--cream);
  border-radius:999px; padding:6px 14px; font-weight:800; font-size:.8rem; transform:rotate(1.5deg);
  box-shadow:3px 3px 0 rgba(0,0,0,.35); white-space:nowrap}

/* ---------- tabs ---------- */
.tabs{max-width:1180px; margin:18px auto 0; padding:0 16px; display:flex; gap:10px; flex-wrap:wrap}
.tab{border:3px solid var(--ink); background:var(--cream); border-radius:16px 16px 0 0; border-bottom:none;
  padding:10px 22px; font-family:"Fredoka",sans-serif; font-weight:600; font-size:1.05rem; cursor:pointer;
  box-shadow:4px 0 0 rgba(58,42,26,.12); transform:rotate(-.6deg)}
.tab:nth-child(2){transform:rotate(.7deg)} .tab:nth-child(3){transform:rotate(-.4deg)}
.tab.active{background:var(--sun); transform:rotate(0) translateY(2px)}
.tab:hover{background:var(--sun)}

/* ---------- main panel ---------- */
.panel{max-width:1180px; margin:0 auto 60px; padding:20px 16px;}
.sheet{background:var(--cream); border:3px solid var(--ink); border-radius:22px;
  box-shadow:7px 7px 0 var(--ink); padding:22px; margin-bottom:22px}
.sheet.tilt-r{transform:rotate(.25deg)} .sheet.tilt-l{transform:rotate(-.25deg)}
.pennant{display:inline-block; background:var(--tang); color:#fff; font-family:"Fredoka",sans-serif;
  font-weight:700; font-size:1.25rem; padding:8px 26px 14px; margin:-32px 0 14px 6px;
  clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%);
  border-bottom:none; filter:drop-shadow(3px 3px 0 var(--ink))}
.pennant.teal{background:var(--teal)} .pennant.grass{background:var(--grass)} .pennant.sun{background:var(--sun); color:var(--ink)}

/* ---------- controls ---------- */
.controls{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:14px}
.search{flex:1 1 220px; border:3px solid var(--ink); border-radius:14px; padding:10px 14px;
  font-size:1rem; font-family:inherit; background:#fff; box-shadow:3px 3px 0 var(--ink)}
.search:focus{outline:3px solid var(--sun)}
select.pill,input.pill{border:3px solid var(--ink); border-radius:999px; padding:8px 14px; font-family:inherit;
  font-weight:700; font-size:.9rem; background:#fff; box-shadow:3px 3px 0 var(--ink); cursor:pointer}
label.ctl{font-weight:800; font-size:.85rem}
.chips{display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 14px}
.chip{border:3px solid var(--ink); background:#fff; border-radius:999px; padding:5px 13px;
  font-weight:800; font-size:.82rem; cursor:pointer; box-shadow:2px 2px 0 var(--ink)}
.chip:nth-child(odd){transform:rotate(-1deg)} .chip:nth-child(even){transform:rotate(1deg)}
.chip.on{background:var(--teal); color:#fff}
.chip .n{opacity:.75; font-weight:700}
.result-count{font-weight:800; margin:4px 2px 12px}

/* ---------- camp cards ---------- */
.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:16px}
.card{background:#fff; border:3px solid var(--ink); border-radius:18px; padding:14px 14px 12px;
  box-shadow:5px 5px 0 var(--ink); display:flex; flex-direction:column; gap:8px; position:relative}
.card:nth-child(3n){transform:rotate(.4deg)} .card:nth-child(3n+1){transform:rotate(-.4deg)}
.card h3{font-size:1.02rem; line-height:1.25}
.card .meta{font-size:.84rem; color:#6b5a44; font-weight:600}
.badges{display:flex; gap:6px; flex-wrap:wrap}
.badge{font-size:.75rem; font-weight:800; border:2.5px solid var(--ink); border-radius:999px; padding:2px 10px; background:var(--sun)}
.badge.price{background:var(--grass); color:#fff}
.badge.price.est{background:#fff; color:var(--ink); border-style:dashed}
.badge.drive{background:var(--sky)}
.badge.vac{background:var(--coral); color:#fff}
.catchips{display:flex; gap:5px; flex-wrap:wrap}
.catchip{font-size:.72rem; font-weight:800; background:var(--paper); border:2px solid var(--ink); border-radius:8px; padding:1px 8px}
.card-actions{display:flex; gap:8px; margin-top:auto; padding-top:6px}
.btn{border:3px solid var(--ink); border-radius:14px; padding:9px 16px; font-weight:800; font-size:.92rem;
  cursor:pointer; box-shadow:4px 4px 0 var(--ink); background:var(--tang); color:#fff; transition:transform .06s}
.btn:active{transform:translate(3px,3px); box-shadow:1px 1px 0 var(--ink)}
.btn.teal{background:var(--teal)} .btn.grass{background:var(--grass)} .btn.sun{background:var(--sun); color:var(--ink)}
.btn.ghost{background:#fff; color:var(--ink)}
.btn.small{padding:6px 12px; font-size:.82rem; border-radius:11px; box-shadow:3px 3px 0 var(--ink)}
.empty{background:#fff; border:3px dashed var(--ink); border-radius:18px; padding:34px; text-align:center; font-weight:700}

/* ---------- modal ---------- */
.overlay{position:fixed; inset:0; background:rgba(58,42,26,.55); z-index:100; display:flex;
  align-items:flex-start; justify-content:center; padding:24px 14px; overflow-y:auto}
.modal{background:var(--cream); border:4px solid var(--ink); border-radius:22px; box-shadow:8px 8px 0 var(--ink);
  max-width:640px; width:100%; padding:24px; position:relative}
.modal h2{font-size:1.35rem; margin-bottom:8px; padding-right:36px}
.modal .x{position:absolute; top:12px; right:12px; width:38px; height:38px; border-radius:12px;
  border:3px solid var(--ink); background:var(--coral); color:#fff; font-size:1.2rem; font-weight:900;
  cursor:pointer; box-shadow:3px 3px 0 var(--ink)}
.kv{display:grid; grid-template-columns:130px 1fr; gap:6px 12px; font-size:.92rem; margin:12px 0}
.kv dt{font-weight:800} .kv dd{margin:0}
.prov{font-size:.8rem; background:var(--paper); border:2px dashed var(--ink); border-radius:10px; padding:8px 12px; margin-top:10px}
.fields{margin:8px 0 0; padding-left:18px; font-size:.88rem}

/* ---------- planner ---------- */
.kids{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px}
.kid{border:3px solid var(--ink); border-radius:999px; padding:6px 14px; font-weight:800; background:var(--pink); color:var(--ink); box-shadow:3px 3px 0 var(--ink)}
.kid:nth-child(odd){background:var(--sky)} .kid:nth-child(even){background:var(--pink)}
.kid button{border:none; background:none; font-weight:900; cursor:pointer; margin-left:6px}
.coverbar{background:#fff; border:3px solid var(--ink); border-radius:14px; height:34px; overflow:hidden;
  display:flex; margin:10px 0; box-shadow:3px 3px 0 var(--ink)}
.coverbar div{height:100%}
.coverbar .cov{background:var(--grass)} .coverbar .gap{background:var(--coral)} .coverbar .vac{background:var(--sun)}
.cover-legend{display:flex; gap:14px; font-size:.82rem; font-weight:700; flex-wrap:wrap; margin-bottom:6px}
.dot{display:inline-block; width:12px; height:12px; border:2px solid var(--ink); border-radius:4px; margin-right:4px; vertical-align:-1px}
.weekgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(215px,1fr)); gap:12px; margin-top:12px}
.week{background:#fff; border:3px solid var(--ink); border-radius:16px; padding:10px; box-shadow:4px 4px 0 var(--ink); cursor:pointer; min-height:118px}
.week:hover{background:#fffbeF}
.week.vacation{background:var(--sun)}
.week .wlabel{font-family:"Fredoka",sans-serif; font-weight:600; font-size:.95rem}
.week .wdate{font-size:.78rem; font-weight:700; color:#6b5a44}
.week .asg{font-size:.8rem; font-weight:700; margin-top:6px; border-top:2px dashed #d8c9a8; padding-top:5px}
.week .asg .kidname{color:var(--teal-d)}
.week .wflag{font-size:.75rem; font-weight:800; margin-top:4px}
.week.gap{outline:3px dashed var(--coral); outline-offset:-8px}
.week .wcost{font-size:.78rem; font-weight:800; color:var(--grass-d)}
.conflict{background:#ffe3e1; border:2px solid var(--coral); border-radius:10px; padding:8px 12px;
  font-weight:800; font-size:.85rem; margin:10px 0}
.costtable{width:100%; border-collapse:collapse; font-size:.9rem; margin-top:8px}
.costtable th,.costtable td{border:2px solid var(--ink); padding:6px 10px; text-align:left}
.costtable th{background:var(--sun); font-family:"Fredoka",sans-serif}
.costtable tr:nth-child(even) td{background:#fffdf6}
.asg-row{display:flex; align-items:center; gap:8px; background:#fff; border:2.5px solid var(--ink);
  border-radius:12px; padding:8px 10px; margin:6px 0; font-size:.88rem; font-weight:700}
.asg-row .rm{margin-left:auto}
textarea.notes{width:100%; border:3px solid var(--ink); border-radius:12px; padding:10px; font-family:inherit;
  font-size:.9rem; min-height:64px; box-shadow:3px 3px 0 var(--ink); margin-top:8px}
.camp-pick{display:flex; gap:8px; margin:8px 0}
.camp-pick .search{flex:1}
.picklist{max-height:220px; overflow-y:auto; border:3px solid var(--ink); border-radius:12px; background:#fff}
.picklist .pick{padding:8px 12px; border-bottom:2px solid var(--paper); cursor:pointer; font-size:.88rem; font-weight:700}
.picklist .pick:hover{background:var(--sun)}

/* ---------- AI planner + friend overlay ---------- */
.ai-box{background:#fff; border:3px solid var(--ink); border-radius:18px; padding:26px 16px 14px;
  box-shadow:5px 5px 0 var(--ink); margin:14px 0 20px; position:relative}
.ai-status{font-weight:800; font-size:.88rem}
.ai-status.err{color:var(--coral)}
.friend-box{background:#fff; border:3px solid var(--ink); border-radius:18px; padding:14px;
  box-shadow:5px 5px 0 var(--ink); margin-top:6px}
.friend-asg{margin-top:8px; border:3px dashed #8E6FB8; border-radius:12px; background:#F4EDFB;
  padding:7px 9px; font-size:.78rem; font-weight:700}
.friend-asg .friend-name{font-weight:900; color:#6A4FA3; margin-bottom:2px}
.friend-asg.friend-vac{opacity:.85}
.carpool{display:inline-block; background:var(--sun); border:2.5px solid var(--ink); border-radius:999px;
  padding:1px 10px; font-size:.75rem; font-weight:900; box-shadow:2px 2px 0 var(--ink); transform:rotate(-1deg)}
.nearby{margin-top:4px; font-size:.75rem; font-weight:800; color:var(--teal-d)}
button:disabled{opacity:.55; cursor:not-allowed}

/* ---------- export ---------- */
#print-root{display:none}
.big-export{text-align:center; padding:10px}
.big-export .btn{font-size:1.15rem; padding:14px 34px}

footer{max-width:1180px; margin:0 auto; padding:0 16px 46px; font-size:.82rem; color:#6b5a44; font-weight:600}
footer .sticker{display:inline-block; background:#fff; border:2.5px solid var(--ink); border-radius:12px;
  padding:8px 14px; box-shadow:3px 3px 0 var(--ink); transform:rotate(-.5deg)}

/* ---------- print ---------- */
@media print{
  #app, .topbar{display:none !important}
  #print-root{display:block !important; color:#222; font-family:Georgia,"Times New Roman",serif}
  body{background:#fff}
  .p-page{page-break-after:always; padding:8px}
  .p-page:last-child{page-break-after:auto}
  .p-h{font-family:Arial,Helvetica,sans-serif; border-bottom:3px solid #222; padding-bottom:6px; margin:0 0 10px}
  .p-cal{width:100%; border-collapse:collapse; font-size:11px}
  .p-cal th,.p-cal td{border:1px solid #555; padding:5px 7px; vertical-align:top; text-align:left}
  .p-cal th{background:#eee; font-family:Arial,Helvetica,sans-serif}
  .p-vac{background:#fff3c4}
  .p-cost{width:100%; border-collapse:collapse; font-size:12px; margin:8px 0}
  .p-cost th,.p-cost td{border:1px solid #555; padding:5px 8px; text-align:left}
  .p-cost th{background:#eee; font-family:Arial,Helvetica,sans-serif}
  .p-check td{padding:7px 8px}
  .p-box{border:1px solid #888; height:13px; width:13px; display:inline-block; margin-right:8px; vertical-align:-2px}
  .p-note{font-size:11px; color:#444}
  .p-url{font-size:10px; color:#333; word-break:break-all}
  .p-toc{font-size:12px}
}

@media (max-width:640px){
  .sheet{padding:16px}
  .kv{grid-template-columns:1fr}
  .privacy-sticker{display:none}
  .weekgrid{grid-template-columns:1fr 1fr}
}
