:root {
  --ink: #061b35;
  --navy: #082d59;
  --navy-2: #0b4779;
  --sky: #49cdf4;
  --pale: #e9f9ff;
  --paper: #f7f1df;
  --paper-2: #e8dfc9;
  --gold: #d5aa51;
  --pink: #ff4aa5;
  --line: rgba(10, 45, 83, .17);
  --mono: "DM Mono", monospace;
  --round: "M PLUS Rounded 1c", sans-serif;
  --document-serif: "Noto Serif JP", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --document-display: "Cormorant Garamond", "Times New Roman", serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: #e9f8fd; font-family: var(--round); overflow-x: hidden; }
button, input, textarea { font: inherit; }
button, label { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
img { max-width: 100%; height: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.ambient { position: fixed; inset: 0; z-index: -1; overflow: hidden; background: linear-gradient(145deg, #effcff 0%, #dff6fc 52%, #c8edf8 100%); }
.ambient::before { content: ""; position: absolute; inset: 0; opacity: .34; background-image: linear-gradient(rgba(8,45,89,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(8,45,89,.045) 1px, transparent 1px); background-size: 42px 42px; mask-image: linear-gradient(to bottom, black, transparent 76%); }
.ambient i { position: absolute; display: block; border-radius: 50%; filter: blur(2px); }
.ambient i:nth-child(1) { width: 38vw; height: 38vw; right: -10vw; top: -12vw; background: rgba(65,205,244,.25); }
.ambient i:nth-child(2) { width: 24vw; height: 24vw; left: -9vw; top: 38vh; background: rgba(255,74,165,.08); }
.ambient i:nth-child(3) { width: 13vw; height: 13vw; right: 10vw; bottom: 8vh; border: 2px solid rgba(8,45,89,.09); }

.passport-header { display: flex; align-items: center; gap: 2rem; width: min(1440px, calc(100% - 3rem)); margin: 0 auto; padding: 1.15rem 0; border-bottom: 1px solid rgba(8,45,89,.15); }
.passport-brand { display: flex; align-items: center; gap: .75rem; color: var(--navy); text-decoration: none; }
.passport-brand img { width: 52px; aspect-ratio: 1; object-fit: contain; }
.passport-brand span { display: grid; }
.passport-brand b { font-size: .88rem; letter-spacing: .08em; }
.passport-brand small { color: #4b6a89; font: 500 .54rem/1.5 var(--mono); letter-spacing: .08em; }
.secure-status { display: flex; align-items: center; gap: .55rem; margin-left: auto; color: #456782; font: 500 .62rem var(--mono); letter-spacing: .08em; }
.secure-status i { width: 8px; height: 8px; border-radius: 50%; background: #1cc487; box-shadow: 0 0 0 5px rgba(28,196,135,.1); animation: pulse 2s infinite; }
.back-link { color: var(--navy); font-size: .72rem; font-weight: 800; text-underline-offset: .25rem; }

.passport-hero { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(350px, .85fr); align-items: center; gap: clamp(3rem, 7vw, 8rem); width: min(1320px, calc(100% - 3rem)); min-height: 700px; margin: 0 auto; padding: clamp(5rem, 9vw, 9rem) 0; }
.overline { margin: 0 0 1.4rem; color: var(--navy-2); font: 500 .7rem var(--mono); letter-spacing: .16em; }
.passport-hero h1 { max-width: 760px; margin: 0; color: var(--navy); font-size: clamp(3rem, 5.5vw, 6rem); font-weight: 900; line-height: 1.17; letter-spacing: -.055em; }
.passport-hero h1 em { position: relative; color: var(--navy-2); font-style: normal; }
.passport-hero h1 em::after { content: ""; position: absolute; left: 0; right: 0; bottom: -.08em; height: .16em; border-radius: 99px; background: var(--sky); transform: rotate(-1.5deg); }
.passport-hero__copy > p:not(.overline) { max-width: 650px; margin: 2rem 0 0; color: #46647e; font-size: clamp(.95rem, 1.2vw, 1.1rem); font-weight: 600; line-height: 2; }
.hero-facts { display: flex; flex-wrap: wrap; gap: .75rem; margin: 2.2rem 0 0; padding: 0; list-style: none; }
.hero-facts li { display: flex; align-items: center; gap: .55rem; padding: .65rem .9rem; border: 1px solid rgba(8,45,89,.17); border-radius: 99px; color: #3c5e7d; background: rgba(255,255,255,.6); backdrop-filter: blur(8px); font-size: .7rem; font-weight: 800; }
.hero-facts span { color: var(--navy-2); font: 500 .58rem var(--mono); }

.passport-cover-wrap { position: relative; perspective: 1200px; }
.passport-cover { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: space-between; width: min(420px, 100%); aspect-ratio: .72; margin: 0 auto; padding: 3.1rem 2rem 2.4rem; overflow: hidden; border: 1px solid #164d7d; border-radius: 9px 20px 20px 9px; color: #e4c981; background: radial-gradient(circle at 70% 18%, rgba(42,113,163,.65), transparent 34%), linear-gradient(135deg, #031b36 0%, #0a3e6b 52%, #05284d 100%); box-shadow: -16px 16px 0 #041a33, 1px 1px 0 #3c6f96 inset, 0 35px 75px rgba(4,31,61,.3); transform: rotateY(-8deg) rotateZ(2.2deg); animation: cover-float 5s ease-in-out infinite; }
.passport-cover::before { content: ""; position: absolute; inset: 12px; border: 1px solid rgba(213,170,81,.38); border-radius: 5px 14px 14px 5px; }
.passport-cover::after { content: "SRGR • SRGR • SRGR • SRGR • SRGR • SRGR •"; position: absolute; inset: auto -10% 19%; color: rgba(213,170,81,.09); font: 500 1.1rem var(--mono); letter-spacing: .5em; transform: rotate(-28deg); }
.passport-cover > p { margin: 0; font: 500 .78rem var(--mono); letter-spacing: .3em; }
.passport-cover > img { position: relative; z-index: 1; width: 54%; filter: drop-shadow(0 8px 22px rgba(0,0,0,.35)) sepia(.25); }
.passport-cover > div { position: relative; z-index: 1; display: grid; gap: .45rem; text-align: center; }
.passport-cover strong { font: 500 clamp(1.6rem, 3vw, 2.4rem) var(--mono); letter-spacing: .18em; }
.passport-cover small { font: 500 .56rem var(--mono); letter-spacing: .17em; }
.passport-cover > b { font: 500 .72rem var(--mono); letter-spacing: .24em; }
.cover-shine { position: absolute; inset: -30%; background: linear-gradient(105deg, transparent 38%, rgba(255,255,255,.14) 48%, transparent 58%); transform: translateX(-60%); animation: cover-shine 5.5s 1s ease-in-out infinite; }
.cover-shadow { position: absolute; left: 12%; right: 4%; bottom: -12%; height: 12%; border-radius: 50%; background: rgba(2,27,55,.26); filter: blur(24px); }

.terminal { display: grid; grid-template-columns: 290px minmax(0, 1fr); width: min(1320px, calc(100% - 3rem)); min-height: 730px; margin: 0 auto clamp(7rem, 12vw, 12rem); overflow: hidden; border: 1px solid rgba(8,45,89,.18); border-radius: 26px; background: rgba(255,255,255,.88); box-shadow: 0 30px 90px rgba(8,45,89,.13); backdrop-filter: blur(24px); }
.terminal__rail { display: flex; flex-direction: column; padding: 2.5rem 2rem; color: white; background: linear-gradient(160deg, #061f40, #0b4779); }
.terminal__rail > p { margin: 0 0 2rem; color: #7dddf5; font: 500 .62rem var(--mono); letter-spacing: .14em; }
.terminal__rail ol { position: relative; display: grid; gap: 1.65rem; margin: 0; padding: 0; list-style: none; }
.terminal__rail ol::before { content: ""; position: absolute; left: 16px; top: 21px; bottom: 21px; width: 1px; background: rgba(255,255,255,.18); }
.terminal__rail li { position: relative; display: flex; align-items: center; gap: 1rem; opacity: .38; transition: opacity .35s, transform .35s; }
.terminal__rail li.is-current, .terminal__rail li.is-complete { opacity: 1; }
.terminal__rail li.is-current { transform: translateX(5px); }
.terminal__rail li b { position: relative; z-index: 1; display: grid; place-items: center; width: 33px; height: 33px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.4); border-radius: 50%; background: #0a3969; font: 500 .58rem var(--mono); }
.terminal__rail li.is-current b { color: var(--navy); border-color: var(--sky); background: var(--sky); box-shadow: 0 0 0 6px rgba(73,205,244,.13); }
.terminal__rail li.is-complete b { color: #76edbd; border-color: #76edbd; }
.terminal__rail li span { font-size: .78rem; font-weight: 800; }
.terminal__rail li small { display: block; margin-top: .22rem; color: #8ca8c1; font: 400 .49rem var(--mono); letter-spacing: .08em; }
.privacy-note { display: grid; grid-template-columns: 28px 1fr; gap: .85rem; margin-top: auto; padding: 1rem; border: 1px solid rgba(117,230,255,.2); border-radius: 13px; background: rgba(255,255,255,.05); }
.privacy-note svg { width: 25px; fill: none; stroke: #77e0f8; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.privacy-note p { margin: 0; color: #a8c1d6; font-size: .57rem; line-height: 1.7; }
.privacy-note b { display: block; margin-bottom: .25rem; color: #74dff7; font: 500 .55rem var(--mono); letter-spacing: .08em; }

.terminal__desk { position: relative; min-width: 0; padding: 0 clamp(1.5rem, 4vw, 4.5rem) 3rem; }
.terminal__topline { display: grid; grid-template-columns: repeat(3, 1fr); margin-bottom: clamp(2.5rem, 5vw, 4.5rem); border-bottom: 1px solid var(--line); }
.terminal__topline > div { display: grid; gap: .2rem; padding: 1.2rem 1rem; border-right: 1px solid var(--line); }
.terminal__topline > div:first-child { padding-left: 0; }
.terminal__topline > div:last-child { border: 0; }
.terminal__topline span { color: #7290aa; font: 500 .52rem var(--mono); letter-spacing: .1em; }
.terminal__topline b { color: var(--navy); font: 500 .67rem var(--mono); }
.form-step { display: none; animation: step-in .55s cubic-bezier(.16,1,.3,1); }
.form-step.is-active { display: block; }
.step-heading { display: flex; align-items: center; gap: 1.2rem; }
.step-heading > span { display: grid; place-items: center; width: 48px; height: 48px; flex: 0 0 auto; border: 1px solid var(--navy); border-radius: 50%; color: var(--navy); font: 500 .7rem var(--mono); }
.step-heading p { margin: 0 0 .25rem; color: #6e899f; font: 500 .58rem var(--mono); letter-spacing: .12em; }
.step-heading h2 { margin: 0; color: var(--navy); font-size: clamp(1.7rem, 3.2vw, 2.7rem); font-weight: 900; letter-spacing: -.04em; }
.step-lead { max-width: 660px; margin: 1.4rem 0 2.3rem 4.25rem; color: #58748d; font-size: .82rem; font-weight: 600; line-height: 1.8; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.35rem; }
.field { position: relative; display: grid; gap: .55rem; }
.field--wide { grid-column: 1 / -1; }
.field > span { color: #405e77; font-size: .68rem; font-weight: 900; }
.field > span small { margin-left: .45rem; color: #829aac; font: 500 .53rem var(--mono); letter-spacing: .08em; }
.field input, .field textarea { width: 100%; min-width: 0; padding: 1rem 1.05rem; border: 1px solid rgba(8,45,89,.2); border-radius: 10px; outline: none; color: var(--navy); background: rgba(240,250,253,.55); font-size: .9rem; font-weight: 700; transition: border .2s, box-shadow .2s, background .2s; }
.field textarea { min-height: 106px; resize: vertical; line-height: 1.7; }
.field input:focus, .field textarea:focus { border-color: var(--sky); background: white; box-shadow: 0 0 0 4px rgba(73,205,244,.16); }
.field input:user-invalid, .field textarea:user-invalid { border-color: #e75a79; }
.counter { position: absolute; right: .8rem; bottom: .65rem; color: #8099ad; font: 400 .55rem var(--mono); }
.step-actions { display: flex; justify-content: flex-end; align-items: center; gap: 1.2rem; margin-top: 2.2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.step-actions > span { margin-right: auto; color: #8499aa; font-size: .58rem; }
.next-button, .download-button { display: inline-flex; align-items: center; justify-content: space-between; gap: 2rem; min-width: 230px; padding: .95rem 1.1rem 1rem 1.25rem; border: 0; border-radius: 9px; color: white; background: var(--navy); box-shadow: 5px 5px 0 #68d5ef; cursor: pointer; font-size: .75rem; font-weight: 900; transition: transform .2s, box-shadow .2s; }
.next-button:hover, .download-button:hover { transform: translate(3px,3px); box-shadow: 2px 2px 0 #68d5ef; }
.next-button b { color: #6cddf6; font-size: 1.1rem; }
.next-button--issue { background: linear-gradient(120deg, #0b4779, #0767a4); }
.back-button, .restart-button, .share-button { border: 0; background: transparent; cursor: pointer; color: #56738b; font-size: .7rem; font-weight: 800; text-decoration: underline; text-underline-offset: .25rem; }

.biometric-grid { display: grid; grid-template-columns: 250px 1fr; gap: 2rem; }
.portrait-field { display: flex; flex-direction: column; align-items: center; }
.portrait-preview { position: relative; display: grid; place-items: center; width: 210px; aspect-ratio: .82; overflow: hidden; border: 1px solid #849caf; border-radius: 5px; background: repeating-linear-gradient(0deg, #e4f1f4 0 2px, #dfecee 2px 4px); box-shadow: 0 12px 30px rgba(8,45,89,.13); }
.portrait-preview::before, .portrait-preview::after { content: ""; position: absolute; width: 20px; height: 20px; border: solid var(--sky); z-index: 3; }
.portrait-preview::before { left: 9px; top: 9px; border-width: 2px 0 0 2px; }
.portrait-preview::after { right: 9px; bottom: 9px; border-width: 0 2px 2px 0; }
.portrait-preview svg { width: 62px; fill: none; stroke: #7892a6; stroke-width: 1.2; }
.portrait-preview > span:not(.scan-line) { color: #738da0; font: 500 .58rem var(--mono); letter-spacing: .12em; }
.portrait-preview img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.scan-line { position: absolute; z-index: 2; left: 0; right: 0; top: 0; height: 2px; background: #53dbfb; box-shadow: 0 0 9px #53dbfb; animation: scan 2.8s linear infinite; }
.upload-button { margin-top: 1rem; padding: .68rem 1rem; border: 1px solid var(--navy); border-radius: 8px; color: var(--navy); background: white; cursor: pointer; font-size: .68rem; font-weight: 900; }
.portrait-field > small { margin-top: .55rem; color: #849aac; font-size: .53rem; }
.signature-field { position: relative; display: flex; flex-direction: column; min-width: 0; }
.signature-label { display: flex; justify-content: space-between; margin-bottom: .6rem; color: #4b687f; font: 500 .57rem var(--mono); letter-spacing: .1em; }
.signature-label button { border: 0; background: none; color: #678299; cursor: pointer; font-size: .6rem; text-decoration: underline; }
#signature-pad { position: relative; z-index: 1; width: 100%; height: 250px; border: 1px solid rgba(8,45,89,.22); border-radius: 6px; background: rgba(244,250,250,.84); cursor: crosshair; touch-action: none; }
.signature-field > p { margin: .55rem 0 0; color: #879dad; font-size: .57rem; text-align: center; }
.signature-guide { position: absolute; z-index: 2; left: 7%; right: 7%; top: 72%; height: 1px; pointer-events: none; background: rgba(8,45,89,.14); }

.purpose-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem; margin: 0 0 1.4rem; padding: 0; border: 0; }
.purpose-grid label { min-width: 0; cursor: pointer; }
.purpose-grid input { position: absolute; opacity: 0; }
.purpose-grid label > span { position: relative; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .3rem .8rem; min-height: 112px; padding: 1.2rem; border: 1px solid rgba(8,45,89,.16); border-radius: 12px; background: rgba(241,250,252,.55); transition: border .2s, background .2s, transform .2s, box-shadow .2s; }
.purpose-grid label > span i { grid-row: 1 / 3; color: #92a6b5; font: normal 500 .59rem var(--mono); }
.purpose-grid label > span b { color: var(--navy); font-size: .82rem; }
.purpose-grid label > span small { color: #7390a5; font: 500 .5rem var(--mono); text-align: right; letter-spacing: .07em; }
.purpose-grid label > span em { grid-column: 2 / -1; color: #688197; font-size: .64rem; font-style: normal; }
.purpose-grid input:checked + span { border-color: var(--sky); background: white; box-shadow: 0 7px 22px rgba(45,178,216,.13), inset 4px 0 0 var(--sky); transform: translateY(-2px); }
.purpose-grid input:focus-visible + span { outline: 3px solid rgba(73,205,244,.35); }

.form-step--issuing.is-active { display: grid; min-height: 470px; place-items: center; }
.inspection { width: min(520px, 100%); text-align: center; }
.inspection__seal { position: relative; width: 130px; aspect-ratio: 1; margin: 0 auto 2rem; }
.inspection__seal img { position: relative; z-index: 1; width: 100%; animation: inspect-logo 2.1s ease-in-out infinite; }
.inspection__seal span { position: absolute; inset: -10px; border: 1px solid var(--sky); border-top-color: transparent; border-radius: 50%; animation: spin 1.4s linear infinite; }
.inspection p { color: var(--navy); font-size: 1rem; font-weight: 900; }
.inspection__bar { height: 5px; overflow: hidden; border-radius: 99px; background: #d5e5ea; }
.inspection__bar i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--sky), #23b989); transition: width .5s ease; }
.inspection small { display: block; margin-top: 1rem; color: #7590a6; font: 500 .53rem var(--mono); letter-spacing: .08em; }

.issued { width: min(1450px, calc(100% - 2rem)); margin: 0 auto; padding: 2rem 0 8rem; }
.issued[hidden] { display: none; }
.issued__heading { margin-bottom: 4rem; text-align: center; animation: issued-title .8s both; }
.issued__heading p { margin: 0 0 .7rem; color: #16875f; font: 500 .65rem var(--mono); letter-spacing: .16em; }
.issued__heading h2 { margin: 0; color: var(--navy); font-size: clamp(2.6rem, 6vw, 5.5rem); line-height: 1.25; letter-spacing: -.055em; }
.issued__heading span { display: block; margin-top: 1rem; color: #668198; font-size: .9rem; font-weight: 700; }
.passport-book { position: relative; display: grid; grid-template-columns: 1fr 1fr; max-width: 1380px; margin: 0 auto; padding: 17px; border: 1px solid #bfa05f; border-radius: 9px 20px 20px 9px; background: linear-gradient(135deg, #062a52, #0b4779); box-shadow: 0 35px 90px rgba(7,40,75,.32), -8px 10px 0 #041d39; perspective: 1600px; animation: book-enter 1.15s cubic-bezier(.16,1,.3,1) both; }
.passport-book__spine { position: absolute; z-index: 4; left: 50%; top: 13px; bottom: 13px; width: 12px; border-radius: 50%; background: linear-gradient(90deg, rgba(30,22,10,.18), rgba(255,255,255,.45), rgba(30,22,10,.24)); box-shadow: 0 0 20px rgba(30,22,10,.3); transform: translateX(-50%); }
.passport-page { position: relative; min-width: 0; min-height: 600px; overflow: hidden; padding: clamp(1.5rem, 3vw, 2.7rem); background-color: var(--paper); background-image: radial-gradient(circle at 13% 18%, rgba(54,162,190,.15), transparent 25%), radial-gradient(circle at 90% 80%, rgba(217,96,163,.1), transparent 27%), repeating-linear-gradient(45deg, rgba(8,45,89,.018) 0 1px, transparent 1px 5px); }
.passport-page--identity { border-radius: 4px 0 0 5px; box-shadow: inset -16px 0 22px rgba(75,55,20,.12); }
.passport-page--visa { border-radius: 0 8px 8px 0; box-shadow: inset 16px 0 22px rgba(75,55,20,.1); }
.passport-page header { position: relative; z-index: 2; display: flex; align-items: center; gap: .8rem; padding-bottom: .9rem; border-bottom: 1px solid rgba(8,45,89,.45); color: var(--navy); font: 500 .56rem var(--mono); letter-spacing: .12em; }
.passport-page header b { margin-left: auto; font: 500 .65rem var(--mono); }
.passport-page header small { display: grid; place-items: center; width: 25px; height: 25px; border: 1px solid var(--navy); font: 500 .7rem var(--mono); }
.page-security { position: absolute; inset: 0; display: grid; place-items: center; pointer-events: none; opacity: .07; }
.page-security::before, .page-security::after { content: ""; position: absolute; width: 75%; aspect-ratio: 1; border: 1px solid var(--navy); border-radius: 50% 45% 50% 40%; transform: rotate(20deg); }
.page-security::after { width: 55%; transform: rotate(-30deg); }
.page-security span { font: 500 5rem var(--mono); transform: rotate(-24deg); }
.identity-layout { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(150px, .7fr) 1.45fr; gap: 1.3rem; margin-top: 1.3rem; }
.issued-photo { position: relative; height: 300px; overflow: hidden; border: 1px solid rgba(8,45,89,.5); background: #d6e5e4; }
.issued-photo > img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.88) contrast(1.04); }
.issued-photo > span { display: grid; height: 100%; place-items: center; color: #6e838a; font: 500 .6rem var(--mono); }
.issued-photo::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, transparent 0 4px, rgba(5,58,86,.07) 4px 5px); mix-blend-mode: multiply; }
.hologram { position: absolute; z-index: 2; right: 8px; bottom: 8px; display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; color: rgba(255,255,255,.78); background: conic-gradient(from 20deg, #70e6ff, #ef9fff, #fff29e, #70e6ff); box-shadow: inset 0 0 0 4px rgba(255,255,255,.35); font: normal 500 .46rem var(--mono); opacity: .72; mix-blend-mode: screen; }
.identity-data { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem .8rem; margin: 0; align-content: start; }
.identity-data div { min-width: 0; }
.identity-data .full, .signature-output { grid-column: 1 / -1; }
.identity-data dt, .visa-data dt { color: #657e82; font: 500 .45rem var(--mono); letter-spacing: .05em; }
.identity-data dd, .visa-data dd { margin: .22rem 0 0; overflow: hidden; color: #072b50; font: 500 clamp(.56rem, 1vw, .72rem) var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.signature-output dd { height: 48px; border-bottom: 1px solid rgba(8,45,89,.18); }
.signature-output img { width: 100%; height: 100%; object-fit: contain; object-position: left center; mix-blend-mode: multiply; }
.mrz { position: absolute; z-index: 2; left: clamp(1.5rem, 3vw, 2.7rem); right: clamp(1.5rem, 3vw, 2.7rem); bottom: 2.2rem; display: grid; padding-top: .75rem; border-top: 1px solid rgba(8,45,89,.32); overflow: hidden; color: #082d59; font: 500 clamp(.55rem, .88vw, .72rem)/1.5 var(--mono); letter-spacing: .07em; white-space: nowrap; }
.fiction-mark { position: absolute; z-index: 2; left: 2.7rem; bottom: .7rem; margin: 0; color: #825b69; font: 500 .42rem var(--mono); letter-spacing: .08em; }

.visa-map { position: absolute; inset: 0; opacity: .08; background-image: radial-gradient(ellipse at 50% 52%, transparent 0 12%, var(--navy) 12.3% 12.6%, transparent 13% 19%, var(--navy) 19.3% 19.6%, transparent 20% 27%, var(--navy) 27.3% 27.6%, transparent 28%); transform: scale(1.3); }
.passport-page--visa header { display: grid; grid-template-columns: 1fr auto; }
.passport-page--visa header b { display: flex; align-items: center; gap: .6rem; font-size: .72rem; }
.passport-page--visa header i { color: #bc5a85; font-style: normal; }
.visa-route { position: relative; z-index: 2; display: grid; grid-template-columns: auto minmax(70px,1fr) auto; align-items: center; gap: .7rem; margin: 2.6rem 0 2rem; }
.visa-route > span { display: grid; }
.visa-route > span:last-child { text-align: right; }
.visa-route small { color: #6e8586; font: 500 .45rem var(--mono); }
.visa-route b { color: var(--navy); font: 500 clamp(1.8rem, 3vw, 2.6rem) var(--mono); }
.visa-route em { color: #687f82; font: normal 500 .5rem var(--mono); }
.visa-route > i { position: relative; height: 1px; background: rgba(8,45,89,.4); }
.visa-route > i::after { content: "✈"; position: absolute; left: 50%; top: 50%; padding: .15rem; color: #b64f7c; background: var(--paper); font-style: normal; transform: translate(-50%,-50%); }
.visa-data { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 0; padding: 1rem; border: 1px solid rgba(8,45,89,.2); background: rgba(255,255,255,.27); }
.passport-page--visa blockquote { position: relative; z-index: 2; max-width: 78%; margin: 1.3rem 0 0; padding: 1rem 1.2rem; border-left: 3px solid #b85582; color: #254b61; font-size: .72rem; font-weight: 700; line-height: 1.75; }
.entry-code { position: absolute; z-index: 2; right: 2.4rem; bottom: 2.4rem; display: grid; grid-template-columns: repeat(9, 4px); grid-auto-rows: 4px; gap: 1px; width: 44px; height: 44px; padding: 1px; background: rgba(255,255,255,.5); }
.entry-code i { display: block; background: transparent; }
.entry-code i.on { background: var(--navy); }
.arrival-seal { position: absolute; z-index: 4; right: 12%; bottom: 19%; display: grid; place-items: center; width: 165px; aspect-ratio: 1; border: 5px double rgba(177,54,104,.74); border-radius: 50%; color: rgba(177,54,104,.78); font-family: var(--mono); transform: rotate(-14deg) scale(2.2); opacity: 0; }
.issued.is-stamped .arrival-seal { animation: stamp .6s .35s cubic-bezier(.2,1.55,.45,1) forwards; }
.arrival-seal::before { content: ""; position: absolute; inset: 9px; border: 1px dashed currentColor; border-radius: inherit; }
.arrival-seal small { font-size: .48rem; letter-spacing: .12em; }
.arrival-seal strong { font-size: 1.45rem; letter-spacing: .12em; }
.arrival-seal span { font-size: .5rem; }
.arrival-seal b { font-size: .48rem; letter-spacing: .08em; }
.visa-caption { position: absolute; left: 2.7rem; bottom: 2.5rem; margin: 0; color: #5f7377; font-size: .6rem; font-weight: 800; }
.issued__actions { display: flex; justify-content: center; align-items: center; gap: 1.5rem; margin-top: 3rem; }
.download-button { min-width: 260px; }
.share-button { padding: .9rem 1.2rem; border: 1px solid var(--navy); border-radius: 8px; color: var(--navy); background: white; text-decoration: none; }
.issued__privacy { max-width: 640px; margin: 1.5rem auto 0; color: #738b9f; font-size: .58rem; line-height: 1.7; text-align: center; }

@keyframes pulse { 50% { box-shadow: 0 0 0 8px rgba(28,196,135,0); } }
@keyframes cover-float { 50% { transform: rotateY(-5deg) rotateZ(1deg) translateY(-10px); } }
@keyframes cover-shine { 0%,35% { transform: translateX(-70%); } 70%,100% { transform: translateX(70%); } }
@keyframes step-in { from { opacity: 0; transform: translateX(22px); filter: blur(4px); } }
@keyframes scan { to { top: calc(100% - 2px); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes inspect-logo { 50% { transform: scale(.92); filter: drop-shadow(0 0 16px rgba(73,205,244,.5)); } }
@keyframes issued-title { from { opacity: 0; transform: translateY(20px); } }
@keyframes book-enter { from { opacity: 0; transform: perspective(1600px) rotateX(18deg) scale(.92) translateY(60px); } }
@keyframes stamp { 55% { opacity: .85; transform: rotate(-14deg) scale(.88); } 100% { opacity: .78; transform: rotate(-14deg) scale(1); } }

@media (max-width: 1050px) {
  .passport-hero { grid-template-columns: 1fr 340px; gap: 3rem; }
  .terminal { grid-template-columns: 230px minmax(0, 1fr); }
  .terminal__rail { padding-left: 1.4rem; padding-right: 1.4rem; }
  .passport-page { min-height: 570px; }
  .identity-layout { grid-template-columns: 135px 1fr; }
  .issued-photo { height: 255px; }
}

@media (max-width: 820px) {
  .secure-status { display: none; }
  .passport-hero { grid-template-columns: 1fr; min-height: auto; padding: 5rem 0 7rem; text-align: center; }
  .passport-hero__copy > p:not(.overline) { margin-left: auto; margin-right: auto; }
  .hero-facts { justify-content: center; }
  .passport-cover { width: min(330px, 78vw); }
  .terminal { grid-template-columns: 1fr; }
  .terminal__rail { display: block; padding: 1.2rem; }
  .terminal__rail > p, .privacy-note { display: none; }
  .terminal__rail ol { grid-template-columns: repeat(4, 1fr); gap: .4rem; }
  .terminal__rail ol::before { left: 12%; right: 12%; top: 16px; bottom: auto; width: auto; height: 1px; }
  .terminal__rail li { flex-direction: column; gap: .45rem; text-align: center; }
  .terminal__rail li.is-current { transform: none; }
  .terminal__rail li span { font-size: .58rem; }
  .terminal__rail li small { display: none; }
  .passport-book { grid-template-columns: 1fr; max-width: 730px; padding: 12px; }
  .passport-book__spine { display: none; }
  .passport-page--identity { border-radius: 5px 5px 0 0; box-shadow: inset 0 -12px 20px rgba(75,55,20,.1); }
  .passport-page--visa { border-radius: 0 0 8px 8px; box-shadow: inset 0 12px 20px rgba(75,55,20,.08); }
}

@media (max-width: 620px) {
  .passport-header { width: calc(100% - 2rem); }
  .passport-brand img { width: 44px; }
  .passport-brand small, .back-link span { display: none; }
  .back-link { margin-left: auto; font-size: .64rem; }
  .passport-hero { width: calc(100% - 2rem); }
  .passport-hero h1 { font-size: clamp(2.4rem, 12vw, 4rem); line-height: 1.3; }
  .passport-hero__copy > p:not(.overline) br { display: none; }
  .hero-facts { display: grid; justify-content: stretch; }
  .hero-facts li { justify-content: center; }
  .terminal { width: calc(100% - 1rem); border-radius: 16px; }
  .terminal__rail { padding: 1rem .6rem; }
  .terminal__rail li span { font-size: .5rem; }
  .terminal__desk { padding: 0 1rem 1.5rem; }
  .terminal__topline { margin-bottom: 2rem; }
  .terminal__topline > div { padding: .9rem .45rem; }
  .terminal__topline span { font-size: .42rem; }
  .terminal__topline b { font-size: .5rem; }
  .step-heading { align-items: flex-start; gap: .75rem; }
  .step-heading > span { width: 38px; height: 38px; }
  .step-heading h2 { font-size: 1.55rem; line-height: 1.4; }
  .step-lead { margin: 1rem 0 1.7rem; }
  .field-grid, .purpose-grid, .biometric-grid { grid-template-columns: 1fr; }
  .purpose-grid label > span { min-height: 96px; }
  .biometric-grid { gap: 2.2rem; }
  .portrait-preview { width: min(210px, 70vw); }
  #signature-pad { height: 190px; }
  .step-actions { flex-wrap: wrap; }
  .step-actions > span { width: 100%; margin: 0; }
  .next-button { width: 100%; order: 1; }
  .back-button { order: 2; margin: .5rem auto 0; }
  .issued { width: calc(100% - .5rem); }
  .passport-book { padding: 7px; border-radius: 6px 10px 10px 6px; box-shadow: 0 20px 50px rgba(7,40,75,.25), -3px 5px 0 #041d39; }
  .passport-page { min-height: 530px; padding: 1.2rem; }
  .identity-layout { grid-template-columns: 105px 1fr; gap: .75rem; }
  .issued-photo { height: 200px; }
  .identity-data { gap: .58rem .45rem; }
  .identity-data dt { font-size: .38rem; }
  .identity-data dd { font-size: .48rem; }
  .signature-output dd { height: 35px; }
  .mrz { left: 1.2rem; right: 1.2rem; font-size: .45rem; }
  .fiction-mark { left: 1.2rem; font-size: .34rem; }
  .visa-route { margin-top: 2rem; }
  .visa-data { gap: .8rem; padding: .75rem; }
  .passport-page--visa blockquote { max-width: 100%; font-size: .64rem; }
  .arrival-seal { width: 130px; right: 10%; bottom: 20%; }
  .entry-code { right: 1.2rem; bottom: 1.8rem; }
  .visa-caption { left: 1.2rem; bottom: 2rem; max-width: 180px; }
  .issued__actions { flex-direction: column; }
  .download-button { width: min(300px, 100%); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* v2 — shared navigation and arrival-control experience */
.passport-site-header { background: rgba(247,253,255,.84); border-bottom-color: rgba(7,61,121,.08); backdrop-filter: blur(18px) saturate(1.18); }
.passport-site-header.is-scrolled { background: rgba(255,255,255,.95); border-color: var(--line); box-shadow: 0 9px 30px rgba(7,61,121,.08); }
.passport-site-header .is-current { color: var(--pink); }
.passport-site-header .nav-gallery::after { content: none; }
.passport-site-header .nav-passport { color: var(--navy); border: 0; background: transparent; box-shadow: none; }
.passport-site-header .nav-passport:hover { color: var(--pink); }
.passport-site-header .nav-passport.is-current { color: var(--pink); }
.passport-hero { padding-top: clamp(8rem, 12vw, 11rem); }

.terminal { position: relative; grid-template-columns: 270px minmax(0,1fr); grid-template-rows: auto 1fr; border: 8px solid #082d59; border-radius: 12px 28px 28px 12px; background: #082d59; box-shadow: 0 36px 90px rgba(5,35,68,.22), -10px 12px 0 #041d3a; backdrop-filter: none; }
.terminal::before { content: ""; position: absolute; z-index: 5; right: 19px; top: 19px; width: 6px; height: 6px; border-radius: 50%; background: #62efbd; box-shadow: 0 0 0 5px rgba(98,239,189,.12), 0 0 18px #62efbd; }
.terminal__marquee { grid-column: 1 / -1; position: relative; z-index: 3; display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 2rem; min-height: 96px; padding: 1.25rem 2.2rem; border-bottom: 1px solid rgba(255,255,255,.15); color: white; background: linear-gradient(90deg, #061d3b, #0a3d6b 70%, #09345f); overflow: hidden; }
.terminal__marquee::after { content: "ARRIVALS  到着  ARRIVALS  到着  ARRIVALS"; position: absolute; right: 3%; bottom: -11px; color: rgba(255,255,255,.04); font: 900 3.2rem/1 var(--round); letter-spacing: .05em; white-space: nowrap; }
.terminal__marquee-light { width: 10px; height: 10px; border-radius: 50%; background: #62efbd; box-shadow: 0 0 0 6px rgba(98,239,189,.11); }
.terminal__marquee > div { display: grid; gap: .25rem; margin-left: -1rem; }
.terminal__marquee small, .terminal__marquee p span { color: #78dff7; font: 500 .54rem var(--mono); letter-spacing: .14em; }
.terminal__marquee strong { font-size: 1.05rem; font-weight: 900; letter-spacing: .06em; }
.terminal__marquee p { position: relative; z-index: 1; display: grid; gap: .18rem; min-width: 90px; margin: 0; padding-left: 1.4rem; border-left: 1px solid rgba(255,255,255,.2); }
.terminal__marquee p b { font: 500 .72rem var(--mono); letter-spacing: .08em; }
.terminal__marquee .on-time { color: #62efbd; }

.terminal__rail { grid-column: 1; grid-row: 2; padding: 2.3rem 1.6rem; background: linear-gradient(165deg, #082c57, #061f40); }
.terminal__rail > p { color: #77daf3; }
.terminal__rail li b { background: #082c57; }
.terminal__desk { grid-column: 2; grid-row: 2; margin: 0; padding: 0 clamp(1.6rem,4vw,4.2rem) 3.2rem; overflow: hidden; background-color: #fbfaf3; background-image: linear-gradient(rgba(15,63,94,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(15,63,94,.035) 1px, transparent 1px), radial-gradient(circle at 92% 72%, rgba(46,184,217,.08), transparent 22%); background-size: 28px 28px, 28px 28px, auto; }
.terminal__desk::before { content: "SRGR"; position: absolute; right: -3rem; top: 15%; color: rgba(8,45,89,.028); font: 900 11rem/1 var(--round); transform: rotate(-90deg); pointer-events: none; }
.landing-card-label { display: flex; align-items: baseline; gap: 1rem; margin: 0 calc(clamp(1.6rem,4vw,4.2rem) * -1); padding: .75rem clamp(1.6rem,4vw,4.2rem); color: #45667e; background: #e4f2f4; border-bottom: 1px solid rgba(8,45,89,.13); }
.landing-card-label span, .landing-card-label small { font: 500 .48rem var(--mono); letter-spacing: .1em; }
.landing-card-label b { color: var(--navy); font: 500 .68rem var(--mono); letter-spacing: .13em; }
.landing-card-label small { margin-left: auto; }
.terminal__topline { position: relative; z-index: 1; margin-bottom: clamp(2.2rem,4vw,3.6rem); background: rgba(255,255,255,.48); }
.form-step { position: relative; z-index: 1; }
.step-watermark { position: absolute; z-index: -1; right: -1.5rem; top: -1rem; color: rgba(8,45,89,.035); font: 900 clamp(4rem,9vw,8.5rem)/1 var(--round); letter-spacing: -.07em; pointer-events: none; }
.step-heading > span { border: 0; color: white; background: var(--navy); box-shadow: 4px 4px 0 var(--sky); }
.field > span { display: flex; align-items: center; gap: .35rem; letter-spacing: .02em; }
.field input, .field textarea { border-width: 0 0 2px; border-color: rgba(8,45,89,.24); border-radius: 0; background: rgba(255,255,255,.36); box-shadow: inset 0 -1px 0 rgba(255,255,255,.8); }
.field input:focus, .field textarea:focus { border-color: var(--sky); background: rgba(255,255,255,.82); box-shadow: inset 0 -3px 0 rgba(73,205,244,.16); }
.purpose-grid label > span { border-radius: 4px 14px 14px 4px; background: rgba(255,255,255,.52); }
.purpose-grid input:checked + span { border-color: #0b4779; box-shadow: 6px 6px 0 rgba(73,205,244,.35), inset 5px 0 0 var(--sky); }
.portrait-preview { border-radius: 2px; background-color: #e4f1f4; background-image: linear-gradient(rgba(8,45,89,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(8,45,89,.055) 1px, transparent 1px); background-size: 14px 14px; }
#signature-pad { border-radius: 2px; background-color: rgba(250,249,241,.85); background-image: repeating-linear-gradient(0deg, transparent 0 34px, rgba(8,45,89,.065) 34px 35px); }
.step-actions { border-top-style: dashed; }

/* v2 — detailed passport security artwork */
.passport-page { isolation: isolate; border: 1px solid rgba(108,84,34,.22); background-color: #f4efd9; background-image: repeating-radial-gradient(ellipse at 14% 24%, transparent 0 9px, rgba(10,86,112,.035) 10px 11px), repeating-radial-gradient(ellipse at 86% 74%, transparent 0 13px, rgba(179,61,125,.03) 14px 15px), linear-gradient(90deg, rgba(36,140,164,.06), transparent 33%, rgba(190,73,131,.045)); }
.passport-page::before { content: ""; position: absolute; z-index: 0; inset: 7px; border: 1px solid rgba(8,45,89,.12); pointer-events: none; }
.passport-page::after { content: "SORAGURA • SORAGURA • SORAGURA • SORAGURA • SORAGURA • SORAGURA •"; position: absolute; z-index: 0; left: -5%; right: -5%; top: 49%; overflow: hidden; color: rgba(8,45,89,.055); font: 500 .48rem var(--mono); letter-spacing: .28em; white-space: nowrap; transform: rotate(-7deg); }
.uv-fibers { position: absolute; inset: 0; z-index: 0; opacity: .55; pointer-events: none; background-image: linear-gradient(112deg, transparent 18%, rgba(22,145,183,.16) 18.2% 18.5%, transparent 18.7%), linear-gradient(27deg, transparent 61%, rgba(210,58,139,.12) 61.2% 61.5%, transparent 61.7%), linear-gradient(153deg, transparent 42%, rgba(214,164,50,.14) 42.1% 42.35%, transparent 42.5%); background-size: 93px 71px, 117px 89px, 83px 103px; }
.security-band { position: relative; z-index: 2; margin: .5rem 0 0; padding: .26rem .45rem; overflow: hidden; border-top: 1px solid rgba(8,45,89,.16); border-bottom: 1px solid rgba(8,45,89,.16); color: rgba(8,45,89,.62); background: repeating-linear-gradient(90deg, rgba(33,153,180,.09) 0 7px, rgba(190,68,130,.07) 7px 14px); font: 500 .36rem var(--mono); letter-spacing: .12em; white-space: nowrap; }
.document-meta { position: relative; z-index: 2; display: flex; gap: 1.4rem; padding: .7rem 0 .15rem; }
.document-meta span { display: grid; grid-template-columns: auto auto; align-items: baseline; gap: .35rem; }
.document-meta small { color: #688184; font: 500 .39rem var(--mono); letter-spacing: .08em; }
.document-meta b { color: #082d59; font: 500 .62rem var(--mono); }
.identity-layout { margin-top: .55rem; }
.passport-serial { position: absolute; z-index: 2; right: .35rem; top: 29%; color: rgba(8,45,89,.4); font: 500 .36rem var(--mono); letter-spacing: .12em; writing-mode: vertical-rl; }
.ghost-photo { position: absolute; z-index: 2; right: 4.5%; bottom: 22%; display: grid; place-items: center; width: 76px; aspect-ratio: .82; overflow: hidden; border: 1px solid rgba(8,45,89,.16); opacity: .2; mix-blend-mode: multiply; }
.ghost-photo img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.25); }
.ghost-photo span { color: var(--navy); font: 500 .48rem var(--mono); }
.page-number { position: absolute; z-index: 3; right: 1rem; bottom: .65rem; color: rgba(8,45,89,.56); font: 500 .38rem var(--mono); letter-spacing: .1em; }
.passport-page--visa .page-number { left: 1rem; right: auto; }
.visa-cityline { position: absolute; z-index: 0; left: 0; right: 0; bottom: 0; height: 170px; margin: 0; overflow: hidden; opacity: .13; mask-image: linear-gradient(to bottom, transparent, black 55%); filter: grayscale(1) sepia(.3) hue-rotate(140deg); }
.visa-cityline img { width: 100%; height: 100%; object-fit: cover; }
.visa-microtype { position: absolute; z-index: 2; left: 2.7rem; right: 2.7rem; bottom: 1rem; overflow: hidden; color: rgba(8,45,89,.43); font: 500 .34rem var(--mono); letter-spacing: .12em; white-space: nowrap; }
.entry-code { box-shadow: 0 0 0 4px rgba(255,255,255,.35), 0 0 0 5px rgba(8,45,89,.15); }
.arrival-seal { background: rgba(244,239,217,.32); backdrop-filter: blur(1px); }

@media (max-width: 1120px) {
  .passport-site-header .site-nav { gap: .8rem; }
  .passport-site-header .site-nav a { font-size: .68rem; }
  .terminal { grid-template-columns: 230px minmax(0,1fr); }
}

@media (max-width: 980px) {
  .passport-site-header .site-nav { gap: 0; }
  .passport-site-header .site-nav { height: 100dvh; max-height: 100dvh; overflow-y: auto; }
  .passport-site-header .site-nav a { font-size: 1rem; }
  .terminal { grid-template-columns: 1fr; grid-template-rows: auto auto 1fr; }
  .terminal__marquee { grid-row: 1; }
  .terminal__rail { grid-column: 1; grid-row: 2; }
  .terminal__desk { grid-column: 1; grid-row: 3; }
}

@media (max-width: 680px) {
  .passport-site-header { padding-top: .85rem; }
  .passport-hero { padding-top: 7.5rem; }
  .terminal { width: calc(100% - .75rem); border-width: 5px; border-radius: 9px 18px 18px 9px; box-shadow: 0 22px 55px rgba(5,35,68,.2), -4px 6px 0 #041d3a; }
  .terminal__marquee { grid-template-columns: 1fr auto; gap: .6rem; min-height: 82px; padding: 1rem; }
  .terminal__marquee-light { display: none; }
  .terminal__marquee > div { margin: 0; }
  .terminal__marquee strong { font-size: .78rem; }
  .terminal__marquee p { min-width: 63px; padding-left: .65rem; }
  .terminal__marquee p:last-child { display: none; }
  .landing-card-label { margin-left: -1rem; margin-right: -1rem; padding-left: 1rem; padding-right: 1rem; }
  .landing-card-label small { display: none; }
  .document-meta { gap: .65rem; }
  .document-meta span { display: grid; gap: .15rem; }
  .document-meta small { font-size: .32rem; }
  .document-meta b { font-size: .48rem; }
  .security-band { font-size: .28rem; }
  .ghost-photo { width: 48px; right: 3%; bottom: 25%; }
  .passport-serial { display: none; }
  .visa-microtype { left: 1.2rem; right: 1.2rem; }
}

/* v3 — restrained arrival card */
.terminal {
  grid-template-columns: 1fr;
  grid-template-rows: auto auto 1fr;
  width: min(1160px, calc(100% - 3rem));
  border: 1px solid rgba(8,45,89,.18);
  border-radius: 20px;
  background: rgba(255,255,255,.94);
  box-shadow: 0 24px 70px rgba(8,45,89,.12);
}

.terminal::before { display: none; }
.terminal__marquee {
  grid-column: 1;
  grid-row: 1;
  min-height: 76px;
  padding: 1rem 1.6rem;
  color: var(--navy);
  border-bottom: 1px solid rgba(8,45,89,.12);
  background: #edf8fb;
}
.terminal__marquee::after { content: none; }
.terminal__marquee-light { width: 8px; height: 8px; background: #2bbf87; box-shadow: 0 0 0 5px rgba(43,191,135,.1); }
.terminal__marquee small, .terminal__marquee p span { color: #64849b; }
.terminal__marquee > div { margin-left: -.8rem; }
.terminal__marquee strong { font-size: .9rem; letter-spacing: .04em; }
.terminal__marquee p { border-color: rgba(8,45,89,.13); }
.terminal__marquee p b { color: var(--navy); }
.terminal__marquee .on-time { color: #16835e; }
.terminal__rail {
  grid-column: 1;
  grid-row: 2;
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  align-items: center;
  gap: 2rem;
  padding: 1.15rem 1.6rem;
  color: var(--navy);
  border-bottom: 1px solid rgba(8,45,89,.1);
  background: #fff;
}
.terminal__rail > p { margin: 0; color: #718a9d; white-space: nowrap; }
.terminal__rail ol { grid-template-columns: repeat(4,1fr); gap: .7rem; }
.terminal__rail ol::before { left: 8%; right: 8%; top: 16px; bottom: auto; width: auto; height: 1px; background: rgba(8,45,89,.14); }
.terminal__rail li { flex-direction: column; gap: .4rem; color: var(--navy); text-align: center; }
.terminal__rail li.is-current { transform: none; }
.terminal__rail li b { color: var(--navy); border-color: rgba(8,45,89,.26); background: white; }
.terminal__rail li.is-current b { color: white; border-color: var(--navy); background: var(--navy); box-shadow: 0 0 0 5px rgba(73,205,244,.13); }
.terminal__rail li.is-complete b { color: #16835e; border-color: #61cfa8; }
.terminal__rail li small { color: #8298a8; }
.terminal__rail .privacy-note { display: none; }
.terminal__desk {
  grid-column: 1;
  grid-row: 3;
  padding: 0 clamp(1.5rem,5vw,5rem) 3.5rem;
  background-color: rgba(255,255,255,.96);
  background-image: linear-gradient(rgba(8,45,89,.018) 1px, transparent 1px), linear-gradient(90deg, rgba(8,45,89,.018) 1px, transparent 1px);
  background-size: 32px 32px;
}
.terminal__desk::before, .step-watermark { display: none; }
.landing-card-label { color: #6a8497; background: #f6fbfc; }
.terminal__topline { margin-bottom: clamp(2.2rem,4vw,3.4rem); background: transparent; }
.form-step { max-width: 900px; margin: 0 auto; }
.form-step--issuing { max-width: none; }
.step-heading > span { box-shadow: none; }
.field input, .field textarea { background: rgba(247,252,253,.72); }
.purpose-grid input:checked + span { box-shadow: inset 4px 0 0 var(--sky), 0 7px 20px rgba(8,45,89,.07); }

@media (max-width: 760px) {
  .terminal { width: calc(100% - 1rem); border-radius: 15px; box-shadow: 0 16px 44px rgba(8,45,89,.11); }
  .terminal__marquee { grid-template-columns: 1fr auto; min-height: 70px; padding: .9rem 1rem; }
  .terminal__marquee-light { display: none; }
  .terminal__marquee > div { margin: 0; }
  .terminal__rail { display: block; padding: 1rem .65rem; }
  .terminal__rail > p { display: none; }
  .terminal__rail ol { gap: .35rem; }
  .terminal__rail li span { font-size: .54rem; }
  .terminal__rail li small { display: none; }
  .terminal__desk { padding-left: 1rem; padding-right: 1rem; }
}

/* v4 — calm, legible application form */
.terminal {
  grid-template-rows: auto auto 1fr;
  border-color: rgba(8,45,89,.12);
  background: #fff;
  box-shadow: 0 22px 65px rgba(8,45,89,.1);
  scroll-margin-top: 7rem;
}
.terminal__intro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  padding: 1.7rem clamp(1.25rem,4vw,3rem);
  border-bottom: 1px solid rgba(8,45,89,.1);
  background: #fff;
}
.terminal__intro > div > p { margin: 0 0 .32rem; color: #64849b; font: 500 .55rem var(--mono); letter-spacing: .12em; }
.terminal__intro h2 { margin: 0; color: var(--navy); font-size: clamp(1.2rem,2vw,1.55rem); font-weight: 900; letter-spacing: -.025em; }
.terminal__privacy { max-width: 350px; margin: 0; padding-left: 1.7rem; color: #58748d; font-size: .72rem; font-weight: 700; line-height: 1.65; }
.terminal__privacy::before { content: "✓"; display: inline-grid; place-items: center; width: 1.25rem; height: 1.25rem; margin-left: -1.7rem; margin-right: .45rem; border-radius: 50%; color: #fff; background: #16835e; font-size: .7rem; }
.terminal__rail { display: block; padding: 1.2rem clamp(.8rem,3vw,2rem); }
.terminal__rail ol { max-width: 760px; margin: 0 auto; }
.terminal__desk { padding: clamp(2.5rem,5vw,4.5rem) clamp(1.5rem,5vw,5rem) 3.5rem; background: #fff; }
.form-step { max-width: 820px; }
.form-step--issuing { max-width: none; }
.step-heading > span { width: 44px; height: 44px; border: 0; color: #fff; background: var(--navy); }
.step-heading p { color: #6b8295; letter-spacing: .08em; }
.step-lead { margin: 1.4rem 0 1.45rem; color: #4e6c84; font-size: .86rem; }
.required-note { display: flex; align-items: center; gap: .55rem; margin: 0 0 1.6rem; color: #5e768a; font-size: .68rem; font-weight: 700; }
.required-note span, .required-badge { display: inline-flex; align-items: center; min-height: 1.35rem; padding: .15rem .5rem; border-radius: 5px; color: #9c285f; background: #fff0f7; font-size: .58rem; font-weight: 900; line-height: 1; }
.field-grid { gap: 1.6rem 1.4rem; }
.field { gap: .55rem; }
.field > span { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem; color: #163c60; font-size: .76rem; }
.field > span small { margin-left: 0; color: #718a9d; font-size: .49rem; }
.field input, .field textarea {
  min-height: 56px;
  padding: .9rem 1rem;
  border: 2px solid #b9c8d3;
  border-radius: 9px;
  color: #082d59;
  background: #fff;
  box-shadow: none;
  font-size: 1rem;
  font-weight: 700;
}
.field input::placeholder, .field textarea::placeholder { color: #71879a; opacity: 1; font-weight: 500; }
.field input:hover, .field textarea:hover { border-color: #66859d; }
.field input:focus, .field textarea:focus { border-color: #0879b8; background: #fff; box-shadow: 0 0 0 4px rgba(8,121,184,.16); }
.field input:user-invalid, .field textarea:user-invalid { border-color: #c63868; box-shadow: 0 0 0 3px rgba(198,56,104,.1); }
.field-hint { color: #587186; font-size: .64rem; font-weight: 600; line-height: 1.65; }
.step-actions { margin-top: 2.6rem; padding-top: 1.7rem; }
.step-actions > span { color: #647d91; font-size: .64rem; line-height: 1.6; }
.next-button { min-height: 52px; border-radius: 10px; box-shadow: none; }
.next-button:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(8,45,89,.16); }

@media (max-width: 760px) {
  .terminal__intro { align-items: flex-start; flex-direction: column; gap: .8rem; padding: 1.25rem 1rem; }
  .terminal__privacy { max-width: none; }
  .required-note { margin-left: 0; }
  .terminal__desk { padding-top: 2rem; }
  .field input, .field textarea { font-size: 16px; }
}

/* Passport typography — editorial serif for human data, mono for machine data */
.issued__heading h2 { font-family: var(--document-serif); font-weight: 900; letter-spacing: -.035em; }
.passport-page { font-family: var(--document-serif); font-feature-settings: "palt" 1; }
.passport-page header { font-family: var(--document-display); font-size: .68rem; font-weight: 700; letter-spacing: .16em; }
.passport-page header b { font-family: var(--document-display); font-size: .82rem; font-weight: 700; }
.passport-page header small { font-family: var(--document-display); font-weight: 700; }
.identity-data dt, .visa-data dt { font-family: var(--mono); }
.identity-data dd, .visa-data dd { font-family: var(--document-serif); font-weight: 700; letter-spacing: .035em; }
.identity-data dd[id="out-number"], .identity-data dd[id="out-roman"], .identity-data dd[id="out-birth"], .identity-data dd[id="out-issued"], .document-meta, .passport-serial, .mrz { font-family: var(--mono); }
.passport-page--visa blockquote { font-family: var(--document-serif); font-weight: 700; line-height: 1.9; }
.visa-route b { font-family: var(--document-display); font-weight: 700; letter-spacing: .04em; }
.visa-route em, .visa-route small, .fiction-mark, .visa-microtype { font-family: var(--mono); }
.arrival-seal strong { font-family: var(--document-display); font-size: 1.75rem; font-weight: 700; letter-spacing: .08em; }
