/* Solid safe-area surfaces. Content, never the status inset, owns the white canvas. */
html[data-nnc-shell]{--nnc-safe-color:#5017bd;background:var(--nnc-safe-color)!important;scroll-padding-bottom:100px}
html[data-nnc-shell] body:before{content:'';position:fixed;inset:0 0 auto;height:var(--nnc-top);z-index:1002;background:var(--nnc-safe-color);pointer-events:none}
html[data-nnc-shell=account] .account-cover{padding-top:var(--nnc-top)}
html[data-nnc-shell=studio] body{padding-top:var(--nnc-top)}
.nnc-app-nav{display:none}.nnc-installed body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.nnc-installed .nnc-app-nav{position:fixed;z-index:950;inset:auto 0 0;display:flex;justify-content:center;padding:6px max(12px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#fff;border-top:1px solid #e7e1ed;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;font:550 11px/1.3 Onest,system-ui,sans-serif}.nnc-app-nav a{flex:1;max-width:180px;min-width:0;min-height:54px;color:#82788c;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:8px}.nnc-app-nav a>svg{width:23px;height:23px;flex-shrink:0}.nnc-app-nav a[aria-current]{color:#5017bd;background:#f6f1fd}.nnc-app-nav a:focus-visible{outline:2px solid #5017bd;outline-offset:-3px}.nnc-installed .nnc-cookie-banner{bottom:calc(72px + env(safe-area-inset-bottom))}.nnc-installed .garage-form-actions,.nnc-installed .garage-page .dialog-actions,.nnc-installed .interval-savebar{bottom:calc(72px + env(safe-area-inset-bottom))}.nnc-installed .account-page>.nnc-footer{display:none}
.nnc-save-event{display:inline-flex;align-items:center;justify-content:center;gap:10px;flex-shrink:0;width:44px;min-height:44px;padding:9px;border:1px solid #ded3ea;background:#fff;color:#5017bd;border-radius:5px;cursor:pointer;touch-action:manipulation}.nnc-save-event svg{width:21px;height:21px;flex-shrink:0}.nnc-save-event[aria-pressed=true]{background:#f3edfc;border-color:#d5bfee}.nnc-save-event:hover{border-color:#5017bd}.nnc-save-event:disabled{opacity:.5}.nnc-save-detail{width:auto;padding:12px 16px;font:600 15px Onest,system-ui,sans-serif}.k-event-bottom:has(.nnc-save-event){flex-wrap:wrap;gap:12px}.k-event-bottom .nnc-save-event{margin-left:auto}#nnc-save-status{position:fixed;z-index:1003;left:50%;bottom:24px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:12px 18px;background:#241132;color:#fff;font:14px/1.5 Onest,system-ui,sans-serif;border-radius:7px;box-shadow:none}.nnc-installed #nnc-save-status{bottom:calc(80px + env(safe-area-inset-bottom))}
.studio-site-links{display:flex;gap:18px}.studio-site-links a{color:inherit;font-size:12px;font-weight:600;text-decoration:none}.studio-sections{display:none}.nnc-studio-app .sidebar{top:var(--nnc-top);height:calc(100dvh - var(--nnc-top) - 72px - env(safe-area-inset-bottom))}.nnc-studio-app .mobile-nav{display:none!important}.nnc-studio-app .shell{padding-bottom:0!important}.nnc-studio-app .editor-sticky{bottom:calc(72px + env(safe-area-inset-bottom))!important}
@media(max-width:700px){.nnc-studio-app .studio-sections{display:flex;align-items:center;gap:4px;overflow-x:auto;white-space:nowrap;padding:8px 16px;background:#fff;border-bottom:1px solid #e7e1ed;scrollbar-width:none}.studio-sections a{display:inline-flex;align-items:center;gap:7px;min-height:44px;flex:0 0 auto;padding:10px 12px;color:#7e7389;font:550 13px Onest,sans-serif;text-decoration:none;border-radius:5px}.studio-sections a>svg{width:18px;height:18px}.studio-sections a.active{color:#5017bd;background:#f3edfc}.studio-sections::-webkit-scrollbar{display:none}.nnc-studio-app .sidebar{height:auto;top:auto}.nnc-studio-app .topbar{min-height:40px;height:auto;gap:8px}.nnc-studio-app .studio-site-links{display:none}.nnc-studio-app .sidebar .brand small{display:none}.nnc-studio-app #content{padding-top:24px}.nnc-studio-app .editor-sticky{padding-bottom:12px!important}.nnc-studio-app .studio-editor .editor-sticky{bottom:calc(72px + env(safe-area-inset-bottom))!important}}

/* One safe-area owner per route. The extra gap is only for installed iOS 27+. */
html[data-nnc-shell]{--nnc-blur-gap:0px;--nnc-top:calc(env(safe-area-inset-top,0px) + var(--nnc-blur-gap))}
html.nnc-ios-blur-gap{--nnc-blur-gap:min(20px,calc(env(safe-area-inset-top,0px) * 1000))}
html[data-nnc-shell=site] body:not(.garage-page){padding-top:var(--nnc-top)}
html[data-nnc-shell] .garage-page{--safe-top:var(--nnc-top)}
html[data-nnc-shell] [data-nnc-header][data-open=true] .nnc-header{padding-top:var(--nnc-top)}
html[data-nnc-shell] [data-nnc-header] .nnc-bar{filter:none;backdrop-filter:none;-webkit-backdrop-filter:none}
html[data-nnc-shell=studio] .sidebar{background:#5017bd}
@media(max-width:700px){
 html[data-nnc-shell=studio] .sidebar{padding:16px 22px;min-height:78px;top:auto}
 html[data-nnc-shell=studio] .brand img{width:48px;height:46px}
 html[data-nnc-shell=studio] .brand b{font-size:20px}
 html[data-nnc-shell=studio] .admin-menu-toggle{min-height:44px;border-radius:3px;font-size:14px}
 .nnc-studio-app .topbar{display:none}
 .nnc-studio-app .studio-sections{padding:0 22px;gap:24px;background:#5017bd;border:0}
 .nnc-studio-app .studio-sections a{padding:12px 0 15px;border-radius:0;border-bottom:3px solid transparent;font-size:14px;color:#ded0ff;gap:0}
 .nnc-studio-app .studio-sections a>svg{display:none}
 .nnc-studio-app .studio-sections a.active{background:none;color:#fff;border-bottom-color:#ffae70}
 .nnc-studio-app #content{padding-top:28px}
}

/* Installed app: the bottom bar replaces the public website menu. */
html.nnc-installed [data-nnc-header]{display:none!important}
html.nnc-installed #nnc-home .nh-hero-copy,html.nnc-installed #main .hero-copy,html.nnc-installed #nnc-calendar-live .k-intro{padding-top:28px!important}
html.nnc-installed .account-heading{padding-top:24px}
html.nnc-installed .garage-masthead{padding-top:calc(24px + var(--safe-top))}
html.nnc-installed .garage-workspace{padding-top:0}
html.nnc-installed .garage-editing .garage-workspace{padding-top:calc(24px + var(--safe-top))}
html.nnc-installed .nnc-legal{padding-top:28px}
.nnc-refresh-dialog{width:min(440px,calc(100% - 40px));max-height:calc(100dvh - 40px);overflow:auto;padding:24px;border:1px solid #e7e1ed;border-radius:4px;background:white;color:#241132;font:16px/1.5 Onest,sans-serif}.nnc-refresh-dialog::backdrop{background:#24113280}.nnc-refresh-dialog h2{font:700 24px/1.2 Onest,sans-serif;margin:0 0 12px}.nnc-refresh-dialog p{margin:0 0 24px}.nnc-refresh-dialog>div{display:flex;flex-wrap:wrap;gap:12px}.nnc-refresh-dialog button{font:600 14px/1.4 Onest,sans-serif;min-height:44px;flex:1;padding:12px;border:1px solid #ded3ea;background:#fff;color:#5017bd;border-radius:3px;cursor:pointer}.nnc-refresh-dialog button[data-reload]{background:#5017bd;border-color:#5017bd;color:#fff}

/* Touch refresh owns only a downward gesture that begins at document top. */
html.nnc-installed,html.nnc-installed body{overscroll-behavior-y:contain}
.nnc-pull-refresh[hidden]{display:none!important}.nnc-pull-refresh{position:fixed;z-index:1003;top:calc(var(--nnc-top,0px) + 8px);left:50%;transform:translate(-50%,var(--pull-offset,0px));display:flex;align-items:center;gap:10px;padding:12px 16px;max-width:calc(100% - 32px);background:#fff;color:#5017bd;border:1px solid #ded3ea;border-radius:24px;box-shadow:0 3px 14px #2411321a;font:550 13px/1.4 Onest,sans-serif;white-space:nowrap;pointer-events:none}
.nnc-pull-refresh svg{width:22px;height:22px;flex-shrink:0;transform:rotate(var(--pull-angle,0deg))}.nnc-pull-refresh.is-loading svg{animation:nnc-refresh-turn .8s linear infinite}@keyframes nnc-refresh-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.nnc-pull-refresh.is-loading svg{animation:none}}
/* Bookmark is a sibling of the image link, never an interactive child of it. */
.k-save-media{position:relative;min-width:0}
.k-save-media>.nnc-save-event{position:absolute;z-index:3;top:10px;right:10px;width:44px;height:44px;border:1px solid #e7e1ed;background:#fff;color:#5017bd;border-radius:6px;box-shadow:none}
.k-save-media>.nnc-save-event[aria-pressed=true]{background:#fff;border-color:#ded3ea;color:#5017bd}
.k-save-media>.nnc-save-event svg{color:inherit;width:20px;height:20px}
:is(#nnc-calendar-live,.nnc-event-cards) .k-save-media .k-media .k-photo-tags{right:64px}
:is(#nnc-calendar-live,.nnc-event-cards) .k-save-media .k-media .k-stamp{position:static;transform:none;margin:0}
:is(#nnc-calendar-live,.nnc-event-cards) .k-save-media .k-typographic-cover .k-photo-status{right:64px;max-width:calc(100% - 80px)}
:is(#nnc-calendar-live,.nnc-event-cards) :is(.k-mini-event,.k-featured-event,.k-cancelled) .k-save-media>.nnc-save-event{right:-6px}
/* In the app, navigation lives in the bottom bar. Keep only contact/legal links. */
html.nnc-installed .nnc-footer{padding:24px 20px;background:#f7f4fb;color:#74677f;border-top:1px solid #e7e1ed}
html.nnc-installed .nnc-footer-inner{display:flex;flex-wrap:wrap;gap:12px 24px;padding:0}
html.nnc-installed .nnc-footer-top,html.nnc-installed .nnc-footer-middle,html.nnc-installed .nnc-footer-bottom{display:contents}
html.nnc-installed .nnc-footer-brand,html.nnc-installed .nnc-footer-top>p,html.nnc-installed .nnc-footer-middle>nav,html.nnc-installed .nnc-footer-bottom>span{display:none}
html.nnc-installed .nnc-footer a,html.nnc-installed .nnc-footer button{color:#74677f;font:400 12px/1.5 Onest,sans-serif;margin:0;padding:6px 0;min-height:32px}
html.nnc-installed .nnc-footer-social{font-weight:600}
html #nnc-calendar-live .k-filters .k-options{box-sizing:border-box;background:#fff;color:#241132;border:1px solid #ded3ea;border-radius:6px;box-shadow:0 8px 24px #24113218;width:340px;max-width:calc(100vw - 40px);padding:8px}
html #nnc-calendar-live .k-filters .k-options .k-region-search{box-sizing:border-box;width:100%;min-width:0;margin:0 0 8px;padding:12px;font:400 16px/1.4 Onest,sans-serif;background:#f8f6fb;color:#241132;border:1px solid #ded3ea;border-radius:4px}
html #nnc-calendar-live .k-filters .k-region-search::placeholder{color:#81738e}
html #nnc-calendar-live .k-filters .k-options .k-option-group{color:#81738e;font-size:11px;letter-spacing:.04em;padding:8px 12px;margin:4px 0}
html #nnc-calendar-live .k-filters .k-options button{border-radius:3px;padding:10px 12px;gap:8px}
html #nnc-calendar-live .k-filters .k-options button[aria-checked=true]{background:#f2ecfb;color:#5017bd}
html #nnc-calendar-live .k-filters .k-options button:hover,html #nnc-calendar-live .k-filters .k-options button:focus-visible{background:#f2ecfb;color:#5017bd}
html #nnc-calendar-live .k-filters .k-pick-trigger[aria-expanded=true]{background:#f2ecfb;color:#5017bd}
@media(max-width:700px){html #nnc-calendar-live .k-filters{position:relative}html #nnc-calendar-live .k-filters .k-picker{position:static}html #nnc-calendar-live .k-filters .k-picker .k-options{left:0;right:0;top:100%;width:100%;max-width:none;max-height:min(360px,55vh)}}

html.nnc-installed .account-section[href="/admin/"]{display:none}
@media(max-width:360px){.nnc-installed .nnc-app-nav{padding-inline:4px}.nnc-app-nav a{font-size:10px}}

:is(#nnc-calendar-live,.nnc-event-cards) .k-save-media>.nnc-save-event,:is(#nnc-calendar-live,.nnc-event-cards) .k-save-media>.nnc-save-event svg{color:#5017bd}

html.nnc-installed .camp-hero>.nnc-camp-back{position:absolute;z-index:6;top:16px;left:var(--nnc-pad,20px);display:inline-flex;align-items:center;min-height:44px;color:#fff;font:600 14px/1.4 Onest,sans-serif;text-decoration:none}
@media(max-width:900px){html.nnc-installed .camp-page .camp-hero-copy{padding-top:88px}}

/* A real opaque fixed surface lets WebKit sample the top edge even when the
   reported safe inset is zero. Keep this out of normal browser page layout. */
.nnc-status-surface{display:none}
html.nnc-installed[data-nnc-shell] body:before{display:none}
html.nnc-installed .nnc-status-surface{display:block;position:fixed;inset:0 0 auto;height:max(12px,var(--nnc-top));background:var(--nnc-safe-color);z-index:1002;pointer-events:none}

.nnc-install-banner{display:none}
@media(max-width:700px){
 .nnc-install-banner{box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 12px;background:#241132;color:#fff;font:400 12px/1.3 Onest,system-ui,sans-serif}
 .nnc-install-banner img{flex:none;width:40px;height:40px;border-radius:8px}
 .nnc-install-banner>div{flex:1;min-width:0}.nnc-install-banner b{display:block;font-size:12px;font-weight:650}.nnc-install-banner span{display:block;color:#c9bdd8;margin-top:3px;font-size:11px}
 .nnc-install-banner button{flex:none;width:auto;min-height:40px;padding:8px 10px;border:0;border-radius:4px;background:#ffae70;color:#241132;font:650 12px/1.3 Onest,sans-serif;cursor:pointer}
 .nnc-install-banner .nnc-install-close{width:32px;padding:0;background:none;color:#c9bdd8;font-size:25px}
}
html.nnc-installed .nnc-install-banner{display:none}
.nnc-install-dialog{box-sizing:border-box;width:min(420px,calc(100% - 32px));max-height:calc(100dvh - 40px);overflow:auto;margin:auto;padding:24px;border:1px solid #ded3ea;border-radius:8px;background:#fff;color:#241132;font:400 16px/1.5 Onest,system-ui,sans-serif}
.nnc-install-dialog::backdrop{background:#24113299}.nnc-install-dialog h2{margin:0 0 20px;font:700 24px/1.2 Onest,sans-serif}.nnc-install-dialog ol{padding-left:22px;margin:0 0 24px}.nnc-install-dialog li+li{margin-top:14px}.nnc-install-dialog button{width:100%;min-height:44px;border:0;border-radius:4px;background:#5017bd;color:#fff;font:600 16px Onest,sans-serif;cursor:pointer}

/* Hidden website navigation must not leave its reserved height in the app. */
html.nnc-installed .event-detail,html.nnc-installed .event-detail.event-poster{padding-top:20px}
@media(max-width:700px){
 html .event-poster .event-actions{display:flex;flex-direction:column;align-items:stretch;gap:12px}
 html .event-poster .event-actions>.button{order:0;width:100%;min-height:48px;justify-content:center}
 html .event-poster .event-actions>.nnc-save-detail{order:1;width:100%;min-height:48px;justify-content:center;font-size:14px;background:transparent;border:1px solid #8e7ba6;color:#fff}
 html .event-poster .event-actions>.nnc-save-detail[aria-pressed=true]{background:#ffffff12;border-color:#8e7ba6;color:#fff}
 html .event-poster .event-actions>.add-calendar{order:2;width:100%;padding-top:4px}
 html .event-poster .event-actions>.add-calendar>summary{min-height:44px;padding:8px 0;font-size:13px;text-align:left}
 html .event-poster .calendar-options{width:100%;max-width:none}
}
