*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;color-scheme:light dark;--forest: #1f4d2e;--forest-deep: #14351f;--moss: #2f6b45;--khaki: #d9c9a1;--khaki-pale: #f2ebda;--sky: #3f8fc4;--sky-pale: #d8ebf7;--clay: #b4553a;--clay-pale: #f6ded6;--bark: #3b2f22;--paper: #fffdf7;--line: #cdbf9c;--muted: #6d6047;--radius: 14px;--shadow: 0 2px 0 var(--line), 0 6px 14px rgb(31 77 46 / .08)}body{min-height:100dvh;background-color:var(--khaki-pale);color:var(--bark);padding-bottom:3rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.topbar{position:sticky;top:0;z-index:5;background:var(--forest);color:var(--khaki-pale);padding:.75rem 1rem 0;box-shadow:0 3px 0 var(--forest-deep)}.topbar__row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;max-width:46rem;margin-inline:auto}.topbar__brand{font-size:1.35rem;font-weight:800;letter-spacing:-.02em}.soundtoggle{border:2px solid rgb(242 235 218 / .4);background:#f2ebda1f;color:inherit;border-radius:999px;width:2.6rem;height:2.6rem;font-size:1.1rem;cursor:pointer}.tabs{display:flex;gap:.4rem;max-width:46rem;margin-inline:auto;padding:.6rem 0 0;overflow-x:auto}.tab{flex:1 0 auto;text-align:center;padding:.6rem .9rem;border-radius:var(--radius) var(--radius) 0 0;background:#f2ebda24;color:var(--khaki-pale);font-weight:700;font-size:.95rem;text-decoration:none;border-bottom:4px solid transparent}.tab.is-active{background:var(--khaki-pale);color:var(--forest-deep);border-bottom-color:var(--sky)}.page{max-width:46rem;margin-inline:auto;padding:1.1rem .9rem 2rem;display:flex;flex-direction:column;gap:1rem}.page__title{font-size:clamp(1.9rem,7vw,2.5rem);font-weight:900;letter-spacing:-.03em;line-height:1.05;color:var(--forest-deep);text-transform:uppercase}.page__lede{margin-top:-.7rem;color:var(--muted);font-weight:600}.card{background:var(--paper);border:2px solid var(--line);border-top:8px solid var(--forest);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem;display:flex;flex-direction:column;gap:.7rem}.card__title{font-size:1.25rem;font-weight:900;letter-spacing:-.02em;color:var(--forest-deep)}.card__lede{font-size:.9rem;color:var(--muted)}.empty{font-size:.9rem;color:var(--muted);font-style:italic}.stack{list-style:none;display:flex;flex-direction:column;gap:.55rem}.row,.duty,.scout,.scout-badge,.zone-jobs{border:2px solid var(--line);border-radius:10px;background:var(--khaki-pale);padding:.65rem .7rem}.row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.row__main{flex:1 1 12rem;min-width:0}.row__title{font-weight:800;line-height:1.25}.row__meta{display:block;font-size:.8rem;color:var(--muted);font-weight:600}.row.is-done .check__label{text-decoration:line-through;color:var(--muted)}.duty,.scout,.scout-badge,.zone-jobs{display:flex;flex-direction:column;gap:.5rem}.duty__head{display:flex;align-items:flex-start;gap:.5rem}.tag{flex:0 0 auto;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:.3rem .55rem;border-radius:999px;border:2px solid var(--line);background:var(--paper);color:var(--bark)}.tag--sky{background:var(--sky-pale);border-color:var(--sky);color:#17435f}.tag--khaki{background:var(--khaki);border-color:var(--line);text-transform:none;letter-spacing:0}.tag--open{background:var(--clay-pale);border-color:var(--clay);color:#7a3120}.tag--earned{background:var(--forest);border-color:var(--forest-deep);color:var(--khaki-pale)}.tag--halfway{background:var(--sky-pale);border-color:var(--sky);color:#17435f}.tag--started{background:var(--khaki)}.tag--not-started{color:var(--muted)}.patrol{display:flex;flex-direction:column;gap:.5rem}.patrol__name{display:flex;align-items:baseline;gap:.4rem;font-size:1.05rem;font-weight:900;color:var(--forest-deep);text-transform:uppercase;letter-spacing:.01em}.patrol__count{margin-left:auto;font-size:.78rem;font-weight:700;color:var(--muted);text-transform:none}.scouts{list-style:none;display:flex;flex-direction:column;gap:.5rem}.scout__row{display:flex;align-items:center;gap:.5rem}.scout__name{font-weight:800;flex:1}.chips{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none}.chip{border:2px solid var(--line);background:var(--paper);color:var(--muted);border-radius:999px;padding:.4rem .75rem;font-size:.85rem;font-weight:800;cursor:pointer;min-height:2.3rem}.chip--present.is-on{background:var(--forest);border-color:var(--forest-deep);color:var(--khaki-pale)}.chip--absent.is-on{background:var(--clay);border-color:#8d3f2b;color:#fff}.chip--away.is-on{background:var(--sky);border-color:#2c6d9b;color:#fff}.chip--assignee{background:var(--khaki);color:var(--bark)}.chip--flagged{background:var(--clay-pale);border-color:var(--clay);color:#7a3120}.chip--badge{background:var(--paper);color:var(--forest-deep)}.chip--badge.is-on{background:var(--forest);border-color:var(--forest-deep);color:var(--khaki-pale)}.chips--tabs{padding-bottom:.1rem}.check{display:flex;align-items:flex-start;gap:.6rem;flex:1;cursor:pointer;font-weight:700;min-height:2.2rem}.check input{position:absolute;opacity:0;width:1.5rem;height:1.5rem}.check__box{flex:0 0 auto;width:1.6rem;height:1.6rem;border:3px solid var(--forest);border-radius:6px;background:var(--paper);display:grid;place-items:center;transition:transform .12s ease,background-color .12s ease}.check input:checked+.check__box{background:var(--forest);animation:pop .3s ease}.check input:checked+.check__box:after{content:"✓";color:var(--khaki-pale);font-size:1rem;font-weight:900;line-height:1}.check input:focus-visible+.check__box{outline:3px solid var(--sky);outline-offset:2px}.check__label{line-height:1.3}.reqs{list-style:none;display:flex;flex-direction:column;gap:.35rem}.reqs .is-done .check__label{text-decoration:line-through;color:var(--muted)}.progress{height:10px;border:2px solid var(--line);border-radius:999px;background:var(--paper);overflow:hidden}.progress__fill{display:block;height:100%;background:var(--moss);transition:width .22s ease}.milestones{display:flex;gap:.5rem;list-style:none}.milestone{flex:1;border:2px solid var(--line);border-radius:10px;padding:.6rem .4rem;text-align:center;background:var(--khaki-pale)}.milestone--halfway{background:var(--sky-pale);border-color:var(--sky)}.milestone--earned{background:var(--forest);border-color:var(--forest-deep);color:var(--khaki-pale)}.milestone__count{display:block;font-size:1.6rem;font-weight:900;line-height:1}.milestone__label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.campmap{display:grid;grid-template-columns:repeat(3,1fr);grid-template-areas:"gate tents tents" "wood fire water" "mess washup firstaid" "latrines latrines latrines";gap:.45rem;padding:.5rem;border:3px dashed var(--moss);border-radius:var(--radius);background:repeating-linear-gradient(45deg,rgb(47 107 69 / .05) 0 8px,transparent 8px 16px),var(--khaki-pale)}.zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-height:5.2rem;padding:.5rem .3rem;border:2px solid var(--line);border-radius:10px;background:var(--paper);cursor:pointer;text-align:center;font:inherit;color:var(--bark)}.zone.is-staffed{border-color:var(--forest);background:#f4f7ef}.zone--fire{border-style:solid;border-color:var(--clay)}.zone--water{background:var(--sky-pale)}.zone__emblem{font-size:1.4rem;line-height:1}.zone__name{font-size:.8rem;font-weight:800;line-height:1.15}.zone__patrol{font-size:.72rem;font-weight:700;color:var(--muted)}.zone__jobs{position:absolute;top:-.5rem;right:-.4rem;min-width:1.5rem;height:1.5rem;border-radius:999px;background:var(--clay);color:#fff;font-size:.8rem;font-weight:900;display:grid;place-items:center;border:2px solid var(--paper)}.disclosure{border-top:2px dashed var(--line);padding-top:.6rem}.disclosure summary{cursor:pointer;font-weight:800;color:var(--moss);min-height:2.2rem;display:flex;align-items:center}.add-form{display:flex;flex-direction:column;gap:.55rem;padding-top:.6rem}.field{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.field--inline{text-transform:none}.field input,.field select,select{font:inherit;font-weight:600;text-transform:none;letter-spacing:normal;color:var(--bark);background:var(--paper);border:2px solid var(--line);border-radius:10px;padding:.6rem;min-height:2.75rem;width:100%}.btn{align-self:flex-start;border:2px solid var(--forest-deep);background:var(--forest);color:var(--khaki-pale);font-weight:900;font-size:.95rem;border-radius:999px;padding:.65rem 1.1rem;min-height:2.75rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}.btn--ghost{background:var(--paper);color:var(--forest-deep);border-color:var(--forest)}.linkish{border:none;background:none;color:var(--muted);font-weight:800;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;padding:.4rem;min-height:2.2rem}.linkish:hover{color:var(--clay)}:where(button,a,input,select,summary):focus-visible{outline:3px solid var(--sky);outline-offset:2px}@keyframes pop{0%{transform:scale(1)}35%{transform:scale(.9)}70%{transform:scale(1.06)}to{transform:scale(1)}}.pop-target.is-popping{animation:pop .3s cubic-bezier(.34,1.56,.64,1)}@media(prefers-reduced-motion:reduce){.pop-target.is-popping,.check input:checked+.check__box{animation:none}}@media(prefers-color-scheme:dark){:root{--forest: #2c6740;--forest-deep: #1a3d26;--moss: #61a97b;--khaki: #4a442f;--khaki-pale: #17211a;--sky: #5aa9d6;--sky-pale: #24404f;--clay: #c96b4e;--clay-pale: #48281f;--bark: #ece7d8;--paper: #1f2b23;--line: #3c5142;--muted: #a9b3a3;--shadow: 0 2px 0 var(--line), 0 6px 14px rgb(0 0 0 / .35)}.tag--sky,.milestone--halfway{color:var(--bark)}.tag--open{color:#f2c9bb}.zone.is-staffed{background:#223528}}
