/* Online-first app shell; original website navigation and content remain intact. */
.app-install-link{display:none;padding:10px 0;color:var(--gold)}
.pixie-app-feed{max-width:1180px;margin:auto;padding:28px 5% 55px}.app-feed-heading{display:flex;align-items:center;gap:20px;justify-content:space-between}.app-feed-heading h1{font-size:clamp(36px,6vw,64px);margin-top:10px}.app-feed-heading .eyebrow{color:var(--gold);font-size:9px}.app-feed-intro{margin:16px 0 28px;color:#d4dee5;max-width:680px}.app-refresh,.app-install-help button{background:var(--gold);color:#102136;border:0;border-radius:24px;padding:12px 18px;font-weight:700;min-height:44px}.app-section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:24px 0 18px}.app-section-heading h2{font-size:35px}.app-section-heading>a{color:var(--gold);font-size:13px;white-space:nowrap}.app-news-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.app-news-card{border:1px solid #e8b44355;background:#102136;border-radius:16px;overflow:hidden;min-width:0}.app-card-photo{display:block;position:relative;width:100%;height:0;padding-top:56.25%;overflow:hidden;background:#172c44}.app-card-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover!important;display:block}.app-card-photo>.editorial-image-pair{position:absolute;inset:0;height:100%;width:100%;margin:0}.app-card-copy{padding:20px}.app-card-copy h3{font-size:31px;margin:12px 0}.app-card-copy>p:not(.editorial-kicker):not(.editorial-image-note){font-size:14px;color:#d4dee5}.app-card-copy .text-link{display:inline-block;margin-top:16px}.app-card-copy .editorial-image-note{font-size:10px;line-height:1.5;margin:0 0 12px}.app-post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}.app-post-grid .memory{min-width:0}.app-post-grid .memory-image{display:block}.app-post-grid .memory-image img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}.app-post-grid .memory h3{font-size:28px;margin:12px 0}.app-post-grid .memory>p{font-size:13px}.app-post-note{font-size:12px;color:#c1d2d9;margin-bottom:22px}.app-install-help{margin-top:36px;padding:20px;border:1px solid #e8b44366;border-radius:12px}.app-install-help summary{cursor:pointer;font-weight:700;color:var(--gold)}.app-install-help p{font-size:13px;margin:14px 0}.app-connection{padding:12px 16px;border:1px solid var(--gold);border-radius:8px;margin:20px 0;background:#102136}.app-tabbar{display:none}.app-offline-notice{padding:12px 5%;background:#f4ead2;color:#102136;font-size:13px;text-align:center;position:relative;z-index:10}
@media(max-width:650px){.pixie-app-feed{padding:22px 5% 40px}.app-feed-heading{align-items:flex-start;gap:10px}.app-feed-heading h1{font-size:39px}.app-feed-heading .eyebrow{font-size:8px;letter-spacing:1px}.app-refresh{font-size:12px;padding:10px 14px}.app-feed-intro{font-size:13px;margin-bottom:20px}.app-news-grid{grid-template-columns:1fr;gap:20px}.app-post-grid{grid-template-columns:1fr 1fr;gap:24px 16px}.app-post-grid .memory h3{font-size:24px}.app-post-grid .memory>p{font-size:12px}.app-section-heading h2{font-size:30px}.app-card-copy h3{font-size:32px}.app-card-copy{padding:18px}}
@media(display-mode:standalone){html.is-phone{min-height:100%}html.is-phone body{padding-bottom:calc(76px + env(safe-area-inset-bottom));padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}html.is-phone .site-header{padding-top:max(12px,env(safe-area-inset-top))}html.is-phone .app-tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:80;margin:0;background:#102136f5;backdrop-filter:blur(16px);border-top:1px solid #e8b44366;justify-content:space-around;gap:4px;padding:9px 8px calc(9px + env(safe-area-inset-bottom));font-size:11px}html.is-phone .app-tabbar a{display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;min-height:45px;min-width:52px;padding:3px 5px}html.is-phone .app-tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}html.is-phone .app-tabbar a[aria-current=page]{color:var(--gold)}html.is-phone .app-install-help,html.is-phone .app-install-link{display:none}}
html.is-installed body{padding-bottom:calc(76px + env(safe-area-inset-bottom))}html.is-installed .app-tabbar{display:flex}html.is-installed .app-install-help,html.is-installed .app-install-link{display:none}

html.is-phone .app-install-link{display:inline-block}html.is-phone.is-installed .app-install-link{display:none}

.app-feed-jumps{display:flex;gap:10px;margin:0 0 24px;font-size:13px}.app-feed-jumps a{border:1px solid #e8b44388;border-radius:22px;padding:10px 18px;color:var(--gold);min-height:44px}.pixie-app-feed section{scroll-margin-top:20px}

.app-install-dialog{box-sizing:border-box;width:calc(100% - 32px);max-width:420px;max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #e8b44388;border-radius:22px;padding:28px 24px 24px;background:#102136;color:#f7f0e4;box-shadow:0 24px 80px #0009;margin:auto;font-family:inherit}.app-install-dialog::backdrop{background:#06101dcc;backdrop-filter:blur(5px)}.app-install-dialog h2{font-size:32px;line-height:1.1;margin:14px 0}.app-install-dialog p,.app-install-dialog li{font-size:14px;line-height:1.55}.app-install-dialog ol{padding-left:22px;margin:20px 0}.app-install-dialog li{padding:0 0 10px 4px}.app-install-dialog .app-install-small{font-size:12px;color:#c1d2d9}.app-install-logo{width:80px;height:80px;object-fit:contain;border-radius:16px;display:block}.app-install-close{position:absolute;right:12px;top:12px;width:44px;height:44px;font-size:28px;border:1px solid #e8b44366;border-radius:50%;background:#172c44;color:#f7f0e4;cursor:pointer}.app-install-done{display:block;width:100%;min-height:46px;margin-top:20px;border:0;border-radius:24px;background:#e8b443;color:#102136;font-size:15px;font-weight:700;cursor:pointer}.app-install-dialog button:focus-visible{outline:3px solid white;outline-offset:3px}

.app-install-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px max(16px,env(safe-area-inset-left));background:#172c44;border-bottom:1px solid #e8b44377;color:#f7f0e4}.app-install-banner strong{font-size:13px;display:block}.app-install-banner small{font-size:11px;display:block;color:#c1d2d9;line-height:1.4;margin-top:3px}.app-install-banner-button{flex-shrink:0;min-height:44px;border:1px solid #e8b443;border-radius:24px;background:#e8b443;color:#102136;padding:10px 15px;font-size:13px;font-weight:700}.app-install-banner-button:focus-visible{outline:3px solid white;outline-offset:3px}

/* A single thumb-friendly navigation system inside the phone app only. */
html.is-app-shell body{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
html.is-app-shell .app-tabbar{display:flex;position:fixed;inset:auto 0 0;z-index:80;margin:0;gap:4px;justify-content:space-around;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:#102136f5;backdrop-filter:blur(18px);border-top:1px solid #e8b44366;box-shadow:0 -8px 24px #0003}
html.is-app-shell .app-tabbar a{display:flex;flex:1;min-width:0;min-height:54px;padding:6px 2px;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:14px;color:#d8e3ec;font-size:11px;font-weight:600;letter-spacing:.1px}
html.is-app-shell .app-tabbar svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
html.is-app-shell .app-tabbar a[aria-current=page]{background:#e8b443;color:#102136}
html.is-app-shell .app-tabbar a:focus-visible,html.is-app-shell button:focus-visible{outline:3px solid #fff;outline-offset:3px}
html.is-app-shell .site-header{padding-top:max(12px,env(safe-area-inset-top));grid-template-columns:minmax(0,1fr)}
/* The installed app uses the bottom tabs; retain only the brand above the content. */
html.is-app-shell .site-header .menu-toggle,
html.is-app-shell .site-header .site-navigation{display:none!important}
html.is-app-shell .app-install-help[data-pixie-notifications]{display:block}
.app-freshness-status{font-size:11px;color:#bacbd8;margin:-8px 0 22px;line-height:1.5}
.app-update-banner{position:fixed;bottom:calc(86px + env(safe-area-inset-bottom));left:16px;right:16px;z-index:85;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;background:#f7f0e4;color:#102136;border:1px solid #e8b443;border-radius:18px;box-shadow:0 8px 32px #0007;font-size:13px}
.app-update-banner[hidden]{display:none}.app-update-banner button{min-height:44px;background:#102136;color:#f7f0e4;border:0;border-radius:12px;padding:8px 12px;font-weight:700}.app-update-banner .app-update-dismiss{font-size:24px;padding:6px 12px;background:transparent;color:#102136}

/* Notification management lives in Settings, never in the reading feed. */
.pixie-app-settings{max-width:760px}.pixie-app-settings h1{font-size:46px;margin:12px 0}.app-settings-card{margin:24px 0;padding:24px;border:1px solid #e8b44355;border-radius:20px;background:#102136}.app-settings-card h2{font-size:30px;margin:0 0 12px}.app-settings-card p{font-size:14px;line-height:1.6;color:#d4dee5;margin:12px 0}.app-settings-card button{display:block;min-height:48px;width:100%;border:1px solid #e8b443;border-radius:14px;background:#e8b443;color:#102136;padding:12px 16px;font-weight:700;margin:16px 0 8px}.app-settings-card button[hidden]{display:none}.app-settings-card button:disabled{opacity:.65}.app-settings-card button+ p[role=status]{color:#f7f0e4}.app-settings-card button:last-child{background:transparent;color:#e8b443}.app-settings-link{display:flex;align-items:center;justify-content:space-between;min-height:48px;gap:12px;padding:12px 0;color:#e8b443;border-bottom:1px solid #e8b44333}.app-settings-card [data-pixie-notifications][hidden]{display:none}

/* Compact app chrome: content first, with the bottom bar as the main navigation. */
html.is-app-shell .site-header.site-header{display:none!important}
html.is-app-shell .site-season-strip{padding:calc(10px + env(safe-area-inset-top)) 18px 10px;min-height:0;border-bottom:1px solid #e8b44333}
html.is-app-shell .site-season-strip .eyebrow{display:none}
html.is-app-shell .site-season-strip p{max-width:none;font-size:12px}
html.is-app-shell .pixie-app-feed{padding-top:18px}
html.is-app-shell .app-feed-heading{align-items:center;margin:0 0 18px;gap:16px}
html.is-app-shell .app-feed-heading h1{font-size:36px;line-height:1.1;margin:0}
.app-feed-heading .app-refresh{display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;border:1px solid #e8b44388;border-radius:50%;background:transparent;color:var(--gold);font-size:24px;line-height:1}
html.is-app-shell .app-freshness-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
html.is-app-shell #app-news .app-section-heading{margin-top:0;margin-bottom:16px}
html.is-app-shell .app-section-heading h2{font-size:28px}

/* Today is a compact mixed-source overview; News retains its full article index. */
.app-mixed-note{font-size:12px;line-height:1.55;color:#bdcdd8;margin:0 0 18px;max-width:720px}.app-mixed-feed{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:20px}.app-update-card{display:grid;grid-template-columns:112px minmax(0,1fr);align-content:start;gap:14px;padding:16px;border:1px solid #e8b44344;border-radius:18px;background:#102136;min-width:0}.app-update-image{display:block;align-self:start;aspect-ratio:1/1;overflow:hidden;border-radius:10px;background:#172c44}.app-update-image>img{display:block;width:100%;height:100%;object-fit:cover}.app-update-image>.editorial-intact-pair{border-radius:0;gap:2px!important}.app-update-placeholder{display:grid;place-items:center;width:100%;height:100%;font-size:34px;color:#e8b443}.app-update-copy{min-width:0}.app-source-badge{display:inline-block;padding:4px 8px;border-radius:7px;font-size:10px;font-weight:700;letter-spacing:.3px;background:#e8b443;color:#102136}.app-source-instagram{background:#dac3e8;color:#261832}.app-source-youtube{background:#efb8b0;color:#431b19}.app-update-copy h3{font-size:22px;line-height:1.2;margin:9px 0}.app-update-date{font-size:10px;line-height:1.45;color:#b8ccd8;margin:0 0 8px}.app-update-summary{font-size:12px;line-height:1.5;color:#d4dee5;margin:0 0 8px}.app-update-action{display:inline-flex;align-items:center;min-height:44px;color:#e8b443;font-size:12px;font-weight:600}.app-update-note{grid-column:1/-1}.app-update-note p{font-size:10px;line-height:1.45;color:#b8ccd8;margin:0}.app-feed-collections{display:flex;flex-wrap:wrap;gap:8px 20px;margin:20px 0}.app-feed-collections a{display:inline-flex;align-items:center;min-height:44px;font-size:12px;color:#e8b443}.app-update-card a:focus-visible{outline:3px solid white;outline-offset:3px}
@media(max-width:650px){.app-mixed-feed{grid-template-columns:1fr;gap:14px}.app-update-card{grid-template-columns:94px minmax(0,1fr);gap:12px;padding:14px}.app-update-copy h3{font-size:20px}.app-update-summary{font-size:12px}}
@media(max-width:360px){.app-update-card{grid-template-columns:76px minmax(0,1fr);gap:10px;padding:12px}.app-update-copy h3{font-size:18px}}

/* Six phone-app destinations retain 44px targets at 320px without horizontal overflow. */
html.is-app-shell .app-tabbar{gap:2px;padding-left:max(6px,env(safe-area-inset-left));padding-right:max(6px,env(safe-area-inset-right))}
html.is-app-shell .app-tabbar a{min-width:44px;min-height:54px;padding:5px 1px;font-size:10.5px;line-height:1.15;text-align:center}
html.is-app-shell .app-tabbar a span{max-width:100%;white-space:normal;overflow-wrap:normal}
html.is-app-shell .app-tabbar svg{width:21px;height:21px;flex-shrink:0}
/* Phone app only: keep one-finger scrolling/swiping, reduce accidental pinch/double-tap/focus zoom. */
html.is-app-shell body{touch-action:pan-x pan-y}
html.is-app-shell input,html.is-app-shell select,html.is-app-shell textarea{font-size:16px}

/* Photos stays a photo archive in the installed phone app. */
html.is-app-shell body.archive-page .journal > .editorial-highlight.editorial-compact{display:none!important}
.app-older-news [hidden]{display:none!important}.app-older-news .news-card{margin:18px 0}.app-older-news .news-card-image{display:block}.app-older-news .news-card-image img{width:100%;object-fit:cover;max-height:260px}.app-older-news .news-card-copy{padding:16px}.app-older-news-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:20px 0}.app-older-news-controls button{min-height:44px;padding:10px 16px}.app-more-explore{margin-top:28px}

/* Seven destinations: 7 × 44px + 12px edge padding fits a 320px phone. */
html.is-app-shell .app-tabbar{display:grid;grid-template-columns:repeat(5,minmax(44px,1fr));gap:0;box-sizing:border-box}
html.is-app-shell .app-tabbar a{box-sizing:border-box;width:100%;min-width:44px;min-height:54px;padding:5px 1px;font-size:10px;letter-spacing:0}

/* Root-level app chrome stays outside transformed/scrolling page content. */
html.is-app-shell .app-chrome > .app-tabbar{font-family:'DM Sans',Arial,sans-serif;line-height:1.6;transform:none;filter:none;contain:none;touch-action:manipulation}
html.is-app-shell body{padding-bottom:calc(var(--app-tabbar-height,calc(92px + env(safe-area-inset-bottom))) + 16px)}
html.is-app-shell{scroll-padding-bottom:calc(var(--app-tabbar-height,calc(92px + env(safe-area-inset-bottom))) + 16px)}
html.is-app-shell .app-update-banner{bottom:calc(var(--app-tabbar-height,calc(92px + env(safe-area-inset-bottom))) + 8px)}

/* Anchor both edges to the fixed viewport. Do not size this containing block
   with vh/dvh or a JavaScript viewport snapshot: iOS can retain a short height
   after keyboard, embedded-media, rotation or standalone resume transitions. */
html.is-app-shell > .app-chrome{position:fixed;inset:0;height:auto;z-index:80;pointer-events:none;transform:none;filter:none;contain:layout}
html.is-app-shell .app-chrome > .app-tabbar{position:absolute;inset:auto 0 0;margin:0;pointer-events:auto}

/* An install reminder is nonblocking and disappears after installation. */
.app-install-banner[hidden]{display:none}

/* Visitor-first More groups; preserve app chrome and ordinary browser behavior. */
.app-more-intro{margin:16px 0 24px;max-width:600px}
.app-more-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.app-more-groups .app-settings-card{margin:0;min-width:0}
.app-more-groups .app-settings-link{gap:16px;min-height:64px}
.app-more-groups .app-settings-link>span:first-child{min-width:0;overflow-wrap:anywhere}
.app-more-groups .app-settings-link small{display:block;font-size:12px;line-height:1.5;color:#c1d2d9;margin-top:4px}
#earlier-posts{scroll-margin-top:110px;margin-top:32px}
@media(max-width:700px){.app-more-groups{grid-template-columns:1fr;gap:18px}}
