.recommend-sheet { max-height:calc(100% - 148px);overflow-y:auto;scrollbar-width:thin; }
.festival-entry { display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 16px; }
.festival-entry button { text-align:left;padding:13px 12px;border:1px solid #a37c4b66;border-radius:14px;background:linear-gradient(125deg,#443424,#1e242c);color:#f9e4b4;cursor:pointer; }
.festival-entry button:nth-child(2) { background:linear-gradient(125deg,#343e36,#263441);border-color:#869f7c66;color:#e6f0ce; }
.festival-entry b,.festival-entry small { display:block; }.festival-entry b { font-size:16px;margin-top:5px; }.festival-entry small { font-size:9px;opacity:.8; }.festival-entry span { float:right; }
.phone.is-festival .camera-header { display:none; }
.festival-screen { background:#111817;--festival-accent:#f1d29c; }
.festival-screen[data-topic="national-day"] { --festival-accent:#d9e9a8; }
.festival-scroll { position:absolute;inset:0 0 calc(50px + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin; }
.festival-scroll[hidden] { display:none; }
.festival-header { display:flex;align-items:center;gap:10px;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top)); }
.festival-header button { width:40px;height:40px;background:#ffffff0a;border:1px solid #ffffff20;border-radius:50%;font-size:29px;color:white;cursor:pointer; }
.festival-header span { font-size:12px; }.festival-header small { margin-left:auto;font-size:9px;letter-spacing:.08em;color:#9ba8a1; }
.festival-hero { padding:20px 20px 24px;background:radial-gradient(ellipse at 95% 5%,#93754255,transparent 70%); }
[data-topic="national-day"] .festival-hero { background:radial-gradient(ellipse at 95% 5%,#79956255,transparent 70%); }
.festival-hero h2 { font-size:38px;letter-spacing:.06em;margin:10px 0;color:var(--festival-accent); }
.festival-hero p { font-size:13px;color:#c4ccc4;line-height:1.7;margin:0; }
.festival-hero p:first-child { font-size:9px;letter-spacing:.18em;color:var(--festival-accent); }.festival-hero>span { display:block;margin-top:16px;font-size:11px;color:#889a8f; }
.festival-filters { display:flex;gap:8px;padding:12px 18px;background:#111817f5;position:sticky;top:0;z-index:2; }
.festival-filters button { min-height:38px;flex:1;border:1px solid #ffffff20;border-radius:22px;background:transparent;color:#a5b0a8;cursor:pointer;font-size:12px; }
.festival-filters button[aria-pressed="true"] { background:var(--festival-accent);color:#17211a;border-color:var(--festival-accent);font-weight:700; }
.festival-count { color:#91a196;font-size:10px;margin:6px 18px 14px; }
.festival-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 16px; }
.festival-card { padding:0;background:#1b2420;color:white;border:1px solid #ffffff10;border-radius:16px;overflow:hidden;text-align:left;cursor:pointer; }
.festival-photo { display:block;aspect-ratio:1;background-size:300% 300%;background-repeat:no-repeat;background-color:#27362d; }
.festival-card-copy { display:block;padding:12px 10px; }.festival-card-copy b { display:block;font-size:13px; }.festival-card-copy small { display:block;color:#9faf9f;font-size:10px;margin-top:6px; }
.festival-footnote { color:#98a99d;font-size:10px;line-height:1.8;margin:18px 18px 24px; }
.festival-detail-photo { margin:0 16px;border-radius:20px; }
.festival-detail-copy { padding:16px 20px 24px; }.festival-detail-copy h2 { font-size:26px;margin:8px 0 20px;color:var(--festival-accent); }
#festival-detail-meta { color:#9cad9f;font-size:10px; }.festival-detail-copy dt { font-size:10px;color:#97a99c;margin:17px 0 6px; }.festival-detail-copy dd { margin:0;font-size:13px;line-height:1.7; }
.festival-note { padding:12px;border-radius:12px;background:#ffffff08;font-size:11px;line-height:1.7;color:var(--festival-accent); }
.festival-detail-copy .festival-footnote { margin:12px 0; }.festival-detail-copy .primary-cta { position:static;width:100%; }
#back-festival-guide { position:absolute;top:78px;left:16px;z-index:5;background:#101b17b8;color:white;border:1px solid #ffffff30;border-radius:16px;padding:10px 12px;font-size:11px;cursor:pointer; }
#back-festival-guide[hidden] { display:none; }
.phone.festival-guiding .pose-reference-outline,.phone.festival-guiding .pose-overlay,.phone.festival-guiding .guide-score { display:none!important; }
.phone.festival-guiding .result-metrics { display:none; }
@media (orientation:landscape) and (max-width:840px) {
  .festival-grid { grid-template-columns:repeat(3,1fr); }.festival-detail-photo { width:40%;float:left;margin-bottom:20px; }.festival-detail-copy { margin-left:44%;padding-top:0; }
}
