/* Quest Board — parent.css: page-only layout for Quest HQ (parent.html). Every class starts with pq-.
   Shared components (panels, buttons, cards, ribbons, tabs, dialogs, fields) come from theme.css; this file only
   arranges them and adds the few HQ-only bits (code card, check queue, kid rows, quest form chips, preview). */

/* ---------- shell ---------- */
.pq-skip{position:absolute;left:12px;top:-80px;z-index:1200;background:var(--qb-yellow);color:var(--qb-ink);border:3px solid var(--qb-ink);border-radius:12px;
  padding:10px 16px;font-weight:900;text-decoration:none;box-shadow:var(--qb-shadow-sm)}
.pq-skip:focus{top:12px}
#main:focus{outline:none}
.pq-head .qb-brand{margin-right:2px}
.pq-brand-lumi{display:inline-flex;line-height:0}
.pq-brand-lumi .qb-lumi{width:34px;height:auto}
.pq-chipslot{display:flex;min-width:0;max-width:100%}
.pq-plus{font-family:var(--qb-display);font-weight:400;font-size:1.3em;line-height:.8}
.pq-app{display:flex;flex-direction:column;gap:22px;min-width:0}
.pq-onblue{color:#FFFFFF;text-shadow:0 3px 0 var(--qb-ink)}
.pq-onblue:focus{outline:none}
.pq-onblue:focus-visible{outline:3px solid #FFFFFF;outline-offset:4px;border-radius:8px}

/* ---------- hello: Lumi + the strip ---------- */
.pq-hello{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px}
.pq-buddy{flex:1 1 380px}
.pq-lumi{flex:none;line-height:0}
.pq-lumi .qb-lumi{width:96px;height:auto}
.pq-say{max-width:540px}
.pq-stats{margin:0;list-style:none;flex:0 1 auto}

/* ---------- grid ---------- */
.pq-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,350px);gap:22px;align-items:start}
.pq-col{display:flex;flex-direction:column;gap:22px;min-width:0}

/* headings with a count bubble */
.pq-h{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}
.pq-h:focus{outline:none}
.pq-h:focus-visible{outline:3px solid var(--qb-ink);outline-offset:4px;border-radius:8px}
.pq-badge{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:30px;padding:0 9px;border-radius:999px;background:var(--qb-mist);
  border:2.5px solid var(--qb-ink);color:var(--qb-ink);font-family:var(--qb-display);font-weight:400;font-size:17px;line-height:1}
.pq-badge--hot,.pq-badge--pink{background:var(--qb-pink)}
.pq-badge--calm{background:var(--qb-yellow)}
.pq-calm{font-weight:800;color:var(--qb-ink-soft)}

/* ---------- onboarding (no kids yet) ---------- */
.pq-onboard .qb-step{padding-top:24px}
.pq-onboard .qb-step .qb-btn{margin-top:6px}
.pq-step--done{background:#E3FAEE}
.pq-inlinecode{font-family:var(--qb-display);font-weight:400;letter-spacing:.08em;background:var(--qb-paper);color:var(--qb-ink);border:2px dashed var(--qb-ink);
  border-radius:8px;padding:0 6px;white-space:nowrap}
/* where a kid signs up (a Wi-Fi address like http://192.168.1.23:3100 may wrap on a phone) */
.pq-addr{font-weight:900;overflow-wrap:anywhere}

/* ---------- family code card ---------- */
.pq-code__row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.pq-code__value{font-size:clamp(34px,10vw,46px);padding:4px 16px;max-width:100%}
.pq-code__left{display:flex;align-items:center;gap:6px;margin-top:14px;font-weight:800;line-height:1.3}
.pq-code__left .qb-ic{flex:none}
.pq-code__how{margin-top:6px}
.pq-code__acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.pq-code__acts .qb-btn{flex:1 1 auto}
.pq-code__none{font-weight:800;margin-bottom:12px}

/* ---------- kids ---------- */
.pq-kids__none{font-weight:800;color:var(--qb-ink-soft)}
.pq-kidlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pq-kid{display:flex;flex-direction:column;gap:10px;padding:16px 0;border-top:3px dashed var(--qb-line);min-width:0}
.pq-kid:first-child{border-top:0;padding-top:0}
.pq-kid:last-child{padding-bottom:0}
.pq-kid__top{display:flex;align-items:center;gap:12px;min-width:0}
.pq-kid__who{display:flex;flex-direction:column;gap:5px;min-width:0}
.pq-kid__name{font-family:var(--qb-display);font-weight:400;font-size:21px;line-height:1.1;overflow-wrap:anywhere}
.pq-kid__counts{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.pq-kid__counts li{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:6px 4px;border-radius:12px;background:var(--qb-mist);
  border:2px solid var(--qb-ink);font-size:12px;font-weight:800;line-height:1.15;color:var(--qb-ink-soft)}
.pq-kid__counts b{font-family:var(--qb-display);font-weight:400;font-size:22px;line-height:1.05;color:var(--qb-ink)}
.pq-kid__owed{display:inline-flex;align-self:flex-start;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:#FFE8F1;border:2px solid var(--qb-ink);
  font-size:14px;font-weight:900}
.pq-kid__acts{display:flex;flex-wrap:wrap;gap:8px}
.pq-kid__acts .qb-btn{flex:1 1 auto}

/* ---------- needs your check + rewards to hand over ---------- */
.pq-loot__help{margin:-6px 0 6px}
.pq-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.pq-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px 14px;align-items:start;padding:14px 8px;margin:0 -8px;border-top:3px dashed var(--qb-line);border-radius:14px}
.pq-item:first-child{border-top-color:transparent;padding-top:4px}
.pq-item__body{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-width:0}
.pq-item__line{font-size:17px;font-weight:800;line-height:1.3;overflow-wrap:anywhere}
.pq-item__line b{font-family:var(--qb-display);font-weight:400;font-size:19px}
.pq-item__q{font-weight:900}
.pq-item__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:14px;font-weight:800;color:var(--qb-ink-soft)}
.pq-item__meta > span{display:inline-flex;align-items:center;gap:4px}
.pq-item__reward{max-width:100%}
.pq-item__hint{font-size:14px;font-weight:800;color:var(--qb-ink-soft);line-height:1.35}
.pq-item__acts{display:flex;flex-direction:column;align-items:stretch;gap:8px}
.pq-item--given .pq-item__body{opacity:.75}
.pq-given{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 6px;font-weight:900;color:#0B7A47}
.pq-flash{animation:pq-flash 1.4s ease-out}

/* ---------- quest list ---------- */
.pq-quests{display:flex;flex-direction:column;gap:14px;min-width:0}
.pq-quests__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.pq-tabhelp{color:#FFFFFF;font-weight:800;font-size:15px;text-shadow:0 2px 0 var(--qb-ink)}
.pq-tabhelp:empty{display:none}
.pq-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}
.pq-card__details{-webkit-line-clamp:2;line-clamp:2}
.pq-card__ends{margin-top:-6px;font-size:14px;font-weight:800;color:var(--qb-ink-soft)}
.pq-card__warn{padding:8px 12px;border-radius:14px;background:#FFF0F3;border:2.5px solid var(--qb-red-ink);font-size:14px;font-weight:900}
.pq-card--done{background:linear-gradient(160deg,#FFFBEA 0%,var(--qb-cream) 100%)}
.pq-card--expired{background:#F4F6FC}
.pq-card--expired .qb-card__emoji{filter:grayscale(.7)}
.pq-card--waiting{box-shadow:0 6px 0 var(--qb-ink),0 0 0 5px var(--qb-lilac)}
.pq-count--done{background:var(--qb-yellow)}
.pq-who{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.pq-who__pill{padding-right:12px}
.pq-who__av{font-size:15px;line-height:1}
.pq-who__pill b{font-weight:900}
.pq-gives{display:flex;flex-direction:column;gap:6px}
.pq-gives__h{font-size:13px;font-weight:900;color:var(--qb-ink-soft);text-transform:uppercase;letter-spacing:.04em}
.pq-gives__row{display:flex;flex-wrap:wrap;gap:6px}
.pq-give{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:4px 14px 4px 10px;border:2.5px solid var(--qb-ink);border-radius:999px;background:var(--qb-paper);
  color:var(--qb-ink);box-shadow:var(--qb-shadow-sm);font-weight:800;font-size:14px;line-height:1.2;transition:transform .1s,box-shadow .1s,background-color .12s}
.pq-give:hover{background:var(--qb-cream)}
.pq-give.is-on{background:#E3FAEE}
.pq-give__box{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;border:2.5px solid var(--qb-ink);
  background:var(--qb-paper);font-weight:900;font-size:14px;line-height:1}
.pq-give.is-on .pq-give__box{background:var(--qb-green)}
.pq-give:active{transform:translateY(3px);box-shadow:0 0 0 var(--qb-ink)}
.pq-give:disabled{opacity:.6;cursor:progress}
.pq-give__what{padding-left:8px;border-left:2px solid var(--qb-grey);color:var(--qb-ink-soft);font-size:13px;overflow-wrap:anywhere}
.pq-card__acts{gap:8px}
.pq-card__acts .pq-del{margin-left:auto}

/* ---------- the quest form (dialog) ---------- */
.pq-dlg__icon{flex:none;font-size:28px;line-height:1}
.pq-notice{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:3px solid var(--qb-ink);border-radius:16px;background:var(--qb-cream)}
.pq-notice__e{flex:none;font-size:34px;line-height:1}
.pq-notice > div{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.pq-notice__code{border-radius:8px;outline-offset:3px} /* takes focus after "Make a family code" in the form */
.pq-form{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:20px;align-items:start}
.pq-form__main{display:flex;flex-direction:column;gap:18px;min-width:0}
.pq-form__side{position:sticky;top:12px;min-width:0}

/* roll an idea */
.pq-roll{display:flex;flex-direction:column;gap:8px;padding:14px;border:3px dashed var(--qb-ink);border-radius:18px;background:#FFF0F6}
.pq-roll__row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.pq-roll__btn{flex:1 1 auto}
.pq-roll__cat{flex:1 1 160px;width:auto;min-height:48px}
.pq-dice{display:inline-block;font-size:22px;line-height:1}
.pq-dice.is-rolling{animation:pq-roll .6s cubic-bezier(.3,1.4,.5,1)}

/* numbered steps */
.pq-step{display:flex;flex-direction:column;gap:14px;min-width:0}
.pq-step + .pq-step{border-top:3px dashed var(--qb-line);padding-top:18px}
.pq-step__h{display:flex;align-items:center;gap:10px;margin:0;font-family:var(--qb-display);font-weight:400;font-size:22px;line-height:1.1}
.pq-step__n{--c:var(--qb-yellow);flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--c);
  border:3px solid var(--qb-ink);box-shadow:var(--qb-shadow-sm);font-size:18px;line-height:1}
.pq-emojis{grid-template-columns:repeat(auto-fill,minmax(50px,1fr))}
.pq-emojis .qb-pick__face{min-height:48px;font-size:26px}

/* reward type chips (radio) */
.pq-rchips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 4px}
.pq-rchip{--c:var(--qb-yellow);position:relative;display:inline-flex;max-width:100%}
.pq-rchip input,.pq-wchip input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.pq-rchip > span{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 14px 0 10px;border:3px solid var(--qb-ink);border-radius:999px;background:var(--qb-paper);
  color:var(--qb-ink);box-shadow:var(--qb-shadow-sm);font-weight:900;font-size:15px;line-height:1.15;transition:transform .1s,box-shadow .1s,background-color .12s}
.pq-rchip__e{font-size:18px;line-height:1}
.pq-rchip:hover > span{background:var(--qb-cream)}
.pq-rchip input:checked + span{background:var(--c);transform:translateY(-1px);box-shadow:0 4px 0 var(--qb-ink)}
.pq-rchip input:checked + span::after{content:'✓';content:'✓' / '';font-weight:900}
.pq-rchip input:focus-visible + span,.pq-wchip input:focus-visible + span{outline:3px solid var(--qb-blue);outline-offset:3px}
.pq-mystery{display:flex;flex-direction:column;gap:4px;padding:10px 14px;border-radius:16px;background:var(--qb-mist)}

/* difficulty + mode segmented controls */
.pq-diff__stars{display:block;line-height:0;margin-bottom:3px}
.pq-diff__stars .qb-star{width:15px;height:15px}
.pq-mode > label > span{gap:3px;padding:8px 10px}
.pq-mode small{font-weight:800;line-height:1.25}

/* expiry quick picks (radio) */
.pq-wchips{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,138px),1fr));gap:8px;padding:2px 0 4px}
.pq-wchip{position:relative;display:flex;min-width:0}
.pq-wchip > span{flex:1;display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:56px;padding:6px 12px;border:3px solid var(--qb-ink);border-radius:14px;
  background:var(--qb-mist);color:var(--qb-ink);box-shadow:var(--qb-shadow-sm);font-size:15px;line-height:1.2;transition:transform .1s,box-shadow .1s,background-color .12s}
.pq-wchip b{font-weight:900}
.pq-wchip small{font-size:13px;font-weight:800;color:var(--qb-ink-soft)}
.pq-wchip:hover > span{background:var(--qb-blue-soft)}
.pq-wchip input:checked + span{background:var(--qb-yellow);transform:translateY(-2px);box-shadow:0 5px 0 var(--qb-ink)}
.pq-wchip input:checked + span small{color:var(--qb-ink)}
.pq-sublabel{font-size:15px}
.pq-at{max-width:340px}
.pq-ends{display:inline-flex;align-self:flex-start;align-items:center;gap:6px;max-width:100%;padding:6px 14px;border-radius:999px;background:var(--qb-ink);color:#FFFFFF;
  font-weight:900;font-size:15px;line-height:1.3}
.pq-ends--over{background:var(--qb-red-ink)}
.pq-ends--none{background:var(--qb-grey);color:var(--qb-ink)}
.pq-kidpick__none{font-weight:800;color:var(--qb-ink-soft)}
.pq-racenote,.pq-formnote{padding:8px 12px;border-radius:14px;background:#F1ECFF;border:2.5px solid var(--qb-ink);font-size:14px;font-weight:800;line-height:1.35}
.pq-racenote b,.pq-formnote b{font-weight:900}
.pq-formnote--warn{background:var(--qb-cream)}

/* delete a quest someone handed in: Check now (main) · Keep it · Delete anyway (apart, on the left) */
.pq-deldlg__warn{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:14px;background:#FFF0F3;border:2.5px solid var(--qb-red-ink);
  font-weight:800;line-height:1.4}
.pq-deldlg__warn > span:first-child{flex:none;font-size:20px;line-height:1.2}
.pq-deldlg__del{margin-right:auto}

/* live preview */
.pq-prev{display:flex;flex-direction:column;gap:12px;padding:12px;border-radius:20px;background:var(--qb-blue);border:3px solid var(--qb-ink);
  background-image:radial-gradient(rgba(255,255,255,.1) 2px,transparent 2.6px);background-size:22px 22px}
.pq-prev__label{color:#FFFFFF;font-weight:900;font-size:14px;text-align:center;text-shadow:0 2px 0 var(--qb-ink)}
.pq-prev__card{padding:12px;gap:10px;box-shadow:0 4px 0 var(--qb-ink)}
.pq-prev__card .qb-card__emoji{width:46px;height:46px;font-size:26px;border-radius:14px}
.pq-prev__card .qb-card__title{font-size:18px}
.pq-prev__card .qb-ribbon{font-size:14px}
.pq-prev__lumi{display:flex;flex-direction:column;align-items:center;gap:16px}
.pq-prev__say{font-size:15px;text-align:center;padding:8px 12px}

/* ---------- motion ---------- */
@keyframes pq-flash{0%{background:var(--qb-yellow)}100%{background:transparent}}
@keyframes pq-roll{0%{transform:rotate(0) scale(1)}50%{transform:rotate(200deg) scale(1.35)}100%{transform:rotate(360deg) scale(1)}}

/* ---------- tablet ---------- */
@media (max-width:1000px){
  .pq-grid{grid-template-columns:minmax(0,1fr)}
  .pq-col--side{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));align-items:start}
  .pq-nokids .pq-col--side{order:-1}
}
@media (max-width:760px){
  .pq-form{grid-template-columns:minmax(0,1fr)}
  .pq-form__side{display:none}
}

/* ---------- phone ---------- */
@media (max-width:700px){
  .pq-head{gap:10px}
  .pq-head .qb-head__right{width:100%}
  .pq-newbtn{flex:1 1 auto}
  .pq-buddy{flex-basis:100%}
  .pq-lumi .qb-lumi{width:72px}
  .pq-stats{width:100%}
  .pq-item{grid-template-columns:auto minmax(0,1fr)}
  .pq-item__acts{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap}
  .pq-item__acts .qb-btn{flex:1 1 auto}
  .pq-step__h{font-size:20px}
  .pq-roll{padding:12px}
}
@media (max-width:520px){
  .pq-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  .pq-tabs .qb-tab{padding:0 8px}
  .pq-quests__head .qb-btn{flex:none}
  .pq-wchips{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pq-diff > label{min-width:0}
  .pq-diff > label > span{padding:6px 4px;font-size:14px}
  .pq-diff__stars .qb-star{width:12px;height:12px}
  .pq-mode > label{min-width:0}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .pq-dice.is-rolling,.pq-flash{animation:none !important}
  .pq-give:active{transform:none}
}

/* tab panels are focusable (tabindex=0) so a text-only empty state is reachable by keyboard */
.pq-tabpanel{border-radius:var(--qb-r-lg)}
.pq-tabpanel:focus{outline:none}
.pq-tabpanel:focus-visible{outline:3px solid #FFFFFF;outline-offset:4px}

.pq-kid__lq{display:block;font-size:13px;font-weight:800;color:var(--qb-ink-soft,#3B3F6B)}

/* online: Light Quest player picker on a kid card */
.pq-kid__lqpick { margin: .5rem 0 0; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; font-weight: 700; font-size: .9rem; }
.pq-kid__lqpick select { font: inherit; padding: .3rem .5rem; border-radius: 10px; border: 2px solid currentColor; max-width: 100%; }
