/* Grave finder, ported from the Hallan mock. Scoped to .gy-app so the theme is untouched.
   Type follows the Tailwind scale used by the theme: xs 12, sm 14, base 16, lg 18, xl 20, 2xl 24, 3xl 30. */
.gy-app{--gy-ink:#27272a;--gy-navy:#18181b;--gy-line:#e4e4e7;--gy-side:#f4f4f5;font-family:var(--font-sans,"Mona Sans",system-ui,sans-serif);color:var(--gy-ink);background:#fafafa;font-size:14px;line-height:20px;height:calc(100dvh - var(--gy-top,88px));min-height:520px;display:flex;flex-direction:column}
.gy-app *{box-sizing:border-box}
.gy-app [hidden]{display:none!important}
.gy-app button,.gy-app input,.gy-app textarea{font:inherit}
.gy-app button,.gy-app a,.gy-app input,.gy-app textarea{touch-action:manipulation}
.gy-app button,.gy-app a{-webkit-tap-highlight-color:transparent}
.gy-app button{cursor:pointer}
.gy-app button:disabled{opacity:.5;cursor:default}
.gy-app a{color:#18181b}
.gy-app p{margin:0}
/* Focus: match the theme's inputs (black border + 1px ring) and use a black outline for buttons/links */
.gy-app button:focus-visible,.gy-app a:focus-visible,.gy-app summary:focus-visible{outline:2px solid #18181b;outline-offset:2px}
.gy-app label input:focus,.gy-app label textarea:focus{outline:2px solid transparent;border-color:#18181b!important;box-shadow:0 0 0 1px #18181b!important}

/* Undo theme-wide !important form/button rules */
.gy-app button[type=submit],.gy-app button{text-transform:none}

.gy-workspace{display:grid;grid-template-columns:360px minmax(0,1fr);flex:1;min-height:0}
.gy-app aside{background:var(--gy-side);padding:20px;overflow-y:auto;border-right:1px solid var(--gy-line)}

.gy-back{display:inline-block;align-self:flex-start;font-size:14px;line-height:20px;font-weight:600;text-decoration:none;margin:0 0 12px}
.gy-app .gy-back{color:#18181b}
.gy-back:hover{text-decoration:underline}
.gy-tabs{position:absolute;z-index:500;top:12px;left:12px;display:flex;gap:2px;padding:4px;border-radius:9px;background:#18181bbf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 2px 8px #18181b33}
.gy-app .gy-tabs a{padding:6px 10px;font-size:12px;line-height:16px;font-weight:600;text-decoration:none;border-radius:6px;color:#ffffffb3;white-space:nowrap}
.gy-app .gy-tabs a:hover{color:#fff}
.gy-app .gy-tabs a.active{background:#ffffff2e;color:#fff;font-weight:600}

.gy-app h1{font-family:var(--font-serif,Georgia,serif);font-size:30px;line-height:36px;font-weight:400;margin:0 0 6px;color:var(--gy-ink)}
.gy-app h2{font-family:var(--font-serif,Georgia,serif);font-size:20px;line-height:28px;font-weight:400;margin:0 0 10px;color:var(--gy-ink)}
.gy-app .intro{font-size:14px;line-height:20px;color:#71717a;margin:0 0 16px}
.gy-app .hint{font-size:14px;line-height:20px;color:#71717a;margin:8px 0 12px}
.gy-app .optional{font-weight:normal;color:#71717a;font-size:14px}

.gy-app .search{display:flex;align-items:center;border:1px solid #d4d4d8;border-radius:8px;padding-left:12px;gap:4px;margin-bottom:8px;background:#fff}
/* 16px keeps iOS from zooming into the field */
.gy-app .search input{min-width:0;border:0!important;border-radius:0!important;padding:10px 0!important;background:none;flex:1;font-size:16px;line-height:24px;outline-offset:0}
.gy-app .search input::-webkit-search-cancel-button{display:none}
.gy-app .search input:focus{outline:2px solid transparent;box-shadow:none!important}
.gy-app .search:focus-within{border-color:#18181b;box-shadow:0 0 0 1px #18181b}
.gy-app .search button:focus-visible{outline-offset:-4px}
.gy-app .search button,.gy-app .search button[type=submit]{width:44px;min-height:44px;display:grid;place-items:center;padding:10px!important;border:0!important;background:none!important;color:var(--gy-navy)!important;border-radius:8px!important}
.gy-app .search button svg{width:20px;height:20px}

.gy-app .gy-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px!important;min-height:44px;border-radius:8px!important;font-weight:600!important;font-size:14px!important;line-height:20px!important;transition:background .15s}
.gy-app .gy-btn svg{width:18px;height:18px;flex-shrink:0}
.gy-app .gy-btn.primary{background:var(--gy-navy)!important;color:#fff!important;border:1px solid var(--gy-navy)!important}
.gy-app .gy-btn.primary:hover:not(:disabled){background:#3f3f46!important}
.gy-app .gy-btn.secondary{background:#fff!important;color:var(--gy-navy)!important;border:1px solid #d4d4d8!important}
.gy-app .gy-btn.secondary:hover:not(:disabled){background:#f4f4f5!important}
.gy-app .full{width:100%}

.gy-app .grave-list{display:grid;gap:6px}
.gy-app .result{width:100%;display:flex;align-items:center;gap:10px;border:1px solid #e4e4e7;background:#fff;text-align:left;color:#27272a;padding:10px 12px;border-radius:8px;transition:border-color .15s}
.gy-app .result:hover{border-color:#a1a1aa}
.gy-app .result-active{border-color:#18181b}
.gy-app .result span{min-width:0}
.gy-app .result strong{font-size:14px;line-height:20px;font-weight:600;display:block;overflow-wrap:anywhere}
.gy-app .result small{font-size:12px;line-height:16px;color:#71717a;display:block;margin-top:2px}
.gy-app .result svg{flex-shrink:0;width:18px;height:18px}
.gy-app .grave-browser{margin-top:20px}
.gy-app .grave-browser h2{margin:0 0 8px}
.gy-app .pagination{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:10px}
.gy-app .pagination .gy-btn{font-size:14px!important;min-height:36px;padding:6px 12px!important}
.gy-app .pagination span{font-size:14px;white-space:nowrap;color:#52525b}

.gy-app label{display:block;font-size:14px!important;line-height:20px;font-weight:600!important;margin:14px 0;color:var(--gy-ink)!important}
.gy-app label input,.gy-app label textarea{display:block;width:100%;border:1px solid #d4d4d8!important;border-radius:6px!important;padding:10px 12px!important;margin-top:6px;background:#fff;font-weight:normal;font-size:16px;line-height:24px;color:var(--gy-ink);min-height:44px}
.gy-app textarea{resize:vertical}
.gy-app .entry-form{margin-top:20px;border-top:1px solid #e4e4e7;padding-top:16px}
.gy-app .location-retry{margin:0 0 12px}
.gy-app .notice{padding:10px 12px;background:#fff;border-left:3px solid #3f3f46;border-radius:4px;font-size:14px;line-height:20px;margin-top:16px}

.gy-app .map-panel{position:relative;isolation:isolate;overflow:hidden;min-width:0;background:#e4e4e7}
.gy-app .map{width:100%;height:100%;position:absolute;inset:0}
.gy-app .map-error,.gy-app .map-loading{position:absolute;z-index:500;top:60px;left:12px;right:12px;padding:12px;background:#fff;border-radius:8px;font-size:14px}

.gy-app .grave-icon,.gy-app .draft-icon{display:grid!important;place-items:center;background:none;border:0;color:var(--gy-navy)}
.gy-app .grave-icon svg,.gy-app .draft-icon svg{width:32px;height:40px;filter:drop-shadow(0 2px 3px #0005)}
.gy-app .grave-icon.chosen,.gy-app .draft-icon{color:#bb650d}
/* Zoom: small translucent black buttons to match the tabs */
.gy-app .leaflet-touch .leaflet-control-zoom,.gy-app .leaflet-control-zoom{border:0;border-radius:9px;padding:4px;background:#18181bbf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 2px 8px #18181b33;display:flex;flex-direction:column;gap:2px}
.gy-app .leaflet-control-zoom a,.gy-app .leaflet-touch .leaflet-control-zoom a{display:flex;align-items:center;justify-content:center;width:28px;height:28px;line-height:1;font-size:18px;font-weight:400;border:0;border-radius:6px;background:transparent;color:#fff;text-indent:0}
.gy-app .leaflet-control-zoom a:hover{background:#ffffff2e;color:#fff}
.gy-app .leaflet-control-zoom a.leaflet-disabled{background:transparent;color:#ffffff59}
.gy-app .leaflet-control-zoom a span{display:block;line-height:1;transform:translateY(-1px)}
.gy-app .leaflet-top.leaflet-right .leaflet-control{margin:12px 12px 0 0}
.gy-app .leaflet-popup-content{font-family:inherit;font-size:14px;line-height:20px}
.gy-app .leaflet-popup-content p{margin:4px 0;white-space:pre-wrap}
.gy-app .leaflet-container a.leaflet-popup-close-button{width:32px;height:32px;line-height:30px;font-size:22px}
.gy-app .leaflet-popup-content-wrapper{padding-right:16px}
/* OpenStreetMap credit lives at the foot of the sidebar rather than on the map */
.gy-app aside{display:flex;flex-direction:column}
.gy-credit{margin-top:auto!important;padding-top:20px;font-size:12px;line-height:16px;color:#a1a1aa}
.gy-app .gy-credit a{color:inherit;text-decoration:underline}

/* Selected grave card (desktop overlay, anchored to the pin) */
.gy-app .walking-top{display:none}
.gy-app .walking-card{display:none}
.gy-app .walking-card.preview-card{display:block;position:absolute;z-index:600;bottom:24px;left:12px;width:min(320px,calc(100% - 24px));border-radius:10px;background:#fff;padding:14px;box-shadow:0 4px 20px #18181b26}
.gy-app .walking-card.preview-card.is-anchored{bottom:auto;transition:opacity .15s}
.gy-app .walking-card.preview-card.is-anchored.is-settling{opacity:0;pointer-events:none;transition:none}
.gy-app .walking-card.preview-card:is(.is-above,.is-below)::before{content:"";position:absolute;left:var(--gy-arrow,50%);width:12px;height:12px;background:#fff;transform:translateX(-50%) rotate(45deg);box-shadow:-2px -2px 4px #18181b0d}
.gy-app .walking-card.preview-card.is-below::before{top:-6px}
.gy-app .walking-card.preview-card.is-above::before{bottom:-6px;box-shadow:2px 2px 4px #18181b0d}
.gy-app .walking-person{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:16px;line-height:24px}
.gy-app .walking-person strong{font-weight:600;overflow-wrap:anywhere}
.gy-app .walking-person strong a{text-decoration:none}
.gy-app .walking-person strong a:hover{text-decoration:underline}
.gy-app .gy-remember{margin-top:8px}
.gy-app .walking-person span{font-size:14px;flex-shrink:0;color:#52525b}
.gy-app .overlay-details{font-size:14px;line-height:20px;color:#52525b;white-space:pre-wrap;margin:0 0 12px}
.gy-app .mobile-details{display:none}
.gy-app .walking-metrics{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.gy-app .walking-metrics>strong{font-family:var(--font-serif,Georgia,serif);font-weight:400;font-size:24px;line-height:32px;color:var(--gy-navy);white-space:nowrap}
.gy-app .walking-metrics>span{display:flex;align-items:center;gap:6px;font-size:16px;color:var(--gy-navy);white-space:nowrap}
.gy-app .walking-metrics svg{width:20px;height:20px}
.gy-app .live-compass{flex-shrink:0;transform-origin:center}

/* Mobile */
@media(max-width:760px){
  .gy-app{height:auto;min-height:0;display:block}
  .gy-workspace{display:flex;flex-direction:column}
  .gy-app aside{display:contents}
  .gy-back{order:-2;margin:0;padding:12px 16px 0;background:var(--gy-side)}
  .gy-app h1{font-size:24px;line-height:32px}

  /* Find a grave */
  .finder-page .finder-controls{order:0;display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;align-items:center;padding:8px 16px 12px;background:var(--gy-side)}
  .finder-page .finder-controls>h1{grid-column:1/-1;margin:0}
  .finder-page .finder-controls>.intro{display:none}
  .finder-page .search{margin:0;min-height:44px}
  .finder-page .search input{width:100%}
  .finder-page .search button{width:40px;flex-shrink:0}
  .finder-page .show-location{width:44px;padding:10px!important}
  .finder-page .show-location span{display:none}
  .finder-page .map-panel{order:1;height:auto;min-height:0;display:flex;flex-direction:column;border:0}
  .finder-page .map-panel>.map{position:relative;inset:auto;width:100%;height:48dvh;min-height:300px;flex-shrink:0}
  .finder-page .walking-card.preview-card{position:relative;inset:auto;width:auto;margin:0;padding:14px 16px;border-radius:0;background:#fff;box-shadow:none;z-index:auto}
  .finder-page .preview-card .overlay-details,.finder-page .preview-card .walking-metrics{display:none}
  .finder-page .mobile-details{display:block;margin:0 0 10px}
  .gy-app .mobile-details summary{font-size:14px;line-height:20px;cursor:pointer;color:#18181b;padding:4px 0}
  .gy-app .mobile-details p{font-size:14px;line-height:20px;white-space:pre-wrap;margin:4px 0 8px;color:#52525b}
  .finder-page .grave-browser{order:2;margin:0;padding:16px;background:var(--gy-side)}
  .gy-app .pagination{width:100%}

  /* Walking mode: full-screen map above the theme header and admin bar */
  .gy-app.walking-mode{position:fixed;inset:0;height:100dvh;z-index:100000;background:#e4e4e7;overflow:hidden}
  .walking-mode .gy-tabs,.walking-mode .finder-controls,.walking-mode .grave-browser{display:none}
  .walking-mode .gy-workspace{position:absolute;inset:0;display:block;height:100%}
  .walking-mode .map-panel{position:absolute;inset:0;height:100%;min-height:0;border:0}
  .walking-mode .map-panel>.map{position:absolute;inset:0;height:100%;min-height:0}
  .walking-mode .leaflet-top{top:calc(12px + env(safe-area-inset-top))}
  .walking-mode .leaflet-right{right:12px}
  .walking-mode .walking-top{position:absolute;z-index:600;left:12px;top:calc(12px + env(safe-area-inset-top));display:flex;gap:8px}
  .walking-top .gy-btn{box-shadow:0 2px 10px #18181b20;padding:10px 12px!important}
  .walking-mode .walking-card{display:block;position:absolute;z-index:600;left:12px;right:12px;bottom:calc(24px + env(safe-area-inset-bottom));padding:16px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #18181b33;max-height:40dvh;overflow-y:auto}
  .walking-mode .walking-metrics{margin-bottom:0}
  .walking-mode .walking-metrics>strong{font-size:30px;line-height:36px}
  .walking-status{font-size:16px;color:#52525b;margin:0}
  .walking-error p{font-size:14px;line-height:20px;margin:8px 0}
  .gy-credit{order:9;margin:0!important;padding:12px 16px 16px;background:var(--gy-side)}
  .walking-mode .gy-credit{display:block;position:absolute;z-index:500;right:8px;top:calc(76px + env(safe-area-inset-top));padding:2px 6px;border-radius:4px;background:#ffffffcc;font-size:10px}

  /* Add a grave */
  .admin-page .admin-start{order:0;padding:12px 16px 16px;background:var(--gy-side)}
  .admin-page .admin-start .intro{margin-bottom:12px}
  .admin-page .map-panel{order:1;height:45dvh;min-height:300px}
  .admin-page .entry-form{order:2;margin:0;padding:16px;border-top:0;background:var(--gy-side)}
  .admin-page .notice{order:3;margin:12px 16px}
}
