:root{--bg: #f4f0e8;--surface: #fff;--surface2: #ece8df;--border: #d8d0c4;--ink: #1a1a18;--muted: #8a8070;--green: #2d6a3f;--yellow: #c8a820;--red: #c0392b;--blue: #2356a0;--spot: #d94f1a;--project-accent: #5b3fa0}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:Noto Sans JP,sans-serif;background:var(--bg);color:var(--ink);height:100dvh;overflow:hidden}#home-screen{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.home-header{background:var(--ink);padding:14px 16px 12px;flex-shrink:0}.home-logo{font-family:Bebas Neue,sans-serif;font-size:24px;letter-spacing:3px;color:#fff}.home-logo em{color:#a8d8b0;font-style:normal}.home-subtitle{font-size:11px;color:#fff6;letter-spacing:.5px;margin-top:1px}.home-actions{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;flex-shrink:0}.home-actions-title{font-family:Bebas Neue,sans-serif;font-size:18px;letter-spacing:1px;color:var(--muted)}.btn-new-project{background:var(--project-accent);color:#fff;border:none;border-radius:10px;padding:9px 16px;font-family:Bebas Neue,sans-serif;font-size:15px;letter-spacing:1px;cursor:pointer;display:flex;align-items:center;gap:6px;box-shadow:0 2px #321a7a;transition:all .12s}.btn-new-project:active{transform:translateY(2px);box-shadow:0 0 #321a7a}.project-list{flex:1;overflow-y:auto;padding:0 16px 20px;display:flex;flex-direction:column;gap:12px}.empty-home{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:10px;color:var(--muted);font-size:14px;padding-bottom:60px}.empty-home-icon{font-size:48px;opacity:.4}.project-card{background:var(--surface);border-radius:14px;border:1px solid var(--border);overflow:hidden;cursor:pointer;transition:all .15s;box-shadow:0 2px 8px #0000000f}.project-card:active{transform:scale(.98)}.card-cover{height:80px;background:linear-gradient(135deg,var(--project-accent) 0%,#8b6fd0 100%);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.card-cover-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000040}.card-cover-emoji{font-size:32px;position:relative;z-index:1}.card-body{padding:11px 13px 12px}.card-title{font-weight:900;font-size:16px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-dates{font-size:11px;color:var(--muted);margin-bottom:6px}.card-footer{display:flex;align-items:center;justify-content:space-between}.card-spot-count{font-size:12px;font-weight:700;color:var(--spot)}.card-desc{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}#project-screen{flex-direction:column;height:100dvh;overflow:hidden}.proj-header{background:var(--ink);flex-shrink:0;z-index:500}.proj-header-top{display:flex;align-items:center;gap:8px;padding:10px 12px 6px}.btn-back{background:none;border:none;color:#fff9;font-size:20px;cursor:pointer;padding:2px 6px;flex-shrink:0}.proj-title-wrap{flex:1;min-width:0}.proj-title{font-family:Bebas Neue,sans-serif;font-size:18px;letter-spacing:1px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proj-dates-header{font-size:10px;color:#fff6;letter-spacing:.3px}.btn-spot-header{background:var(--spot);border:none;border-radius:9px;padding:7px 12px;font-family:Bebas Neue,sans-serif;font-size:15px;letter-spacing:1px;color:#fff;cursor:pointer;display:flex;align-items:center;gap:4px;box-shadow:0 2px #7a2208;transition:all .12s;flex-shrink:0}.btn-spot-header:active{transform:translateY(2px);box-shadow:none}.proj-tabs{display:flex;padding:0 12px 8px;gap:4px}.proj-tab{flex:1;padding:6px 4px;border-radius:8px;border:none;font-family:Noto Sans JP,sans-serif;font-size:12px;font-weight:700;cursor:pointer;background:#ffffff14;color:#ffffff73;transition:all .2s;white-space:nowrap}.proj-tab.active{background:#fff;color:var(--ink)}#project-screen>div[style*="flex: 1"]{flex:1;min-height:0}.panel{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;display:none}.panel.visible{display:block}#walk-panel{padding:12px 14px 16px}.walk-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.stat{background:var(--surface2);border-radius:10px;padding:8px;text-align:center}.stat-val{font-family:Bebas Neue,sans-serif;font-size:24px;color:var(--green);line-height:1}.stat-lbl{font-size:10px;color:var(--muted);margin-top:2px}.walk-btns{display:flex;gap:8px}.btn-record-walk{flex:1;background:var(--green);color:#fff;border:none;border-radius:12px;padding:13px;font-family:Bebas Neue,sans-serif;font-size:18px;letter-spacing:2px;cursor:pointer;box-shadow:0 3px #1a4a2a;transition:all .12s}.btn-record-walk:active{transform:translateY(2px);box-shadow:0 1px #1a4a2a}.btn-record-walk.stop{background:var(--red);box-shadow:0 3px #7a1a10}#golf-panel{padding:12px 14px 16px}.hole-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.hole-num{font-family:Bebas Neue,sans-serif;font-size:14px;letter-spacing:2px;color:var(--muted)}.hole-num strong{font-size:28px;color:var(--ink);letter-spacing:0;margin-left:4px}.shot-badges{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;max-width:55%}.shot-badge{width:22px;height:22px;border-radius:50%;background:var(--yellow);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.shot-badge.pending{background:var(--surface2);color:var(--border);border:2px dashed var(--border)}.btn-shot{width:100%;background:var(--yellow);color:#fff;border:none;border-radius:14px;padding:14px;font-family:Bebas Neue,sans-serif;font-size:20px;letter-spacing:3px;cursor:pointer;box-shadow:0 4px #8a6e10;transition:all .12s;display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px}.btn-shot:active{transform:translateY(3px);box-shadow:0 1px #8a6e10}.btn-shot.searching{background:var(--border);box-shadow:0 4px #aaa;color:var(--muted)}.golf-sub-row{display:flex;gap:8px}.btn-golf-sub{flex:1;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:9px;font-size:12px;font-weight:700;cursor:pointer;color:var(--ink);transition:all .15s;text-align:center}.btn-golf-sub.next{background:var(--ink);color:#fff;border-color:var(--ink)}#spots-panel{overflow:hidden}.spots-bar{padding:10px 14px 8px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.spots-bar-title{font-family:Bebas Neue,sans-serif;font-size:17px;letter-spacing:1px}.spots-bar-count{font-size:11px;color:var(--muted)}.spots-list{overflow-y:auto;flex:1}.spot-item{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--surface2);cursor:pointer;transition:background .15s}.spot-item:active{background:var(--surface2)}.spot-thumb{width:42px;height:42px;border-radius:8px;background:var(--surface2);flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:18px;border:1px solid var(--border)}.spot-thumb img{width:100%;height:100%;object-fit:cover}.spot-info{flex:1;min-width:0}.spot-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spot-meta{font-size:11px;color:var(--muted);margin-top:1px}.spot-tag{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;flex-shrink:0}.spot-tag.travel{background:#e8f0fb;color:var(--blue)}.spot-tag.golf{background:#fdf7e0;color:var(--yellow)}.spot-tag.food{background:#fef0e8;color:var(--spot)}.spot-tag.other{background:var(--surface2);color:var(--muted)}.spots-empty{text-align:center;padding:28px 20px;color:var(--muted);font-size:13px}#golf-review{display:none}#golf-review.visible{display:block}.review-bar{padding:9px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.review-bar-title{font-family:Bebas Neue,sans-serif;font-size:17px;letter-spacing:1px}.hole-scroller{display:flex;gap:5px;overflow-x:auto;padding:7px 14px;border-bottom:1px solid var(--border);scrollbar-width:none}.hole-scroller::-webkit-scrollbar{display:none}.hole-chip{min-width:32px;height:28px;border-radius:6px;border:1.5px solid var(--border);background:var(--surface2);font-family:Bebas Neue,sans-serif;font-size:13px;cursor:pointer;color:var(--muted);transition:all .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center}.hole-chip.has{border-color:var(--yellow);color:var(--yellow)}.hole-chip.active{background:var(--yellow);color:#fff;border-color:var(--yellow)}.shot-list{overflow-y:auto;max-height:28vh;padding:6px 14px 10px}.shot-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--surface2)}.shot-num-c{width:24px;height:24px;border-radius:50%;background:var(--yellow);color:#fff;font-weight:700;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.shot-dist{font-weight:700;font-size:14px}.shot-dist span{font-size:10px;font-weight:400;color:var(--muted)}.shot-coord{font-size:10px;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:800;display:flex;align-items:flex-end;background:#00000080;opacity:0;pointer-events:none;transition:opacity .25s}.overlay.open{opacity:1;pointer-events:all}.sheet{width:100%;background:var(--surface);border-radius:18px 18px 0 0;padding:0 0 env(safe-area-inset-bottom,16px);transform:translateY(40px);transition:transform .25s;max-height:92dvh;display:flex;flex-direction:column}.overlay.open .sheet{transform:translateY(0)}.sheet-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:10px auto 0;flex-shrink:0}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;flex-shrink:0}.sheet-title{font-family:Bebas Neue,sans-serif;font-size:20px;letter-spacing:1px}.sheet-close{background:var(--surface2);border:none;border-radius:20px;padding:4px 10px;font-size:13px;cursor:pointer;color:var(--muted)}.form-body{padding:0 16px 16px;overflow-y:auto;flex:1}.form-group{margin-bottom:13px}.form-label{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-bottom:5px;display:block}.form-input{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:10px 12px;font-family:Noto Sans JP,sans-serif;font-size:15px;background:var(--surface);color:var(--ink);outline:none;transition:border-color .2s}.form-input:focus{border-color:var(--project-accent)}textarea.form-input{resize:none;height:68px}.form-row{display:flex;gap:10px}.form-row .form-group{flex:1}.tag-options{display:flex;gap:6px}.tag-opt{flex:1;padding:8px 4px;border-radius:8px;border:1.5px solid var(--border);background:var(--surface2);font-size:11px;font-weight:700;cursor:pointer;text-align:center;color:var(--muted);transition:all .15s}.tag-opt.sel{border-color:var(--spot);background:#fdf0ea;color:var(--spot)}.photo-area{border:2px dashed var(--border);border-radius:12px;min-height:72px;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:border-color .2s}.photo-area:active{border-color:var(--spot)}.photo-area img{width:100%;max-height:150px;object-fit:cover;border-radius:10px}.photo-ph{text-align:center;color:var(--muted);font-size:12px;padding:14px}.photo-ph span{font-size:24px;display:block;margin-bottom:3px}.btn-primary{width:100%;border:none;border-radius:12px;padding:14px;font-family:Bebas Neue,sans-serif;font-size:19px;letter-spacing:2px;cursor:pointer;transition:all .12s;margin-top:4px}.btn-primary:active{transform:translateY(2px)}.btn-project{background:var(--project-accent);color:#fff;box-shadow:0 3px #321a7a}.btn-project:active{box-shadow:0 1px #321a7a}.btn-spot-save{background:var(--spot);color:#fff;box-shadow:0 3px #7a2208}.btn-spot-save:active{box-shadow:0 1px #7a2208}.btn-sub{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:11px 13px;font-size:16px;cursor:pointer;color:var(--ink)}.btn-sub:active{background:var(--border)}.detail-img{width:100%;max-height:190px;object-fit:cover}.detail-body{padding:13px 16px 18px;overflow-y:auto;flex:1}.detail-name{font-family:Bebas Neue,sans-serif;font-size:24px;letter-spacing:1px;margin-bottom:4px}.detail-meta{font-size:12px;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:8px}.detail-memo{font-size:14px;line-height:1.7;background:var(--surface2);border-radius:10px;padding:10px 12px}.detail-actions{display:flex;gap:8px;margin-top:12px}.btn-jump{flex:1;background:var(--blue);color:#fff;border:none;border-radius:10px;padding:11px;font-size:13px;font-weight:700;cursor:pointer}.btn-del{background:#fce8e8;color:var(--red);border:none;border-radius:10px;padding:11px 14px;font-size:13px;font-weight:700;cursor:pointer}.proj-info-wrap{padding:14px 16px 18px;overflow-y:auto;flex:1}.proj-info-dates{font-size:13px;color:var(--muted);margin-bottom:8px}.proj-info-desc{font-size:14px;line-height:1.7;color:var(--ink);background:var(--surface2);border-radius:10px;padding:10px 12px;margin-bottom:14px}.proj-info-actions{display:flex;gap:8px}.btn-open-proj{flex:1;background:var(--project-accent);color:#fff;border:none;border-radius:10px;padding:12px;font-family:Bebas Neue,sans-serif;font-size:17px;letter-spacing:1px;cursor:pointer}.btn-del-proj{background:#fce8e8;color:var(--red);border:none;border-radius:10px;padding:12px 14px;font-size:13px;font-weight:700;cursor:pointer}.toast{position:fixed;bottom:180px;left:50%;transform:translate(-50%) translateY(10px);background:var(--ink);color:#fff;padding:10px 20px;border-radius:24px;font-size:13px;font-weight:700;opacity:0;transition:all .25s;pointer-events:none;z-index:9999;white-space:nowrap;box-shadow:0 4px 16px #0003}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.spinner{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.leaflet-control-attribution{display:none}.leaflet-control-zoom a{background:var(--surface)!important;color:var(--ink)!important;border-color:var(--border)!important}
