:root{--bg:#eef1ed;--bg-elevated:#f7f8f5;--surface:#ffffff;--ink:#172017;--muted:#5a655c;--border:#d4dad3;--border-strong:#b7c0b5;--forest:#1f4d36;--forest-soft:#e4eee8;--danger:#9b2c2c;--route:#c81e1e;--shadow:0 1px 2px rgba(23,32,23,0.06);--radius:10px;--font:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace}*,:after,:before{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.45;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}img,svg{display:block;max-width:100%}:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.app-shell{min-height:100vh;display:flex;flex-direction:column}.site-footer{margin-top:auto;border-top:1px solid var(--border);background:var(--bg-elevated)}.site-footer-inner{width:min(1120px,100%);margin:0 auto;padding:1rem 1.5rem;justify-content:space-between;flex-wrap:wrap;gap:.75rem}.site-footer a{color:var(--muted);font-size:.85rem;text-decoration:none}.site-footer a:hover{color:var(--ink)}.legal-page{max-width:720px;display:flex;flex-direction:column;gap:.85rem}.legal-page h1{margin:0;letter-spacing:-.02em}.legal-page h2{margin:1.25rem 0 0;font-size:1.15rem}.legal-page li,.legal-page p{line-height:1.55;color:var(--ink)}.legal-updated{margin:0;font-size:.88rem}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.5rem;border-bottom:1px solid var(--border);background:rgba(247,248,245,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:-webkit-sticky;position:sticky;top:0;z-index:20}.brand{display:inline-flex;align-items:center;gap:.55rem;font-weight:600;letter-spacing:-.02em}.brand-mark{color:var(--forest);letter-spacing:.18em;font-size:.85rem}.app-main{flex:1 1;width:min(1120px,100%);margin:0 auto;padding:1.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid transparent;border-radius:8px;padding:.55rem .95rem;background:transparent;transition:background .15s ease,border-color .15s ease,color .15s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--forest);color:#fff}.btn-primary:hover:not(:disabled){background:#173b2a}.btn-secondary{background:var(--surface);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-elevated)}.btn-ghost{color:var(--muted)}.btn-ghost:hover:not(:disabled){color:var(--ink);background:rgba(23,32,23,.04)}.btn-danger{color:var(--danger);border-color:#e8c4c4;background:#fff}.field{display:flex;flex-direction:column;gap:.35rem}.field label{font-size:.85rem;color:var(--muted)}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:8px;padding:.65rem .75rem;background:var(--surface)}.field textarea{min-height:96px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--forest);box-shadow:0 0 0 3px rgba(31,77,54,.12)}.error-banner{border:1px solid #e8c4c4;background:#fff5f5;color:var(--danger);border-radius:8px;padding:.75rem .9rem;font-size:.92rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.library-toolbar{justify-content:space-between;flex-wrap:wrap;gap:.75rem}.library-filters{flex:1 1;min-width:min(100%,240px);flex-wrap:wrap}.library-search,.library-sort{border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;background:var(--surface)}.library-search{flex:1 1;min-width:min(100%,160px)}.collection-chips{display:flex;flex-wrap:wrap;gap:.45rem}.collection-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:999px;padding:.4rem .75rem;font-size:.88rem;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem}.collection-chip:hover{border-color:var(--border-strong)}.collection-chip.is-active{background:var(--forest);border-color:var(--forest);color:#fff}.collection-chip-count{opacity:.72;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.collection-chip.is-active .collection-chip-count{opacity:.85}.hike-list-item{position:relative}.hike-move-select{position:absolute;top:.85rem;right:.85rem;max-width:9.5rem;border:1px solid var(--border);border-radius:8px;padding:.3rem .45rem;background:var(--bg-elevated);color:var(--ink);font-size:.8rem;z-index:1}.collection-card{width:100%;text-align:left;padding:1.1rem 1.15rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;color:inherit;transition:border-color .15s ease,box-shadow .15s ease}.collection-card:hover{border-color:var(--border-strong);box-shadow:0 2px 8px rgba(23,32,23,.06)}.hike-list>a.panel{transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.hike-list>a.panel:hover{border-color:var(--border-strong);box-shadow:0 2px 8px rgba(23,32,23,.06)}.hike-list>a.panel:active{transform:translateY(1px)}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;grid-gap:1rem;gap:1rem;align-items:stretch}.editor-map-panel{height:min(70vh,640px);min-height:360px;overflow:hidden}@media (max-width:800px){.hike-detail-grid{grid-template-columns:1fr}.app-main{padding:1rem}.app-header{padding:.75rem 1rem}.editor-layout{grid-template-columns:1fr}.editor-map-panel{height:min(55vh,480px);min-height:280px}}@media (prefers-reduced-motion:reduce){.hike-list>a.panel{transition:none}}.empty-state{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:3rem 1.5rem;text-align:center;color:var(--muted);background:rgba(255,255,255,.5)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.muted{color:var(--muted)}.stack{flex-direction:column;gap:1rem}.row,.stack{display:flex}.row{align-items:center;gap:.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hike-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);grid-gap:1.25rem;gap:1.25rem}