/* Layout rules based on the space available on phones, tablets and desktops. */
.app-shell,main,#view,.top-actions{min-width:0}
#view :is(.festival-hero-copy,.hero-content,.participant-body,.person-body,.festival-org-content){min-width:0}
#view :is(.org-contact-links a,.org-address,.participant-details dd,.account-card p,.form-field){overflow-wrap:anywhere}
.form-field :is(input,textarea,select){min-width:0;max-width:100%;font-size:16px}
.rules-table-scroll,.users-table-wrap{max-width:100%;overflow-x:auto}
#view .compact-hero{
 display:grid;grid-template-columns:minmax(0,1.3fr) minmax(190px,.7fr);
 gap:20px;align-items:center;min-height:330px;padding:26px;
}
#view .compact-hero .hero-portrait{
 position:relative;grid-column:2;grid-row:1;top:auto;right:auto;bottom:auto;
 width:auto;max-width:100%;height:320px;margin:-20px auto;justify-self:center;
 object-fit:contain;object-position:center;
 -webkit-mask-image:radial-gradient(ellipse at 53% 46%,#000 35%,#000c 53%,transparent 76%);
 mask-image:radial-gradient(ellipse at 53% 46%,#000 35%,#000c 53%,transparent 76%);
}
#view .compact-hero .hero-content{grid-column:1;grid-row:1;width:100%;max-width:none;margin:0;padding:26px}
#view .compact-hero .hero-festival-title{font-size:clamp(27px,2.8vw,38px);overflow-wrap:break-word}
#view .festival-hero{grid-template-columns:minmax(0,1fr) minmax(180px,220px);gap:32px;align-items:center}
#view .festival-portrait{max-width:220px;justify-self:center;align-self:center}
#view .festival-hero h2{font-size:clamp(30px,3vw,42px);line-height:1.15;text-wrap:balance}
#view .people-grid,#view .participant-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
#view .person-image{height:270px;display:flex;align-items:center;justify-content:center}
#view .person-image img{width:100%;height:100%;object-fit:contain;object-position:center}
#view .participant-photo{height:260px}
#view .festival-org-grid,#view .festival-patrons-grid,#view .festival-partner-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;grid-auto-rows:1fr}
#view .guide-grid{align-items:stretch;grid-auto-rows:1fr}

@media(max-width:1439px){
 #view .festival-org-grid,#view .festival-patrons-grid,#view .festival-partner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1279px){
 #view .people-grid,#view .participant-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 #view .compact-hero{grid-template-columns:minmax(0,1.25fr) minmax(170px,.75fr);padding:24px;gap:18px}
 #view .compact-hero .hero-portrait{height:280px}
 #view .compact-hero .hero-content{padding:22px}
 #view .compact-hero .hero-festival-title{font-size:30px}
 #view .festival-hero{padding:28px;gap:24px;grid-template-columns:minmax(0,1fr) 180px}
}
@media(max-width:1024px){
 :root{--sidebar:0px}
 body{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
 .sidebar{display:none}.app-shell{margin-left:0}
 main{padding:26px 24px 32px;min-height:calc(100dvh - 180px)}
 .topbar{height:72px;padding:0 24px;gap:12px}
 .top-location,.top-actions .archive-label{display:none}
 .mobile-brand{display:flex;align-items:center;font:29px var(--font-display);gap:5px;white-space:nowrap}
 .top-actions{gap:5px}
 .mobile-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;z-index:40;bottom:0;left:0;right:0;gap:2px;min-height:74px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper);backdrop-filter:blur(14px)}
 .mobile-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:54px;padding:5px 3px;gap:5px;font-size:12px;line-height:1.25;text-align:center;border-radius:8px;white-space:normal}
 .mobile-nav a svg{width:21px;height:21px;flex:none}
 .mobile-nav a.active:before{display:none}
 .section-nav{flex-wrap:nowrap;overflow-x:auto;max-width:100%;gap:5px;scrollbar-width:thin;overscroll-behavior-inline:contain}
 .section-nav a{flex:0 0 auto;white-space:nowrap;min-height:44px}
 .toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom))}
 #view .festival-paths{grid-template-columns:1fr}
 #view .guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .footer{margin:0 24px}
}
@media(max-width:767px){
 #view .festival-org-grid,#view .festival-patrons-grid,#view .festival-partner-grid{grid-template-columns:1fr;grid-auto-rows:auto}
 #view .guide-grid{grid-template-columns:1fr;grid-auto-rows:auto}
 #view .festival-hero{grid-template-columns:minmax(0,1fr) 160px;padding:24px;gap:22px}
}
@media(max-width:700px){
 main{padding:22px 18px 30px}
 #view .compact-hero{grid-template-columns:minmax(0,1fr);gap:0;padding:18px;min-height:0}
 #view .compact-hero .hero-portrait{grid-column:1;grid-row:1;height:220px;width:auto;max-width:100%;margin:-8px auto 10px}
 #view .compact-hero .hero-content{grid-column:1;grid-row:2;position:relative;width:100%;margin:0;padding:22px;max-width:none}
 #view .compact-hero .hero-festival-title{font-size:clamp(24px,4.8vw,30px);line-height:1.16;margin-bottom:18px}
 #view .compact-hero .hero-meta{font-size:14px;gap:8px 16px;flex-wrap:wrap}
 #view .festival-hero{grid-template-columns:minmax(0,1fr);padding:24px;gap:22px}
 #view .festival-portrait{grid-column:1;grid-row:1;width:180px;max-width:100%;margin:0 auto;padding:8px 8px 0}
 #view .festival-hero-copy{grid-column:1;grid-row:2;width:100%}
 #view .festival-hero h2{font-size:32px;line-height:1.15;margin:12px 0 16px}
 #view .festival-hero-copy>p{font-size:16px;line-height:1.65}
 #view .festival-meta{gap:8px 16px;margin-top:18px}
 #view .people-grid,#view .participant-grid{grid-template-columns:1fr;gap:18px}
 #view .person-image{height:260px}
 #view .participant-photo{height:250px}
 #view .form-grid{grid-template-columns:minmax(0,1fr)}
 #view .account-card,#view .push-card,#view .privacy-content{padding:22px}
 #view .days{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;max-width:100%}
 #view .day{width:auto;min-width:0;max-width:100%;min-height:84px;padding:9px 2px;font-size:13px}
 #view .day .weekday,#view .day .month{font-size:12px}
 #view .day .day-number{font-size:26px}
 #view .page-heading h1{font-size:30px}
}
@media(max-width:380px){
 .topbar{padding:0 12px;gap:4px}.mobile-brand{font-size:25px;gap:3px}
 .top-actions{gap:0}.top-actions .account-link,.top-actions .icon-btn,.top-actions .top-search{width:40px;height:44px;padding:9px}
 .language-switch button{font-size:12px;padding:8px 3px}
 main{padding-inline:14px}.footer{margin-inline:14px}
 #view .compact-hero{padding:14px}.compact-hero:after{pointer-events:none}
 #view .compact-hero .hero-content{padding:18px}
 #view .compact-hero .hero-festival-title{font-size:24px}
 #view .festival-hero{padding:20px}.festival-portrait figcaption{font-size:17px}
 #view .festival-org-card,#view .festival-principal .festival-org-card{grid-template-columns:56px minmax(0,1fr);gap:12px;padding:14px}
 #view .festival-org-card .festival-logo,#view .festival-principal .festival-org-card .festival-logo{width:56px;height:56px;min-width:56px;padding:8px}
 #view .festival-org-name h3{font-size:20px}
 .mobile-nav a{font-size:11px}
 dialog{padding:24px 18px;width:calc(100% - 24px)}
}
