.Login{min-height:100%;display:grid;place-items:center;padding:var(--space-lg);background:radial-gradient(circle at 20% 10%,var(--sage-pale) 0%,transparent 40%),radial-gradient(circle at 80% 90%,var(--cream-deep) 0%,transparent 50%),var(--cream)}.Login__card{width:100%;max-width:380px;background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--radius-lg);padding:var(--space-xl) var(--space-lg);box-shadow:var(--shadow-md)}.Login__title{font-family:var(--font-display);font-size:40px;font-weight:500;letter-spacing:-.01em;margin:0 0 var(--space-xs);color:var(--moss-deep)}.Login__subtitle{font-family:var(--font-hand);font-size:22px;color:var(--ink-muted);margin:0 0 var(--space-lg)}.Login__form{display:flex;flex-direction:column;gap:var(--space-md)}.Login__field{display:flex;flex-direction:column;gap:var(--space-xs)}.Login__label{font-size:13px;font-weight:500;color:var(--ink-soft);letter-spacing:.02em;text-transform:uppercase}.Login__field input{background:var(--cream);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 12px;font-size:16px;color:var(--ink);transition:border-color .12s ease,background .12s ease}.Login__field input:focus{outline:none;border-color:var(--moss-light);background:var(--paper)}.Login__field input:disabled{opacity:.6;cursor:not-allowed}.Login__submit{background:var(--moss);color:var(--paper);border:none;border-radius:var(--radius-md);padding:12px 16px;font-weight:500;font-size:15px;letter-spacing:.02em;transition:background .12s ease,transform 80ms ease}.Login__submit:hover:not(:disabled){background:var(--moss-deep)}.Login__submit:active:not(:disabled){transform:translateY(1px)}.Login__submit:disabled{opacity:.6;cursor:not-allowed}.Login__banner{border-radius:var(--radius-md);padding:12px 14px;font-size:14px;line-height:1.5}.Login__banner code{font-family:var(--font-mono);font-size:12.5px;background:#0000000d;padding:1px 5px;border-radius:var(--radius-sm)}.Login__banner--ok{background:var(--sage-pale);color:var(--moss-deep);border:1px solid var(--sage)}.Login__banner--warn{background:#d4a64a26;color:var(--bark);border:1px solid rgba(212,166,74,.4);margin-bottom:var(--space-md)}.Login__banner--err{background:#b66b481f;color:var(--terracotta);border:1px solid rgba(182,107,72,.35)}.Layout{min-height:100vh;display:grid;grid-template-columns:64px 1fr;grid-template-rows:56px 1fr;grid-template-areas:"rail topbar" "rail main";background:var(--cream)}.Layout__rail{grid-area:rail;background:var(--moss-deep);color:var(--cream);display:flex;flex-direction:column;align-items:center;padding:14px 0;gap:6px;position:sticky;top:0;height:100vh}.Layout__brand{font-family:var(--font-display);font-size:20px;font-weight:500;color:var(--cream);margin-bottom:12px;letter-spacing:.02em}.Layout__rail-spacer{flex:1}.Layout__rail-btn{width:40px;height:40px;display:grid;place-items:center;border-radius:var(--radius-md);color:var(--sage);text-decoration:none;transition:background .15s,color .15s}.Layout__rail-btn:hover{background:#ffffff0f;color:var(--cream)}.Layout__rail-btn--active{background:var(--moss);color:var(--cream)}.Layout__rail-btn--disabled{opacity:.3;cursor:not-allowed}.Layout__rail-btn--disabled:hover{background:transparent;color:var(--sage)}.Layout__rail-btn svg{width:22px;height:22px}.Layout__topbar{grid-area:topbar;display:flex;justify-content:flex-end;align-items:center;gap:var(--space-md);padding:0 var(--space-lg);border-bottom:1px solid var(--line-soft);background:var(--paper)}.Layout__email{font-size:13px;color:var(--ink-muted);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Layout__signout{font-size:13px;background:transparent;border:1px solid var(--line);color:var(--ink-soft);padding:6px 12px;border-radius:var(--radius-sm)}.Layout__signout:hover:not(:disabled){background:var(--cream-deep)}.Layout__signout:disabled{opacity:.5;cursor:progress}.Layout__main{grid-area:main;min-width:0;overflow-x:hidden}.Layout__tabbar{display:none}@media (max-width: 700px){.Layout{grid-template-columns:1fr;grid-template-rows:1fr 64px;grid-template-areas:"main" "tabbar";min-height:100dvh}.Layout__rail,.Layout__topbar{display:none}.Layout__main{grid-area:main;overflow-y:auto}.Layout__tabbar{grid-area:tabbar;display:grid;grid-template-columns:repeat(4,1fr);align-items:stretch;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0)}.Layout__tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:6px 0 4px}.Layout__tab-icon{display:grid;place-items:center;width:26px;height:26px}.Layout__tab-icon svg{width:22px;height:22px}.Layout__tab--active{color:var(--moss-deep)}}.PlantsList{padding:var(--space-lg) var(--space-xl);max-width:1200px;margin:0 auto}@media (max-width: 640px){.PlantsList{padding:var(--space-md)}}.PlantsList__loading{padding:var(--space-xl);color:var(--ink-muted);font-size:14px}.PlantsList__header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap}.PlantsList__eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:4px}.PlantsList__title{font-family:var(--font-display);font-size:32px;font-weight:500;margin:0 0 4px}.PlantsList__count{margin:0;font-size:13px;color:var(--ink-muted)}.PlantsList__toolbar{display:flex;gap:var(--space-sm);align-items:center}.PlantsList__filter{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 10px;font-size:13px;color:var(--ink);font-family:var(--font-body)}.PlantsList__add{background:var(--moss);color:var(--cream);border:1px solid var(--moss);border-radius:var(--radius-sm);padding:7px 14px;font-size:13px;font-weight:500}.PlantsList__add:hover{background:var(--moss-deep)}.PlantsList__error{padding:10px 12px;background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:14px;margin:0 0 var(--space-md)}.PlantsList__tablewrap{background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--radius-md);overflow:hidden}.PlantsList__table{width:100%;border-collapse:collapse;font-size:14px}.PlantsList__table thead{background:var(--cream-deep);border-bottom:1px solid var(--line)}.PlantsList__table th{text-align:left;font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);padding:12px 14px}.PlantsList__table th button{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit}.PlantsList__table th button:hover{color:var(--ink)}.PlantsList__row{border-top:1px solid var(--line-soft);cursor:pointer;transition:background .1s}.PlantsList__row:hover{background:var(--cream)}.PlantsList__table td{padding:12px 14px;vertical-align:middle}.PlantsList__name a{color:var(--ink);text-decoration:none;font-weight:500}.PlantsList__name a:hover{color:var(--moss);text-decoration:underline}.PlantsList__cultivar{color:var(--ink-muted);font-style:italic}.PlantsList__sci{font-style:italic;color:var(--ink-soft)}.PlantsList__faint{color:var(--ink-faint)}.PlantsList__status{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:3px 8px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--cream);color:var(--ink-soft)}.PlantsList__status--alive{background:var(--sage-pale);color:var(--moss-deep);border-color:var(--sage)}.PlantsList__status--dead{background:#5d4a3a1f;color:var(--soil);border-color:var(--soil)}.PlantsList__status--removed{background:var(--cream-deep);color:var(--ink-faint)}.PlantsList__status--needs_identification{background:#d4a64a2e;color:#8a6a1f;border-color:var(--honey)}@media (max-width: 640px){.PlantsList__col-sci,.PlantsList__col-date{display:none}}.PlantsList__empty{max-width:940px;margin:0 auto;padding:var(--space-2xl) var(--space-xl) var(--space-xl);text-align:center}@media (max-width: 640px){.PlantsList__empty{padding:var(--space-xl) var(--space-md) var(--space-md)}}.PlantsList__empty-eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);margin-bottom:var(--space-md)}.PlantsList__empty-title{font-family:var(--font-display);font-size:56px;font-weight:400;line-height:1.05;margin:0 0 var(--space-md)}.PlantsList__empty-title em{font-family:var(--font-display);font-style:italic;color:var(--moss)}@media (max-width: 640px){.PlantsList__empty-title{font-size:40px}}.PlantsList__empty-lede{max-width:560px;margin:0 auto var(--space-xl);font-size:16px;color:var(--ink-muted);line-height:1.6}.PlantsList__cta-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md);text-align:left}@media (max-width: 800px){.PlantsList__cta-row{grid-template-columns:1fr}}.PlantsList__cta{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-lg);color:var(--ink);text-decoration:none;transition:transform .15s,box-shadow .15s}.PlantsList__cta:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.PlantsList__cta--soon{opacity:.55;pointer-events:none}.PlantsList__cta-num{font-family:var(--font-display);font-style:italic;font-size:28px;color:var(--moss);line-height:1}.PlantsList__cta-title{font-family:var(--font-display);font-size:20px;line-height:1.2;font-weight:500}.PlantsList__cta-desc{font-size:13px;color:var(--ink-muted)}.Modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f2a228c;display:grid;place-items:center;padding:var(--space-md);z-index:100}.Modal{background:var(--paper);border-radius:var(--radius-lg);border:1px solid var(--line);padding:var(--space-lg);max-width:480px;width:100%;box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto}.Modal__title{font-family:var(--font-display);font-size:22px;margin:0 0 6px}.Modal__subtitle{margin:0 0 var(--space-md);font-size:13px;color:var(--ink-muted)}.Modal__form{display:flex;flex-direction:column;gap:var(--space-md)}.Modal__field{display:flex;flex-direction:column;gap:6px}.Modal__field>span{font-size:13px;color:var(--ink-soft);font-weight:500}.Modal__field>span>em{font-style:italic;font-weight:400;color:var(--ink-faint);margin-left:6px}.Modal__field input,.Modal__field select,.Modal__field textarea{background:var(--cream);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;font-size:14px;color:var(--ink);font-family:var(--font-body)}.Modal__field input:focus,.Modal__field select:focus,.Modal__field textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #4a5d3f1f}.Modal__field textarea{resize:vertical}.Modal__error{margin:0;padding:10px 12px;background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:14px}.Modal__actions{display:flex;justify-content:flex-end;gap:var(--space-sm)}.MapPin__pulse{animation:MapPin__pulse 1.6s ease-in-out infinite;transform-origin:center;transform-box:fill-box}@keyframes MapPin__pulse{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.SymbolPicker{display:flex;flex-direction:column;gap:var(--space-md)}.SymbolPicker__group{border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:6px 10px 10px;margin:0}.SymbolPicker__legend{font-size:12px;font-weight:500;color:var(--ink-soft);padding:0 4px}.SymbolPicker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.SymbolPicker__tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;background:var(--cream);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s,box-shadow .12s}.SymbolPicker__tile:hover{background:var(--cream-deep);border-color:var(--moss-soft, var(--line))}.SymbolPicker__tile--selected{background:var(--cream-deep);border-color:var(--moss);box-shadow:0 0 0 2px #4a5d3f2e}.SymbolPicker__label{font-size:11px;color:var(--ink-soft);line-height:1}.SymbolPicker__tile--selected .SymbolPicker__label{color:var(--ink);font-weight:500}.BedPositionPicker{display:flex;flex-direction:column;gap:6px;align-items:stretch}.BedPositionPicker__svg{width:220px;height:220px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);cursor:crosshair;align-self:flex-start}.BedPositionPicker__meta{display:flex;align-items:center;gap:var(--space-sm);font-size:12px;color:var(--ink-soft);min-height:22px}.BedPositionPicker__hint{font-style:italic}.BedPositionPicker__clear{background:transparent;border:none;color:var(--terracotta);font-size:12px;font-family:inherit;cursor:pointer;padding:0}.BedPositionPicker__clear:hover{text-decoration:underline}.PlantForm{display:flex;flex-direction:column;gap:var(--space-md);max-width:760px}.PlantForm__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}@media (max-width: 640px){.PlantForm__row{grid-template-columns:1fr}}.PlantForm__field{display:flex;flex-direction:column;gap:6px}.PlantForm__field>span{font-size:13px;color:var(--ink-soft);font-weight:500}.PlantForm__field>span>em{font-style:italic;font-weight:400;color:var(--ink-faint);margin-left:6px}.PlantForm__note{margin:0;padding:8px 10px;background:#4a5d3f0f;border:1px dashed var(--line);border-radius:var(--radius-sm);font-size:12px;color:var(--ink-muted)}.PlantForm__field input,.PlantForm__field select,.PlantForm__field textarea{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;font-size:14px;color:var(--ink);font-family:var(--font-body)}.PlantForm__field input:focus,.PlantForm__field select:focus,.PlantForm__field textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #4a5d3f1f}.PlantForm__field textarea{resize:vertical;min-height:120px;font-family:var(--font-body)}.PlantForm__error{margin:0;padding:10px 12px;background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:14px}.PlantForm__actions{display:flex;gap:var(--space-sm);justify-content:flex-end;border-top:1px solid var(--line-soft);padding-top:var(--space-md)}.PlantForm__btn{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:8px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:500}.PlantForm__btn:disabled{opacity:.55;cursor:progress}.PlantForm__btn--ghost:hover:not(:disabled){background:var(--cream-deep)}.PlantForm__btn--primary{background:var(--moss);color:var(--cream);border-color:var(--moss)}.PlantForm__btn--primary:hover:not(:disabled){background:var(--moss-deep)}.PlantPage{padding:var(--space-lg) var(--space-xl);max-width:900px;margin:0 auto}@media (max-width: 640px){.PlantPage{padding:var(--space-md)}}.PlantPage__crumbs{font-size:13px;color:var(--ink-faint);margin-bottom:var(--space-sm);display:flex;align-items:center;gap:8px}.PlantPage__crumbs a{color:var(--ink-muted);text-decoration:none}.PlantPage__crumbs a:hover{color:var(--moss);text-decoration:underline}.PlantPage__crumbs em{font-style:italic;color:var(--ink-soft)}.PlantPage__title{font-family:var(--font-display);font-size:32px;font-weight:500;margin:0 0 var(--space-lg)}.PlantPage__loading{padding:var(--space-xl);color:var(--ink-muted);font-size:14px}.PlantPage__error{padding:var(--space-md);background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:14px;margin:var(--space-lg)}.GardenMap{width:100%;height:100%;display:flex}.GardenMap svg{flex:1;min-height:0}.PlantDetail{position:relative;min-height:calc(100vh - 56px);background:var(--cream)}.PlantDetail__map{display:none;position:absolute;top:0;right:0;bottom:0;left:0;cursor:default}.PlantDetail__map:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#1f2a222e;pointer-events:none}@media (min-width: 900px){.PlantDetail__map{display:block}.PlantDetail__panel{position:absolute;top:var(--space-lg);right:var(--space-lg);bottom:var(--space-lg);width:480px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow-y:auto}}.PlantDetail__panel{background:var(--paper);border:1px solid var(--line);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);margin:0 auto;max-width:760px}@media (min-width: 900px){.PlantDetail__panel{margin:0;max-width:none}}@media (max-width: 640px){.PlantDetail__panel{padding:var(--space-md);border:none;background:var(--cream)}}.PlantDetail__panelHeader{display:flex;justify-content:space-between;align-items:center}.PlantDetail__crumbs{font-size:13px;color:var(--ink-faint);display:flex;align-items:center;gap:8px}.PlantDetail__crumbs a{color:var(--ink-muted);text-decoration:none}.PlantDetail__crumbs a:hover{color:var(--moss);text-decoration:underline}.PlantDetail__crumbs em{font-style:italic;color:var(--ink-soft)}.PlantDetail__close{background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);width:30px;height:30px;color:var(--ink-muted);font-size:14px;display:grid;place-items:center}.PlantDetail__close:hover{background:var(--cream-deep);color:var(--ink)}.PlantDetail__heading h1{font-family:var(--font-display);font-size:28px;font-weight:500;margin:0 0 4px;line-height:1.15}.PlantDetail__cultivar{font-style:italic;color:var(--moss)}.PlantDetail__sci{margin:0 0 var(--space-sm);font-size:14px;font-style:italic;color:var(--ink-muted)}.PlantDetail__meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--ink-muted)}.PlantDetail__status{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:3px 8px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--cream);color:var(--ink-soft)}.PlantDetail__status--alive{background:var(--sage-pale);color:var(--moss-deep);border-color:var(--sage)}.PlantDetail__status--needs_identification{background:#d4a64a2e;color:#8a6a1f;border-color:var(--honey)}.PlantDetail__status--dead{background:#5d4a3a1f;color:var(--soil);border-color:var(--soil)}.PlantDetail__status--removed{background:var(--cream-deep);color:var(--ink-faint)}.PlantDetail__edit{margin-left:auto;font-size:13px;color:var(--moss);text-decoration:none;border:1px solid var(--moss);padding:4px 10px;border-radius:var(--radius-sm)}.PlantDetail__edit:hover{background:var(--moss);color:var(--cream)}.PlantDetail__tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line-soft);padding-bottom:4px}.PlantDetail__tab{background:transparent;border:none;color:var(--ink-muted);font-size:13px;padding:6px 10px;border-radius:var(--radius-sm);font-weight:500;cursor:pointer}.PlantDetail__tab:hover{background:var(--cream-deep);color:var(--ink)}.PlantDetail__tab--active{background:var(--moss);color:var(--cream)}.PlantDetail__tab--active:hover{background:var(--moss-deep);color:var(--cream)}.PlantDetail__tabBody{flex:1}.PlantDetail__loading{padding:var(--space-xl);color:var(--ink-muted)}.PlantDetail__error{margin:var(--space-lg);padding:var(--space-md);background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta)}.NotesTab{display:flex;flex-direction:column;gap:var(--space-sm)}.NotesTab__textarea{width:100%;min-height:200px;background:var(--cream);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;font-family:var(--font-body);font-size:14px;line-height:1.6;color:var(--ink);resize:vertical}.NotesTab__textarea:focus{outline:none;border-color:var(--moss);box-shadow:0 0 0 3px #4a5d3f1f}.NotesTab__error{margin:0;padding:8px 10px;background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:13px}.NotesTab__actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.NotesTab__hint{font-size:12px;color:var(--ink-faint);font-style:italic}.ComingSoon{padding:var(--space-xl) var(--space-md);text-align:center;color:var(--ink-muted)}.ComingSoon__lede{font-family:var(--font-display);font-size:22px;margin:0 0 var(--space-sm);color:var(--ink-soft)}.ComingSoon__hint{margin:0;font-size:13px}.ComingSoon__hint code{font-family:var(--font-mono);font-size:12px;background:var(--cream-deep);padding:1px 4px;border-radius:3px}.PlantDetail__hero{position:relative;height:240px;margin:-16px -16px 16px;border-radius:0;display:grid;place-items:center;color:var(--paper);font-family:var(--font-display);font-style:italic;letter-spacing:.02em;font-size:14px;text-shadow:0 1px 2px rgba(0,0,0,.18)}.PlantDetail__heroClose{position:absolute;top:12px;right:12px;width:36px;height:36px;border-radius:50%;background:#00000073;color:var(--paper);border:none;font-size:18px;display:grid;place-items:center}.PlantDetail__quickActions{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:var(--space-md)}.PlantDetail__quickAction{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);color:var(--ink-soft);font-family:var(--font-body);font-size:11px;text-align:center;cursor:not-allowed}.PlantDetail__quickAction:disabled{color:var(--ink-faint)}.PlantDetail__quickAction svg{width:18px;height:18px;color:var(--moss)}.PlantDetail__quickAction:disabled svg{color:var(--ink-faint)}.PlantDetail--mobile .PlantDetail__panel{padding:16px;background:var(--paper);border:none;margin:0;max-width:none}.PlantDetail--mobile .PlantDetail__heading h1{font-size:24px}.NotesTab__searchHint{margin:0 0 var(--space-sm);padding:8px 12px;background:var(--cream-deep);border:1px dashed var(--line);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-muted);display:flex;align-items:center;gap:8px}.NotesTab__searchHint svg{width:12px;height:12px;flex-shrink:0}.AddPlantOnMapModal{max-width:640px}.AddPlantOnMapModal__form{gap:var(--space-md)}.PinchZoom{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none}.PinchZoom__inner{width:100%;height:100%;will-change:transform}.PinchZoom__reset{position:absolute;top:12px;right:12px;padding:8px 12px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:var(--paper);border:none;border-radius:var(--radius-pill);box-shadow:var(--shadow-md);z-index:5}.MapPage{display:flex;flex-direction:column;width:100%;height:calc(100vh - 56px);overflow:hidden}.MapPage__loading{padding:var(--space-xl);color:var(--ink-muted);font-size:14px}.MapPage__error{padding:10px 12px;margin:var(--space-lg);background:#b66b4814;border:1px solid var(--terracotta-soft);border-radius:var(--radius-sm);color:var(--terracotta);font-size:14px}.MapPage__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl) var(--space-xl);text-align:center;height:100%}.MapPage__empty-title{font-family:var(--font-display);font-size:32px;font-weight:500;margin:0}.MapPage__empty-lede{max-width:440px;margin:0;font-size:15px;color:var(--ink-muted);line-height:1.6}.MapPage__empty-cta{display:inline-block;background:var(--moss);color:var(--cream);border:1px solid var(--moss);border-radius:var(--radius-sm);padding:9px 18px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s}.MapPage__empty-cta:hover{background:var(--moss-deep)}.MapPage__toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:10px var(--space-lg);border-bottom:1px solid var(--line-soft);background:var(--paper);flex-shrink:0;flex-wrap:wrap}.MapPage__title-block{display:flex;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap}.MapPage__title{font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--ink)}.MapPage__meta{font-size:13px;color:var(--ink-muted)}.MapPage__tools{display:flex;gap:2px;align-items:center}.MapPage__tool{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:13px;border-radius:var(--radius-sm);cursor:pointer;color:var(--ink-soft);background:transparent;border:1px solid transparent;-webkit-user-select:none;user-select:none;font-family:inherit}.MapPage__tool:hover{background:#4a5d3f0f;color:var(--ink)}.MapPage__tool--active{background:var(--cream-deep);border-color:var(--line);color:var(--ink);font-weight:500}.MapPage__tool--disabled{opacity:.4;cursor:not-allowed}.MapPage__tool--cta{background:var(--moss);color:var(--cream);border-color:var(--moss);font-weight:500}.MapPage__tool--cta:hover{background:var(--moss-deep, #3e5034);color:var(--cream)}.MapPage__tool--cta:disabled{opacity:.55;cursor:not-allowed}.MapPage__hint{padding:6px var(--space-lg);font-size:12px;color:var(--ink-muted);background:#4a5d3f0f;border-bottom:1px solid var(--line-soft);flex-shrink:0}.MapPage__hint--placing{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);background:#b66b481a;color:var(--terracotta);font-weight:500}.MapPage__hint-cancel{background:transparent;border:1px solid var(--terracotta);color:var(--terracotta);border-radius:var(--radius-sm);padding:3px 10px;font-size:12px;font-family:inherit;cursor:pointer}.MapPage__hint-cancel:hover{background:#b66b4826}.MapPage__tool-icon{width:14px;height:14px}.MapPage__canvas{flex:1;min-height:0;background:var(--cream);padding:var(--space-md)}.MapPage--mobile{height:100%}.MapPage--mobile .MapPage__toolbar{padding:8px 14px;border-bottom:1px solid var(--line-soft)}.MapPage--mobile .MapPage__title{font-size:16px}.MapPage--mobile .MapPage__meta{font-size:11px}.MapPage--mobile .MapPage__canvas{padding:0;background:var(--paper)}.CameraCard{display:flex;align-items:center;gap:18px;width:100%;margin:0;padding:28px 24px;background:var(--moss-deep);color:var(--paper);border:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);position:relative;overflow:hidden;text-align:left;cursor:pointer}.CameraCard:disabled{cursor:progress;opacity:.85}.CameraCard:before{content:"";position:absolute;top:-40px;right:-40px;width:140px;height:140px;border-radius:50%;background:#b4dcaa14;pointer-events:none}.CameraCard__btn{width:64px;height:64px;background:var(--terracotta);color:var(--paper);border-radius:50%;display:grid;place-items:center;flex-shrink:0;position:relative;z-index:1;box-shadow:0 4px 16px #b66b4866}.CameraCard__btn svg{width:28px;height:28px}.CameraCard__text{flex:1;position:relative;z-index:1;display:flex;flex-direction:column;gap:4px}.CameraCard__title{font-family:var(--font-display);font-size:22px;font-style:italic;font-weight:500;letter-spacing:-.01em;line-height:1.05}.CameraCard__sub{font-size:12px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--sage-pale)}.Today{background:var(--paper);min-height:100%;padding-bottom:32px}.Today__head{padding:18px 22px 16px}.Today__eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--terracotta);margin-bottom:4px}.Today__date{font-family:var(--font-display);font-size:32px;font-weight:500;font-style:italic;color:var(--moss-deep);letter-spacing:-.02em;line-height:1}.Today__dot{font-style:italic;color:var(--terracotta)}.Today__cameraWrap{margin:0 22px 18px}.Today__untagged{margin:0 22px 22px;padding:14px 16px;background:var(--cream-deep);border:1px solid var(--clay);border-radius:var(--radius-md);display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.Today__untaggedBadge{width:32px;height:32px;border-radius:50%;background:var(--terracotta);color:var(--paper);display:grid;place-items:center;font-family:var(--font-display);font-style:italic;font-size:14px;font-weight:600;flex-shrink:0}.Today__untaggedText{flex:1;display:flex;flex-direction:column;gap:2px}.Today__untaggedTitle{font-size:13px;font-weight:500;color:var(--ink)}.Today__untaggedSub{font-size:11px;color:var(--ink-muted);font-family:var(--font-mono);letter-spacing:.04em}.Today__untaggedArrow{color:var(--terracotta);display:grid;place-items:center}.Today__untaggedArrow svg{width:16px;height:16px}.Today__sectionH{padding:0 22px;margin-bottom:10px;display:flex;align-items:baseline;justify-content:space-between}.Today__sectionTitle{font-family:var(--font-display);font-size:18px;font-style:italic;font-weight:500;color:var(--moss-deep);letter-spacing:-.01em}.Today__sectionMeta{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted)}.Today__empty{margin:0 22px;padding:24px 18px;background:var(--cream);border:1px dashed var(--line);border-radius:var(--radius-md);text-align:center;color:var(--ink-muted)}.Today__empty p{margin:0 0 6px;font-size:14px}.Today__emptyHint{font-size:12px;color:var(--ink-faint);font-family:var(--font-mono)}.Today__error{margin:16px 22px 0;padding:10px 12px;background:#fdecea;border:1px solid #f1b8b3;color:#7a2521;border-radius:var(--radius-md);font-size:13px}@media (min-width: 700px){.Today{background:var(--cream);max-width:560px;margin:0 auto;padding:24px 0 64px}.Today__head{padding:0 4px 18px}.Today__cameraWrap{margin:0 4px 18px}.Today__untagged{margin:0 4px 22px}.Today__sectionH{padding:0 4px}.Today__empty{margin:0 4px}}.More{padding:24px 22px 32px;max-width:560px;margin:0 auto}.More__head{margin-bottom:22px}.More__eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--terracotta);margin-bottom:4px}.More__email{font-family:var(--font-display);font-size:22px;font-style:italic;color:var(--moss-deep);word-break:break-all}.More__list{list-style:none;padding:0;margin:0 0 28px;border:1px solid var(--line);background:var(--paper);border-radius:var(--radius-md);overflow:hidden}.More__item{padding:14px 16px;border-bottom:1px solid var(--line-soft);font-size:14px;color:var(--ink)}.More__item:last-child{border-bottom:none}.More__item--disabled{color:var(--ink-faint);font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.More__signout{width:100%;padding:12px 16px;background:transparent;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink-soft);font-size:14px}.More__signout:hover:not(:disabled){background:var(--cream-deep)}.More__signout:disabled{opacity:.5;cursor:progress}:root{--cream: #f4efe6;--cream-deep: #ebe3d4;--paper: #faf6ef;--ink: #1f2a22;--ink-soft: #3a4a3f;--ink-muted: #6b7a6f;--ink-faint: #98a39b;--moss: #4a5d3f;--moss-deep: #2f3d28;--moss-light: #7a8c6e;--sage: #b5c2a3;--sage-pale: #dde3d2;--terracotta: #b66b48;--terracotta-soft: #d49377;--clay: #c89070;--soil: #5d4a3a;--bark: #3d3026;--rose-faded: #c89098;--sky-faded: #a8b8c4;--honey: #d4a64a;--line: #d4cab8;--line-soft: #e3dccb;--shadow-sm: 0 1px 2px rgba(47, 61, 40, .08);--shadow-md: 0 4px 12px rgba(47, 61, 40, .1);--shadow-lg: 0 12px 32px rgba(47, 61, 40, .14);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-pill: 999px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px;--space-2xl: 64px;--font-display: "Fraunces", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--font-hand: "Caveat", cursive}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-body);font-weight:400;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;color:var(--ink);margin:0}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:inherit}a{color:var(--moss)}
