:root{--paper:#f4f1ec;--paper-2:#ece7df;--ink:#15130f;--ink-2:#2a2722;--muted:#6e685e;--muted-2:#9a9387;--line:#15130f1a;--line-strong:#15130f2e;--accent:#e8a24b;--accent-soft:#ffdeba;--accent-ink:#542200;--gps:#2f7bd8;--danger:#b14a3f;--shadow-sm:0 1px 2px #15130f0f, 0 1px 0 #fff9 inset;--shadow-md:0 8px 30px #15130f1a, 0 1px 0 #fff9 inset;--shadow-lg:0 20px 60px #15130f2e, 0 1px 0 #ffffff80 inset;--serif:"Instrument Serif", "Cormorant Garamond", Georgia, serif;--sans:"General Sans", ui-sans-serif, -apple-system, BlinkMacSystemFont, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}@supports (color:lab(0% 0 0)){:root{--accent-soft:lab(90.7039% 7.788 22.3466);--accent-ink:lab(20.4398% 26.2167 35.3626)}}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none}::selection{background:var(--accent);color:var(--ink)}button,input{font-family:inherit}.app{grid-template-columns:360px 1fr;height:100dvh;display:grid;overflow:hidden}.brand-mark{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);align-items:baseline;font-size:28px;font-style:italic;line-height:1;display:inline-flex}.brand-mark .dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin:0 4px;display:inline-block;transform:translateY(-3px)}.rail{border-right:1px solid var(--line);background:var(--paper);flex-direction:column;min-width:0;display:flex;position:relative}.rail-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:22px 24px 16px;display:flex}.brand{align-items:baseline;gap:8px;display:flex}.brand .tag{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted-2);font-size:9.5px}.avatar{width:30px;height:30px;font-family:var(--mono);color:var(--ink);border:1px solid var(--line);background:linear-gradient(135deg,#d8d1c2,#a99e87);border-radius:50%;place-items:center;font-size:10.5px;display:grid}.tabs{border-bottom:1px solid var(--line);flex-shrink:0;gap:0;margin-top:6px;padding:0 12px;display:flex}.tab{appearance:none;color:var(--muted);cursor:pointer;letter-spacing:.005em;background:0 0;border:0;align-items:center;gap:7px;padding:12px 14px;font-size:12.5px;font-weight:500;display:inline-flex;position:relative}.tab .count{font-family:var(--mono);background:var(--paper-2);color:var(--muted);border-radius:3px;padding:2px 5px;font-size:9.5px}.tab.active{color:var(--ink)}.tab.active:after{content:"";background:var(--ink);height:1.5px;position:absolute;bottom:-1px;left:14px;right:14px}.tab:hover{color:var(--ink-2)}.rail-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.search{flex-shrink:0;align-items:center;gap:10px;padding:14px 16px 8px;display:flex}.search-box{background:var(--paper-2);border:1px solid #0000;border-radius:10px;flex:1;align-items:center;gap:8px;padding:9px 12px;transition:background .15s,border-color .15s;display:flex}.search-box:focus-within{border-color:var(--line-strong);background:#fff}.search-box input{font:500 13px var(--sans);color:var(--ink);background:0 0;border:0;outline:0;flex:1;min-width:0}.search-box input::placeholder{color:var(--muted-2);font-weight:400}.filter-btn{background:var(--paper-2);cursor:pointer;width:36px;height:36px;color:var(--muted);border:0;border-radius:10px;flex-shrink:0;place-items:center;display:grid}.filter-btn:hover{background:var(--paper);color:var(--ink)}.items{scrollbar-width:thin;scrollbar-color:#00000026 transparent;flex:1;padding:6px 8px 200px;overflow-y:auto}.items::-webkit-scrollbar{width:8px}.items::-webkit-scrollbar-thumb{background:#0000001f;border-radius:4px}.group-label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2);justify-content:space-between;padding:14px 14px 6px;font-size:9.5px;display:flex}.item{cursor:pointer;text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:10px;grid-template-columns:38px 1fr auto;align-items:center;gap:12px;padding:10px 12px;transition:background .12s;display:grid;position:relative}.item:hover{background:var(--paper-2)}.item.active{background:var(--paper-2);box-shadow:inset 2px 0 0 var(--ink)}.item .icon{border:1px solid var(--line);width:38px;height:38px;color:var(--ink-2);background:#fff;border-radius:10px;place-items:center;display:grid}.item.active .icon{background:var(--ink);color:var(--paper);border-color:var(--ink)}.item .meta{min-width:0}.item .meta .name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:500;overflow:hidden}.item .meta .where{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11.5px;overflow:hidden}.item .stamp{font-family:var(--mono);color:var(--muted-2);white-space:nowrap;text-align:right;font-size:10px}.item .stamp .dist{color:var(--ink-2);margin-bottom:2px;font-weight:500;display:block}.item .reminder-flag{background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:8px;right:8px}.empty{text-align:center;color:var(--muted);padding:60px 24px}.empty h3{font-family:var(--serif);color:var(--ink);letter-spacing:-.01em;margin:0 0 4px;font-size:22px;font-style:italic;font-weight:400}.empty p{margin:0;font-size:12.5px}.map-wrap{background:#e8e2d6;position:relative;overflow:hidden}.leaflet-host{z-index:1;background:#ede7da;position:absolute;inset:0}.leaflet-container{font-family:var(--sans);background:#ede7da}.map-overlay,.dock,.fab,.toast,.sheet-backdrop,.sheet{z-index:1000}.dock{z-index:1001}.toast{z-index:1100}.sheet-backdrop{z-index:1200}.sheet{z-index:1201}.leaflet-control-attribution{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--muted)!important;background:#fffdf7bf!important;padding:2px 8px!important;font-size:9.5px!important}.leaflet-control-attribution a{color:var(--ink-2)!important}.zp-pin{background:0 0!important;border:0!important}.zp-pin-inner{filter:drop-shadow(0 6px 10px #15130f47);width:56px;height:70px;transition:transform .2s;position:relative}.zp-pin:hover .zp-pin-inner{transform:scale(1.06)translateY(-2px)}.zp-pin.active .zp-pin-inner{transform:scale(1.12)translateY(-3px)}.zp-pin-svg{display:block}.zp-pin-glyph{pointer-events:none;place-items:center;display:grid;position:absolute;top:23px;left:50%;transform:translate(-50%,-50%)}.zp-pin-glyph svg{stroke-width:2px!important;width:18px!important;height:18px!important}.zp-pin-reminder{background:var(--accent);border:2px solid var(--paper);z-index:2;border-radius:50%;width:12px;height:12px;position:absolute;top:0;right:4px}.zp-pin-label{background:var(--ink);color:var(--paper);font:500 11px var(--sans);white-space:nowrap;opacity:0;pointer-events:none;border-radius:6px;margin-bottom:4px;padding:4px 8px;transition:opacity .15s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.zp-pin.active .zp-pin-label{opacity:1}.zp-me{background:var(--gps);border:3px solid #fff;border-radius:50%;width:18px;height:18px;position:relative;box-shadow:0 0 0 1px #2f7bd866,0 4px 12px #2f7bd880}.zp-me:after{content:"";background:#2f7bd840;border-radius:50%;animation:2.4s ease-out infinite zp-pulse;position:absolute;inset:-3px}@keyframes zp-pulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(3.5)}}.zp-flash{background:0 0!important;border:0!important}.zp-flash-ring{background:var(--accent);border-radius:50%;width:0;height:0;animation:.8s ease-out forwards zp-flash;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}@keyframes zp-flash{0%{opacity:.55;width:0;height:0}to{opacity:0;width:280px;height:280px}}.map-overlay{pointer-events:none;position:absolute}.map-overlay>*{pointer-events:auto}.map-top-left{flex-direction:column;gap:8px;display:flex;top:16px;left:16px}.crumb{-webkit-backdrop-filter:blur(12px)saturate(140%);border:1px solid var(--line);color:var(--ink-2);box-shadow:var(--shadow-sm);background:#fffdf7db;border-radius:999px;align-items:center;gap:8px;width:max-content;max-width:calc(100vw - 32px);padding:7px 14px;font-size:11.5px;display:inline-flex}.crumb .dot{background:var(--gps);border-radius:50%;flex-shrink:0;width:6px;height:6px}.crumb b{font-weight:600}.crumb .sep{color:var(--muted-2)}.crumb .mono{font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:10.5px}.map-top-right{align-items:center;gap:8px;display:flex;top:16px;right:16px}.map-btn{-webkit-backdrop-filter:blur(12px)saturate(140%);border:1px solid var(--line);width:36px;height:36px;color:var(--ink-2);cursor:pointer;box-shadow:var(--shadow-sm);background:#fffdf7db;border-radius:10px;place-items:center;display:grid}.map-btn:hover{color:var(--ink)}.map-btn:disabled{opacity:.5;cursor:not-allowed}.map-zoom{-webkit-backdrop-filter:blur(12px)saturate(140%);border:1px solid var(--line);box-shadow:var(--shadow-sm);background:#fffdf7db;border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.map-zoom button{cursor:pointer;width:36px;height:36px;color:var(--ink-2);background:0 0;border:0;place-items:center;display:grid}.map-zoom button:hover{color:var(--ink);background:#0000000a}.map-zoom button+button{border-top:1px solid var(--line)}.dock{-webkit-backdrop-filter:blur(20px)saturate(160%);border:1px solid var(--line);width:min(720px,100% - 32px);box-shadow:var(--shadow-md);background:#fffdf7f2;border-radius:18px;position:absolute;bottom:18px;left:50%;overflow:hidden;transform:translate(-50%)}.dock-head{justify-content:space-between;align-items:center;gap:12px;padding:10px 14px 4px;display:flex}.dock-head .lbl{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:9.5px}.dock-head .live{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:11px;display:flex}.dock-head .live .blip{background:var(--gps);border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:2s ease-out infinite pulse-tiny}@keyframes pulse-tiny{0%,to{opacity:.55}50%{opacity:1}}.dock-cats{grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:6px 8px 10px;display:grid}.cat{appearance:none;cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 9px;transition:background .12s,transform .1s;display:flex;position:relative}.cat:hover{background:var(--paper-2)}.cat:active{transform:scale(.96)}.cat .glyph{place-items:center;width:30px;height:30px;display:grid}.cat .name{letter-spacing:.005em;font-size:10.5px;font-weight:500}.cat.add{color:var(--muted-2)}.cat.add .glyph{border:1px dashed var(--line-strong);border-radius:8px}.fab{background:var(--paper);border:1px solid var(--line);width:44px;height:44px;box-shadow:var(--shadow-md);color:var(--ink);cursor:pointer;border-radius:50%;place-items:center;transition:transform .12s,background .12s;display:grid;position:absolute}.fab:hover{background:#fff;transform:translateY(-1px)}.fab:active{transform:scale(.95)}.fab:disabled{opacity:.55;cursor:not-allowed}.fab.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.fab.primary:hover{background:var(--ink-2)}.fab-locate{bottom:140px;right:16px}.fab-locate.active{color:var(--gps)}.fab-list{width:auto;height:40px;font:500 12.5px var(--sans);border-radius:999px;gap:8px;padding:0 16px;display:none;bottom:140px;left:16px}.toast{background:var(--ink);color:var(--paper);box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;border-radius:12px;align-items:center;gap:10px;padding:10px 14px;font-size:12.5px;font-weight:500;transition:opacity .25s,transform .25s;display:flex;position:absolute;top:24px;left:50%;transform:translate(-50%,-20px)}.toast.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.toast .accent-dot{background:var(--accent);border-radius:50%;width:8px;height:8px}.toast .undo{color:var(--paper);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;opacity:.65;background:0 0;border:0;padding:2px 4px;font-size:10.5px}.toast .undo:hover{opacity:1;text-decoration:underline}.sheet-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;background:#15130f33;transition:opacity .25s;position:absolute;inset:0}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{background:var(--paper);border:1px solid var(--line);width:380px;box-shadow:var(--shadow-lg);border-radius:18px;flex-direction:column;transition:transform .35s cubic-bezier(.2,.7,.2,1);display:flex;position:absolute;top:16px;bottom:16px;right:16px;overflow:hidden;transform:translate(110%)}.sheet.open{transform:translate(0)}.sheet-photo{height:180px;color:var(--paper);background:linear-gradient(#15130f00 60%,#15130f40 100%),repeating-linear-gradient(45deg,#dcd5c3 0 14px,#d2cab6 14px 28px);align-items:flex-end;padding:14px;display:flex;position:relative}.photo-actions{gap:8px;display:flex}.photo-btn{appearance:none;cursor:pointer;font:500 12px var(--sans);color:var(--ink);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffdf7eb;border:1px solid #fff3;border-radius:8px;align-items:center;gap:6px;padding:8px 12px;display:inline-flex;box-shadow:0 4px 12px #15130f33}.photo-btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.photo-btn.primary:hover{background:var(--ink-2)}.photo-btn:hover{background:#fff}.photo-btn.replace{padding:6px 10px;font-size:11px;position:absolute;bottom:12px;right:12px}.sheet-close{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);cursor:pointer;width:30px;height:30px;color:var(--ink-2);background:#fffdf7db;border-radius:50%;place-items:center;display:grid;position:absolute;top:12px;right:12px}.sheet-close:hover{color:var(--ink)}.sheet-body{scrollbar-width:thin;flex:1;padding:18px 20px 20px;overflow-y:auto}.sheet h2{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);cursor:text;outline:none;margin:0 0 4px;font-size:30px;font-style:italic;font-weight:400;line-height:1.05}.sheet h2 .cat-tag{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:10px;font-style:normal;display:block}.sheet .where-row{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 16px;font-size:12.5px;display:flex}.sheet .where-row .pill{background:var(--paper-2);color:var(--ink-2);font-family:var(--mono);border-radius:999px;padding:3px 8px;font-size:10.5px}.stat-row{background:var(--line);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr 1fr 1fr;gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.stat{background:var(--paper);padding:10px 12px}.stat .k{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted-2);font-size:9.5px}.stat .v{color:var(--ink);margin-top:4px;font-size:14px;font-weight:600}.stat .v small{color:var(--muted);margin-left:2px;font-size:11px;font-weight:400}.section-h{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2);justify-content:space-between;align-items:center;margin:14px 0 8px;font-size:9.5px;display:flex}.section-h .add-btn{font-family:var(--sans);letter-spacing:0;text-transform:none;color:var(--ink-2);cursor:pointer;background:0 0;border:0;font-size:11px}.section-h .add-btn:hover{color:var(--ink);text-decoration:underline}.tags{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--paper-2);color:var(--ink-2);cursor:default;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:5px 10px;font-size:11.5px;font-weight:500;display:inline-flex}.tag .x{cursor:pointer;color:var(--muted-2);background:0 0;border:0;padding:0;font-size:12px;line-height:1}.tag .x:hover{color:var(--ink)}.tag.add{border:1px dashed var(--line-strong);color:var(--muted);cursor:pointer;background:0 0}.tag.add:hover{color:var(--ink);border-color:var(--ink)}.tag-input{font:500 11.5px var(--sans);color:var(--ink);border:0;border-bottom:1px solid var(--line-strong);background:0 0;outline:0;width:80px;padding:5px 4px}.reminder{background:var(--accent-soft);color:var(--accent-ink);cursor:pointer;text-align:left;border:0;border-radius:12px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:12.5px;font-weight:500;display:flex}.reminder .clock{color:var(--accent-ink);flex-shrink:0}.reminder .timer{font-family:var(--mono);margin-left:auto;font-size:12px;font-weight:600}.reminder.empty{border:1px dashed var(--line-strong);color:var(--muted);background:0 0}.reminder.empty:hover{color:var(--ink);border-color:var(--ink)}.note{color:var(--ink-2);background:var(--paper-2);resize:vertical;border:0;border-radius:12px;outline:0;width:100%;min-height:56px;padding:12px 14px;font-family:inherit;font-size:13px;line-height:1.55}.note.empty{color:var(--muted);font-style:italic}.note.coords{font-family:var(--mono);min-height:0;font-size:12px}.sheet-actions{border-top:1px solid var(--line);background:var(--paper);gap:8px;padding:12px 16px;display:flex}.btn{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:500 13px var(--sans);cursor:pointer;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:7px;padding:10px 14px;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--paper-2)}.btn.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn.primary:hover{background:var(--ink-2)}.btn.danger{color:var(--danger);flex:none}.btn.danger:hover{background:#b14a3f0f;border-color:#b14a3f66}.history{flex:1;padding:8px 20px 200px;overflow-y:auto}.h-day-h{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2);border-bottom:1px solid var(--line);justify-content:space-between;margin-bottom:4px;padding:16px 0 6px;font-size:9.5px;display:flex}.h-row{border-bottom:1px solid var(--line);cursor:pointer;text-align:left;width:100%;color:var(--ink);background:0 0;border-top:0;border-left:0;border-right:0;grid-template-columns:56px 28px 1fr;align-items:center;gap:10px;padding:10px 0;display:grid}.h-row:last-child{border-bottom:0}.h-row:hover{background:var(--paper-2)}.h-time{font-family:var(--mono);color:var(--muted);font-size:10.5px}.h-icon{background:var(--paper-2);width:28px;height:28px;color:var(--ink-2);border-radius:8px;place-items:center;display:grid}.h-meta{min-width:0}.h-meta .n{color:var(--ink);font-size:13px;font-weight:500}.h-meta .w{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11.5px;overflow:hidden}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;background:#15130f59;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-lg);border-radius:16px;width:min(360px,100vw - 32px);padding:22px}.modal h3{font-family:var(--serif);color:var(--ink);margin:0 0 14px;font-size:22px;font-style:italic;font-weight:400}.modal .field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.modal label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2);font-size:9.5px}.modal input,.modal select{background:var(--paper-2);font:500 13px var(--sans);color:var(--ink);border:1px solid #0000;border-radius:8px;outline:0;padding:9px 12px}.modal input:focus,.modal select:focus{border-color:var(--line-strong);background:#fff}.modal-actions{gap:8px;margin-top:14px;display:flex}@media (max-width:860px){.app{grid-template-columns:1fr;height:100dvh}.rail{border-right:0;border-top:1px solid var(--line);background:var(--paper);z-index:7;border-radius:22px 22px 0 0;height:75dvh;transition:transform .35s cubic-bezier(.2,.7,.2,1);position:absolute;inset:auto 0 0;overflow:hidden;transform:translateY(calc(100% - 64px));box-shadow:0 -16px 40px #15130f1f}.rail.open{transform:translateY(0)}.rail:before{content:"";background:var(--line-strong);z-index:2;border-radius:2px;width:36px;height:4px;position:absolute;top:8px;left:50%;transform:translate(-50%)}.rail-head{padding-top:22px}.map-wrap{grid-row:1}.dock{width:auto;bottom:80px;left:12px;right:12px;transform:none}.dock-cats{scrollbar-width:none;grid-auto-columns:64px;grid-auto-flow:column;overflow-x:auto}.dock-cats::-webkit-scrollbar{display:none}.fab-list{display:inline-flex}.fab-locate{bottom:220px;right:12px}.fab-list{bottom:220px;left:12px}.app.rail-open .dock{display:none}.sheet{width:auto;inset:8px}.map-top-left .crumb .mono{display:none}}.leaflet-bar a,.leaflet-bar a:hover{background:0 0}
