:root{
  --vf1d-paper:#fbf3e4;
  --vf1d-index:#f6eedf;
  --vf1d-ink:#101c35;
  --vf1d-red:#a44f3f;
  --vf1d-rule:#dcceb9;
  --vf1d-cover:#6e302c;
}
body[data-shell-variant="passport"]{overflow:hidden;background:#d7b98f}
body[data-shell-variant="passport"] .app-header,
body[data-shell-variant="passport"] #globalNavigation,
body[data-shell-variant="passport"] #immersiveReturnBar,
body[data-shell-variant="passport"] #devModeBanner,
body[data-shell-variant="passport"]>footer{display:none!important}
body[data-shell-variant="passport"] main.wrap{width:100%;max-width:none;margin:0;padding:0}

.passport-vf1d-screen{
  position:fixed;inset:0;z-index:50;width:100%;height:100dvh;margin:0!important;overflow:hidden;
  background:linear-gradient(116deg,#dec8aa,#d2b894 52%,#c7a67e);color:var(--vf1d-ink)
}
.passport-vf1d-runtime{
  --vf1d-object-w:min(620px,calc(100vw - 4px));
  width:100%;height:100%;display:flex;justify-content:center;align-items:flex-start;box-sizing:border-box;
  overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch
}
.vf1d-close,.vf1d-index-return{
  position:absolute;z-index:9;min-width:44px;min-height:44px;border:1px solid rgba(138,117,101,.42);
  background:rgba(255,249,238,.36);color:#5f574f;cursor:pointer
}
.vf1d-close{right:max(14px,calc(env(safe-area-inset-right) + 8px));top:max(14px,calc(env(safe-area-inset-top) + 8px));border-radius:50%;font:400 24px/1 Inter,system-ui}
.vf1d-index-return{left:max(14px,calc(env(safe-area-inset-left) + 8px));top:max(14px,calc(env(safe-area-inset-top) + 8px));width:112px;border:0;background:transparent;color:var(--vf1d-red);text-align:left;font:700 12px/1 Inter,system-ui;letter-spacing:1.1px}

/* Closed Passport and open leaves share one physical object-width authority. Height is canonical 440:956. */
.vf1d-cover{
  position:relative;flex:0 0 auto;width:var(--vf1d-object-w);aspect-ratio:440/956;margin-block:auto;
  background:#6e302c;box-shadow:0 16px 38px rgba(69,35,27,.32);overflow:hidden;container-type:inline-size
}
.vf1d-cover:before{content:"";position:absolute;z-index:0;left:2.273cqi;right:2.273cqi;top:1.046%;bottom:1.046%;border-radius:6.82cqi;background:rgba(139,64,55,.22);pointer-events:none}
.vf1d-cover:after{content:"";position:absolute;z-index:1;left:5.455cqi;right:5.455cqi;top:2.51%;bottom:2.51%;border:1px solid rgba(216,183,122,.72);border-radius:5.455cqi;pointer-events:none}
.vf1d-cover-open{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;color:#e7cf91;display:block;cursor:pointer;padding:0;font:inherit}
.vf1d-cover-open:before{content:"";position:absolute;z-index:1;left:7.727cqi;right:7.727cqi;top:3.556%;bottom:3.556%;border:1px solid rgba(216,183,122,.28);border-radius:4.545cqi;pointer-events:none}
.vf1d-cover-open:after{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(#d8b77a,#d8b77a) 11.818cqi 7.95%/19.545cqi 2px no-repeat,linear-gradient(rgba(216,183,122,.56),rgba(216,183,122,.56)) 11.818cqi 8.58%/12.273cqi 1px no-repeat,linear-gradient(#d8b77a,#d8b77a) 68.636cqi 7.95%/19.545cqi 2px no-repeat,linear-gradient(rgba(216,183,122,.56),rgba(216,183,122,.56)) 75.909cqi 8.58%/12.273cqi 1px no-repeat,linear-gradient(#d8b77a,#d8b77a) 11.818cqi 91.00%/19.545cqi 2px no-repeat,linear-gradient(rgba(216,183,122,.56),rgba(216,183,122,.56)) 11.818cqi 90.38%/12.273cqi 1px no-repeat,linear-gradient(#d8b77a,#d8b77a) 68.636cqi 91.00%/19.545cqi 2px no-repeat,linear-gradient(rgba(216,183,122,.56),rgba(216,183,122,.56)) 75.909cqi 90.38%/12.273cqi 1px no-repeat;opacity:.72}
.vf1d-cover-open>span,.vf1d-cover-open>img{position:absolute;z-index:2;display:block}
.vf1d-cover .vf1d-close{top:max(5.02%,calc(env(safe-area-inset-top) + 8px));right:max(5.455cqi,calc(env(safe-area-inset-right) + 8px));width:max(44px,10cqi);height:max(44px,10cqi);color:#f6e8ca;border-color:rgba(224,193,138,.45);background:rgba(74,25,22,.12);font-size:max(24px,5.455cqi)}
.vf1d-cover-brand{left:0;top:11.506%;width:100%;height:2.092%;font:600 2.727cqi/1.65 Inter,system-ui;letter-spacing:.545cqi;text-align:center;color:#e4c994}
.vf1d-cover-record{left:0;top:15.063%;width:100%;height:2.092%;font:500 2.5cqi/1.65 Inter,system-ui;letter-spacing:.273cqi;text-align:center;color:#d8b77a}
.vf1d-cover-mon{left:32.5%;top:26.151%;width:35%;height:auto;object-fit:contain}
.vf1d-cover-title{left:10.909%;top:47.49%;width:78.182%;height:8.787%;font:700 6.364cqi/7.727cqi Inter,system-ui;letter-spacing:.295cqi;text-align:center;color:#f6e8ca}
.vf1d-cover-mytrip{left:10.909%;top:57.741%;width:78.182%;height:2.51%;font:600 2.955cqi/1.85 Inter,system-ui;letter-spacing:.727cqi;text-align:center;color:#e0c18a}
.vf1d-cover-title-rule{left:35%;top:63.18%;width:30%;height:1px;background:rgba(216,183,122,.55)}
.vf1d-cover-footer{left:10.909%;top:83.682%;width:78.182%;height:1.883%;font:500 2.273cqi/1.8 Inter,system-ui;letter-spacing:.318cqi;text-align:center;color:#cfae78}

/* Runtime owns the only constrained vertical scroll. Leaves never scroll independently. */
.vf1d-book-frame{
  position:relative;flex:0 0 auto;width:100%;min-height:100%;display:flex;justify-content:center;align-items:flex-start;
  overflow:visible;box-sizing:border-box
}
.vf1d-book{
  position:relative;flex:0 0 auto;width:var(--vf1d-object-w);aspect-ratio:440/956;margin-block:auto;
  border:10px solid var(--vf1d-cover);border-radius:18px;background:var(--vf1d-cover);
  box-shadow:0 10px 28px rgba(91,56,43,.26);box-sizing:border-box;overflow:hidden
}
.vf1d-book-track{
  --vf1d-drag-x:0px;position:relative;width:100%;height:100%;overflow:hidden;touch-action:pan-y;user-select:none;
  background:var(--vf1d-paper);isolation:isolate
}
.vf1d-leaf{
  position:absolute;z-index:1;top:0;bottom:0;left:0;width:100%;box-sizing:border-box;overflow:visible;
  visibility:hidden;opacity:0;pointer-events:none;background:var(--vf1d-paper);container-type:inline-size;
  padding:max(10cqi,calc(env(safe-area-inset-top) + 56px)) 7.2cqi 5cqi;color:var(--vf1d-ink);
  font-size:clamp(13px,3.18cqi,21px);line-height:1.35;transform:translateX(7%);
  transition:transform .2s ease,opacity .16s ease;will-change:transform,opacity
}
.vf1d-leaf.is-visible{z-index:2;visibility:visible;opacity:1;pointer-events:auto;transform:translateX(var(--vf1d-drag-x))}
.vf1d-book-track.is-dragging .vf1d-leaf.is-visible{transition:none;filter:drop-shadow(0 8px 10px rgba(63,42,34,.12))}
.vf1d-leaf:before,.vf1d-leaf:after{content:"";position:absolute;pointer-events:none;border:1px solid var(--vf1d-rule);border-radius:4cqi;inset:4.1cqi}
.vf1d-leaf:after{inset:6.4cqi;border-color:#e6dac7}
.vf1d-inside-cover{display:none;background:#fcf1db;padding:0}
.vf1d-inside-mon{position:absolute;inset:0;display:grid;place-items:center;opacity:.15}
.vf1d-inside-mon-art{display:block;width:34%;height:auto;object-fit:contain}
.vf1d-leaf>*{position:relative;z-index:2}
.vf1d-leaf>.vf1d-close{position:absolute;z-index:8}
.vf1d-leaf>.vf1d-index-return{position:absolute;z-index:8}

/* Passport-local header isolation: never inherit the application's scenic/global header treatment. */
.vf1d-leaf>header.vf1d-leaf-header{background:none!important;background-image:none!important;color:var(--vf1d-ink)!important;padding:0 0 3.5cqi!important;min-height:0!important;height:auto!important;display:block!important;align-items:initial!important;text-shadow:none!important;border-bottom:1px solid rgba(203,183,154,.65)}
.vf1d-leaf-header span,.vf1d-content-head>span,.vf1d-milestone>span,.vf1d-note>span,.vf1d-learning>span,.vf1d-transition>span{display:block;color:var(--vf1d-red);font-weight:700;font-size:2.73cqi;letter-spacing:.14em}
.vf1d-leaf-header h2{font-size:5.9cqi;margin:2.5cqi 0 1cqi;text-shadow:none}
.vf1d-leaf-header p{margin:0;color:#8a7565!important;font-weight:600;font-size:2.6cqi;letter-spacing:.16em;text-shadow:none!important}

/* Deterministic stamp layout owner: flow/grid keeps stamps clear of the heading/divider zone. */
.vf1d-stamp-index{
  position:relative;z-index:3;margin-top:clamp(30px,8cqi,62px);padding:0 2cqi;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"prep tokyo" "kyoto kyoto";
  align-items:start;column-gap:clamp(18px,6cqi,52px);row-gap:clamp(44px,13cqi,108px)
}
.vf1d-stamp-hit{position:relative;display:grid;place-items:center;justify-self:center;width:min(100%,190px);border:0;background:transparent;padding:0;cursor:pointer}
.vf1d-stamp-hit:disabled{cursor:default}
.vf1d-index-preparations{grid-area:prep;aspect-ratio:auto;overflow:visible}
.vf1d-index-tokyo{grid-area:tokyo;aspect-ratio:1}
.vf1d-index-kyoto{grid-area:kyoto;width:min(47%,180px);aspect-ratio:1}
.vf1d-stamp-hit:focus-visible{outline:3px solid #26344c;outline-offset:4px;border-radius:12px}
.vf1d-stamp-visual{display:block;width:100%;height:100%;transform:translate(var(--stamp-x),var(--stamp-y)) rotate(var(--stamp-r)) scale(var(--stamp-s));transform-origin:center}
.vf1d-stamp-visual img{display:block;width:100%;height:100%;object-fit:contain}
.vf1d-stamp-visual.is-locked{opacity:.62;filter:grayscale(1) sepia(.12) saturate(.45) contrast(.82)}

.vf1d-content-head{padding-top:8cqi}
.vf1d-content-head h2{font-size:8.1cqi;line-height:1;margin:2.2cqi 0 1cqi}
.vf1d-content-head b{color:var(--vf1d-red);font-size:3.4cqi}
.vf1d-content-head p{font-size:3.85cqi;margin:5cqi 0 0}
.vf1d-leaf hr{border:0;border-top:1px solid var(--vf1d-rule);margin:6cqi 0}
.vf1d-milestone{
  min-height:0;padding-right:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(92px,32%);
  grid-template-rows:auto auto auto;column-gap:4cqi;align-items:start
}
.vf1d-milestone>span,.vf1d-milestone>h3,.vf1d-milestone>p{grid-column:1}
.vf1d-milestone h3,.vf1d-transition h3{font-size:5.1cqi;margin:2.5cqi 0}
.vf1d-milestone p,.vf1d-transition p{margin:0}
.vf1d-content-stamp{position:relative;right:auto;top:auto;grid-column:2;grid-row:1/span 3;width:100%;align-self:center;aspect-ratio:1}
.vf1d-note blockquote{margin:3cqi 0 0;border-left:3px solid var(--vf1d-red);padding-left:4cqi;font-weight:500}
.vf1d-learning-list{margin:3cqi 0 0;padding-left:4.5cqi}
.vf1d-learning-list li{margin:1.8cqi 0}
.vf1d-transition{position:relative;padding-right:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(84px,28%);column-gap:4cqi;align-items:start}
.vf1d-transition>span,.vf1d-transition>h3,.vf1d-transition>p{grid-column:1}
.vf1d-transition>.vf1d-stamp-visual{position:relative;right:auto;top:auto;grid-column:2;grid-row:1/span 3;width:100%;aspect-ratio:1.3;align-self:center}
.vf1d-content-leaf>footer{position:relative;z-index:2;margin-top:7cqi;color:#8a7e72;font-weight:600;font-size:2.45cqi;letter-spacing:.11em}
.vf1d-spine{display:none}

/* Landscape: same physical leaf authority, presented as two complete facing leaves. */
@media (orientation:landscape){
  .passport-vf1d-runtime{--vf1d-object-w:min(520px,calc((100vw - 28px)/2),max(340px,34vw))}
  .vf1d-book{width:calc(var(--vf1d-object-w) + var(--vf1d-object-w));aspect-ratio:880/956;border-radius:16px}
  .vf1d-leaf{width:50%;padding:max(7.2cqi,calc(env(safe-area-inset-top) + 44px)) 5.5cqi 4.2cqi;font-size:clamp(12px,2.75cqi,17px);transform:translateX(5%)}
  .vf1d-leaf.is-facing-left{left:0;right:auto;width:50%}
  .vf1d-leaf.is-facing-right{left:50%;right:auto;width:50%}
  .vf1d-inside-cover.is-visible{display:block}
  .vf1d-index-leaf{background:var(--vf1d-index)}
  .vf1d-spine{display:block;position:absolute;z-index:5;left:50%;top:0;bottom:0;width:8px;transform:translateX(-50%);pointer-events:none;background:linear-gradient(90deg,rgba(87,56,43,0),rgba(71,46,36,.2) 48%,rgba(246,236,218,.9) 50%,rgba(71,46,36,.2) 52%,rgba(87,56,43,0))}
  .vf1d-content-head{padding-top:5cqi}
  .vf1d-content-head p{font-size:3.3cqi;margin-top:3.4cqi}
  .vf1d-leaf hr{margin:4cqi 0}
  .vf1d-note blockquote{margin-top:2cqi}
  .vf1d-learning-list{margin-top:2cqi}
  .vf1d-learning-list li{margin:1.1cqi 0}
  .vf1d-content-leaf>footer{margin-top:4cqi}
  .vf1d-stamp-index{margin-top:clamp(24px,6cqi,44px);row-gap:clamp(32px,9cqi,72px)}
}

@media (prefers-reduced-motion:reduce){
  .vf1d-leaf,.vf1d-book-track.is-dragging .vf1d-leaf.is-visible{transition:none!important}
  .vf1d-stamp-visual{transition:none}
}

/* VF1-D-RD-COR03: physical-pair, consumer-box and screen-ownership corrective. */
.vf1d-leaf{transform:none}
.vf1d-leaf.is-visible{transform:none}
.vf1d-book-track.is-dragging .vf1d-leaf.is-visible{filter:none}
.vf1d-book-track.is-dragging .vf1d-leaf.is-facing-right{
  transition:none;filter:drop-shadow(-8px 8px 10px rgba(63,42,34,.12))
}

/* COR04: keep generic stamp consumers stable while Preparativos derives height from its intrinsic bitmap in normal flow. */
.vf1d-stamp-hit:not(.vf1d-index-preparations)>.vf1d-stamp-visual,
.vf1d-content-stamp:not(.vf1d-content-stamp-preparations)>.vf1d-stamp-visual{position:absolute;inset:0;width:auto;height:auto}
.vf1d-content-stamp-preparations{aspect-ratio:auto;overflow:visible}
.vf1d-index-preparations>.vf1d-stamp-visual,
.vf1d-content-stamp-preparations>.vf1d-stamp-visual{
  position:relative;inset:auto;width:100%;height:auto;transform:none;overflow:visible
}
.vf1d-index-preparations>.vf1d-stamp-visual img,
.vf1d-content-stamp-preparations>.vf1d-stamp-visual img{
  display:block;width:100%;height:auto;object-fit:contain;
  transform:translate(var(--stamp-x),var(--stamp-y)) rotate(var(--stamp-r)) scale(var(--stamp-s));transform-origin:center
}

/* The generic leaf-child stacking rule must not retarget the absolute inside-cover plane. */
.vf1d-leaf>.vf1d-inside-mon{position:absolute;inset:0;display:grid;place-items:center;opacity:.15}

/* A quiet leaf is normal paper geometry with no content, state or interaction authority. */
.vf1d-quiet-leaf{padding:0;cursor:default}
.vf1d-leaf>.vf1d-quiet-ornament{position:absolute;z-index:2;inset:0;pointer-events:none}
.vf1d-quiet-rule,.vf1d-quiet-diamond{position:absolute;display:block;left:50%;transform:translateX(-50%)}
.vf1d-quiet-rule{width:19%;height:1px;background:rgba(133,108,87,.28)}
.vf1d-quiet-rule-upper{top:36.8%}
.vf1d-quiet-diamond{top:38.2%;width:5px;height:5px;background:rgba(133,108,87,.42);transform:translate(-50%,-50%) rotate(45deg)}
.vf1d-quiet-rule-lower{top:64.5%}
.vf1d-quiet-leaf:after{box-shadow:inset -7px 0 10px rgba(86,57,43,.025)}

/* COR04 phone Portrait: fixed inset screen is the sole viewport-height owner; object fits that local size container. */
@media (orientation:portrait) and (max-width:600px){
  .passport-vf1d-screen{
    width:auto;height:auto;min-width:0;min-height:0;container-type:size;container-name:vf1d-passport-screen
  }
  .passport-vf1d-runtime{
    --vf1d-object-w:min(100cqw,calc(100cqh * 440 / 956));
    align-items:center;overflow-y:auto
  }
  .vf1d-book-frame{align-items:center}
}

/* COR05 measured real-WebKit ownership:
   standalone WebKit settles the visual viewport at 440x894 after initially exposing
   the 440x956 physical canvas. The physical Passport and its BODY clip plane own
   the large portrait viewport; safe-area insets remain local control/content offsets. */
@media (orientation:portrait) and (max-width:600px) and (display-mode:standalone){
  body[data-shell-variant="passport"]{
    width:100%;height:100lvh;min-height:100lvh;overflow:hidden
  }
  .passport-vf1d-screen{
    inset:0 auto auto 0;width:100%;height:100lvh;min-height:100lvh
  }
}

/* Facing pages: the left leaf is stable and only the right leaf follows horizontal drag. */
@media (orientation:landscape){
  .vf1d-leaf.is-facing-left{transform:none;border-radius:8px 0 0 8px}
  .vf1d-leaf.is-facing-right{transform:translateX(var(--vf1d-drag-x));border-radius:0 8px 8px 0}
}

/* Tablet/intermediate landscape fits the same composition to the available height.
   Phone landscape deliberately retains its already-passing geometry. */
@media (orientation:landscape) and (min-height:600px){
  .passport-vf1d-runtime{
    --vf1d-object-w:min(520px,calc((100vw - 28px)/2),calc(100dvh * 440 / 956));
    align-items:center
  }
  .vf1d-book-frame{align-items:center}
}

@media (prefers-reduced-motion:reduce){
  .vf1d-book-track.is-dragging .vf1d-leaf.is-facing-right{transition:none!important}
}
