/* Isolated hand-drawn travel journal. The surrounding page already supplies .shell. */
.passport{width:100%;min-width:0;margin-block:72px;padding:clamp(20px,4vw,42px);background:#fffcf4;color:#19382e;border:1px solid #d8d6c7;border-radius:8px;box-shadow:0 12px 32px #19382e09;scroll-margin-top:24px;position:relative}
.passport,.passport *{box-sizing:border-box}
.passport [hidden]{display:none!important}
.passport p{line-height:1.8}
.passport-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}
.passport-heading>div:first-child{min-width:0;max-width:750px}
.passport .kicker{color:#806032;font-size:.73rem;line-height:1.8;letter-spacing:.12em;overflow-wrap:anywhere}
.passport h2{font-family:"Noto Serif TC","PMingLiU","Songti TC",serif;font-size:clamp(1.8rem,4vw,2.6rem);margin:0 0 16px;line-height:1.35}
.passport-intro{color:#505f53;margin:0 0 20px}
.passport-cover-mark{flex:0 0 auto;display:grid;gap:4px;justify-items:center;padding:14px 17px;color:#806032;border:1px solid #b5a277;border-radius:50% 50% 8px 8px;transform:rotate(4deg);font-family:"Noto Serif TC","PMingLiU",serif;letter-spacing:.12em}
.passport-cover-mark>span:first-child{font-size:1.5rem;font-weight:700}
.passport-cover-mark>span:nth-child(2){font-size:.78rem}
.passport-cover-mark small{font:600 .6rem/1.8 system-ui,sans-serif;letter-spacing:.13em}
.passport-disclosure{margin:0 0 25px;padding:12px 16px;border-left:3px solid #ab8b51;background:#f3edde;color:#655336;font-size:.85rem}
.passport-progress-row{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 20px}
.passport-progress-row p{margin:0;font-size:.88rem}
.passport-progress-row strong{margin-left:10px;color:#244d3f;font:500 1.5rem Georgia,serif;white-space:nowrap}
.passport-progress-row>span{color:#505f53;font-size:.8rem}
.passport progress{display:block;appearance:none;-webkit-appearance:none;width:100%;height:5px;margin:13px 0 27px;border:0;border-radius:10px;background:#e7e4d6;color:#42634d;overflow:hidden}
.passport progress::-webkit-progress-bar{background:#e7e4d6;border-radius:10px}
.passport progress::-webkit-progress-value{background:#42634d;border-radius:10px}
.passport progress::-moz-progress-bar{background:#42634d;border-radius:10px}
.passport-stamps{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:18px 12px;list-style:none;margin:0;padding:0 0 30px}
.passport-stamps>li{min-width:0}
.passport button{font:inherit;cursor:pointer;touch-action:manipulation}
.passport-stamp{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;min-width:0;padding:8px 3px 10px;border:1px solid transparent;border-radius:7px;background:transparent;color:#6b6c5c;transition:background-color .16s ease,border-color .16s ease}
.passport-stamp:hover{background:#f3f1e5;border-color:#dad9c9}
.passport-stamp[aria-pressed="true"]{color:#244d3f}
.passport-stamp[aria-pressed="true"]:hover{background:#edf0e3}
.passport-seal{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;max-width:120px;aspect-ratio:1/1;border:1px dashed #949783;border-radius:50%;background:#faf8ef;isolation:isolate}
.passport-seal::before{content:"";position:absolute;inset:5px;border:1px solid #d9d7c4;border-radius:50%;z-index:-1}
.passport-stamp[aria-pressed="true"] .passport-seal{border:2px solid #42634d;background:#e9eee0}
.passport-stamp[aria-pressed="true"] .passport-seal::before{inset:4px;border-color:#91a083}
.passport-motif{display:block;width:40px;height:23px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.passport-town{font-family:"Noto Serif TC","PMingLiU","Songti TC",serif;font-size:1.13rem;line-height:1.45;font-weight:700;letter-spacing:.06em;white-space:nowrap}
.passport-seal-caption{font-size:.57rem;line-height:1.5;letter-spacing:.12em}
.passport-stamp-number{font:500 .65rem Georgia,serif;letter-spacing:.15em;color:#806032}
.passport-stamp-state{font-size:.68rem;line-height:1.6;text-align:center;overflow-wrap:anywhere}
.passport-stamp[aria-pressed="true"] .passport-stamp-state{font-weight:650}
.passport-bottom{display:grid;grid-template-columns:1.05fr 1fr;gap:26px;padding-top:28px;border-top:1px dashed #c9cbbb}
.passport-bottom>div,.passport-bottom>aside{min-width:0}
.passport-next{padding:22px;background:#eef0e3;border-radius:5px}
.passport-keepsake{padding:22px 0 16px}
.passport-eyebrow{font-size:.65rem;font-weight:700;letter-spacing:.18em;color:#806032;margin:0 0 8px}
.passport h3{font:700 1.18rem/1.5 "Noto Serif TC","PMingLiU","Songti TC",serif;margin:0 0 10px;letter-spacing:.02em}
.passport-bottom p:not(.passport-eyebrow){font-size:.86rem;margin-bottom:15px;color:#505f53}
.passport-next-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.passport-bottom button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:44px;max-width:100%;padding:11px 15px;border:1px solid #244d3f;border-radius:4px;background:#244d3f;color:#fffcf4;font-size:.86rem;font-weight:650;line-height:1.5}
.passport-bottom button:hover:not(:disabled){background:#19382e}
.passport-bottom button:disabled{background:#e5e7db;border-color:#acb29e;color:#55604d;cursor:not-allowed}
.passport #passport-download{border-color:#9d9f87;background:transparent;color:#244d3f}
.passport #passport-download:hover{background:#eef0e3}
.passport-next-actions a{display:inline-flex;align-items:center;min-height:44px;max-width:100%;font-size:.86rem;font-weight:650;overflow-wrap:anywhere;text-decoration-thickness:1px;text-underline-offset:4px}
.passport-bottom .passport-small{font-size:.74rem!important;margin:14px 0 0!important;line-height:1.8}
.passport-feedback{min-height:1.8em;margin:18px 0 4px;font-size:.86rem;font-weight:650}
.passport-storage{font-size:.74rem;color:#505f53;margin:0;overflow-wrap:anywhere}
.passport button:focus-visible,.passport a:focus-visible{outline:3px solid #a75326;outline-offset:4px}
@media(max-width:1050px){.passport-stamps{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:760px){.passport-stamps{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 10px}.passport-bottom{grid-template-columns:1fr;gap:8px}.passport-keepsake{padding:20px 0 0}.passport-cover-mark{display:none}}
@media(max-width:540px){.passport{padding:24px 16px;margin-block:42px}.passport-stamps{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 7px}.passport-town{font-size:1.02rem;letter-spacing:.02em}.passport-seal-caption{font-size:.52rem}.passport-seal{gap:1px}.passport-motif{width:34px;height:20px}.passport-next{padding:18px 15px}.passport-progress-row>span{width:100%}.passport-disclosure{padding:12px;font-size:.8rem}}
@media(max-width:380px){.passport-stamps{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}.passport-seal{max-width:110px;gap:3px}.passport-town{font-size:1.08rem}.passport-next-actions{align-items:stretch;flex-direction:column}.passport-next-actions a{justify-content:center}.passport-bottom button{gap:10px}.passport-progress-row strong{font-size:1.35rem}}
@media(prefers-reduced-motion:reduce){.passport *,.passport *::before,.passport *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.passport{box-shadow:none;margin-block:24px;break-inside:avoid}.passport-bottom,.passport-feedback,.passport-storage{display:none}.passport-stamps{grid-template-columns:repeat(7,minmax(0,1fr))}.passport-stamp{break-inside:avoid}}
