/* Seagreen Accession Record v1.1.0 – app shell + real-app additions on top of design.css (approved E9/E9c design). */
html, body { height: 100%; background: #0a0b0c; }
body { overflow: hidden; overscroll-behavior: none; -webkit-tap-highlight-color: transparent; }
.phone { position: fixed; inset: 0; margin: 0 auto; width: 100%; max-width: 520px; overflow: hidden; background: #0b0c0d; isolation: isolate; }
#view { position: absolute; inset: 0; outline: none; }
.loading, .noscript { padding: 3rem 1rem; text-align: center; color: #8d8e91; font-family: "Geist Mono", monospace; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
a { color: inherit; }
[hidden] { display: none !important; }
@media (orientation: landscape) and (max-height: 520px) { .phone { max-width: none; } }

/* ---- E9c: OneDrive light without a box + feathered top-right corner fog ---- */
.m6 .odtr { background: none !important; border-color: transparent !important; box-shadow: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; text-decoration: none; }
.fog8.cr9 { right: -120px; top: -110px; width: 350px; height: 320px; background: radial-gradient(closest-side, rgba(6,8,7,.62), rgba(6,8,7,.5) 22%, rgba(6,8,7,.32) 45%, rgba(6,8,7,.14) 68%, rgba(6,8,7,.04) 86%, rgba(6,8,7,0)); }
.odtr, .ch6 .chs { text-decoration: none; }
.dot.idle { background: #7d7f83 !important; box-shadow: none !important; }
.dot.warn { background: #e6c27a !important; box-shadow: 0 0 5px 1px rgba(230,194,122,.35) !important; }
.badge.ok { border-color: rgba(92,191,131,.45); color: #9fe0b8; }

/* ---- real inputs inside the design's field shapes ---- */
.inp, .fld { position: relative; }
.inp input, .inp textarea, .inp select, .fld input { flex: 1; min-width: 0; width: 100%; height: 100%; background: none; border: 0; outline: 0; color: inherit; font: inherit; padding: 0; margin: 0; -webkit-appearance: none; appearance: none; }
.inp input::placeholder, .inp textarea::placeholder, .fld input::placeholder { color: #5f6063; opacity: 1; }
.inp textarea { resize: none; line-height: 1.45; min-height: 72px; }
.inp.ta { height: auto; min-height: 92px; padding-bottom: 10px; }
.inp:focus-within, .fld:focus-within { border-color: rgba(201,169,106,.6) !important; box-shadow: 0 0 0 3px rgba(201,169,106,.1) !important; }
.inp input[type=date] { color-scheme: dark; min-width: 0; }
.inp input[type=date]::-webkit-calendar-picker-indicator { filter: invert(.75) sepia(.3); opacity: .7; }
.inp.sel select { cursor: pointer; }
.inp.sel::after { content: ""; position: absolute; right: 14px; top: 50%; width: 7px; height: 7px; border-right: 1.5px solid #8d8e91; border-bottom: 1.5px solid #8d8e91; transform: translateY(-70%) rotate(45deg); pointer-events: none; }
.inp.sel option { background: #17191a; color: #d4d4d2; }
.fld input[type=search]::-webkit-search-cancel-button { filter: invert(.7); }
.dinp .tiny { flex: none; font: 600 11px "Sora", system-ui; color: #cfd0d1; padding: 5px 9px; border-radius: 7px 7px 7px 2px; border: 1px solid rgba(201,169,106,.22); background: rgba(255,255,255,.05); cursor: pointer; }
.dinp .tiny.gh { color: #8d8e91; }
.coderow { display: flex; gap: 8px; }
.codeinp { flex: 1; font: 600 17px "Geist Mono", monospace !important; letter-spacing: .08em; }
.codeinp .pfx { color: #6f7073; font-size: 11px; letter-spacing: .1em; flex: none; }
.codeinp input { font: inherit !important; letter-spacing: inherit; text-transform: uppercase; }
.coderow .btn5 { height: 46px; }
.code-hint { font-size: 8.5px !important; margin: 6px 2px 0; color: #8d8e91; letter-spacing: .12em; }
.code-hint.ok { color: #5cbf83; }
.code-hint.warn { color: #e0645b; }
.intro9 { font-size: 13px; line-height: 1.5; color: #8d8e91; margin: 12px 2px 0; }
.fp, .fpw { min-width: 0; }
.fpw .lbl { margin-top: 14px; }

/* ---- record view ---- */
.kvs .kv .v { text-align: right; max-width: 62%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kv.kvl { height: auto; min-height: 42px; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; padding: 10px 14px; }
.kv.kvl .v { max-width: 100%; text-align: left; white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.45; font-size: 13.5px; }
.rmeta { font-size: 8.5px !important; }
.rh .rhl { flex: 1; min-width: 0; }
.rh .rn { overflow-wrap: anywhere; }
.thumb img, .pcell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.thumb .thph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: rgba(201,169,106,.55); background: radial-gradient(circle at 50% 40%, rgba(201,169,106,.10), rgba(0,0,0,.25)); }
.thumb .thph svg { width: 30px; height: 30px; }
.pcell img:not([src]) { visibility: hidden; }
.pcell.photo-link { background: rgba(0,0,0,.3); }
.pcell .pd { font-size: 8px !important; }
.lg .x { overflow-wrap: anywhere; }
.lg .em9, .x .em, .cn.em { color: #6f7073 !important; font-weight: 500 !important; }
.lrow { padding: 10px 14px !important; gap: 10px; }
.ic2.icb { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.09); flex: none; color: #a9aaac; }
.ic2.icb.gold { border-color: rgba(201,169,106,.2); color: #d8c79e; }
.ic2.icb svg { width: 16px; height: 16px; }
.lrow .x b { font-weight: 600; color: #d4d4d2; }
.lrow .cc { font-size: 9px !important; letter-spacing: .08em; }
.btn5.sm { height: 34px; font-size: 13px; padding: 0 10px; flex: none; text-decoration: none; }
.locc .mm svg { display: block; width: 100%; height: 84px; }
.plink { cursor: pointer; text-decoration: none; }
.delb { width: 100%; height: 46px; }
.empty9 { padding: 18px 16px !important; text-align: left; }
.empty9 .e9t { font: 600 15px "Sora", system-ui; color: #d4d4d2; margin-bottom: 6px; }
.empty9 p { font-size: 13px; line-height: 1.5; color: #8d8e91; }
.empty9 .la { margin-top: 12px; display: flex; gap: 8px; }
.m3 .empty9 { margin-top: 12px; }
.nores { padding: 18px 4px; font-size: 10px; color: #7c7d80; letter-spacing: .12em; text-transform: uppercase; }
.lgc .lm { margin-left: 6px; font: 500 9px "Geist Mono", monospace; color: #8d8e91; flex: none; }
.tr, .lf, .wr, .pt, .m8r, [data-href] { cursor: pointer; }
.th[role=button] { cursor: pointer; user-select: none; -webkit-user-select: none; }
.td svg.i { width: 13px; height: 13px; margin-right: 5px; flex: none; opacity: .75; }
.td { min-width: 0; }

/* ---- settings ---- */
.odcard { padding: 12px 14px 14px; }
.odcard .od-block { margin: 0; padding: 0; border: 0; }
.odcard .od-title { font: 600 14.5px "Sora", system-ui; color: #d4d4d2; }
.odcard .od-note, .odcard .od-last, .odcard .od-account { font-size: 12.5px; line-height: 1.5; color: #8d8e91; }
.odcard .btn-big { min-height: 44px; font-size: 14px; }
.hint9 .s { display: block !important; font-size: 11px !important; line-height: 1.5; }
.s3 .row2 label.pill-s { cursor: pointer; }
.cpad { padding: 12px 14px; }
.cnote { font-size: 12.5px; line-height: 1.5; color: #8d8e91; margin-bottom: 10px; }
.add-col { display: grid; gap: 8px; margin: 0; }
.add-col .btn5 { width: 100%; font: inherit; font-weight: 600; cursor: pointer; }
.col-list { display: grid; gap: 6px; }
.col-item { background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.08); border-radius: 10px 10px 10px 3px; }
.col-item .col-name { font-size: 14px; color: #d4d4d2; }
.col-item .muted.small { font: 400 10px "Geist Mono", monospace; letter-spacing: .04em; color: #7c7d80; margin-top: 2px; }
.mini-btn { min-width: 36px; min-height: 36px; border-radius: 8px 8px 8px 2px; border: 1px solid rgba(201,169,106,.2); background: rgba(255,255,255,.05); color: #cfd0d1; font: 600 13px "Sora", system-ui; display: inline-flex; align-items: center; justify-content: center; }
.mini-btn svg { width: 15px; height: 15px; }
.mini-btn.danger { color: #e08b84; border-color: rgba(224,100,91,.35); }

/* ---- dialogs, sheets, busy, toast: dark glass ---- */
.dialog-overlay, .busy-overlay { background: rgba(4,5,6,.62); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.dialog { background: linear-gradient(180deg, rgba(30,34,32,.97), rgba(18,20,19,.98)); border: 1px solid rgba(201,169,106,.22); border-radius: 18px 18px 18px 5px; box-shadow: inset 0 1px 0 rgba(226,200,146,.14), 0 24px 60px -12px rgba(0,0,0,.85); color: #d4d4d2; font-family: "Sora", system-ui; }
.dialog-title { font: 600 17px "Sora", system-ui; letter-spacing: -.01em; color: #e8e7e1; }
.dialog-msg { font-size: 14px; line-height: 1.5; color: #b9babc; }
.dialog .field-label { font: 500 9px "Geist Mono", monospace; letter-spacing: .16em; text-transform: uppercase; color: #77787b; margin-bottom: 6px; }
.dialog .form-row p { margin-top: 6px; }
.btn { font-family: "Sora", system-ui; font-weight: 600; font-size: 14.5px; letter-spacing: -.01em; min-height: 44px; border-radius: 10px 10px 10px 3px; background: rgba(255,255,255,.05); color: #d4d4d2; border: 1px solid rgba(201,169,106,.22); }
.btn-primary { background: linear-gradient(180deg, rgba(200,202,205,.9), rgba(160,162,166,.86)); color: #0d0d0e; border-color: rgba(201,169,106,.6); box-shadow: inset 0 1px 0 rgba(255,244,220,.45); }
.btn-primary:active { background: linear-gradient(180deg, rgba(180,182,185,.9), rgba(140,142,146,.86)); }
.btn-secondary { background: rgba(255,255,255,.06); color: #d4d4d2; border-color: rgba(201,169,106,.25); }
.btn-ghost { background: transparent; border-color: transparent; color: #a9aaac; }
.btn-danger { background: rgba(179,55,47,.85); border-color: rgba(224,100,91,.6); color: #fff; }
.btn-danger-outline { background: rgba(224,100,91,.06); border-color: rgba(224,100,91,.35); color: #e08b84; }
.input { background: rgba(0,0,0,.28); border: 1px solid rgba(201,169,106,.16); color: #d4d4d2; border-radius: 9px 9px 9px 2px; font-family: "Sora", system-ui; }
.input:focus { border-color: rgba(201,169,106,.6); box-shadow: 0 0 0 3px rgba(201,169,106,.1); }
.input.invalid { border-color: #e0645b; }
input[type=date].input { color-scheme: dark; }
.dialog.sheet .btn-big { min-height: 50px; }
.busy-box { background: linear-gradient(180deg, rgba(30,34,32,.97), rgba(18,20,19,.98)); border: 1px solid rgba(201,169,106,.22); color: #d4d4d2; font-family: "Sora", system-ui; }
.spinner { border-color: rgba(255,255,255,.1); border-top-color: #C9A96A; }
#toast-host { bottom: calc(110px + env(safe-area-inset-bottom)); }
#toast-host .toast { background: linear-gradient(180deg, rgba(34,38,36,.96), rgba(20,22,21,.97)); color: #e8e7e1; border: 1px solid rgba(201,169,106,.3); border-radius: 10px 10px 10px 3px; font: 600 13px "Sora", system-ui; padding: 10px 16px; box-shadow: 0 12px 30px -10px rgba(0,0,0,.8); transition: opacity .35s; }
#toast-host .toast.hide { opacity: 0; }
.segmented { background: rgba(0,0,0,.25); border-color: rgba(255,255,255,.08); }
.seg-label { color: #8d8e91; font-family: "Sora", system-ui; }
.seg-opt input:checked + .seg-label { background: linear-gradient(180deg, rgba(200,202,205,.82), rgba(160,162,166,.78)); color: #0d0d0e; }

/* ---- scanner, map picker, photo viewer ---- */
.scan-overlay { background: #0b0c0d; font-family: "Sora", system-ui; }
.scan-top, .map-title-row { background: linear-gradient(180deg, rgba(14,17,16,.96), rgba(14,17,16,.86)); }
.scan-panel { background: linear-gradient(180deg, rgba(26,30,28,.96), rgba(17,20,19,.98)); border-top: 1px solid rgba(201,169,106,.2); }
.scan-guide { border: 2px solid rgba(201,169,106,.9); border-radius: 12px 12px 12px 3px; }
.scan-overlay .input { background: rgba(0,0,0,.3); color: #d4d4d2; }
.scan-status.warn { color: #e6c27a; }
.map-overlay { background: #0b0c0d; font-family: "Sora", system-ui; }
.map-top { background: #111312; border-bottom-color: rgba(201,169,106,.2); }
.map-bottom { background: #111312; border-top-color: rgba(201,169,106,.2); }
.map-results, .map-result { background: #17191a; color: #d4d4d2; border-color: rgba(255,255,255,.08); }
/* v1.4.3: the map itself is in TRUE daytime colour – no filter / blend / opacity on any tile layer (the dark UI stays around it) */
.leaflet-container { background: #e5e3df; font-family: "Sora", system-ui; }
.leaflet-tile-pane, .leaflet-tile-pane .leaflet-layer, .leaflet-tile { filter: none !important; mix-blend-mode: normal !important; opacity: 1; }
/* Google-Maps-style gestures: the page never scrolls or rubber-bands while a finger is on the map */
.m8leaf, .map-canvas, .leaflet-container { touch-action: none; -ms-touch-action: none; overscroll-behavior: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.leaflet-control-attribution { background: rgba(10,12,11,.7) !important; color: #7c7d80 !important; font-size: 9px !important; }
.leaflet-control-attribution a { color: #a9aaac !important; }
.leaflet-bar a { background: #17191a; color: #d4d4d2; border-color: rgba(255,255,255,.1); }
.viewer { font-family: "Sora", system-ui; }

/* ---- map screen (Leaflet under the E9 map panel) ---- */
.m8leaf { position: absolute; inset: 0; z-index: 0; }
.m8side { z-index: 5; }
.m8pinw { background: none; border: 0; }
.m8pinw .m8pin { position: absolute; left: 0; top: 0; }
.m8pinw .m8ghost { position: absolute; left: 0; top: 0; }
.m8chip.nopin { border-style: dashed !important; }
.m8empty { padding: 14px; font-size: 12.5px; line-height: 1.5; color: #8d8e91; }
.m8empty b { color: #d4d4d2; font-weight: 600; }
.m8r .lc.em { color: #6f7073; }
.m8r .rt.off { visibility: hidden; }
.m8off { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #6f7073; font: 500 10px "Geist Mono", monospace; letter-spacing: .12em; text-transform: uppercase; }
.m8route { filter: drop-shadow(0 0 4px rgba(201,169,106,.4)); }

/* keyboard focus */
[role=button]:focus-visible, [role=link]:focus-visible, [role=tab]:focus-visible, .btn:focus-visible, .mini-btn:focus-visible { outline: 2px solid rgba(201,169,106,.8); outline-offset: 2px; }
.s5.scr .fp > *, .s5.scr .fpw > *, .s5.scr .rcols > * { flex-shrink: 0; }
.tog span svg { width: 14px; height: 14px; }
/* settings and columns screens scroll (the preview's settings fitted one screen; the real one is longer) */
.s3 { overflow-y: auto; overflow-x: hidden; padding-bottom: calc(40px + env(safe-area-inset-bottom)) !important; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.s3::-webkit-scrollbar { display: none; }
.s3 .scols { padding-bottom: 10px; }
/* radial menu: decorative rings / header never block the tap-outside-to-close overlay */
.fan .rings, .fan .qa-h, .fan .hint { pointer-events: none !important; }

/* Respect "reduce motion": stop the drifting background and scanner sweep. */
@media (prefers-reduced-motion: reduce) {
  .bgfx:before, .bgfx:after, .fog8, #scan .vf .sl { animation: none !important; }
}

/* Location picker on a phone held sideways: keep the map visible and the Save button on screen. */
@media (orientation: landscape) and (max-height: 520px) {
  .map-canvas { min-height: 0; }
  .map-hint { display: none; }
  .map-bottom { grid-template-columns: 1fr auto; align-items: center; padding-top: 6px; padding-bottom: calc(6px + var(--sab)); }
  .map-actions { grid-template-columns: auto auto; }
  .map-actions .btn { min-width: 120px; }
}

/* ===================== v1.2.0 ===================== */
/* ---- rich-text entry editor ---- */
.log-dialog { max-height: calc(var(--vvh, 100dvh) - 24px); padding-bottom: 0; }
.log-dialog .dialog-buttons { position: sticky; bottom: 0; margin: 10px -18px 0; padding: 10px 18px calc(12px + var(--sab)); background: linear-gradient(180deg, rgba(18,20,19,.0), rgba(18,20,19,.98) 30%); }
.rtlbl { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.rtst { font-size: 8.5px; letter-spacing: .12em; color: #6d8a6f; text-transform: none; }
.rte { position: relative; }
.rtb { position: sticky; top: -18px; z-index: 3; display: flex; align-items: center; gap: 2px; padding: 5px; margin-bottom: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
  background: linear-gradient(180deg, rgba(34,38,36,.98), rgba(24,27,26,.98)); border: 1px solid rgba(201,169,106,.28); border-radius: 11px 11px 11px 3px; box-shadow: inset 0 1px 0 rgba(226,200,146,.12), 0 6px 18px rgba(0,0,0,.35); }
.rtb::-webkit-scrollbar { display: none; }
.rtbtn { flex: none; min-width: 38px; height: 38px; padding: 0 7px; display: inline-flex; align-items: center; justify-content: center; gap: 5px; border: 1px solid transparent; border-radius: 8px; background: none;
  color: #c9cac7; font: 600 15px "Sora", system-ui; cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.rtbtn svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; }
.rtbtn svg circle, .rtbtn svg text { fill: currentColor; stroke: none; }
.rtbtn.on { background: rgba(201,169,106,.16); border-color: rgba(201,169,106,.5); color: #f0dcae; }
.rtbtn[data-cmd="link"] { color: #8cbcff; }
.rtbtn .rtl { font-size: 8.5px; letter-spacing: .14em; color: inherit; }
.rtA { position: relative; font-weight: 700; padding-bottom: 3px; }
.rtA i { position: absolute; left: -2px; right: -2px; bottom: 0; height: 3px; border-radius: 2px; background: linear-gradient(90deg, #e3c27a, #8fd19e, #8cc8ff, #ff9c9c); }
.rtH { padding: 1px 4px; border-radius: 4px; background: #5a4a1e; color: #f2efe6; font-size: 13px; }
.rtsep { flex: none; width: 1px; height: 22px; margin: 0 3px; background: rgba(201,169,106,.22); }
.rtp { display: flex; align-items: center; gap: 6px; padding: 6px 8px; margin: -2px 0 6px; border: 1px solid rgba(201,169,106,.2); border-radius: 10px; background: rgba(0,0,0,.35); flex-wrap: wrap; }
.rtp[hidden] { display: none; }
.rtpl { margin-right: 4px; font-size: 8.5px; }
.rtp .sw { width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.04); font: 700 14px "Sora", system-ui; cursor: pointer; touch-action: manipulation; }
.rtp .sw.none { color: #8d8e91; font-size: 15px; }
.rtc.input { min-height: 132px; padding: 11px 12px; line-height: 1.5; font-size: 16px; white-space: pre-wrap; overflow-wrap: anywhere; -webkit-user-select: text; user-select: text; outline: none; cursor: text; }
.rtc.is-empty::before { content: attr(data-placeholder); color: #5f6063; pointer-events: none; position: absolute; }
/* formatted text (editor + record view + popover) */
.rt ul, .rt ol, .rtc ul, .rtc ol { margin: 4px 0; padding-left: 1.35em; }
.rt li, .rtc li { margin: 1px 0; }
.rt ul li::marker, .rtc ul li::marker { color: #c9a96a; }
.rt ol li::marker, .rtc ol li::marker { color: #c9a96a; font-family: "Geist Mono", monospace; font-size: .85em; }
.rt b, .rtc b { font-weight: 650; color: #ecebe6; }
.rt span[style*="background"], .rtc span[style*="background"] { padding: 0 2px; border-radius: 3px; color: #f2efe6; }
.elink, .rtc a.elink { color: #6cb6ff; text-decoration: underline; text-decoration-color: rgba(108,182,255,.6); text-underline-offset: 2px; cursor: pointer; -webkit-tap-highlight-color: rgba(108,182,255,.2); }
.elink.in { cursor: default; }
.elink-dead { color: inherit; text-decoration: none; }
.eldel { margin-left: 5px; padding: 1px 5px; border: 1px dashed rgba(255,255,255,.2); border-radius: 4px; font-size: 7.5px; letter-spacing: .12em; color: #77787b; vertical-align: 1px; }
.log-details.rt { white-space: normal; }
.log-entry { scroll-margin: 90px; transition: background .4s; }
.log-entry.flash { animation: entryflash 1.6s ease-out; }
@keyframes entryflash { 0%, 30% { background: rgba(108,182,255,.16); box-shadow: inset 2px 0 0 #6cb6ff; } 100% { background: transparent; box-shadow: none; } }
/* link picker */
.elpick { display: grid; gap: 6px; max-height: min(52vh, 360px); overflow: auto; }
.elpi { display: grid; gap: 3px; text-align: left; padding: 10px 12px; border: 1px solid rgba(201,169,106,.16); border-radius: 10px 10px 10px 3px; background: rgba(0,0,0,.25); color: #d4d4d2; font: 14px "Sora", system-ui; cursor: pointer; min-height: 52px; }
.elpi.cur { border-color: rgba(108,182,255,.6); }
.elpi:active { background: rgba(201,169,106,.1); }
.elpd { font-size: 8.5px; letter-spacing: .14em; color: #c9a96a; }
.elpt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.elphr { margin: 0; }
/* link popover */
.elpop { position: fixed; z-index: 4000; padding: 10px 12px 12px; border-radius: 14px 14px 14px 4px; border: 1px solid rgba(201,169,106,.32);
  background: linear-gradient(180deg, rgba(32,36,34,.98), rgba(18,20,19,.99)); box-shadow: inset 0 1px 0 rgba(226,200,146,.14), 0 14px 40px rgba(0,0,0,.6); color: #d4d4d2; font: 14px/1.45 "Sora", system-ui; }
.elph { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.elph .mono { color: #c9a96a; font-size: 8.5px; letter-spacing: .14em; }
.elpx { width: 34px; height: 34px; margin: -6px -6px -6px 0; border: 0; border-radius: 50%; background: rgba(255,255,255,.06); color: #b9babc; font-size: 15px; cursor: pointer; }
.elpb { max-height: 40vh; overflow: auto; overflow-wrap: anywhere; }
.elpa { display: flex; justify-content: flex-end; margin-top: 10px; }
.elpa .btn5 { cursor: pointer; border: 0; font: 600 13px "Sora", system-ui; }
/* ---- autosave indicator ---- */
.tb .asv { margin-left: auto; align-self: center; font-size: 8px; letter-spacing: .12em; color: #6f7073; white-space: nowrap; text-transform: none; }
.tb .asv.ok { color: #7fae86; }
.tb .asv.warn { color: #e3b46a; }
.ebar [hidden] { display: none !important; }
/* ---- name suggestions (above the field, clear of the keyboard) ---- */
.tax-sug { position: absolute; left: -1px; right: -1px; bottom: calc(100% + 6px); z-index: 30; display: grid; padding: 4px; border-radius: 12px 12px 12px 3px; border: 1px solid rgba(201,169,106,.32);
  background: linear-gradient(180deg, rgba(34,38,36,.99), rgba(20,22,21,.99)); box-shadow: 0 -10px 30px rgba(0,0,0,.5), inset 0 1px 0 rgba(226,200,146,.12); }
.tsi { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; min-height: 40px; padding: 8px 10px; border: 0; border-radius: 8px; background: none; color: #e1e0db; font: 15px "Sora", system-ui; text-align: left; cursor: pointer; touch-action: manipulation; }
.tsi + .tsi { border-top: 1px solid rgba(255,255,255,.05); }
.tsi:active, .tsi:hover { background: rgba(201,169,106,.1); }
.tsn { font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tsm { flex: none; font-size: 7.5px; letter-spacing: .12em; color: #8a7a55; }
.tsl { padding: 6px 10px; font-size: 7.5px; color: #6f7073; }
.rtc { position: relative; } .tax-sug[data-f="family"] .tsn { font-style: normal; }

/* ---- v1.2.1: iPhone home-screen app – the shell is exactly the visible web area, never taller ----
   1.2.0 sized the shell with 100vh/100lvh in standalone mode. On the iPhone those units resolve to the full
   screen height (844) while the web layer iOS actually shows can be shorter (e.g. 797), so the bottom of the
   shell – with the camera button – was pushed off screen, and the strip iOS paints itself below/above the
   web layer took the near-black page background. Now: no viewport units on the shell, position:fixed +
   inset:0 (= the real visible area), and the page background is the fog's bottom colour everywhere. */
:root { --fog-bottom: #1b1f1d; --fabup: 0px; }
html, body { height: 100%; min-height: 0; margin: 0; padding: 0; background: var(--fog-bottom) !important; }
html::before { content: ""; position: fixed; left: -40px; right: -40px; top: calc(-100px - var(--sat)); bottom: -100px; z-index: -1; pointer-events: none; background: var(--fog-bottom); }
html .phone { position: fixed !important; inset: 0 !important; height: auto !important; min-height: 0 !important; background: var(--fog-bottom); }
.dialog { max-height: 100%; }
.log-dialog { max-height: 100%; }
/* camera button + quick-action fan: lifted clear of the home indicator in portrait (fan moves with it) */
@media (orientation: portrait), (min-height: 521px) { :root { --fabup: max(0px, calc(var(--sab) - 12px)); } }
.fab, .fan .rings, .fan .qa, .fan .qa-h, .fan .hint, .trail { translate: 0 calc(-1 * var(--fabup)); }
.fanov { background: radial-gradient(520px 520px at calc(100% - 56px) calc(100% - 60px - var(--fabup)), rgba(10,10,11,.55), rgba(10,10,11,.78)) !important; }
/* bottom bars reach the bottom edge and keep their buttons above the home indicator */
.ebar { padding-bottom: max(30px, calc(12px + var(--sab))) !important; }
/* v1.2.0: the entry dialog never grows wider than the phone; toolbar fits a 390 pt screen in one row (scrolls on smaller ones) */
.log-dialog .form-stack { grid-template-columns: minmax(0, 1fr); }
.log-dialog .form-row, .rte, .rtb, .rtp { min-width: 0; max-width: 100%; }
.log-dialog input[type="date"] { width: 100%; min-width: 0; }
.rtb { gap: 1px; padding: 4px; }
.rtbtn { min-width: 36px; height: 38px; padding: 0 6px; }
.rtbtn[data-cmd="link"] { padding: 0 6px; }
.rtsep { margin: 0 2px; }
@media (max-width: 400px) { .rtbtn .rtl { display: none; } }
/* v1.2.1: hidden screen diagnostics (tap "SAR v…" 5×) */
#vp-diag { position: fixed; inset: 0; z-index: 9000; overflow: auto; padding: calc(10px + var(--sat)) calc(10px + var(--sar)) calc(10px + var(--sab)) calc(10px + var(--sal)); background: rgba(6,8,7,.94); color: #e7e3d6; font: 11px/1.35 "Geist Mono", ui-monospace, monospace; }
#vp-diag .vpd-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font: 600 15px "Sora", system-ui; color: #e3c27a; }
#vp-diag .vpd-x { font: 600 13px "Sora", system-ui; padding: 8px 14px; border-radius: 9px; border: 1px solid rgba(201,169,106,.5); background: rgba(201,169,106,.14); color: #f0dcae; }
#vp-diag table { width: 100%; border-collapse: collapse; }
#vp-diag th, #vp-diag td { text-align: left; vertical-align: top; padding: 4px 6px; border-bottom: 1px solid rgba(255,255,255,.08); overflow-wrap: anywhere; }
#vp-diag th { width: 34%; color: #9fb3a3; font-weight: 500; }
#vp-diag .vpd-n { margin-top: 8px; color: #9a9b9e; }
#vp-diag .vpd-edge { position: fixed; left: 0; right: 0; height: 0; border-top: 2px dashed #ff6b6b; pointer-events: none; }
#vp-diag .vpd-edge.top { top: 0; } #vp-diag .vpd-edge.bot { bottom: 0; }
#vp-diag .vpd-safe { position: fixed; left: var(--sal); right: var(--sar); top: var(--sat); bottom: var(--sab); border: 1px dashed rgba(140,200,255,.7); pointer-events: none; }

/* ---------- v1.3.0: locality / current location – address suggestions, map pin button, Google Maps link ---------- */
.locinp { padding-right: 5px; }
.locpin { flex: none; display: inline-grid; place-items: center; width: 36px; height: 36px; margin: 0; padding: 0; border-radius: 8px 8px 8px 2px; border: 1px solid rgba(201,169,106,.28);
  background: rgba(201,169,106,.08); color: #c9a96a; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.locpin svg { width: 17px; height: 17px; }
.locpin:active, .locpin.on { background: rgba(201,169,106,.2); border-color: rgba(201,169,106,.6); }
.place-inp { height: 48px; }
.place-inp .input { border: 0 !important; background: none !important; box-shadow: none !important; padding: 0 !important; height: 100%; border-radius: 0; }
.locgeo { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 7px; font: 11px "Geist Mono", ui-monospace, monospace; color: #8d8e91; }
.locgeo[hidden] { display: none; }
.lgc { display: inline-flex; align-items: center; gap: 5px; color: #c9a96a; letter-spacing: .02em; }
.lgc svg { width: 12px; height: 12px; }
.lgx { color: #8d8e91; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.gmaps-link { display: inline-flex; align-items: center; gap: 5px; color: #8fb7e8; font: 500 11.5px "Sora", system-ui !important; letter-spacing: .01em; text-transform: none; text-decoration: none; border-bottom: 1px solid rgba(143,183,232,.35); line-height: 1.5; white-space: nowrap; }
.gmaps-link svg { width: 12px; height: 12px; }
.gmaps-link[hidden] { display: none; }
.kvs .kv.kvloc { height: auto; min-height: 42px; padding-top: 9px; padding-bottom: 9px; align-items: flex-start; gap: 12px; }
.kvs .kv.kvloc .k { padding-top: 4px; flex: none; }
.kvs .kv.kvloc .v { max-width: 72%; white-space: normal; overflow: visible; overflow-wrap: anywhere; text-align: right; line-height: 1.45; }
.kvloc .gmaps-link { margin-top: 3px; }
.place-block .gmaps-link { margin-top: 3px; }
.place-dialog .btn-row { align-items: center; gap: 14px; }
/* suggestion bubble: fixed above the field (below when there is no room), above dialogs */
.geo-sug { position: fixed; display: grid; padding: 4px; max-height: min(300px, 46vh); overflow: auto; border-radius: 12px 12px 12px 3px; border: 1px solid rgba(201,169,106,.32);
  background: linear-gradient(180deg, rgba(34,38,36,.99), rgba(20,22,21,.99)); box-shadow: 0 -10px 30px rgba(0,0,0,.5), inset 0 1px 0 rgba(226,200,146,.12); -webkit-overflow-scrolling: touch; }
.geo-sug.below { border-radius: 3px 12px 12px 12px; box-shadow: 0 10px 30px rgba(0,0,0,.5), inset 0 1px 0 rgba(226,200,146,.12); }
.geo-sug .gsi { align-items: center; }
.gsn { display: grid; min-width: 0; }
.gsn b { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gsn small { font-size: 11px; color: #85878a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.geo-sug .gsi[data-src="mine"] .tsm { color: #c9a96a; }
/* map picker: live place name, offline note, "you are here" */
.map-geo .map-coords.offline { color: #d9a24a; }
.map-result b { font-weight: 600; }
.map-result small { color: #8d8e91; }
.leaflet-interactive.map-you { filter: drop-shadow(0 0 6px rgba(47,124,246,.8)); }
/* Map screen: three filter tabs fit at 390px */
.m8dim span { letter-spacing: .07em; gap: 4px; font-size: 9px; }

/* ===================== v1.4.0: Calendar tile, watering schedule, calendar screen ===================== */
/* home: four tiles – 2×2 in portrait (compact rows), 4 across in landscape */
.t4 { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
.t4 .big { height: 58px !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: 10px !important; padding: 0 11px !important; }
.t4 .big .mono { top: auto !important; bottom: 8px !important; right: 10px !important; }
.t4 .big .mono.due { color: #7cc0f0 !important; }
.t4 .big .lb { font-size: 15px !important; }
@media (orientation: landscape) and (max-height: 520px) {
  .m6 .t4 { grid-template-columns: repeat(4, 1fr) !important; }
  .m6 .t4 .big { height: 76px !important; flex-direction: column !important; align-items: flex-start !important; justify-content: space-between !important; padding: 10px 11px !important; gap: 0 !important; }
  .m6 .t4 .big .mono { top: 12px !important; bottom: auto !important; }
}
/* plant record: watering schedule card */
.wcard .x { min-width: 0; flex: 1; }
.wic { color: #5aa9e6 !important; }
.wsum { display: grid; gap: 3px; }
.wsum-l { font: 600 15px "Sora", system-ui; color: #d8d8d5; }
.wsum-l.em { color: #8d8e91; font-weight: 500; }
.wsum-m, .wsum-n { font-size: 9px; letter-spacing: .1em; color: #8d8e91; }
.wsum-n { color: #7cc0f0; }
.wsum-n.ov { color: #f08a7a; }
.wsum-n.now { color: #e3c27a; }
.wcard .la { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.wcard .lrow { align-items: flex-start; padding-top: 12px; padding-bottom: 12px; }
.btn5 svg, .cmark svg { width: 15px; height: 15px; }
/* plant form: watering schedule editor */
.wform { padding: 10px 12px 12px; display: grid; gap: 10px; }
.wseg { display: grid; grid-template-columns: repeat(4, 1fr); gap: 3px; padding: 3px; border-radius: 9px 9px 9px 2px; background: rgba(0,0,0,.25); border: 1px solid rgba(255,255,255,.08); }
.wseg span { display: flex; align-items: center; justify-content: center; text-align: center; min-height: 34px; padding: 2px 4px; border-radius: 6px 6px 6px 2px; font: 600 11.5px/1.15 "Sora", system-ui; color: #9d9fa3; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.wseg span.on { background: linear-gradient(180deg, rgba(40,44,41,.95), rgba(26,29,27,.95)); color: #e6dcc4; border: 1px solid rgba(201,169,106,.55); box-shadow: inset 0 1px 0 rgba(226,200,146,.2); }
.wrow { display: flex; align-items: center; gap: 10px; }
.wl { font: 500 9px "Geist Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: #8d8e91; flex: none; min-width: 52px; }
.wr-st .wl { min-width: 0; }
.wstep { display: inline-flex; align-items: center; border: 1px solid rgba(255,255,255,.1); border-radius: 9px 9px 9px 2px; background: rgba(0,0,0,.25); overflow: hidden; }
.wsb { width: 40px; height: 40px; display: grid; place-items: center; font: 500 20px "Sora", system-ui; color: #c9a96a; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.wsb:active { background: rgba(201,169,106,.15); }
.wstep input { width: 46px; height: 40px; text-align: center; background: none; border: 0; border-left: 1px solid rgba(255,255,255,.08); border-right: 1px solid rgba(255,255,255,.08); color: #e1e0db; font: 600 16px "Geist Mono", ui-monospace, monospace; outline: 0; }
.wdays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; flex: 1; }
.wdays span { height: 36px; display: grid; place-items: center; border-radius: 8px 8px 8px 2px; border: 1px solid rgba(255,255,255,.1); background: rgba(0,0,0,.2); font: 600 12px "Sora", system-ui; color: #9d9fa3; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.wdays span.on { border-color: rgba(90,169,230,.7); background: rgba(90,169,230,.16); color: #cfe6fb; }
.wdate { flex: 1; height: 42px; }
.wnext { font-size: 9px; letter-spacing: .1em; color: #7cc0f0; }
.wform[data-mode="none"] .wr-n, .wform[data-mode="none"] .wr-wd, .wform[data-mode="none"] .wr-st,
.wform[data-mode="weekly"] .wr-n, .wform[data-mode="days"] .wr-wd, .wform[data-mode="weeks"] .wr-wd { display: none; }
.wform[data-mode="none"] .wnext { color: #77787b; }
/* calendar screen */
.cal9 .tb { align-items: center; }
.cal9 .tb #cal-today { margin-left: auto; }
.calw { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.calc { display: flex; flex-direction: column; gap: 10px; }
.calm { padding: 10px 10px 8px; touch-action: pan-y; }
.cmh { display: flex; align-items: center; gap: 10px; }
.cmh .cnav { width: 38px; height: 38px; flex: none; display: grid; place-items: center; cursor: pointer; }
.cmh #cal-prev svg { transform: rotate(180deg); }
.cmt { flex: 1; text-align: center; display: grid; gap: 1px; }
.cmt b { font: 700 19px "Syne", system-ui; color: #e6dcc4; letter-spacing: -.01em; }
.cmt .mono { font-size: 8.5px; letter-spacing: .14em; color: #77787b; }
.cwd { display: grid; grid-template-columns: repeat(7, 1fr); margin: 10px 0 4px; text-align: center; font-size: 8.5px; letter-spacing: .14em; color: #77787b; text-transform: uppercase; }
.cgrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.cd { position: relative; height: 46px; padding: 5px 0 0; border: 1px solid transparent; border-radius: 8px 8px 8px 2px; background: rgba(255,255,255,.025); color: #cfd0d1; font: 500 14px "Sora", system-ui;
  display: flex; flex-direction: column; align-items: center; gap: 4px; cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.cd.om { color: #55575a; background: none; }
.cd.td { border-color: rgba(201,169,106,.55); color: #e6dcc4; }
.cd.td .n { font-weight: 700; }
.cd.sel { background: linear-gradient(180deg, rgba(201,169,106,.22), rgba(201,169,106,.1)); border-color: rgba(226,200,146,.75); color: #fff; }
.cd .dots { display: flex; gap: 3px; flex-wrap: wrap; justify-content: center; max-width: 34px; }
.cd .dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--c); box-shadow: 0 0 6px color-mix(in srgb, var(--c) 60%, transparent); }
.cd .dots i.ov { background: none; border: 1.5px solid var(--c); width: 7px; height: 7px; box-sizing: border-box; }
.cd .dots b { font: 700 8px/6px "Geist Mono", monospace; color: #9d9fa3; }
.cd.om .dots i { opacity: .45; }
.cleg { display: flex; flex-wrap: wrap; gap: 6px; }
.lgi { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border-radius: 15px 15px 15px 4px; border: 1px solid rgba(255,255,255,.1); background: rgba(0,0,0,.25);
  font: 600 11.5px "Sora", system-ui; color: #77787b; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.lgi i { width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--c); box-sizing: border-box; }
.lgi b { font-size: 9px; letter-spacing: .06em; color: #6f7073; }
.lgi.on { color: #d8d8d5; border-color: color-mix(in srgb, var(--c) 55%, transparent); background: color-mix(in srgb, var(--c) 10%, rgba(0,0,0,.3)); }
.lgi.on i { background: var(--c); }
.lgi.on b { color: #a9aaac; }
.cday { padding: 12px 12px 6px; }
.cdh { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; padding-bottom: 8px; border-bottom: 1px solid rgba(255,255,255,.06); }
.cdh > div { display: grid; gap: 2px; }
.cdh b { font: 700 16px "Syne", system-ui; color: #e6dcc4; }
.cdh .mono { font-size: 8.5px; letter-spacing: .14em; color: #77787b; }
.cempty { padding: 16px 2px 12px; color: #77787b; font-size: 13.5px; }
.cevs { display: grid; }
.cev { display: flex; align-items: center; gap: 10px; padding: 10px 2px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.cev + .cev { border-top: 1px solid rgba(255,255,255,.05); }
.cev .cb { flex: none; align-self: stretch; width: 4px; border-radius: 3px; background: var(--c); box-shadow: 0 0 10px color-mix(in srgb, var(--c) 50%, transparent); }
.cev .ct { flex: 1; min-width: 0; display: grid; gap: 3px; }
.cev .cl { display: flex; align-items: center; gap: 8px; }
.cev .cl b { font: 600 14px "Sora", system-ui; color: var(--c); }
.ctag { font: 600 8px "Geist Mono", monospace; letter-spacing: .12em; text-transform: uppercase; padding: 2px 6px; border-radius: 5px 5px 5px 1px; border: 1px solid rgba(255,255,255,.14); color: #9d9fa3; }
.ctag.ov { color: #f4a196; border-color: rgba(240,138,122,.5); }
.ctag.now { color: #e3c27a; border-color: rgba(227,194,122,.5); }
.cev .cp { display: flex; align-items: center; gap: 8px; min-width: 0; }
.cev .cp .nm { font-style: italic; color: #cfd0d1; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cev .cs { font-size: 12px; color: #85878a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmark { flex: none; }
@media (orientation: landscape) and (max-height: 520px) {
  .calw { flex-direction: row; align-items: flex-start; gap: 16px; margin-top: 8px; }
  .calc { flex: 1.15; min-width: 0; }
  .cday { flex: 1; min-width: 0; position: sticky; top: 0; max-height: calc(100dvh - 90px - var(--sat)); overflow-y: auto; }
  .cd { height: 36px; padding-top: 3px; gap: 2px; font-size: 12.5px; }
  .cwd { margin: 6px 0 2px; }
  .calm { padding: 6px 8px; }
  .cmh .cnav { width: 32px; height: 32px; }
}
.wsum .mono { background: none !important; padding: 0 !important; display: block; }
/* link picker: "+ New entry" and its entry-type chips */
.elpnew { display: grid; gap: 3px; width: 100%; text-align: left; padding: 10px 12px; border: 1px dashed rgba(108,182,255,.55); border-radius: 10px 10px 10px 3px; background: rgba(108,182,255,.07); color: #d4d4d2; font: inherit; cursor: pointer; touch-action: manipulation; }
.elpnew:active { background: rgba(108,182,255,.15); }
.elpn { font: 600 14.5px "Sora", system-ui; color: #9fcaff; }
.etypes { display: flex; flex-wrap: wrap; gap: 6px; }
.etype { height: 34px; padding: 0 12px; border-radius: 9px 9px 9px 2px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.25); color: #a9aaac; font: 600 12.5px "Sora", system-ui; cursor: pointer; touch-action: manipulation; }
.etype.on { color: #e6dcc4; border-color: rgba(201,169,106,.65); background: rgba(201,169,106,.14); }
/* multi-target links + link picker tabs + linked-records list */
.elink.multi::after, .elink[data-n]::after { content: attr(data-n); display: inline-block; margin-left: 2px; padding: 0 4px; border-radius: 6px; font: 700 9px/13px "Geist Mono", monospace; vertical-align: 2px; background: rgba(108,182,255,.18); color: #9fcaff; text-decoration: none; }
.rtc .elink.multi::after { content: "+"; }
.eltabs { grid-template-columns: 1fr 1fr !important; }
.elpane[hidden] { display: none !important; }
.elpi { grid-template-columns: 22px 1fr; column-gap: 8px; align-items: center; }
.elpi > .elpd, .elpi > .elpt { grid-column: 2; }
.elck { grid-row: 1 / span 2; width: 18px; height: 18px; border-radius: 5px; border: 1.5px solid rgba(255,255,255,.3); display: grid; place-items: center; }
.elpi.on { border-color: rgba(108,182,255,.65); background: rgba(108,182,255,.09); }
.elpi.on .elck { background: #6cb6ff; border-color: #6cb6ff; }
.elpi.on .elck::after { content: "✓"; color: #0b1622; font: 800 12px/1 system-ui; }
.elsel { font-size: 9px; letter-spacing: .12em; color: #9fcaff; }
.elnewind { display: grid; gap: 8px; padding: 10px; margin-bottom: 8px; border: 1px dashed rgba(143,209,158,.5); border-radius: 10px 10px 10px 3px; background: rgba(143,209,158,.06); }
.elnewind .elpn { color: #a8e0b4; }
.elbh { display: grid; gap: 2px; }
.elbr { display: flex; gap: 8px; align-items: center; }
.elbr .input { flex: 1; min-width: 0; }
.elmeth { display: flex; flex-wrap: wrap; gap: 5px; }
.elmeth .etype { height: 28px; padding: 0 9px; font-size: 11.5px; }
#link-plant-search { margin-bottom: 6px; }
.elplist .elpls { display: grid; gap: 4px; max-height: min(50vh, 320px); overflow: auto; padding: 4px 2px 2px; }
.elpli { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 7px 8px; border: 1px solid rgba(255,255,255,.08); border-radius: 9px 9px 9px 2px; background: rgba(0,0,0,.25); color: #d4d4d2; font: inherit; cursor: pointer; }
.elpli:active { background: rgba(108,182,255,.12); }
.elpth { flex: none; width: 38px; height: 38px; border-radius: 7px; overflow: hidden; display: grid; place-items: center; background: rgba(255,255,255,.06); color: #9fcaff; font-size: 17px; }
.elpth img { width: 100%; height: 100%; object-fit: cover; }
.elplt { display: grid; gap: 2px; min-width: 0; }
.elplt .elpt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.elpt.it { font-style: italic; }
/* recurring pest treatment */
.recur-row[data-on="no"] .recur-opts { display: none; }
.recur-row[hidden] { display: none !important; }
.recur-opts { display: grid; gap: 8px; margin-top: 8px; }
.wseg.rec { grid-template-columns: 1fr 1fr; max-width: 200px; }
.wseg.unit { grid-template-columns: repeat(3, 1fr); flex: 1; }
.recur-quick { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.recur-quick .etype { height: 30px; font-size: 11.5px; }
.lrec { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin-top: 5px; font: 500 9px "Geist Mono", ui-monospace, monospace; letter-spacing: .1em; color: #f08f86; text-transform: uppercase; }
.lrec .rnext.ov { color: #ff9c8f; font-weight: 700; }
.lrec .rem { text-transform: none; letter-spacing: 0; }

/* ===== v1.4.0: home gear (Settings) – top-left, as faint as the OneDrive light ===== */

.gear6 { position: absolute; z-index: 6; top: max(36px, calc(2px + var(--sat, env(safe-area-inset-top, 0px)))); left: calc(4px + var(--sal, env(safe-area-inset-left, 0px))); width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 10px; color: #a9aaac; opacity: .55; text-decoration: none; -webkit-tap-highlight-color: transparent; transition: opacity .15s, background .15s; }
.gear6 svg { width: 16px; height: 16px; }
/* portrait: centred on the OneDrive light (top 50px); landscape: the light moves to the top edge, so does the gear */
@media (orientation: landscape) and (max-height: 520px) { .gear6 { top: calc(2px + var(--sat, env(safe-area-inset-top, 0px))); } }
.gear6:hover, .gear6:focus-visible { opacity: .95; background: rgba(255,255,255,.05); outline: none; }
.gear6:active { opacity: 1; background: rgba(201,169,106,.10); }
.m6 .t6:not(.t4) { grid-template-columns: repeat(3, 1fr) !important; }

/* ===== specimen cover photo ===== */
.cvt { flex: none; width: 26px; height: 26px; border-radius: 8px 8px 8px 2px; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; color: rgba(201,169,106,.55); background: radial-gradient(circle at 50% 40%, rgba(201,169,106,.10), rgba(0,0,0,.25)); border: 1px solid rgba(201,169,106,.22); }
.cvt svg { width: 14px; height: 14px; }
.cvt img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cvt.has { border-color: rgba(201,169,106,.75); box-shadow: 0 0 0 1px rgba(0,0,0,.35), 0 1px 6px rgba(201,169,106,.18); }
.cvt.cvr:not(.has) { display: none; } /* rows: only show a thumbnail when a cover is chosen */
.wr .cvt, .lf .cvt, .m8r .cvt, .pvi .cvt { width: 24px; height: 24px; }
.tc .cvt { width: 26px; height: 26px; margin-right: 8px; }
.pt.hascv { padding-left: 52px; }
.pt .cvt.cvp { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; }
.thumb.cvbtn { cursor: pointer; -webkit-tap-highlight-color: transparent; position: relative; }
.thumb.cvbtn:focus-visible { outline: 2px solid rgba(201,169,106,.8); outline-offset: 2px; }
.thumb.cvbtn.hascover { border: 1.5px solid rgba(201,169,106,.85) !important; box-shadow: 0 0 0 1px rgba(0,0,0,.4), 0 2px 12px rgba(201,169,106,.22) !important; }
.thumb.cvbtn:after { content: ""; position: absolute; right: 3px; bottom: 3px; width: 7px; height: 7px; border-radius: 50%; background: rgba(201,169,106,.7); box-shadow: 0 0 0 2px rgba(10,12,11,.8); opacity: .0; transition: opacity .15s; }
.thumb.cvbtn:hover:after { opacity: 1; }
.cover-sheet { width: 100%; }
@media (min-width: 600px) { .cover-sheet { min-width: 380px; } }
.cvgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(86px, 1fr)); gap: 8px; max-height: 52vh; overflow-y: auto; padding: 2px; }
.cvi { position: relative; aspect-ratio: 1; border-radius: 10px 10px 10px 3px; overflow: hidden; border: 1px solid rgba(255,255,255,.10); padding: 0; background: rgba(0,0,0,.3); cursor: pointer; }
.cvi img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cvi.on { border: 2px solid #C9A96A; }
.cvi .cvd { position: absolute; left: 0; right: 0; bottom: 0; padding: 3px 5px; font-size: 8.5px !important; color: #e8e2d2; background: linear-gradient(0deg, rgba(0,0,0,.7), transparent); text-align: left; }
.cvi .cvok { position: absolute; right: 5px; top: 5px; width: 18px; height: 18px; border-radius: 50%; background: #C9A96A; color: #111; font: 700 11px/18px system-ui; text-align: center; }
.cvempty { padding: 18px 4px; text-align: center; }

/* ===== propagated individuals tile ===== */
.pvcard { padding: 6px 0 !important; }
.pvg + .pvg { border-top: 1px solid rgba(255,255,255,.05); margin-top: 4px; padding-top: 4px; }
.pvgh { padding: 6px 14px 2px; font-size: 8.5px !important; letter-spacing: .14em !important; color: #8d8f92; text-transform: uppercase; }
.pvi { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 4px 12px 4px 14px; cursor: pointer; border-radius: 8px; }
.pvi:active { background: rgba(201,169,106,.08); }
.pvi .pvt { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.pvi .nm { font: 500 13px "Sora", system-ui; color: #c9cacb; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pvi .pvm { font-size: 9px !important; color: #8d8f92; letter-spacing: .06em !important; text-transform: none !important; }
.pvi .ch { width: 14px; height: 14px; color: #6d6f72; flex: none; }
.pvempty { padding: 12px 14px; color: #8d8f92; font-size: 12.5px; line-height: 1.45; }

/* ===== reminders (Google Calendar / .ics) ===== */
.remb { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; }
.remb .btn5.sm { height: 30px; font-size: 11.5px; text-decoration: none; }
.remst { font-size: 9px !important; letter-spacing: .08em !important; color: #8d8f92; text-transform: none !important; }
.remst.ok { color: #7fcf9b; }
.remst.chg { color: #f2c94c; }
.wcard .remb { padding: 0 0 2px; }
.recinfo { display: block; margin-top: 4px; font-size: 9.5px !important; letter-spacing: .06em !important; color: #b9a678; text-transform: none !important; }
.recinfo b { font-weight: 600; color: #e2d3ad; }
.recinfo b.ov { color: #f08a7a; }
.recinfo.old { color: #7c7d80; }
.log-details .remb { margin-top: 6px; }
.calacct .t { min-width: 0; flex: 1; }
.calacct .inp { margin-top: 6px; }
.calacct .inp input { width: 100%; }
.gc-block .od-title { margin: 0; }

/* ===== map: Street / Satellite toggle ===== */
.basetog { position: absolute; z-index: 25; display: flex; padding: 3px; gap: 2px; border-radius: 9px 9px 9px 3px; right: 12px; top: calc(12px + env(safe-area-inset-top, 0px)); }
.basetog span { padding: 6px 10px; font: 500 11px "Sora", system-ui; color: #a9aaac; border-radius: 7px 7px 7px 2px; cursor: pointer; user-select: none; -webkit-user-select: none; }
.basetog span.on { background: rgba(201,169,106,.22); color: #efe7d2; }
.map-canvas .basetog { top: 10px; right: 10px; }
.map8 > .basetog { top: auto; bottom: calc(var(--m8list-h, 120px) + 32px); right: 10px; }
.map8 .basetog { position: absolute; }
.leaflet-container[data-base="satellite"] .leaflet-control-attribution { font-size: 9px; }
@media (orientation: landscape) and (min-width: 700px) { .map8 > .basetog { bottom: auto; top: calc(14px + env(safe-area-inset-top, 0px)); right: 14px; } }

/* ===== areas ===== */
.m8areas { display: flex; gap: 6px; margin-top: 7px; overflow-x: auto; scrollbar-width: none; align-items: center; padding-bottom: 2px; }
.m8areas::-webkit-scrollbar { display: none; }
.m8areas[hidden] { display: none; }
.m8al { flex: none; font-size: 8px !important; letter-spacing: .16em !important; color: #7c7d80; margin-right: 2px; }
.m8achip { flex: none; height: 26px; padding: 0 9px; display: flex; align-items: center; gap: 6px; border-radius: 8px 8px 8px 2px; font: 500 11.5px "Sora"; color: #c9cacb; white-space: nowrap; cursor: pointer; border: 1px solid rgba(255,255,255,.10); background: rgba(14,17,16,.6); }
.m8achip .sw { width: 9px; height: 9px; border-radius: 3px; background: var(--c); box-shadow: 0 0 0 1px rgba(0,0,0,.4); }
.m8achip i:not(.sw) { font: 600 9px "Geist Mono"; font-style: normal; color: #C9A96A; }
.m8achip.on { border-color: var(--c); background: color-mix(in srgb, var(--c) 18%, rgba(14,17,16,.9)); color: #f1ede2; }
.m8achip.add { color: #C9A96A; border-style: dashed; border-color: rgba(201,169,106,.45); }
.m8achip.add svg { width: 12px; height: 12px; }
.m8aed { margin-left: 8px; font: 500 10.5px "Sora"; color: #C9A96A; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.m8aed svg { width: 11px; height: 11px; }
.arlw { pointer-events: none; }
.arl { position: absolute; transform: translate(-50%, 5px); white-space: nowrap; padding: 3px 7px; border-radius: 7px 7px 7px 2px; font: 600 10.5px "Sora", system-ui; color: #f4f1e8; background: rgba(10,12,11,.72); border: 1px solid var(--c); box-shadow: 0 1px 6px rgba(0,0,0,.4); pointer-events: auto; cursor: pointer; }
.arl i { font: 600 9px "Geist Mono"; font-style: normal; color: var(--c); }
.arl.on { background: color-mix(in srgb, var(--c) 30%, rgba(10,12,11,.85)); }
.arvw { background: none; border: 0; }
.arv { display: block; width: 22px; height: 22px; border-radius: 50%; background: rgba(10,12,11,.55); border: 3px solid var(--c); box-shadow: 0 0 0 2px rgba(255,255,255,.75); box-sizing: border-box; }
.arv.first { background: var(--c); }
.arpanel { position: absolute; z-index: 30; left: 10px; right: 10px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); padding: 10px 12px; border-radius: 14px 14px 14px 4px; display: grid; gap: 8px; }
.arpanel .arh { display: flex; align-items: center; justify-content: space-between; }
.arpanel .arh b { font: 600 14px "Sora"; color: #efe7d2; }
.arhint { font-size: 9.5px !important; color: #a9aaac; letter-spacing: .04em !important; text-transform: none !important; line-height: 1.4; }
.arpanel .input.bad { border-color: #e06c5a; }
.arcols { display: flex; gap: 7px; }
.arcol { width: 22px; height: 22px; border-radius: 6px; cursor: pointer; box-shadow: 0 0 0 1px rgba(0,0,0,.4); }
.arcol.on { box-shadow: 0 0 0 2px #0b0c0d, 0 0 0 4px #efe7d2; }
.arbtns { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.arbtns #area-save { margin-left: auto; }
.map8.area-editing .m8side, .map8.area-editing > .basetog { visibility: hidden; }
.map8.area-editing > .basetog { visibility: visible; top: calc(12px + env(safe-area-inset-top, 0px)); bottom: auto; }
@media (orientation: landscape) and (min-width: 700px) { .arpanel { left: auto; width: 360px; } }
.archip { display: inline-flex; align-items: center; gap: 6px; padding: 2px 8px; border-radius: 7px 7px 7px 2px; font: 600 11px "Sora", system-ui; color: #f1ede2; border: 1px solid var(--c); background: color-mix(in srgb, var(--c) 20%, transparent); }
.archip:before { content: ""; width: 7px; height: 7px; border-radius: 2px; background: var(--c); }
.archip.rec { margin-bottom: 4px; cursor: pointer; }
.map-area { padding: 2px 0 4px; }
.map-area[hidden] { display: none; }
.m8pin.pp { display: flex; align-items: center; gap: 4px; padding: 2px 6px 2px 2px !important; }
.m8pin .cvt { width: 20px; height: 20px; border-radius: 6px 6px 6px 2px; }
.m8pin .mc .cvt { vertical-align: middle; margin-right: 4px; width: 18px; height: 18px; }

/* ===== link picker: plant thumbnails ===== */
.elpth.sm { width: 26px; height: 26px; flex: none; border-radius: 7px 7px 7px 2px; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; border: 1px solid rgba(201,169,106,.35); }
.elpth.sm img { width: 100%; height: 100%; object-fit: cover; }
.elpth.sm.ph { border-color: rgba(255,255,255,.10); opacity: .7; }

/* ===== scan-from-photo editor ===== */
.scan-edit { position: fixed; inset: 0; display: flex; flex-direction: column; background: #070808; color: #e6e6e6; }
.scan-edit .scan-top { flex: none; }
.sed-stage { flex: 1; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 8px; overflow: hidden; }
.sed-wrap { position: relative; display: inline-block; max-width: 100%; max-height: 100%; line-height: 0; }
.sed-canvas { max-width: 100%; max-height: calc(100vh - 330px); max-height: calc(100dvh - 330px); display: block; touch-action: none; }
.sed-crop { position: absolute; box-sizing: border-box; border: 2px solid #C9A96A; box-shadow: 0 0 0 9999px rgba(0,0,0,.55); touch-action: none; cursor: move; }
.sed-h { position: absolute; width: 26px; height: 26px; margin: -13px; border-radius: 50%; background: rgba(201,169,106,.25); border: 2px solid #C9A96A; box-sizing: border-box; touch-action: none; }
.sed-h.nw { left: 0; top: 0; cursor: nwse-resize; } .sed-h.ne { right: 0; top: 0; cursor: nesw-resize; }
.sed-h.sw { left: 0; bottom: 0; cursor: nesw-resize; } .sed-h.se { right: 0; bottom: 0; cursor: nwse-resize; }
.sed-panel { flex: none; padding: 8px 14px calc(12px + env(safe-area-inset-bottom, 0px)); display: grid; gap: 6px; background: rgba(16,18,17,.96); border-top: 1px solid rgba(201,169,106,.18); }
.sed-btns { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.sed-btns .etype.on { background: rgba(201,169,106,.25); color: #efe7d2; border-color: rgba(201,169,106,.6); }
.sed-row { display: grid; grid-template-columns: 82px 1fr 38px; align-items: center; gap: 8px; font-size: 12px; }
.sed-row[hidden] { display: none; }
.sed-row input[type=range] { width: 100%; accent-color: #C9A96A; }
.sed-v { text-align: right; font-size: 10px !important; color: #a9aaac; }
.sed-actions { display: flex; gap: 8px; justify-content: space-between; margin-top: 2px; }
.sed-actions .btn-primary { flex: 1; }
.sed-msg.warn { color: #f2c94c; }
@media (orientation: landscape) and (max-height: 520px) {
  .scan-edit { flex-direction: row; flex-wrap: wrap; }
  .scan-edit .scan-top { width: 100%; }
  .sed-stage { flex: 1 1 50%; height: calc(100% - 56px); }
  .sed-canvas { max-height: calc(100vh - 80px); max-height: calc(100dvh - 80px); }
  .sed-panel { flex: 0 0 min(380px, 46vw); height: calc(100% - 56px); overflow-y: auto; border-top: 0; border-left: 1px solid rgba(201,169,106,.18); align-content: start; }
}

/* ===== v1.4.1: one Propagation section; acquired date from the mother's entry ===== */
.pvi .pvs { font: 500 13px "Sora", system-ui; color: #c9cacb; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pvi .cvt { flex: none; }
.pmo { margin: 2px 0 4px; }
.pmo .pvs { color: #e3d6b8; }
.pmo + .pvgh { border-top: 1px solid rgba(255,255,255,.05); padding-top: 9px; }
.pvlist { padding-bottom: 2px; }
.prop-block .la { padding: 6px 12px 8px; }
.acqnote { display: inline-block; margin-top: 3px; font-size: 9.5px !important; letter-spacing: .04em !important; text-transform: none !important; color: #8fd19e; }
.acqnote[role="link"] { cursor: pointer; text-decoration: underline dotted rgba(143,209,158,.5); text-underline-offset: 2px; }
.fp .acqnote { margin: 5px 2px 0; }

/* ===== v1.4.1: watering history inside the Watering schedule card (replaces the Watering log) ===== */
.whist { margin-top: 8px; border-top: 1px solid rgba(255,255,255,.06); padding-top: 6px; }
.whist > summary { cursor: pointer; list-style: none; font-size: 9px !important; letter-spacing: .14em !important; text-transform: uppercase; color: #8d8f92; padding: 4px 0; display: flex; align-items: center; gap: 6px; }
.whist > summary::-webkit-details-marker { display: none; }
.whist > summary::before { content: '▸'; font-size: 10px; transition: transform .15s; }
.whist[open] > summary::before { transform: rotate(90deg); }
.whl { display: grid; gap: 2px; padding: 2px 0 2px; max-height: 260px; overflow-y: auto; }
.whr { display: flex; align-items: baseline; gap: 10px; padding: 4px 2px; border-radius: 6px; }
.whr .whd { flex: none; font-size: 10.5px !important; color: #c9cacb; letter-spacing: .04em !important; text-transform: none !important; }
.whr .whn { flex: 1; min-width: 0; color: #a9aaac; font-size: 12px; overflow-wrap: anywhere; }
.whr .whx { flex: none; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; margin: -6px -4px -6px 0; color: #6d6f72; border-radius: 6px; cursor: pointer; font-size: 16px; }
.whr .whx:active { background: rgba(227,93,93,.12); color: #e35d5d; }
.whr.flash { background: rgba(201,169,106,.12); }

/* ===== v1.4.1: lineage badge – P (propagation + method) and M (mother plant), between code and binomial ===== */
.lin { display: inline-flex; align-items: center; gap: 3px; flex: none; line-height: 1; vertical-align: middle; }
.lb { display: inline-flex; align-items: center; gap: 2px; }
.lb b { width: 13px; height: 13px; box-sizing: border-box; border-radius: 50%; border: 1px solid rgba(201,169,106,.55); display: inline-flex; align-items: center; justify-content: center;
  font: 600 7.5px/1 "Geist Mono", monospace; letter-spacing: 0; color: #c9a96a; }
.lb i { font: 600 7px/1 "Geist Mono", monospace; font-style: normal; letter-spacing: .05em; color: #a99674; display: inline-flex; align-items: center; gap: 1px; }
.lp.seed b { border-color: rgba(143,209,158,.6); color: #8fd19e; }
.lp.seed i { color: #8fd19e; }
.lp.other b { border-color: rgba(255,255,255,.22); color: #a9aaac; }
.lp.other i { color: #8d8f92; }
.lm b { border-color: rgba(201,169,106,.85); background: rgba(201,169,106,.13); color: #e3cf9f; }
.lsg { width: 8px; height: 8px; fill: none; stroke: currentColor; stroke-width: 1.1; stroke-linecap: round; }
/* rows never wrap: the binomial truncates with an ellipsis */
.wr .code, .wr .lin, .wr .dt { flex: none; }
.wr .nm { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wr { gap: 9px; }
.ap6 .tc { width: 148px; gap: 5px; }
.ap6 .tc .code { flex: none; }
.lf .lin { margin-right: 2px; }
.pvi .lin { margin-left: 4px; }
.ap6 .tc .cvt { margin-right: 3px; }
/* v1.4.1: the acquired-from-propagation note wraps instead of being clipped */
.kvs .kv.kvacq { align-items: flex-start; }
.kvs .kv.kvacq .v { white-space: normal; max-width: 70%; overflow: visible; }
.kvs .kv.kvacq .acqnote { white-space: normal; line-height: 1.35; text-align: right; }

/* ---------- v1.4.1: Acquired location "From specimen" ---------- */
.loc-block .lrow { align-items: flex-start; }
.loc-block .lrow .x { flex: 1; min-width: 0; }
.locbtns { display: flex; gap: 6px; flex: none; align-items: center; margin-left: auto; }
.locb { cursor: pointer; }
.ib5.locpinb { width: 34px; height: 34px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; color: #c9a96a; }
.ib5.locpinb svg { width: 16px; height: 16px; }
.ib5.locpinb.on { box-shadow: inset 0 0 0 1px rgba(201,169,106,.45); }
.locsrcb { font-size: 12px !important; padding: 0 9px !important; gap: 5px; }
.locsrcb svg { width: 13px; height: 13px; }
.locsrcb.on { color: #e4cf9f; box-shadow: inset 0 0 0 1px rgba(201,169,106,.45); }
.loc-block .mapsl { display: block; margin-top: 6px; }
.loc-block .mapsl .maps-link { height: 28px; font-size: 12px; }
.srcchip { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 4px 9px 4px 7px; border-radius: 999px; border: 1px solid rgba(201,169,106,.45); background: rgba(201,169,106,.08); color: #e4cf9f; font: 500 12.5px "Sora", system-ui; text-decoration: none; }
.srcchip[role="link"] { cursor: pointer; }
.srcchip svg { width: 12px; height: 12px; flex: none; }
.srcchip .sct { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.srcchip i { font-style: italic; color: #d8d3c4; }
.origc { margin: 0 14px 12px 58px; padding: 8px 10px; border-radius: 9px; border: 1px dashed rgba(255,255,255,.12); display: flex; flex-direction: column; gap: 3px; }
.origc .ol { font-size: 8.5px !important; letter-spacing: .14em !important; color: #8d8f92; text-transform: uppercase; }
.origc .ot { font: 500 13px "Sora", system-ui; color: #d4d4d2; }
.origc .cc { font-size: 9px !important; letter-spacing: .06em; color: #8d8f92; text-transform: none !important; }
.origc .gmaps-link { margin-top: 3px; align-self: flex-start; }
.ownfb { margin: -6px 14px 12px 58px; font-size: 8.5px !important; letter-spacing: .05em !important; color: #74767a; text-transform: none !important; }
.srcsug { display: inline-flex; align-items: center; gap: 5px; margin-top: 6px; padding: 3px 9px; border-radius: 999px; border: 1px dashed rgba(201,169,106,.5); color: #d9c18e; font: 500 12px "Sora", system-ui; cursor: pointer; }
.srcsug svg { width: 12px; height: 12px; }
.srcgone { color: #c99a6a !important; text-transform: none !important; }
.src-dialog .srcl { max-height: 52vh; overflow: auto; display: flex; flex-direction: column; gap: 2px; margin-top: 2px; }
.srci { display: flex; align-items: center; gap: 10px; padding: 6px 8px; border-radius: 9px; cursor: pointer; }
.srci:hover, .srci:focus { background: rgba(255,255,255,.05); outline: none; }
.srci.on { background: rgba(201,169,106,.10); box-shadow: inset 0 0 0 1px rgba(201,169,106,.35); }
.srci.off { opacity: .4; cursor: not-allowed; }
.srci .cvt { width: 28px; height: 28px; flex: none; }
.srci .srct { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.srci .srch { display: flex; align-items: center; gap: 8px; min-width: 0; }
.srci .nm { font: 500 13px "Sora", system-ui; color: #c9cacb; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.srci .sll { font-size: 9px !important; color: #8d8f92; text-transform: none !important; letter-spacing: .04em !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.srctd svg { color: #c9a96a; }
/* map: places inherited from a source specimen */
.m8r .lc.inh { color: #bfae84; font-style: italic; }
.m8pin.inh .mc { border-style: dashed; border-color: rgba(201,169,106,.6); }
.m8pin.inhs .mc { box-shadow: inset 0 -2px 0 rgba(201,169,106,.35); }
.m8pin .m8inh { font-style: normal; color: #c9a96a; margin-right: 3px; }
.srcrow { margin: -4px 14px 8px 58px; min-width: 0; }

/* ---------- v1.4.1: zones in the Current location field ---------- */
.map-zrow { display: flex; align-items: center; gap: 8px; min-height: 30px; }
.map-zrow .map-area { flex: 1; min-width: 0; }
.map-zrow .map-area[hidden] + .map-newzone { margin-left: auto; }
.map-newzone { flex: none; white-space: nowrap; }
.map-zonehint { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.map-zonehint[hidden] { display: none; }
.map-overlay.area-editing .map-bottom, .map-overlay.area-editing .map-search, .map-overlay.area-editing .map-results { visibility: hidden; }
.map-overlay .arpanel { bottom: calc(14px + env(safe-area-inset-bottom, 0px)); }
.gsi.gzone { border-left: 2px solid var(--c, #c9a96a); }
.gsi .gzi { flex: none; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; color: var(--c, #c9a96a); margin-right: 6px; }
.gsi .gzi svg { width: 18px; height: 18px; }
.gsi.gzone .tsm { color: #c9a96a; }
.gsi.gzone .gsn { flex: 1; }
.m8achip.nopoly { border-style: dashed !important; opacity: .8; }

/* ---------- v1.4.1 H: watering days ---------- */
.wseg.wdsel { display: flex; flex-wrap: wrap; }
.wseg.wdsel span { flex: 1 1 auto; min-width: 74px; }
.wseg.wdsel .wdc.gone { text-decoration: line-through; opacity: .7; }
.wseg.wdsel .wda { flex-basis: 100%; }
.whint { font-size: 9px; letter-spacing: .08em; color: #7d7f83; margin-top: 8px; line-height: 1.5; }
.wnext { font-size: 9.5px; letter-spacing: .08em; color: #7cc0f0; margin-top: 8px; line-height: 1.5; }
.wdchips { display: flex; flex-wrap: wrap; gap: 5px; margin: 3px 0 2px; }
.wdchip { font: 600 9px "Geist Mono", monospace; letter-spacing: .12em; text-transform: uppercase; padding: 3px 7px; border-radius: 6px 6px 6px 2px; color: #a9d6f5; border: 1px solid rgba(124,192,240,.45); background: rgba(124,192,240,.08); }
.wdchip.gone { color: #f4a196; border-color: rgba(240,138,122,.5); background: rgba(240,138,122,.08); text-decoration: line-through; }
.wdwarn { display: block; color: #f4a196 !important; font-size: 9px; letter-spacing: .08em; margin-top: 3px; }
.wdset { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 6px; }
.wdset .wdc { flex: 1 1 calc(25% - 6px); min-width: 64px; display: flex; align-items: center; justify-content: center; min-height: 36px; padding: 2px 6px; border-radius: 8px 8px 8px 2px; font: 600 11.5px "Sora", system-ui; color: #9d9fa3; background: rgba(0,0,0,.25); border: 1px solid rgba(255,255,255,.1); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.wdset .wdc.on { color: #e6dcc4; border-color: rgba(201,169,106,.6); background: linear-gradient(180deg, rgba(40,44,41,.95), rgba(26,29,27,.95)); box-shadow: inset 0 1px 0 rgba(226,200,146,.2); }
.wdset .wdc.on::before { content: "✓"; margin-right: 5px; color: #c9a96a; }
/* the plants of one watering day (sheet, live list) */
.wsl { display: grid; }
.wsr { display: flex; align-items: center; gap: 10px; padding: 9px 2px; min-width: 0; }
.wsr + .wsr { border-top: 1px solid rgba(255,255,255,.06); }
.wsr .cvt { flex: none; width: 38px; height: 38px; }
.wsr .wst { flex: 1; min-width: 0; display: grid; gap: 3px; }
.wsr .wsh { display: flex; align-items: center; gap: 8px; min-width: 0; }
.wsr .wsh .nm { font-style: italic; color: #cfd0d1; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wsr .wss { font-size: 9px; letter-spacing: .08em; color: #8d8e91; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wsr.ov .wss { color: #f4a196; }
.wsr.done .wss { color: #8fd19e; }
.wsr .wsok { color: #8fd19e; font-size: 14px; padding: 0 10px; }
.wsr .wsm { flex: none; }
.water-dialog { width: min(480px, calc(100vw - 24px)); }
.water-dialog .wsl { max-height: min(60vh, 520px); overflow: auto; margin: 4px 0 6px; }
.water-dialog .dialog-buttons { flex-wrap: wrap; }
.wday .wdhead { margin-bottom: 12px; }
.wday .wdhead .lrow { align-items: center; }
.wday .wdhead .x { flex: 1; }
.wday .wsl { padding: 6px 14px; }
.wdfoot { font-size: 9px; letter-spacing: .08em; color: #7d7f83; margin: 12px 4px; line-height: 1.6; }
/* calendar: one grouped watering event per day */
.cev.cgrp .cgc { font-family: "Geist Mono", monospace; font-size: 10px; letter-spacing: .06em; }
.cev.cgrp .cgo { flex: none; }
.calrem { margin-top: 14px; }
.calrem .cdh .ib { width: 34px; height: 34px; }
.wremit .wrem, .calrem .wrem { margin-top: 8px; }
.wrem { display: grid; gap: 10px; }
.wremd { padding: 10px 12px; border-radius: 10px 10px 10px 3px; background: rgba(0,0,0,.22); border: 1px solid rgba(255,255,255,.08); display: grid; gap: 8px; }
.wremd[data-state="changed"] { border-color: rgba(227,194,122,.55); }
.wremd[data-state="added"] { border-color: rgba(143,209,158,.35); }
.wremh { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.wremh b { font: 600 14px "Sora", system-ui; color: #a9d6f5; }
.wremh .mono { font-size: 9px; letter-spacing: .1em; color: #8d8e91; background: none !important; padding: 0 !important; }
.wremd[data-state="added"] .wremh .mono { color: #8fd19e; }
.wremchg { margin: 0; display: grid; gap: 4px; padding: 8px 10px; border-radius: 8px 8px 8px 2px; background: rgba(227,194,122,.08); border: 1px solid rgba(227,194,122,.35); }
.wremchg b { color: #e3c27a; font: 600 12.5px "Sora", system-ui; }
.wremchg span { color: #c9c3b5; font-size: 12px; line-height: 1.45; }
.wremb { display: flex; flex-wrap: wrap; gap: 6px; }
.wremb a { text-decoration: none; }
.wremnone { font-size: 9px; letter-spacing: .1em; color: #7d7f83; align-self: center; }
.wremf { display: grid; gap: 6px; justify-items: start; }
.wremf .mono { font-size: 9px; letter-spacing: .06em; color: #7d7f83; line-height: 1.55; background: none !important; padding: 0 !important; }

/* ---------- v1.4.1 I: Donor information group ---------- */
.fgrp .fgc { padding: 12px 14px 4px; display: grid; gap: 0; }
.fgrp .fgc .fp { margin-bottom: 10px; }
@media (min-width: 720px) { .fgrp .fgc { grid-template-columns: 1fr 1fr; column-gap: 14px; } .fgrp .fgc .fp[data-col="donorCompany"], .fgrp .fgc .fp[data-col="donorAddress"], .fgrp .fgc .fp[data-col="donor"] { grid-column: 1 / -1; } }
.kvs.kvgrp .tel-link { display: inline-flex; align-items: center; gap: 6px; color: #a9d6f5; text-decoration: none; }
.kvs.kvgrp .tel-link .ic, .kvs.kvgrp .tel-link svg { width: 14px; height: 14px; }
.kvs.kvgrp .gmaps-link { margin-top: 4px; }
.col-name .col-grp { font-size: 9px; letter-spacing: .1em; color: #c9a96a; text-transform: uppercase; }
/* v1.4.1 polish: 7 compact day toggles; long names wrap to 2 lines in watering lists; full-width reminder block */
.wdset { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.wdset .wdc { min-width: 0; padding: 2px 0; font-size: 12px; }
.wdset .wdc.on::before { content: none; }
.wdset .wdc.on { box-shadow: inset 0 0 0 1px rgba(201,169,106,.35), inset 0 1px 0 rgba(226,200,146,.2); }
.wsr .wsh { flex-wrap: wrap; row-gap: 2px; }
.wsr .wsh .nm { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.25; flex: 1 1 120px; }
.wsr .wsm { padding-left: 10px; padding-right: 10px; }
.it.wremit { align-items: stretch; }
.it.wremit > .ic2 { display: none; }
.it.wremit > .t { width: 100%; }

/* ===== v1.4.2: Map search bar + My location, zone chips inline with All, specimen focus (pulse + label), area sections, form area chips ===== */
.m8search { display: flex; align-items: center; gap: 8px; margin-top: 9px; height: 38px; padding: 0 4px 0 11px; border-radius: 10px 10px 10px 3px; border: 1px solid rgba(201,169,106,.28); background: rgba(14,17,16,.82); }
.m8search:focus-within { border-color: rgba(201,169,106,.7); box-shadow: 0 0 0 3px rgba(201,169,106,.12); }
.m8search .m8si { flex: none; display: flex; color: #8d8f8c; } .m8search .m8si svg { width: 15px; height: 15px; }
.m8search input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: none; color: #efe7d2; font: 400 14px "Sora"; -webkit-appearance: none; appearance: none; }
.m8search input::placeholder { color: #7a7d7a; }
.m8search input::-webkit-search-cancel-button { filter: invert(.7); }
.m8me { flex: none; width: 32px; height: 30px; display: flex; align-items: center; justify-content: center; border-radius: 8px 8px 8px 2px; color: #C9A96A; border: 1px solid rgba(201,169,106,.32); cursor: pointer; }
.m8me svg { width: 16px; height: 16px; } .m8me.busy svg { animation: m8spin 1s linear infinite; }
@keyframes m8spin { to { transform: rotate(360deg); } }
.m8chips .m8areas { display: contents; margin: 0; }
.m8chips .m8achip { height: 28px; font-size: 12px; }
.m8chips .m8achip.nopoly { border-style: dashed !important; border-color: color-mix(in srgb, var(--c) 70%, transparent) !important; opacity: .9; }
.m8chips .m8achip.nopoly .sw { background: transparent; box-shadow: inset 0 0 0 1.5px var(--c); }
.m8you { filter: drop-shadow(0 0 6px rgba(47,124,246,.7)); }
.m8hit { position: absolute; transform: translate(-50%, -100%); display: flex; flex-direction: column; align-items: center; font: 600 10px "Geist Mono"; letter-spacing: .06em; color: #f4efe2; white-space: nowrap; text-shadow: 0 1px 3px #000; pointer-events: none; }
.m8hit i { order: 2; width: 14px; height: 14px; margin-top: 3px; border-radius: 50%; border: 3px solid #fff; background: #e0533d; box-shadow: 0 1px 6px rgba(0,0,0,.6); }
/* specimen focus */
.m8focw { overflow: visible; }
.m8focus { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: auto; cursor: pointer; }
.m8focus .m8dot { position: absolute; left: -9px; top: -9px; width: 18px; height: 18px; border-radius: 50%; background: #C9A96A; border: 3px solid #fff; box-shadow: 0 0 0 2px rgba(0,0,0,.45), 0 0 14px rgba(226,200,146,.9); }
.m8focus .m8pulse { position: absolute; left: -26px; top: -26px; width: 52px; height: 52px; border-radius: 50%; border: 3px solid #e2c892; background: rgba(226,200,146,.18); animation: m8pulse 1.6s ease-out infinite; }
@keyframes m8pulse { 0% { transform: scale(.35); opacity: 1; } 100% { transform: scale(1.7); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .m8focus .m8pulse { animation: none; opacity: .7; } }
.m8focus .m8flab { position: absolute; left: 16px; top: -14px; padding: 4px 9px; border-radius: 8px 8px 8px 2px; white-space: nowrap; font: italic 500 12px "Sora"; color: #f1ede2; background: rgba(14,17,16,.92); border: 1px solid rgba(201,169,106,.75); box-shadow: 0 4px 14px rgba(0,0,0,.5); }
.m8focus .m8flab b { font: 600 10.5px "Geist Mono"; font-style: normal; color: #e2c892; letter-spacing: .06em; margin-right: 4px; }
.m8fcard { display: flex; align-items: center; gap: 9px; margin: -2px 10px 8px; padding: 8px 8px 8px 10px; border-radius: 10px 10px 10px 3px; border: 1px solid rgba(201,169,106,.55); background: rgba(58,54,42,.35); }
.m8fcard[hidden] { display: none; }
.m8fcard .m8fn { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.m8fcard .m8fn b { font: italic 500 13px "Sora"; color: #efe7d2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m8fcard .m8fn .mono { font-size: 8.5px; letter-spacing: .08em; color: #a9a58f; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m8fcard .btn5 { flex: none; } .m8fx { flex: none; width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; color: #9d9fa3; cursor: pointer; } .m8fx svg { width: 13px; height: 13px; }
.m8code { flex: none; display: inline-flex; cursor: pointer; border-radius: 6px; padding: 3px 2px; margin: -3px -2px; }
.m8code:hover .code, .m8code:focus-visible .code { box-shadow: 0 0 0 1px rgba(201,169,106,.7); }
.m8sec { padding: 9px 14px 4px; font: 600 8px "Geist Mono"; letter-spacing: .16em; text-transform: uppercase; color: #8d8f8c; border-top: 1px solid rgba(201,169,106,.12); }
.m8sec.nopin { color: #C9A96A; }
.m8pinit { flex: none; display: inline-flex; align-items: center; gap: 4px; height: 26px; padding: 0 9px; border-radius: 7px 7px 7px 2px; border: 1px dashed rgba(201,169,106,.6); color: #e2c892; font: 600 9px "Geist Mono"; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; }
.m8pinit svg { width: 12px; height: 12px; }
/* plant form: one-tap area chips under Current location */
.zchips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 2px; align-items: center; }
.zchips .zl { width: 100%; font: 600 8.5px "Geist Mono"; letter-spacing: .16em; text-transform: uppercase; color: #8d8f8c; margin-bottom: 1px; }
.zchip { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 12px; border-radius: 9px 9px 9px 2px; border: 1px solid rgba(201,169,106,.25); background: rgba(20,22,21,.9); color: #d4d4d2; font: 500 13px "Sora"; cursor: pointer; -webkit-user-select: none; user-select: none; }
.zchip .sw { width: 9px; height: 9px; border-radius: 3px; background: var(--c, #C9A96A); }
.zchip.nopoly .sw { background: transparent; box-shadow: inset 0 0 0 1.5px var(--c, #C9A96A); }
.zchip[aria-checked="true"] { border-color: var(--c, #C9A96A); background: color-mix(in srgb, var(--c, #C9A96A) 22%, rgba(14,17,16,.95)); color: #f4efe2; box-shadow: 0 0 0 1px var(--c, #C9A96A) inset; }
.zchip[aria-checked="true"]:before { content: "✓"; font-size: 11px; color: #e2c892; }
.zpin { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 12px; border-radius: 9px 9px 9px 2px; border: 1px dashed rgba(201,169,106,.55); color: #e2c892; font: 600 9.5px "Geist Mono"; letter-spacing: .12em; text-transform: uppercase; cursor: pointer; background: none; }
.zpin svg { width: 13px; height: 13px; }
.zpin[hidden] { display: none; }
.m8fcard .btn5.sm { height: 32px; font-size: 12.5px; padding: 0 10px; gap: 5px; } .m8fcard .btn5.sm svg { width: 13px; height: 13px; }
.map8.inarea .m8lh .m8op { display: none; }

/* ===== v1.4.3: +/− and compass, deeper zoom, plan view, in-map pin placement, pin labels ===== */
.mapctl { position: absolute; z-index: 800; right: 10px; display: flex; flex-direction: column; border-radius: 10px 10px 10px 3px; overflow: hidden; border: 1px solid rgba(201,169,106,.3); background: rgba(14,17,16,.86) !important; }
.mapctl .mc-b, .mapctl .mc-b.leaflet-control-zoom-in, .mapctl .mc-b.leaflet-control-zoom-out { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; font: 400 22px/1 "Sora", system-ui; color: #e6dcc4; cursor: pointer; text-indent: 0; position: relative; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.mapctl .mc-b + .mc-b { border-top: 1px solid rgba(255,255,255,.08); }
.mapctl .mc-b.off { color: #5d615e; cursor: default; }
.mapctl .compass .needle { display: block; width: 24px; height: 24px; transition: transform .15s; } .mapctl .compass .needle svg { width: 24px; height: 24px; display: block; }
.mapctl .compass .brg { position: absolute; bottom: 1px; left: 0; right: 0; text-align: center; font-size: 7px; letter-spacing: .08em; color: #a9a58f; }
.mapctl .compass:not(.rot) .brg { display: none; }
.map8 .mapctl { top: calc(var(--m8top-h, 250px) + 8px); }
.map-canvas .mapctl.pick { top: 56px; }
.map-canvas { position: relative; }
@media (orientation:landscape) and (max-height:520px) { .map8 .mapctl { top: calc(12px + var(--sat, 0px)); right: calc(12px + var(--sar, 0px)); } }
/* pin labels on/off (dense greenhouses) */
.mk.nolabels .m8pin.pp .mc, .map8.nolabels .m8pin.pp .mc { font-size: 0; padding: 0; width: 12px; height: 12px; min-width: 0; border-radius: 50%; }
.mk.nolabels .m8pin.pp .mc .cvt, .map8.nolabels .m8pin.pp .mc .cvt { display: none; }
.m8lbl.off { opacity: .55; }
/* in-map pin placement */
.m8banner { position: absolute; z-index: 900; left: 10px; right: 10px; top: calc(var(--m8top-h, 250px) - 4px); display: flex; align-items: center; gap: 8px; padding: 9px 10px 9px 12px; border-radius: 12px 12px 12px 3px; background: rgba(14,17,16,.94) !important; border: 1px solid rgba(226,200,146,.7); box-shadow: 0 6px 22px rgba(0,0,0,.45); color: #efe7d2; font: 500 13px "Sora"; }
.m8banner[hidden] { display: none; }
.m8banner .bt { flex: 1; min-width: 0; } .m8banner .bt b { color: #e2c892; } .m8banner .bt small { display: block; font: 500 8.5px "Geist Mono"; letter-spacing: .1em; text-transform: uppercase; color: #a9a58f; margin-top: 2px; }
.m8banner .btn5 { height: 34px; font-size: 13px; padding: 0 12px; flex: none; }
.map8.placing .m8leaf { cursor: crosshair; }
.m8drag { position: absolute; left: -14px; top: -38px; width: 28px; height: 38px; cursor: grab; }
.m8drag svg { width: 28px; height: 38px; display: block; filter: drop-shadow(0 2px 4px rgba(0,0,0,.55)); }
.m8drag b { position: absolute; left: 30px; top: 2px; white-space: nowrap; font: 600 10.5px "Geist Mono"; color: #fff; background: rgba(14,17,16,.9); border: 1px solid rgba(226,200,146,.75); border-radius: 6px 6px 6px 2px; padding: 2px 6px; }
.m8dragw { overflow: visible; }
/* plan view: the zone fills the screen */
.map8.plan .m8top, .map8.plan .m8list { display: none !important; }
.map8.plan .m8side { display: contents !important; }
.m8plan { position: absolute; z-index: 850; left: 0; right: 0; top: 0; display: flex; align-items: center; gap: 8px; padding: calc(10px + var(--sat, 0px)) 12px 8px; background: linear-gradient(180deg, rgba(10,12,11,.92), rgba(10,12,11,.78)); border-bottom: 1px solid rgba(201,169,106,.25); color: #efe7d2; }
.m8plan[hidden] { display: none; }
.m8plan .pt { flex: 1; min-width: 0; font: 600 15px "Sora"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .m8plan .pt small { display: block; font: 500 8.5px "Geist Mono"; letter-spacing: .12em; text-transform: uppercase; color: #a9a58f; }
.m8plan .btn5 { height: 34px; font-size: 12.5px; padding: 0 10px; gap: 5px; flex: none; } .m8plan .btn5 svg { width: 14px; height: 14px; }
.m8plan .btn5.on { border-color: rgba(226,200,146,.85) !important; color: #f4efe2; background: rgba(58,54,42,.85) !important; }
.map8.plan .mapctl { top: calc(64px + var(--sat, 0px)); }
.map8.plan .m8banner { top: calc(64px + var(--sat, 0px)); right: 62px; }
.m8pstrip { position: absolute; z-index: 850; left: 0; right: 0; bottom: 0; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding: 8px 10px calc(10px + var(--sab, 0px)); background: linear-gradient(0deg, rgba(10,12,11,.92), rgba(10,12,11,.75)); border-top: 1px solid rgba(201,169,106,.25); }
.m8pstrip::-webkit-scrollbar { display: none; } .m8pstrip[hidden] { display: none; }
.m8pp { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px; border-radius: 9px 9px 9px 2px; border: 1px solid rgba(201,169,106,.3); background: rgba(20,22,21,.92); color: #d4d4d2; font: 500 12px "Sora"; cursor: pointer; white-space: nowrap; }
.m8pp b { font: 600 10.5px "Geist Mono"; color: #e2c892; } .m8pp.nopin { border-style: dashed; } .m8pp.nopin:after { content: "Pin it"; font: 600 8.5px "Geist Mono"; letter-spacing: .1em; text-transform: uppercase; color: #C9A96A; }
.m8pp.on { border-color: #e2c892; background: rgba(58,54,42,.9); }
.map8.plan .leaflet-control-scale { margin-bottom: 64px !important; }
.map8.plan .basetog { bottom: 64px !important; }
.leaflet-control-scale-line { background: rgba(255,255,255,.85) !important; color: #1b1f1d !important; border-color: #1b1f1d !important; font: 600 10px "Geist Mono" !important; }
.m8gridl { pointer-events: none; }
.map8.area-editing .m8plan, .map8.area-editing .m8pstrip, .map8.area-editing .m8banner { display: none !important; }
.map8.area-editing .mapctl { top: calc(60px + env(safe-area-inset-top, 0px)); }
.m8pinit.mv { border-style: solid; border-color: rgba(201,169,106,.3); color: #a9a58f; padding: 0 7px; margin-left: 2px; }

/* ===== v1.5.0: shared map component bits ===== */
.map-top .mk-search { margin: 8px 0 0; }
.map-top .map-chips { margin-top: 7px; }
.map-top .map-chips[hidden] { display: none; }
.m8pin.pk .mc { opacity: .92; }
.rhb { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.rhb .btn5 { height: 30px; }
.rhb .btn5.off { opacity: .45; cursor: default; }
.rhh { margin-top: 5px; font-size: 8.5px; letter-spacing: .1em; color: #b39a6b; text-transform: uppercase; }

/* ===== v1.5.0: Find plant – Where are you? ===== */
.fpscr { position: fixed; inset: 0; z-index: 30; background: #0b0c0d; }
.fpmap { position: absolute; inset: 0; overflow: hidden; touch-action: none; }
.fpleaf { position: absolute; inset: 0; z-index: 0; background: #e5e3df; touch-action: none; }
.fptop { position: absolute; z-index: 700; left: 0; right: 0; top: 0; padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 8px; background: linear-gradient(180deg, rgba(11,12,13,.94) 70%, rgba(11,12,13,0)); pointer-events: none; }
.fptop > * { pointer-events: auto; }
.fptop .tb { margin: 0; }
.fptop .tb h1 { font-size: 21px !important; }
.fptarget { display: flex; align-items: center; gap: 10px; margin-top: 8px; padding: 7px 10px 7px 7px; border-radius: 12px 12px 12px 3px; border: 1px solid rgba(226,200,146,.55); }
.fptarget .cvt { flex: none; width: 46px; height: 46px; border-radius: 9px 9px 9px 3px; overflow: hidden; display: flex; align-items: center; justify-content: center; background: rgba(201,169,106,.12); color: #c9a96a; }
.fptarget .cvt img { width: 100%; height: 100%; object-fit: cover; }
.fptarget .cvt svg { width: 22px; height: 22px; }
.fpt-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fpt-t b { font: italic 500 14px "Sora"; color: #f1ede2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fpt-t .mono { font-size: 8.5px; letter-spacing: .1em; color: #b8b2a0; text-transform: uppercase; }
.fpt-t i { font-style: normal; }
.fpmap .mapctl { top: calc(var(--fptop-h, 230px) + 8px); }
.fpmap .basetog { top: auto; bottom: calc(var(--fpbar-h, 150px) + 10px); right: 12px; }
.fpmap .leaflet-control-scale { margin-bottom: calc(var(--fpbar-h, 150px) + 10px) !important; }
.fpbar, .fpedit { position: absolute; z-index: 700; left: 10px; right: 10px; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); padding: 11px 12px; border-radius: 14px 14px 14px 4px; border: 1px solid rgba(201,169,106,.3); background: rgba(14,17,16,.92) !important; }
.fpbar[hidden], .fpedit[hidden] { display: none; }
.fps { font: 400 13px/1.45 "Sora"; color: #d9d6cc; }
.fps b { color: #f1ede2; font-weight: 600; }
.fps .fpd { color: #e2c892; }
.fpbtns { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.fpbtns .btn5 { height: 36px; }
.fpbtns #fp-start { flex: 1; min-width: 110px; justify-content: center; }
.fpbtns .btn5.off { opacity: .4; cursor: default; }
.fpw-w { background: none; border: 0; }
.fpw-pt { position: absolute; left: 0; top: 0; width: 0; height: 0; cursor: pointer; }
.fpw-pt i { position: absolute; left: -11px; top: -11px; width: 22px; height: 22px; border-radius: 50%; background: #1b1f1d; border: 3px solid #ffffff; box-shadow: 0 0 0 2px rgba(0,0,0,.45); }
.fpw-pt span { position: absolute; left: 14px; top: -10px; padding: 2px 6px; border-radius: 6px 6px 6px 2px; white-space: nowrap; font: 600 9.5px "Geist Mono"; letter-spacing: .05em; color: #f1ede2; background: rgba(14,17,16,.86); pointer-events: none; }
.fpw-pt.here i { background: #2f7cf6; border-color: #fff; width: 26px; height: 26px; left: -13px; top: -13px; box-shadow: 0 0 0 6px rgba(47,124,246,.3); }
.fpw-pt.here span { background: #2f7cf6; color: #fff; }
.fpw-pt.end i { border-color: #e2c892; }
.fpw-pt.sel i { background: #e2c892; border-color: #fff; box-shadow: 0 0 0 6px rgba(226,200,146,.35); }
.fpw-pt.ed i { border-style: dashed; }
.fp-dlab { position: absolute; left: 0; top: 0; transform: translate(-50%, -150%); padding: 3px 8px; border-radius: 8px 8px 8px 2px; background: #e2c892; color: #101210; font: 700 11px "Geist Mono"; white-space: nowrap; }
.fpmap.editing .fptop .mk-search, .fpmap.editing .fptop .mk-chips { display: none; }
.fp-cant { margin-top: 30px; padding: 16px; font-size: 14px; }
.m8pin.tgt .mc { box-shadow: 0 0 0 2px #e2c892; }

/* ===== v1.5.0: Find plant – live camera ===== */
.fpcam { position: fixed; inset: 0; z-index: 1200; background: #000; overflow: hidden; touch-action: none; color: #f1ede2; }
.fpcam video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fpc-nocam { position: absolute; left: 20px; right: 20px; top: 42%; text-align: center; font: 400 13.5px/1.5 "Sora"; color: #b9b5a8; }
.fpc-nocam[hidden] { display: none; }
.fpc-arrow { position: absolute; left: 50%; top: 58%; width: 150px; height: 150px; margin: -75px 0 0 -75px; fill: rgba(226,200,146,.42); stroke: rgba(255,255,255,.75); stroke-width: 2; filter: drop-shadow(0 4px 12px rgba(0,0,0,.4)); transition: transform .15s; pointer-events: none; }
.fpc-cross { position: absolute; left: 50%; top: 42%; width: 44px; height: 44px; margin: -22px 0 0 -22px; border: 2px solid rgba(255,255,255,.8); border-radius: 50%; pointer-events: none; }
.fpc-cross::before, .fpc-cross::after { content: ""; position: absolute; background: rgba(255,255,255,.85); }
.fpc-cross::before { left: 50%; top: -9px; bottom: -9px; width: 2px; margin-left: -1px; } .fpc-cross::after { top: 50%; left: -9px; right: -9px; height: 2px; margin-top: -1px; }
.fpc-marks { position: absolute; inset: 0; }
.fpc-m { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; }
.fpc-m i { width: var(--s); height: var(--s); border-radius: 50%; border: 2px solid rgba(255,255,255,.75); background: rgba(255,255,255,.12); }
.fpc-m b { font: 600 10px "Geist Mono"; padding: 2px 6px; border-radius: 6px 6px 6px 2px; background: rgba(14,17,16,.7); }
.fpc-m.tgt i { border-color: #e2c892; background: rgba(226,200,146,.25); }
.fpc-m.on i { border-width: 3px; border-color: #7fd38f; box-shadow: 0 0 0 4px rgba(127,211,143,.35); }
.fpc-m.on b { background: #7fd38f; color: #0d1a10; }
.fpc-top { position: absolute; left: 10px; right: 10px; top: calc(10px + env(safe-area-inset-top, 0px)); display: flex; gap: 10px; align-items: flex-start; }
.fpc-txt { flex: 1; padding: 9px 12px; border-radius: 12px 12px 12px 3px; background: rgba(14,17,16,.72); display: flex; flex-direction: column; gap: 3px; }
.fpc-txt b { font: 600 15px/1.35 "Sora"; }
.fpc-txt .mono { font-size: 9px; letter-spacing: .08em; color: #c9c3b0; }
.fpc-id { position: absolute; left: 50%; top: calc(42% + 34px); transform: translateX(-50%); padding: 7px 12px; border-radius: 12px 12px 12px 3px; background: rgba(14,17,16,.82); border: 1px solid #7fd38f; white-space: nowrap; font: italic 500 13px "Sora"; cursor: pointer; text-align: center; }
.fpc-id[hidden] { display: none; }
.fpc-id b { font: 700 11px "Geist Mono"; font-style: normal; color: #7fd38f; margin-right: 5px; }
.fpc-id .mono { display: block; font-style: normal; font-size: 8.5px; color: #c9c3b0; margin-top: 2px; }
.fpc-id.tgt { border-color: #e2c892; } .fpc-id .fpc-star { color: #e2c892; margin-right: 4px; font-style: normal; }
.fpc-mini { position: absolute; right: 10px; bottom: calc(66px + env(safe-area-inset-bottom, 0px)); width: 120px; height: 120px; border-radius: 12px 12px 12px 3px; background: rgba(14,17,16,.72); border: 1px solid rgba(201,169,106,.35); }
.fpc-mini .ml { stroke: rgba(255,255,255,.55); stroke-width: calc(var(--k, .1) * 2); }
.fpc-mini .mr { fill: none; stroke: #e2c892; stroke-width: calc(var(--k, .1) * 2.4); stroke-dasharray: calc(var(--k, .1) * 2) calc(var(--k, .1) * 4); }
.fpc-mini .fpc-mp { fill: #1b1f1d; stroke: #fff; stroke-width: calc(var(--k, .1) * 1.2); cursor: pointer; }
.fpc-mini .mt { fill: #e2c892; } .fpc-mini .mme { fill: #2f7cf6; stroke: #fff; stroke-width: calc(var(--k, .1) * 1.2); }
.fpc-bot { position: absolute; left: 10px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); display: flex; gap: 8px; }
.fpc-bot .btn5 { height: 40px; background: rgba(14,17,16,.75) !important; }
.fpc-lu { position: absolute; left: 10px; right: 10px; bottom: calc(64px + env(safe-area-inset-bottom, 0px)); padding: 11px; border-radius: 14px 14px 14px 4px; background: rgba(14,17,16,.92) !important; }
.fpc-lu[hidden] { display: none; }
.fpc-lul { display: flex; flex-wrap: wrap; gap: 6px; margin: 9px 0; max-height: 30vh; overflow: auto; }
.fpc-lup { padding: 6px 9px; border-radius: 8px 8px 8px 2px; border: 1px solid rgba(255,255,255,.18); font: italic 12px "Sora"; cursor: pointer; }
.fpc-lup b { font: 600 10px "Geist Mono"; font-style: normal; color: #e2c892; margin-right: 4px; }
@media (orientation:landscape) and (max-height:520px) { .fptop { right: 45%; } .fpbar, .fpedit { left: auto; width: 44%; } .fpc-mini { width: 96px; height: 96px; } }

/* ===================== v1.5.1 ===================== */
/* ---- several donors: ONE "Donor information" tile, donor cards stacked inside it ---- */
.dtile { padding: 10px 10px 12px; display: grid; gap: 10px; }
.dcards { display: grid; gap: 10px; min-width: 0; }
.dcard { position: relative; min-width: 0; border-radius: 10px 10px 10px 3px; border: 1px solid rgba(201,169,106,.22); background: linear-gradient(180deg, rgba(201,169,106,.06), rgba(0,0,0,.16)); box-shadow: inset 0 1px 0 rgba(226,200,146,.10); padding: 8px 12px 2px; }
.dcard.dnew { animation: dnew .9s ease-out; }
@keyframes dnew { from { border-color: rgba(226,200,146,.75); box-shadow: 0 0 0 3px rgba(201,169,106,.18); } }
@media (prefers-reduced-motion: reduce) { .dcard.dnew { animation: none; } }
.dch { display: flex; align-items: center; justify-content: space-between; min-height: 30px; margin-bottom: 4px; }
.dct, .dvh { font: 500 9.5px "Geist Mono", monospace; letter-spacing: .16em; text-transform: uppercase; color: #c9a96a; }
.dct b, .dvh b { font-weight: 700; color: #e2c892; }
.dcx { width: 32px; height: 32px; margin-right: -6px; display: grid; place-items: center; border-radius: 8px 8px 8px 2px; font: 400 21px/1 "Sora", system-ui; color: #9d9fa3; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.dcx:hover, .dcx:focus-visible { color: #e08b84; background: rgba(224,100,91,.08); outline: 0; }
.dcf { display: grid; gap: 0; min-width: 0; }
.dcf .fp { margin-bottom: 10px; }
.dtile .dnotes { padding: 0 2px; }
.dtile .dnotes .lbl { margin-top: 2px; }
.dadd { width: 100%; height: 44px; gap: 7px; border: 1px dashed rgba(201,169,106,.45) !important; background: rgba(201,169,106,.06) !important; color: #e2c892; font: 600 14px "Sora", system-ui; cursor: pointer; touch-action: manipulation; }
.dadd svg { width: 15px; height: 15px; }
@media (min-width: 720px) { .dcf { grid-template-columns: 1fr 1fr; column-gap: 14px; } .dcf .fp[data-col="donorCompany"], .dcf .fp[data-col="donorAddress"] { grid-column: 1 / -1; } }
/* record view: one tile, a sub-card per donor with data */
.kvs.dtile { padding: 8px 8px 4px; gap: 8px; }
.dvc { border-radius: 10px 10px 10px 3px; border: 1px solid rgba(201,169,106,.18); background: linear-gradient(180deg, rgba(201,169,106,.05), rgba(0,0,0,.14)); padding: 7px 0 2px; min-width: 0; }
.dvc .dvh { padding: 2px 14px 4px; }
.dvc .kv { padding: 0 12px; }
.dvnotes .kv { padding-left: 8px; padding-right: 8px; }
.dvnone { padding: 12px 8px 6px; font-size: 9.5px; letter-spacing: .12em; text-transform: uppercase; color: #6f7073; }
/* ---- dated history (Pot content & plant description) ---- */
.hrow { margin-top: 8px; }
.hdinp { gap: 8px; }
.hdinp .hdl { flex: none; font-size: 8.5px; letter-spacing: .14em; text-transform: uppercase; color: #c9a96a; }
.hnote { display: block; margin: 5px 2px 0; font-size: 8.5px; letter-spacing: .08em; color: #7d7f83; line-height: 1.5; }
.kvhist .hcur { font-size: 8.5px; letter-spacing: .1em; color: #c9a96a; }
.kvhist details.hist { width: 100%; margin-top: 2px; }
.kvhist details.hist summary { list-style: none; cursor: pointer; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: #9d9fa3; padding: 6px 0 2px; -webkit-tap-highlight-color: transparent; }
.kvhist details.hist summary::-webkit-details-marker { display: none; }
.kvhist details.hist summary::before { content: "▸ "; color: #c9a96a; }
.kvhist details.hist[open] summary::before { content: "▾ "; }
.kvhist .hlist { display: grid; gap: 8px; padding: 6px 0 4px; border-left: 1px solid rgba(201,169,106,.3); margin-left: 3px; padding-left: 10px; }
.kvhist .hent { display: grid; gap: 2px; }
.kvhist .hent .hd { font-size: 8.5px; letter-spacing: .1em; color: #c9a96a; }
.kvhist .hent .ht { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.45; color: #a9aaac; }

/* ---- no page zoom (v1.5.1): the page never scales; maps keep their own pinch/zoom/rotate ----
   iOS zooms into a focused field whose text is under 16 px: every input, select and textarea is 16 px. */
html, body { touch-action: pan-x pan-y; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
input, select, textarea, .inp input, .inp textarea, .inp select, .fld input, .input { font-size: 16px !important; }
.codeinp input { font-size: 17px !important; }

/* ---- bottom edge (v1.5.1): every screen ends in exactly the page colour, so the list fade meets the home-indicator strip
   (which iOS paints in the page colour, sometimes below a shorter web area) without a line ---- */
.phone::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: max(28px, calc(12px + var(--sab, 0px))); z-index: 2400; pointer-events: none;
  background: linear-gradient(180deg, rgba(27,31,29,0) 0%, rgba(27,31,29,.18) 30%, rgba(27,31,29,.55) 62%, rgba(27,31,29,.88) 86%, var(--fog-bottom) 100%); }
.fog8.fb9 { left: 0; right: 0; bottom: 0; top: auto; width: auto; height: 190px; border-radius: 0; animation: none !important; translate: none !important;
  background: linear-gradient(180deg, rgba(27,31,29,0) 0%, rgba(27,31,29,.42) 55%, var(--fog-bottom) 100%); }
/* v1.5.1: "Select from contacts" – its own control under the cellphone field of each donor card */
.dcpick { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 7px; }
.dcbtn { height: 36px; gap: 6px; font-size: 13px; color: #e2c892; border: 1px solid rgba(201,169,106,.32) !important; cursor: pointer; touch-action: manipulation; }
.dcbtn svg { width: 14px; height: 14px; }
.dcbtn.off { opacity: .45; cursor: default; color: #9d9fa3; border-color: rgba(255,255,255,.12) !important; }
.dchint { flex: 1 1 100%; font-size: 8.5px; letter-spacing: .06em; line-height: 1.5; color: #7d7f83; }
/* ---- v1.5.1 scanner: portrait frame (3:5) + zoom (pinch, slider, −/+, 1×/2×/3×) ---- */
.scan-camera { touch-action: none; }
.scan-video { transform-origin: 50% 50%; will-change: transform; }
.scan-guide.portrait { left: auto; right: auto; top: auto; bottom: auto; width: 54%; height: 60%; border: 2px solid rgba(226,200,146,.95); border-radius: 14px 14px 14px 4px; box-shadow: 0 0 0 9999px rgba(0,0,0,.42), inset 0 0 0 1px rgba(0,0,0,.25); }
.scan-guide.portrait::before, .scan-guide.portrait::after { content: ""; position: absolute; left: 12%; right: 12%; top: 50%; height: 1px; background: rgba(226,200,146,.35); }
.scan-guide.portrait::after { left: 50%; right: auto; top: 12%; bottom: 12%; width: 1px; height: auto; }
.scan-zoom { position: absolute; left: 10px; right: 10px; bottom: 10px; z-index: 2; display: grid; grid-template-columns: 38px 1fr 38px 46px; grid-template-rows: auto auto; align-items: center; gap: 6px 8px; padding: 8px 10px; border-radius: 14px 14px 14px 4px;
  background: linear-gradient(180deg, rgba(26,30,28,.82), rgba(14,17,16,.88)); border: 1px solid rgba(201,169,106,.28); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.scan-camera.off .scan-zoom { display: none; }
.scan-zoom .szb { height: 34px; min-width: 34px; border-radius: 9px 9px 9px 2px; border: 1px solid rgba(201,169,106,.3); background: rgba(255,255,255,.05); color: #e2c892; font: 600 15px "Sora", system-ui; cursor: pointer; touch-action: manipulation; }
.scan-zoom .szb.on { background: rgba(201,169,106,.22); border-color: rgba(226,200,146,.8); color: #f4efe2; }
.scan-zoom .szb:disabled { opacity: .35; }
.scan-zoom input[type=range] { width: 100%; accent-color: #c9a96a; }
.scan-zoom .szv { font-size: 11px; letter-spacing: .06em; color: #e2c892; text-align: right; }
.scan-zoom .szq { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
@media (orientation: landscape) and (max-height: 520px) { .scan-zoom { left: auto; width: 300px; } }

/* ---- v1.5.1 home: Reminders & notifications (a container of typed cards; between the tiles and Recently updated) ---- */
.ntc { margin-top: 12px; padding: 11px 11px 9px; border-radius: 12px 12px 12px 3px; position: relative; }
.ntc::before { content: ""; position: absolute; left: 12px; right: 12px; top: 0; height: 1px; background: linear-gradient(90deg, rgba(201,169,106,0), rgba(226,200,146,.55), rgba(201,169,106,0)); }
.ntch { display: flex; align-items: center; gap: 9px; }
.ntch h2 { flex: 1; min-width: 0; font: 700 15px "Syne", "Sora", system-ui; letter-spacing: -.01em; color: #d4d4d2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; }
.nhi { width: 30px; height: 30px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: linear-gradient(180deg, rgba(190,192,195,.55), rgba(150,152,156,.45)); color: #101112; }
.nhi svg { width: 16px; height: 16px; }
.ncnt { flex: none; font-size: 7.5px; letter-spacing: .12em; color: #8f9195; }
.ncnt.due { color: #e2c892; }
.nempty { display: flex; align-items: center; gap: 8px; margin: 9px 2px 2px; font-size: 13px; color: #a9aaac; }
.nempty svg { width: 16px; height: 16px; color: #7cc86a; }
.nlist { display: flex; flex-direction: column; gap: 6px; margin-top: 9px; }
.nlist:empty { display: none; }
.nsub { margin: 5px 2px 0; font-size: 7.5px; letter-spacing: .12em; color: #8f9195; }
.ncard { display: flex; align-items: center; gap: 9px; min-height: 50px; padding: 7px 7px 7px 9px; border-radius: 10px 10px 10px 3px; background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.075); transition: opacity .2s; }
.ncard.st-today { border-color: rgba(201,169,106,.34); background: linear-gradient(90deg, rgba(201,169,106,.10), rgba(255,255,255,.03)); }
.ncard.st-overdue { border-color: rgba(227,93,93,.38); background: linear-gradient(90deg, rgba(227,93,93,.10), rgba(255,255,255,.03)); }
.ncard.going { opacity: .45; pointer-events: none; }
.ntc:not(.all) .ncard.nx { display: none; }
.nic { width: 30px; height: 30px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.09); color: #a9aaac; }
.nic svg { width: 16px; height: 16px; }
.nk-water .nic { color: #5aa9e6; } .nk-pest .nic { color: #e35d5d; } .nk-log .nic { color: #7cc86a; }
.ntx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; cursor: pointer; }
.ntl { font-size: 13.5px; font-weight: 600; color: #d4d4d2; line-height: 1.25; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ntl .ncode { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 11.5px; color: #e2c892; letter-spacing: .02em; }
.ntl i { font-style: italic; font-weight: 500; color: #c3c4c1; }
.nwhen { font-size: 8.5px; letter-spacing: .08em; line-height: 1.45; color: #8f9195; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.st-today .nwhen { color: #e2c892; } .st-overdue .nwhen { color: #ef8a8a; }
.nacts { display: flex; gap: 6px; flex: none; }
.nbt { width: 36px; height: 36px; border-radius: 9px 9px 9px 2px; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(201,169,106,.3); background: rgba(255,255,255,.05); color: #e2c892; cursor: pointer; touch-action: manipulation; padding: 0; }
.nbt svg { width: 16px; height: 16px; }
.nbt.nsnz { color: #a9aaac; border-color: rgba(255,255,255,.12); }
.nbt:active { background: rgba(201,169,106,.22); }
.nmore { display: block; width: 100%; margin-top: 7px; height: 32px; border: 0; background: none; color: #c9a96a; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; cursor: pointer; }

/* ---- v1.5.1: "Add a photo" at the top of the plant screens (record view + form) ---- */
.phtop { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.phtop .phadd { flex: 0 1 auto; height: 44px; padding: 0 16px; color: #e2c892; border: 1px solid rgba(201,169,106,.34) !important; cursor: pointer; touch-action: manipulation; }
.phtop .phadd svg { width: 18px; height: 18px; }
.phtop .phn { flex: 1; min-width: 0; text-align: right; font-size: 8.5px; letter-spacing: .1em; color: #8f9195; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pnone { margin: 6px 2px 0; font-size: 8.5px; letter-spacing: .08em; color: #7d7f83; }

.ncard.st-info { border-color: rgba(90,169,230,.34); background: linear-gradient(90deg, rgba(90,169,230,.09), rgba(255,255,255,.03)); }
.nk-gcal .nic { color: #5aa9e6; } .st-info .nwhen { color: #8fc3ee; }
/* v1.5.1: map sharpness – satellite canvas tiles, smooth upscaling (the sharpening is in the tile pixels; colours stay true – no CSS filter) */
.leaflet-container canvas.leaflet-tile { image-rendering: auto; }
.sw5 { flex: none; width: 46px; height: 28px; border-radius: 14px; background: rgba(255,255,255,.09); border: 1px solid rgba(255,255,255,.14); position: relative; transition: background .2s, border-color .2s; }
.sw5 i { position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #9d9fa3; transition: transform .2s, background .2s; }
.sw5.on { background: rgba(201,169,106,.32); border-color: rgba(226,200,146,.6); }
.sw5.on i { transform: translateX(18px); background: #e2c892; }

/* ===== v1.6.0: Reminders & notifications panel collapses (header toggles; remembered on the phone) ===== */
.ntch { cursor: pointer; -webkit-tap-highlight-color: transparent; border-radius: 9px; }
.ntch:focus-visible { outline: 1px solid rgba(226,200,146,.6); outline-offset: 3px; }
.nchev { flex: none; width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; color: #b9ad8d; transition: transform .28s cubic-bezier(.2,.7,.2,1); transform: rotate(180deg); }
.nchev svg { width: 16px; height: 16px; }
.ntc.collapsed .nchev { transform: rotate(0deg); }
.nbody { display: grid; grid-template-rows: 1fr; transition: grid-template-rows .3s cubic-bezier(.2,.7,.2,1), opacity .25s ease; }
.nbin { min-height: 0; overflow: hidden; }
.ntc.collapsed .nbody { grid-template-rows: 0fr; opacity: 0; }
.ntc.collapsed { padding-bottom: 11px; }
.ncnt { position: relative; }
.nod { position: absolute; top: -6px; right: -11px; width: 7px; height: 7px; border-radius: 50%; background: #ff5a4f; box-shadow: 0 0 0 2px rgba(14,16,15,.9), 0 0 8px rgba(255,90,79,.6); display: none; }
.ntc.collapsed .nod { display: block; }
@media (prefers-reduced-motion: reduce) { .nbody, .nchev { transition: none; } }

/* ===== v1.6.0 PREVIEW SWITCHES (js/flags.js) – off until Joshua approves ===== */
/* brightGold: brighter, more saturated gold hairlines on the home panels – thin line, faint inner light, no brass fill */
html.flag-gold #backup-reminder, html.flag-gold #home .ntc.glass, html.flag-gold #recent-list > .wr, html.flag-gold #home-empty, html.flag-gold #home .pgrid6 > *, html.flag-gold #home .tiles3 .big {
 border-color: rgba(226,186,98,.52) !important;
 box-shadow: inset 0 1px 0 rgba(244,218,160,.26), 0 0 0 .5px rgba(226,186,98,.18), 0 0 18px -8px rgba(226,186,98,.42), 0 14px 34px -14px rgba(0,0,0,.8) !important; }
html.flag-gold #home .ntc .ncard { border-color: rgba(226,186,98,.40) !important; }
/* floatingBar: the three tiles float beside the camera – no strip, no edge: only the existing bottom fade sits behind */
.fbar8 { position: absolute; left: 20px; right: 20px; bottom: 28px; z-index: 29; display: flex; justify-content: space-between; align-items: flex-start; pointer-events: none; background: none; border: 0; translate: 0 calc(-1 * var(--fabup)); margin-right: var(--sar, 0px); }
.fbar8 .fb8 { pointer-events: auto; position: relative; display: flex; flex-direction: column; align-items: center; width: 62px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.fbar8 .fb8 .k { position: relative; width: 62px; height: 62px; border-radius: 14px 14px 14px 4px; display: flex; align-items: center; justify-content: center;
 background: linear-gradient(180deg, rgba(40,45,42,.98), rgba(22,25,23,.98)); border: 1px solid rgba(201,169,106,.62); color: #e7dcc0;
 box-shadow: inset 0 1px 0 rgba(236,214,166,.24), inset 0 -8px 16px -10px rgba(0,0,0,.7), 0 0 0 4px rgba(12,14,13,.62), 0 16px 30px -10px rgba(0,0,0,.95); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); transition: transform .2s ease; }
.fbar8 .fb8:active .k { transform: scale(.93); }
.fbar8 .fb8 .ph { display: block; width: 62px; height: 62px; }
.fbar8 .fb8 .k svg.i { width: 25px; height: 25px; stroke-width: 1.45; color: #e7dcc0; }
.fbar8 .fb8 .t { position: absolute; top: calc(100% + 6px); font: 600 8.5px "Geist Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: #d9cfb4; text-shadow: 0 1px 6px rgba(0,0,0,.9); white-space: nowrap; }
.fbar8 .fb8 .bd { position: absolute; top: -7px; right: -8px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px; background: linear-gradient(180deg, #e9cf94, #c9a96a); color: #16140f; font: 700 10px/19px "Geist Mono", ui-monospace, monospace; text-align: center; box-shadow: 0 0 0 3px rgba(12,14,13,.85); }
.fbar8 .fb8 .bd.od::after { content: ""; position: absolute; top: -2px; right: -2px; width: 7px; height: 7px; border-radius: 50%; background: #ff5a4f; box-shadow: 0 0 0 2px rgba(12,14,13,.9); }
.fbar8 .fb8 .bc { position: absolute; bottom: 5px; right: 7px; font: 600 8px "Geist Mono", ui-monospace, monospace; letter-spacing: .08em; color: rgba(231,220,192,.55); font-style: normal; }
html.flag-bar #home .rcol { padding-bottom: 96px; }
html.flag-bar .fab:not(.x):after { display: none; } /* as in the approved mock-up: the camera is one of the four, no crosshair ticks */
.fbar8 .fb8.cam { pointer-events: none; }
.fab .fbl { position: absolute; left: 50%; top: calc(100% + 6px); transform: translateX(-50%); font: 600 8.5px "Geist Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; color: #d9cfb4; text-shadow: 0 1px 6px rgba(0,0,0,.9); white-space: nowrap; pointer-events: none; }
.fab.x .fbl { opacity: 0; }
@media (orientation: landscape) and (max-height: 520px) { .fbar8 { bottom: calc(16px + var(--sab)); } }

/* ===== v1.6.0: Rectangle tool in the zone editor ===== */
.armode { display: inline-flex; padding: 2px; border-radius: 8px 8px 8px 3px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); gap: 2px; justify-self: start; }
.armode > span { padding: 6px 12px; border-radius: 6px 6px 6px 2px; font: 600 11.5px "Sora", system-ui; color: #a9aaac; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.armode > span.on { background: linear-gradient(180deg, rgba(226,200,146,.22), rgba(201,169,106,.12)); color: #efe1bf; box-shadow: inset 0 0 0 1px rgba(226,200,146,.45); }
.arsz { display: flex; align-items: flex-end; gap: 7px; }
.arsz[hidden] { display: none; }
.arszf { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; position: relative; }
.arszf > span { font-size: 8px !important; letter-spacing: .14em !important; color: #8f9195; text-transform: uppercase; }
.arszf > i { position: absolute; right: 9px; bottom: 9px; font-style: normal; font-size: 10px; color: #8f9195; }
.arnum { font-family: "Geist Mono", ui-monospace, monospace !important; font-size: 15px !important; padding-right: 22px !important; }
.arx { color: #8f9195; padding-bottom: 9px; }
#area-flip { flex: none; }
.area-draft.preview { stroke-dasharray: 6 5; }
/* grid labels (edge lengths, corner A, the labelled square metre) */
.gridlw { pointer-events: none; }
.gridl { position: absolute; transform: translate(-50%, -50%); white-space: nowrap; font: 600 10px "Geist Mono", ui-monospace, monospace; letter-spacing: .04em; color: #16140f; background: rgba(233,207,148,.92); padding: 2px 6px; border-radius: 5px 5px 5px 2px; box-shadow: 0 2px 8px rgba(0,0,0,.45); }
.gridl.corner { background: #e2c892; border-radius: 50%; width: 18px; height: 18px; padding: 0; display: flex; align-items: center; justify-content: center; }
.gridl.one { background: rgba(86,182,242,.95); color: #06121b; transform: translate(-50%, 6px); }
/* painted walkway cells + the painter bar */
.cell-painting { cursor: crosshair !important; }
.cellbar { position: absolute; z-index: 32; left: 10px; right: 10px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); padding: 10px 12px; border-radius: 14px 14px 14px 4px; display: grid; gap: 7px; }
.cellbar .cb-t { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.cellbar .cb-t b { font: 600 14px "Sora"; color: #efe7d2; }
.cellbar .cb-t .mono { font-size: 9px; letter-spacing: .1em; color: #e2c892; }
.cellbar .cb-h { font-size: 9.5px !important; color: #a9aaac; letter-spacing: .03em !important; text-transform: none !important; line-height: 1.4; }
.cellbar .cb-b { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.cellbar #cell-done { margin-left: auto; }
.cellbar .off { opacity: .45; pointer-events: none; }
.map8.cell-mode .m8pstrip, .map8.cell-mode .m8banner, .map8.cell-mode .m8side { display: none !important; }
.fpmap.painting .fptop .mk-search, .fpmap.painting #fp-chips { display: none; }
.fpw-pt.cellhere i { background: #2f7cf6; border-color: #fff; }
.m8cell { color: #e2c892; }
.cellref { color: #e2c892 !important; }

/* v1.6.0: collapsible Recently updated (same motion as the Reminders panel) */
#sec6 { cursor: pointer; -webkit-tap-highlight-color: transparent; }
#sec6 .tog { cursor: default; }
#sec6 .rhead { outline-offset: 3px; }
#sec6 .rchev { margin-left: 2px; order: 0; }
#sec6 .rcnt { display: none; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: #e2c892; padding: 3px 7px; border-radius: 6px 6px 6px 2px; border: 1px solid rgba(226,200,146,.35); background: rgba(226,200,146,.08); white-space: nowrap; }
#sec6.collapsed .rcnt { display: inline-block; }
#sec6.collapsed .cnt { display: none; }
#sec6.collapsed .rchev { transform: rotate(0deg); }
#sec6.collapsed + .rbody { grid-template-rows: 0fr; opacity: 0; }
.ntc.collapsed .nbin, #sec6.collapsed + .rbody .nbin { visibility: hidden; transition: visibility 0s .3s; }
/* one finger draws (width drag, painting): no browser panning, which would cancel the pointer; two fingers still pinch via Leaflet */
.leaflet-container.cell-painting, .leaflet-container.area-wdrag { touch-action: none !important; }
.m8plan.rows { flex-wrap: wrap; row-gap: 8px; }
.m8plan.rows .pt { flex: 1 1 calc(100% - 52px); }
.m8plan.rows #m8plan-grid { margin-left: 0; }
/* v1.6.0: the zone editor got the Rectangle / Freeform switch – keep the buttons on one row so the panel is no taller than before */
.arbtns { flex-wrap: nowrap; }
.arbtns .btn { padding-left: 9px; padding-right: 9px; white-space: nowrap; min-width: 0; }
.arpanel .armode > span { padding: 5px 12px; }
.arpanel { gap: 7px; }
/* v1.6.1: "+ Create new plant" in the link picker (transplant flow), the just-created plant, the new-plant sheet */
.elnewp { margin-bottom: 8px; border-color: rgba(201,169,106,.6); background: rgba(201,169,106,.07); }
.elnewp .elpn { color: #e6cf98; }
.elnewp:active { background: rgba(201,169,106,.16); }
.elplist .elnewp { margin-top: 6px; }
.elpi.fresh { border-color: rgba(201,169,106,.85); background: linear-gradient(90deg, rgba(201,169,106,.2), rgba(201,169,106,.06)); box-shadow: 0 0 0 2px rgba(201,169,106,.25); animation: npglow 1.6s ease-out 1; }
.elpi.fresh .elpd { color: #e6cf98; }
@keyframes npglow { from { box-shadow: 0 0 0 6px rgba(201,169,106,.5); } to { box-shadow: 0 0 0 2px rgba(201,169,106,.25); } }
.np-form { grid-template-columns: minmax(0, 1fr); }
.np-hint { margin: 5px 0 0; font-size: 11px; color: #e6cf98; }
.np-hint.bad { color: #e0645b; }
.wseg.np-from { grid-template-columns: 1fr 1fr; }
.np-two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; min-width: 0; }
.np-two .form-row { min-width: 0; }
#np-how { margin-bottom: 6px; }
/* ===== v1.6.2: "Mark watered" once a day – blue "Watered today · 07:30" with a water tap that pours once when tapped ===== */
.btn5.wmark.watered { background: linear-gradient(180deg, #3a8de6, #1f63b8); color: #f2f8ff; border: 1px solid rgba(150,205,255,.75) !important; box-shadow: inset 0 1px 0 rgba(220,240,255,.45), 0 6px 18px -8px rgba(40,120,220,.9) !important; padding-left: 8px; gap: 6px; position: relative; overflow: visible; }
.btn5.wmark .wtap { width: 22px !important; height: 22px !important; flex: none; overflow: visible; }
.wtap-b, .wtap-h, .wtap-n { fill: #eaf4ff; }
.wtap-v { stroke: #eaf4ff; stroke-width: 1.6; stroke-linecap: round; }
.wtap-s { stroke: #bfe2ff; stroke-width: 1.8; stroke-linecap: round; opacity: 0; }
.wtap-d { fill: #bfe2ff; opacity: 0; }
.wtap-p { fill: none; stroke: #bfe2ff; stroke-width: 1.3; stroke-linecap: round; opacity: .75; }
.wmark.watered.pour .wtap-h { transform-box: fill-box; transform-origin: 50% 50%; animation: wtapH 1.9s ease-in-out 1; }
.wmark.watered.pour .wtap-s { animation: wtapS 1.9s ease-in-out 1; }
.wmark.watered.pour .wtap-d { animation: wtapD .62s ease-in 3; }
.wmark.watered.pour .wtap-d.d2 { animation-delay: .2s; }
.wmark.watered.pour .wtap-d.d3 { animation-delay: .4s; }
.wmark.watered.pour .wtap-p { transform-box: fill-box; transform-origin: 50% 50%; animation: wtapP 1.9s ease-out 1; }
.wmark.watered.pour::after { content: ""; position: absolute; inset: -1px; border-radius: inherit; box-shadow: 0 0 0 0 rgba(90,170,255,.7); animation: wtapR 1.2s ease-out 1; pointer-events: none; }
.wmark.watered.pour { animation: wtapB .5s ease-out 1; }
@keyframes wtapH { 0% { transform: rotate(0); } 18%, 78% { transform: rotate(-24deg); } 100% { transform: rotate(0); } }
@keyframes wtapS { 0%, 12% { opacity: 0; stroke-dasharray: 0 10; } 30% { opacity: 1; stroke-dasharray: 10 0; } 74% { opacity: 1; } 100% { opacity: 0; } }
@keyframes wtapD { 0% { opacity: 0; transform: translateY(0); } 20% { opacity: 1; } 100% { opacity: 0; transform: translateY(7px); } }
@keyframes wtapP { 0%, 25% { transform: scaleX(.4); opacity: 0; } 60% { transform: scaleX(1.25); opacity: 1; } 100% { transform: scaleX(1); opacity: .75; } }
@keyframes wtapR { 0% { box-shadow: 0 0 0 0 rgba(90,170,255,.7); } 100% { box-shadow: 0 0 0 14px rgba(90,170,255,0); } }
@keyframes wtapB { 0% { filter: brightness(1.35); } 100% { filter: none; } }
@media (prefers-reduced-motion: reduce) { .wmark.watered.pour, .wmark.watered.pour::after, .wmark.watered.pour .wtap-h, .wmark.watered.pour .wtap-s, .wmark.watered.pour .wtap-d, .wmark.watered.pour .wtap-p { animation: none !important; } }
.wht { color: #9fcaff; }
.wa-lead { margin: 0; font: 600 14.5px "Sora", system-ui; color: #e8e7e1; }
.wa-two { display: grid; grid-template-columns: 1.3fr 1fr; gap: 8px; min-width: 0; }
.wa-two .form-row, .wa-two .input { min-width: 0; width: 100%; }
.wa-on { margin: 0; font-size: 11px; color: #9fcaff; }
.wa-warn { margin: 0; font-size: 11px; color: #e6cf98; min-height: 1em; }
.wa-warn.bad { color: #f0a35b; }
/* ===== v1.6.2: Recently updated in a bordered card like the Reminders panel; its header never runs off the screen ===== */
#recent-card { margin-top: 12px; padding: 11px 11px 9px; border-radius: 12px 12px 12px 3px; position: relative; min-width: 0; }
#recent-card::before { content: ""; position: absolute; left: 12px; right: 12px; top: 0; height: 1px; background: linear-gradient(90deg, rgba(201,169,106,0), rgba(226,200,146,.55), rgba(201,169,106,0)); }
#recent-card.collapsed { padding-bottom: 11px; }
#recent-card #sec6 { margin: 0; min-width: 0; }
#recent-card #recent-body > .nbin { padding-top: 10px; }
#recent-card.collapsed #recent-body > .nbin { padding-top: 0; }
#sec6 h2 { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0; }
#sec6 .rhead { display: block; overflow: hidden; text-overflow: ellipsis; }
#sec6 .rcnt, #sec6 .cnt, #sec6 .rchev { flex: none; }
#sec6 .rcnt { max-width: 34vw; overflow: hidden; text-overflow: ellipsis; }
#sec6 .ln { flex: 1 1 0; min-width: 0; }
#sec6 .tog { flex: none; margin-left: auto; }
/* collapsed on a phone: the chip shows just the number (the word stays for screen readers) so the full title fits beside the switch */
@media (max-width: 430px) {
  #recent-card #sec6 { gap: 6px; }
  #recent-card #sec6 .ln { display: none; }
  #sec6.collapsed .rcnt { padding: 3px 6px; letter-spacing: .06em; }
  #sec6.collapsed .rcw { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (max-width: 380px) { #recent-card #sec6 h2, #recent-card #sec6 .rhead { font-size: 16px !important; } }
html.flag-gold #home #recent-card.glass { border-color: rgba(226,186,98,.52) !important;
 box-shadow: inset 0 1px 0 rgba(244,218,160,.26), 0 0 0 .5px rgba(226,186,98,.18), 0 0 18px -8px rgba(226,186,98,.42), 0 14px 34px -14px rgba(0,0,0,.8) !important; }
/* ===== v1.6.2: home – the floating bar sits lower (buttons 6 px above the home-indicator inset instead of 16 px) =====
   iPhone 13 standalone (inset 34 px): button bottom 50 → 40 px from the screen edge (--fabup 22 → 12 px). No inset: unchanged (28 px). */
@media (orientation: portrait), (min-height: 521px) { html.home-mode.flag-bar { --fabup: max(0px, calc(var(--sab) - 22px)); } }
html.flag-bar #home .rcol { padding-bottom: 104px; }
/* soft dark scrim behind the bar: page colour ~80 % at the bottom fading to nothing ~80 px above the buttons (no edge, no line);
   subtle while nothing is behind it, full strength while content scrolls under the bar */
.fbar8::before { content: ""; position: absolute; z-index: -1; pointer-events: none; left: -20px; right: calc(-20px - var(--sar, 0px)); top: -84px; bottom: calc(-28px - var(--fabup));
  background: linear-gradient(0deg, rgba(11,13,12,.82) 0%, rgba(11,13,12,.74) 22%, rgba(11,13,12,.5) 48%, rgba(11,13,12,.22) 72%, rgba(11,13,12,.06) 88%, rgba(11,13,12,0) 100%);
  opacity: .55; transition: opacity .35s ease; }
html.bar-under .fbar8::before { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .fbar8::before { transition: none; } }
/* ===== v1.6.2: record – every field tile in its own collapsible section (collapsed by default; same motion as Reminders) ===== */
.rsec { margin-top: 8px; border-radius: 12px 12px 12px 3px; border: 1px solid rgba(201,169,106,.22); background: linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015)); position: relative; min-width: 0; }
.rsec + .lbl { margin-top: 16px; }
.rsech { display: flex; align-items: center; gap: 8px; min-height: 52px; padding: 8px 8px 8px 13px; cursor: pointer; -webkit-tap-highlight-color: transparent; border-radius: 11px 11px 11px 2px; min-width: 0; }
.rsech:focus-visible { outline: 1px solid rgba(226,200,146,.6); outline-offset: -2px; }
.rsech:active { background: rgba(201,169,106,.06); }
.rsecl { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.rsect { font: 700 14.5px/1.15 "Syne", "Sora", system-ui; letter-spacing: -.01em; color: #d4d4d2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rsecs { font-size: 10px; line-height: 1.2; letter-spacing: .04em; color: #b9ad8d; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rsecs.em { color: #6f7174; }
.rsecx { flex: none; display: flex; }
.rsecx .btn5.sm { height: 32px; font-size: 12px; padding: 0 8px; gap: 5px; letter-spacing: -.02em !important; }
.rsecx .btn5.wmark.watered { padding-left: 5px; }
.rsecx .btn5.wmark .wtap { width: 20px !important; height: 20px !important; }
.rsec .rsecc { transform: rotate(0deg); }
.rsec.open .rsecc { transform: rotate(180deg); }
.rsecb { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows .32s cubic-bezier(.2,.7,.2,1), opacity .25s ease; }
.rsec.open .rsecb { grid-template-rows: 1fr; opacity: 1; }
.rsecin { min-height: 0; overflow: hidden; padding: 0 8px; visibility: hidden; transition: visibility 0s .32s; }
.rsec.open .rsecin { visibility: visible; transition: visibility 0s 0s; padding-bottom: 8px; }
.rsec.instant .rsecb, .rsec.instant .rsecin, .rsec.instant .rsecc { transition: none !important; }
.rsecin > .lbl:first-child, .rsecin > .fpw > .lbl:first-child { display: none; } /* the section header carries the heading */
.rsecin > .card5, .rsecin > .fpw > .card5, .rsecin > .fpw > .pgrid { margin-top: 0; }
.rsec:has(.rsech[aria-expanded="true"]) { border-color: rgba(201,169,106,.36); }
@media (prefers-reduced-motion: reduce) { .rsecb, .rsecin, .rsecc { transition: none !important; } }
html.flag-gold .rsec { border-color: rgba(226,186,98,.40); }
/* ===== v1.6.2: home Search row (minimal, like the gear) + the Search screen ===== */
.hsrch { display: flex; align-items: center; gap: 7px; height: 30px; margin: 10px 0 -2px 2px; width: max-content; max-width: 100%; padding: 0 8px 0 4px; border-radius: 9px; color: #d4d4d2; opacity: .55; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: opacity .15s, background .15s; font: 500 12.5px "Sora", system-ui; letter-spacing: .01em; }
.hsrch svg { width: 16px; height: 16px; flex: none; }
.hsrch:hover, .hsrch:focus-visible { opacity: .95; background: rgba(255,255,255,.05); outline: none; }
.hsrch:active { opacity: 1; background: rgba(201,169,106,.10); }
.srchf { margin-top: 12px; }
.srchf input { flex: 1; min-width: 0; background: none; border: 0; outline: none; color: #e8e7e1; font: 16px "Sora", system-ui; height: 100%; }
.schips { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }
.schip { height: 30px; padding: 0 12px; border-radius: 9px 9px 9px 2px; border: 1px solid rgba(255,255,255,.12); background: rgba(0,0,0,.25); color: #a9aaac; font: 600 12px/28px "Sora", system-ui; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.schip.on { color: #e6dcc4; border-color: rgba(201,169,106,.65); background: rgba(201,169,106,.14); }
.scount { margin: 12px 2px 6px; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: #e2c892; min-height: 12px; }
.srl { padding: 2px 12px; display: grid; }
.srow { display: flex; align-items: center; gap: 10px; padding: 9px 0; min-width: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.srow + .srow { border-top: 1px solid rgba(255,255,255,.06); }
.srt { display: grid; gap: 4px; min-width: 0; flex: 1; }
.srh { display: flex; align-items: center; gap: 8px; min-width: 0; }
.srh .nm { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-style: italic; color: #d4d4d2; font-size: 13.5px; }
.smts { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.smt { font: 600 9.5px/1 "Geist Mono", ui-monospace, monospace; letter-spacing: .04em; padding: 4px 6px; border-radius: 6px 6px 6px 2px; color: #b9ad8d; background: rgba(201,169,106,.08); border: 1px solid rgba(201,169,106,.22); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.smt.k-species { color: #a8e0b4; background: rgba(143,209,158,.08); border-color: rgba(143,209,158,.25); }
.smt.k-location { color: #9fcaff; background: rgba(108,182,255,.08); border-color: rgba(108,182,255,.25); }
.sempty { margin: 18px 4px; font-size: 11px; color: #8d8f92; line-height: 1.5; }
.srech { display: flex; justify-content: space-between; align-items: center; margin: 14px 2px 8px; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: #8d8f92; }
.srclr { color: #b9ad8d; cursor: pointer; letter-spacing: .08em; }
.srecl { display: flex; flex-wrap: wrap; gap: 6px; }
.srec { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 11px; border-radius: 9px 9px 9px 2px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); color: #cfd0d1; font: 500 13px "Sora", system-ui; cursor: pointer; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.srec svg { width: 13px; height: 13px; opacity: .6; flex: none; }
/* ===== v1.6.2: camera options screen – the notched ring turns clockwise (80 s), the dotted ring anticlockwise (110 s),
   and the "Quick actions" frame breathes ≈3 px out per side (2 s cycle). Only while the screen is open and the app visible;
   nothing moves under Reduce Motion. The option buttons do not move. ===== */
.fan .rings .rg-notch, .fan .rings .rg-dot { transform-box: view-box; transform-origin: 334px 784px; will-change: transform; animation: rgspin 80s linear infinite; animation-play-state: paused; }
.fan .rings .rg-dot { animation-duration: 110s; animation-direction: reverse; }
.fan.open .rings .rg-notch, .fan.open .rings .rg-dot { animation-play-state: running; }
@keyframes rgspin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.fan.open .qa-h { animation: qapulse 2s ease-in-out infinite; }
@keyframes qapulse { 0%, 100% { scale: 1 1; } 50% { scale: var(--qsx, 1.024) var(--qsy, 1.1); } }
html.app-hidden .fan .rings .rg-notch, html.app-hidden .fan .rings .rg-dot, html.app-hidden .fan .qa-h { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) { .fan .rings .rg-notch, .fan .rings .rg-dot, .fan.open .qa-h { animation: none !important; } }
/* ===== v1.6.2 scanner: torch top right · translucent zoom chip/dial centred just above the shutter ·
   bottom row like the iPhone camera (Type code · shutter · gallery) · "Take photo of tag" only when the live camera fails ===== */
.scan-top { min-height: 48px; }
.scan-torch { flex: none; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255,255,255,.16); background: rgba(0,0,0,.38); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: #fff; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.scan-torch svg { width: 21px; height: 21px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); }
.scan-torch[data-mode=auto], .scan-torch[data-mode=on] { color: #ffd66b; border-color: rgba(255,214,107,.45); }
.scan-torch.lit { background: rgba(255,214,107,.22); }
.scan-torch.dis { opacity: .38; cursor: default; }
.scan-camera .scan-zoom { left: 50%; right: auto; bottom: 10px; width: min(318px, calc(100% - 24px)); transform: translateX(-50%); grid-template-columns: 34px 1fr 34px 42px; gap: 5px 6px; padding: 6px 8px; border-radius: 16px; background: rgba(10,12,11,.4); border: 1px solid rgba(255,255,255,.14); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); box-shadow: none; }
.scan-camera .scan-zoom .szb-old { height: 30px; min-width: 30px; border-radius: 15px; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); color: #fff; font-size: 13px; text-shadow: 0 1px 2px rgba(0,0,0,.6); }
.scan-camera .scan-zoom .szb.on { background: rgba(255,255,255,.2); border-color: rgba(255,255,255,.5); color: #ffd66b; }
.scan-camera .scan-zoom .szv { color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.6); }
.scan-camera .scan-zoom input[type=range] { accent-color: #fff; }
.scan-camera .scan-zoom .szq { gap: 5px; }
@media (orientation: landscape) and (max-height: 520px) { .scan-camera .scan-zoom { left: 50%; width: 300px; } }
.scan-flash { position: absolute; inset: 0; z-index: 3; background: #fff; opacity: 0; pointer-events: none; }
.scan-flash.go { animation: scflash .32s ease-out; }
@keyframes scflash { 0% { opacity: 0; } 18% { opacity: .85; } 100% { opacity: 0; } }
.scan-overlay .scan-panel { padding-top: 10px; gap: 10px; background: rgba(12,14,13,.72); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); border-top: 1px solid rgba(255,255,255,.08); }
.scan-overlay .scan-status { font-size: 12.5px; line-height: 1.35; color: rgba(255,255,255,.82); text-align: center; min-height: 1.35em; }
.scan-overlay .scan-status.warn { color: #e6c27a; }
.scan-overlay .scan-fb { grid-template-columns: 1fr; }
.scan-overlay .scan-fb[hidden] { display: none; }
.scan-overlay .scan-manual { display: none; }
.scan-overlay.typing .scan-manual { display: grid; gap: 6px; }
.scan-ctl { display: grid; grid-template-columns: 1fr 72px 1fr; align-items: center; gap: 8px; min-height: 72px; }
.scan-tc { justify-self: start; height: 34px; padding: 0 13px; border-radius: 17px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.08); color: #fff; font: 600 12.5px "Sora", system-ui; letter-spacing: .01em; text-shadow: 0 1px 2px rgba(0,0,0,.5); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.scan-tc.on { background: rgba(255,214,107,.18); border-color: rgba(255,214,107,.45); color: #ffe6a3; }
.scan-shutter { justify-self: center; width: 68px; height: 68px; border-radius: 50%; padding: 0; border: 3px solid rgba(255,255,255,.92); background: transparent; display: grid; place-items: center; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.scan-shutter .ssin { width: 54px; height: 54px; border-radius: 50%; background: #fff; transition: transform .12s ease, opacity .12s; }
.scan-shutter:active .ssin, .scan-shutter.busy .ssin { transform: scale(.88); opacity: .8; }
.scan-shutter:disabled { opacity: .35; cursor: default; }
.scan-overlay .scan-gal { justify-self: end; width: 46px; height: 46px; min-height: 0; padding: 0; border-radius: 12px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.08); color: #fff; box-shadow: none; cursor: pointer; }
.scan-overlay .scan-gal svg { width: 23px; height: 23px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); }
@media (prefers-reduced-motion: reduce) { .scan-flash.go { animation: none; } .scan-shutter .ssin { transition: none; } }
/* ===== v1.6.2 map: the chrome folds away when the map is moved (.cmin: back + search on one row, a small "Filters" pull,
   the list shrinks to its header) and a full-screen toggle (.fs) leaves only the floating map buttons ===== */
.m8grab { display: none; }
.map8.cmin .m8top { padding-bottom: 4px; }
.map8.cmin .m8top .tb .tt5 { visibility: hidden; }
.map8.cmin .m8top .m8search { position: absolute; left: 66px; right: 66px; top: 56px; margin: 0; }
.map8.cmin .m8dim, .map8.cmin .m8chips, .map8.cmin .m8ind { display: none !important; }
.map8.cmin .m8grab { display: flex; align-items: center; justify-content: center; gap: 5px; margin: 4px auto 0; width: max-content; max-width: 80%; height: 22px; padding: 0 10px; border-radius: 11px; background: rgba(14,17,16,.72); border: 1px solid rgba(201,169,106,.28); color: #cfc3a3; font: 500 9px "Geist Mono", ui-monospace, monospace; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.map8.cmin .m8grab svg { width: 12px; height: 12px; }
.map8.cmin .m8grab b { font-weight: 600; }
.map8.cmin .m8grab em { font-style: normal; color: #8d8f8c; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.map8.cmin .m8list .m8rows, .map8.cmin .m8list .m8note, .map8.cmin .m8list .m8fcard { display: none !important; }
.map8.cmin .m8list { padding: 8px 0 1px; }
.map8.cmin .m8list .m8lh { border-bottom: 0; cursor: pointer; }
.map8.cmin .m8top, .map8.cmin .m8list { transition: none; }
.m8fsb { position: absolute; z-index: 801; left: 10px; top: calc(var(--m8top-h, 250px) + 8px); width: 40px; height: 40px; display: grid; place-items: center; border-radius: 10px 10px 10px 3px; border: 1px solid rgba(201,169,106,.3); background: rgba(14,17,16,.86) !important; color: #e2c892; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.m8fsb svg { width: 19px; height: 19px; }
.map8.fs .m8top, .map8.fs .m8list, .map8.fs .m8pstrip { display: none !important; }
.map8.fs .mapctl { top: calc(var(--sat, 0px) + 10px) !important; }
.map8.fs .m8fsb { top: calc(var(--sat, 0px) + 10px); }
.map8.fs > .basetog { bottom: calc(var(--sab, 0px) + 12px) !important; }
.map8.fs .leaflet-control-scale { margin-bottom: calc(var(--sab, 0px) + 8px) !important; }
.map8.plan .m8fsb, .map8.area-editing .m8fsb, .map8.cell-mode .m8fsb, .map8.placing .m8fsb { display: none; }
@media (orientation: landscape) and (max-height: 520px) { .m8fsb { top: calc(12px + var(--sat, 0px)); left: auto; right: calc(60px + var(--sar, 0px)); } }
/* v1.6.2: left-edge back swipe – a soft shadow on the moving screen and a back chevron that lights up past the threshold */
html.eswiping #view { box-shadow: -18px 0 30px rgba(0,0,0,.55); will-change: transform; }
.eback { position: fixed; left: 10px; top: 50%; z-index: 0; width: 38px; height: 38px; margin-top: -19px; border-radius: 50%; display: grid; place-items: center; background: rgba(14,17,16,.9); border: 1px solid rgba(201,169,106,.35); color: #b9ad8d; opacity: 0; pointer-events: none; transition: background .12s, color .12s; }
.eback svg { width: 18px; height: 18px; }
.eback.go { background: rgba(201,169,106,.25); color: #f4efe2; }
html.eswiping body { background: #070807; }
/* v1.6.2: the zoom chip + dial (replaces the −/+ buttons, slider and 1×/2×/3× row) */
.scan-camera .scan-zoom.szx { display: flex; align-items: center; gap: 6px; grid-template-columns: none; width: auto; height: 40px; padding: 4px 5px 4px 4px; border-radius: 20px; box-sizing: border-box; }
.szc { flex: none; min-width: 46px; height: 32px; padding: 0 8px; border-radius: 16px; border: 1px solid rgba(255,255,255,.22); background: rgba(255,255,255,.1); color: #fff; font: 600 12.5px "Geist Mono", ui-monospace, monospace; text-shadow: 0 1px 2px rgba(0,0,0,.6); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.szc.on { color: #ffd66b; border-color: rgba(255,214,107,.55); background: rgba(255,214,107,.14); }
.szd { position: relative; flex: none; width: 196px; height: 32px; overflow: hidden; touch-action: none; cursor: ew-resize; outline: none; border-radius: 16px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent); mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent); }
.szd:focus-visible { box-shadow: inset 0 0 0 1px rgba(255,214,107,.6); }
.szt { position: absolute; top: 0; bottom: 0; left: 50%; will-change: transform; }
.szd.drag .szt { transition: none; }
.szt i { position: absolute; bottom: 6px; width: 1px; height: 6px; margin-left: -.5px; background: rgba(255,255,255,.45); }
.szt i.hf { height: 9px; background: rgba(255,255,255,.65); }
.szt i.mj { height: 12px; width: 1.5px; background: #fff; }
.szt b { position: absolute; top: 1px; transform: translateX(-50%); font: 600 9px "Geist Mono", ui-monospace, monospace; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.7); }
.szi { position: absolute; left: 50%; bottom: 3px; width: 2px; height: 18px; margin-left: -1px; border-radius: 1px; background: #ffd66b; box-shadow: 0 0 4px rgba(0,0,0,.5); }
@media (orientation: landscape) and (max-height: 520px) { .scan-camera .scan-zoom.szx { width: auto; } }
html.eback-on, html.eback-on body { overscroll-behavior-x: none; }
