/* Page-scoped extension of the existing KANADE design system. */
.portal { padding:140px 0 64px; background:var(--washi); }
.portal-shell { width:min(1080px, calc(100% - 56px)); margin-inline:auto; }
.portal section { scroll-margin-top:110px; margin-bottom:64px; }
.portal h1,.portal h2,.portal h3 { font-family:"Zen Old Mincho",serif; max-width:none; letter-spacing:.035em; line-height:1.55; margin:0 0 20px; text-wrap:balance; }
.portal h1 { font-size:42px; }
.portal h2 { font-size:28px; }
.portal h3 { font-size:25px; }
.portal p { line-height:1.85; text-wrap:pretty; line-break:strict; }
.portal-en { display:block; font-family:"Zen Kaku Gothic New",sans-serif; font-size:14px; font-weight:400; line-height:1.6; letter-spacing:0; color:var(--muted); margin-top:5px; word-break:normal; overflow-wrap:normal; text-wrap:pretty; }
.portal h1>.portal-en { font-size:20px; }
.portal h2>.portal-en { font-size:16px; }
.portal-sub { font-size:21px; font-weight:700; margin-bottom:12px; }
.portal-phrase { display:inline-block; }
.portal-steps { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); list-style:none; margin:28px 0 18px; padding:0; border:1px solid var(--line); background:var(--paper); }
.portal-steps li { padding:21px 18px; border-right:1px solid var(--line); min-width:0; }
.portal-steps li:last-child { border-right:0; }
.portal-number { display:block; color:var(--gold); font:26px "Zen Old Mincho",serif; margin-bottom:10px; }
.portal-steps strong { font-size:16px; line-height:1.7; text-wrap:balance; display:block; }
.portal-steps .portal-en { font-size:13px; }
.portal-individual { color:var(--muted); font-size:13px; text-decoration:underline; text-underline-offset:4px; display:inline-block; padding-block:10px; }
.portal-handoff { color:var(--muted); font-size:14px; margin-bottom:28px; }
.portal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:36px 32px; }
.portal-card { display:flex; flex-direction:column; min-width:0; border:1px solid var(--line); background:var(--paper); }
.portal-card>img { width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; }
.portal-card-body { padding:26px; flex:1; display:flex; flex-direction:column; }
.portal-card h3 { margin-bottom:14px; }
.portal-card h3 .portal-en { min-height:2.9em; }
.portal-price { font:26px "Zen Old Mincho",serif; color:var(--moss); margin:0 0 14px; }
.portal-price small { font:12px "Zen Kaku Gothic New",sans-serif; margin-left:12px; color:var(--muted); white-space:nowrap; }
.portal-description { margin:0 0 24px; font-size:15px; }
.portal-book { margin-top:auto; width:100%; min-height:68px; padding:12px; display:flex; flex-direction:column; gap:0; text-align:center; font-size:16px; letter-spacing:.03em; }
.portal-book .portal-en { color:inherit; margin:0; font-size:13px; }
.portal-caption { font-size:12px; color:var(--muted); }
.portal-caption .portal-en { font-size:12px; }
.portal-credit { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:36px 0; }
.portal-credit p { margin:20px 0 0; font-size:15px; }
.portal-before details { border-bottom:1px solid var(--line); }
.portal-before summary { padding:20px 28px 20px 0; cursor:pointer; font-weight:500; min-height:64px; }
.portal-before summary .portal-en { display:inline; margin-left:12px; }
.portal-before li { margin:0 0 20px; font-size:15px; line-height:1.8; }
.portal-before ul { padding-left:24px; }
.portal-all { text-align:center; font-size:13px; }
.portal-all a { display:inline-block; padding:12px; text-decoration:underline; text-underline-offset:4px; color:var(--muted); }
.portal a:focus-visible,.portal summary:focus-visible { outline:3px solid var(--matcha); outline-offset:5px; }
@media(max-width:760px) {
 .portal { padding-top:110px; }
 .portal-shell { width:calc(100% - 40px); }
 .portal h1 { font-size:34px; }
 .portal h2 { font-size:23px; }
 .portal h3 { font-size:23px; }
 .portal-sub { font-size:18px; text-wrap:balance; }
 .portal section { margin-bottom:44px; }
 .portal-steps { grid-template-columns:1fr; }
 .portal-steps li { display:flex; gap:18px; align-items:center; border-right:0; border-bottom:1px solid var(--line); padding:14px 18px; }
 .portal-steps li:last-child { border-bottom:0; }
 .portal-number { margin:0; }
 .portal-grid { grid-template-columns:1fr; gap:28px; }
 .portal-card-body { padding:22px; }
 .portal-card h3 .portal-en { min-height:0; }
 .portal-before summary .portal-en { display:block; margin:5px 0 0; }
}
