    :root {
      color-scheme: light;
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      color: #18352d;
      background: #f7f7f2;
      font-synthesis: none;
      text-rendering: optimizeLegibility;
      -webkit-font-smoothing: antialiased;
      --green: #287653;
      --green-dark: #1b5a3e;
      --muted: #75827b;
      --line: #e7e9e1;
      --surface: #fff;
      --surface-soft: #f7faf6;
      --shadow-card: 0 12px 34px rgba(24, 53, 45, .16);
      --radius-card: 16px;
      --space-1: 4px;
      --space-2: 8px;
      --space-3: 12px;
      --space-4: 16px;
    }

    * { box-sizing: border-box; }
    body { min-width: 320px; height: 100vh; height: 100dvh; min-height: 0; margin: 0; overflow: hidden; }
    button { font: inherit; }
    .app { position: relative; height: 100%; }
    .topbar {
      position: absolute;
      z-index: 700;
      top: 14px;
      left: 16px;
      display: flex;
      align-items: center;
      height: 48px;
      padding: 0;
    }
    .brand { display: flex; align-items: center; gap: 10px; }
    .brand-mark { display: grid; width: 48px; height: 48px; place-items: center; color: var(--green); filter: drop-shadow(0 2px 5px rgba(255,255,255,.85)); }
    .brand-mark svg { width: 40px; height: 40px; stroke-width: 2.2; }
    .auth-controls { position: fixed; z-index: 710; top: 16px; right: 16px; display: flex; align-items: center; }
    .profile-button { display: grid; width: 42px; height: 42px; padding: 0; place-items: center; border: 1px solid #dce7dd; border-radius: 50%; color: var(--green-dark); background: rgba(255,255,255,.96); box-shadow: 0 4px 16px rgba(24,53,45,.1); cursor: pointer; }
    .profile-button:hover { border-color: #b8d2c1; background: #f3f8f3; }
    .profile-button:focus-visible, .account-signout:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
    .profile-button svg { width: 23px; height: 23px; }
    .auth-dialog { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 18px; background: rgba(18,38,30,.42); }
    .auth-dialog[hidden] { display: none; }
    .auth-dialog.account-open { place-items: start end; padding: 68px 16px 16px; background: transparent; }
    .auth-card { position: relative; width: min(520px, 100%); max-height: min(90dvh, 720px); overflow-y: auto; padding: 26px; border: 1px solid var(--line); border-radius: 18px; background: #fff; box-shadow: var(--shadow-card); }
    .auth-view { display: grid; gap: 12px; }
    .auth-view[hidden] { display: none; }
    .auth-view h2 { margin: 0; padding-right: 26px; font-size: 20px; letter-spacing: -.3px; }
    .auth-view p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
    .auth-view label { color: #385443; font-size: 12px; font-weight: 700; }
    .auth-view input { width: 100%; min-height: 44px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; color: #284437; font: inherit; font-size: 13px; }
    .auth-view .auth-message:empty { display: none; }
    .auth-message { white-space: pre-line; }
    .account-view { gap: 16px; }
    .account-heading-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-right: 26px; }
    .account-eyebrow { margin-bottom: 0 !important; color: var(--green) !important; font-size: 12px !important; font-weight: 750; letter-spacing: .2px; }
    .account-plan { flex: 0 0 auto; padding: 4px 8px; border: 1px solid #dce7dd; border-radius: 999px; color: #355747; background: #f3f8f3; font-size: 10px; font-weight: 750; }
    .account-plan.premium { border-color: #eed89d; color: #805c0a; background: #fff8e6; }
    .account-identity { display: flex; min-width: 0; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid #e6ece5; border-radius: 12px; background: #f7faf6; }
    .account-identity[hidden] { display: none; }
    .account-avatar { display: grid; width: 36px; height: 36px; flex: 0 0 36px; place-items: center; border-radius: 11px; color: #fff; background: linear-gradient(145deg, #45946c, #236247); font-size: 15px; font-weight: 750; text-transform: uppercase; }
    .account-email { min-width: 0; margin: 0; overflow-wrap: anywhere; font-size: 12px !important; line-height: 1.4 !important; }
    .account-email-local { color: #294b39; font-weight: 750; }
    .account-email-domain { color: #718078; font-weight: 500; }
    .premium-card { display: grid; gap: 9px; padding: 12px; border: 1px solid #e8e5d7; border-radius: 12px; background: linear-gradient(135deg, #fffdf6, #f8faf5); }
    .premium-card[hidden] { display: none; }
    .premium-card-heading { display: flex; align-items: flex-start; gap: 9px; }
    .premium-card-icon { display: grid; width: 30px; height: 30px; flex: 0 0 30px; place-items: center; border-radius: 9px; color: #98721c; background: #fff2c9; }
    .premium-card-icon svg { width: 18px; height: 18px; }
    .premium-card h3 { margin: 1px 0 3px; color: #344a3c; font-size: 13px; }
    .premium-card-heading p { font-size: 11px; }
    .premium-feature-list { display: grid; gap: 6px; margin: 0; padding: 0 0 0 17px; color: #52645a; font-size: 11px; line-height: 1.4; }
    .premium-unlock-button { display: flex; width: 100%; min-height: 40px; align-items: center; justify-content: center; gap: 7px; padding: 8px 12px; border: 0; border-radius: 10px; color: #573d07; background: #f5d875; box-shadow: 0 3px 10px rgba(111, 84, 20, .14); cursor: pointer; font-size: 12px; font-weight: 750; }
    .premium-unlock-button:hover { background: #f0ca55; }
    .premium-unlock-button:focus-visible, .spot-premium-button:focus-visible { outline: 2px solid #98721c; outline-offset: 2px; }
    .premium-unlock-button svg { width: 17px; height: 17px; }
    .premium-unlock-button[hidden] { display: none; }
    .account-signout { min-height: 42px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 10px; color: #52645a; background: #fff; cursor: pointer; font-size: 12px; font-weight: 700; }
    .account-signout:hover { border-color: #d3ded5; background: #f7faf6; }
    .auth-close { position: absolute; top: 9px; right: 10px; width: 34px; height: 34px; border: 0; border-radius: 8px; color: #52645a; background: transparent; cursor: pointer; font-size: 23px; }
    .auth-close:hover { background: #f3f6f2; }
    .top-note { display: block; padding: 8px 12px; border: 1px solid rgba(231,233,225,.8); border-radius: 999px; color: #355747; background: rgba(255,255,255,.9); box-shadow: 0 4px 16px rgba(24,53,45,.08); font-size: 12px; font-weight: 650; }
    .workspace { position: absolute; inset: 0; min-height: 0; }
    .eyebrow { margin: 0 0 10px; color: var(--green); font-size: 11px; font-weight: 750; letter-spacing: 1.3px; text-transform: uppercase; }
    h1 { margin: 0; font-size: 28px; line-height: 1.13; letter-spacing: -1.1px; }
    .intro { margin: 11px 0 0; color: var(--muted); font-size: 14px; line-height: 1.55; }
    .report-button, .form-action-button {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 9px;
      width: 100%;
      min-height: 47px;
      border: 0;
      border-radius: 12px;
      color: #fff;
      background: var(--green);
      cursor: pointer;
      font-size: 14px;
      font-weight: 700;
      transition: background .15s, transform .15s;
    }
    .report-button:hover, .form-action-button:hover { background: var(--green-dark); }
    .report-button:active, .form-action-button:active { transform: scale(.985); }
    .report-button svg { width: 17px; height: 17px; }
    .hint { margin: 8px 0 0; color: var(--muted); font-size: 12px; text-align: center; }
    .spot-action-button { display: inline-flex; min-height: 30px; align-items: center; justify-content: center; margin-top: 6px; padding: 4px 10px; border: 1px solid #b9dec5; border-radius: 999px; color: #267248; background: #e7f5eb; cursor: pointer; font: inherit; font-size: 11px; font-weight: 750; }
    .spot-action-button:hover:not(:disabled) { border-color: #83b796; background: #d9efdf; }
    .spot-action-button:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
    .spot-action-button:disabled { color: #267248; background: #e7f5eb; cursor: default; }
    .spot-confirm-count { flex: 0 0 auto; min-width: 18px; text-align: center; }
    .report-form { display: flex; flex-direction: column; gap: 10px; }
    .report-form[hidden] { display: none; }
    .form-note, .photo-location { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.45; }
    .report-form {
      position: absolute;
      z-index: 460;
      bottom: 18px;
      left: 304px;
      width: min(350px, calc(100% - 322px));
      max-height: calc(100% - 100px);
      overflow-y: auto;
      padding: var(--space-4);
      border: 1px solid var(--line);
      border-radius: var(--radius-card);
      background: var(--surface);
      box-shadow: var(--shadow-card);
    }
    .report-form-heading { margin: 0; font-size: 16px; letter-spacing: -.3px; }
    .report-form-subtitle { margin: -5px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
    .report-location { padding: 9px 10px; border-radius: 9px; color: #405f4d; background: #edf4eb; font-size: 11px; }
    .spot-classification { display: grid; gap: 6px; }
    .spot-classification[hidden] { display: none; }
    .visibility-options { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
    .visibility-option { display: flex; min-height: 36px; align-items: center; gap: 7px; padding: 6px 9px; border: 1px solid var(--line); border-radius: 9px; color: #52645a; background: #fff; cursor: pointer; font-size: 11px; font-weight: 650; }
    .visibility-option:has(input:checked) { border-color: #77ad8c; color: var(--green-dark); background: #eff7f0; }
    .visibility-option input { margin: 0; accent-color: var(--green); }
    .visibility-option:has(input:disabled) { color: #75827b; background: #f7f8f5; cursor: not-allowed; }
    .visibility-option:has(input:disabled):has(input:checked) { border-color: var(--line); color: #75827b; background: #f7f8f5; }
    .premium-lock { display: inline-flex; align-items: center; gap: 3px; margin-left: 3px; color: #8a661c; font-size: 9px; font-weight: 750; white-space: nowrap; }
    .premium-lock svg { width: 12px; height: 12px; }
    .premium-lock[hidden] { display: none; }
    #spot-ttl:disabled { color: #75827b; background: #f7f8f5; cursor: not-allowed; }
    .spot-field-label { color: #385443; font-size: 11px; font-weight: 700; }
    .spot-field { width: 100%; min-height: 40px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; color: #284437; background: #fff; font: inherit; font-size: 12px; }
    .spot-field:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; }
    .spot-body-editor { display: grid; gap: 6px; }
    .spot-body-toolbar { display: flex; flex-wrap: wrap; gap: 4px; }
    .spot-body-toolbar button, .spot-body-youtube button { min-height: 32px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 7px; color: #405f4d; background: #fff; cursor: pointer; font: inherit; font-size: 11px; }
    .spot-body-toolbar button:hover, .spot-body-youtube button:hover { border-color: #b8d2c1; background: #f3f8f3; }
    .spot-body-input { min-height: 88px; max-height: 190px; overflow-y: auto; font-size: 12px; line-height: 1.5; }
    .spot-body-input:empty::before { color: #89948c; content: attr(data-placeholder); pointer-events: none; }
    .spot-body-input iframe { display: block; width: 100%; aspect-ratio: 16 / 9; margin: 6px 0; border: 0; border-radius: 8px; }
    .spot-body-youtube { display: flex; gap: 6px; }
    .spot-body-youtube input { min-width: 0; flex: 1; }
    .spot-body-youtube button { flex: 0 0 auto; }
    .spot-body-content { margin: var(--space-3) 0; color: #465a4d; font-size: 12px; line-height: 1.55; overflow-wrap: anywhere; }
    .spot-body-content p, .spot-body-content div { margin: 0 0 7px; }
    .spot-body-content ul, .spot-body-content ol { margin: 0 0 7px; padding-left: 20px; }
    .spot-body-content blockquote { margin: 7px 0; padding-left: 10px; border-left: 3px solid #b8d2c1; color: #64756a; }
    .spot-body-content a { color: var(--green-dark); text-decoration: underline; }
    .spot-body-content iframe { display: block; width: 100%; aspect-ratio: 16 / 9; margin: 8px 0; border: 0; border-radius: 9px; }
    .overlap-warning { padding: 11px; border: 1px solid #efb6b6; border-radius: 11px; background: #fff0f0; }
    .overlap-warning[hidden] { display: none; }
    .overlap-title { margin: 0; color: #a32929; font-size: 12px; font-weight: 750; }
    .overlap-copy { margin: 5px 0 9px; color: #7d3e3e; font-size: 11px; line-height: 1.45; }
    .overlap-details { display: flex; gap: 10px; align-items: flex-start; }
    .overlap-details[hidden], .overlap-photo[hidden] { display: none; }
    .overlap-photo { width: 76px; height: 76px; flex: 0 0 76px; border-radius: 9px; object-fit: cover; background: #f3dede; }
    .overlap-facts { min-width: 0; color: #633b3b; font-size: 11px; line-height: 1.5; }
    .overlap-facts strong { display: block; color: #763030; font-size: 12px; }
    .photo-field-label { margin: 2px 0 -4px; color: #385443; font-size: 11px; font-weight: 700; }
    .photo-actions { display: grid; grid-template-columns: 1fr; gap: 8px; }
    .photo-action {
      display: flex;
      min-height: 46px;
      align-items: center;
      justify-content: center;
      padding: 9px;
      border: 1px solid var(--line);
      border-radius: 10px;
      color: #284437;
      background: #fff;
      cursor: pointer;
      font-size: 12px;
      font-weight: 700;
      text-align: center;
    }
    .photo-action-camera { border-color: var(--green); color: #fff; background: var(--green); }
    .photo-action-camera:hover { background: var(--green-dark); }
    .photo-action:hover { border-color: #b8d2c1; }
    .photo-action-camera:hover { border-color: var(--green-dark); }
    .photo-action:focus-within { outline: 3px solid rgba(40, 118, 83, .25); outline-offset: 2px; }
    .photo-file-input { display: none !important; }
    .photo-preview { display: block; width: 100%; max-height: 150px; border-radius: 9px; object-fit: cover; }
    .photo-preview[hidden] { display: none; }
    .report-form .form-action-button:disabled { opacity: .55; cursor: not-allowed; }
    .report-mode { cursor: crosshair !important; }
    .map-wrap { position: absolute; inset: 0; background: #e8ece5; }
    #map { position: absolute; inset: 0; width: 100%; height: 100%; }
    .map-layer-control { position: absolute; z-index: 450; top: 72px; right: 16px; display: flex; gap: 4px; padding: 4px; border: 1px solid rgba(25,55,42,.1); border-radius: 12px; background: rgba(255,255,255,.96); box-shadow: 0 4px 16px rgba(24,53,45,.12); }
    .map-layer-toggle { min-height: 34px; padding: 6px 12px; border: 0; border-radius: 8px; color: #385443; background: transparent; cursor: pointer; font-size: 12px; font-weight: 700; }
    .map-layer-toggle[aria-pressed="true"] { color: #fff; background: var(--green); }
    .map-layer-toggle:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
    .private-share-preview .top-note,
    .private-share-preview #locate-me,
    .private-share-preview #report-area,
    .private-share-preview .report-guide,
    .private-share-preview .report-form { display: none; }
    .map-loading {
      position: absolute;
      z-index: 650;
      inset: 0;
      display: grid;
      place-content: center;
      justify-items: center;
      gap: 12px;
      color: #284437;
      background: rgba(247, 250, 246, .78);
      backdrop-filter: blur(2px);
    }
    .map-loading[hidden] { display: none; }
    .map-loading-spinner {
      width: 38px;
      height: 38px;
      border: 3px solid #dce9df;
      border-top-color: var(--green);
      border-radius: 50%;
      animation: map-loading-spin .75s linear infinite;
    }
    .map-loading-label { font-size: 13px; font-weight: 700; }
    @keyframes map-loading-spin { to { transform: rotate(360deg); } }
    @media (prefers-reduced-motion: reduce) {
      .map-loading-spinner { animation-duration: 1.5s; }
    }
    .map-report-button {
      position: absolute;
      z-index: 450;
      bottom: 24px;
      left: 24px;
      display: grid;
      width: 68px;
      height: 68px;
      min-height: 68px;
      align-items: center;
      justify-items: center;
      padding: 0;
      border: 0;
      border-radius: 50%;
      color: #fff;
      background: linear-gradient(135deg, #328b60, #1f6747);
      box-shadow: 0 5px 15px rgba(22, 82, 53, .28), inset 0 1px 0 rgba(255,255,255,.22);
      cursor: pointer;
      transition: box-shadow .18s, transform .18s, background .18s;
    }
    .map-report-button:hover { background: linear-gradient(135deg, #3a9a6c, #1b5a3e); box-shadow: 0 10px 26px rgba(22, 82, 53, .38), inset 0 1px 0 rgba(255,255,255,.25); transform: translateY(-1px); }
    .map-report-button:active { transform: translateY(1px); }
    .map-report-button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
    .map-report-button svg { width: 29px; height: 29px; }
    .map-wrap.report-active .map-report-button { display: none; }
    .report-guide {
      position: absolute;
      z-index: 450;
      top: 70px;
      left: 50%;
      display: flex;
      width: min(410px, calc(100% - 32px));
      align-items: flex-start;
      gap: 12px;
      padding: 15px 17px;
      transform: translateX(-50%);
      border: 1px solid rgba(25, 55, 42, .08);
      border-radius: 15px;
      background: rgba(255, 255, 255, .97);
      box-shadow: 0 8px 28px rgba(28, 48, 35, .15);
      pointer-events: none;
    }
    .report-guide[hidden] { display: none; }
    .report-guide-step {
      display: grid;
      flex: 0 0 30px;
      width: 30px;
      height: 30px;
      place-items: center;
      border-radius: 10px;
      color: #fff;
      background: var(--green);
      font-size: 12px;
      font-weight: 750;
    }
    .report-guide-copy { min-width: 0; }
    .report-guide-title { display: block; color: #203d2e; font-size: 13px; font-weight: 750; }
    .report-guide-text { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.45; }
    .locate-button {
      position: absolute;
      z-index: 400;
      top: auto;
      right: 10px;
      bottom: 92px;
      display: grid;
      width: 44px;
      height: 44px;
      padding: 0;
      place-items: center;
      border: 1px solid transparent;
      border-radius: 50%;
      color: #fff;
      background: var(--green);
      box-shadow: 0 3px 14px rgba(28, 48, 35, .08);
      cursor: pointer;
      transition: background .15s, border-color .15s;
    }
    .locate-button svg { width: 21px; height: 21px; }
    .locate-button:hover { background: var(--green-dark); }
    .locate-button.location-unavailable { color: #fff; background: #bb3b3b; }
    .locate-button.location-unavailable { animation: location-pulse 6s ease-in-out infinite; }
    .locate-button.location-unavailable:hover { background: #9f2e2e; }
    .locate-button.location-checking { color: #284437; border-color: rgba(25, 55, 42, .08); background: rgba(255,255,255,.96); }
    .locate-button.location-checking:hover { background: #fff; }
    .app-notice { position: fixed; z-index: 1000; top: 16px; left: 50%; display: flex; width: min(460px, calc(100% - 28px)); align-items: flex-start; gap: 12px; padding: 13px 14px; transform: translateX(-50%); border: 1px solid #efb8b8; border-radius: 12px; color: #842e2e; background: #fff5f5; box-shadow: 0 8px 26px rgba(63, 30, 30, .2); }
    .app-notice[hidden], .app-notice-password[hidden] { display: none; }
    .app-notice-copy { min-width: 0; flex: 1; }
    .app-notice-message { margin: 0; font-size: 12px; font-weight: 650; line-height: 1.45; }
    .app-notice-info { border-color: #b9dec5; color: #276142; background: #f0f8f1; }
    .app-notice-close { flex: 0 0 auto; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 6px; color: inherit; background: transparent; cursor: pointer; font-size: 19px; line-height: 1; }
    .app-notice-close:hover { background: rgba(0,0,0,.06); }
    .app-notice-password { display: flex; gap: 7px; margin-top: 9px; }
    .app-notice-password input { min-width: 0; flex: 1; min-height: 36px; padding: 7px 9px; border: 1px solid #e4bebe; border-radius: 8px; color: #452f2f; background: #fff; font: inherit; font-size: 12px; }
    .app-notice-password button { padding: 6px 11px; border: 0; border-radius: 8px; color: #fff; background: #a33d3d; cursor: pointer; font: inherit; font-size: 11px; font-weight: 700; }
    .app-notice-password button:hover { background: #842e2e; }
    .spot-popup-error { margin: 6px 0 0; color: #b42323; font-size: 10px; font-weight: 650; line-height: 1.4; overflow-wrap: anywhere; }
    .leaflet-container { font-family: inherit; }
    .leaflet-popup-content-wrapper { border: 1px solid rgba(231,233,225,.9); border-radius: var(--radius-card); box-shadow: var(--shadow-card); }
    .leaflet-popup-content { width: min(360px, calc(100vw - 48px)) !important; max-height: none; overflow: visible; margin: 12px 14px; font-size: 13px; }
    .spot-approval { min-width: min(220px, calc(100vw - 72px)); }
    .spot-approval-title { display: block; margin-bottom: 8px; color: #234333; font-size: 12px; font-weight: 750; }
    .spot-approval-existing { color: #a32929; }
    .spot-approval-detail { display: block; margin: -3px 0 9px; color: #765050; font-size: 10px; line-height: 1.4; }
    .spot-size-control { display: grid; gap: 4px; margin: 0 0 10px; color: #405f4d; font-size: 10px; font-weight: 700; }
    .spot-size-control input { width: 100%; margin: 0; accent-color: var(--green); cursor: pointer; }
    .spot-approval-actions { display: flex; gap: 6px; }
    .spot-approval-actions button { flex: 1; min-height: 32px; padding: 5px 8px; border: 1px solid #dce7dd; border-radius: 8px; color: #385443; background: #fff; cursor: pointer; font: inherit; font-size: 10px; font-weight: 700; }
    .spot-approval-actions .spot-approve { border-color: var(--green); color: #fff; background: var(--green); }
    .spot-details-popup { width: min(360px, calc(100vw - 48px)); color: #284437; }
    .spot-details-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-2); }
    .spot-details-heading-copy { min-width: 0; }
    .spot-details-heading-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 5px; }
    .spot-premium-button { display: grid; width: 40px; height: 40px; padding: 0; place-items: center; border: 1px solid #eed89d; border-radius: 12px; color: #805c0a; background: #fff8e6; cursor: pointer; }
    .spot-premium-button:hover { background: #fff1c8; }
    .spot-premium-button svg { width: 21px; height: 21px; }
    .spot-details-title { display: block; min-width: 0; overflow: hidden; font-size: 15px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
    .spot-details-status { display: grid; flex: 0 0 22px; width: 22px; height: 22px; place-items: center; color: #287653; }
    .spot-details-status.private { color: #7054a1; }
    .spot-details-status svg { display: block; width: 22px; height: 22px; }
    .spot-details-status.review { width: auto; padding: 4px 7px; border-radius: 20px; color: #9a6328; background: #fff1df; font-size: 9px; font-weight: 700; }
    .spot-details-location { margin: 0 0 var(--space-2); color: #64756a; font-size: 12px; line-height: 1.4; overflow-wrap: anywhere; }
    .spot-details-time { margin: 0 0 var(--space-2); padding: 6px 8px; border-radius: 7px; color: #496875; background: #eef6f8; font-size: 12px; line-height: 1.4; }
    .spot-details-user { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin: 3px 0 0; color: #58695e; font-size: 11px; overflow-wrap: anywhere; }
    .spot-details-user strong { color: #365744; font-weight: 750; overflow-wrap: anywhere; }
    .spot-details-user-id { color: #89948c; font-size: 9px; }
    .spot-lifetime-extension { display: grid; gap: var(--space-2); margin: var(--space-3) 0; padding: var(--space-3); border: 1px solid var(--line); border-radius: 12px; background: var(--surface-soft); }
    .spot-lifetime-extension label { color: #405f4d; font-size: 12px; font-weight: 750; }
    .spot-lifetime-extension select, .spot-lifetime-extension input { min-width: 0; width: 100%; min-height: 40px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; color: #284437; background: var(--surface); font: inherit; font-size: 13px; }
    .spot-lifetime-custom { display: flex; gap: 5px; }
    .spot-lifetime-custom[hidden] { display: none; }
    .spot-lifetime-extend-button { min-height: 42px; padding: 9px 12px; border: 0; border-radius: 9px; color: #fff; background: var(--green); cursor: pointer; font: inherit; font-size: 13px; font-weight: 700; }
    .spot-lifetime-extend-button:disabled { opacity: .55; cursor: wait; }
    .spot-details-photos { display: flex; flex-wrap: wrap; gap: 6px; overflow: visible; padding: 1px 0 3px; }
    .spot-details-photo-button { flex: 0 0 64px; width: 64px; height: 64px; overflow: hidden; padding: 0; border: 0; border-radius: 9px; background: #edf1eb; cursor: zoom-in; }
    .spot-details-photo-button:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
    .spot-details-photo-thumbnail { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .15s; }
    .spot-details-photo-button:hover .spot-details-photo-thumbnail { transform: scale(1.06); }
    .spot-photo-contribution { display: flex; align-items: center; gap: 8px; margin-top: 7px; }
    .spot-photo-input { display: none; }
    .spot-photo-add-button, .spot-photo-approve-button { min-height: 34px; padding: 6px 10px; }
    .spot-photo-contribution .spot-community-empty { min-width: 0; }
    .spot-pending-photos { display: grid; gap: 7px; margin: var(--space-2) 0; padding: 9px; border: 1px solid #f0d6a8; border-radius: 10px; background: #fffaf0; }
    .spot-pending-photos-title { margin: 0; color: #76531d; font-size: 11px; font-weight: 750; }
    .spot-pending-photo { display: flex; align-items: center; gap: 8px; }
    .spot-photo-approve-button { margin-left: auto; }
    .photo-lightbox[hidden] { display: none; }
    .photo-lightbox { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 48px 20px 20px; background: rgba(12, 20, 16, .88); }
    .photo-lightbox-image { display: block; max-width: min(100%, 1200px); max-height: 100%; border-radius: 8px; object-fit: contain; box-shadow: 0 8px 36px rgba(0, 0, 0, .35); }
    .photo-lightbox-close { position: absolute; top: max(14px, env(safe-area-inset-top)); right: max(14px, env(safe-area-inset-right)); display: grid; width: 42px; height: 42px; place-items: center; padding: 0; border: 1px solid rgba(255, 255, 255, .45); border-radius: 50%; color: #fff; background: rgba(0, 0, 0, .35); cursor: pointer; font-size: 30px; line-height: 1; }
    .photo-lightbox-close:hover { background: rgba(255, 255, 255, .18); }
    .spot-details-empty { margin: 0; color: #758278; font-size: 12px; }
    .spot-community { display: grid; gap: var(--space-2); margin: var(--space-3) 0; }
    .spot-comments-summary { color: var(--green-dark); cursor: pointer; font-size: 13px; font-weight: 700; }
    .spot-comments-summary:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; }
    .spot-copy-location-icon { display: grid; flex: 0 0 16px; width: 16px; height: 18px; place-items: center; color: var(--green); }
    .spot-copy-location-icon svg { display: block; width: 16px; height: 16px; }
    .spot-comments { display: grid; gap: var(--space-2); overflow: visible; }
    .spot-comment { margin: 0; padding: 8px 10px; border-radius: 10px; color: #52645a; background: var(--surface-soft); font-size: 13px; line-height: 1.45; overflow-wrap: anywhere; }
    .spot-community-empty { margin: 0; color: #758278; font-size: 12px; }
    .spot-community-form { display: flex; gap: var(--space-2); }
    .spot-community-input { min-width: 0; width: 100%; min-height: 42px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; color: #284437; background: var(--surface); font: inherit; font-size: 13px; }
    .spot-community-submit { flex: 0 0 auto; min-width: 54px; min-height: 42px; padding: 8px 12px; border: 0; border-radius: 9px; color: #fff; background: var(--green); cursor: pointer; font: inherit; font-size: 13px; font-weight: 700; }
    .spot-community-submit:disabled { opacity: .55; cursor: wait; }
    .spot-share-controls { display: grid; gap: var(--space-2); }
    .spot-copy-row { display: flex; min-width: 0; align-items: center; gap: var(--space-2); }
    .spot-share-link, .spot-copy-value { display: block; min-width: 0; flex: 1; overflow: hidden; color: var(--green-dark); font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
    .spot-copy-value { color: #64756a; }
    .spot-copy-button { display: grid; flex: 0 0 38px; width: 38px; height: 38px; padding: 0; place-items: center; border: 1px solid #dce7dd; border-radius: 9px; color: var(--green-dark); background: #fff; cursor: pointer; }
    .spot-copy-button:hover { border-color: #b8d2c1; background: #f3f8f3; }
    .spot-copy-button:focus-visible { outline: 2px solid var(--green); outline-offset: 1px; }
    .spot-copy-button svg { width: 17px; height: 17px; }
    .spot-cluster-icon { border: 0; background: transparent; }
    .spot-cluster-badge { display: grid; width: 26px; height: 26px; place-items: center; border: 2px solid rgba(255,255,255,.95); border-radius: 50%; color: #fff; background: #e58a3d; box-shadow: 0 2px 8px rgba(25,55,42,.35); font-size: 10px; font-weight: 800; }
    .spot-cluster-badge.multiple { width: 42px; height: 42px; font-size: 13px; }
    @keyframes location-pulse {
      0%, 62%, 100% { opacity: 1; box-shadow: 0 3px 14px rgba(28, 48, 35, .08); }
      68%, 76% { opacity: .48; box-shadow: 0 0 0 5px rgba(187, 59, 59, .2), 0 4px 16px rgba(28, 48, 35, .12); }
      72%, 80% { opacity: 1; box-shadow: 0 3px 14px rgba(28, 48, 35, .08); }
    }
    @media (prefers-reduced-motion: reduce) {
      .locate-button.location-unavailable { animation-duration: 8s; }
      .map-report-button { transition: none; }
    }
    @media (max-width: 760px) {
      body { min-height: 0; }
      .topbar { top: 8px; left: 8px; height: 48px; padding: 0; }
      .auth-controls { top: 10px; right: 8px; }
      .profile-button { width: 40px; height: 40px; }
      .brand { gap: 7px; }
      .brand-mark { width: 46px; height: 46px; }
      .brand-mark svg { width: 39px; height: 39px; }
      .top-note { max-width: calc(100vw - 120px); padding: 7px 10px; font-size: 11px; }
      .locate-button { right: 10px; bottom: 92px; width: 44px; height: 44px; }
      .map-layer-control { top: 62px; right: 8px; }
      .map-report-button { bottom: max(18px, env(safe-area-inset-bottom)); left: 16px; width: 60px; height: 60px; min-height: 60px; }
      .map-report-button svg { width: 29px; height: 29px; }
      .report-guide { top: 68px; width: min(380px, calc(100% - 24px)); }
      .report-form { bottom: max(10px, env(safe-area-inset-bottom)); left: 8px; width: calc(100% - 16px); max-height: min(72dvh, calc(100% - 130px)); gap: 9px; padding: 14px; border-radius: 18px; }
      .leaflet-popup-content { width: min(360px, calc(100vw - 40px)) !important; max-height: none; overflow: visible; margin: 10px 12px; }
      .spot-details-popup { width: min(360px, calc(100vw - 40px)); }
      .leaflet-popup-close-button { width: 36px !important; height: 36px !important; padding: 9px 10px 0 0 !important; }
    }

    @media (max-width: 380px) {
      .brand-mark { width: 40px; height: 40px; }
      .brand-mark svg { width: 35px; height: 35px; }
      .top-note { max-width: calc(100vw - 112px); font-size: 10px; }
      .auth-dialog { padding: 10px; }
      .auth-dialog.account-open { padding: 58px 8px 8px; }
      .auth-card { padding: 20px 17px; border-radius: 16px; }
      .leaflet-popup-content { width: min(340px, calc(100vw - 36px)) !important; }
      .spot-details-popup { width: min(340px, calc(100vw - 36px)); }
    }
