:root{
  --ink:#11100e; --ink2:#1a1916; --line:rgba(239,230,214,.09); --line2:rgba(239,230,214,.16);
  --cream:#efe6d6; --mute:#a59d8f; --dim:#6f685d;
  --serif:"Instrument Serif",Georgia,serif; --sans:"Geist",system-ui,-apple-system,sans-serif; --mono:"Geist Mono",ui-monospace,monospace;
  --sheet-peek:178px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--ink);color:var(--cream);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit}
button:focus-visible,input:focus-visible{outline:2px solid #e9b44c;outline-offset:2px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
#app{position:fixed;inset:0}
#map{position:absolute;inset:0}
.maplibregl-ctrl-attrib{background:rgba(17,16,14,.6)!important;color:var(--dim)!important;font-size:10px}
.maplibregl-ctrl-attrib a{color:var(--mute)!important}
.maplibregl-ctrl-group{background:rgba(26,25,22,.85)!important;border:1px solid var(--line2);box-shadow:none!important}
.maplibregl-ctrl-group button span{filter:invert(.9)}

.brand{position:absolute;top:calc(env(safe-area-inset-top) + 14px);left:16px;pointer-events:none;text-shadow:0 1px 12px rgba(0,0,0,.6)}
.mark{font-family:var(--serif);font-size:30px;line-height:1;letter-spacing:.2px}
.mark em{font-style:italic;color:#e9b44c}
.mark.big{font-size:46px}
.sub{font-size:12px;color:var(--mute);margin-top:6px;letter-spacing:.02em}

.modes{position:absolute;top:calc(env(safe-area-inset-top) + 16px);right:14px;display:flex;background:rgba(26,25,22,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line2);border-radius:999px;padding:3px}
.mode{border:0;background:none;padding:7px 12px;border-radius:999px;font-size:12px;color:var(--mute);cursor:pointer;transition:background .25s,color .25s}
.mode.on{background:var(--cream);color:var(--ink)}

/* sheet */
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:86vh;background:rgba(20,19,17,.9);backdrop-filter:blur(22px) saturate(1.2);-webkit-backdrop-filter:blur(22px) saturate(1.2);border-top:1px solid var(--line2);border-radius:22px 22px 0 0;padding:4px 0 calc(env(safe-area-inset-bottom) + 14px);transform:translateY(calc(100% - var(--sheet-peek)));transition:transform .45s cubic-bezier(.2,.8,.2,1);overflow:hidden;display:flex;flex-direction:column}
.sheet.open{transform:none}
.sheet.open .more{overflow-y:auto}
.grab{display:block;width:100%;height:22px;border:0;background:none;cursor:pointer;flex:none}
.grab span{display:block;margin:6px auto 0;width:38px;height:4px;border-radius:4px;background:var(--line2)}
.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:2px 18px 12px;flex:none}
.tot b{display:block;font-family:var(--serif);font-weight:400;font-size:28px;line-height:1.05;font-variant-numeric:tabular-nums}
.tot span{font-size:11px;color:var(--mute);letter-spacing:.04em;text-transform:uppercase}
.chips{display:flex;gap:7px;overflow-x:auto;padding:0 18px 10px;scrollbar-width:none;flex:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:flex;align-items:center;gap:7px;border:1px solid var(--line2);background:rgba(239,230,214,.03);border-radius:999px;padding:7px 12px 7px 10px;font-size:13px;cursor:pointer;transition:opacity .25s,border-color .25s,background .25s;white-space:nowrap}
.chip i{width:9px;height:9px;border-radius:50%;flex:none}
.chip small{font-family:var(--mono);font-size:11px;color:var(--mute)}
.chip.off{opacity:.38}
.chip.solo{border-color:var(--cream)}
.more{padding:6px 18px 8px;flex:1;min-height:0;overflow:hidden}
.row-h{display:flex;align-items:center;justify-content:space-between;margin:16px 0 8px}
h2{font-size:11px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--mute);margin:0}
.dates{display:flex;flex-wrap:wrap;gap:6px}
.dates button,.seg button{border:1px solid var(--line2);background:none;border-radius:8px;padding:6px 10px;font-size:12.5px;color:var(--mute);cursor:pointer}
.dates button.on,.seg button.on{background:var(--cream);border-color:var(--cream);color:var(--ink)}
.seg{display:flex;gap:4px}
.list{list-style:none;margin:0;padding:0}
.list li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.list li:last-child{border-bottom:0}
.list .nm{display:flex;align-items:center;gap:9px;font-size:14.5px}
.list .nm i{width:9px;height:9px;border-radius:50%}
.list .nm em{font-style:normal;font-size:11px;color:var(--dim);letter-spacing:.03em}
.list .v{font-family:var(--mono);font-size:13px;text-align:right;font-variant-numeric:tabular-nums}
.list .bar{grid-column:1/-1;height:3px;border-radius:3px;background:var(--line);overflow:hidden}
.list .bar b{display:block;height:100%;border-radius:3px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.list .meta{grid-column:1/-1;font-size:12px;color:var(--mute);font-family:var(--mono)}
.places .bar b{background:var(--cream);opacity:.55}
.foot{font-size:11.5px;color:var(--dim);line-height:1.5;margin:18px 0 6px}

/* clusters */
.cl{position:relative;cursor:pointer;animation:pop .5s cubic-bezier(.2,.9,.3,1.3) both}
.cl svg{display:block;filter:drop-shadow(0 4px 14px rgba(0,0,0,.55))}
.cl span{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--serif);color:var(--cream);font-variant-numeric:tabular-nums}
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}

/* customer card */
.card{position:absolute;left:10px;right:10px;bottom:calc(env(safe-area-inset-bottom) + 10px);background:rgba(24,23,20,.96);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid var(--line2);border-radius:20px;padding:18px 18px 16px;box-shadow:0 20px 60px rgba(0,0,0,.5);animation:rise .4s cubic-bezier(.2,.8,.2,1) both;z-index:5;max-height:70vh;overflow-y:auto}
@keyframes rise{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
.card .x{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:none;cursor:pointer;font-size:18px;line-height:1;color:var(--mute)}
.card h3{font-family:var(--serif);font-weight:400;font-size:30px;margin:0 40px 2px 0;line-height:1.05}
.card .where{color:var(--mute);font-size:13.5px}
.badges{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 14px}
.badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:999px;padding:5px 10px;font-size:12px}
.badge i{width:8px;height:8px;border-radius:50%}
.kv{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.kv b{display:block;font-family:var(--serif);font-weight:400;font-size:24px}
.kv span{font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.05em}
.dl{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;margin:12px 0 0;font-size:13.5px}
.dl dt{color:var(--dim)}
.dl dd{margin:0;word-break:break-word}
.dl a{color:var(--cream);text-decoration-color:var(--line2);text-underline-offset:3px}
.pager{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:12px;color:var(--mute)}
.pager button{border:1px solid var(--line2);background:none;border-radius:8px;padding:6px 12px;cursor:pointer}

/* lock */
.lock{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(120% 80% at 50% 20%,rgba(17,16,14,.55),rgba(17,16,14,.92));z-index:10;padding:24px;transition:opacity .6s}
.lock.gone{opacity:0;pointer-events:none}
.lockbox{width:min(360px,100%);text-align:center}
.lockbox p{color:var(--mute);font-size:14px;margin:10px 0 22px}
.lockbox input{width:100%;padding:14px 16px;border-radius:14px;border:1px solid var(--line2);background:rgba(239,230,214,.05);color:var(--cream);font:inherit;font-size:16px}
.lockbox button{width:100%;margin-top:10px;padding:14px;border-radius:14px;border:0;background:var(--cream);color:var(--ink);font-weight:600;cursor:pointer}
.lockbox .err{color:#e08c74;min-height:1.2em;font-size:13px;margin:12px 0 0}

@media (min-width:900px){
  .brand{left:24px;top:22px}
  .sheet{top:96px;left:16px;bottom:16px;right:auto;width:380px;max-height:none;border-radius:20px;border:1px solid var(--line2);transform:none;padding-bottom:14px}
  .sheet .more{overflow-y:auto}
  .grab{display:none}
  .chips{flex-wrap:wrap}
  .card{left:auto;right:16px;bottom:16px;width:380px}
  .modes{top:22px;right:20px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

body:not(.in) .sheet, body:not(.in) .modes{opacity:0;pointer-events:none}
.sheet,.modes{transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .6s}
@media (max-width:899px){.maplibregl-ctrl-bottom-right{bottom:calc(var(--sheet-peek) + env(safe-area-inset-bottom) - 6px)}}

.sheet,.brand,.modes{z-index:3}
