:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--popover:0 0% 100%;--border:240 5.9% 90%;--input:240 5.9% 90%;--primary:240 5.9% 10%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--ring:240 5.9% 10%;--radius:14px;--shadow:0 10px 35px rgba(15,23,42,.08)}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased}button,input{font:inherit}button{display:inline-flex;align-items:center;justify-content:center;border:1px solid hsl(var(--primary));border-radius:calc(var(--radius) - 2px);padding:11px 14px;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:650;cursor:pointer;min-height:42px}button.secondary{background:hsl(var(--secondary));color:hsl(var(--secondary-foreground));border-color:hsl(var(--border))}button.ghost{background:transparent;color:hsl(var(--muted-foreground));border-color:transparent}button:active{transform:translateY(1px)}.hidden{display:none!important}.screen{min-height:100dvh}.stack{display:grid;gap:14px}.auth{display:grid;align-content:center;gap:24px;padding:24px;max-width:520px;margin:0 auto}.brand{display:grid;gap:16px}.brand h1{font-size:34px;letter-spacing:-.04em;line-height:1.02;margin:0}.brand p{margin:0;color:hsl(var(--muted-foreground));line-height:1.45}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;font-weight:750;color:hsl(var(--muted-foreground));margin:0 0 6px}.logo{display:grid;place-items:center;width:52px;height:52px;border-radius:18px;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-weight:850;font-size:22px}.card,.modal-card{background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:16px}.modal-card{padding:18px}label{display:grid;gap:7px;color:hsl(var(--foreground));font-size:14px;font-weight:600}input{width:100%;border:1px solid hsl(var(--input));background:hsl(var(--background));color:hsl(var(--foreground));border-radius:calc(var(--radius) - 4px);padding:11px 12px;outline:none}input:focus{box-shadow:0 0 0 3px hsl(var(--ring)/.12);border-color:hsl(var(--ring))}.msg{min-height:20px;color:#dc2626;margin:0}.muted{color:hsl(var(--muted-foreground))}.compact{margin:0;line-height:1.4}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.app-shell{display:grid;grid-template-rows:auto 44dvh 1fr;min-height:100dvh}.topbar{display:flex;justify-content:space-between;align-items:center;padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px;border-bottom:1px solid hsl(var(--border));background:hsl(var(--background)/.92);backdrop-filter:blur(10px);z-index:700}.topbar span{display:block;color:hsl(var(--muted-foreground));font-size:12px;margin-top:2px}.map-wrap{position:relative;min-height:280px;border-bottom:1px solid hsl(var(--border));overflow:hidden}#map{height:100%;min-height:280px;background:hsl(var(--muted))}.panel{padding:14px;display:grid;gap:14px;background:hsl(var(--background));min-height:0}.actions{display:grid;grid-template-columns:1fr 1.4fr;gap:10px}.space-list{display:grid;gap:12px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}.empty p{margin:8px 0 0}.space-card{display:grid;gap:12px}.space-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.space-head h3{font-size:17px;margin:0 0 5px;letter-spacing:-.02em}.score-badge{white-space:nowrap;border:1px solid hsl(var(--border));background:hsl(var(--secondary));border-radius:999px;padding:6px 10px;font-weight:800;font-size:13px}.meta-row{display:flex;flex-wrap:wrap;gap:8px 12px;color:hsl(var(--muted-foreground));font-size:12px}.button-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.button-row button{padding:9px 8px;font-size:13px;min-height:38px}.map-pin{width:34px;height:34px;border-radius:999px;display:grid;place-items:center;background:var(--pin);color:white;font-weight:900;border:3px solid white;box-shadow:0 8px 24px rgba(0,0,0,.25);font-size:11px}.leaflet-control-layers,.leaflet-bar a{border-color:hsl(var(--border))!important}.leaflet-control-layers{border-radius:12px!important;box-shadow:var(--shadow)!important}dialog{border:0;padding:0;background:transparent;color:hsl(var(--foreground));width:min(94vw,620px)}dialog::backdrop{background:rgba(15,23,42,.55);backdrop-filter:blur(5px)}.modal-card{max-height:90dvh;overflow:auto;margin:0 auto}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal-head h2{font-size:22px;line-height:1.1;margin:0;letter-spacing:-.03em}.icon-btn{width:36px;height:36px;min-height:36px;border-radius:999px;padding:0;background:hsl(var(--secondary));color:hsl(var(--foreground));border-color:hsl(var(--border));font-size:22px;font-weight:500}.picker-toolbar{display:flex;align-items:center;gap:10px;justify-content:space-between}#spacePickerMap{height:310px;border:1px solid hsl(var(--border));border-radius:var(--radius);overflow:hidden;background:hsl(var(--muted))}menu{display:grid;grid-template-columns:1fr 1.3fr;gap:10px;padding:0;margin:4px 0 0}.criterion{border:1px solid hsl(var(--border));background:hsl(var(--background));border-radius:var(--radius);padding:12px;margin:10px 0;display:grid;gap:10px}.criterion-title{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.criterion-title strong{font-size:15px;letter-spacing:-.01em}.help{width:28px;height:28px;min-height:28px;padding:0;border-radius:999px;background:hsl(var(--secondary));border-color:hsl(var(--border));color:hsl(var(--muted-foreground));font-weight:800}.hint{display:none;margin:0;color:hsl(var(--muted-foreground));font-size:13px;line-height:1.4}.criterion.show-hint .hint{display:block}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:12px;padding:4px}.segmented button{background:transparent;color:hsl(var(--foreground));border:0;min-height:38px;border-radius:9px}.segmented button.active{background:hsl(var(--background));box-shadow:0 1px 3px rgba(15,23,42,.12);border:1px solid hsl(var(--border))}.criterion-foot{display:flex;justify-content:space-between;gap:10px;color:hsl(var(--muted-foreground));font-size:11px}.rating-modal{padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}@media (min-width:900px){.app-shell{grid-template-columns:1.25fr .75fr;grid-template-rows:auto 1fr}.topbar{grid-column:1/3}.map-wrap{height:auto;min-height:0}.panel{overflow:auto}.auth{padding-top:7vh}.brand h1{font-size:44px}.button-row button{font-size:14px}}@media (max-width:380px){.button-row{grid-template-columns:1fr}.actions{grid-template-columns:1fr}.brand h1{font-size:30px}}

/* Native-app feel + custom map style switch */
html, body, button, input, textarea, select, a, .leaflet-container {
  -webkit-tap-highlight-color: transparent;
}
body {
  overscroll-behavior-y: none;
  -webkit-touch-callout: none;
}
button, .map-style-btn, .segmented button, .space-card, .card {
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
}
button:focus, button:focus-visible, input:focus, input:focus-visible, .leaflet-container:focus {
  outline: none !important;
}
button:focus-visible, input:focus-visible {
  box-shadow: 0 0 0 3px hsl(var(--ring)/.10);
}
.leaflet-control-layers {
  display: none !important;
}
.leaflet-control-zoom a {
  -webkit-tap-highlight-color: transparent;
}
.map-wrap, .picker-map-wrap {
  position: relative;
}
.picker-map-wrap {
  border: 1px solid hsl(var(--border));
  border-radius: var(--radius);
  overflow: hidden;
  background: hsl(var(--muted));
}
.picker-map-wrap #spacePickerMap {
  border: 0;
  border-radius: 0;
}
.map-style-switch {
  position: absolute;
  z-index: 650;
  top: 12px;
  right: 12px;
  display: grid;
  grid-template-columns: repeat(2, minmax(68px, 1fr));
  gap: 3px;
  padding: 4px;
  border: 1px solid rgba(255,255,255,.58);
  border-radius: 15px;
  background: rgba(255,255,255,.86);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  box-shadow: 0 8px 24px rgba(15,23,42,.14);
}
.picker-switch {
  top: 8px;
  right: 8px;
}
.map-style-btn {
  min-height: 30px;
  padding: 6px 9px;
  border: 0;
  border-radius: 11px;
  background: transparent;
  color: #18181b;
  font-size: 12px;
  line-height: 1;
  font-weight: 760;
  white-space: nowrap;
}
.map-style-btn.active {
  background: #18181b;
  color: #fff;
  box-shadow: 0 2px 8px rgba(0,0,0,.16);
}
.map-style-btn:active {
  transform: scale(.98);
}
.button-row {
  grid-template-columns: 1fr 1fr;
}
.button-row.wide-actions {
  grid-template-columns: 1fr 1fr;
}
.button-row button {
  min-width: 0;
}
button.danger, .ghost-danger {
  background: #fff1f2;
  color: #be123c;
  border-color: #fecdd3;
}
@media (min-width:420px) {
  .button-row { grid-template-columns: 1fr 1fr 1fr 1fr; }
}
@media (max-width:360px) {
  .map-style-btn { font-size: 11px; padding-inline: 3px; }
}

/* Participant ratings */
.ratings-panel {
  display: grid;
  gap: 10px;
  margin-top: 4px;
}
.section-title {
  font-size: 13px;
  font-weight: 800;
  color: hsl(var(--muted-foreground));
  text-transform: uppercase;
  letter-spacing: .08em;
}
.ratings-list {
  display: grid;
  gap: 8px;
}
.participant-rating {
  border: 1px solid hsl(var(--border));
  border-radius: var(--radius);
  background: hsl(var(--secondary));
  padding: 12px;
}
.participant-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}
.participant-meta {
  margin-top: 4px;
  color: hsl(var(--muted-foreground));
  font-size: 12px;
}
.participant-rating details {
  margin-top: 8px;
}
.participant-rating summary {
  cursor: pointer;
  color: hsl(var(--foreground));
  font-size: 13px;
  font-weight: 700;
  -webkit-tap-highlight-color: transparent;
}
.rating-breakdown {
  margin-top: 8px;
  color: hsl(var(--muted-foreground));
  font-size: 12px;
  line-height: 1.55;
}


/* Mobile scroll, fullscreen map, profile */
html, body {
  height: 100%;
  overflow: hidden;
}
body.modal-open {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  overflow: hidden;
}
.app-shell {
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  grid-template-rows: auto minmax(220px, 44dvh) minmax(0, 1fr);
}
.top-actions {
  display: flex;
  align-items: center;
  gap: 4px;
}
.top-actions button {
  min-height: 34px;
  padding: 7px 8px;
  font-size: 13px;
}
.panel {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  contain: layout paint;
}
.space-list {
  content-visibility: auto;
  contain-intrinsic-size: 1px 420px;
}
.space-card {
  box-shadow: 0 5px 18px rgba(15,23,42,.055);
}
.map-style-switch {
  grid-template-columns: repeat(2, 30px);
  gap: 2px;
  padding: 3px;
  border-radius: 13px;
}
.map-style-btn {
  width: 30px;
  min-width: 30px;
  min-height: 28px;
  padding: 0;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 850;
}
.map-fullscreen-btn {
  position: absolute;
  z-index: 651;
  top: 12px;
  left: 12px;
  width: 38px;
  min-width: 38px;
  min-height: 38px;
  padding: 0;
  border-radius: 13px;
  border-color: rgba(255,255,255,.58);
  background: rgba(255,255,255,.90);
  color: #18181b;
  box-shadow: 0 8px 24px rgba(15,23,42,.14);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  font-size: 20px;
  line-height: 1;
}
body.map-fullscreen .topbar,
body.map-fullscreen .panel {
  display: none;
}
body.map-fullscreen .app-shell {
  display: block;
  height: 100dvh;
}
body.map-fullscreen .map-wrap {
  position: fixed;
  inset: 0;
  z-index: 2000;
  height: 100dvh;
  min-height: 100dvh;
  border: 0;
}
body.map-fullscreen #map {
  height: 100dvh;
  min-height: 100dvh;
}
body.map-fullscreen .map-fullscreen-btn {
  font-size: 28px;
}
.spaces-notice {
  display: none;
  border: 1px solid #bbf7d0;
  background: #f0fdf4;
  color: #166534;
  border-radius: 999px;
  padding: 8px 11px;
  font-size: 13px;
  font-weight: 750;
}
.spaces-notice.show { display: block; }
.new-space {
  border-color: #86efac;
  animation: newSpacePulse 2.4s ease-out 1;
}
.new-label {
  color: #15803d;
}
@keyframes newSpacePulse {
  0% { background: #f0fdf4; }
  100% { background: hsl(var(--popover)); }
}
@media (max-width: 390px) {
  .top-actions button { font-size: 12px; padding-inline: 6px; }
  .map-style-switch { right: 10px; top: 10px; }
  .map-fullscreen-btn { left: 10px; top: 10px; }
}


/* Map selector popover + site fullscreen */
.icon-top-btn {
  width: 36px;
  min-width: 36px;
  padding-inline: 0 !important;
  font-size: 19px !important;
  color: hsl(var(--foreground)) !important;
}
.map-style-switch {
  position: absolute;
  z-index: 660;
  top: 12px;
  right: 12px;
  display: block;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.map-style-toggle {
  width: 40px;
  min-width: 40px;
  min-height: 40px;
  padding: 0;
  border-radius: 14px;
  border-color: rgba(255,255,255,.62);
  background: rgba(255,255,255,.92);
  color: #18181b;
  box-shadow: 0 8px 24px rgba(15,23,42,.16);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
  font-size: 20px;
}
.map-style-menu {
  position: absolute;
  top: 46px;
  right: 0;
  min-width: 142px;
  display: none;
  gap: 4px;
  padding: 5px;
  border: 1px solid rgba(255,255,255,.62);
  border-radius: 15px;
  background: rgba(255,255,255,.94);
  box-shadow: 0 12px 30px rgba(15,23,42,.18);
  backdrop-filter: blur(16px) saturate(1.15);
  -webkit-backdrop-filter: blur(16px) saturate(1.15);
}
.map-style-switch.open .map-style-menu {
  display: grid;
}
.map-style-menu .map-style-btn {
  width: 100%;
  min-width: 0;
  min-height: 34px;
  justify-content: flex-start;
  padding: 8px 10px;
  border-radius: 11px;
  color: #18181b;
  background: transparent;
  font-size: 13px;
  font-weight: 750;
  text-align: left;
}
.map-style-menu .map-style-btn.active {
  background: #18181b;
  color: #fff;
}
.picker-switch .map-style-menu {
  top: 44px;
}
:fullscreen .app-shell {
  height: 100dvh;
}
:fullscreen .topbar {
  padding-top: calc(10px + env(safe-area-inset-top,0px));
}
body.map-fullscreen .topbar,
body.map-fullscreen .panel {
  display: initial;
}
body.map-fullscreen .map-wrap {
  position: relative;
  inset: auto;
  z-index: auto;
  height: auto;
  min-height: 280px;
  border-bottom: 1px solid hsl(var(--border));
}
@media (max-width: 390px) {
  .map-style-switch { right: 10px; top: 10px; }
  .map-style-toggle { width: 38px; min-width: 38px; min-height: 38px; }
  .map-style-menu { top: 44px; min-width: 136px; }
}

/* Review pass: field stats + quick scoring */
.field-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 10px 0 12px;
}
.field-stats > div {
  border: 1px solid hsl(var(--border));
  border-radius: 14px;
  padding: 10px;
  background: linear-gradient(180deg, #fff, hsl(var(--secondary)));
  box-shadow: 0 5px 18px rgba(15,23,42,.045);
}
.field-stats strong {
  display: block;
  font-size: 21px;
  line-height: 1;
  letter-spacing: -.03em;
}
.field-stats span {
  display: block;
  margin-top: 5px;
  color: hsl(var(--muted-foreground));
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rating-toolbar {
  position: sticky;
  top: -1px;
  z-index: 4;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: center;
  padding: 8px;
  margin: -4px -2px 2px;
  border: 1px solid hsl(var(--border));
  border-radius: 16px;
  background: rgba(255,255,255,.94);
  backdrop-filter: blur(16px) saturate(1.1);
  -webkit-backdrop-filter: blur(16px) saturate(1.1);
}
.rating-total {
  min-width: 74px;
  padding: 9px 10px;
  border-radius: 13px;
  background: #fee2e2;
  color: #991b1b;
  font-weight: 900;
  text-align: center;
}
.rating-total[data-level="mid"] { background: #fef3c7; color: #92400e; }
.rating-total[data-level="good"] { background: #dcfce7; color: #166534; }
.quick-score-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.quick-score-row button {
  min-height: 36px;
  padding: 7px 6px;
  font-size: 12px;
}
.space-card h3 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (min-width: 480px) {
  .field-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* User GPS marker */
.user-location-dot {
  position: relative;
  width: 22px;
  height: 22px;
  border: 3px solid #fff;
  border-radius: 999px;
  background: #2563eb;
  box-shadow: 0 2px 10px rgba(15,23,42,.35), 0 0 0 2px rgba(37,99,235,.22);
}
.user-location-dot::after {
  content: '';
  position: absolute;
  inset: -9px;
  border: 2px solid rgba(37,99,235,.28);
  border-radius: inherit;
  animation: userLocationPulse 1.8s ease-out infinite;
}
@keyframes userLocationPulse {
  0% { transform: scale(.55); opacity: .9; }
  100% { transform: scale(1.55); opacity: 0; }
}

/* Compact mobile create/edit modal */
#spaceDialog {
  max-width: min(92vw, 520px);
  max-height: calc(100dvh - 18px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));
  padding: 0;
  overflow: hidden;
}
#spaceDialog .modal-card {
  max-height: inherit;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  gap: 12px;
  padding-bottom: 0;
}
#spaceDialog .picker-map-wrap #spacePickerMap {
  height: clamp(230px, 38dvh, 330px);
}
#spaceDialog menu {
  position: sticky;
  bottom: 0;
  z-index: 5;
  margin: 0 -1px;
  padding: 10px 0 calc(10px + env(safe-area-inset-bottom,0px));
  background: linear-gradient(to top, hsl(var(--popover)) 84%, hsl(var(--popover)/0));
}
@media (max-height: 760px) {
  #spaceDialog .modal-card { gap: 10px; }
  #spaceDialog .eyebrow { display: none; }
  #spaceDialog .modal-head h2 { font-size: 24px; }
  #spaceDialog .picker-map-wrap #spacePickerMap { height: clamp(210px, 34dvh, 285px); }
  #spaceDialog .compact { font-size: 14px; line-height: 1.4; }
}

/* Photos, badges and place passport */
.cover-photo {
  width: 100%;
  display: block;
  padding: 0;
  border: 0;
  overflow: hidden;
  border-radius: 13px;
  background: hsl(var(--secondary));
  margin-bottom: 10px;
}
.cover-photo img {
  display: block;
  width: 100%;
  height: 148px;
  object-fit: cover;
}
.badge-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 8px 0;
}
.space-badge {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 5px 8px;
  border-radius: 999px;
  background: #f4f4f5;
  color: #3f3f46;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
}
.space-badge.good { background: #dcfce7; color: #166534; }
.space-badge.mid { background: #fef3c7; color: #92400e; }
.space-badge.low { background: #fee2e2; color: #991b1b; }
.space-badge.photo { background: #e0f2fe; color: #075985; }
.space-badge.team { background: #ede9fe; color: #5b21b6; }
.space-badge.near { background: #dbeafe; color: #1d4ed8; }
.space-badge.muted { background: #f4f4f5; color: #71717a; }
.space-passport, .photos-panel {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid hsl(var(--border));
  border-radius: var(--radius);
  background: linear-gradient(180deg, #fff, hsl(var(--secondary)));
}
.passport-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}
.passport-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.passport-grid > div, .passport-insights > div {
  padding: 10px;
  border-radius: 13px;
  background: rgba(255,255,255,.78);
  border: 1px solid hsl(var(--border));
}
.passport-grid span, .passport-insights span {
  display: block;
  margin-bottom: 4px;
  color: hsl(var(--muted-foreground));
  font-size: 11px;
  font-weight: 750;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.passport-grid strong, .passport-insights strong {
  display: block;
  font-size: 13px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.passport-insights {
  display: grid;
  gap: 8px;
}
.photo-gallery {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.photo-card {
  position: relative;
  overflow: hidden;
  border: 1px solid hsl(var(--border));
  border-radius: 13px;
  background: #fff;
}
.photo-card img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}
.photo-meta {
  display: flex;
  justify-content: space-between;
  gap: 6px;
  padding: 6px 8px;
  color: hsl(var(--muted-foreground));
  font-size: 11px;
}
.photo-delete {
  width: 100%;
  min-height: 34px;
  border: 0;
  border-top: 1px solid #fecdd3;
  border-radius: 0;
  background: #fff1f2;
  color: #be123c;
  font-size: 12px;
}
.photo-upload {
  display: grid;
  place-items: center;
  min-height: 48px;
  border: 1px dashed #94a3b8;
  border-radius: 14px;
  background: rgba(255,255,255,.78);
  color: #0f172a;
  font-weight: 850;
  cursor: pointer;
}
.photo-upload input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
@media (min-width: 480px) {
  .photo-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .passport-insights { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
