/* ROCK SOLID — play layer: floating contact widget, Tag it, yard walk, Crush! fracture */

/* ---------- floating widget ---------- */
#hud{position:fixed;right:22px;bottom:22px;z-index:900;display:flex;flex-direction:column;align-items:flex-end;gap:12px;pointer-events:none;font-family:var(--body,inherit)}
#hud .orb,#hud.open .hud-panel,#hud.toasting .hud-toast{pointer-events:auto}
.orb{position:relative;width:76px;height:76px;border-radius:50%;border:2px solid var(--goldhi);background:var(--gold);color:var(--ink0);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 14px 34px rgba(0,0,0,.5);animation:orbFloat 4.5s ease-in-out infinite;transition:background .2s,transform .2s}
.orb:hover{background:var(--goldhi)}
.orb svg{width:26px;height:26px;fill:var(--ink0)}
.orb em{font-style:normal;font-family:var(--disp);font-weight:800;font-size:15px;letter-spacing:.04em;text-transform:uppercase;line-height:1}
.orb .ring{position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--goldhi);animation:orbPulse 2.6s ease-out infinite;pointer-events:none}
#hud.open .orb .ring{display:none}
.badge-n{position:absolute;top:-6px;right:-6px;min-width:30px;height:30px;padding:0 8px;border-radius:15px;background:var(--ivory);color:var(--ink0);border:2px solid var(--ink0);font-family:var(--disp);font-weight:800;font-size:17px;line-height:26px;text-align:center;display:none}
#hud.has-tags .badge-n{display:block}
.orb.bump{animation:orbBump .5s var(--easeb,ease)}
@keyframes orbFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes orbPulse{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.6);opacity:0}}
@keyframes orbBump{0%{transform:scale(1)}35%{transform:scale(1.22)}100%{transform:scale(1)}}

.hud-panel{width:min(380px,calc(100vw - 32px));max-height:calc(100vh - 140px);overflow:auto;background:rgba(19,16,9,.97);border:1px solid var(--line-strong);border-top:6px solid var(--gold);border-radius:var(--r);box-shadow:0 30px 70px rgba(0,0,0,.6);padding:20px 20px 18px;color:var(--ivory);opacity:0;transform:translateY(14px) scale(.98);transform-origin:bottom right;visibility:hidden;transition:opacity .22s,transform .22s,visibility 0s .22s}
#hud.open .hud-panel{opacity:1;transform:none;visibility:visible;transition:opacity .22s,transform .22s}
.hud-head b{display:block;font-family:var(--disp);font-weight:800;font-size:1.7rem;text-transform:uppercase;line-height:1}
.hud-head span{display:block;font-size:15px;color:var(--ivory);opacity:.85;margin-top:4px}
.hud-est{display:flex;justify-content:space-between;align-items:center;margin:16px 0 12px;background:var(--gold);color:var(--ink0);text-decoration:none;font-family:var(--disp);font-weight:800;font-size:1.25rem;letter-spacing:.04em;text-transform:uppercase;padding:14px 18px;border-radius:var(--r)}
.hud-est:hover{background:var(--goldhi)}
.hud-est i{font-style:normal}
.hud-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.hud-row a{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ivory);text-decoration:none;font-family:var(--disp);font-weight:700;font-size:15px;letter-spacing:.04em;text-transform:uppercase}
.hud-row a:hover{border-color:var(--goldhi);color:var(--goldhi)}
.hud-row svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.hud-row a:first-child svg,.hud-row a:nth-child(2) svg{fill:currentColor;stroke:none}
.hud-row a:nth-child(4) svg{fill:currentColor;stroke:none}
.hud-sub{display:flex;justify-content:space-between;align-items:baseline;margin:20px 0 10px;border-top:1px solid var(--line);padding-top:16px}
.hud-sub b{font-family:var(--disp);font-weight:800;font-size:1.15rem;letter-spacing:.04em;text-transform:uppercase}
.hud-sub span{font-size:15px;color:var(--goldhi)}
#hudList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
#hudList li{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--ink2);border-left:4px solid var(--gold);border-radius:var(--r);padding:8px 8px 8px 12px}
#hudList li span b{display:block;font-weight:600;font-size:16px;line-height:1.2}
#hudList li span i{display:block;font-style:normal;font-size:15px;opacity:.75}
#hudList li.empty{display:block;border-left-color:var(--line-strong);font-size:16px;line-height:1.4;padding:12px 14px}
#hudList button{flex:0 0 auto;width:36px;height:36px;border-radius:50%;background:none;border:1px solid var(--line-strong);color:var(--ivory);font-size:22px;line-height:1;cursor:pointer}
#hudList button:hover{border-color:var(--goldhi);color:var(--goldhi)}
.hud-send{display:block;margin-top:10px;text-align:center;border:2px solid var(--gold);color:var(--goldhi);text-decoration:none;font-family:var(--disp);font-weight:800;font-size:1.1rem;letter-spacing:.04em;text-transform:uppercase;padding:12px;border-radius:var(--r)}
.hud-send:hover{background:var(--gold);color:var(--ink0)}
.hud-send[hidden]{display:none}
.hud-walk ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.hud-walk li a{display:block;text-align:center;padding:9px 2px;border:1px dashed var(--line-strong);border-radius:var(--r);color:var(--ivory);opacity:.7;text-decoration:none;font-size:15px;line-height:1.15}
.hud-walk li.on a{border:1px solid var(--gold);background:rgba(200,146,42,.16);opacity:1}
.hud-walk li.on a::before{content:'\2713\00a0';color:var(--goldhi);font-weight:700}
.hud-walk li.here a{box-shadow:0 0 0 2px var(--goldhi) inset}
.hud-walk li a:hover{opacity:1;border-color:var(--goldhi)}

.hud-toast{max-width:min(340px,calc(100vw - 120px));background:rgba(19,16,9,.97);border:1px solid var(--line-strong);border-left:6px solid var(--gold);border-radius:var(--r);padding:14px 16px;color:var(--ivory);font-size:16px;line-height:1.4;box-shadow:0 20px 50px rgba(0,0,0,.55);opacity:0;transform:translateY(10px);visibility:hidden;transition:opacity .25s,transform .25s,visibility 0s .25s}
#hud.toasting .hud-toast{opacity:1;transform:none;visibility:visible;transition:opacity .25s,transform .25s}
#hud.open .hud-toast{display:none}
.hud-toast a{color:var(--goldhi);font-weight:700;white-space:nowrap}
.hud-toast b{color:var(--ivory)}

/* ---------- Tag it ---------- */
.taggable:not(.slab){position:relative}
.tagwrap{position:relative}
.tagwrap>.gal{display:block;width:100%}
.tagbtn{position:absolute;top:12px;right:12px;z-index:6;display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:0 14px 0 11px;border-radius:21px;background:rgba(19,16,9,.88);border:1px solid var(--goldhi);color:var(--ivory);font-family:var(--disp);font-weight:700;font-size:16px;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s,transform .2s}
.tagbtn svg{width:18px;height:18px;fill:var(--goldhi)}
.tagbtn:hover{background:var(--ink0);transform:translateY(-1px)}
.tagbtn.on{background:var(--gold);color:var(--ink0);border-color:var(--gold)}
.tagbtn.on svg{fill:var(--ink0)}
.fin .tagbtn{top:18px;right:18px}
.split-img .tagbtn,.crush-photo .tagbtn{top:16px;right:16px}
.tagwrap>.gal.rv:not(.in)~.tagbtn{opacity:0}
.tag-edge{margin:22px auto 0;display:flex;align-items:center;justify-content:center;min-height:54px;padding:0 26px;border-radius:var(--r);border:2px solid var(--gold);background:none;color:var(--goldhi);font-family:var(--disp);font-weight:800;font-size:1.2rem;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.tag-edge:hover{background:rgba(200,146,42,.14)}
.tag-edge.on{background:var(--gold);color:var(--ink0)}
.flytag{position:fixed;left:0;top:0;z-index:950;width:36px;height:36px;border-radius:50%;background:var(--gold);display:flex;align-items:center;justify-content:center;pointer-events:none;box-shadow:0 8px 20px rgba(0,0,0,.5)}
.flytag svg{width:20px;height:20px;fill:var(--ink0)}
.flytag.go{transition:transform .6s cubic-bezier(.5,-.2,.6,1)}

/* contact form: the list rides along */
.taglist-box{margin:0 0 22px;border:1px solid var(--line-strong);border-left:6px solid var(--gold);border-radius:var(--r);background:var(--ink2);padding:18px 20px}
.taglist-box[hidden]{display:none}
.taglist-box h3{font-family:var(--disp);font-weight:800;font-size:1.35rem;text-transform:uppercase;margin:0;color:var(--ivory)}
.taglist-box p{margin:4px 0 12px;font-size:16px;color:var(--ivory)}
#taglistChips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
#taglistChips li{display:inline-flex;align-items:center;gap:6px;background:rgba(200,146,42,.16);border:1px solid var(--gold);border-radius:20px;padding:4px 4px 4px 14px;font-size:16px;color:var(--ivory)}
#taglistChips button{width:30px;height:30px;border-radius:50%;border:none;background:none;color:var(--ivory);font-size:20px;line-height:1;cursor:pointer}
#taglistChips button:hover{color:var(--goldhi)}

/* ---------- Crush! fracture ---------- */
.crush-band.crushable{cursor:pointer}
.crushfx{position:absolute;inset:0;width:100%;height:100%;z-index:9;pointer-events:none}
.crush-band.crushing .crush-in,.crush-band.crushing .crush-bg{opacity:0}
#pagewipe{position:fixed;inset:0;z-index:3100;background:var(--ink0);animation:wipein .42s ease forwards}
@keyframes wipein{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}

@media(max-width:700px){
  #hud{right:14px;bottom:14px}
  .orb{width:66px;height:66px}
  .orb svg{width:22px;height:22px}
  .hud-panel{max-height:calc(100vh - 120px)}
  .hud-row a{font-size:15px;padding:10px 2px}
  .tagbtn{top:10px;right:10px;min-height:40px}
}
@media print{#hud,.tagbtn,.tag-edge{display:none}}
@media(prefers-reduced-motion:reduce){
  .orb,.orb .ring,.orb.bump{animation:none}
  .hud-panel,.hud-toast,.tagbtn{transition:none}
}
.slab .tagbtn{right:auto;left:12px}

/* ============ fuller pass: thumbnails, chips, picks band, stamps, orb ring ============ */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* orb ring = yard walk progress */
.walkring{position:absolute;inset:-9px;width:calc(100% + 18px);height:calc(100% + 18px);transform:rotate(-90deg);pointer-events:none;fill:none}
.walkring circle{stroke:rgba(19,16,9,.55);stroke-width:4}
.walkring .done{stroke:var(--ivory);stroke-width:4;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.2s var(--ease)}

/* widget list thumbnails */
#hudList li{padding-left:8px}
#hudList li>span{flex:1;min-width:0}
#hudList .th{flex:0 0 auto;width:52px;height:52px;border-radius:3px;object-fit:cover;display:block}
.th-none{display:flex !important;align-items:center;justify-content:center;background:var(--ink3)}
.th-none svg{width:24px;height:24px;fill:var(--goldhi)}

/* stone chips */
.stonechip{position:fixed;z-index:960;pointer-events:none;clip-path:polygon(20% 0,100% 15%,85% 100%,0 75%);display:block}

/* ---------- Your Picks band (every page) ---------- */
.picks-band{position:relative;padding:clamp(70px,9vw,120px) 0;background:linear-gradient(180deg,var(--ink1),var(--ink0));border-top:1px solid var(--line-strong);color:var(--ivory);overflow:hidden}
.picks-band::before{content:'';position:absolute;left:0;right:0;top:0;height:6px;background:var(--gold)}
.pb-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(28px,5vw,64px);align-items:start}
.picks-band .eyebrow{font-size:max(15px,1rem);letter-spacing:.06em;color:var(--goldhi)}
.pb-h{font-family:var(--disp);font-weight:800;text-transform:uppercase;font-size:clamp(2.8rem,6vw,5rem);line-height:.92;margin:.12em 0 .2em;color:var(--ivory)}
.pb-p{font-size:clamp(1.1rem,1.4vw,1.3rem);line-height:1.5;max-width:40em;margin:0 0 26px;color:var(--ivory)}
.pb-cards{list-style:none;margin:0 0 28px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.pb-cards li{position:relative;background:var(--ink2);border:1px solid var(--line-strong);border-radius:var(--r);overflow:hidden;animation:pbIn .5s var(--easeb) both}
.pb-th{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.pb-cards .th-none{aspect-ratio:4/3;width:100%}
.pb-cards .th-none svg{width:44px;height:44px}
.pb-cards div{padding:12px 14px 14px;border-top:3px solid var(--gold)}
.pb-cards b{display:block;font-size:17px;font-weight:600;line-height:1.25}
.pb-cards i{display:block;font-style:normal;font-size:15px;opacity:.8;margin-top:2px}
.pb-cards button{position:absolute;top:10px;right:10px;width:40px;height:40px;border-radius:50%;background:rgba(19,16,9,.88);border:1px solid var(--goldhi);color:var(--ivory);font-size:24px;line-height:1;cursor:pointer}
.pb-cards button:hover{background:var(--gold);color:var(--ink0)}
@keyframes pbIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.pb-start{list-style:none;margin:0 0 28px;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.pb-start a{position:relative;display:block;border-radius:var(--r);overflow:hidden;border:1px solid var(--line-strong);text-decoration:none}
.pb-start img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .6s var(--ease)}
.pb-start a:hover img{transform:scale(1.06)}
.pb-start span{position:absolute;left:8px;bottom:8px;right:8px;background:rgba(19,16,9,.9);border-left:4px solid var(--gold);padding:6px 10px;font-size:15px;font-weight:600;color:var(--ivory);line-height:1.2}
.pb-ctas{display:flex;flex-wrap:wrap;gap:12px}
.pb-ctas .btn{font-size:max(15px,1rem);letter-spacing:.06em;padding:16px 24px}
.picks-band .btn-ghost{color:var(--ivory);border-color:rgba(237,228,210,.5)}

.pb-walk{background:var(--ink2);border:1px solid var(--line-strong);border-radius:var(--r);padding:26px 24px}
.pb-count{display:flex;align-items:baseline;gap:10px;margin:6px 0 16px}
.pb-count b{font-family:var(--disp);font-weight:800;font-size:4.2rem;line-height:.9;color:var(--goldhi)}
.pb-count span{font-family:var(--disp);font-weight:700;font-size:1.4rem;text-transform:uppercase}
.pb-walk ol{list-style:none;margin:0 0 18px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pb-walk li a{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px dashed var(--line-strong);border-radius:var(--r);color:var(--ivory);text-decoration:none;font-size:16px;font-weight:500;opacity:.8}
.pb-walk li a:hover{opacity:1;border-color:var(--goldhi)}
.pb-walk li i{flex:0 0 auto;width:26px;height:26px;border-radius:50%;border:2px dashed var(--line-strong)}
.pb-walk li.on a{border-style:solid;border-color:var(--gold);opacity:1;background:rgba(200,146,42,.12)}
.pb-walk li.on i{border:2px solid var(--stamp);background:var(--stamp);position:relative;transform:rotate(-12deg)}
.pb-walk li.on i::after{content:'';position:absolute;left:7px;top:3px;width:6px;height:11px;border:solid var(--ivory);border-width:0 3px 3px 0;transform:rotate(45deg)}
.pb-walk li.here a{box-shadow:0 0 0 2px var(--goldhi) inset}
.pb-next{display:block;text-align:center;padding:14px;border-radius:var(--r);background:var(--gold);color:var(--ink0);text-decoration:none;font-family:var(--disp);font-weight:800;font-size:1.2rem;letter-spacing:.04em;text-transform:uppercase}
.pb-next:hover{background:var(--goldhi)}
.pb-done{margin:0;font-size:16px;line-height:1.45}

/* ---------- the stamp ---------- */
.stamp-pop{position:fixed;left:50%;top:42%;z-index:1990;pointer-events:none;transform:translate(-50%,-50%) scale(2.4) rotate(-22deg);opacity:0}
.stamp-pop.on{animation:stampIn .45s cubic-bezier(.5,0,.75,0) forwards}
.stamp-pop.off{animation:stampOut .55s ease forwards}
.stamp-in{display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(300px,72vw);aspect-ratio:1;border-radius:50%;border:6px solid var(--stamp);outline:2px solid var(--stamp);outline-offset:6px;background:rgba(19,16,9,.93);color:var(--ivory);text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.stamp-in span{font-family:var(--disp);font-weight:800;font-size:1.25rem;letter-spacing:.06em;text-transform:uppercase;color:#E8735A}
.stamp-in b{font-family:var(--disp);font-weight:800;font-size:clamp(2.6rem,9vw,3.6rem);line-height:.95;text-transform:uppercase;margin:6px 10px}
.stamp-in em{font-style:normal;font-family:var(--disp);font-weight:700;font-size:1.3rem;letter-spacing:.04em;text-transform:uppercase;color:var(--goldhi)}
@keyframes stampIn{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4) rotate(-22deg)}80%{opacity:1;transform:translate(-50%,-50%) scale(.94) rotate(-8deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-8deg)}}
@keyframes stampOut{from{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-8deg)}to{opacity:0;transform:translate(-50%,-50%) scale(.9) rotate(-8deg)}}

@media(max-width:900px){
  .pb-grid{grid-template-columns:1fr}
  .pb-start{grid-template-columns:repeat(2,1fr)}
  .pb-cards{grid-template-columns:repeat(2,1fr);gap:10px}
  .pb-cards b{font-size:16px}
  .pb-ctas .btn{flex:1 1 100%;text-align:center;justify-content:center}
}
@media(prefers-reduced-motion:reduce){
  .stamp-pop.on{animation:none;opacity:1;transform:translate(-50%,-50%) rotate(-8deg)}
  .stamp-pop.off{animation:none;opacity:0}
  .pb-cards li{animation:none}
  .walkring .done{transition:none}
}
@media print{.picks-band,.stamp-pop{display:none}}
.orb .walkring{position:absolute;left:-9px;top:-9px;width:calc(100% + 18px);height:calc(100% + 18px);fill:none}
.pb-ctas{align-items:stretch}
.pb-ctas .btn{display:inline-flex;align-items:center;justify-content:center;margin:0;vertical-align:top}

/* ---------- contact bubble rules (Nov 2026): the nav carries the phone on desktop, so the bubble only
   appears there once a visitor has tagged something; on phones it stays, smaller ---------- */
@media(min-width:901px){
  #hud:not(.has-tags) .orb{display:none}
  #hud .orb{width:68px;height:68px}
}
@media(max-width:900px){
  #hud{right:12px;bottom:12px}
  #hud .orb{width:56px;height:56px;gap:0}
  #hud .orb em{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  #hud .orb svg{width:22px;height:22px}
  .badge-n{min-width:26px;height:26px;line-height:22px;font-size:15px;top:-7px;right:-7px}
}
.pb-emptyslot{display:flex;align-items:center;gap:20px;margin:0 0 28px;padding:28px 26px;border:2px dashed var(--line-strong);border-radius:var(--r);background:rgba(36,29,19,.55)}
.pb-emptyslot svg{flex:0 0 auto;width:44px;height:44px;fill:var(--goldhi)}
.pb-emptyslot b{display:block;font-family:var(--disp);font-weight:800;font-size:1.6rem;letter-spacing:.03em;text-transform:uppercase;color:var(--ivory);line-height:1.05}
.pb-emptyslot span{display:block;margin-top:6px;font-size:1.08rem;line-height:1.5;color:var(--ivory)}
.pb-emptyslot em{font-style:normal;font-weight:700;color:var(--goldhi)}
