:root{--parch:#f6ecd6;--parch2:#efdfbb;--card:#fbf3df;--ink:#2b2118;--mut:#5f4d3a;--or:#c2410c;--ortext:#a8360a;--orlt:#fed7aa;--ln:#d9c49a;--ok:#2f6b3a;--bad:#a11d1d;--r:16px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);font:17px/1.55 Georgia,'Iowan Old Style','Palatino Linotype',serif;
 background:var(--parch) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' seed='3'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .32 0 0 0 0 .15 0 0 0 .10 0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)'/%3E%3C/svg%3E");
 min-height:100vh;display:flex;flex-direction:column}
body::before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(120,80,30,.22) 100%);z-index:0}
.hand,h1,h2,h3,.brand span,.badge b,.stop h3{font-family:'Segoe Print','Bradley Hand','Chalkboard SE','Comic Sans MS',cursive;letter-spacing:.01em}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--ortext);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:-999px;background:#fff;padding:.5rem 1rem;z-index:99}.skip:focus{left:8px;top:8px}
.ico{width:1.4em;height:1.4em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;filter:url(#rough);vertical-align:-.3em;flex:none}
.ico.big{width:2rem;height:2rem;color:var(--or)}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem max(1rem,env(safe-area-inset-left));background:rgba(246,236,214,.94);backdrop-filter:blur(6px);border-bottom:2px dashed var(--ln)}
.brand{display:flex;align-items:center;gap:.4rem;text-decoration:none;color:var(--ink);font-size:1.3rem;font-weight:700}
.tabs{display:flex;gap:.25rem}
.tabs button{background:none;border:0;padding:.5rem .7rem;border-radius:999px;cursor:pointer;font-size:.95rem}
.tabs button:hover,.tabs button.on{background:var(--orlt)}
main{position:relative;z-index:1;flex:1;width:100%;max-width:880px;margin:0 auto;padding:1rem 1rem 2rem}
main:focus{outline:none}
h1{font-size:clamp(1.7rem,5vw,2.5rem);line-height:1.15;margin:.4rem 0}
h2{font-size:1.35rem;margin:1.2rem 0 .5rem}
.lede{color:var(--mut);max-width:60ch}
.card{background:var(--card);border:2px solid var(--ln);border-radius:var(--r);padding:1rem 1.1rem;margin:.9rem 0;box-shadow:3px 4px 0 rgba(120,80,30,.14);position:relative}
.card.fold::after{content:"";position:absolute;top:-2px;right:-2px;width:26px;height:26px;background:linear-gradient(225deg,var(--parch) 50%,#d9c49a 50%);border-radius:0 var(--r) 0 8px}
.row{display:flex;flex-wrap:wrap;gap:.7rem}.row>*{flex:1 1 200px}
label,.lab{display:block;font-weight:700;font-size:.95rem;margin-bottom:.25rem}
.hint{color:var(--mut);font-size:.85rem;font-weight:400}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],select{width:100%;padding:.6rem .7rem;border:2px solid var(--ln);border-radius:10px;background:#fffaf0;min-height:44px}
input[type=range]{width:100%;accent-color:var(--or);min-height:32px}
.chips{display:flex;flex-wrap:wrap;gap:.45rem}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;width:100%;height:100%;cursor:pointer;margin:0}
.chip span{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .8rem;border:2px solid var(--ln);border-radius:999px;background:#fffaf0;min-height:44px;transition:transform .15s,background .15s}
.chip input:checked+span{background:var(--or);border-color:#8a2f08;color:#fff;transform:rotate(-1.2deg)}
.chip input:focus-visible+span{outline:3px solid var(--ortext);outline-offset:2px}
.step{display:inline-flex;align-items:center;border:2px solid var(--ln);border-radius:10px;background:#fffaf0}
.step button{width:44px;height:44px;border:0;background:none;font-size:1.4rem;cursor:pointer}
.step output{min-width:2ch;text-align:center;font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.3rem;border-radius:12px;border:2px solid #7c2a06;background:var(--or);color:#fff;font-weight:700;cursor:pointer;min-height:48px;box-shadow:0 3px 0 #7c2a06;transition:transform .12s,box-shadow .12s;text-decoration:none}
.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(3px);box-shadow:none}
.btn.ghost{background:#fffaf0;color:var(--ink);border-color:var(--ln);box-shadow:0 3px 0 var(--ln)}
.btn.small{padding:.4rem .8rem;min-height:40px;font-size:.9rem;box-shadow:0 2px 0 #7c2a06}.btn.ghost.small{box-shadow:0 2px 0 var(--ln)}
.btn[disabled]{opacity:.6;cursor:wait}
.hero{padding:.5rem 0 0}
.hero .tag{display:inline-block;background:var(--orlt);border:2px dashed var(--or);border-radius:8px;padding:.1rem .6rem;transform:rotate(-1.5deg);font-size:.85rem}
.sum{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}
.pill{display:inline-flex;gap:.35rem;align-items:center;padding:.3rem .7rem;border:2px solid var(--ln);border-radius:999px;background:#fffaf0;font-size:.92rem}
.notice{border-left:5px solid var(--or);background:#fdebc8;padding:.55rem .8rem;border-radius:0 10px 10px 0;margin:.5rem 0;font-size:.95rem}
.err{border-left-color:var(--bad);background:#fbdcd8}
#map{height:min(55vh,420px);border:3px solid #7c5a2b;border-radius:var(--r);box-shadow:0 0 0 3px var(--parch),0 0 0 5px var(--ln),4px 6px 0 rgba(120,80,30,.2);margin:1rem 0;position:relative;z-index:0}
.leaflet-tile-pane{filter:sepia(.7) saturate(.9) contrast(.92) brightness(1.04) hue-rotate(-8deg)}
.leaflet-container{background:#ead9b0;font:inherit}
.pin{display:grid;place-items:center;width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--or);border:2px solid #5b1d03;color:#fff;font:700 14px/1 'Segoe Print','Bradley Hand',cursive;box-shadow:2px 3px 0 rgba(0,0,0,.25)}
.pin span{transform:rotate(45deg)}.pin.done{background:var(--ok)}.pin.start{background:#2b2118;border-radius:50%;transform:none}.pin.start span{transform:none}
.progress{height:12px;border:2px solid var(--ln);border-radius:99px;background:#fffaf0;overflow:hidden}.progress i{display:block;height:100%;background:repeating-linear-gradient(45deg,var(--or),var(--or) 8px,#e0561f 8px,#e0561f 16px);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.stop{display:grid;grid-template-columns:auto 1fr;gap:.2rem .8rem;animation:rise .45s both}
.stop:nth-child(2){animation-delay:.07s}.stop:nth-child(3){animation-delay:.14s}.stop:nth-child(4){animation-delay:.21s}.stop:nth-child(5){animation-delay:.28s}
@keyframes rise{from{opacity:0;transform:translateY(14px) rotate(.4deg)}to{opacity:1;transform:none}}
.num{width:42px;height:42px;border-radius:50%;background:var(--or);color:#fff;display:grid;place-items:center;font:700 1.15rem 'Segoe Print','Bradley Hand',cursive;border:2px solid #5b1d03;position:relative}
.stop.done .num{background:var(--ok)}.stop.done h3{text-decoration:line-through;text-decoration-color:rgba(47,107,58,.6)}
.stop h3{margin:0;font-size:1.2rem;line-height:1.25}
.meta{display:flex;flex-wrap:wrap;gap:.3rem .8rem;color:var(--mut);font-size:.88rem;margin:.2rem 0}
.meta .ico{width:1.1em;height:1.1em}
.why{font-style:italic;margin:.3rem 0}
.drive{grid-column:1/-1;display:flex;align-items:center;gap:.5rem;color:var(--mut);font-size:.88rem;margin:-.2rem 0 .4rem 1.2rem;border-left:3px dotted var(--or);padding-left:1rem;min-height:30px}
.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem;grid-column:1/-1}
.warn{display:flex;gap:.5rem;align-items:flex-start;padding:.5rem .7rem;border-radius:10px;background:#fdebc8;border:1.5px solid #e0b25a;margin:.4rem 0;font-size:.9rem}
.warn.res{background:#fde0d4;border-color:#d9744d}.warn a{color:var(--ortext);font-weight:700}
.warn .ico{color:var(--ortext)}
details{margin-top:.5rem;grid-column:1/-1}summary{cursor:pointer;font-weight:700;padding:.35rem 0;min-height:36px}
.spons{border:2px dashed var(--or);background:#fff3e3}.spons .lab-s{background:var(--or);color:#fff;padding:0 .5rem;border-radius:6px;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem}
.badge{text-align:center;padding:.8rem .5rem;border:2px solid var(--ln);border-radius:14px;background:#fffaf0}
.badge .ico{width:2.6rem;height:2.6rem;color:var(--or)}.badge.locked{filter:grayscale(1);opacity:.55}
.badge b{display:block;font-size:1rem}.badge small{color:var(--mut)}
.badge.new{animation:pop .7s}@keyframes pop{0%{transform:scale(.4) rotate(-12deg)}60%{transform:scale(1.15) rotate(4deg)}100%{transform:none}}
#toasts{position:fixed;left:0;right:0;bottom:max(1rem,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:.5rem;z-index:60;pointer-events:none;padding:0 1rem}
.toast{background:var(--ink);color:var(--parch);padding:.7rem 1.1rem;border-radius:14px;box-shadow:0 6px 20px rgba(0,0,0,.35);animation:rise .4s both;max-width:420px;pointer-events:auto}
.toast.badge-t{background:var(--or);color:#fff;border:2px solid #5b1d03}
.list{list-style:none;padding:0;margin:0}.list li{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.6rem 0;border-bottom:1px dashed var(--ln)}
.loading{text-align:center;padding:2rem 1rem}
.spin{width:56px;height:56px;margin:0 auto 1rem;animation:spin 2.4s linear infinite;color:var(--or)}.spin.ico{width:56px;height:56px}
@keyframes spin{to{transform:rotate(360deg)}}
.foot{position:relative;z-index:1;text-align:center;color:var(--mut);font-size:.8rem;padding:1rem 1.2rem 2rem;max-width:760px;margin:0 auto}
a{color:var(--ortext)}
table.mini{border-collapse:collapse;width:100%;font-size:.92rem}table.mini td,table.mini th{border-bottom:1px dashed var(--ln);padding:.4rem;text-align:left;vertical-align:top}
.two{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:560px){.tabs button{padding:.5rem .5rem;font-size:.85rem}.brand span{font-size:1.1rem}.two{grid-template-columns:1fr}body{font-size:16px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
