/* Public field guide: shared tokens live in app.css. */
body:has(.public-shell){overflow:auto;height:auto;background:radial-gradient(ellipse at 75% 0,var(--glow),transparent 35%),var(--bg-deep)}
.public-shell{max-width:1240px;margin:auto;padding:0 40px;color:var(--ink)}
.public-header{display:flex;justify-content:space-between;align-items:center;padding:25px 0;border-bottom:1px solid var(--line);gap:24px}
.public-header .account-brand{margin:0}
.public-header nav{display:flex;gap:10px;font-size:13px}
.public-header nav a{display:flex;align-items:center;gap:6px;min-height:44px;padding:10px;color:var(--muted);border-radius:10px}
.public-header nav .icon{width:17px;height:17px}
.public-header nav a:hover{background:var(--surface-2);color:var(--ink)}
.public-header nav a[aria-current]{color:var(--accent-ghost);background:var(--mist);font-weight:700;box-shadow:inset 0 0 18px var(--mist)}
.public-header a,.story-card,.category-links a{text-decoration:none}
.home-hero{display:grid;grid-template-columns:1.12fr 1fr;gap:65px;padding:75px 0 65px;align-items:center;position:relative}
.home-hero:before{content:'';position:absolute;inset:5% -30px 0;background:radial-gradient(ellipse at 85% 70%,var(--mist),transparent 60%);pointer-events:none;z-index:-1}
.home-hero h1{font-size:19px;font-weight:600;margin:24px 0 16px;color:var(--purple-dark);letter-spacing:-.3px}
.home-hero h2{font-size:clamp(38px,4.5vw,65px);letter-spacing:-2.5px;line-height:1.1;margin:0 0 24px}
.home-hero p:not(.eyebrow){font-size:17px;line-height:1.8;max-width:460px;color:var(--muted);margin-bottom:30px}
.home-hero .button-row{gap:12px}
.home-hero .button{min-height:50px}
.hero-atlas{position:relative;min-height:420px;background:radial-gradient(ellipse at 60% 40%,var(--glow),transparent 65%),repeating-linear-gradient(24deg,transparent 0 70px,var(--mist) 71px 72px,transparent 73px 118px),repeating-linear-gradient(112deg,transparent 0 90px,var(--mist) 91px 92px,transparent 93px 161px),var(--surface-1);border:1px solid var(--line);border-radius:160px 160px 28px 28px;overflow:hidden;display:block;color:var(--ink);text-decoration:none;box-shadow:var(--shadow)}
.hero-atlas:hover{border-color:var(--accent-ghost)}
.atlas-ring{position:absolute;border:1px solid var(--line);border-radius:50%;height:240px;width:240px;left:26%;top:18%;box-shadow:0 0 35px var(--mist)}
.ring-two{width:360px;height:360px;left:12%;top:4%;border-style:dashed}
.atlas-label{position:absolute;left:0;right:0;top:55px;text-align:center;font-size:9px;letter-spacing:2px;color:var(--accent-ghost)}
.atlas-pin{position:absolute;display:grid;place-items:center;background:var(--lilac);color:var(--purple-dark);border:2px solid var(--purple-dark);width:52px;height:59px;border-radius:20px 20px 20px 4px;box-shadow:0 0 0 8px var(--glow),var(--shadow)}
.atlas-pin .icon{width:29px;height:29px;stroke-width:1.4}
.pin-one{left:30%;top:34%}
.pin-two{right:18%;top:22%;background:var(--success-bg);color:var(--accent-ghost);border-color:var(--accent-ghost);transform:rotate(12deg)}
.pin-three{right:28%;top:55%;width:40px;height:47px}
.pin-three .icon{width:22px;height:22px}
.atlas-caption{position:absolute;bottom:25px;left:26px;right:26px;background:var(--nav-surface);border:1px solid var(--line);border-radius:15px;padding:20px;font-size:12px;line-height:1.9;color:var(--muted)}
.atlas-caption strong{font-size:17px;color:var(--ink)}
.home-section{padding:44px 0;border-top:1px solid var(--line)}
.home-section h2,.build-banner h2{font-size:28px;letter-spacing:-.6px;margin:7px 0 14px}
.home-section-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}
.home-section-head p{color:var(--muted);font-size:13px}
.story-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:22px 0}
.story-card{display:block;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:var(--surface-1);transition:transform .18s,border-color .18s;box-shadow:var(--shadow);color:var(--ink)}
.story-card:hover{transform:translateY(-3px);border-color:var(--purple-dark)}
.story-art{height:140px;background:radial-gradient(ellipse at 20% 80%,var(--glow),transparent 65%),linear-gradient(135deg,var(--lilac),var(--bg-page));display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.story-art:before{content:'';position:absolute;border:1px solid var(--line);border-radius:50%;width:130px;height:130px;right:10%;top:35px;box-shadow:0 0 0 24px var(--mist)}
.story-art.tone-1{background:linear-gradient(135deg,var(--success-bg),var(--bg-page))}
.story-art.tone-2{background:linear-gradient(135deg,var(--warning-bg),var(--bg-page))}
.story-art small{position:absolute;bottom:14px;left:18px;font-size:10px;color:var(--text-secondary);letter-spacing:.5px}
.story-orbit{font-size:60px;color:var(--purple-dark);position:relative}
.story-orbit .icon{width:48px;height:48px;stroke-width:1.1}
.story-art.tone-1 .story-orbit{color:var(--accent-ghost)}
.story-art.tone-2 .story-orbit{color:var(--warning)}
.story-copy{padding:22px;min-width:0;overflow-wrap:anywhere}
.story-copy h3{font-size:19px;margin:10px 0}
.story-copy p{font-size:12px;color:var(--muted);min-height:32px}
.story-metrics{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--text-secondary)}
.story-metrics span:first-child{color:var(--purple-dark)}
.experience-quote{padding:28px;border:1px solid var(--line);border-left:2px solid var(--accent-ghost);border-radius:16px;background:var(--surface-1);margin:12px 0;min-width:0;overflow-wrap:anywhere}
.experience-quote p{line-height:1.8;font-size:15px}
.experience-quote small{display:block;margin-top:10px;color:var(--muted)}
.category-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:24px}
.category-links a{padding:18px;border:1px solid var(--line);border-radius:12px;background:var(--surface-1);color:var(--text-secondary);display:flex;justify-content:space-between;gap:15px;font-size:13px}
.category-links a span{color:var(--accent-ghost)}
.category-links a:hover{background:var(--surface-2);border-color:var(--accent-ghost)}
.build-banner{background:radial-gradient(ellipse at 0 0,var(--glow),transparent 65%),var(--surface-1);border:1px solid var(--line);border-radius:22px;padding:42px;display:grid;grid-template-columns:1.2fr 1fr;gap:65px;margin:25px 0 60px}
.build-banner p{font-size:14px;color:var(--muted);line-height:1.8}
.build-banner h3{font-size:22px;color:var(--accent-ghost)}
.quiet-state{grid-column:1/-1;border:1px dashed var(--line);background:var(--surface-1);border-radius:16px;padding:30px;color:var(--muted);max-width:100%}
.quiet-state h3{color:var(--ink)}
.quiet-state p{line-height:1.8}
.public-footer{border-top:1px solid var(--line);padding:35px 0 45px;color:var(--muted);font-size:12px}
.public-footer p{max-width:640px;line-height:1.7}
.onboarding-card{max-width:650px;margin:50px auto;padding:30px;background:var(--paper);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);overflow-wrap:anywhere}
.onboarding-card h1{font-size:30px}
.onboarding-card p{line-height:1.8}
.location-page h2{font-size:21px;margin-top:30px}
.location-page .story-metrics{padding:18px 0;margin-bottom:20px;border-block:1px solid var(--line)}
.pagination{display:flex;align-items:center;flex-wrap:wrap;gap:25px;padding-top:20px}
.pagination a{min-height:44px;display:inline-flex;align-items:center}
.source-list{list-style:none;padding:0}
.source-list li{padding:16px 0;border-bottom:1px solid var(--line)}
.source-list small{display:block;margin-top:6px;color:var(--muted)}
@media(max-width:1100px) and (min-width:761px){
  .public-header{flex-wrap:wrap}
  .home-hero{gap:30px}
  .home-hero .button{flex-basis:100%}
}
@media(max-width:760px){
  .public-shell{padding:0 20px calc(85px + env(safe-area-inset-bottom))}
  .public-header{padding:23px 0}
  .public-header nav{position:fixed;bottom:0;left:0;right:0;z-index:1500;background:var(--nav-surface);padding:8px 8px calc(8px + env(safe-area-inset-bottom));justify-content:space-around;gap:2px;border-top:1px solid var(--line);box-shadow:var(--shadow)}
  .public-header nav a{flex:1;flex-direction:column;justify-content:center;font-size:10px;gap:5px;padding:7px 2px;min-height:54px}
  .public-header nav .icon{width:21px;height:21px}
  .public-header .account-brand{font-size:21px}
  .home-hero{grid-template-columns:minmax(0,1fr);gap:32px;padding:36px 0}
  .home-hero:before{inset:0}
  .home-hero h2{font-size:clamp(38px,10.5vw,52px);letter-spacing:-1.7px}
  .home-hero h1{margin-top:17px}
  .home-hero p:not(.eyebrow){font-size:15px}
  .home-hero .button{flex-basis:100%}
  .hero-atlas{min-height:290px;border-radius:100px 100px 22px 22px}
  .atlas-label{top:28px;font-size:8px;letter-spacing:1.5px}
  .atlas-caption{bottom:15px;padding:13px;left:16px;right:16px}
  .home-section{padding:30px 0}
  .home-section-head{align-items:flex-start;flex-direction:column;gap:6px}
  .home-section h2,.build-banner h2{font-size:25px}
  .story-grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .story-card{display:grid;grid-template-columns:80px minmax(0,1fr)}
  .story-art{height:100%;min-height:155px}
  .story-art small{display:none}
  .story-copy{padding:18px}
  .story-copy h3{font-size:17px}
  .story-copy p{min-height:0}
  .story-orbit{font-size:44px}
  .story-orbit .icon{width:36px;height:36px}
  .category-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .category-links a{font-size:12px;padding:14px;gap:7px}
  .build-banner{grid-template-columns:minmax(0,1fr);padding:25px;gap:24px;margin-bottom:30px}
  .onboarding-card{padding:22px;margin:25px auto}
  .onboarding-card h1{font-size:25px}
}

/* Shared contribution forms and photographs. */
.content-editor { max-width: 850px; margin: 2rem auto; }
.category-picker, .media-editor { border: 1px solid var(--line); border-radius: 12px; padding: 1rem; margin: 1rem 0; }
.category-chip { display: inline-flex; align-items: center; gap: .55rem; min-height: 48px; padding: .5rem .85rem; margin: .25rem; border: 1px solid var(--control-border); border-radius: 12px; cursor: pointer; }
.category-chip:has(input:checked) { background: var(--lilac); border-color: var(--purple-dark); color: var(--ink); box-shadow: inset 0 0 0 1px var(--purple-dark); }
.category-chip:focus-within { outline: 3px solid var(--focus); outline-offset: 3px; }
.category-chip input { width: 18px; height: 18px; accent-color: var(--purple-dark); }
.photo-gallery { display: flex; flex-wrap: wrap; gap: 1rem; margin: 1rem 0; }
.photo-gallery figure { margin: 0; flex: 1 1 160px; max-width: 320px; }
.photo-gallery img, .image-edit img { display: block; max-width: 100%; width: 100%; height: auto; max-height: 260px; object-fit: contain; border-radius: 10px; }
.photo-gallery > a { max-width: 100%; }
.photo-gallery figcaption { margin-top: .5rem; overflow-wrap: anywhere; }
.image-edit { border-bottom: 1px solid var(--line); padding: 1rem 0; }
.image-edit img { width: 240px; }
.story-cover { width: 100%; height: 180px; object-fit: cover; }
.place-visual img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.detail-hero > img { width: 100%; height: 100%; object-fit: cover; }
.content-editor .button { min-height: 48px; }
.content-editor input[type=file] { max-width: 100%; }
.content-editor details { overflow-wrap: anywhere; }
@media (max-width: 600px) { .content-editor { margin: 1rem; padding: 1rem; } .category-chip { margin: .2rem 0; } .build-banner .button { display: flex; margin: .75rem 0; justify-content: center; } }

.category-picker { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr)); gap: .5rem; }
.category-picker .category-chip { margin: 0; padding: .5rem; }
.category-chip input { flex: 0 0 18px; }
.category-chip span { min-width: 0; overflow-wrap: normal; }
.content-editor .modal-form { padding: 0; }
.content-editor [hidden] { display: none; }
