/* OMNI AI FILM FESTIVAL TOKYO 2027
   Desktop values mirror the original design export; responsive rules are at the end. */

/* ---------- base ---------- */
/* Typography follows the OMNI brand guidelines (May 2026): one typeface, never bold, sentence-case
   labels, no gradients, shadows, rounded corners or unicode icons. OMNI TOKYO keeps its own
   gold and washi-paper palette. */
:root{
  --latin:'Cormorant Garamond','Shippori Mincho B1','Yu Mincho',serif;
  --night:#0a0a09;--paper:#f0ece3;
  --on-dark:#efeae0;--on-dark-2:#b4b0a7;--on-dark-3:#94918a;--line-dark:rgba(239,234,224,.14);
  --on-paper:#151614;--on-paper-2:#3e3c36;--on-paper-3:#6d6a63;--line-paper:#cec7b8;
  --gold:#c9a354;--gold-soft:#e2cb96;--gold-line:#a98a48;--gold-ink:#67532c;--label-ink:#6f6448;
}
/* Every Latin character is Cormorant Garamond; Japanese is set in Shippori Mincho B1.
   No faux italics or weights for the Japanese. */
html,body{margin:0;padding:0;background:var(--night);color:var(--on-dark);-webkit-font-smoothing:antialiased;font-synthesis:none}
/* Figures are lining so dates and times read at a glance; the title and wordmark keep old-style ones. */
body{font-family:var(--latin);letter-spacing:.03em;font-variant-numeric:lining-nums}
.hero h1,.brand-text{font-variant-numeric:oldstyle-nums}
html[lang="en"] body{letter-spacing:.01em}
/* Light 300 and Regular 400; 500 is the ceiling, kept for emphasis. */
h1,h2,h3,h4,h5,h6{font-weight:400}
b,strong,th{font-weight:500}
*{box-sizing:border-box}
a{color:inherit;text-decoration:none}
summary::-webkit-details-marker{display:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}

.page{background:var(--night);color:var(--on-dark);overflow-x:clip}
.fill{position:absolute;inset:0;width:100%;height:100%}
.ul{color:inherit;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.nw{white-space:nowrap}
.ul:hover{color:inherit;opacity:.7}
.omni-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}
.skip-link{position:fixed;top:-100px;left:16px;z-index:100;background:var(--on-dark);color:var(--night);padding:12px 16px;font-size:14px}
.skip-link:focus{top:12px;color:var(--night)}
/* The skip link moves focus to <main>; no ring around the whole page. */
main:focus{outline:none}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid currentColor;outline-offset:4px}

/* ---------- language ---------- */
html[lang="en"] [data-i18n="ja"],html:not([lang="en"]) [data-i18n="en"]{display:none!important}

/* ---------- section labels / headings ---------- */
/* Labels follow the guidelines: a short italic line in sentence case, ending in a period. */
.eyebrow{font-family:var(--latin);font-style:italic;font-size:17px;font-weight:400;line-height:1.4;letter-spacing:.01em;margin-bottom:26px;color:var(--gold)}
.sec-light .eyebrow,.omni-entry-section .eyebrow{color:var(--label-ink)}
.h2{margin:0;font-weight:400;letter-spacing:.04em;font-size:clamp(30px,3.4vw,52px)}
html[lang="en"] .h2{letter-spacing:.01em}
.wrap{max-width:1420px;margin:auto}
#about,#why,#event,#visit,#benefits,#jury,#schedule,#how,#faq,#partners{scroll-margin-top:100px}
.sec-dark{position:relative;background:var(--night);border-top:1px solid rgba(239,234,224,.12);overflow:hidden}
.sec-light{position:relative;background:var(--paper);color:var(--on-paper);overflow:hidden}

/* ---------- header ---------- */
.site-head{position:fixed;left:0;right:0;top:0;z-index:60;display:flex;justify-content:space-between;align-items:center;padding:22px 4vw;background:var(--night);border-bottom:1px solid transparent;transition:border-color .3s}
/* Past the hero a hairline separates the header from the sections below. */
.site-head.is-solid{border-bottom-color:rgba(239,234,224,.12)}
.brand{display:inline-flex;align-items:center;gap:12px;font-family:var(--latin);font-size:21px;font-weight:400;letter-spacing:0;line-height:1;color:var(--on-dark)}
/* From the cap height of "OMNI" to the baseline of "TOKYO 2027", like the hero mark on phones. */
.brand-mark{display:block;width:auto;height:30px;margin-top:1px}
.brand:hover{color:var(--on-dark)}
.brand-text span{display:block;font-size:10px;letter-spacing:.04em;color:var(--on-dark-2);margin-top:5px}
.site-nav{display:flex;gap:clamp(14px,1.4vw,22px);align-items:center;font-family:var(--latin);font-size:13px;font-weight:400;letter-spacing:.04em}
.site-nav a{color:inherit;text-underline-offset:7px;text-decoration-thickness:1px}
.site-nav a:hover{text-decoration-line:underline}
/* site.js marks the link of the section in view. */
.site-nav a.is-current{color:var(--gold-soft);text-decoration-line:underline}
.site-nav .nav-cta{border:1px solid rgba(201,163,84,.5);padding:10px 15px;color:var(--gold-soft);letter-spacing:.04em;transition:background .24s,border-color .24s}
.site-nav .nav-cta:hover,.site-nav .nav-cta.is-current{border-color:var(--gold);background:rgba(201,163,84,.12);text-decoration-line:none}
/* The community link joins the nav only where it fits without crowding the brand. */
@media(max-width:1259px){.site-nav .nav-community{display:none}}
.lang-switch{display:inline-flex;align-items:center;gap:.5em;font-family:var(--latin);font-weight:400;letter-spacing:.04em}
.lang-switch button{color:var(--on-dark-2);letter-spacing:inherit;padding:6px 2px;text-underline-offset:5px;transition:color .24s}
.lang-switch button[aria-pressed="true"]{color:var(--gold-soft);text-decoration:underline;text-decoration-thickness:1px}
.lang-switch button:hover{color:var(--on-dark)}
.lang-switch span{color:var(--on-dark-3)}
.head-tools{display:none;align-items:center;gap:18px;font-size:12.5px}
.menu-btn{display:inline-flex;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;padding:0 9px;margin-right:-9px}
.menu-btn span{display:block;height:1px;background:var(--on-dark)}
.mobile-menu{position:fixed;inset:0;z-index:70;background:#070807;display:flex;flex-direction:column;padding:22px 20px 36px;opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s .25s;overflow-y:auto}
/* Visible immediately on open so the close button can take focus. */
.mobile-menu.is-open{opacity:1;visibility:visible;transition:opacity .25s,visibility 0s}
.mobile-menu__top{display:flex;justify-content:space-between;align-items:center}
/* Close: two hairlines, drawn in CSS (no unicode icons). */
.menu-close{position:relative;width:40px;height:40px;margin-right:-9px}
.menu-close span{position:absolute;left:9px;right:9px;top:50%;height:1px;background:var(--on-dark)}
.menu-close span:first-child{transform:rotate(45deg)}
.menu-close span:last-child{transform:rotate(-45deg)}
.mobile-menu nav{display:flex;flex-direction:column;margin-top:48px;border-top:1px solid var(--line-dark)}
.mobile-menu nav a{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:18px 0;border-bottom:1px solid var(--line-dark);color:var(--on-dark);font-family:var(--latin);font-size:24px;letter-spacing:.04em}
.mobile-menu nav a.is-current{color:var(--gold-soft);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.mobile-menu nav a small{font-family:var(--latin);font-size:13px;letter-spacing:.04em;color:var(--on-dark-3)}
.mobile-menu__date{margin:28px 0 0;display:grid;gap:4px;font-size:14px;line-height:1.7;color:#c2beb4}
.mobile-menu__date .k{font-family:var(--latin);font-style:italic;font-size:16px;font-weight:400;letter-spacing:.01em;color:var(--gold)}
.mobile-menu__date b{font-family:var(--latin);font-size:24px;font-weight:400;color:var(--on-dark)}
.mobile-menu .nav-cta{margin-top:24px;display:block;text-align:center;border:1px solid rgba(201,163,84,.6);padding:16px;color:var(--gold-soft);font-family:var(--latin);font-size:15px;font-weight:400;letter-spacing:.04em}
.mobile-menu .lang-switch{margin-top:28px;font-size:13px;justify-content:center}
.mobile-menu .lang-switch button{padding:10px 12px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:grid;grid-template-columns:50% 50%;overflow:hidden;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.03),transparent 42%),linear-gradient(115deg,#080908 0 52%,#0d0f0f 100%)}
.hero-bg{position:absolute;inset:0;z-index:1;animation:omDrift 34s ease-in-out infinite alternate}
@keyframes omDrift{from{transform:translate3d(0,0,0) scale(1.02)}to{transform:translate3d(-1.4%,-1.2%,0) scale(1.09)}}
@media(prefers-reduced-motion:reduce){.hero-bg{animation:none}}
/* Dark at both edges: the left holds the copy, the right holds the tagline and the mark's clear space. */
.hero-shade{position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,#080908 0 26%,rgba(8,9,8,.55) 52%,rgba(8,9,8,.15) 72%,rgba(8,9,8,.8) 86%,#080908 91%),radial-gradient(circle at 68% 48%,transparent 0 26%,rgba(8,9,8,.55) 76%)}
.hero-main{position:relative;z-index:4;padding:max(110px,15vh) 3vw 8vh 6vw;display:flex;flex-direction:column;justify-content:center}
.hero-spacer{position:relative;z-index:4}
/* OMNI mark (white on dark). Never recolour, rotate or stretch it. */
/* Seal (落款): the mark sits under the vertical tagline, as wide as it and right-aligned with it.
   Position and size are set by site.js. */
.hero-mark{position:absolute;right:4vw;top:var(--seal-top,62vh);display:block;width:auto;height:var(--seal-h,166px)}
.hero-mark-sp{display:none}
.hero-kicker{font-family:var(--latin);font-size:15px;font-weight:400;letter-spacing:.02em;color:var(--gold);margin-bottom:30px}
.hero h1{margin:0;font-family:var(--latin);font-weight:300;font-size:clamp(50px,5.6vw,104px);line-height:.94;letter-spacing:.01em}
/* Each line is its own block so the smaller lines get their own, tighter leading. */
.hero h1 .l2,.hero h1 .l3{display:block}
.hero h1 .l2{font-size:.52em;line-height:1.3;letter-spacing:.01em;white-space:nowrap}
.hero h1 .l2:first-of-type{margin-top:.12em}
.hero h1 .l3{font-size:.68em;line-height:1.15;letter-spacing:.04em}
.hero-edition{margin-top:26px;font-family:var(--latin);font-style:italic;font-size:25px;letter-spacing:.01em;color:#d3b46e}
.hero-lead{margin-top:22px;font-size:14px;line-height:2.3;color:#c2beb4;max-width:460px}
.hero-lead strong{display:block;font-size:clamp(17px,1.6vw,24px);font-weight:400;color:var(--on-dark);margin-bottom:14px;line-height:1.7}
/* Date card and entry button side by side, the event details button as a full row below. */
.hero-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;max-width:560px;margin-top:44px;align-items:stretch}
/* Community link: a quiet text link under the actions, so entering stays the main call. */
.hero-community{margin:16px 0 0;font-size:15px;line-height:1.6;color:#c2beb4}
.date-card{border:1px solid rgba(239,234,224,.2);padding:14px 22px;min-width:158px}
.date-card .k{font-family:var(--latin);font-style:italic;font-size:15px;font-weight:400;letter-spacing:.01em;color:var(--on-dark-2)}
.date-card b{display:block;font-family:var(--latin);font-weight:400;font-size:24px;margin-top:4px}
.date-card .s{font-family:var(--latin);font-style:italic;font-size:15px;letter-spacing:.01em;color:var(--on-dark-3)}
.btn-light{background:var(--on-dark);color:var(--night);border:1px solid var(--on-dark);padding:0 32px;display:flex;align-items:center;font-family:var(--latin);font-size:16px;letter-spacing:.04em;transition:background .24s,border-color .24s}
html[lang="en"] .btn-light{letter-spacing:.01em}
.btn-light:hover{background:var(--gold);border-color:var(--gold);color:var(--night)}
.hero .btn-light{grid-column:1/-1;min-height:56px;justify-content:center}
.hero .btn-entry{min-width:0}
/* Entry button: shown before entries open but not clickable. Setting ENTRY_URL in site.js gives it an href. */
.btn-entry{display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:236px;min-height:64px;padding:10px 28px;border:1px solid rgba(201,163,84,.6);color:var(--gold-soft);font-family:var(--latin);line-height:1.2}
.btn-entry__main{font-size:16px;letter-spacing:.04em}
html[lang="en"] .btn-entry__main{letter-spacing:.01em}
.btn-entry__sub{font-size:14px;font-weight:400;letter-spacing:.01em;color:#a9a397}
.btn-entry[aria-disabled="true"]{cursor:not-allowed}
.btn-entry[aria-disabled="true"]:hover{color:var(--gold-soft)}
.btn-entry[href]{background:var(--gold);border-color:var(--gold);color:var(--night);transition:background .24s}
.btn-entry[href]:hover{background:#e1c994;color:var(--night)}
.btn-entry[href] .btn-entry__sub{display:none}
.omni-entry-section .btn-entry{border-color:rgba(21,22,20,.35);color:#27251f}
.omni-entry-section .btn-entry[aria-disabled="true"]:hover{color:#27251f}
/* Until entries open, "Entry guidelines" (.btn-entry--guide, a live link, so it takes the
   filled style) is the primary action and the disabled entry button waits as a quiet row
   below. Once site.js sets ENTRY_URL, .entry-open hides the guide and the entry button
   takes its place. */
html:not(.entry-open) .btn-entry[aria-disabled="true"]{border-color:rgba(239,234,224,.2);color:var(--on-dark-2)}
html:not(.entry-open) .btn-entry[aria-disabled="true"]:hover{color:var(--on-dark-2)}
html:not(.entry-open) .omni-entry-section .btn-entry[aria-disabled="true"],html:not(.entry-open) .omni-entry-section .btn-entry[aria-disabled="true"]:hover{border-color:rgba(21,22,20,.2);color:var(--on-paper-3)}
.hero .date-card,#final .date-card{order:1}
.hero .btn-entry,#final .btn-entry{order:2}
html:not(.entry-open) .hero .btn-entry[aria-disabled="true"],html:not(.entry-open) #final .btn-entry[aria-disabled="true"]{order:3;grid-column:1/-1}
.hero .btn-light,#final .btn-light{order:4}
html.entry-open .btn-light.when-open{display:flex}
.how-actions .btn-entry--guide{order:1}
.how-actions .btn-entry[aria-disabled="true"]{order:2}
.how-actions .btn-sub{order:3}
.omni-entry-section .btn-entry__sub{color:#7d6128}
.omni-entry-section .btn-entry[href]{background:var(--on-paper);border-color:var(--on-paper);color:var(--on-dark)}
.omni-entry-section .btn-entry[href]:hover{background:#2c2a25;color:var(--on-dark)}
.how-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:36px}
/* Secondary action beside the entry button: same shape, outline only, so entering stays first. */
.btn-sub{display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:236px;min-height:64px;padding:10px 28px;border:1px solid rgba(21,22,20,.35);color:#27251f;font-family:var(--latin);line-height:1.2;transition:border-color .24s,background .24s}
.btn-sub:hover{border-color:var(--gold-line);background:rgba(201,163,84,.08)}
.btn-sub:focus-visible{outline:2px solid #ac822f;outline-offset:3px}
.hero-vertical{position:absolute;z-index:5;right:4vw;top:var(--tag-top,20vh);writing-mode:vertical-rl;font-size:12.5px;line-height:2.9;letter-spacing:.24em;color:#cdc7ba;margin:0}
/* English tagline: horizontal, right under the seal (the vertical line stays Japanese). */
.hero-tagline-en{position:absolute;z-index:5;right:4vw;top:calc(var(--seal-top,62vh) + var(--seal-h,166px) + 24px);max-width:240px;margin:0;text-align:right;font-family:var(--latin);font-style:italic;font-size:17px;line-height:1.4;color:#cdc7ba}

/* ---------- 01 about ---------- */
/* Copy on the left, a sayagata panel on the right: the same layout as 03, the opposite of 02. */
.about-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:5vw;margin-top:42px}
.about-art{position:relative;min-height:360px;overflow:hidden}
#about .wrap{position:relative;z-index:2;padding:10vh 5vw}
#about .eyebrow{margin-bottom:36px}
#about .about-title{margin:0;font-size:clamp(30px,3.8vw,62px);line-height:1.42;font-weight:400;letter-spacing:.04em;text-wrap:pretty}
.omni-about-copy{max-width:720px}
#about .omni-profile-label{font-family:var(--latin);font-style:italic;font-size:17px;font-weight:400;line-height:1.4;letter-spacing:.01em;color:var(--label-ink)}
#about .omni-global-profile,#about .omni-tokyo-profile{min-width:0}
#about .omni-global-profile>h3,#about .omni-tokyo-profile>h3{font-family:var(--latin);font-size:clamp(27px,2.9vw,42px);font-weight:400;line-height:1.2;margin:16px 0 24px;color:#27251f}
#about .omni-global-profile>p,#about .omni-tokyo-profile>p{font-size:15px;line-height:2.1;margin:0 0 20px;color:var(--on-paper-2);overflow-wrap:anywhere}
#about .omni-global-record{padding:20px 0 0;margin:24px 0 0;border-top:1px solid #b9aa89}
#about .omni-tokyo-profile{margin-top:48px;padding-top:36px;border-top:1px solid var(--gold-line)}
#about .omni-global-record p{font-size:14px;line-height:2;margin:10px 0 12px;color:var(--on-paper-2)}
#about .omni-official-link{display:block;width:100%;padding:22px 24px;margin:48px 0 0;border:1px solid #302b20;background:var(--on-paper);color:var(--on-dark);font-family:var(--latin);font-size:19px;line-height:1.5;transition:background .24s,border-color .24s}
#about .omni-official-link strong{display:inline-block;font-size:15px;font-weight:400;margin:6px 0;color:#e1c994;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
#about .omni-official-link small{display:block;font-family:var(--latin);font-size:14px;letter-spacing:.01em;color:var(--on-dark-2);overflow-wrap:anywhere}
#about .omni-official-link:hover{background:#2a261c;border-color:var(--gold-line)}
#about a:focus-visible{outline:2px solid #9d762d;outline-offset:5px}
#why{min-width:0;margin-top:30px;padding:24px 0 0;border-top:1px solid #b9aa89}
#why h3{font-family:var(--latin);font-size:28px;font-weight:400;line-height:1.3;margin:0 0 18px;color:var(--gold-ink)}
#why p{font-size:14px;line-height:2.1;color:var(--on-paper-2);margin:12px 0}
#why .omni-concept-phases{display:flex;flex-wrap:wrap;gap:10px 24px;border-top:1px solid var(--line-paper);margin-top:20px;padding-top:16px;font-size:14px;color:#786440}

/* ---------- 02 event ---------- */
#event{display:grid;grid-template-columns:1fr 1fr}
#event .omni-event-art{position:relative;min-height:460px;overflow:hidden}
#event .event-body{padding:12vh 5vw;display:flex;flex-direction:column;justify-content:center}
#event .h2{font-size:clamp(30px,3.4vw,54px);line-height:1.45;letter-spacing:inherit}
#event .event-body>p{font-size:14.5px;line-height:2.2;color:var(--on-dark-2);margin:30px 0 0;max-width:460px}
#event .event-body>p.event-more{margin-top:14px}
.program-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:rgba(239,234,224,.12);border:1px solid rgba(239,234,224,.12);margin-top:46px}
.program-grid>div{background:var(--night);padding:26px 20px 32px}
.program-grid b{font-family:var(--latin);font-weight:400;font-size:22px;letter-spacing:.01em}
.program-grid span{display:block;font-size:13px;color:#a29f98;margin-top:12px}
/* Visit information */
/* The host: a small portrait beside name, role and a short note. */
.host{margin-top:48px;max-width:560px}
.host .eyebrow{margin-bottom:14px}
.host-card{display:grid;grid-template-columns:120px minmax(0,1fr);gap:24px;align-items:start;border-top:1px solid var(--line-dark);padding-top:20px}
.host-photo{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;background:#171713}
.host-name{margin:0;font-size:19px;font-weight:400;line-height:1.5;letter-spacing:.03em;color:var(--on-dark)}
.host-role{margin:6px 0 0;font-family:var(--latin);font-style:italic;font-size:16px;line-height:1.4;letter-spacing:.01em;color:var(--on-dark-3)}
.host-role [data-i18n="ja"]{font-style:normal;font-size:13px}
.host-bio{margin:12px 0 0;font-size:13px;line-height:1.9;color:var(--on-dark-2)}
/* Links in the event overview: the host, her company and the venue. */
.host-name a,.host-role a,.visit-list dd a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:rgba(201,163,84,.5);text-underline-offset:5px}
.host-name a:hover,.host-role a:hover,.visit-list dd a:hover{text-decoration-color:var(--gold)}
html[lang="en"] .host-name{letter-spacing:.01em}
html[lang="en"] .host-bio{font-size:16px;line-height:1.55}
html[lang="ja"] .host-bio{word-break:auto-phrase}
@media(max-width:480px){.host-card{grid-template-columns:96px minmax(0,1fr);gap:16px}}
.visit{margin-top:48px;max-width:560px}
.visit .eyebrow{margin-bottom:14px}
.visit-list{margin:0;border-top:1px solid var(--line-dark)}
.visit-list>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;padding:14px 0;border-bottom:1px solid var(--line-dark)}
.visit-list dt{font-size:13px;color:#a29f98}
.visit-list dd{margin:0;font-size:14px;line-height:1.85;color:var(--on-dark);overflow-wrap:anywhere}
.visit-note{margin:14px 0 0;font-size:13px;line-height:1.9;color:var(--on-dark-2)}
html[lang="en"] .visit-list dd{font-size:17px;line-height:1.55}
html[lang="en"] .visit-list dt,html[lang="en"] .visit-note{font-size:16px}

/* ---------- 03 benefits ---------- */
#benefits .wrap{padding:8vh 5vw;display:grid;grid-template-columns:1.15fr .85fr;gap:5vw;align-items:stretch}
#benefits .omni-benefits-art{position:relative;min-height:360px;overflow:hidden}
#benefits .h2{line-height:1.5}
.benefit-list{margin-top:28px;border-top:1px solid #b9aa89}
.benefit-list>div{display:grid;grid-template-columns:60px 1fr;padding:18px 0;border-bottom:1px solid rgba(21,22,20,.14)}
.benefit-list .n{font-family:var(--latin);font-style:italic;font-size:17px;font-weight:400;line-height:1.4;color:var(--label-ink)}
.benefit-list h3{margin:0 0 8px;font-family:var(--latin);font-weight:400;font-size:23px;line-height:1.2;letter-spacing:.01em}
.benefit-list p{margin:0;font-size:14px;line-height:1.9;color:#55524b}

/* ---------- 04 categories ---------- */
#categories{scroll-margin-top:90px}
#categories .wrap{position:relative;z-index:2;padding:12vh 5vw}
#categories .eyebrow{margin-bottom:22px}
#categories .h2{font-size:clamp(32px,3.6vw,58px)}
#categories .intro{max-width:760px;margin:28px 0 48px;font-size:14px;line-height:2.2;color:var(--on-dark-2)}
/* Categories read as columns under a hairline, like the pillars in the brand guidelines. */
#categories .omni-category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3vw,48px)}
#categories .omni-category-card{min-width:0;border-top:1px solid var(--gold-line);padding:24px 0 0}
#categories .omni-category-number{font-family:var(--latin);font-style:italic;font-size:17px;font-weight:400;letter-spacing:.01em;line-height:1.4;color:var(--gold)}
#categories h3{font-size:clamp(20px,1.9vw,27px);line-height:1.6;font-weight:400;letter-spacing:.03em;margin:22px 0 6px}
#categories .omni-category-en{font-family:var(--latin);font-size:22px;line-height:1.4;letter-spacing:.01em;margin:0;color:var(--on-dark-2)}
#categories .omni-category-duration{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);padding:15px 0;margin:26px 0 22px;line-height:1.7}
#categories .omni-category-duration>span{font-family:var(--latin);font-style:italic;font-size:16px;color:var(--on-dark-2);letter-spacing:.01em}
#categories .omni-category-duration strong{font-size:17px;font-weight:400;color:#e1c994}
#categories .omni-category-description{font-size:14px;line-height:2.2;color:#c2beb4;margin:0;overflow-wrap:anywhere}
#categories .omni-special-award{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:40px;border-top:1px solid var(--gold-line);padding:28px 0 0;margin-top:64px}
#categories .omni-special-award h3{margin-top:15px}
#categories .omni-special-award .omni-category-duration{margin-bottom:0}
#categories .omni-award-screening{margin-top:56px}
/* Keep the festival name on one line inside Japanese copy (phones let it wrap). */
@media(min-width:600px){.omni-name{white-space:nowrap}}
#categories .omni-award-screening__note{font-size:13px;line-height:2;color:var(--on-dark-3);margin:14px 0 0}

/* ---------- 05 jury ---------- */
#jury{border-top-color:rgba(201,163,84,.35)}
#jury .wrap{padding:14vh 5vw;display:grid;grid-template-columns:1.2fr .8fr;gap:5vw}
.jury-note{margin:16px 0 0;font-size:14px;line-height:1.7;color:var(--on-dark-2)}
.jury-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:52px}
.jury-grid>div{border-top:1px solid rgba(239,234,224,.16);padding-top:14px}
/* Placeholder until the portraits arrive: a flat panel. */
.jury-grid .portrait{aspect-ratio:4/5;background:#171713;display:grid;place-items:center}
.portrait img{display:block;width:100%;height:100%;object-fit:cover}
.jury-grid .portrait span{font-family:var(--latin);font-style:italic;font-size:15px;letter-spacing:.01em;color:var(--on-dark-3)}
.jury-grid h3{margin:14px 0 6px;font-size:17px;font-weight:400}
/* External profiles: the underline marks the link (no icons). */
.jury-grid h3 a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:rgba(201,163,84,.5);text-underline-offset:5px}
.jury-grid h3 a:hover{text-decoration-color:var(--gold)}
.jury-grid small a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:rgba(201,163,84,.5);text-underline-offset:4px}
.jury-grid small a:hover{text-decoration-color:var(--gold)}
.jury-bio{margin:12px 0 0;font-size:13px;line-height:1.85;color:var(--on-dark-2)}
html[lang="en"] .jury-bio{font-size:16px;line-height:1.55}
.jury-grid small{display:block;font-family:var(--latin);font-style:italic;font-size:16px;font-weight:400;line-height:1.4;letter-spacing:.01em;color:var(--on-dark-3);word-break:keep-all}
/* Japanese roles stay upright, so Latin words inside them (Aww, CCO) do not switch to italic. */
.jury-grid small [data-i18n="ja"]{font-style:normal}
.side-art{position:relative;overflow:hidden}
#jury .side-art{min-height:520px}
#faq .side-art{min-height:480px}

/* ---------- 06–08 entry ---------- */
.omni-entry-section{background:var(--paper);color:var(--on-paper);border-top:1px solid var(--line-paper)}
/* The entry chapter (06–08) opens with one large label so the three light sections read as a group. */
.entry-chapter{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 22px;margin:0 0 clamp(28px,4vw,48px)}
.entry-chapter span{font-family:var(--latin);font-weight:300;font-size:clamp(56px,8vw,128px);line-height:.9;letter-spacing:.01em;color:var(--on-paper)}
.entry-chapter small{font-size:15px;letter-spacing:.04em;color:var(--label-ink)}
html[lang="en"] .entry-chapter small{font-family:var(--latin);font-style:italic;font-size:17px;letter-spacing:.01em}
.omni-entry-inner{max-width:1420px;margin:auto;padding:clamp(48px,7vw,90px) 5vw}
.omni-entry-section .h2{font-size:clamp(28px,3.2vw,48px)}
#eligibility{scroll-margin-top:90px;border-top:1px solid var(--gold-line);padding-top:32px;min-width:0}
#eligibility .omni-entry-label{margin-bottom:0}
#eligibility h2{font-size:clamp(27px,3.2vw,44px);font-weight:400;letter-spacing:.04em;margin:20px 0 24px}
#eligibility p{font-size:14px;line-height:2.1;overflow-wrap:anywhere;max-width:1000px}
.entry-table{margin:28px 0}
.entry-table summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;padding-bottom:12px;font-size:14px;color:#55524b}
.entry-table__icon{position:relative;flex:none;width:16px;height:16px;color:#7d6128}
.entry-table__icon::before,.entry-table__icon::after{content:"";position:absolute;left:2px;top:7px;width:12px;height:1px;background:currentColor}
.entry-table__icon::after{transform:rotate(90deg)}
.entry-table[open] .entry-table__icon::after{display:none}
#eligibility .entry-table table{margin:0}
#eligibility table{border-collapse:collapse;width:100%;margin:28px 0;font-size:14px;line-height:1.9;text-align:left}
#eligibility caption{text-align:left;font-size:13px;color:var(--on-paper-3);padding-bottom:12px}
#eligibility th,#eligibility td{border-bottom:1px solid var(--line-paper);padding:18px 20px;vertical-align:top}
#eligibility th{width:31%;font-weight:500;background:#e7e1d5}
#eligibility td{font-weight:400;color:var(--on-paper-2)}
/* Key conditions: the 500 weight in full ink against the lighter running text. */
#eligibility td strong{font-weight:500;color:var(--on-paper)}
#eligibility .omni-entry-note{font-size:13px;color:var(--on-paper-3)}
#eligibility a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.omni-entry-intro{border-top:1px solid var(--gold-line);border-bottom:1px solid var(--gold-line);padding:22px 0;margin:28px 0;font-size:14px;line-height:2}
.omni-entry-intro strong{display:block;margin-bottom:8px;font-size:clamp(22px,2.2vw,30px);font-weight:400;line-height:1.5;letter-spacing:.04em;color:var(--gold-ink)}
html[lang="en"] .omni-entry-intro strong{letter-spacing:.01em;line-height:1.2}
#eligibility .omni-entry-intro p{margin:4px 0;font-size:14px}
#schedule .omni-schedule-layout{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);gap:6vw;align-items:start}
.schedule-table{border-top:1px solid #b9aa89}
.schedule-table>div{display:grid;grid-template-columns:150px 1fr;padding:22px 0;border-bottom:1px solid rgba(21,22,20,.14);font-size:11px;color:#55524b}
.schedule-table b{font-family:var(--latin);font-weight:400;font-size:21px;line-height:1.3;color:var(--on-paper)}
.schedule-table b small{font-size:15px;white-space:nowrap;color:var(--on-paper-3)}
.schedule-table>div>span{font-family:var(--latin);font-size:17px;font-weight:400;line-height:1.5;letter-spacing:.01em;color:var(--on-paper)}
#how .lead{font-size:14px;line-height:2;color:var(--on-paper-2);margin-top:24px}
.omni-flow-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:rgba(21,22,20,.14);border:1px solid rgba(21,22,20,.14);margin-top:30px}
.omni-flow-grid>div{background:var(--paper);padding:26px 16px 34px}
.omni-flow-grid b{font-family:var(--latin);font-weight:300;font-size:30px}
.omni-flow-grid h3{font-family:var(--latin);font-size:20px;letter-spacing:.01em;margin:30px 0 8px;font-weight:400}
.omni-flow-grid small{font-size:13px;color:var(--on-paper-3)}

/* ---------- 10 faq ---------- */
#faq .wrap{padding:14vh 5vw;display:grid;grid-template-columns:1.15fr .85fr;gap:5vw}
.faq-list{margin-top:52px;border-top:1px solid #b9aa89}
#faq .omni-faq-item{border-bottom:1px solid rgba(21,22,20,.14);padding:0}
#faq .omni-faq-question{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:start;gap:20px;width:100%;padding:24px 0;margin:0;font-size:15px;line-height:1.9;color:#27251f;overflow-wrap:anywhere}
#faq .omni-faq-question::-webkit-details-marker{display:none}
#faq .omni-faq-question::marker{content:""}
#faq .omni-faq-question:hover>span[data-i18n]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
#faq .omni-faq-item[open]>.omni-faq-question{color:#7a5d24}
#faq .omni-faq-question:focus-visible{outline:2px solid #ac822f;outline-offset:-2px}
#faq .omni-faq-icon{position:relative;display:block;width:20px;height:20px;margin-top:3px;color:#94722d;pointer-events:none}
#faq .omni-faq-icon::before,#faq .omni-faq-icon::after{content:"";position:absolute;left:4px;top:9px;width:12px;height:1px;background:currentColor}
#faq .omni-faq-icon::after{transform:rotate(90deg)}
#faq .omni-faq-item[open]>.omni-faq-question .omni-faq-icon::after{display:none}
#faq .omni-faq-answer{font-size:14px;line-height:2.1;color:var(--on-paper-2);max-width:640px;margin:0;padding:0 40px 24px 0;overflow-wrap:anywhere}
#faq .omni-faq-answer a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
/* Community: an optional invitation to the Discord server, after the questions. */
.community-card{margin-top:44px;padding:28px 30px;border:1px solid var(--line-paper);max-width:640px}
.community-card__title{margin:0;font-size:clamp(19px,1.7vw,23px);line-height:1.5;font-weight:400;letter-spacing:.01em;color:var(--on-paper)}
.community-card__text{margin:12px 0 0;font-size:16px;line-height:1.75;color:var(--on-paper-2);word-break:auto-phrase}
.btn-community{display:inline-flex;align-items:center;justify-content:center;min-height:48px;margin-top:20px;padding:0 28px;background:var(--on-paper);border:1px solid var(--on-paper);color:var(--paper);font-family:var(--latin);font-size:16px;letter-spacing:.01em;transition:background .24s,border-color .24s,color .24s}
.btn-community:hover{background:var(--gold);border-color:var(--gold);color:var(--night)}
.btn-community:focus-visible{outline:2px solid #ac822f;outline-offset:3px}

/* ---------- 09 partners ---------- */
#partners{overflow:visible}
#partners .wrap{padding:12vh 5vw;display:grid;grid-template-columns:280px 1fr;gap:5vw;align-items:start}
#partners .h2{font-size:clamp(26px,2.1vw,31px);word-break:keep-all}
/* One three-column grid: venue (1) and supporters (2) share a row, and every logo has the same width. */
.partner-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:52px 16px}
.partner-group--1{grid-column:span 1}
.partner-group--2{grid-column:span 2}
.partner-group--3{grid-column:span 3}
.partner-group{border-top:1px solid rgba(239,234,224,.16);padding-top:18px}
.partner-label{margin:0 0 20px;font-family:var(--latin);font-style:italic;font-size:17px;font-weight:400;line-height:1.4;letter-spacing:.01em;color:var(--gold);word-break:keep-all}
/* The organizing committee: its name, then the chair and members as tiles. */
.committee-name{margin:-6px 0 18px;font-size:16px;font-weight:400;color:var(--on-dark)}
/* A person shown as a tile, like a logo: a portrait circle beside name and title.
   Sizes follow the tile's width so it reads the same at every breakpoint. */
.person-tile{container-type:inline-size;display:flex;align-items:center;justify-content:center}
.logo-tile .person-tile__photo{flex:none;display:block;width:22cqw;height:22cqw;border-radius:50%;object-fit:cover;background:#dcd8cf}
.person-tile__text{display:flex;flex-direction:column;margin-left:6cqw;white-space:nowrap}
.person-tile__name{font-family:var(--latin);font-size:8cqw;line-height:1.15;letter-spacing:.01em;color:#151614}
.person-tile__role{margin-top:1.5cqw;font-family:var(--latin);font-style:italic;font-size:4.8cqw;letter-spacing:.01em;color:#5f5c55}
.partner-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 16px}
.partner-group--1 .partner-list{grid-template-columns:minmax(0,1fr)}
.partner-group--2 .partner-list{grid-template-columns:repeat(2,minmax(0,1fr))}
/* Partners are still being recruited: a short note in place of logos. */
.partner-open{max-width:640px}
.partner-open__title{margin:0;font-size:clamp(20px,1.9vw,26px);line-height:1.5;font-weight:400;letter-spacing:.03em;color:var(--on-dark)}
.partner-open__text{margin:14px 0 0;font-size:14px;line-height:2.1;color:var(--on-dark-2)}
/* Listing status first (small, in the body grey), then the open call and its contact address. */
.partner-open__status{margin:0;font-size:14px;line-height:1.6;letter-spacing:.06em;color:var(--on-dark-2)}
.partner-open__status + .partner-open__text{margin-top:6px}
.partner-open__title--next{margin-top:36px}
.partner-open__contact{margin:18px 0 0;font-size:15px;line-height:1.8;color:var(--on-dark)}
html[lang="en"] .partner-open__title{letter-spacing:.01em}
html[lang="en"] .partner-open__text{font-size:17px;line-height:1.55}
html[lang="en"] .partner-open__status{font-family:var(--latin);font-style:italic;font-size:17px;letter-spacing:.01em}
html[lang="en"] .partner-open__contact{font-size:17px}
html[lang="ja"] .partner-open__text{word-break:auto-phrase}
/* Logos are transparent 16:9 images, centred and balanced in size (assets/img/partners).
   Each keeps its original colours: logos supplied on white sit on a white tile,
   logos supplied on black (AI Studio MiYAGi) stay on the dark section. */
.logo-tile{aspect-ratio:16/9;border:1px solid rgba(239,234,224,.1)}
.logo-tile--light{background:#fff;border-color:#fff}
/* The image carries its own background (AIMovieStudio), so the tile has no frame. */
.logo-tile--bleed{border:0}
.logo-tile img{display:block;width:100%;height:100%;object-fit:contain}
.partner-name{margin:12px 0 0;font-size:15px;font-weight:400;line-height:1.6;color:var(--on-dark);word-break:keep-all;overflow-wrap:anywhere}
/* External sites: the underline marks the link (no icons). */
.partner-name a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:rgba(201,163,84,.5);text-underline-offset:5px}
.partner-name a:hover{text-decoration-color:var(--gold)}
/* Agency line under a person's name, like the jury roles. */
.partner-affil{margin:4px 0 0;font-family:var(--latin);font-style:italic;font-size:16px;font-weight:400;letter-spacing:.01em;color:#a29f98}

/* ---------- 11 final ---------- */
#final{position:relative;min-height:92vh;display:grid;grid-template-columns:1fr 1fr;background:#070807;overflow:hidden}
#final .final-body{position:relative;z-index:4;padding:14vh 5vw;display:flex;flex-direction:column;justify-content:center}
#final .eyebrow{margin-bottom:28px}
#final .final-lead{font-size:16px;line-height:2;margin:0 0 30px;color:#d5d0c6}
#final h2{margin:0;font-family:var(--latin);font-weight:300;font-size:clamp(52px,7.4vw,126px);line-height:1;letter-spacing:.01em;color:#d3b46e}
/* The Japanese heading is set smaller, with the leading Japanese needs. */
html[lang="ja"] #final h2{font-size:clamp(34px,4.8vw,80px);line-height:1.3;letter-spacing:.04em}
/* site.js adds .entry-open to <html> once ENTRY_URL is set. */
.when-open,html.entry-open .when-closed{display:none}
html.entry-open .when-open{display:inline}
#final .final-note{font-size:13px;line-height:2;color:var(--on-dark-2);margin-top:28px}
#final .final-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;max-width:560px;margin-top:44px}
#final .btn-light{grid-column:1/-1;min-height:56px;justify-content:center}
#final .btn-entry{min-width:0}
#final .date-card{min-width:0}
#final .final-art{position:relative;overflow:hidden}

/* ---------- footer ---------- */
.site-foot{background:#050605;border-top:1px solid rgba(239,234,224,.12);padding:34px 5vw;display:flex;justify-content:space-between;align-items:center;gap:20px;font-family:var(--latin);font-size:14px;font-weight:400;letter-spacing:.01em;color:#8a877f;flex-wrap:wrap}
.site-foot .foot-brand{display:flex;align-items:center;gap:18px}
.site-foot .foot-mark{display:block;width:auto;height:44px}
.site-foot .links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 1.5em}
.site-foot .lang-switch{font-size:inherit}
/* Official social accounts: monochrome brand glyphs with generous hit areas. */
.sns{display:inline-flex;align-items:center;gap:8px}
.sns a{display:inline-flex;padding:8px;margin:-8px 0;color:var(--on-dark-2);transition:color .24s}
.sns a:first-child{margin-left:-8px}
.sns a:hover{color:var(--gold-soft)}
.sns svg{display:block;width:20px;height:20px}
.mobile-menu .sns--menu{margin-top:22px;gap:14px}
.mobile-menu .sns--menu svg{width:24px;height:24px}
#eligibility .omni-entry-intro .sns-follow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-top:12px;color:var(--on-paper-2)}
.sns-follow .sns a{color:var(--on-paper)}
.sns-follow .sns a:hover{color:var(--gold-ink)}
.site-foot .lang-switch button{padding:0 2px;opacity:1}

/* ---------- English typography ---------- */
/* The brand scale: body 17 (lede 20) at line-height 1.55, display at 1.05–1.1, tracking +0.01em.
   Japanese copy keeps its own, more open leading. */
html[lang="en"] .h2,html[lang="en"] #about .about-title,html[lang="en"] #eligibility h2{letter-spacing:.01em}
html[lang="en"] .hero-lead{font-size:18px;line-height:1.55}
html[lang="en"] .hero-lead strong{font-size:clamp(20px,1.8vw,26px);line-height:1.3}
html[lang="en"] #about .omni-global-profile>p,html[lang="en"] #about .omni-tokyo-profile>p,html[lang="en"] #event .event-body>p,html[lang="en"] #categories .intro{font-size:19px;line-height:1.55}
html[lang="en"] #about .omni-global-record p,html[lang="en"] #why p,html[lang="en"] .benefit-list p,html[lang="en"] #categories .omni-category-description,html[lang="en"] #eligibility p,html[lang="en"] #how .lead,html[lang="en"] #faq .omni-faq-question,html[lang="en"] #faq .omni-faq-answer{font-size:17px;line-height:1.55}
html[lang="en"] #categories h3{line-height:1.2}
html[lang="en"] #categories .omni-award-screening__note{font-size:15px;line-height:1.55}
html[lang="en"] .about-title{line-height:1.1}
html[lang="en"] .h2{line-height:1.1}
html[lang="en"] .program-grid span,html[lang="en"] .omni-flow-grid small{font-size:16px;line-height:1.4}
html[lang="en"] #eligibility table,html[lang="en"] .partner-name,html[lang="en"] .omni-entry-intro,html[lang="en"] #eligibility .omni-entry-intro p{font-size:17px;line-height:1.55}
html[lang="en"] #eligibility .omni-entry-note,html[lang="en"] #final .final-note,html[lang="en"] .entry-table summary{font-size:16px;line-height:1.55}
html[lang="en"] #final .final-lead{font-size:20px;line-height:1.55}

/* =========================================================
   Responsive
   ========================================================= */

/* Short desktop screens (1280×720 to 1440×900): tighten the hero so the date and
   the entry button stay in the first view. */
@media(min-width:901px) and (max-height:900px){
  .hero-main{padding-top:max(92px,12vh);padding-bottom:2vh}
  .hero-kicker{margin-bottom:18px}
  .hero h1{font-size:clamp(44px,min(5.6vw,9.4vh),104px)}
  .hero-edition{margin-top:12px;font-size:20px}
  .hero-lead{margin-top:12px;line-height:1.9}
  .hero-lead strong{margin-bottom:6px}
  .hero-actions{margin-top:22px}
  .hero .btn-light{min-height:46px}
  .hero-community{margin-top:10px;font-size:14px}
}
@media(min-width:901px) and (max-height:760px){
  .hero-main{padding-top:max(88px,12vh)}
  .hero h1{font-size:clamp(44px,min(5.6vw,8.8vh),104px)}
}

/* Japanese headings and short copy break between phrases, not inside words
   (Chrome/Edge 119+; other browsers keep their usual line breaking). */
html[lang="ja"] :is(h1,h2,h3,h4,.hero-kicker,.hero-lead,.lead,.intro,.final-lead,.final-note,.omni-faq-question,.benefit-list p,.program-grid span,.omni-category-description,#event .event-body>p,#about p,.jury-bio,.visit-list dd,.visit-note,.omni-entry-intro p){word-break:auto-phrase}

/* Navigation collapses before the row of links runs out of room. */
@media(max-width:1100px){
  .site-nav{display:none}
  .head-tools{display:flex}
  .site-head{padding:16px 20px}
}

/* Tablet and below: single column. */
@media(max-width:900px){
  /* Avoid single characters stranded on the last line. */
  .hero-lead strong,.final-lead,.about-title,.h2,#eligibility h2,#categories h3{text-wrap:balance}
  p,td,.omni-faq-question span,.hero-lead>div{text-wrap:pretty}
  .brand-text span{font-size:12px}
  .brand-mark{height:35px;margin-top:4px}
  /* Height follows the content; filling a tall screen spread the blocks apart. */
  .hero{grid-template-columns:minmax(0,1fr);min-height:0;align-content:start}
  .hero-spacer{display:none}
  .hero-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
  .hero-title__text{min-width:0}
  .hero-mark-sp{display:block;flex:none;width:auto;height:var(--mark-h,clamp(150px,48vw,280px));margin-top:var(--mark-top,4px)}
  .hero-shade{background:linear-gradient(180deg,rgba(8,9,8,.35) 0%,rgba(8,9,8,.7) 45%,#080908 100%)}
  .hero-main{padding:132px 6vw 40px}
  .hero-vertical{position:relative;writing-mode:horizontal-tb;right:auto;top:auto;margin:0 6vw 96px;padding-left:16px;border-left:1px solid rgba(201,163,84,.5);font-size:13px;line-height:2;letter-spacing:.12em;z-index:4}
  html[lang="en"] .hero-vertical{display:none}
  .hero-tagline-en{position:relative;right:auto;top:auto;max-width:none;z-index:4;text-align:left;margin:0 6vw 96px;padding-left:16px;border-left:1px solid rgba(201,163,84,.5);font-size:18px;line-height:1.4}
  .about-body{grid-template-columns:minmax(0,1fr)}
  #about .omni-tokyo-profile{margin-top:36px;padding-top:30px}
  .about-art{display:none}
  #event{grid-template-columns:minmax(0,1fr)}
  #event .omni-event-art{min-height:220px;order:2}
  #benefits .wrap{grid-template-columns:minmax(0,1fr)}
  #benefits .omni-benefits-art{display:none}
  #categories .omni-category-grid{grid-template-columns:minmax(0,1fr)}
  #categories .omni-special-award{grid-template-columns:minmax(0,1fr);gap:24px;margin-top:48px}
  #categories .omni-award-screening{gap:16px}
  #categories h3{font-size:24px}
  #categories .omni-category-description{font-size:14px}
  #jury .wrap,#faq .wrap{grid-template-columns:minmax(0,1fr)}
  #jury .side-art,#faq .side-art{display:none}
  #eligibility th,#eligibility td{padding:14px 12px;font-size:13px}
  #schedule .omni-schedule-layout{grid-template-columns:minmax(0,1fr);gap:32px}
  .omni-flow-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  #partners .wrap{grid-template-columns:minmax(0,1fr);gap:28px}
  #final{grid-template-columns:minmax(0,1fr);min-height:0}
  #final .final-art{display:none}
  #final .final-body{padding:96px 6vw}
}

/* Phones. */
@media(max-width:600px){
  .how-actions{flex-direction:column}
  .btn-sub{min-width:0}
  .community-card{margin-top:36px;padding:22px 20px}
  .btn-community{display:flex;width:100%}

  .hero-main{padding:96px 20px 24px}
  .hero-kicker{margin-bottom:18px;font-size:13px}
  .hero-vertical{margin:0 20px 64px;font-size:12.5px;line-height:1.9}
  .hero-tagline-en{margin:0 20px 64px}
  .hero h1{font-size:clamp(42px,12.5vw,56px)}
  .hero-edition{margin-top:16px;font-size:20px}
  .hero-lead{margin-top:18px;font-size:14px;line-height:1.95}
  .hero-lead strong{font-size:18px;margin-bottom:8px}
  /* Date and call to action side by side. */
  .hero-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;margin-top:26px}
  .hero .date-card{padding:12px 16px}
  .hero .date-card b{font-size:21px;margin-top:4px}
  .hero .btn-light{padding:0 12px}
  .hero .btn-light,#final .btn-light{min-width:0;min-height:56px;justify-content:center;font-size:16px}
  .btn-entry{min-width:0;min-height:56px;padding:10px 16px}
  .how-actions .btn-entry{flex:1}
  .date-card{min-width:0}

  #about .wrap{padding:72px 20px}
  #about .eyebrow{margin-bottom:24px}
  #about .about-title{font-size:clamp(23px,7.4vw,32px)}
  #about .omni-global-profile>h3,#about .omni-tokyo-profile>h3{font-size:30px}
  #about .omni-official-link{padding:18px}
  #why h3{font-size:24px}

  #event .event-body{padding:72px 20px 56px}
  #event .event-body>p{font-size:14px;line-height:2.1}
  .program-grid>div{padding:20px 16px 22px}
  .program-grid b{font-size:17px}
  .program-grid span{font-size:13px}

  #benefits .wrap{padding:72px 20px}
  .benefit-list>div{grid-template-columns:40px 1fr}
  .benefit-list h3{font-size:19px}
  .benefit-list p{font-size:14px;line-height:1.9}

  #categories .wrap{padding:72px 20px}
  #categories .intro{font-size:14px;line-height:2;margin:22px 0 32px}

  #jury .wrap{padding:72px 20px}
  .jury-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px;margin-top:36px}
  .jury-grid h3{font-size:15px}

  .omni-entry-inner{padding:56px 20px}
  #eligibility p{font-size:14px;line-height:2}
  #eligibility th,#eligibility td{display:block;width:auto}
  #eligibility th{border-bottom:0;padding-bottom:8px}
  #eligibility td{padding-top:10px}
  /* Closed tables read as tappable rows. */
  .entry-table{margin:16px 0}
  .entry-table summary{padding:16px 0;border-top:1px solid var(--line-paper);border-bottom:1px solid var(--line-paper);font-size:15px;color:#27251f}
  .entry-table[open] summary{border-bottom:0}
  .schedule-table>div{grid-template-columns:minmax(0,1fr);gap:6px;padding:18px 0}
  .schedule-table b{font-size:20px}
  #how .lead{font-size:14px}
  .omni-flow-grid{grid-template-columns:minmax(0,1fr)}
  .omni-flow-grid>div{display:grid;grid-template-columns:36px 1fr;gap:4px 16px;padding:18px}
  .omni-flow-grid h3{margin:0;align-self:center;font-size:13px}
  .omni-flow-grid small{grid-column:2;font-size:13px}

  #faq .wrap{padding:72px 20px}
  .faq-list{margin-top:32px}
  #faq .omni-faq-question{gap:16px;padding:20px 0;font-size:15px}
  #faq .omni-faq-answer{padding-right:0;padding-bottom:22px;font-size:14px;line-height:2}

  #partners .wrap{padding:64px 20px}
  .partner-groups{grid-template-columns:minmax(0,1fr);gap:40px}
  .partner-group--1,.partner-group--2,.partner-group--3{grid-column:auto}
  .partner-list,.partner-group--1 .partner-list,.partner-group--2 .partner-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px}
  .partner-name{font-size:13px}

  #final .final-body{padding:80px 20px}
  #final h2{font-size:clamp(40px,12vw,56px)}
  html[lang="ja"] #final h2{font-size:clamp(28px,8vw,40px)}
  #final .final-lead{font-size:16px}
  #final .final-note{font-size:13.5px}
  #final .final-actions{grid-template-columns:minmax(0,1fr)}

  .site-foot{flex-direction:column;align-items:flex-start;padding:32px 20px 40px;line-height:2}
}

/* Very narrow phones (e.g. 320px). */
@media(max-width:360px){
  .hero h1 .l2{white-space:normal}
  .hero-actions{grid-template-columns:minmax(0,1fr)}
  .program-grid{grid-template-columns:minmax(0,1fr)}
}
