:root{
  --forest:#1F4A35; --forest-dim:#2E6148; --earth:#C06A3B; --river:#2C6E8E; --amber:#E7B23B;
  --cream:#F6F1E3; --ink:#262420; --ink-soft:#5B5649; --line:#E0D7C3; --panel:#FFFDF8;
  --bg:var(--cream); --danger:#B23B2E; --ok:#2E6148; --warn:#9C6B14;
  --font-display:'Fraunces',Georgia,serif; --font-body:'Work Sans',system-ui,-apple-system,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --shadow:0 1px 2px rgba(38,36,32,.06),0 4px 14px rgba(38,36,32,.08);
}
@media (prefers-color-scheme:dark){
  :root{
    --forest:#6BAE8B; --forest-dim:#4C8A6C; --earth:#E59264; --river:#6FB2D6; --amber:#F0C464;
    --cream:#12160F; --ink:#F1ECDD; --ink-soft:#B6AF9C; --line:#2D3326; --panel:#191E15;
    --bg:var(--cream); --danger:#E07A66; --ok:#6BAE8B; --warn:#E0B24A;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35);
  }
}
*{box-sizing:border-box;}
html,body{margin:0;min-height:100%;}
.rj{font-family:var(--font-body);color:var(--ink);background:var(--bg);min-height:100vh;}
.rj a{color:inherit;}
.rj h1,.rj h2,.rj h3,.rj .rj-display{font-family:var(--font-display);text-wrap:balance;letter-spacing:-.01em;}
.rj .mono{font-family:var(--font-mono);letter-spacing:.01em;}
.rj button{font-family:var(--font-body);cursor:pointer;}
.rj input,.rj select,.rj textarea{font-family:var(--font-body);font-size:.95rem;}
.rj-hidden{display:none!important;}

.rj-shell{max-width:1120px;margin:0 auto;padding:0 18px 90px;}
.rj-topbar{position:sticky;top:0;z-index:600;background:var(--bg);border-bottom:1px solid var(--line);}
.rj-topbar-inner{max-width:1120px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:12px 18px;}
.rj-brand{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:700;font-size:1.22rem;color:var(--forest);white-space:nowrap;text-decoration:none;}
.rj-nav{display:none;gap:4px;margin-left:8px;}
.rj-nav a{padding:8px 12px;border-radius:8px;font-size:.92rem;font-weight:500;color:var(--ink-soft);text-decoration:none;}
.rj-nav a.active{color:var(--forest);background:color-mix(in srgb,var(--forest) 12%,transparent);}
.rj-nav a:hover{color:var(--ink);}
.rj-topbar-spacer{flex:1;}
.rj-cta{background:var(--forest);color:#fff;border:none;border-radius:9px;padding:9px 15px;font-weight:600;font-size:.88rem;box-shadow:var(--shadow);}
.rj-cta:hover{background:var(--forest-dim);}
.rj-avatarbtn{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);overflow:hidden;background:var(--panel);padding:0;flex:none;font-size:1.1rem;display:flex;align-items:center;justify-content:center;}
@media (min-width:860px){.rj-nav{display:flex;}}

.rj-bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:600;display:flex;background:var(--panel);border-top:1px solid var(--line);box-shadow:0 -4px 14px rgba(38,36,32,.08);}
@media (min-width:860px){.rj-bottomnav{display:none;}}
.rj-bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px 10px;color:var(--ink-soft);text-decoration:none;font-size:.66rem;font-weight:600;}
.rj-bottomnav a.active{color:var(--forest);}
.rj-bottomnav svg{width:21px;height:21px;}

.rj-section{margin:26px 0;}
.rj-eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--earth);margin:0 0 6px;}
.rj-h1{font-size:1.9rem;margin:0 0 4px;}
.rj-h2{font-size:1.32rem;margin:0 0 2px;}
.rj-sub{color:var(--ink-soft);font-size:.95rem;margin:0;}

.rj-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);}
.rj-pad{padding:18px;}
.rj-grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;}

.rj-badge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;}
.rj-badge.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok);}
.rj-badge.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn);}
.rj-badge.risk{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger);}
.rj-badge.earth{background:color-mix(in srgb,var(--earth) 18%,transparent);color:var(--earth);}
.rj-badge.river{background:color-mix(in srgb,var(--river) 18%,transparent);color:var(--river);}
.rj-badge.neutral{background:color-mix(in srgb,var(--ink-soft) 16%,transparent);color:var(--ink-soft);}

.rj-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:9px 14px;font-weight:600;font-size:.87rem;}
.rj-btn:hover{border-color:var(--forest);}
.rj-btn.primary{background:var(--forest);border-color:var(--forest);color:#fff;}
.rj-btn.primary:hover{background:var(--forest-dim);}
.rj-btn.ghost{border-color:transparent;background:transparent;}
.rj-btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line));}
.rj-btn:disabled{opacity:.5;cursor:default;}
.rj-btn.block{width:100%;}
.rj-btn.sm{padding:6px 10px;font-size:.78rem;border-radius:7px;}

.rj-field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;}
.rj-field label{font-size:.78rem;font-weight:600;color:var(--ink-soft);}
.rj-field input[type=text],.rj-field input[type=number],.rj-field input[type=date],.rj-field input[type=password],.rj-field select,.rj-field textarea{
  border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:8px;padding:9px 11px;font-size:.92rem;width:100%;}
.rj-field input:focus,.rj-field select:focus,.rj-field textarea:focus{outline:2px solid var(--forest);outline-offset:1px;}
.rj-password-wrap{position:relative;}
.rj-password-wrap input[type=password],.rj-password-wrap input[type=text]{padding-right:40px;}
.rj-password-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1rem;line-height:1;padding:6px;cursor:pointer;color:var(--ink-soft);}
.rj-field textarea{resize:vertical;min-height:70px;}
.rj-hint{font-size:.76rem;color:var(--ink-soft);}
.rj-radiorow{display:flex;flex-wrap:wrap;gap:8px;}
.rj-radiorow label{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-size:.85rem;cursor:pointer;}
.rj-radiorow input{accent-color:var(--forest);}
.rj-radiorow label:has(input:checked){border-color:var(--forest);background:color-mix(in srgb,var(--forest) 10%,transparent);}

.rj-map-wrap{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);background:var(--panel);height:420px;}
.rj-map-wrap.sm{height:220px;}
.rj-map-slot{position:absolute;inset:0;}
.rj-map-toolbar{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:8px;flex-wrap:wrap;z-index:500;}
.rj-map-search{flex:1;min-width:140px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:.85rem;box-shadow:var(--shadow);color:var(--ink);}
.rj-map-filters{display:flex;gap:6px;flex-wrap:wrap;}
.rj-chip{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 11px;font-size:.76rem;font-weight:600;box-shadow:var(--shadow);color:var(--ink-soft);}
.rj-chip.on{border-color:var(--forest);color:var(--forest);background:color-mix(in srgb,var(--forest) 12%,var(--panel));}
.rj-search-results{position:absolute;top:44px;left:0;right:0;z-index:600;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);list-style:none;margin:0;padding:4px;max-height:220px;overflow:auto;}
.rj-search-results li{padding:8px 10px;border-radius:7px;cursor:pointer;font-size:.86rem;}
.rj-search-results li:hover{background:color-mix(in srgb,var(--forest) 10%,transparent);}
.rj-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.74rem;color:var(--ink-soft);margin-top:9px;}
.rj-legend span{display:inline-flex;align-items:center;gap:5px;}
.rj-legend i{width:9px;height:9px;border-radius:50%;display:inline-block;}

.rj-treecard{display:flex;flex-direction:column;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);text-decoration:none;color:inherit;}
.rj-treecard .thumb{aspect-ratio:4/3;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.rj-treecard .thumb img{width:100%;height:100%;object-fit:cover;}
.rj-treecard .body{padding:11px 13px 13px;display:flex;flex-direction:column;gap:5px;}
.rj-treecard .name{font-family:var(--font-display);font-weight:600;font-size:1.02rem;}
.rj-treecard .meta{font-size:.76rem;color:var(--ink-soft);display:flex;gap:7px;flex-wrap:wrap;align-items:center;}

.rj-timeline{display:flex;flex-direction:column;gap:0;}
.rj-tl-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);}
.rj-tl-item:last-child{border-bottom:none;}
.rj-tl-dot{width:30px;flex:none;display:flex;flex-direction:column;align-items:center;}
.rj-tl-dot i{width:9px;height:9px;border-radius:50%;background:var(--forest);margin-top:6px;}
.rj-tl-photo{width:100%;max-width:300px;border-radius:10px;margin-top:8px;display:block;}

.rj-modal-bg{position:fixed;inset:0;background:rgba(18,20,15,.5);display:flex;align-items:flex-end;justify-content:center;z-index:900;}
@media (min-width:640px){.rj-modal-bg{align-items:center;}}
.rj-modal{background:var(--panel);border-radius:18px 18px 0 0;max-width:480px;width:100%;max-height:88vh;overflow:auto;box-shadow:var(--shadow);}
@media (min-width:640px){.rj-modal{border-radius:16px;}}
.rj-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0;}
.rj-modal-body{padding:14px 18px 22px;}
.rj-toast-wrap{position:fixed;bottom:84px;left:0;right:0;display:flex;justify-content:center;z-index:1000;pointer-events:none;}
@media (min-width:860px){.rj-toast-wrap{bottom:20px;}}
.rj-toast{background:var(--ink);color:var(--cream);padding:10px 16px;border-radius:999px;font-size:.84rem;font-weight:500;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;}
.rj-toast.show{opacity:1;transform:translateY(0);}
@media (prefers-color-scheme:dark){.rj-toast{background:var(--forest);color:#10150f;}}

.rj-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;}
.rj-tabs button{background:none;border:none;padding:9px 4px;margin-right:16px;font-weight:600;font-size:.85rem;color:var(--ink-soft);border-bottom:2px solid transparent;cursor:pointer;font-family:var(--font-body);}
.rj-tabs button.active{color:var(--forest);border-color:var(--forest);}
.rj-steps{display:flex;gap:6px;margin-bottom:18px;}
.rj-steps i{flex:1;height:4px;border-radius:3px;background:var(--line);}
.rj-steps i.done{background:var(--forest);}
.rj-empty{text-align:center;padding:40px 14px;color:var(--ink-soft);}
.rj-divider{height:1px;background:var(--line);margin:18px 0;}
.rj-upload-box{border:1.5px dashed var(--line);border-radius:12px;padding:16px;text-align:center;color:var(--ink-soft);font-size:.85rem;cursor:pointer;}
.rj-upload-box:hover{border-color:var(--forest);color:var(--forest);}
.rj-upload-preview{width:100%;max-height:220px;object-fit:cover;border-radius:10px;}
.rj-note-banner{background:color-mix(in srgb,var(--amber) 22%,var(--panel));border:1px solid color-mix(in srgb,var(--amber) 55%,var(--line));border-radius:10px;padding:10px 13px;font-size:.82rem;color:var(--ink);}
.rj-skeleton{color:var(--ink-soft);padding:60px 0;text-align:center;font-family:var(--font-display);font-size:1.1rem;}
.rj-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.rj-between{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.rj-mod-item{border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:10px;background:var(--panel);}
.rj-mod-item .actions{display:flex;gap:7px;margin-top:9px;flex-wrap:wrap;}
.rj-kv{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:.84rem;}
.rj-kv dt{color:var(--ink-soft);}
.rj-kv dd{margin:0;}
.rj-followbtn[data-following="1"]{background:var(--river);border-color:var(--river);color:#fff;}
.rj-link{color:var(--river);text-decoration:underline;font-weight:600;cursor:pointer;background:none;border:none;font-size:inherit;padding:0;font-family:inherit;}

/* Leaflet integration */
.rj-divicon{display:flex;align-items:center;justify-content:center;}
.rj-divicon .dot{width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:var(--shadow);}
.rj-divicon.followed .dot{outline:2.5px solid var(--river);outline-offset:2px;}
.rj-myloc-icon{width:16px;height:16px;border-radius:50%;background:var(--river);border:2.5px solid #fff;box-shadow:0 0 0 6px color-mix(in srgb,var(--river) 25%,transparent);}
.rj-site-marker{width:16px;height:16px;background:var(--amber);border:2px solid #fff;transform:rotate(45deg);box-shadow:var(--shadow);}
.leaflet-popup-content-wrapper{background:var(--panel);color:var(--ink);border-radius:10px;box-shadow:var(--shadow);}
.leaflet-popup-content{font-family:var(--font-body);font-size:.84rem;margin:10px 12px;}
.leaflet-popup-content strong{font-family:var(--font-display);}
.leaflet-popup-tip{background:var(--panel);}
.rj-pop-name{font-family:var(--font-display);font-weight:700;font-size:1rem;margin-bottom:3px;}
.marker-cluster-rj{background:transparent;}
.marker-cluster-rj div{background:var(--forest);color:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;font-family:var(--font-body);box-shadow:var(--shadow);border:2px solid #fff;}
