/* Six entry stamps on each physical passport page; two facing pages on wide screens. */
.sheetback.passport-open{padding:12px;align-items:center}
.passport-open .sheet{width:100%;max-width:390px;height:min(540px,calc(100svh - 24px - var(--safe)));max-height:none;padding:0!important;overflow:hidden;border:1px solid #b49b63;border-radius:8px 14px 14px 8px;background:#234b40;box-shadow:-4px 0 0 #193e34,0 5px 0 #173b31,0 16px 40px #102f3540,inset 4px 0 0 #31594a}
.passport-open #sheetContent{height:100%}.passport-open .sheetclose{top:7px;right:7px;width:44px;height:44px;background:transparent;border:0;color:#e2c88f;box-shadow:none}
.passport-book{display:flex;flex-direction:column;height:100%;padding:10px 10px 7px 13px;color:#43634d}
.passport-cover{display:flex;align-items:center;gap:9px;padding:1px 40px 10px 3px;text-align:left;color:#e9d29b;flex-shrink:0}
.passport-emblem{display:grid;place-items:center;flex-shrink:0;width:28px;height:33px;border:1px solid #bdab78;border-radius:14px 14px 11px 11px;font-size:21px}
.passport-eyebrow{font-size:6px;font-weight:700;letter-spacing:1.7px;white-space:nowrap}.passport-cover #sheetTitle{font-family:Georgia,serif;font-size:19px;font-weight:400;letter-spacing:3px;color:#ead29a;margin:3px 0 0;line-height:1.1}.passport-cover-number{margin-left:auto;font-size:6px;letter-spacing:1.5px;color:#b8b890;writing-mode:vertical-rl;line-height:1;max-height:33px}
.passport-progress{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:5px;padding:7px 12px 8px;background:#1b3e35;border-radius:4px 4px 0 0;color:#c2c7a4;font-size:8px;text-align:left;flex-shrink:0}.passport-progress strong{font-size:12px;font-weight:700;color:#efd18b}.passport-progress strong span{font-size:9px;color:#c5c9a5;font-weight:400}.passport-progress-track{width:100%;height:2px;overflow:hidden;border-radius:2px;background:#8f9a6e33}.passport-progress-track i{display:block;height:100%;background:#d7b56c;border-radius:2px}
.passport-spread{display:grid;flex:1;min-height:0;position:relative;border-radius:2px 2px 4px 4px;border-bottom:4px double #c5b997;box-shadow:0 3px 0 #173e34;isolation:isolate;animation:passport-page-in .18s ease-out}.passport-single{grid-template-columns:minmax(0,1fr)}.passport-double{grid-template-columns:repeat(2,minmax(0,1fr))}.passport-double:after{content:'';position:absolute;top:0;bottom:0;left:50%;width:16px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,#6a5a3220 42%,#685a3740 49%,#fff9db80 55%,transparent);pointer-events:none}
.passport-leaf{display:flex;flex-direction:column;position:relative;min-width:0;min-height:0;padding:9px 13px 7px;background:repeating-radial-gradient(ellipse at 48% 56%,transparent 0 15px,#93a48d0c 15px 16px,transparent 16px 19px),linear-gradient(100deg,#eee5cb,#faf4e0 35%,#f1e8ce);overflow:hidden;border-radius:2px}.passport-leaf+.passport-leaf{border-left:1px solid #c9bb90}
.passport-page-heading,.passport-folio{display:flex;align-items:center;justify-content:space-between;gap:8px;font-family:Arial,sans-serif;font-size:6px;letter-spacing:1.3px;font-weight:600;color:#8b947d;flex-shrink:0}.passport-page-heading{padding-bottom:7px;border-bottom:1px solid #c2c2a55c}.passport-folio{padding-top:7px;border-top:1px solid #c2c2a55c;letter-spacing:1.1px;font-size:6px}
.passport-stamp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:8px 13px;flex:1;min-height:0;padding:10px 1px;align-items:stretch}
.postage-stamp{position:relative;display:flex;align-items:stretch;justify-content:center;width:100%;min-width:0;min-height:44px;padding:4px;border:0;border-radius:1px;background:radial-gradient(circle at 3px 3px,transparent 2.6px,#faf5df 2.9px) -3px -3px/6px 6px;color:var(--stamp-ink);transform:rotate(var(--stamp-tilt));box-shadow:1px 1px 1px #93866820;text-align:center;isolation:isolate;transition:transform .12s}
.postage-frame{display:flex;flex-direction:column;align-items:center;position:relative;min-width:0;min-height:0;width:100%;overflow:hidden;border:1px solid currentColor;background:#faf4e1;padding:4px 5px}
.stamp-serial{width:100%;display:flex;justify-content:space-between;gap:4px;font-size:5px;font-weight:700;letter-spacing:1.2px;line-height:1.2;color:var(--stamp-ink);flex-shrink:0}.stamp-serial span{font-size:6px;letter-spacing:0}
.stamp-illustration{display:block;flex:1;min-height:0;width:100%;max-width:100px;margin:1px 0}.stamp-illustration .landmark-art{height:100%;width:100%;overflow:visible}
.stamp-place{display:block;flex-shrink:0;max-width:100%;font:600 11px 'Fraunces',Georgia,serif;line-height:1.15;color:var(--stamp-ink);margin-top:2px;overflow-wrap:anywhere}
.stamp-empty .stamp-illustration{opacity:.38;filter:grayscale(1)}.stamp-empty .postage-frame{border-color:#a7ad96}.stamp-empty .stamp-place,.stamp-empty .stamp-serial{color:#8e9981}
.passport-ink{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;right:1px;bottom:23px;width:54px;height:54px;border:1.5px solid var(--stamp-ink);border-radius:50%;outline:1px dashed var(--stamp-ink);outline-offset:-5px;transform:rotate(-20deg);background:#faf4ddbf;color:var(--stamp-ink);opacity:.9;pointer-events:none;line-height:1.1}.passport-ink>span{font-size:5px;letter-spacing:1px;font-weight:700}.passport-ink b{font-size:9px;border-top:1px solid currentColor;border-bottom:1px solid currentColor;padding:2px 0;margin:3px 0;font-weight:800;letter-spacing:.5px}.passport-ink small{font-size:4.7px;font-weight:700;text-transform:uppercase;letter-spacing:.1px}
.postage-stamp:active{transform:rotate(0deg) scale(.97)}.postage-stamp:focus-visible{outline:3px solid #bf8f41;outline-offset:2px}
.passport-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:5px 0 0;gap:4px}.passport-footer>button{display:grid;place-items:center;width:44px;height:44px;min-width:44px;border:0;border-radius:6px;background:transparent;color:#ead29a;font:26px Georgia,serif}.passport-footer>button:disabled{opacity:.25}.passport-page-tabs{display:flex;align-items:center;justify-content:center;gap:1px;min-width:0}.passport-page-tabs button{min-width:36px;height:44px;padding:0 7px;background:transparent;color:#b6c19e;border-radius:6px;font-size:10px}.passport-page-tabs button[aria-current=page]{color:#f3dc9e;background:#45654d;box-shadow:inset 0 -2px #c4a86a;font-weight:700}.passport-tab-gap{color:#a5b092;font-size:10px}.passport-complete .passport-emblem{background:#d9b768;color:#294d3d}
@keyframes passport-page-in{from{opacity:.7;transform:translateX(3px)}to{opacity:1;transform:translateX(0)}}
@media(min-width:700px) and (min-height:560px){.passport-open .sheet{max-width:720px;height:min(545px,calc(100svh - 32px - var(--safe)))}.passport-book{padding-left:12px}.passport-cover{padding-bottom:9px}.passport-cover-number{writing-mode:horizontal-tb;font-size:7px;margin-right:12px}.passport-cover #sheetTitle{font-size:20px}.passport-leaf{padding-left:17px;padding-right:17px}.passport-stamp-grid{gap:9px 16px}.stamp-place{font-size:12px}.passport-progress{padding-top:6px;padding-bottom:7px}.passport-page-tabs button{min-width:44px}}
@media(max-width:350px){.passport-book{padding-left:9px;padding-right:7px}.passport-leaf{padding-left:10px;padding-right:10px}.passport-stamp-grid{gap:7px 10px}.stamp-place{font-size:10px}.passport-ink{width:49px;height:49px;bottom:22px}.passport-ink b{font-size:8px}.passport-ink small{font-size:4.2px}.passport-cover-number{display:none}.passport-cover #sheetTitle{font-size:18px}.passport-page-tabs button{min-width:32px;padding:0 4px}}
@media(max-height:559px){.passport-open .sheet{max-width:530px;height:calc(100svh - 20px - var(--safe))}.sheetback.passport-open{padding:10px}.passport-book{padding-top:6px;padding-bottom:3px}.passport-cover{padding-bottom:5px}.passport-emblem{width:24px;height:27px;font-size:18px}.passport-cover #sheetTitle{font-size:16px;margin-top:2px}.passport-eyebrow{font-size:5px}.passport-progress{padding-top:5px;padding-bottom:5px;gap:3px}.passport-leaf{padding-top:7px;padding-bottom:5px}.passport-stamp-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:6px 10px;padding-top:7px;padding-bottom:7px}.passport-page-heading{padding-bottom:5px}.passport-folio{padding-top:5px}.passport-footer{padding-top:1px}.stamp-place{font-size:10px}.stamp-illustration{max-width:80px}.passport-cover-number{writing-mode:horizontal-tb;font-size:5px;margin-right:8px}.passport-ink{width:47px;height:47px;bottom:20px}.passport-ink b{font-size:8px;margin:2px 0}.passport-ink>span{font-size:4.5px}.passport-ink small{font-size:4px}}
@media(max-height:370px){.passport-cover{padding-bottom:3px}.passport-cover #sheetTitle{font-size:14px}.passport-eyebrow,.passport-emblem{display:none}.passport-progress{padding-top:3px;padding-bottom:3px}.passport-page-heading{font-size:5px}.passport-folio{font-size:5px}.postage-frame{padding:2px 4px}.postage-stamp{padding:3px}.passport-ink{width:40px;height:40px;bottom:19px;outline-offset:-4px}.passport-ink b{font-size:6px;margin:2px 0;padding:1px 0}.passport-ink>span{font-size:4px}.passport-ink small{font-size:3.5px}.stamp-place{font-size:9px}}
.visit-celebration{position:absolute;inset:0;z-index:45;overflow:hidden;pointer-events:none;contain:strict}.stamp-celebration{position:absolute;top:max(80px,14%);left:50%;display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 32px);padding:14px 18px;border:2px solid #e8c57d;border-radius:16px;background:#254e42;color:#f9e7b9;box-shadow:0 5px 0 #123f36,0 12px 28px #123f3640;transform:translateX(-50%);animation:stamp-award 2.4s both;text-align:left}.celebration-seal{display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;border:2px dashed #d8bd7b;border-radius:50%;font-size:24px}.stamp-celebration small{display:block;color:#c9c894;font-size:8px;font-weight:700;letter-spacing:1.8px;white-space:nowrap}.stamp-celebration strong{display:block;font:600 21px 'Fraunces',Georgia,serif;margin-top:4px}.celebration-spark{font-size:24px;color:#e7bc65;margin-left:8px}
.confetti-paper{position:absolute;left:var(--x);top:62%;width:var(--paper-w);height:var(--paper-h);background:var(--paper);border-radius:1px;opacity:0;animation:paper-firework 1.8s cubic-bezier(.2,.55,.5,1) var(--delay) both;will-change:transform,opacity}.visit-stamped{animation:visit-stamp-press .6s ease-out!important}
@keyframes paper-firework{0%{opacity:0;transform:translate3d(0,0,0) rotate(0)}6%{opacity:1}45%{opacity:1;transform:translate3d(var(--dx),var(--dy),0) rotate(var(--spin))}100%{opacity:0;transform:translate3d(var(--drift),140px,0) rotate(calc(var(--spin)*2))}}
@keyframes stamp-award{0%{opacity:0;transform:translate(-50%,12px) scale(.9)}12%,83%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-8px) scale(1)}}
@keyframes visit-stamp-press{0%{transform:scale(1.28) rotate(-10deg)}28%{transform:scale(.9) rotate(3deg)}60%,100%{transform:scale(1) rotate(0)}}
@media(prefers-reduced-motion:reduce){.passport-spread,.visit-stamped,.stamp-celebration{animation:none!important}.confetti-paper{display:none}.postage-stamp{transition:none}}

.memorial-record{position:absolute;top:max(80px,14%);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:calc(100% - 32px);width:max-content;padding:14px 18px;border:1px solid #a8af96;border-radius:12px;background:#f4efdf;color:#4f6354;text-align:left;box-shadow:0 4px 14px #123f3526;animation:memorial-record-fade 2.6s both}.memorial-record-mark{font-size:23px;color:#7e876b}.memorial-record small{display:block;font-size:8px;line-height:1.5;letter-spacing:1px;font-weight:600}.memorial-record strong{display:block;font:500 18px/1.3 'Fraunces',Georgia,serif;margin-top:4px}@keyframes memorial-record-fade{0%,100%{opacity:0}12%,86%{opacity:1}}@media(prefers-reduced-motion:reduce){.memorial-record{animation:none}}

.passport-hint{display:flex;align-items:center;gap:8px;padding:0 3px 5px;color:#e9d29b;flex-shrink:0}.passport-hint[hidden]{display:none}.passport-hint p{font-size:11px;line-height:1.35;margin:0;flex:1}.passport-hint button{min-height:44px;min-width:48px;padding:0 5px;background:transparent;color:#f2d89d;font-size:11px;text-decoration:underline;text-underline-offset:3px}
