:root{--brand: #d4342c;--brand-dark: #a82822;--bg: #faf8f5;--card: #ffffff;--text: #1a1a2e;--text-muted: #6b7280;--border: #e5e7eb;--accent-amber: #f59e0b;--accent-green: #10b981}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}.container{max-width:960px;margin:0 auto;padding:0 1rem}.hero{background:linear-gradient(135deg,#1a1a2e,#d4342c);color:#fff;padding:3rem 1rem 2rem;text-align:center}.hero h1{font-size:2rem;margin-bottom:.5rem}.hero .subtitle{font-size:1.1rem;opacity:.9}.hero .meta{margin-top:1rem;display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap;font-size:.9rem}.hero .meta span{opacity:.85}.nav{display:flex;gap:.25rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid var(--border);overflow-x:auto;position:sticky;top:0;z-index:50}.nav a{text-decoration:none;padding:.5rem 1rem;border-radius:999px;font-size:.85rem;font-weight:500;color:var(--text-muted);white-space:nowrap;transition:all .2s}.nav a:hover,.nav a.active{background:var(--brand);color:#fff}.card{background:var(--card);border-radius:1rem;padding:1.5rem;margin-bottom:1rem;box-shadow:0 1px 3px #00000014}.day-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.day-header .day-num{background:var(--brand);color:#fff;width:2.5rem;height:2.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;flex-shrink:0}.day-header .date{font-size:.85rem;color:var(--text-muted)}.day-header .day-title{font-size:1.2rem;font-weight:700}.day-header .day-subtitle{font-size:.85rem;color:var(--text-muted)}.timeline{position:relative}.timeline:before{content:"";position:absolute;left:1.25rem;top:0;bottom:0;width:2px;background:var(--border)}.activity{position:relative;padding-left:3.5rem;padding-bottom:1.25rem}.activity:last-child{padding-bottom:0}.activity-icon{position:absolute;left:.5rem;width:2rem;height:2rem;background:#fff;border:2px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.9rem;z-index:1}.activity .time{font-size:.8rem;color:var(--text-muted);font-weight:600}.activity .title{font-weight:600;font-size:.95rem}.activity .desc{font-size:.85rem;color:var(--text-muted)}.activity .budget{font-size:.8rem;color:var(--brand);font-weight:600}.activity .budget.free{color:var(--accent-green)}.budget-bar{display:flex;height:.5rem;border-radius:999px;overflow:hidden;margin:.5rem 0}.budget-bar .seg{min-width:2px}.map-container{width:100%;height:400px;border-radius:1rem;overflow:hidden;margin:1rem 0}.map-container iframe{width:100%;height:100%;border:none}.budget-table{width:100%;border-collapse:collapse}.budget-table th,.budget-table td{padding:.75rem .5rem;text-align:left;border-bottom:1px solid var(--border);font-size:.9rem}.budget-table th{font-weight:600;color:var(--text-muted)}.total-row{font-weight:700;font-size:1.1rem}.total-row td{border-top:2px solid var(--brand)}.food-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.food-card{background:var(--card);border-radius:1rem;padding:1.25rem;box-shadow:0 1px 3px #00000014;border-left:4px solid var(--brand)}.weather-banner{background:linear-gradient(135deg,#f59e0b,#ef4444);color:#fff;border-radius:1rem;padding:1.25rem;margin-bottom:1rem;display:flex;align-items:center;gap:1rem}.weather-banner .icon{font-size:2rem}.tag{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:500}.tag-food{background:#fef3c7;color:#92400e}.tag-ticket{background:#dbeafe;color:#1e40af}.tag-transport{background:#e0e7ff;color:#3730a3}.tag-onsen{background:#fce7f3;color:#9d174d}.tag-hotel{background:#d1fae5;color:#065f46}.tag-shopping{background:#ede9fe;color:#5b21b6}.tag-free{background:#f3f4f6;color:#374151}.footer{text-align:center;padding:2rem;color:var(--text-muted);font-size:.85rem}.pwa-banner{display:none;background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:1rem;margin-bottom:1rem;text-align:center;box-shadow:0 4px 12px #0000001a}.pwa-banner.show{display:block}.pwa-banner button{background:var(--brand);color:#fff;border:none;padding:.5rem 1.5rem;border-radius:999px;font-weight:600;cursor:pointer;margin-top:.5rem}@media(max-width:640px){.hero h1{font-size:1.5rem}.nav{gap:0}.nav a{font-size:.8rem;padding:.4rem .75rem}.map-container{height:300px}}
