#opening-film{position:fixed;inset:0;z-index:120;overflow:hidden;background:#f4edda;color:#fff9ed;font-family:'Yu Mincho',serif;--op-cast-color:#8b659e}.op-backdrop,.op-art,.op-sunlight,.op-grain{position:absolute;inset:0}.op-backdrop{background:var(--op-image) center/cover;filter:blur(25px) brightness(.62);transform:scale(1.08)}.op-picture{position:absolute;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .7s ease}.op-picture.visible{opacity:1;animation:op-drift 8s ease-out both}.op-sunlight{pointer-events:none;background:linear-gradient(110deg,#fff6d630,transparent 45%),linear-gradient(0deg,#243a376b,transparent 25%,transparent 80%,#fff9df1a)}.op-grain{pointer-events:none;background:radial-gradient(ellipse at 85% 5%,#fff9d84d,transparent 45%)}.op-brand{position:absolute;top:4%;left:5%;font:10px 'Yu Gothic',sans-serif;letter-spacing:.4em;text-shadow:0 1px 6px #13352e}.op-caption{position:absolute;left:5%;right:5%;bottom:18%;text-align:center;font-size:clamp(18px,2.4vw,30px);line-height:1.8;text-shadow:0 2px 12px #153b32,0 1px 4px #153b32}.op-cast{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:3%;opacity:0;pointer-events:none;transform:translateY(15px);transition:opacity .5s,transform .8s;background:linear-gradient(90deg,#fff9ee08,#fff9eedb 56%,#fff9eeed);color:#334c43}.introducing .op-cast{opacity:1;transform:translateY(0)}.op-cast>img{height:92%;width:42%;object-fit:contain;align-self:flex-end;filter:drop-shadow(0 8px 14px #51654b20)}.op-cast>div{max-width:45%;padding:0 2% 5% 0}.op-cast span{font:10px 'Yu Gothic',sans-serif;letter-spacing:.45em;color:var(--op-cast-color)}.op-cast h2{font-size:clamp(35px,5.3vw,76px);font-weight:400;letter-spacing:.12em;margin:16px 0 22px}.op-cast p{font-size:clamp(13px,1.5vw,21px);line-height:1.8}.introducing .op-caption{opacity:0}.op-title{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;opacity:0;pointer-events:none;transition:opacity 1.3s;background:#fff8e6d9;color:#345647;text-align:center;padding:25px}.op-title h1{font-size:clamp(42px,7vw,86px);line-height:1.4;font-weight:400;margin:20px 0}.op-title h1 span{color:#728e5b}.op-title p{font-size:clamp(11px,1.5vw,18px);letter-spacing:.13em}.op-title small{font-size:12px;line-height:1.7}.op-finale .op-title{opacity:1}.op-finale .op-caption{opacity:0}.op-song{position:absolute;bottom:11%;right:5%;text-align:right;font-size:11px;line-height:1.7;text-shadow:0 1px 7px #123f32}.op-song small{font:9px 'Yu Gothic',sans-serif}.op-finale .op-song{color:#345647;text-shadow:none}.op-status{position:absolute;top:12%;left:8%;right:8%;text-align:center;background:#fff8edeb;color:#374f44;border-radius:10px;font:13px/1.8 'Yu Gothic',sans-serif;padding:12px}.op-status:empty{display:none}.op-controls{position:absolute;bottom:3%;left:5%;right:5%;display:flex;align-items:center;gap:12px;font:11px 'Yu Gothic',sans-serif}.op-controls button{min-height:44px;padding:8px 14px;background:#204b40ce;color:#fffbe9;border-color:#ffffcc70;font-size:11px}.op-controls button:last-child{margin-left:auto}.op-controls button:focus-visible{outline:3px solid #fff0aa;outline-offset:3px}.op-time{padding:6px;background:#2142399c;border-radius:5px;font-size:10px;white-space:nowrap}.op-progress{position:absolute;bottom:0;left:0;height:3px;background:#e4bc74}.paused .op-picture{animation-play-state:paused}.op-chorus .op-grain{background:radial-gradient(ellipse at 85% 5%,#fff9d86b,transparent 55%)}@keyframes op-drift{from{transform:scale(1)}to{transform:scale(1.045)}}@media(orientation:portrait){.op-art{top:9%;bottom:26%}.op-brand{top:4%;font-size:9px}.op-cast{flex-direction:column;background:linear-gradient(0deg,#fff9eeeb,#fff9ee4d)}.op-cast>img{height:65%;width:90%;align-self:center}.op-cast>div{position:absolute;bottom:22%;max-width:92%;text-align:center;padding:12px 20px;background:#fff9eecf;border-radius:20px}.op-cast h2{font-size:35px;margin:10px}.op-cast p{font-size:14px;margin:10px}.op-cast span{font-size:8px}.op-caption{bottom:27%;font-size:18px}.op-title h1 span{display:block}.op-title small{max-width:85%}.op-song{bottom:14%;left:5%;text-align:center}.op-controls{gap:6px;left:4%;right:4%}.op-controls button{padding:8px 10px}.op-time{font-size:9px}}@media(orientation:landscape) and (max-height:540px){.op-cast h2{font-size:36px;margin:10px 0}.op-cast p{font-size:13px}.op-cast>img{height:95%}.op-caption{font-size:20px;bottom:22%}.op-song{bottom:17%;font-size:9px}.op-song small{font-size:8px}.op-title h1{font-size:46px;margin:10px}.op-title p{font-size:11px}.op-controls{bottom:3%;gap:8px}.op-controls button{min-height:36px}.op-brand{font-size:8px}}@media(prefers-reduced-motion:reduce){#opening-film *{animation:none!important;transition:none!important}}
/* Alternating CG, cast cards and graphic interludes keep the story itself in reserve. */
#opening-film[data-op-kind="cast"] .op-picture,#opening-film[data-op-kind="type"] .op-picture,#opening-film[data-op-kind="allcast"] .op-picture,#opening-film[data-op-kind="title"] .op-picture{opacity:0}
#opening-film[data-op-kind="town"] .op-picture:not(.visible),#opening-film[data-op-kind="glimpse"] .op-picture:not(.visible){opacity:0;transition:none}
#opening-film[data-op-kind="cast"] .op-backdrop,#opening-film[data-op-kind="type"] .op-backdrop,#opening-film[data-op-kind="allcast"] .op-backdrop,#opening-film[data-op-kind="title"] .op-backdrop{filter:blur(8px) brightness(1);opacity:.28}
.op-graphic{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;color:#46674f;background:linear-gradient(135deg,#fff7dced,#f2f4e5ed);opacity:0;pointer-events:none;text-align:center;padding:6%}
.op-graphic span{font:10px 'Yu Gothic',sans-serif;letter-spacing:.4em}.op-graphic b{font-weight:400;font-size:clamp(26px,4.5vw,60px);letter-spacing:.13em}.op-graphic i{font-style:normal;font-size:60px;color:#b8c78e}
#opening-film[data-op-kind="type"] .op-graphic{opacity:1;animation:op-panel-in .38s ease-out both}
#opening-film[data-op-kind="type"] .op-caption{opacity:0}
#opening-film[data-op-kind="type"] .op-song,#opening-film[data-op-kind="allcast"] .op-song{color:#45634b;text-shadow:none}
#opening-film[data-op-kind="glimpse"] .op-art{inset:24% 13% 29%;overflow:hidden;clip-path:polygon(4% 0,100% 0,96% 100%,0 100%);box-shadow:0 10px 50px #28493244}
#opening-film[data-op-kind="glimpse"] .op-picture{object-fit:cover;object-position:var(--op-crop-x) 35%;transform:scale(2.3);animation:none;transition:none}
#opening-film[data-op-kind="glimpse"] .op-backdrop{filter:blur(15px);opacity:.3}
.op-allcast{position:absolute;inset:7% 4% 22%;display:flex;align-items:flex-end;justify-content:center;gap:1%;opacity:0;pointer-events:none}
.op-allcast figure{margin:0;width:24%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;transform:translateY(30px);transition:transform .65s ease-out,opacity .65s;opacity:0}
.op-allcast img{width:100%;height:88%;object-fit:contain;filter:drop-shadow(0 7px 8px #66875a22)}.op-allcast figcaption{font-size:clamp(12px,1.8vw,24px);color:#43634a;background:#fff9e4d9;padding:6px 14px;border-radius:15px;white-space:nowrap}
#opening-film[data-op-kind="allcast"] .op-allcast{opacity:1}
#opening-film[data-op-kind="allcast"] .op-allcast figure{transform:translateY(0);opacity:1}
#opening-film[data-op-kind="allcast"] .op-allcast figure:nth-child(2){transition-delay:.1s}#opening-film[data-op-kind="allcast"] .op-allcast figure:nth-child(3){transition-delay:.2s}#opening-film[data-op-kind="allcast"] .op-allcast figure:nth-child(4){transition-delay:.3s}
#opening-film[data-op-kind="allcast"] .op-caption{color:#42614b;text-shadow:0 1px 10px #fff}
.introducing .op-cast{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);animation:op-panel-in .55s ease-out}
@keyframes op-panel-in{from{clip-path:polygon(0 0,0 0,0 100%,0 100%);transform:translateX(-18px)}to{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);transform:translateX(0)}}
@media(orientation:portrait){.op-allcast{inset:15% 2% 27%;display:grid;grid-template-columns:1fr 1fr;gap:6px}.op-allcast figure{width:100%;height:100%;min-height:0}.op-allcast img{height:calc(100% - 28px);min-height:0}.op-allcast figcaption{font-size:12px;padding:4px 12px}.op-graphic b{font-size:29px;line-height:1.8}.op-graphic span{font-size:8px}#opening-film[data-op-kind="glimpse"] .op-art{inset:28% 3% 39%}}
@media(orientation:landscape) and (max-height:540px){.op-allcast{inset:3% 7% 25%}.op-allcast figcaption{font-size:13px;padding:4px 12px}.op-graphic{gap:12px}.op-graphic b{font-size:33px}.op-graphic i{font-size:35px}}
#opening-film[data-op-kind="allcast"] .op-caption{top:7%;bottom:auto;margin:0;font-size:clamp(16px,2vw,25px)} @media(orientation:landscape) and (max-height:540px){#opening-film[data-op-kind="allcast"] .op-allcast{top:15%}#opening-film[data-op-kind="allcast"] .op-caption{top:5%;font-size:17px}}
#opening-film[data-op-kind="cast"] .op-song{color:#45634b;text-shadow:none}

/* One group illustration: four intentional portraits, then an uncropped reveal. */
.op-portrait{display:none;position:absolute;inset:12% 32% 20%;background-image:url("assets/cg-51.png");background-repeat:no-repeat;background-size:400% auto;border:4px solid #fff3d8;border-radius:45% 45% 12px 12px;box-shadow:0 12px 55px #243d3544}
#opening-film[data-op-kind="portrait"] .op-portrait{display:block}
#opening-film[data-op-kind="portrait"] .op-art{visibility:hidden}
#opening-film[data-op-kind="portrait"] .op-backdrop{opacity:.3;filter:blur(15px)}
#opening-film[data-op-kind="portrait"] .op-caption{bottom:12%;color:#365341;text-shadow:0 1px 12px #fff;font-size:clamp(23px,3vw,40px)}
#opening-film[data-op-kind="portrait"] .op-song{display:none}
#opening-film[data-op-kind="group"] .op-picture{object-fit:contain;animation:none}
#opening-film[data-op-kind="group"] .op-caption{bottom:16%;font-size:clamp(16px,2vw,25px)}
@media(orientation:landscape) and (max-height:540px){.op-portrait{inset:9% 34% 23%}#opening-film[data-op-kind="portrait"] .op-caption{bottom:12%;font-size:22px}}
@media(orientation:portrait){.op-portrait{inset:23% 8% 29%}#opening-film[data-op-kind="portrait"] .op-caption{bottom:20%}#opening-film[data-op-kind="group"] .op-caption{bottom:27%}}

/* Playback chrome appears only on interaction; the film starts unobstructed. */
#opening-film{outline:none}.op-controls,.op-progress{transition:opacity .3s ease,visibility .3s ease}
#opening-film.op-ui-hidden .op-controls,#opening-film.op-ui-hidden .op-progress{opacity:0;visibility:hidden;pointer-events:none}
#opening-film.op-ui-hidden{cursor:none}
