:root{
  --ink:#050302;--ink2:#0d0705;--wine:#4b060a;--red:#8a0e15;--red2:#b61d22;
  --gold:#d7af45;--gold2:#f4da87;--gold3:#8f5b0d;--cream:#f4e8cf;--paper:#f1dfb4;
  --muted:#b49e77;--line:rgba(220,182,84,.42);--serif:"Shippori Mincho","Yu Mincho",serif;--sans:"Noto Sans JP","Yu Gothic",sans-serif;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ink)}body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--sans);line-height:1.7;overflow-x:hidden}a{color:inherit}.wrap{width:min(1120px,calc(100% - 34px));margin:auto}.wrap-wide{width:min(1240px,calc(100% - 34px));margin:auto}
body:before{content:"";position:fixed;inset:0;z-index:-10;background:
  radial-gradient(circle at 50% 12%,rgba(140,15,20,.18),transparent 28rem),
  radial-gradient(circle at 50% 68%,rgba(132,10,17,.09),transparent 35rem),
  linear-gradient(180deg,#050302,#090503 48%,#030201)}
body:after{content:"";position:fixed;inset:0;z-index:-9;opacity:.24;pointer-events:none;background-image:
  linear-gradient(60deg,rgba(220,182,84,.08) 1px,transparent 1px),
  linear-gradient(-60deg,rgba(220,182,84,.06) 1px,transparent 1px);background-size:44px 76px;background-position:0 0,22px 38px}
.site-atmosphere{position:fixed;inset:0;z-index:-8;pointer-events:none;overflow:hidden}.atmo-city{position:absolute;top:0;bottom:0;width:min(28vw,360px);opacity:.2;background-size:cover;background-position:center}.atmo-city-left{left:0;background-image:url('../images/decor/street-left.jpg');mask-image:linear-gradient(90deg,#000 20%,transparent 100%)}.atmo-city-right{right:0;background-image:url('../images/decor/street-right.jpg');mask-image:linear-gradient(270deg,#000 20%,transparent 100%)}.atmo-sakura{position:absolute;left:-2vw;top:0;width:420px;height:300px;background:url('../images/decor/blossom.jpg') left top/cover no-repeat;mix-blend-mode:screen;opacity:.32;mask-image:linear-gradient(135deg,#000 22%,transparent 78%)}

.site-header{position:sticky;top:0;z-index:90;height:66px;display:flex;align-items:center;padding:0 max(18px,calc((100vw - 1240px)/2));background:rgba(3,2,2,.88);backdrop-filter:blur(14px);border-bottom:1px solid rgba(220,182,84,.28)}.brand{display:flex;align-items:center;width:132px;height:46px;overflow:hidden}.brand img{width:100%;height:auto}.nav-menu{margin-left:auto;display:flex;gap:22px}.nav-menu a{text-decoration:none;color:#dfcca0;font-size:12px;letter-spacing:.06em;transition:.2s}.nav-menu a:hover{color:var(--gold2)}.nav-toggle{display:none;margin-left:auto;width:44px;height:44px;background:transparent;border:0}.nav-toggle span{display:block;width:27px;height:1px;background:var(--gold2);margin:6px auto}

.hero{position:relative;isolation:isolate;overflow:hidden;padding:28px 0 44px;min-height:760px;border-bottom:1px solid rgba(220,182,84,.2)}.hero:before{content:"";position:absolute;inset:0;z-index:-8;background:
  radial-gradient(circle at 50% 47%,rgba(132,10,17,.14),transparent 28rem),
  linear-gradient(180deg,rgba(5,3,2,.06),rgba(5,3,2,.42) 70%,#050302 100%)}
.hero:after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(1500px,100%);height:56%;z-index:-7;background:
  linear-gradient(90deg,rgba(5,3,2,.98),transparent 28%,transparent 72%,rgba(5,3,2,.98)),
  url('../images/decor/street-left.jpg') left bottom/33% auto no-repeat,
  url('../images/decor/street-right.jpg') right bottom/33% auto no-repeat;opacity:.64;mask-image:linear-gradient(transparent,#000 30%,#000)}
.hero-brush-ring{position:absolute;left:50%;top:37%;width:min(820px,78vw);aspect-ratio:1;border:34px solid rgba(113,6,12,.34);border-radius:50%;transform:translate(-50%,-50%);z-index:-5;filter:blur(2px);box-shadow:0 0 75px rgba(128,9,16,.16),inset 0 0 40px rgba(142,11,18,.14)}
.hero-fireworks .burst{position:absolute;width:180px;aspect-ratio:1;border-radius:50%;opacity:.32;z-index:-4;background:
  repeating-conic-gradient(from 0deg,transparent 0 8deg,rgba(240,205,104,.95) 8deg 9.2deg,transparent 9.2deg 18deg);mask:radial-gradient(circle,transparent 0 31%,#000 32% 33%,transparent 34% 51%,#000 52% 53%,transparent 54%)}.burst-a{left:7%;top:9%}.burst-b{right:8%;top:15%;transform:scale(.7);opacity:.2!important}.burst-c{right:19%;top:1%;transform:scale(.45);opacity:.14!important}
.hero-castle{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);width:min(760px,68vw);z-index:-3;opacity:.28;filter:drop-shadow(0 0 28px rgba(236,206,119,.12))}.hero-castle img{display:block;width:100%}.hero-lantern-row{position:absolute;top:46%;display:flex;gap:28px;z-index:-2;opacity:.45}.hero-lantern-row img{width:64px;filter:drop-shadow(0 0 16px rgba(240,171,65,.23))}.hero-lantern-row-left{left:4%}.hero-lantern-row-right{right:4%}.hero-lantern-row-right img{transform:scaleX(-1)}
.hero-inner{position:relative;z-index:2;text-align:center}.hero-presented{margin:4px 0 6px;font-family:var(--serif);font-size:clamp(14px,1.8vw,21px);letter-spacing:.16em;color:#d6b965}.hero-presented span{font-family:Georgia,serif;letter-spacing:.04em}.hero-logo-frame{width:min(760px,82vw);margin:0 auto -4px;overflow:hidden;filter:drop-shadow(0 16px 28px rgba(0,0,0,.74))}.hero-logo{display:block;width:100%;height:auto}.hero-subcopy{margin:0 auto 12px;font:600 clamp(13px,1.8vw,18px)/1.5 var(--serif);letter-spacing:.15em;color:#e7dfcf}.hero-meta{display:flex;justify-content:center;align-items:center;gap:14px;font:700 clamp(20px,3vw,34px)/1 var(--serif);letter-spacing:.12em;color:var(--gold2)}.hero-meta i{width:1px;height:1.15em;background:rgba(220,182,84,.7)}.hero-start{font:700 clamp(24px,3.3vw,39px)/1.25 var(--serif);letter-spacing:.16em;color:#f5da88;margin:13px 0 2px}.hero-kicker{margin:4px 0 6px;font:600 clamp(13px,1.5vw,17px)/1.4 var(--serif);letter-spacing:.22em;color:#d9bb70}.hero h1{margin:6px auto 18px;font:700 clamp(28px,4.5vw,52px)/1.38 var(--serif);letter-spacing:.1em;background:linear-gradient(#fff3c7 10%,#e3bd5e 52%,#8a590d 96%);-webkit-background-clip:text;color:transparent;text-shadow:0 8px 28px rgba(0,0,0,.22)}.hero-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:12px auto}.btn-festival,.btn-ghost,.btn-gold,.line-btn,.onair-action{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.btn-festival{min-width:225px;min-height:48px;padding:12px 24px;background:linear-gradient(#f7df8d,#c68d1a 72%,#7c4d06);color:#1f1002;font:800 15px/1.2 var(--serif);border:1px solid #f7dc82;box-shadow:inset 0 1px #fff0b8,0 8px 20px rgba(0,0,0,.36);clip-path:polygon(6% 0,94% 0,100% 24%,100% 76%,94% 100%,6% 100%,0 76%,0 24%)}.btn-ghost{min-width:205px;min-height:48px;padding:12px 22px;border:1px solid rgba(220,182,84,.62);background:rgba(7,4,3,.58);font:700 14px/1.2 var(--serif);color:#e9ca72;box-shadow:inset 0 0 0 1px rgba(255,221,131,.06)}
.event-status{width:min(620px,100%);margin:14px auto;padding:12px 18px;border:1px solid rgba(220,182,84,.46);background:linear-gradient(90deg,rgba(88,6,10,.72),rgba(8,5,3,.86),rgba(88,6,10,.72));box-shadow:0 12px 35px rgba(0,0,0,.28),inset 0 0 24px rgba(221,181,77,.05)}.event-status-label{display:block;font:700 10px/1 Georgia,serif;letter-spacing:.24em;color:#d3ae50}.countdown{display:flex;justify-content:center;gap:20px;align-items:center;min-height:38px;margin-top:5px}.countdown span{display:flex;align-items:baseline;gap:3px}.countdown b{font:700 25px/1 var(--serif);color:#f5d77d}.countdown small{font-size:9px;color:#b5a27b}.countdown strong{font:700 18px/1.4 var(--serif);color:#f3d57c;letter-spacing:.12em}.status-live-dot,.live-dot{width:8px;height:8px;border-radius:50%;background:#e22;box-shadow:0 0 12px #e22;display:inline-block}
.hero-faces-wrap{width:min(760px,100%);margin:14px auto 0;padding:11px 8px 12px;border-top:1px solid rgba(220,182,84,.2);border-bottom:1px solid rgba(220,182,84,.18);background:linear-gradient(90deg,transparent,rgba(116,7,12,.13),transparent)}.hero-faces-label{display:block;margin-bottom:8px;font:700 9px/1 Georgia,serif;letter-spacing:.33em;color:#bd9847}.hero-faces{display:grid;grid-template-columns:repeat(9,1fr);gap:7px}.hero-face{aspect-ratio:1;border-radius:50%;padding:3px;background:linear-gradient(135deg,#fff1a9,#815006 34%,#f4d67b 58%,#5b3505);box-shadow:0 6px 18px rgba(0,0,0,.5)}.hero-face img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;border:2px solid #090604}.hero-wave-floor{position:absolute;left:0;right:0;bottom:0;height:112px;z-index:-1;background:url('../images/decor/waves.jpg') center bottom/cover no-repeat;opacity:.5;mask-image:linear-gradient(transparent,#000 55%)}

.festival-overview{position:relative;padding:34px 0 52px;background:
  radial-gradient(circle at 50% 0,rgba(126,11,17,.16),transparent 28rem),
  linear-gradient(180deg,#070403,#0c0604 58%,#050302);border-bottom:1px solid rgba(220,182,84,.18)}.festival-overview:before,.festival-overview:after{content:"";position:absolute;bottom:0;width:260px;height:100%;background-size:cover;background-position:bottom;opacity:.28}.festival-overview:before{left:0;background-image:url('../images/decor/street-left.jpg');mask-image:linear-gradient(90deg,#000,transparent)}.festival-overview:after{right:0;background-image:url('../images/decor/street-right.jpg');mask-image:linear-gradient(270deg,#000,transparent)}.festival-divider{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:20px;color:#e7c86e;font-family:var(--serif);letter-spacing:.16em}.festival-divider span{height:1px;width:min(190px,24vw);background:linear-gradient(90deg,transparent,var(--gold))}.festival-divider span:last-child{transform:scaleX(-1)}.festival-divider b{font-size:clamp(20px,3vw,30px)}.night-cards{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.night-card{position:relative;text-decoration:none;min-height:150px;padding:18px 18px 16px;border:1px solid rgba(220,182,84,.55);background:
  radial-gradient(circle at 92% 34%,transparent 0 48px,rgba(130,12,17,.3) 49px 59px,transparent 60px),
  linear-gradient(135deg,rgba(65,6,9,.86),rgba(5,3,2,.94));box-shadow:0 16px 36px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,222,132,.05)}.night-card:after{content:"";position:absolute;right:12px;bottom:10px;width:56px;height:70px;background:url('../images/decor/lantern.svg') center/contain no-repeat;opacity:.16}.night-card strong,.night-card span,.night-card em,.night-card small{display:block;position:relative;z-index:1}.night-card strong{font:700 24px/1.3 var(--serif);color:#f2d578}.night-card span{font:700 18px/1.5 Georgia,serif;color:#d3b35f}.night-card em{font-style:normal;font:700 14px/1.5 var(--serif);letter-spacing:.08em;color:#f0e5cf}.night-card small{margin-top:12px;font:700 10px/1 Georgia,serif;letter-spacing:.18em;color:#a98b49}.overview-stats{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.overview-stats>div{padding:14px 10px;text-align:center;border:1px solid rgba(220,182,84,.35);background:rgba(8,5,3,.78)}.overview-stats b{display:block;font:700 clamp(16px,2.1vw,22px)/1.35 var(--serif);color:#e8c96f}.overview-stats span{display:block;margin-top:3px;font-size:10px;letter-spacing:.14em;color:#9f8c67}

.section-tight{position:relative;padding:0 0 18px}.onair-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:-18px}.onair-message,.onair-card{position:relative;overflow:hidden;padding:19px;border:1px solid rgba(220,182,84,.48);background:linear-gradient(135deg,rgba(80,6,10,.96),rgba(8,4,3,.98));box-shadow:0 18px 44px rgba(0,0,0,.45)}.onair-message{grid-column:1/-1;text-align:center}.onair-message:after,.onair-card:after{content:"";position:absolute;right:-45px;top:-45px;width:130px;height:130px;border-radius:50%;border:12px solid rgba(145,13,19,.28)}.onair-message span,.onair-kicker{font:700 10px/1 Georgia,serif;letter-spacing:.2em;color:#d7ac49}.onair-message strong{display:block;font:700 22px/1.35 var(--serif);color:#f3d678}.onair-message p{margin:5px 0 0;color:#c0ac84;font-size:12px}.onair-person{display:flex;align-items:center;gap:14px;margin:10px 0}.onair-person img{width:76px;height:76px;object-fit:cover;border-radius:50%;padding:3px;background:linear-gradient(#f5da84,#8b5710);border:2px solid #090604}.onair-time{margin:0;color:#b39d72;font-size:11px}.onair-copy h3{margin:3px 0;font:700 19px/1.35 var(--serif);color:#f2d47a}.onair-action{min-height:38px;padding:8px 13px;border:1px solid rgba(220,182,84,.44);font-size:11px;color:#e7c86d}.onair-action.is-disabled{opacity:.45}

.section{position:relative;padding:76px 0}.festival-section{background:linear-gradient(rgba(5,3,2,.92),rgba(5,3,2,.95)),radial-gradient(circle at 50% 0,rgba(129,10,16,.18),transparent 28rem)}.section-head{text-align:center;margin-bottom:28px}.section-en{display:block;font:700 9px/1 Georgia,serif;letter-spacing:.3em;color:#bf9845}.section-head h2{margin:8px 0 4px;font:700 clamp(31px,4.8vw,47px)/1.35 var(--serif);letter-spacing:.11em;color:#edcd74}.section-head p{max-width:720px;margin:8px auto 0;font-size:12px;color:#ad9975}.head-ornament{display:flex;justify-content:center;align-items:center;gap:12px;color:#d6ad48}.head-ornament b{display:block;width:72px;height:1px;background:linear-gradient(90deg,transparent,#d6ad48)}.head-ornament b:last-child{transform:scaleX(-1)}.head-ornament i{font-style:normal;font-size:12px}
.festival-scene{position:absolute;inset:0;pointer-events:none;overflow:hidden}.scene-castle{position:absolute;left:50%;top:155px;transform:translateX(-50%);width:min(720px,70vw);opacity:.06}.scene-lantern{position:absolute;width:42px;height:86px;background:url('../images/decor/lantern.svg') center/contain no-repeat;opacity:.15}.scene-lantern.l1{left:4%;top:330px}.scene-lantern.l2{right:4%;top:290px}.scene-lantern.l3{right:15%;top:590px;transform:scale(.72)}
.tt-tabs{position:relative;z-index:3;display:flex;justify-content:center;gap:9px;margin-bottom:14px}.tt-tab{min-width:96px;padding:9px 16px;border:1px solid rgba(220,182,84,.36);background:#090503;color:#bba777;font-family:var(--serif)}.tt-tab b{display:block;font-size:20px;line-height:1.1;color:#dfc16c}.tt-tab span{font-size:10px}.tt-tab.is-active{background:linear-gradient(#991217,#4c0508);border-color:#d9aa3b;color:#fff2c4}.tt-tab.is-active b{color:#fff2c4}.schedule-board{position:relative;overflow:hidden;max-width:900px;margin:auto;padding:24px 24px 30px;border:1px solid rgba(220,182,84,.58);background:
  linear-gradient(rgba(3,2,2,.55),rgba(3,2,2,.8)),
  radial-gradient(circle at 50% 45%,transparent 0 205px,rgba(133,12,17,.27) 210px 228px,transparent 232px),
  linear-gradient(90deg,rgba(8,4,3,.84),rgba(15,8,5,.92),rgba(8,4,3,.84));box-shadow:0 26px 80px rgba(0,0,0,.52)}.schedule-board:before,.schedule-board:after{content:"";position:absolute;top:78px;bottom:0;width:180px;background-size:cover;background-position:center;opacity:.36}.schedule-board:before{left:0;background-image:url('../images/decor/street-left.jpg');mask-image:linear-gradient(90deg,#000,transparent)}.schedule-board:after{right:0;background-image:url('../images/decor/street-right.jpg');mask-image:linear-gradient(270deg,#000,transparent)}.schedule-board-logo{position:relative;z-index:2;width:min(640px,82%);margin:0 auto 0;overflow:hidden}.schedule-board-logo img{display:block;width:100%}.schedule-board-date,.schedule-board-start{position:relative;z-index:2;text-align:center;font-family:var(--serif);color:#efd176}.schedule-board-date{font-size:25px;letter-spacing:.1em}.schedule-board-date small{font-size:14px;margin-left:.45em}.schedule-board-start{margin:1px 0 17px;font-size:14px;letter-spacing:.18em}.schedule-grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 14px}.schedule-card{text-align:center;min-width:0}.schedule-avatar{position:relative;width:min(155px,100%);aspect-ratio:1;margin:auto;padding:4px;border-radius:50%;background:linear-gradient(135deg,#fff0a4,#7f4c06 32%,#f6da81 57%,#5d3504);box-shadow:0 10px 24px rgba(0,0,0,.46)}.schedule-avatar img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;border:3px solid #070402}.schedule-no{position:absolute;left:-4px;top:-5px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(#f1d278,#a96e0c);border:1px solid #ffe99b;color:#2b1703;font:700 17px var(--serif);box-shadow:0 5px 12px rgba(0,0,0,.4)}.schedule-time{margin:8px 0 4px;font:700 16px/1 var(--serif);letter-spacing:.08em;color:#eed17b}.schedule-time:before{content:"✹";font-size:8px;margin-right:4px}.schedule-name{min-height:44px;padding:5px 3px;border-top:1px solid rgba(220,182,84,.33);border-bottom:1px solid rgba(220,182,84,.22);font:700 12px/1.35 var(--serif);color:#efe1c6;overflow-wrap:anywhere}.schedule-accessible{display:none}
.cast-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:28px 18px}.cast-card{text-align:center;min-width:0}.cast-ring{width:min(100%,132px);aspect-ratio:1;margin:auto;padding:4px;border-radius:50%;background:linear-gradient(135deg,#fff1a8,#7c4a05 34%,#f6d981 58%,#5d3504);box-shadow:0 12px 28px rgba(0,0,0,.45)}.cast-ring img{width:100%;height:100%;display:block;object-fit:cover;border-radius:50%;border:3px solid #070402}.cast-meta{display:flex;justify-content:center;gap:7px;margin-top:7px;font-size:8px;color:#a98e56}.cast-card h3{min-height:36px;margin:5px 0 4px;font:700 12px/1.35 var(--serif);color:#f0dfbe;overflow-wrap:anywhere}.cast-card>a,.cast-card>span{font-size:9px;color:#8f7a55;text-decoration:none}

.section-about{overflow:hidden;background:
  linear-gradient(rgba(5,3,2,.72),rgba(5,3,2,.93)),
  radial-gradient(circle at 50% 48%,rgba(126,12,18,.25),transparent 23rem);border-top:1px solid rgba(220,182,84,.15);border-bottom:1px solid rgba(220,182,84,.18)}.about-scene{position:absolute;inset:0;pointer-events:none}.about-street{position:absolute;top:0;bottom:0;width:32%;background-size:cover;background-position:center;opacity:.38}.about-street.left{left:0;background-image:url('../images/decor/street-left.jpg');mask-image:linear-gradient(90deg,#000,transparent)}.about-street.right{right:0;background-image:url('../images/decor/street-right.jpg');mask-image:linear-gradient(270deg,#000,transparent)}.about-firework{position:absolute;left:50%;top:26px;transform:translateX(-50%);width:250px;aspect-ratio:1;border-radius:50%;opacity:.16;background:repeating-conic-gradient(transparent 0 9deg,#f0d06c 9deg 10deg,transparent 10deg 18deg);mask:radial-gradient(circle,transparent 0 35%,#000 36% 37%,transparent 38% 55%,#000 56% 57%,transparent 58%)}.about-panel{position:relative;z-index:2;max-width:820px;margin:auto;padding:28px 34px;text-align:center;border:1px solid rgba(220,182,84,.38);background:rgba(7,4,3,.72);box-shadow:0 20px 60px rgba(0,0,0,.35)}.about-panel p{margin:8px 0;color:#c8b999}.about-panel blockquote{margin:18px 0;font:700 clamp(22px,3.2vw,34px)/1.55 var(--serif);color:#efce73}

.section-passport{background:linear-gradient(#100906,#050302 72%)}.passport-stage{max-width:880px;margin:auto}.passport-shell{padding:10px;border:1px solid #8f6a2a;background:linear-gradient(#251409,#120b06);box-shadow:0 24px 70px rgba(0,0,0,.5)}.passport-titlebar{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:linear-gradient(90deg,#5d0c0d,#120b07 70%);border:1px solid rgba(220,182,84,.28)}.passport-titlebar span{display:block;font:700 9px Georgia,serif;letter-spacing:.18em;color:#c59842}.passport-titlebar strong{display:block;font:700 24px/1.3 var(--serif);letter-spacing:.18em;color:#efcf77}.passport-titlebar p{margin:0;color:#f0d078}.passport-titlebar p b{font:700 30px var(--serif)}.passport-day{margin:12px 8px;padding:14px 12px;background:linear-gradient(180deg,#f3e4bf,#ead5a0);color:#2e1b0e;border:1px solid #b99552}.passport-day header{display:flex;justify-content:space-between;align-items:end;margin-bottom:12px}.passport-day header b{display:block;font:700 18px var(--serif)}.passport-day header span{display:block;font-size:10px}.passport-day header>strong{font:700 22px var(--serif);color:#8d0f13}.stamp-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.stamp-slot{position:relative;aspect-ratio:1;border:1px dashed rgba(90,61,31,.35);border-radius:50%;display:grid;place-items:center;background:rgba(255,250,231,.25)}.stamp-no{position:absolute;left:7px;top:5px;font:700 9px Georgia,serif}.stamp-mark{width:58%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(70,48,28,.28);font:700 12px var(--serif);color:#735e46}.stamp-slot small{position:absolute;bottom:6px;font-size:8px;color:#7e684d}.stamp-slot.is-stamped .stamp-mark{border:2px solid #9a1419;color:#9a1419;transform:rotate(-9deg);font-size:16px;box-shadow:inset 0 0 0 2px rgba(154,20,25,.12)}.kw-form{margin:15px 8px 4px;padding-top:15px;border-top:1px solid rgba(220,182,84,.25)}.kw-form label{display:block;margin-bottom:7px;font:700 15px var(--serif);color:#e0bd62}.kw-row{display:flex;gap:8px}.kw-input{flex:1;min-width:0;min-height:46px;padding:10px 12px;border:1px solid rgba(220,182,84,.35);background:#090604;color:#f0e3c6;font-size:16px}.btn-red{min-height:46px;padding:0 16px;border:1px solid #d9a43b;background:linear-gradient(#a9181d,#661014);color:#fff0c2;font:700 13px var(--serif)}.kw-msg{min-height:20px;margin:6px 0 0;font-size:11px;color:#bca579}.passport-actions{display:flex;justify-content:center;gap:8px;padding:8px}.btn-paper{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 14px;border:1px solid rgba(220,182,84,.35);background:#110b07;color:#dfc576;text-decoration:none;font:700 11px var(--serif)}

.section-reward{background:radial-gradient(circle at 50% 12%,rgba(126,12,18,.16),transparent 26rem),#050302}.reward-status{max-width:760px;margin:0 auto 14px;padding:16px;text-align:center;border:1px solid rgba(220,182,84,.35);background:linear-gradient(90deg,rgba(70,7,10,.72),rgba(8,5,3,.85),rgba(70,7,10,.72))}.reward-status strong{display:block;font:700 25px var(--serif);color:#f1d276}.reward-status span{font-size:11px;color:#bba77d}.reward-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;max-width:760px;margin:auto}.reward-card{position:relative;overflow:hidden;min-height:170px;padding:22px;border:1px solid rgba(220,182,84,.33);background:linear-gradient(135deg,rgba(24,12,7,.95),rgba(9,5,3,.96))}.reward-card:after{content:"完";position:absolute;right:14px;bottom:-14px;font:800 82px var(--serif);color:rgba(126,13,18,.18);transform:rotate(-12deg)}.reward-card span{font:700 9px Georgia,serif;letter-spacing:.18em;color:#c69b41}.reward-card h3{margin:8px 0;font:700 21px/1.45 var(--serif);color:#efcf76}.reward-card p{font-size:11px;color:#aa9875}.btn-gold{max-width:760px;width:100%;min-height:48px;margin:14px auto 0;background:linear-gradient(#f5dc86,#b77a12);color:#231302;font:800 14px var(--serif);border:1px solid #f4da82}.btn-gold.is-locked{opacity:.45;pointer-events:none}

.section-edo{overflow:hidden;background:linear-gradient(#050302,#080403)}.edo-castle{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(760px,74vw);opacity:.07}.edo-castle img{width:100%}.edo-card{position:relative;z-index:2;max-width:820px;margin:auto;padding:28px 34px;text-align:center;border-top:1px solid rgba(220,182,84,.25);border-bottom:1px solid rgba(220,182,84,.25)}.edo-lead{font-size:15px;color:#d7c7a5}.edo-card blockquote{margin:18px 0;font:700 clamp(22px,3vw,34px)/1.55 var(--serif);color:#efce74}.edo-card>p:last-of-type{font-size:13px;color:#aa9875}.edo-links{display:flex;justify-content:center;gap:8px;margin-top:12px}.edo-links a,.link-preparing{padding:7px 12px;border:1px solid rgba(220,182,84,.28);font-size:10px;text-decoration:none;color:#b9a377}.line-btn{width:min(620px,100%);min-height:50px;margin:24px auto 0;padding:11px 16px;background:#087d33;color:#e8f4ec;font-weight:700;border-radius:3px}.line-note{max-width:620px;margin:8px auto 0;font-size:10px;color:#80735b;text-align:center}

.site-footer{position:relative;overflow:hidden;padding:50px 0 100px;text-align:center;border-top:1px solid rgba(220,182,84,.14);background:linear-gradient(#060302,#030201)}.site-footer:before{content:"";position:absolute;left:0;right:0;bottom:0;height:110px;background:url('../images/decor/waves.jpg') center bottom/cover no-repeat;opacity:.28}.footer-fireworks{position:absolute;left:50%;top:-35px;transform:translateX(-50%);width:180px;aspect-ratio:1;border-radius:50%;opacity:.1;background:repeating-conic-gradient(transparent 0 8deg,#e8ca6b 8deg 9deg,transparent 9deg 18deg);mask:radial-gradient(circle,transparent 0 35%,#000 36% 37%,transparent 38% 55%,#000 56% 57%,transparent 58%)}.site-footer .wrap{position:relative;z-index:2}.site-footer p{font:700 20px var(--serif);color:#d7b65e}.site-footer small{color:#8e7c5c}

.complete-backdrop{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:18px;background:rgba(0,0,0,.84);backdrop-filter:blur(6px)}.complete-card{position:relative;max-width:540px;width:100%;padding:32px 26px;text-align:center;border:1px solid rgba(220,182,84,.62);background:radial-gradient(circle at 50% 20%,rgba(126,13,18,.25),transparent 17rem),#0b0604;box-shadow:0 30px 100px rgba(0,0,0,.7)}.complete-card.is-all{box-shadow:0 0 0 1px #d7af45,0 30px 100px rgba(0,0,0,.7)}.complete-close{position:absolute;right:10px;top:8px;width:34px;height:34px;border:0;background:transparent;color:#e6c971;font-size:24px}.complete-seal{width:82px;height:82px;margin:auto;border:3px double #a31519;border-radius:50%;display:grid;place-items:center;color:#a31519;font:800 29px var(--serif);transform:rotate(-8deg)}.complete-kicker{font:700 10px Georgia,serif;letter-spacing:.18em;color:#c69b41}.complete-card h2{font:700 27px/1.45 var(--serif);color:#efd075}.complete-card p{color:#b4a17d}.complete-share{margin:10px auto 8px}.complete-card .btn-paper{margin:auto}

@media(max-width:900px){.cast-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-lantern-row{display:none}.atmo-city{width:220px;opacity:.14}.night-cards{gap:9px}}
@media(max-width:720px){
  html{scroll-padding-top:58px}.wrap,.wrap-wide{width:calc(100% - 24px)}.site-header{height:58px;padding:0 14px}.brand{width:122px}.nav-toggle{display:block}.nav-menu{position:fixed;left:0;right:0;top:58px;display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;padding:10px;background:rgba(5,3,2,.98);border-bottom:1px solid rgba(220,182,84,.3);transform:translateY(-130%);opacity:0;pointer-events:none;transition:.2s}.nav-menu.is-open{transform:none;opacity:1;pointer-events:auto}.nav-menu a{padding:13px 10px;border-bottom:1px solid rgba(220,182,84,.12);font-size:12px}.atmo-city{display:none}.atmo-sakura{width:180px;height:160px;opacity:.2}
  .hero{min-height:auto;padding:22px 0 34px}.hero:after{height:45%;background-size:50% auto,50% auto;opacity:.4}.hero-brush-ring{top:31%;width:124vw;border-width:15px;opacity:.75}.hero-castle{width:108vw;bottom:20px;opacity:.14}.burst-a{left:-38px;top:8%;transform:scale(.62)}.burst-b{right:-46px;top:18%;transform:scale(.48)}.burst-c{display:none}.hero-presented{font-size:13px;letter-spacing:.1em}.hero-logo-frame{width:min(100%,420px);margin-bottom:1px}.hero-subcopy{font-size:clamp(11px,3vw,13px);letter-spacing:.08em;line-height:1.55}.hero-meta{gap:8px;font-size:clamp(18px,5.4vw,23px);letter-spacing:.05em}.hero-start{font-size:clamp(23px,7vw,29px);letter-spacing:.1em;margin-top:9px}.hero-kicker{font-size:12px;letter-spacing:.14em}.hero h1{font-size:clamp(25px,7.7vw,32px);line-height:1.35;letter-spacing:.025em;margin-bottom:15px}.hero-actions{display:grid;grid-template-columns:1fr;gap:8px;width:100%;margin:8px 0}.btn-festival,.btn-ghost{width:100%;min-width:0;min-height:48px;font-size:14px}.event-status{margin-top:10px;padding:12px 8px}.countdown{gap:clamp(5px,3vw,11px)}.countdown b{font-size:clamp(20px,6vw,26px)}.countdown small{font-size:8px}.hero-faces-wrap{margin-top:11px;padding:9px 2px 10px}.hero-faces{grid-template-columns:repeat(6,1fr);gap:5px}.hero-face{padding:2px}.hero-wave-floor{height:65px;opacity:.33}
  .festival-overview{padding:26px 0 38px}.festival-divider{gap:9px;margin-bottom:13px}.festival-divider b{font-size:22px}.night-cards{grid-template-columns:1fr;gap:8px}.night-card{min-height:112px;padding:14px 16px}.night-card strong{font-size:21px}.night-card span{font-size:16px}.night-card em{font-size:13px}.overview-stats{grid-template-columns:1fr;gap:7px}.overview-stats>div{padding:11px 8px}.overview-stats b{font-size:17px}.overview-stats span{font-size:9px}
  .section-tight{padding-bottom:12px}.onair-stack{grid-template-columns:1fr;gap:8px;margin-top:-8px}.onair-message,.onair-card{padding:15px}.onair-person img{width:64px;height:64px}.onair-copy h3{font-size:17px}.onair-action{min-height:42px}
  .section{padding:52px 0}.section-head{margin-bottom:22px}.section-en{font-size:8px}.section-head h2{font-size:clamp(27px,8vw,34px);letter-spacing:.06em}.section-head p{font-size:11px;line-height:1.8}.head-ornament b{width:40px}
  .tt-tabs{position:sticky;top:58px;z-index:25;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px;padding:7px 0;background:rgba(5,3,2,.96)}.tt-tab{min-width:0;padding:8px 4px;min-height:60px}.tt-tab b{font-size:20px}.schedule-board{padding:14px 6px 18px}.schedule-board:before,.schedule-board:after{top:84px;width:82px;opacity:.2}.schedule-board-logo{width:94%}.schedule-board-date{font-size:clamp(20px,6vw,24px)}.schedule-board-date small{font-size:12px}.schedule-board-start{font-size:12px;margin-bottom:14px}.schedule-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 4px}.schedule-avatar{width:clamp(78px,25.5vw,104px);padding:3px}.schedule-no{width:27px;height:27px;font-size:13px}.schedule-time{font-size:clamp(12px,3.6vw,14px);white-space:nowrap}.schedule-name{min-height:43px;font-size:clamp(8.5px,2.45vw,10.5px);line-height:1.3;padding:5px 1px}.scene-castle{width:112vw;top:180px;opacity:.04}.scene-lantern{display:none}
  .cast-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:19px 8px}.cast-ring{width:min(100%,104px);padding:3px}.cast-meta{display:block;font-size:7.5px;line-height:1.3}.cast-card h3{min-height:34px;font-size:clamp(9.5px,2.8vw,11px);line-height:1.35}.cast-card>a,.cast-card>span{font-size:8px}
  .about-panel{padding:22px 14px}.about-panel p{font-size:13px}.about-panel blockquote{font-size:clamp(20px,6vw,26px)}.about-street{width:48%;opacity:.24}
  .section-passport .wrap{width:calc(100% - 18px)}.passport-shell{padding:6px}.passport-titlebar{padding:12px 9px}.passport-titlebar strong{font-size:19px;letter-spacing:.12em}.passport-titlebar p b{font-size:24px}.passport-day{margin:8px 3px;padding:11px 7px}.passport-day header b{font-size:15px}.passport-day header>strong{font-size:18px}.stamp-grid{grid-template-columns:repeat(3,1fr);gap:7px}.kw-row{display:grid;grid-template-columns:1fr}.btn-red{width:100%}.passport-actions{display:grid;grid-template-columns:1fr}.btn-paper{width:100%}
  .reward-grid{grid-template-columns:1fr;gap:9px}.reward-card{min-height:0;padding:18px}.reward-card h3{font-size:19px}.reward-status strong{font-size:21px}
  .edo-card{padding:23px 7px}.edo-lead{font-size:14px}.edo-card blockquote{font-size:clamp(20px,6vw,25px)}.line-btn{width:100%;font-size:14px;text-align:center}.site-footer{padding-bottom:86px}
}
@media(max-width:430px){.wrap,.wrap-wide{width:calc(100% - 20px)}.hero-logo-frame{width:100%}.hero-meta{font-size:clamp(17px,5vw,21px)}.schedule-grid{gap:16px 3px}.schedule-avatar{width:clamp(75px,25vw,98px)}.schedule-name{font-size:8.4px}.cast-grid{gap:18px 7px}.cast-card h3{font-size:9.5px}}
@media(max-width:375px){.wrap,.wrap-wide{width:calc(100% - 16px)}.brand{width:116px}.hero h1{font-size:25px}.hero-meta{font-size:17px}.hero-start{font-size:22px}.schedule-avatar{width:74px}.schedule-name{font-size:8px}.cast-card h3{font-size:9px}.countdown b{font-size:20px}}

/* =========================
   Revision 6 — mobile polish
   ========================= */

/* Prevent intrinsic image sizes from forcing grid overflow. */
.hero-faces{grid-template-columns:repeat(9,minmax(0,1fr))}
.hero-face{min-width:0;overflow:hidden}
.hero-face img{max-width:100%;min-width:0}

/* Give the event scenery more presence without turning it into a poster image. */
.hero:after{opacity:.78}
.hero-castle{bottom:54px;width:min(860px,74vw);opacity:.42;filter:drop-shadow(0 0 26px rgba(255,224,150,.20)) drop-shadow(0 14px 30px rgba(0,0,0,.65))}
.hero-fireworks .burst{opacity:.42;filter:drop-shadow(0 0 9px rgba(238,202,96,.24))}
.burst-a{left:5%;top:8%;transform:scale(1.02)}
.burst-b{right:6%;top:10%;transform:scale(.82);opacity:.30!important}
.burst-c{right:22%;top:0;transform:scale(.53);opacity:.22!important}
.hero-lantern-row{opacity:.62}
.hero-lantern-row img{filter:drop-shadow(0 0 18px rgba(255,177,68,.38))}
.hero-wave-floor{opacity:.62}

/* Stronger festival continuity for key sections. */
.festival-section{position:relative;overflow:hidden}
.festival-section:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.10;background:
  radial-gradient(circle at 12% 16%,rgba(221,178,78,.14),transparent 8rem),
  radial-gradient(circle at 88% 26%,rgba(120,8,14,.22),transparent 11rem),
  linear-gradient(180deg,transparent,rgba(120,8,14,.05),transparent)}
.section-schedule .scene-castle{opacity:.095;filter:drop-shadow(0 0 20px rgba(240,211,139,.14))}
.section-schedule .scene-lantern{opacity:.42;filter:drop-shadow(0 0 12px rgba(255,176,58,.26))}
.site-footer:after{content:"";position:absolute;left:50%;bottom:18px;transform:translateX(-50%);width:min(620px,78vw);height:220px;background:url('../images/decor/himeji-silhouette.svg') center bottom/contain no-repeat;opacity:.08;pointer-events:none}
.footer-fireworks{opacity:.18}

/* Improve scroll landing / space above browser chrome on small screens. */
section[id]{scroll-margin-top:72px}
.schedule-board{margin-bottom:18px}
.passport-shell{margin-bottom:14px}

@media(max-width:720px){
  /* Keep atmospheric scenery on mobile instead of stripping it away. */
  .hero{padding:20px 0 46px;background:
    radial-gradient(circle at 50% 24%,rgba(122,7,13,.20),transparent 17rem),
    linear-gradient(180deg,rgba(4,2,2,.08),rgba(4,2,2,.40) 78%,#050302)}
  .hero:after{height:58%;bottom:0;background-size:58% auto,58% auto;opacity:.60;mask-image:linear-gradient(transparent 2%,#000 35%,#000 100%)}
  .hero-brush-ring{top:31%;width:118vw;border-width:13px;opacity:.82;box-shadow:0 0 70px rgba(144,8,15,.21),inset 0 0 36px rgba(150,9,17,.16)}
  .hero-castle{width:128vw;max-width:none;bottom:58px;opacity:.27;filter:drop-shadow(0 0 20px rgba(255,224,150,.22)) drop-shadow(0 16px 30px rgba(0,0,0,.72))}
  .hero-lantern-row{display:flex;top:61%;gap:8px;opacity:.48}
  .hero-lantern-row img{width:36px}
  .hero-lantern-row-left{left:-7px}.hero-lantern-row-right{right:-7px}
  .hero-fireworks .burst{width:132px;opacity:.34}
  .burst-a{left:-34px;top:7%;transform:scale(.72)}
  .burst-b{right:-34px;top:15%;transform:scale(.58);opacity:.26!important}
  .burst-c{display:block;right:14%;top:1%;transform:scale(.38);opacity:.18!important}

  /* 18 performers: guaranteed 6 x 3, no intrinsic-width overflow. */
  .hero-faces-wrap{width:100%;max-width:100%;overflow:hidden;padding:10px 4px 12px}
  .hero-faces{width:100%;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px}
  .hero-face{width:100%;min-width:0;padding:2px}
  .hero-face img{display:block;width:100%;max-width:100%;height:auto;aspect-ratio:1;object-fit:cover}

  /* More visible night-festival framing between sections. */
  .festival-overview:before,.festival-overview:after{display:block;width:42%;opacity:.23;background-size:auto 100%;background-repeat:no-repeat}
  .festival-overview{background:
    radial-gradient(circle at 50% 8%,rgba(133,9,16,.20),transparent 20rem),
    linear-gradient(180deg,#070403,#100705 60%,#050302)}
  .section-schedule .scene-castle{width:126vw;top:145px;opacity:.07}
  .section-schedule .scene-lantern{display:block;opacity:.30}

  /* Give the bottom row breathing room above Safari's floating toolbar. */
  .schedule-board{padding-bottom:34px;margin-bottom:26px}
  .schedule-grid{padding-bottom:6px}
  .section-schedule{padding-bottom:78px}
  .section-passport{padding-bottom:82px}
  .section-reward{padding-bottom:82px}
  .section-edo{padding-bottom:80px}
  .site-footer{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
}

@media(max-width:430px){
  .hero-faces{gap:4px}
  .hero-face{padding:1.75px}
  .hero-castle{bottom:52px;opacity:.25}
  .hero-lantern-row{top:63%}
}

@media(max-width:375px){
  .hero-faces{gap:3px}
  .hero-face{padding:1.5px}
  .hero-lantern-row img{width:32px}
}


/* =========================
   Revision 7 — final visual polish
   ========================= */

/* Hero: make Himeji/white-egret castle, fireworks and lantern-lit streets read as one night-festival scene. */
.hero:before{
  background:
    radial-gradient(circle at 18% 13%,rgba(231,195,92,.055),transparent 12rem),
    radial-gradient(circle at 82% 10%,rgba(231,195,92,.045),transparent 13rem),
    radial-gradient(circle at 50% 43%,rgba(145,7,14,.23),transparent 31rem),
    linear-gradient(180deg,rgba(5,3,2,.01),rgba(5,3,2,.24) 54%,#050302 100%)
}
.hero:after{
  height:66%;
  background:
    linear-gradient(90deg,rgba(5,3,2,.97),transparent 21%,transparent 79%,rgba(5,3,2,.97)),
    linear-gradient(180deg,transparent 0 8%,rgba(95,29,11,.06) 45%,rgba(5,3,2,.34) 100%),
    url('../images/decor/street-left.jpg') left bottom/39% 100% no-repeat,
    url('../images/decor/street-right.jpg') right bottom/39% 100% no-repeat;
  opacity:.82;
  filter:saturate(1.18) contrast(1.05);
}
.hero-castle{
  bottom:68px;
  width:min(900px,77vw);
  opacity:.50;
  filter:drop-shadow(0 0 18px rgba(255,232,168,.24)) drop-shadow(0 0 50px rgba(187,120,31,.11)) drop-shadow(0 18px 32px rgba(0,0,0,.78));
}
.hero-castle:after{content:"";position:absolute;left:14%;right:14%;bottom:-6%;height:32%;background:radial-gradient(ellipse at center,rgba(237,190,77,.17),transparent 69%);filter:blur(18px);z-index:-1}
.hero-fireworks .burst{opacity:.53;filter:drop-shadow(0 0 13px rgba(244,211,110,.32))}
.burst-a{left:3%;top:6%;transform:scale(1.08)}
.burst-b{right:3%;top:8%;transform:scale(.90);opacity:.42!important}
.burst-c{right:25%;top:-1%;transform:scale(.58);opacity:.30!important}
.hero-lantern-row{opacity:.76}
.hero-lantern-row img{filter:drop-shadow(0 0 10px rgba(255,190,81,.48)) drop-shadow(0 0 26px rgba(255,129,32,.22))}
.hero-subcopy{color:#f0e5cf;text-shadow:0 2px 16px rgba(0,0,0,.78)}
.hero-wave-floor{opacity:.78;filter:saturate(1.16)}

/* Three nights: elevate cards from generic panels to ornate festival bills. */
.festival-overview{
  background:
    radial-gradient(circle at 50% -8%,rgba(157,11,18,.24),transparent 29rem),
    radial-gradient(circle at 20% 100%,rgba(220,170,55,.06),transparent 14rem),
    radial-gradient(circle at 80% 100%,rgba(220,170,55,.06),transparent 14rem),
    linear-gradient(180deg,#090403,#120706 58%,#050302)
}
.festival-overview:before,.festival-overview:after{opacity:.40;filter:saturate(1.15) contrast(1.05)}
.night-card{
  overflow:hidden;
  min-height:204px;
  padding:18px 18px 15px;
  background:
    linear-gradient(180deg,rgba(115,9,15,.14),transparent 46%),
    radial-gradient(circle at 90% 29%,transparent 0 45px,rgba(151,17,23,.32) 46px 56px,transparent 57px),
    linear-gradient(135deg,rgba(79,7,11,.94),rgba(6,3,2,.96) 68%);
  box-shadow:0 18px 42px rgba(0,0,0,.42),inset 0 0 0 1px rgba(255,226,145,.06),inset 0 -34px 44px rgba(0,0,0,.20)
}
.night-card:before{content:"";position:absolute;left:0;right:0;bottom:0;height:64px;background:url('../images/decor/waves.jpg') center bottom/cover no-repeat;opacity:.20;mask-image:linear-gradient(transparent,#000 62%)}
.night-card:after{right:12px;bottom:15px;width:62px;height:78px;opacity:.26;filter:drop-shadow(0 0 16px rgba(255,169,55,.28))}
.night-card strong{font-size:25px;text-shadow:0 2px 14px rgba(0,0,0,.8)}
.night-card span{color:#e0bd65}
.night-cast{position:relative;z-index:2;display:flex;align-items:center;margin-top:13px;padding:8px 5px 7px;border-top:1px solid rgba(223,186,84,.20);border-bottom:1px solid rgba(223,186,84,.13)}
.night-mini{display:block;width:35px;height:35px;margin-left:-4px;padding:1.5px;border-radius:50%;background:linear-gradient(135deg,#fff0a3,#7b4a05 34%,#f0cd6d 59%,#563103);box-shadow:0 3px 9px rgba(0,0,0,.52)}
.night-mini:first-child{margin-left:0}
.night-mini img{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;border:1px solid #080402}
.night-card small{margin-top:7px}

/* Stronger festival scene continuity below the hero. */
.section-schedule .scene-castle{opacity:.13;filter:drop-shadow(0 0 18px rgba(242,213,142,.18))}
.section-schedule .scene-lantern{opacity:.48;filter:drop-shadow(0 0 14px rgba(255,174,61,.34))}
.site-footer:after{opacity:.15;filter:drop-shadow(0 0 16px rgba(240,211,137,.12))}
.footer-fireworks{opacity:.28;filter:drop-shadow(0 0 12px rgba(238,200,95,.18))}

@media(max-width:720px){
  .hero:after{height:64%;background-size:auto,auto,56% 100%,56% 100%;opacity:.76}
  .hero-castle{width:112vw;bottom:64px;opacity:.36;filter:drop-shadow(0 0 16px rgba(255,232,168,.24)) drop-shadow(0 14px 28px rgba(0,0,0,.78))}
  .hero-fireworks .burst{width:138px;opacity:.43}
  .burst-a{left:-25px;top:5%;transform:scale(.77)}
  .burst-b{right:-25px;top:10%;transform:scale(.62);opacity:.36!important}
  .burst-c{right:18%;top:-2%;transform:scale(.42);opacity:.22!important}
  .hero-lantern-row{top:60%;opacity:.60}
  .hero-lantern-row img{width:38px}
  .festival-overview:before,.festival-overview:after{width:46%;opacity:.31}
  .night-card{min-height:170px;padding:15px 15px 14px}
  .night-cast{margin-top:10px;padding:7px 2px 6px}
  .night-mini{width:34px;height:34px}
}

@media(max-width:430px){
  .hero:after{background-size:auto,auto,62% 100%,62% 100%}
  .hero-castle{width:120vw;bottom:60px;opacity:.34}
  .hero-lantern-row{top:62%}
  .night-card{min-height:164px}
  .night-mini{width:32px;height:32px}
}

@media(max-width:375px){
  .hero-castle{width:126vw;opacity:.31}
  .night-mini{width:30px;height:30px}
}


/* =========================
   Revision 8 — mobile bugfix / polish
   ========================= */

/* Three-night cards: six portraits must always stay compact, never expand into poster-sized images. */
.night-cast{
  display:grid !important;
  grid-template-columns:repeat(6,34px) !important;
  justify-content:start;
  align-items:center;
  gap:4px;
  width:100%;
  min-width:0;
  overflow:visible;
}
.night-mini{
  display:block !important;
  width:34px !important;
  height:34px !important;
  min-width:0 !important;
  max-width:34px !important;
  margin:0 !important;
  padding:1.5px !important;
  border-radius:50% !important;
  overflow:hidden !important;
}
.night-mini img{
  display:block !important;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  aspect-ratio:1/1;
  object-fit:cover !important;
  border-radius:50% !important;
}

/* Cast list: do not show unfinished URL placeholders to visitors. */
.cast-card{padding-bottom:2px}

@media(max-width:720px){
  .night-card{min-height:156px !important;padding:14px 15px 12px !important}
  .night-cast{grid-template-columns:repeat(6,32px) !important;gap:3px;margin-top:9px !important;padding:7px 0 6px !important}
  .night-mini{width:32px !important;height:32px !important;max-width:32px !important}
  .night-card small{margin-top:6px !important}
}
@media(max-width:430px){
  .night-card{min-height:151px !important}
  .night-cast{grid-template-columns:repeat(6,30px) !important;gap:3px}
  .night-mini{width:30px !important;height:30px !important;max-width:30px !important}
}
@media(max-width:375px){
  .night-cast{grid-template-columns:repeat(6,28px) !important;gap:2px}
  .night-mini{width:28px !important;height:28px !important;max-width:28px !important}
}


/* =========================
   Revision 12 — achievement proof codes
   ========================= */
.reward-proof-actions{display:grid;gap:9px;max-width:760px;margin:14px auto 0}.reward-proof-actions .btn-gold{margin:0}.reward-proof-btn.is-premium{background:linear-gradient(180deg,#fff0ad,#d59b24 56%,#835009);box-shadow:0 0 24px rgba(235,194,85,.12),inset 0 1px rgba(255,255,255,.45)}.reward-proof-note{max-width:760px;margin:10px auto 0;text-align:center;font-size:10px;line-height:1.75;color:#a7936f}.proof-card{max-width:620px}.proof-seal{width:70px;height:70px;margin:0 auto 8px;display:grid;place-items:center;border:4px double #8e1717;border-radius:50%;font:800 34px/1 var(--serif);color:#8e1717;background:#efd9ad;transform:rotate(-7deg);box-shadow:0 0 0 3px rgba(142,23,23,.13)}.proof-code{margin:14px auto 10px;padding:14px 10px;border:1px dashed rgba(118,35,25,.55);background:#f7e7c5;color:#421b10;font:800 clamp(13px,3.5vw,17px)/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.055em;overflow-wrap:anywhere;user-select:all}.proof-copy{margin:0 auto 8px}.proof-form{margin:0 auto 8px}.proof-help{margin:4px auto 0!important;font-size:10px!important;color:#756246!important}.verify-page{min-height:100vh;padding:34px 0;background:radial-gradient(circle at 50% 15%,rgba(126,12,18,.22),transparent 25rem),#050302}.verify-shell{width:min(620px,calc(100% - 28px));margin:auto;padding:24px;border:1px solid rgba(220,182,84,.42);background:linear-gradient(160deg,rgba(31,13,8,.96),rgba(7,4,3,.98));box-shadow:0 18px 70px rgba(0,0,0,.45)}.verify-shell h1{margin:0 0 6px;font:700 clamp(26px,7vw,38px)/1.3 var(--serif);color:#efd077}.verify-shell p{font-size:12px;color:#b8a47c}.verify-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:18px}.verify-row input{min-width:0;padding:12px;border:1px solid rgba(220,182,84,.45);background:#f4e4bf;color:#261208;font:700 13px ui-monospace,SFMono-Regular,Menlo,monospace}.verify-row button{min-height:44px;padding:0 18px}.verify-result{margin-top:14px;padding:14px;border:1px solid rgba(220,182,84,.25);font-size:13px}.verify-result.is-valid{background:rgba(44,92,42,.20);border-color:rgba(114,187,101,.45)}.verify-result.is-invalid{background:rgba(133,18,24,.20);border-color:rgba(207,73,79,.45)}
@media(max-width:520px){.verify-row{grid-template-columns:1fr}.reward-proof-note{font-size:9.5px}.proof-code{letter-spacing:.02em}}

/* =========================
   Revision 14 — clean avatar crops / single ring
   ========================= */
/* Source portraits are now clean crops taken from inside the poster rings.
   The site draws the decorative ring once; portraits themselves carry no ring/badge. */
.schedule-avatar,
.cast-ring,
.hero-face,
.night-mini{
  box-sizing:border-box;
}
.cast-ring,
.hero-face,
.night-mini{
  overflow:hidden;
}
.schedule-avatar img,
.cast-ring img,
.hero-face img,
.night-mini img{
  display:block !important;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  box-sizing:border-box !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
  border-radius:50% !important;
  object-fit:cover !important;
  object-position:50% 50% !important;
  transform:none !important;
}

/* =========================
   Revision 15 — Day1 Reki / a-maru framing
   ========================= */
/* The source files were re-cropped from the Day1 master poster so the desired
   framing is baked into the assets. Avoid runtime scaling on Reki, which would
   expose an artificial inner gap around the circular portrait. */
img[src$="d1-4.jpg"]{
  object-position:50% 50% !important;
}
/* a-maru is a logo rather than a portrait; preserve the full mark on black. */
img[src$="d1-6.jpg"]{
  object-fit:contain !important;
  object-position:50% 50% !important;
  background:#000 !important;
}

/* =========================
   Revision 16 — design board implementation
   江戸 × 高級感 × 夜祭 / mobile-first unified UI
   ========================= */
:root{
  --r16-black:#0b0b0b;
  --r16-red:#8e0e14;
  --r16-gold:#d4af37;
  --r16-gold2:#f2d478;
  --r16-paper:#f5e9db;
  --r16-pink:#f7b7c1;
  --r16-card:#100b08;
  --r16-line:rgba(212,175,55,.42);
}
html{scroll-behavior:smooth;background:#050403}
body{
  color:#eadfc7;
  background:
    radial-gradient(circle at 50% 4%,rgba(142,14,20,.17),transparent 36rem),
    repeating-linear-gradient(135deg,rgba(212,175,55,.012) 0 1px,transparent 1px 11px),
    #070504;
}
body:before{
  content:"";position:fixed;inset:0;z-index:-12;pointer-events:none;opacity:.17;
  background-image:
    radial-gradient(circle at 20% 8%,rgba(247,183,193,.22) 0 1px,transparent 2px),
    radial-gradient(circle at 80% 18%,rgba(212,175,55,.20) 0 1px,transparent 2px);
  background-size:44px 44px,61px 61px;
}
.wrap{width:min(920px,calc(100% - 28px));margin-inline:auto}
.wrap-wide{width:min(880px,calc(100% - 28px));margin-inline:auto}

/* header */
.site-header{
  height:62px;padding:0 max(16px,calc((100vw - 980px)/2));
  background:linear-gradient(180deg,rgba(7,5,4,.98),rgba(7,5,4,.89));
  border-bottom:1px solid rgba(212,175,55,.24);box-shadow:0 12px 34px rgba(0,0,0,.23)
}
.brand{width:118px;height:44px}.brand img{filter:drop-shadow(0 3px 8px rgba(0,0,0,.7))}
.nav-menu{gap:15px}.nav-menu a{color:#d9c184;font-family:var(--serif);font-size:11px;letter-spacing:.08em}
.nav-menu a:hover{color:#fff0b2}

/* hero: central premium mobile UI inspired by concept board */
.hero{
  min-height:auto;padding:34px 0 54px;
  background:
    linear-gradient(180deg,rgba(3,2,2,.18),rgba(3,2,2,.62)),
    radial-gradient(circle at 50% 27%,rgba(142,14,20,.24),transparent 29rem),
    #080503;
  border-bottom:1px solid rgba(212,175,55,.2)
}
.hero:before{
  background:
    radial-gradient(circle at 50% 36%,transparent 0 31%,rgba(126,11,18,.60) 31.5% 34.5%,transparent 35%),
    radial-gradient(circle at 50% 10%,rgba(218,164,55,.10),transparent 23rem),
    linear-gradient(180deg,rgba(4,3,2,.16),#070403 84%);
  opacity:1
}
.hero:after{
  content:"";position:absolute;inset:0;z-index:-6;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(4,3,2,.0),rgba(4,3,2,.74) 21%,rgba(4,3,2,.14) 50%,rgba(4,3,2,.74) 79%,rgba(4,3,2,0)),
    url('../images/decor/street-left.jpg') left bottom/32% auto no-repeat,
    url('../images/decor/street-right.jpg') right bottom/32% auto no-repeat;
  opacity:.32
}
.hero-inner{
  width:min(610px,100%);padding:26px 22px 20px;
  border:1px solid rgba(212,175,55,.28);
  background:linear-gradient(180deg,rgba(10,7,5,.68),rgba(6,4,3,.85));
  box-shadow:0 26px 80px rgba(0,0,0,.56),inset 0 0 0 1px rgba(255,229,159,.025);
  position:relative
}
.hero-inner:before,.hero-inner:after{content:"";position:absolute;width:62px;height:62px;pointer-events:none;opacity:.65}
.hero-inner:before{left:8px;top:8px;border-left:1px solid var(--r16-gold);border-top:1px solid var(--r16-gold)}
.hero-inner:after{right:8px;bottom:8px;border-right:1px solid var(--r16-gold);border-bottom:1px solid var(--r16-gold)}
.hero-presented{margin:0 0 2px;color:#caa454;font-size:11px;letter-spacing:.24em}
.hero-logo-frame{width:min(430px,94%);margin:0 auto -4px}
.hero-subcopy{margin:2px auto 10px;color:#cabd9f;font-size:11px;letter-spacing:.11em}
.hero-meta{gap:10px;color:#f3d576;font-size:clamp(20px,4.8vw,28px);letter-spacing:.11em}
.hero-event-pill{
  display:inline-flex;margin:12px auto 4px;padding:5px 17px;border:1px solid rgba(212,175,55,.55);
  color:#e7c96f;background:rgba(16,10,6,.66);font:700 11px/1.2 Georgia,serif;letter-spacing:.13em
}
.hero h1{margin:8px 0 5px;font-size:clamp(28px,6vw,42px);line-height:1.42;letter-spacing:.075em}
.hero-start{margin:2px 0 14px;font-size:17px;letter-spacing:.20em;color:#d8b85e}
.hero-actions{margin:0 auto 12px;display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:500px}
.btn-festival,.btn-ghost{min-width:0;width:100%;min-height:44px;border-radius:0;clip-path:none;font-size:12px;letter-spacing:.06em}
.btn-festival{background:linear-gradient(180deg,#7d1217,#4f090c);color:#ffe7a4;border:1px solid #d1a83d;box-shadow:inset 0 0 0 1px rgba(255,218,118,.08),0 7px 18px rgba(0,0,0,.36)}
.btn-ghost{background:#090604;color:#dabb64;border:1px solid rgba(212,175,55,.44)}
.event-status{max-width:500px;margin:8px auto 10px;padding:9px 11px;background:rgba(8,5,3,.82);border:1px solid rgba(212,175,55,.24)}
.event-status-label{color:#a98e56}.countdown b{color:#f0d273}
.hero-castle{width:min(720px,92vw);bottom:10px;opacity:.10}.hero-brush-ring{display:none}.hero-wave-floor{opacity:.28;height:66px}
.hero-lantern-row{opacity:.22}.hero-fireworks{opacity:.45}

/* live stack embedded in hero */
.hero-live-shell{max-width:500px;margin:10px auto 0}
.hero-live-shell .onair-stack{display:grid;gap:8px}
.hero-live-shell .onair-card,.hero-live-shell .onair-message{
  position:relative;margin:0;padding:12px 14px;border:1px solid rgba(212,175,55,.35);
  background:linear-gradient(105deg,rgba(74,8,12,.84),rgba(7,5,4,.93) 58%);
  box-shadow:inset 0 0 0 1px rgba(255,229,153,.025)
}
.hero-live-shell .onair-card.is-live{border-color:#b9902f;box-shadow:0 0 22px rgba(142,14,20,.20)}
.hero-live-shell .onair-kicker{color:#e7bf5c;font:700 9px Georgia,serif;letter-spacing:.16em}
.hero-live-shell .onair-person{display:grid;grid-template-columns:60px 1fr;align-items:center;gap:12px;margin:6px 0 8px;text-align:left}
.hero-live-shell .onair-person img{width:60px;height:60px;border-radius:50%;object-fit:cover;border:2px solid #d2aa42;box-shadow:0 4px 15px rgba(0,0,0,.42)}
.hero-live-shell .onair-copy h3{margin:2px 0;font-size:17px;color:#f2d57c}
.hero-live-shell .onair-time{margin:0;color:#a98e5c;font-size:10px}
.hero-live-shell .onair-action{min-height:36px;width:100%;border:1px solid rgba(212,175,55,.42);background:#090604;color:#e6c66e;font:700 11px var(--serif)}
.hero-live-shell .onair-message span{display:block;color:#c99e43;font:700 9px Georgia,serif;letter-spacing:.15em}.hero-live-shell .onair-message strong{display:block;margin:4px 0;color:#edcf77;font:700 17px var(--serif)}.hero-live-shell .onair-message p{margin:0;color:#a99572;font-size:11px}

/* mini timetable */
.hero-mini-tt{max-width:500px;margin:10px auto 0;border:1px solid rgba(212,175,55,.35);background:#0b0805;text-align:left}
.hero-mini-head{display:flex;align-items:end;justify-content:space-between;padding:10px 12px 8px;border-bottom:1px solid rgba(212,175,55,.25);background:linear-gradient(90deg,#f0dfb9,#f6e9cd);color:#2b1709}
.hero-mini-head span{font:700 15px Georgia,serif;letter-spacing:.06em}.hero-mini-head strong{font:700 11px var(--serif)}
.hero-mini-tabs{display:grid;grid-template-columns:repeat(3,1fr);background:#070503}
.hero-mini-tab{height:38px;border:0;border-right:1px solid rgba(212,175,55,.25);border-bottom:1px solid rgba(212,175,55,.25);background:#090604;color:#cdb36e;font:700 13px var(--serif)}
.hero-mini-tab:last-child{border-right:0}.hero-mini-tab.is-active{background:#7c1116;color:#ffe6a0}
.hero-mini-panel{background:linear-gradient(180deg,#f5e9d5,#ead6af);color:#2b190b;padding:5px 10px}
.hero-mini-row{display:grid;grid-template-columns:58px 34px minmax(0,1fr) 28px;gap:8px;align-items:center;min-height:48px;border-bottom:1px solid rgba(107,75,35,.22)}
.hero-mini-row:last-child{border-bottom:0}.hero-mini-row time{font:700 12px Georgia,serif}.hero-mini-row img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid rgba(87,58,24,.28)}.hero-mini-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 11px var(--serif)}.hero-mini-row a,.hero-mini-arrow{display:grid;place-items:center;width:26px;height:26px;border:1px solid #826729;border-radius:50%;color:#6e531d;text-decoration:none;font-size:20px}
.hero-mini-more{display:flex;justify-content:center;align-items:center;gap:8px;min-height:42px;background:#efe0bf;border-top:1px solid rgba(107,75,35,.26);color:#4b2d11;text-decoration:none;font:700 11px var(--serif)}.hero-mini-more span{font-size:18px}
.hero-faces-wrap{max-width:500px;margin:10px auto 0;padding:10px;border-top:1px solid rgba(212,175,55,.18);border-bottom:1px solid rgba(212,175,55,.13)}
.hero-faces-label{font:700 9px Georgia,serif;color:#b29250;letter-spacing:.18em}.hero-faces{margin-top:7px;grid-template-columns:repeat(9,1fr);gap:5px}.hero-face{padding:1px;background:linear-gradient(135deg,#f4d777,#8d6214)}

/* quick menu inspired by LINE rich menu */
.quick-menu{padding:18px 0 24px;background:#050403;border-bottom:1px solid rgba(212,175,55,.15)}
.quick-menu-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px}
.quick-menu a{min-height:94px;padding:10px 6px;display:grid;place-items:center;align-content:center;gap:7px;text-decoration:none;color:#d9be70;background:linear-gradient(155deg,rgba(20,13,8,.96),rgba(7,5,4,.98));border:1px solid rgba(212,175,55,.38);box-shadow:inset 0 0 0 1px rgba(255,223,135,.025)}
.quick-menu a:hover{border-color:#e1bd55;background:linear-gradient(155deg,rgba(79,10,13,.56),rgba(7,5,4,.98))}
.quick-menu img{width:38px;height:38px;filter:drop-shadow(0 0 8px rgba(212,175,55,.12))}.quick-menu span{font:700 11px/1.25 var(--serif);text-align:center}

/* overview becomes compact secondary summary */
.festival-overview{padding:22px 0 28px;background:#080504}.festival-divider b{font-size:15px;color:#d9bc67}.night-cards{gap:10px}.night-card{min-height:148px!important;border-color:rgba(212,175,55,.32);background:linear-gradient(145deg,rgba(53,7,10,.58),rgba(8,5,3,.96) 68%)}.night-card strong{font-size:21px}.night-card span,.night-card em,.night-card small{font-size:10px}.overview-stats{margin-top:12px;border-color:rgba(212,175,55,.22)}

/* section system */
.section{padding:66px 0;background:#070504}
.festival-section,.section-about,.section-passport,.section-reward,.section-edo{background:
  radial-gradient(circle at 50% 0,rgba(142,14,20,.11),transparent 27rem),
  linear-gradient(180deg,#090604,#050403)}
.section+.section{border-top:1px solid rgba(212,175,55,.11)}
.ornate-head{margin-bottom:26px}.section-icon-mark{width:52px;height:52px;margin:0 auto 8px;display:grid;place-items:center;border:1px solid rgba(212,175,55,.55);border-radius:50%;color:#d9b84f;background:radial-gradient(circle,#27170c,#080503 72%);font:700 20px var(--serif);box-shadow:0 0 0 4px rgba(212,175,55,.03)}
.section-en{color:#ab8e50;font-size:9px;letter-spacing:.22em}.section-head h2{font-size:clamp(25px,5vw,36px);color:#efd174}.section-head p{color:#a99776;font-size:11px}.head-ornament i{color:#d9b44e}

/* schedule */
.tt-tabs{max-width:720px;margin:0 auto 12px;gap:0;border:1px solid rgba(212,175,55,.34)}
.tt-tab{border:0;border-right:1px solid rgba(212,175,55,.24);border-radius:0;background:#090604;color:#c8aa63}.tt-tab:last-child{border-right:0}.tt-tab.is-active{background:#791015;color:#ffe8a3}.tt-tab b{font-size:17px}.tt-tab span{font-size:9px}
.schedule-board{max-width:820px;border:1px solid rgba(212,175,55,.32);box-shadow:0 20px 58px rgba(0,0,0,.44)}
.schedule-board-logo{height:112px}.schedule-board-date{font-size:28px}.schedule-grid{padding:22px}.schedule-card{padding:4px 4px 12px}.schedule-avatar{box-shadow:0 0 0 2px #d9b24a,0 0 0 4px #151008,0 0 0 5px #8f6a20}.schedule-no{background:linear-gradient(#f0d36a,#a87614);color:#2b1707}.schedule-time{color:#e3c05f}.schedule-name{font-size:11px;color:#efe0bb}
.schedule-accessible{max-width:720px;margin:12px auto 0;padding:8px 14px;display:grid!important;border:1px solid rgba(212,175,55,.25);background:#0b0805}.schedule-row{display:grid;grid-template-columns:28px 66px 40px minmax(0,1fr);gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid rgba(212,175,55,.13)}.schedule-row:last-child{border-bottom:0}.schedule-row time{color:#d6b45f;font:700 12px Georgia,serif}.schedule-row img{width:36px;height:36px;border-radius:50%;object-fit:cover}.schedule-row strong{font:700 12px var(--serif);color:#e9d9b3}.schedule-no-mini{width:24px;height:24px;display:grid;place-items:center;border:1px solid #a77b22;border-radius:50%;font:700 10px Georgia,serif;color:#e3c46b}

/* cast: reference-like gold cards */
.cast-grid{max-width:850px;margin:auto;grid-template-columns:repeat(3,1fr);gap:12px}
.cast-card{padding:14px 10px 12px;border:1px solid rgba(212,175,55,.32);background:linear-gradient(150deg,rgba(30,16,9,.93),rgba(7,5,4,.98));box-shadow:0 12px 28px rgba(0,0,0,.24)}
.cast-ring{width:min(150px,86%);margin:0 auto 10px;padding:3px;background:linear-gradient(135deg,#f0d16a,#8b5c0d 35%,#efc75f 64%,#5f3a05)}
.cast-meta{justify-content:center;gap:8px;color:#aa8b4c}.cast-card h3{min-height:2.6em;margin:6px 0 8px;font-size:13px;color:#f0d27b}.cast-card>a{display:inline-flex;min-height:34px;padding:7px 12px;border:1px solid rgba(212,175,55,.32);color:#d8bc6f;text-decoration:none;font-size:10px;background:#090604}

/* About */
.about-panel{max-width:760px;padding:30px;border:1px solid rgba(212,175,55,.29);background:linear-gradient(160deg,rgba(25,13,8,.89),rgba(7,5,4,.95));box-shadow:0 18px 48px rgba(0,0,0,.25)}.about-panel blockquote{color:#efd175}

/* passport: closer to design board */
.passport-stage{max-width:760px}.passport-shell{padding:8px;border:1px solid rgba(212,175,55,.46);background:linear-gradient(150deg,#181008,#090604);box-shadow:0 25px 65px rgba(0,0,0,.48)}
.passport-titlebar{background:linear-gradient(90deg,#6c0d11,#130906 70%);border-color:rgba(212,175,55,.35)}
.passport-day{margin:8px 5px;padding:12px 10px;background:linear-gradient(180deg,#f5e9cc,#ead4a1);border-color:#a77b32;box-shadow:inset 0 0 16px rgba(83,54,20,.08)}
.passport-day header{margin-bottom:8px}.passport-day header b{font-size:16px}.passport-day header>strong{font-size:18px}
.stamp-grid{grid-template-columns:repeat(6,1fr);gap:7px}.stamp-slot{min-width:0}.stamp-mark{width:64%;font-size:10px}.stamp-slot.is-stamped .stamp-mark{background:rgba(154,20,25,.04);box-shadow:inset 0 0 0 2px rgba(154,20,25,.12),0 0 10px rgba(154,20,25,.08)}
.kw-form{padding:14px 8px 4px}.kw-form label{color:#e2c46d}.kw-input{background:#080503;border-color:rgba(212,175,55,.37)}.btn-red{background:linear-gradient(180deg,#92131a,#5b090d);border-color:#cda53c}.btn-paper{background:#090604;color:#d6b95f}

/* rewards */
.reward-status{border:1px solid rgba(212,175,55,.38);background:linear-gradient(90deg,rgba(73,8,12,.78),rgba(8,5,3,.95),rgba(73,8,12,.78))}.reward-status strong{color:#f0d175}
.reward-grid{max-width:760px;gap:12px}.reward-card{min-height:250px;padding:24px 22px 18px;display:flex;flex-direction:column;justify-content:flex-end;text-align:center;border:1px solid rgba(212,175,55,.45);background:
  radial-gradient(circle at 50% 33%,rgba(142,14,20,.30),transparent 32%),
  linear-gradient(160deg,#130b07,#060403 72%);box-shadow:inset 0 0 0 3px rgba(212,175,55,.035),0 18px 44px rgba(0,0,0,.30)}
.reward-card:before{display:grid;place-items:center;width:94px;height:94px;margin:0 auto 18px;border:1px solid rgba(212,175,55,.52);border-radius:50%;color:#dfbd55;background:radial-gradient(circle,#2b190b,#090604 70%);font:700 38px var(--serif);box-shadow:0 0 24px rgba(212,175,55,.07)}
.reward-card:first-child:before{content:"六"}.reward-card:nth-child(2):before{content:"十八";font-size:29px}
.reward-card:after{content:"";inset:8px;right:8px;bottom:8px;border:1px solid rgba(212,175,55,.15);transform:none;font-size:0;pointer-events:none}.reward-card span{color:#c59d46}.reward-card h3{font-size:20px;color:#efd175}.reward-card p{color:#a89674}.btn-gold{border-radius:0;background:linear-gradient(180deg,#7c1116,#4f090c);color:#ffe7a4;border:1px solid #caa23a}.reward-proof-btn.is-premium{background:linear-gradient(180deg,#c49a34,#765008);color:#170d03}.reward-proof-note{color:#8f8066}

/* Edo / LINE */
.edo-card{max-width:760px;padding:30px;border:1px solid rgba(212,175,55,.26);background:linear-gradient(160deg,rgba(24,12,7,.72),rgba(6,4,3,.86))}.edo-card blockquote{color:#efd175}.line-btn{width:min(760px,100%);border-radius:0;background:#14883d;border:1px solid rgba(255,255,255,.12);box-shadow:0 10px 30px rgba(10,87,41,.17)}
.line-note{max-width:760px}

.site-footer{padding:42px 0 92px;background:#050403}.site-footer p{color:#d5b452}.site-footer small{color:#776a54}

/* modal polish */
.complete-card{border:1px solid rgba(212,175,55,.48)!important;box-shadow:0 30px 90px rgba(0,0,0,.58)!important}

@media(max-width:820px){
  .quick-menu-grid{grid-template-columns:repeat(3,1fr)}
  .cast-grid{grid-template-columns:repeat(3,1fr)}
  .hero-faces{grid-template-columns:repeat(9,1fr)}
}

@media(max-width:720px){
  html{scroll-padding-top:58px}.wrap,.wrap-wide{width:calc(100% - 20px)}
  .site-header{height:58px;padding:0 12px}.brand{width:112px}
  .nav-menu{top:58px;background:#070503;border-bottom-color:rgba(212,175,55,.32)}
  .hero{padding:14px 0 36px;background:#070403}.hero:after{opacity:.18;background-size:auto,49% auto,49% auto}.hero-castle{display:none}.hero-lantern-row{display:none}.hero-fireworks{opacity:.30}
  .hero-inner{width:100%;padding:22px 12px 14px;border-color:rgba(212,175,55,.30)}
  .hero-logo-frame{width:min(365px,92%)}.hero-subcopy{font-size:10px;letter-spacing:.08em}.hero-meta{font-size:21px}.hero-event-pill{font-size:10px;padding:5px 14px}.hero h1{font-size:30px;letter-spacing:.04em}.hero-start{font-size:15px}.hero-actions{grid-template-columns:1fr 1fr;gap:6px}.btn-festival,.btn-ghost{min-height:43px;padding:10px 6px;font-size:11px}
  .event-status{padding:8px}.countdown b{font-size:21px}.countdown small{font-size:7px}
  .hero-live-shell .onair-person{grid-template-columns:54px 1fr}.hero-live-shell .onair-person img{width:54px;height:54px}.hero-live-shell .onair-copy h3{font-size:15px}
  .hero-mini-head{padding:9px 10px}.hero-mini-row{grid-template-columns:50px 32px minmax(0,1fr) 26px;gap:6px;min-height:46px}.hero-mini-row img{width:32px;height:32px}.hero-mini-row strong{font-size:10.5px}.hero-mini-row time{font-size:11px}
  .hero-faces{grid-template-columns:repeat(9,1fr);gap:4px}.hero-face{min-width:0}
  .quick-menu{padding:12px 0 18px}.quick-menu-grid{grid-template-columns:repeat(3,1fr);gap:6px}.quick-menu a{min-height:82px;padding:8px 4px}.quick-menu img{width:32px;height:32px}.quick-menu span{font-size:10px}
  .festival-overview{display:none}
  .section{padding:52px 0}.ornate-head{margin-bottom:20px}.section-icon-mark{width:46px;height:46px;font-size:18px}.section-head h2{font-size:27px}.section-head p{font-size:10.5px}
  .tt-tabs{width:100%;margin-bottom:9px}.tt-tab{min-height:46px}.tt-tab b{font-size:15px}
  .schedule-board{display:none}.schedule-accessible{margin:0;padding:8px 10px;display:grid!important}.schedule-row{grid-template-columns:25px 53px 36px minmax(0,1fr);gap:6px}.schedule-row strong{font-size:11px}.schedule-row time{font-size:11px}
  .cast-grid{grid-template-columns:repeat(2,1fr);gap:8px}.cast-card{padding:10px 7px}.cast-ring{width:min(116px,88%)}.cast-card h3{font-size:10.5px;line-height:1.45}.cast-meta{font-size:8.5px}.cast-card>a{font-size:9px;min-height:31px}
  .about-panel{padding:22px 16px}
  .section-passport .wrap{width:calc(100% - 14px)}.passport-shell{padding:5px}.passport-titlebar{padding:10px 8px}.passport-titlebar strong{font-size:18px}.passport-day{margin:6px 2px;padding:9px 5px}.passport-day header b{font-size:13px}.passport-day header>strong{font-size:15px}.stamp-grid{grid-template-columns:repeat(6,1fr)!important;gap:4px}.stamp-slot{aspect-ratio:1}.stamp-no{left:3px;top:2px;font-size:7px}.stamp-mark{width:68%;font-size:8px}.stamp-slot small{bottom:2px;font-size:6.5px}.stamp-slot.is-stamped .stamp-mark{font-size:12px}.kw-row{grid-template-columns:1fr}.passport-actions{grid-template-columns:1fr}
  .reward-grid{grid-template-columns:1fr}.reward-card{min-height:215px;padding:20px 16px 16px}.reward-card:before{width:78px;height:78px;margin-bottom:13px;font-size:32px}.reward-card:nth-child(2):before{font-size:25px}.reward-card h3{font-size:18px}
  .edo-card{padding:22px 14px}.line-btn{font-size:13px}
}

@media(max-width:430px){
  .hero-inner{padding-inline:10px}.hero h1{font-size:28px}.hero-actions{grid-template-columns:1fr}.hero-actions .btn-festival,.hero-actions .btn-ghost{min-height:42px}
  .hero-mini-row{grid-template-columns:47px 30px minmax(0,1fr) 24px}.hero-mini-row img{width:30px;height:30px}.hero-mini-row strong{font-size:10px}.hero-faces{grid-template-columns:repeat(6,1fr)}
  .quick-menu a{min-height:78px}.quick-menu img{width:30px;height:30px}.quick-menu span{font-size:9.5px}
  .cast-ring{width:min(104px,88%)}
  .passport-day{padding:8px 4px}.stamp-grid{gap:3px}.stamp-mark{width:72%;font-size:7px}.stamp-slot small{font-size:6px}
}

@media(max-width:375px){
  .hero-meta{font-size:19px}.hero h1{font-size:25px}.hero-start{font-size:14px}.hero-mini-panel{padding-inline:7px}.hero-mini-row{grid-template-columns:43px 28px minmax(0,1fr) 22px;gap:5px}.hero-mini-row img{width:28px;height:28px}.hero-mini-row strong{font-size:9.5px}.hero-mini-row time{font-size:10px}.hero-mini-row a,.hero-mini-arrow{width:22px;height:22px;font-size:16px}
  .quick-menu-grid{gap:5px}.quick-menu a{min-height:74px}.quick-menu span{font-size:9px}
  .cast-ring{width:min(94px,88%)}.cast-card h3{font-size:9.7px}
  .stamp-grid{gap:2px}.stamp-mark{font-size:6.7px}.stamp-slot.is-stamped .stamp-mark{font-size:11px}
}


/* =========================
   Revision 17 — full-page AI festival background
   Background image + dark veil + unified translucent cards
   ========================= */
:root{
  --edo-black:#0b0b0b;
  --edo-red:#8e0e14;
  --edo-gold:#d4af37;
  --edo-ivory:#f5e9db;
  --edo-pink:#f7b7c1;
  --edo-text-soft:rgba(245,233,219,.82);
  --edo-card-bg:rgba(8,8,8,.74);
  --edo-card-border:rgba(212,175,55,.36);
  --edo-header-bg:rgba(0,0,0,.66);
  --edo-shadow:0 12px 34px rgba(0,0,0,.32);
  --edo-radius:18px;
}
html,body{background:#0b0b0b!important;color:var(--edo-ivory);overflow-x:hidden}
body{position:relative;isolation:isolate}

/* Dedicated visual layer. The generated artwork is decorative only. */
.site-bg{
  position:fixed;
  inset:0;
  z-index:-20;
  pointer-events:none;
  background-color:#0b0b0b;
  background-image:url('../images/bg/edofes-main-bg.png');
  background-repeat:no-repeat;
  background-size:cover;
  background-position:center top;
  transform:translateZ(0);
}
.site-bg::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(to bottom,
    rgba(0,0,0,.26) 0%,
    rgba(0,0,0,.34) 18%,
    rgba(0,0,0,.42) 48%,
    rgba(0,0,0,.52) 76%,
    rgba(0,0,0,.60) 100%);
}

/* Remove old competing scenery so the new background stays clean. */
.site-atmosphere,
.hero-castle,
.hero-lantern-row,
.about-scene,
.festival-scene,
.edo-castle,
.site-footer::after{display:none!important}
.hero-fireworks{opacity:.12!important}
.hero-wave-floor{opacity:.12!important}

/* Let the page background show through; content sits on independent cards. */
.hero,
.quick-menu,
.festival-overview,
.section,
.festival-section,
.section-about,
.section-passport,
.section-reward,
.section-edo,
.site-footer{
  background:transparent!important;
}
.hero::before,.hero::after{display:none!important}

/* Header remains legible over the artwork. */
.site-header{
  background:linear-gradient(180deg,rgba(0,0,0,.78),rgba(0,0,0,.64))!important;
  border-bottom:1px solid rgba(212,175,55,.28)!important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 10px 28px rgba(0,0,0,.22);
}
.nav-menu{background-color:rgba(6,4,3,.96)}

/* Hero becomes the first premium translucent card. */
.hero{padding-top:28px!important;border-bottom:0!important}
.hero-inner{
  background:linear-gradient(180deg,rgba(8,8,8,.76),rgba(8,5,4,.84))!important;
  border:1px solid rgba(212,175,55,.38)!important;
  border-radius:var(--edo-radius);
  box-shadow:0 20px 58px rgba(0,0,0,.38),inset 0 0 0 1px rgba(255,235,180,.025)!important;
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
.hero-subcopy,.hero-start{color:var(--edo-text-soft)!important}
.hero h1{color:var(--edo-ivory)!important;text-shadow:0 2px 16px rgba(0,0,0,.55)}

/* Main section shells: one consistent black glass + gold border language. */
.quick-menu>.wrap,
.festival-overview>.wrap,
.section>.wrap{
  position:relative;
  isolation:isolate;
  background:linear-gradient(180deg,rgba(8,8,8,.76),rgba(8,8,8,.70));
  border:1px solid var(--edo-card-border);
  border-radius:var(--edo-radius);
  box-shadow:var(--edo-shadow);
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
.quick-menu{padding:18px 0!important;border:0!important}
.quick-menu>.wrap{padding:12px}
.festival-overview{padding:16px 0 28px!important}
.festival-overview>.wrap{padding:22px}
.section{padding:26px 0!important}
.section>.wrap{padding:30px 24px}

/* Headlines stay warm and readable over the brighter cream center of the artwork. */
.section-head h2,.section-title,.ornate-head h2{color:var(--edo-gold)!important;text-shadow:0 2px 12px rgba(0,0,0,.50)}
.section-head p,.section-lead,.ornate-head p{color:var(--edo-text-soft)!important}
.section-en{color:rgba(245,233,219,.62)!important}
.head-ornament b{background:linear-gradient(90deg,transparent,rgba(212,175,55,.55),transparent)!important}

/* Existing utility cards get a little more opacity so text never fights the background. */
.night-card,
.cast-card,
.about-panel,
.reward-card,
.edo-card,
.hero-live-shell .onair-card,
.hero-live-shell .onair-message{
  background-color:rgba(8,8,8,.80)!important;
  border-color:rgba(212,175,55,.38)!important;
}
.cast-card,.reward-card,.edo-card,.about-panel{box-shadow:0 12px 32px rgba(0,0,0,.24)}

/* Timetable and passport deliberately stay parchment-like for contrast and usability. */
.hero-mini-tt,.passport-shell{box-shadow:0 12px 34px rgba(0,0,0,.28)}
.hero-mini-panel{background:linear-gradient(180deg,rgba(245,233,219,.98),rgba(234,214,175,.98))!important}
.passport-shell{background:rgba(8,6,4,.90)!important}
.passport-day{background:linear-gradient(180deg,rgba(245,233,204,.98),rgba(234,212,161,.98))!important}

/* Buttons: gold/red family, LINE remains intentionally green. */
.btn-festival,.btn-red,.btn-gold{box-shadow:0 8px 20px rgba(0,0,0,.24)}
.btn-ghost,.btn-paper{background:rgba(8,8,8,.82)!important}
.line-btn{
  background:#0d913e!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.14)!important;
  box-shadow:0 10px 28px rgba(5,70,28,.20)!important;
}

/* Fix the old bleed-through issue in the producer / LINE area. */
.section-edo>.wrap{
  background:linear-gradient(180deg,rgba(7,7,7,.88),rgba(12,6,5,.90))!important;
  overflow:hidden;
}
.edo-card{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:linear-gradient(180deg,rgba(8,8,8,.88),rgba(18,8,8,.88))!important;
}
.edo-card::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:radial-gradient(circle at 50% 45%,rgba(212,175,55,.08),transparent 62%);
  pointer-events:none;
}
.edo-lead,.edo-card>p:last-of-type,.line-note{color:var(--edo-text-soft)!important}
.edo-card blockquote{color:#efd175!important;text-shadow:0 2px 12px rgba(0,0,0,.4)}

/* Footer: no castle silhouette, no ghost text, only a clean dark closing panel. */
.site-footer{margin-top:24px!important;padding:34px 0 calc(42px + env(safe-area-inset-bottom))!important;border-top:0!important}
.site-footer>.wrap{
  padding:24px 16px;
  background:rgba(5,5,5,.78);
  border-top:1px solid rgba(212,175,55,.28);
  border-bottom:1px solid rgba(212,175,55,.16);
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
.footer-fireworks{opacity:.10!important}
.site-footer p{color:var(--edo-gold)!important}.site-footer small{color:rgba(245,233,219,.66)!important}

/* Avoid visual seams between sections. */
main{position:relative;z-index:1}
.quick-menu,.festival-overview,.section{border:0!important}

@media(min-width:768px){
  .section>.wrap{padding:36px 34px}
  .quick-menu>.wrap{padding:14px}
}

@media(max-width:720px){
  .site-bg{
    /* Keep the artwork centered; no background-attachment:fixed on iOS. */
    background-size:auto 100vh;
    background-position:center top;
  }
  .hero{padding:14px 0 22px!important}
  .hero-inner{border-radius:14px;padding:20px 12px 14px!important}
  .quick-menu{padding:10px 0!important}
  .quick-menu>.wrap{padding:8px;border-radius:14px}
  .section{padding:12px 0!important}
  .section>.wrap{padding:22px 12px;border-radius:14px}
  .festival-overview>.wrap{padding:16px 12px;border-radius:14px}
  .section-head{margin-bottom:18px!important}
}

@media(max-width:430px){
  .site-bg{background-size:auto 100svh}
  .section>.wrap{padding-inline:10px}
  .hero-inner{background:linear-gradient(180deg,rgba(8,8,8,.80),rgba(8,5,4,.88))!important}
}


/* =========================
   Revision 19 — larger tap targets
   ColorSing / LINE usability
   ========================= */

/* All primary external actions should meet a comfortable mobile touch target. */
.onair-action,
.cast-card>a,
.edo-links a,
.line-btn{
  box-sizing:border-box;
  -webkit-tap-highlight-color:rgba(212,175,55,.16);
  touch-action:manipulation;
}

/* NOW ON AIR / NEXT — make the ColorSing action unmistakable. */
.onair-action{
  width:100%;
  min-height:52px!important;
  padding:13px 18px!important;
  margin-top:8px;
  font:700 14px/1.25 var(--serif)!important;
  letter-spacing:.04em;
  border-color:rgba(224,190,91,.58)!important;
  background:linear-gradient(180deg,rgba(112,14,19,.96),rgba(60,7,10,.98))!important;
  color:#ffe5a0!important;
  box-shadow:0 8px 20px rgba(0,0,0,.28),inset 0 0 0 1px rgba(255,226,139,.06);
}
.onair-action:not(.is-disabled)::after{content:" ↗";font-size:12px;margin-left:3px}

/* 18-liver cards — full-width, 48px+ ColorSing button instead of a tiny text link. */
.cast-card>a{
  width:100%;
  min-height:48px!important;
  padding:11px 10px!important;
  margin-top:4px;
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  gap:5px;
  border:1px solid rgba(224,190,91,.52)!important;
  background:linear-gradient(180deg,rgba(30,18,10,.96),rgba(8,6,4,.98))!important;
  color:#f0cf72!important;
  font:700 12px/1.25 var(--serif)!important;
  letter-spacing:.03em;
  border-radius:6px;
  box-shadow:0 6px 14px rgba(0,0,0,.22);
}
.cast-card>a::after{content:" ↗";font-size:11px}
.cast-card>a:active,.onair-action:active,.line-btn:active,.edo-links a:active{transform:translateY(1px);filter:brightness(.96)}

/* Hero mini timetable — enlarge the tiny ColorSing arrow target without making the row noisy. */
.hero-mini-row a,
.hero-mini-arrow{
  width:40px!important;
  height:40px!important;
  min-width:40px!important;
  min-height:40px!important;
  display:grid!important;
  place-items:center;
  border-radius:50%;
  font-size:19px!important;
}
.hero-mini-row a{
  border:1px solid rgba(142,14,20,.32);
  background:rgba(142,14,20,.08);
  color:#8e0e14!important;
  text-decoration:none;
}

/* Producer external links (including host ColorSing) get proper tap targets too. */
.edo-links{flex-wrap:wrap}
.edo-links a{
  min-height:46px;
  min-width:110px;
  padding:11px 18px!important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:12px!important;
  border-radius:6px;
}

/* LINE CTA — large, obvious, thumb-friendly. */
.line-btn{
  width:min(760px,100%)!important;
  min-height:62px!important;
  padding:16px 22px!important;
  margin-top:22px!important;
  font:700 16px/1.4 var(--sans)!important;
  letter-spacing:.015em;
  border-radius:8px!important;
  box-shadow:0 12px 30px rgba(5,70,28,.26)!important;
}
.line-btn::before{content:"LINE  ";font-weight:800;font-size:13px;letter-spacing:.04em}

@media(max-width:720px){
  /* Keep two-column cast layout but make each action easy to hit. */
  .cast-card{padding:10px 7px 11px!important}
  .cast-card>a{
    min-height:50px!important;
    padding:12px 6px!important;
    font-size:11.5px!important;
  }
  .onair-action{
    min-height:54px!important;
    font-size:14px!important;
  }
  .line-btn{
    min-height:64px!important;
    padding:17px 14px!important;
    font-size:15px!important;
  }
  .hero-mini-row{
    grid-template-columns:50px 32px minmax(0,1fr) 40px!important;
  }
}

@media(max-width:430px){
  .hero-mini-row{
    grid-template-columns:47px 30px minmax(0,1fr) 40px!important;
  }
  .cast-card>a{font-size:11px!important}
  .line-btn{font-size:14.5px!important}
}


/* ========================================================================== */
/* Revision 22: 出演者18名 — 完成済み紹介カードUI                           */
/* ========================================================================== */
.section-cast .cast-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:34px;
  max-width:1180px;
  margin:0 auto;
}
.performer-day-group{
  min-width:0;
}
.performer-day-heading{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:14px;
  margin:0 0 14px;
  padding:0 2px 10px;
  border-bottom:1px solid rgba(212,175,55,.30);
}
.performer-day-heading span{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:5px 12px;
  border:1px solid rgba(212,175,55,.38);
  border-radius:999px;
  background:rgba(92,9,14,.30);
  color:#d4af37;
  font:700 11px/1 var(--sans);
  letter-spacing:.12em;
}
.performer-day-heading h3{
  margin:0;
  color:#f5e9db;
  font:700 clamp(20px,4vw,28px)/1.2 var(--serif);
  letter-spacing:.05em;
}
.performer-poster-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
}
.performer-poster-card{
  min-width:0;
  padding:12px;
  border:1px solid rgba(212,175,55,.30);
  border-radius:18px;
  background:linear-gradient(155deg,rgba(11,8,6,.90),rgba(5,4,3,.96));
  box-shadow:0 14px 34px rgba(0,0,0,.28);
  overflow:hidden;
}
.performer-poster-image-link{
  display:block;
  width:100%;
  border-radius:12px;
  overflow:hidden;
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;
}
.performer-poster-image{
  display:block;
  width:100%;
  height:auto;
  border:1px solid rgba(212,175,55,.22);
  border-radius:12px;
  background:#050403;
}
.performer-poster-image-link .performer-poster-image{
  transition:transform .18s ease,filter .18s ease;
}
.performer-poster-image-link:hover .performer-poster-image{
  transform:scale(1.006);
  filter:brightness(1.035);
}
.performer-poster-link{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:52px;
  margin-top:12px;
  box-sizing:border-box;
  padding:13px 16px;
  border:1px solid rgba(240,204,104,.58);
  border-radius:13px;
  background:linear-gradient(180deg,#b98a22 0%,#8c6212 100%);
  color:#fff6dc;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 8px 20px rgba(0,0,0,.22);
  font:700 14px/1.2 var(--sans);
  letter-spacing:.03em;
  text-decoration:none;
  transition:filter .18s ease,transform .18s ease;
  -webkit-tap-highlight-color:transparent;
}
.performer-poster-link:hover{filter:brightness(1.08)}
.performer-poster-link:active{transform:translateY(1px);filter:brightness(.96)}
.performer-poster-link.is-disabled{
  border-color:rgba(212,175,55,.18);
  background:rgba(255,255,255,.035);
  color:rgba(245,233,219,.48);
  box-shadow:none;
}
@media (min-width:768px){
  .performer-poster-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
}
@media (min-width:1200px){
  .performer-poster-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
}
@media (max-width:767px){
  .section-cast .cast-grid{gap:30px}
  .performer-day-heading{align-items:flex-start;flex-direction:column;gap:8px}
  .performer-poster-card{padding:10px;border-radius:16px}
  .performer-poster-link{min-height:52px;font-size:14px;margin-top:10px}
}


/* =========================
   Revision 23 — reward section only
   Three clear reward routes: item / 1DAY / 3DAYS
   ========================= */
.section-reward .reward-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
  max-width:980px;
  gap:14px;
}
.section-reward .reward-card{
  min-height:330px;
  padding:24px 20px 20px;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  text-align:left;
  border-radius:18px;
  background:linear-gradient(155deg,rgba(21,10,7,.96),rgba(7,5,4,.98));
  border:1px solid rgba(212,175,55,.40);
}
.section-reward .reward-card:after{
  content:"";
  inset:8px;
  right:8px;
  bottom:8px;
  border:1px solid rgba(212,175,55,.12);
  transform:none;
  pointer-events:none;
}
.section-reward .reward-card:before{
  display:grid;
  place-items:center;
  width:82px;
  height:82px;
  margin:0 auto 18px;
  border-radius:50%;
  border:1px solid rgba(212,175,55,.50);
  color:#e5c565;
  background:radial-gradient(circle,#2b190b,#090604 72%);
  font:800 30px/1 var(--serif);
  box-shadow:0 0 24px rgba(212,175,55,.08);
}
.section-reward .reward-card.is-item:before{content:"贈"}
.section-reward .reward-card.is-day:before{content:"六"}
.section-reward .reward-card.is-all:before{content:"十八";font-size:25px}
.section-reward .reward-card.is-item{
  border-color:rgba(203,67,76,.56);
  background:linear-gradient(155deg,rgba(77,8,13,.90),rgba(10,5,4,.98) 68%);
}
.section-reward .reward-card.is-item:before{
  border-color:rgba(218,84,92,.58);
  background:radial-gradient(circle,#5a0d13,#120506 72%);
  color:#ffd89a;
}
.section-reward .reward-card.is-all{
  border-color:rgba(234,196,91,.62);
  background:linear-gradient(155deg,rgba(62,39,7,.88),rgba(11,7,3,.98) 70%);
}
.section-reward .reward-card>span{
  display:block;
  margin-bottom:8px;
  color:#d6aa4d;
  font:800 10px/1.5 var(--sans);
  letter-spacing:.08em;
}
.section-reward .reward-card h3{
  margin:0 0 12px;
  color:#f3d983;
  font:700 19px/1.55 var(--serif);
}
.section-reward .reward-card p{
  margin:0;
  color:#d2c09d;
  font-size:11px;
  line-height:1.9;
}
.section-reward .reward-receive{
  margin-top:auto;
  padding-top:16px;
  position:relative;
  z-index:1;
}
.section-reward .reward-receive:before{
  content:"";
  display:block;
  height:1px;
  margin-bottom:12px;
  background:linear-gradient(90deg,rgba(212,175,55,.46),transparent);
}
.section-reward .reward-receive b{
  display:block;
  margin-bottom:6px;
  color:#f0d27b;
  font-size:11px;
}
.section-reward .reward-receive small{
  display:block;
  color:rgba(245,233,219,.74);
  font-size:10px;
  line-height:1.8;
}
.section-reward .reward-status{
  max-width:980px;
}
.section-reward .reward-proof-actions,
.section-reward .reward-proof-note{
  max-width:980px;
}
.section-reward .reward-proof-actions{
  margin-top:18px;
  padding-top:16px;
  border-top:1px solid rgba(212,175,55,.20);
}
.section-reward .reward-proof-actions:before{
  content:"1DAY / 3DAYS COMPLETE 特典申請";
  display:block;
  margin-bottom:2px;
  text-align:center;
  color:#e2c36e;
  font:700 12px/1.5 var(--serif);
  letter-spacing:.05em;
}
@media(max-width:900px){
  .section-reward .reward-grid{grid-template-columns:1fr;max-width:760px}
  .section-reward .reward-card{min-height:0;padding:20px 16px 18px}
  .section-reward .reward-card:before{width:70px;height:70px;margin-bottom:14px;font-size:27px}
  .section-reward .reward-card.is-all:before{font-size:22px}
  .section-reward .reward-card h3{font-size:18px}
  .section-reward .reward-card p{font-size:11px}
  .section-reward .reward-receive{margin-top:16px;padding-top:0}
}
@media(max-width:430px){
  .section-reward .reward-grid{gap:12px}
  .section-reward .reward-card{border-radius:15px;padding:18px 14px 16px}
  .section-reward .reward-card>span{font-size:9.5px}
  .section-reward .reward-card h3{font-size:17px}
  .section-reward .reward-card p,.section-reward .reward-receive small{font-size:10px}
}


/* =========================
   Revision 24 — reward readability
   Explicit benefit rows / sentence breaks / vertical receive steps
   ========================= */
.section-reward .reward-benefits{
  display:grid;
  gap:12px;
  margin-top:2px;
}
.section-reward .reward-benefit{
  position:relative;
  z-index:1;
  padding:12px 12px 13px;
  border:1px solid rgba(212,175,55,.18);
  background:rgba(0,0,0,.22);
  text-align:left;
}
.section-reward .reward-condition{
  display:block;
  margin:0;
  color:#e8d5b3;
  font:600 11px/1.65 var(--sans);
  letter-spacing:0;
}
.section-reward .reward-benefit i{
  display:block;
  margin:2px 0;
  color:#cda84d;
  font-style:normal;
  font-size:12px;
  line-height:1;
}
.section-reward .reward-benefit strong{
  display:block;
  color:#ffe49a;
  font:700 15px/1.6 var(--serif);
}
.section-reward .reward-note-lines{
  display:grid;
  gap:5px;
}
.section-reward .reward-note-lines>span,
.section-reward .reward-receive-lines>span{
  display:block;
}
.section-reward .reward-receive-lines{
  display:grid;
  gap:6px;
  color:rgba(245,233,219,.78);
  font-size:10.5px;
  line-height:1.75;
}
.section-reward .reward-steps{
  list-style:none;
  margin:0;
  padding:0;
  counter-reset:reward-step;
  display:grid;
  gap:0;
}
.section-reward .reward-steps li{
  position:relative;
  padding:8px 10px 8px 34px;
  border:1px solid rgba(212,175,55,.14);
  border-bottom:0;
  background:rgba(0,0,0,.18);
  color:rgba(245,233,219,.82);
  font-size:10.5px;
  line-height:1.6;
  counter-increment:reward-step;
}
.section-reward .reward-steps li:last-child{border-bottom:1px solid rgba(212,175,55,.14)}
.section-reward .reward-steps li:before{
  content:counter(reward-step);
  position:absolute;
  left:10px;
  top:50%;
  transform:translateY(-50%);
  width:17px;
  height:17px;
  display:grid;
  place-items:center;
  border:1px solid rgba(212,175,55,.42);
  border-radius:50%;
  color:#e8c968;
  font:700 9px/1 var(--serif);
}
.section-reward .reward-steps li:not(:last-child):after{
  content:"↓";
  position:absolute;
  z-index:2;
  left:14px;
  bottom:-9px;
  color:#d8b755;
  font-size:10px;
  line-height:1;
}
.section-reward .reward-receive b{
  margin-bottom:9px;
  font-size:12px;
}
@media(max-width:430px){
  .section-reward .reward-benefits{gap:10px}
  .section-reward .reward-benefit{padding:11px 10px 12px}
  .section-reward .reward-condition{font-size:10.5px}
  .section-reward .reward-benefit strong{font-size:14px}
  .section-reward .reward-receive-lines,
  .section-reward .reward-steps li{font-size:10px}
  .section-reward .reward-steps li{padding:8px 8px 8px 32px}
}

.section-reward .reward-status-copy{display:grid;gap:4px;margin-top:5px}
.section-reward .reward-status-copy i{display:block;font-style:normal}
.section-reward .reward-proof-note>span{display:block}
.section-reward .reward-proof-note>span+span{margin-top:3px}

/* Revision 24 — producer / note readability */
.section-edo .edo-lead,
.section-edo .edo-card>p:last-of-type{
  max-width:620px;
  margin-left:auto;
  margin-right:auto;
  text-align:left;
  line-height:1.95;
}
.section-edo .edo-lead>span,
.section-edo .edo-card>p:last-of-type>span,
.section-edo .line-note>span{
  display:block;
}
.section-edo .edo-lead>span+span,
.section-edo .edo-card>p:last-of-type>span+span,
.section-edo .line-note>span+span{
  margin-top:6px;
}
.section-edo .edo-card blockquote{
  max-width:620px;
  margin-left:auto;
  margin-right:auto;
  text-align:center;
}
.section-edo .line-note{line-height:1.75}
@media(max-width:430px){
  .section-edo .edo-lead,
  .section-edo .edo-card>p:last-of-type{padding-inline:6px}
}

/* =========================
   Revision 25 — multi-day reward claim
   One secure application for all earned COMPLETE rewards
   ========================= */
.section-reward .reward-entitlement-list{
  display:grid;
  gap:7px;
  max-width:520px;
  margin:12px auto 8px;
  text-align:left;
}
.section-reward .reward-entitlement-list>span{
  display:block;
  padding:9px 11px;
  border:1px solid rgba(212,175,55,.22);
  background:rgba(0,0,0,.20);
  color:#f4ddb0;
  font:700 11px/1.55 var(--sans);
}
.section-reward .reward-entitlement-list>span.is-unlocked{
  border-color:rgba(212,175,55,.38);
  background:linear-gradient(90deg,rgba(93,58,8,.32),rgba(0,0,0,.18));
}
.section-reward .reward-claim-intro{
  display:grid;
  gap:6px;
  margin:0 auto 12px;
  padding:13px 14px;
  border:1px solid rgba(212,175,55,.20);
  background:rgba(0,0,0,.18);
  text-align:left;
}
.section-reward .reward-claim-intro strong{
  display:block;
  color:#f0d27b;
  font:700 12px/1.65 var(--serif);
}
.section-reward .reward-claim-intro span{
  display:block;
  color:#cdbd9e;
  font-size:10.5px;
  line-height:1.7;
}
.section-reward .reward-claim-btn{
  min-height:56px;
  font-size:14px;
}
.claim-card .claim-benefit-list{
  display:grid;
  gap:7px;
  margin:14px 0;
  text-align:left;
}
.claim-card .claim-benefit-list>span{
  display:block;
  padding:9px 10px;
  border:1px solid rgba(118,35,25,.25);
  background:rgba(118,35,25,.07);
  color:#4a2416;
  font:700 11px/1.55 var(--sans);
}
@media(max-width:430px){
  .section-reward .reward-entitlement-list>span{font-size:10px;padding:8px 9px}
  .section-reward .reward-claim-intro{padding:12px 11px}
  .section-reward .reward-claim-intro strong{font-size:11px}
  .section-reward .reward-claim-intro span{font-size:10px}
  .section-reward .reward-claim-btn{min-height:54px;font-size:13px}
}


/* =========================
   Revision 29 — launch guidance / safety / cache-ready UI
   ========================= */
.festival-walkthrough{
  padding:18px 0 24px;
  background:linear-gradient(180deg,#070403,#0b0604);
}
.festival-walkthrough .wrap{max-width:980px}
.walk-panel{
  position:relative;
  overflow:hidden;
  padding:22px;
  border:1px solid rgba(212,175,55,.38);
  background:linear-gradient(145deg,rgba(37,12,10,.88),rgba(7,5,4,.97));
  box-shadow:inset 0 0 0 1px rgba(255,225,145,.035),0 14px 34px rgba(0,0,0,.24);
}
.walk-panel:before{
  content:"";position:absolute;inset:7px;border:1px solid rgba(212,175,55,.12);pointer-events:none;
}
.walk-heading{position:relative;z-index:1;text-align:center;margin-bottom:16px}
.walk-heading>span{display:block;color:#b99748;font:700 9px/1.5 var(--sans);letter-spacing:.16em}
.walk-heading h2{margin:4px 0 0;color:#efd175;font:700 clamp(22px,4vw,30px)/1.4 var(--serif);letter-spacing:.08em}
.walk-steps{position:relative;z-index:1;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.walk-steps li{min-width:0;display:flex;align-items:center;gap:10px;padding:12px 11px;border:1px solid rgba(212,175,55,.22);background:rgba(0,0,0,.22);color:#eee0c2}
.walk-steps b{flex:0 0 30px;width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(212,175,55,.48);border-radius:50%;color:#e5c565;font:700 13px/1 var(--serif)}
.walk-steps span{min-width:0;font:600 11px/1.65 var(--sans);overflow-wrap:anywhere}

.passport-save-note{
  margin:10px 8px 12px;padding:13px 14px;border:1px solid rgba(212,175,55,.34);
  background:linear-gradient(135deg,rgba(91,57,11,.23),rgba(15,9,5,.72));color:#d8c7a4;
}
.passport-save-note>strong{display:block;margin-bottom:7px;color:#efd175;font:700 13px/1.4 var(--serif)}
.passport-save-note p{margin:0;font-size:10.5px;line-height:1.75}
.passport-save-note p>span{display:block}
.passport-save-note p>span+span{margin-top:3px}

.reward-line-guide{
  max-width:980px;margin:14px auto 0;padding:18px;border:1px solid rgba(212,175,55,.30);
  background:linear-gradient(150deg,rgba(19,12,7,.94),rgba(7,5,4,.98));text-align:center;
}
.reward-line-guide>strong{display:block;color:#efd175;font:700 17px/1.5 var(--serif);letter-spacing:.04em}
.reward-line-guide p{margin:10px auto 12px;color:#d8c7a4;font-size:11px;line-height:1.85}
.reward-line-guide p>span,.reward-line-guide p>b{display:block}
.reward-line-guide p>b{margin:5px auto;color:#fff0b7;font:800 15px/1.55 var(--serif);letter-spacing:.04em}
.reward-line-guide .reward-line-btn{margin:0 auto;min-height:54px}
.reward-line-guide>small{display:block;margin-top:10px;color:#927f61;font-size:9.5px;line-height:1.7}

@media(max-width:820px){
  .walk-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:520px){
  .festival-walkthrough{padding:10px 0 18px}
  .festival-walkthrough .wrap{width:calc(100% - 20px)}
  .walk-panel{padding:17px 12px 14px;border-radius:14px}
  .walk-heading{margin-bottom:12px}
  .walk-heading h2{font-size:22px}
  .walk-steps{grid-template-columns:1fr;gap:7px}
  .walk-steps li{padding:10px 9px}
  .walk-steps span{font-size:10.5px}
  .passport-save-note{margin:8px 4px 10px;padding:11px 10px}
  .passport-save-note>strong{font-size:12px}
  .passport-save-note p{font-size:9.5px}
  .reward-line-guide{margin-top:12px;padding:16px 12px;border-radius:14px}
  .reward-line-guide>strong{font-size:16px}
  .reward-line-guide p{font-size:10px}
  .reward-line-guide p>b{font-size:14px}
  .reward-line-guide .reward-line-btn{width:100%;font-size:13.5px!important}
}


/* ==========================================================
   Revision 33 — 江戸FES2 終幕・特典申請受付版
   ========================================================== */
.hero-ending-lead{
  display:grid;
  gap:5px;
  margin:10px auto 18px;
  color:#eadbbd;
  font:600 13px/1.8 var(--sans);
  letter-spacing:.04em;
}
.hero-ending-lead span{display:block}
.event-status.is-ending{
  border-color:rgba(212,175,55,.48);
  background:linear-gradient(135deg,rgba(76,10,13,.88),rgba(8,5,3,.94));
}
.event-status.is-ending .countdown{display:grid;gap:3px;justify-items:center}
.event-status.is-ending .countdown strong{color:#f2d477;font-size:19px;letter-spacing:.04em}
.ending-status-note{display:block;color:#b9a98d;font:600 9px/1.55 var(--sans);letter-spacing:.06em}

.kw-form.is-closed{
  border-color:rgba(212,175,55,.25);
  background:rgba(0,0,0,.28);
}
.kw-form.is-closed .kw-input,
.kw-form.is-closed .btn-red{
  opacity:.62;
  cursor:not-allowed;
}
.kw-form.is-closed .kw-msg{
  color:#d6c39a;
  line-height:1.8;
}

.reward-deadline{
  max-width:760px;
  margin:0 auto 16px;
  padding:16px 18px;
  text-align:center;
  border:1px solid rgba(212,175,55,.48);
  border-radius:14px;
  background:linear-gradient(135deg,rgba(86,12,16,.82),rgba(10,6,4,.94));
  box-shadow:0 14px 34px rgba(0,0,0,.26);
}
.reward-deadline>span,
.reward-deadline>strong,
.reward-deadline>small{display:block}
.reward-deadline>span{color:#c8a957;font:700 10px/1.5 var(--sans);letter-spacing:.10em}
.reward-deadline>strong{margin-top:5px;color:#ffe7a4;font:800 19px/1.55 var(--serif);letter-spacing:.04em}
.reward-deadline>small{margin-top:7px;color:#d8c7a4;font:500 10px/1.7 var(--sans)}
.reward-claim-deadline{color:#f0d175!important;font-weight:800!important}

@media (max-width:640px){
  .hero-ending-lead{font-size:11px;line-height:1.75;margin-bottom:14px;padding:0 8px}
  .event-status.is-ending .countdown strong{font-size:16px}
  .reward-deadline{margin:0 2px 13px;padding:14px 11px;border-radius:12px}
  .reward-deadline>strong{font-size:16px}
  .reward-deadline>small{font-size:9.5px}
}
