:root{--ink:#1a1c22;--ink-soft:#5a5f6b;--paper:#ffffff;--paper-soft:#f5f6f8;--line:#e3e5ea;--accent:#c4432b;--accent-dark:#a33520;--ok:#1f7a4d;--radius:10px}*{box-sizing:border-box}body,html{margin:0;padding:0;color:var(--ink);background:var(--paper);font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.6}a{color:var(--accent)}.env-ribbon{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:1000;background:#b8860b;color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.08em;padding:.15rem 1rem;border-radius:0 0 6px 6px;pointer-events:none}.site-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;border-bottom:1px solid var(--line)}.site-header .brand{font-weight:700;font-size:1.05rem;color:var(--ink);text-decoration:none}.site-header .brand span{color:var(--accent)}.hero{max-width:760px;margin:0 auto;padding:4.5rem 2rem 3rem;text-align:center}.hero h1{font-size:clamp(1.9rem,4.5vw,3rem);line-height:1.2;margin:0 0 1rem}.hero h1 em{color:var(--accent);font-style:normal}.hero .sub{font-size:1.125rem;color:var(--ink-soft);margin:0 auto 2rem;max-width:560px}.cta{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;font-weight:600;padding:.8rem 1.8rem;border-radius:var(--radius);transition:background .15s}.cta:hover{background:var(--accent-dark)}.proto-note{display:inline-block;margin-top:1.25rem;font-size:.85rem;color:var(--ink-soft);background:var(--paper-soft);border:1px solid var(--line);border-radius:999px;padding:.25rem .9rem}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:1.25rem;gap:1.25rem;max-width:900px;margin:0 auto;padding:1rem 2rem 3rem}.feature-card{border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem;background:var(--paper)}.feature-card h3{margin:0 0 .5rem}.feature-card p{margin:0;color:var(--ink-soft);font-size:.95rem}.steps{max-width:900px;margin:0 auto;padding:0 2rem 4rem}.steps h2{text-align:center}.steps ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:1.25rem;gap:1.25rem;list-style:none;counter-reset:step;padding:0}.steps li{counter-increment:step;background:var(--paper-soft);border-radius:var(--radius);padding:1.25rem 1.25rem 1.25rem 1.1rem;font-size:.95rem;color:var(--ink-soft)}.steps li:before{content:counter(step);display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:.85rem;margin-right:.6rem}.steps li strong{color:var(--ink)}.site-footer{border-top:1px solid var(--line);padding:1.5rem 2rem;text-align:center;font-size:.85rem;color:var(--ink-soft)}.legal{max-width:720px;margin:0 auto;padding:2.5rem 2rem 4rem}.legal h1{font-size:1.8rem;margin:0 0 .25rem}.legal .effective{color:var(--ink-soft);font-size:.9rem;margin:0 0 2rem}.legal h2{font-size:1.15rem;margin:2rem 0 .5rem}.legal li,.legal p{color:var(--ink-soft);font-size:.95rem}.legal strong{color:var(--ink)}.explorer{display:flex;height:100dvh;overflow:hidden}.filter-panel{width:330px;flex-shrink:0;overflow-y:auto;border-right:1px solid var(--line);padding:1.1rem 1.25rem 2rem;background:var(--paper)}.filter-panel h1{font-size:1.05rem;margin:0 0 .25rem}.filter-panel h1 a{text-decoration:none;color:var(--ink)}.filter-panel h1 span{color:var(--accent)}.result-count{font-size:.85rem;color:var(--ink-soft);margin:0 0 1rem}.filter-group{border-top:1px solid var(--line);padding:.9rem 0}.filter-group .group-label,.filter-group>label.group-label{display:block;font-weight:600;font-size:.85rem;margin-bottom:.5rem}.filter-group .value{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.station-list{max-height:190px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--radius);padding:.4rem .6rem}.check-row{display:flex;align-items:center;gap:.5rem;font-size:.9rem;padding:.15rem 0;cursor:pointer}.check-row .ja{color:var(--ink-soft);font-size:.8rem}input[type=range]{width:100%;accent-color:var(--accent)}.segmented{display:flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.segmented button{flex:1 1;border:none;background:var(--paper);padding:.45rem 0;font-size:.85rem;cursor:pointer;color:var(--ink-soft)}.segmented button+button{border-left:1px solid var(--line)}.segmented button.active{background:var(--accent);color:#fff;font-weight:600}.hint{font-size:.8rem;color:var(--ink-soft);margin:.4rem 0 0}.map-wrap{flex:1 1;position:relative}.map-wrap .map{position:absolute;inset:0}.hotel-pin{background:var(--ink);color:#fff;font-size:.75rem;font-weight:600;padding:.2rem .55rem;border-radius:999px;white-space:nowrap;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.35);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.hotel-pin .mins{color:#ffd9a8}.hotel-pin:hover,.station-pin{background:var(--accent)}.station-pin{color:#fff;font-size:.72rem;font-weight:700;padding:.15rem .5rem;border-radius:4px;white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.35)}.maplibregl-popup-content{font-family:inherit;border-radius:var(--radius);padding:.9rem 1rem;min-width:210px}.popup-name{font-weight:700;margin-bottom:.25rem}.popup-row{font-size:.83rem;color:var(--ink-soft)}.proto-badge{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:5;background:rgba(26,28,34,.85);color:#fff;font-size:.78rem;padding:.3rem .9rem;border-radius:999px;pointer-events:none}@media (max-width:720px){.explorer{flex-direction:column}.filter-panel{width:100%;max-height:45dvh;border-right:none;border-bottom:1px solid var(--line)}}