/* One narrative beat per viewport. Native scrolling, no wheel interception. */
html{scroll-snap-type:y mandatory;scroll-padding:0}
main{max-width:none;padding:0}
.screen{width:100%;max-width:none;margin:0;min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always;scroll-margin:0;padding:clamp(24px,4svh,48px) max(5%,calc((100% - 1100px)/2))}
.map-screen{height:100svh;min-height:520px;display:flex;flex-direction:column;gap:12px}
.intro{width:100%;max-width:none;flex:none;padding:0;gap:55px;align-items:center}
h1{font-size:clamp(90px,17svh,150px);line-height:1;margin-bottom:12px}
.brand p{font-size:clamp(22px,3.5svh,29px)}
.message{padding-top:0}.thesis{font-size:clamp(24px,4svh,35px)}
.rewards{font-size:clamp(20px,3svh,25px);margin-top:16px}
.field-section{width:100%;max-width:none;min-height:0;flex:1;display:flex;flex-direction:column;scroll-margin:0}
#field{height:auto;min-height:0;flex:1;margin:0}
.map-caption{flex:none;margin:8px 0 0;font-size:16px}
.rewards-section{height:100svh;min-height:650px;grid-template-columns:minmax(0,1.4fr) minmax(200px,.6fr);grid-template-areas:"intro timer" "coins coins" "conviction summary";grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;align-items:start;gap:clamp(24px,4svh,36px) 55px}
.rewards-section>.conviction{grid-area:conviction;justify-self:start;max-width:620px;text-align:left;margin:0;font-size:clamp(18px,2.8svh,22px);line-height:1.4}
.rewards-section .section-intro{grid-area:intro;text-align:left}
.section-intro h2{font-size:clamp(38px,6.3svh,58px);margin-bottom:18px}
.section-intro .reward-explainer{font-size:21px}
.distribution-timer time{font-size:clamp(44px,7svh,62px)}
.rewards-section .distribution-timer{grid-area:timer;justify-self:end;align-self:start;margin:8px 0 0}
.reward-coins{grid-area:coins;align-self:center;margin:0;gap:35px}
.reward-coin>svg{width:clamp(76px,13svh,118px);height:clamp(76px,13svh,118px)}
.reward-coin strong{font-size:clamp(32px,5.8svh,50px)}
.reward-summary{grid-area:summary;align-self:end;justify-self:end;width:auto;border:0;padding:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:17px}
.holding-section{align-content:center;align-items:center;gap:70px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.holding-art{max-width:500px;padding-top:65px;margin:0}
.holding-copy{padding-top:0}
.history-section{display:flex;flex-direction:column;justify-content:center;gap:clamp(22px,4svh,42px)}
.history-heading{margin:0}.history-heading h2{margin:0}
.distribution-scroll{height:min(260px,48svh);flex:none}
.history-section footer{width:100%;max-width:none;margin:0;padding:0;border:0;justify-content:flex-end}
.footer-brand{font-size:34px;color:#555}
@media(max-width:760px){
 .screen{padding:24px 22px}
 .map-screen{gap:12px}
 .intro{display:grid;grid-template-columns:1fr;gap:20px}
 .brand h1{font-size:clamp(76px,12svh,110px);margin-bottom:9px}
 .brand p{font-size:22px;padding-left:2px}
 .message{margin:0;padding:0}.thesis{font-size:clamp(22px,3.3svh,28px);line-height:1.15}
 .rewards{font-size:20px;margin-top:13px}
 .map-caption{font-size:13px;line-height:1.3;margin-top:8px}
 .rewards-section{min-height:640px;grid-template-columns:1fr;grid-template-areas:"intro" "timer" "coins" "summary" "conviction";grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:clamp(16px,2.7svh,24px)}
 .rewards-section>.conviction{font-size:18px;line-height:1.35}
 .section-intro h2{font-size:clamp(32px,5svh,40px);margin-bottom:12px}
 .section-intro .reward-explainer{font-size:18px;line-height:1.4}
 .distribution-timer{font-size:18px;gap:5px}.distribution-timer time{font-size:42px}
 .rewards-section .distribution-timer{justify-self:center;margin:0}
 .reward-coins{gap:8px}.reward-coin>svg{width:68px;height:68px}
 .currency{font-size:15px;margin:8px 0 4px}.reward-coin strong{font-size:29px}.metric-note{font-size:12px}
 .reward-summary{justify-self:center;flex-direction:row;align-items:center;font-size:14px;gap:18px}.reward-summary strong{font-size:18px}
 .holding-section{display:flex;flex-direction:column;justify-content:center;gap:25px}
 .holding-art{max-width:340px;padding-top:65px;flex:none}
 .holder-meme{max-height:29svh;object-fit:contain}
 .thought-bubble{font-size:16px;top:0;padding:12px}
 .holding-copy{max-width:450px;flex:none}
 .holding-copy h2{font-size:36px;margin-bottom:12px}.holding-copy>p{font-size:19px;margin-bottom:18px}
 .search-controls input{font-size:18px;padding:10px 3px}.search-controls button{font-size:19px;padding:8px 15px}
 .history-section{gap:28px}.history-heading h2{font-size:36px}
 .distribution-scroll{height:min(300px,57svh)}
 .footer-brand{font-size:30px}
}
@media(max-width:760px) and (max-height:700px){
 .screen{padding-top:18px;padding-bottom:18px}
 .intro{gap:14px}.brand h1{font-size:76px}.brand p{font-size:20px}.thesis{font-size:22px}.rewards{font-size:18px;margin-top:10px}
 .rewards-section{gap:15px}.rewards-section>.conviction{font-size:17px}.section-intro h2{font-size:31px}.section-intro .reward-explainer{font-size:17px}
 .reward-coin>svg{width:58px;height:58px}.reward-coin strong{font-size:26px}
 .holding-section{gap:18px}.holding-art{max-width:300px}.holder-meme{max-height:26svh}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;scroll-snap-type:y proximity}}
/* A found wallet shares the same phone-sized page instead of pushing its rewards off-screen. */
@media(max-width:760px){
 .holding-section:has(.wallet-result:not([hidden])){gap:16px}
 .holding-section:has(.wallet-result:not([hidden])) .holding-art{max-width:270px;padding-top:56px}
 .holding-section:has(.wallet-result:not([hidden])) .holder-meme{max-height:18svh}
 .holding-section:has(.wallet-result:not([hidden])) .thought-bubble{font-size:14px;padding:10px;max-width:84%}
 .holding-section:has(.wallet-result:not([hidden])) .holding-copy h2{font-size:32px;margin-bottom:8px}
 .holding-section:has(.wallet-result:not([hidden])) .holding-copy>p{font-size:17px;margin-bottom:12px}
 .wallet-result{margin-top:16px;padding-top:12px}
 .result-wallet svg{width:38px;height:38px}.result-balance{margin:12px 0;font-size:18px}.result-balance strong{font-size:25px}
 .wallet-result .received-label{margin:6px 0}.result-rewards{margin-top:8px;gap:8px}
}
/* Explicit empty states; empty panels never capture scrolling. */
#field .empty-message{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;margin:0;pointer-events:none}
.empty-message{font:clamp(23px,3vw,32px)/1.4 Paint,Hand,cursive;color:#555}
#field.is-empty #bubbles{pointer-events:none;touch-action:pan-y}
.distribution-scroll{position:relative;min-height:0;overflow-y:auto;overscroll-behavior-y:auto;scrollbar-gutter:stable}
.distribution-scroll.is-empty{display:flex;align-items:center;justify-content:center;overflow:visible;overscroll-behavior:auto;padding:0;text-align:center}
.distribution-scroll.is-empty .empty-message{max-width:90%;margin:0}
.distribution-scroll.is-empty #distribution-history{display:none}
.history-section footer{align-items:center;flex-wrap:wrap;gap:18px}
.history-section footer p{font-size:19px;color:#555}
@media(max-width:760px){.history-section footer{gap:12px}.history-section footer p{font-size:17px}.empty-message{font-size:23px}}
/* Plain clickable contract-address text, never an input or a boxed card. */
.ca-copy{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;width:fit-content;padding:5px 0;border:0;border-radius:0;background:none;color:#111;font:14px/1.4 Paint,Hand,cursive;text-align:left;cursor:pointer;transform-origin:left center;transition:transform .12s ease,opacity .12s ease}
.brand .ca-copy{margin-top:10px;margin-left:5px}
.ca-label{flex:none;font-size:14px}
.ca-address{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:12px/1.5 monospace}
.ca-copy:disabled{cursor:default;opacity:1}
.ca-copy:disabled .ca-address{font:14px/1.4 Paint,Hand,cursive;color:#666}
.ca-copy:not(:disabled):hover{opacity:.7}
.ca-copy:not(:disabled):active{transform:translateY(1px) scale(.975);opacity:.5}
.ca-copy.is-copied{opacity:.55}
.ca-copy:focus-visible{outline:1px dashed #111;outline-offset:4px}
.history-section footer{justify-content:space-between;gap:22px}
.history-section footer p{font-size:25px;color:#111;margin-left:auto}
@media(max-width:760px){
 .brand .ca-copy{margin-top:5px;margin-left:2px}
 .ca-address{font-size:11px}
 .history-section footer{gap:20px;align-items:flex-end}
 .history-section footer p{font-size:22px}
}
@media(prefers-reduced-motion:reduce){.ca-copy{transition:none}.ca-copy:not(:disabled):active{transform:none}}
/* Optional X link shares the existing footer line without adding a boxed control. */
.footer-signoff{display:flex;align-items:center;gap:14px;margin-left:auto}
.history-section footer .footer-signoff p{margin:0}
.footer-x{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;color:#111;text-decoration:none;transition:opacity .15s,transform .15s}
.footer-x[hidden]{display:none}
.footer-x svg{width:23px;height:23px}
.footer-x:hover{opacity:.65}
.footer-x:active{transform:scale(.93)}
.footer-x:focus-visible{outline:1px dashed #111;outline-offset:3px}
@media(max-width:760px){.footer-signoff{gap:10px}}
@media(prefers-reduced-motion:reduce){.footer-x{transition:none}}
