:root{--bg: #f5f0e4;--card: #fffdf7;--text: #22301f;--muted: #6f7a6a;--primary: #1d5c40;--primary-soft: #e0ecdc;--accent: #e2622b;--danger: #b3372f;--danger-bg: #fae5dd;--border: #e3dcc7;--check-done: #2e7d54;--serif: "Songti SC", "STSong", "Noto Serif SC", "SimSun", serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #161c15;--card: #202821;--text: #eae7d9;--muted: #9aa896;--primary: #63b98a;--primary-soft: #24352a;--accent: #f0854a;--danger: #f08a7a;--danger-bg: #3a1d16;--border: #33402f;--check-done: #63b98a;color-scheme:dark}}*{box-sizing:border-box}html{font-size:17px}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:860px;margin:0 auto;padding:12px 14px 80px}.header{padding:12px 2px 10px 16px;border-left:6px solid var(--accent)}.mag-tag{display:inline-block;margin-bottom:8px;padding:5px 14px;border-radius:8px;background:var(--accent);color:#fff;font-size:.82rem;font-weight:700;letter-spacing:.12em}.header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.header h1{margin:0;font-family:var(--serif);font-size:1.75rem;font-weight:800;letter-spacing:.04em}.subtitle{margin:6px 0 12px;color:var(--muted);font-size:.92rem}.reset-btn{flex-shrink:0;min-height:44px;padding:0 16px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--danger);font-size:.95rem;cursor:pointer}.error-banner{margin-top:10px;padding:10px 14px;border-radius:10px;background:var(--danger-bg);color:var(--danger);font-size:.95rem}.tabs{position:sticky;top:0;z-index:10;display:flex;gap:8px;overflow-x:auto;padding:10px 2px;background:var(--bg);scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex-shrink:0;min-height:46px;padding:0 18px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--text);font-size:1rem;cursor:pointer}.tab.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}@media(prefers-color-scheme:dark){.tab.active{color:#06211d}}.section{display:flex;flex-direction:column;gap:14px}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px}.card h2{margin:0 0 10px;font-family:var(--serif);font-size:1.24rem;font-weight:800;letter-spacing:.03em}.muted{color:var(--muted);font-size:.92rem;margin:4px 0}.route-line{font-size:1.08rem;font-weight:600;margin:4px 0}.mini-title{margin:16px 0 8px;font-size:.95rem;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:7px 14px;border-radius:999px;font-size:.92rem}.chip.highlight{background:var(--primary-soft);color:var(--primary);font-weight:600}.chip.must{background:#d9770624;color:var(--accent)}.chip.drop{background:#78827e24;color:var(--muted)}.warn-text{margin:14px 0 0;color:var(--danger);font-weight:600;font-size:.95rem}.warn-banner{padding:14px 16px;border-left:6px solid var(--danger);border-radius:14px;background:var(--danger-bg);color:var(--danger);font-weight:600;line-height:1.6}.progress-wrap{display:flex;align-items:center;gap:10px;margin-top:8px}.progress-bar{flex:1;height:12px;border-radius:999px;background:var(--border);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:var(--check-done);transition:width .25s ease}.progress-text{font-size:.88rem;color:var(--muted);white-space:nowrap}.day-progress{padding:10px 0;border-bottom:1px solid var(--border)}.day-progress:last-child{border-bottom:none}.day-progress-label{display:flex;justify-content:space-between;gap:8px;font-size:.95rem;margin-bottom:2px}.check-item{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 10px;margin:6px 0;border:1px solid var(--border);border-radius:12px;cursor:pointer;user-select:none;-webkit-user-select:none}.check-item.checked{opacity:.55;background:var(--primary-soft)}.check-item.checked .check-title{text-decoration:line-through}.checkbox{flex-shrink:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:2px solid var(--primary);border-radius:8px;color:#fff;font-size:1.2rem;font-weight:700}.check-item.checked .checkbox{background:var(--check-done);border-color:var(--check-done)}@media(prefers-color-scheme:dark){.check-item.checked .checkbox{color:#06211d}}.check-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.check-title{font-size:1rem;line-height:1.4}.check-sub{color:var(--muted);font-size:.85rem;line-height:1.4}.nav-btn{flex-shrink:0;min-width:64px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:0 14px;border-radius:10px;background:var(--accent);color:#fff;font-size:.98rem;font-weight:600;text-decoration:none}.day-head h2{font-family:var(--serif);font-size:1.4rem;font-weight:800;letter-spacing:.03em}.timeline{display:flex;flex-direction:column;gap:12px}.timeline-item{display:flex;gap:12px}.time-badge{flex-shrink:0;height:fit-content;min-width:62px;padding:8px 6px;border-radius:10px;background:var(--primary);color:#fff;font-weight:700;text-align:center;font-size:.95rem}.timeline-body{flex:1;min-width:0;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px}.timeline-body h3{margin:0 0 8px;font-family:var(--serif);font-size:1.12rem;font-weight:800}.tips{margin:0 0 6px;padding-left:20px;color:var(--muted);font-size:.92rem;line-height:1.7}.pitfall{padding:12px 0;border-bottom:1px solid var(--border)}.pitfall:last-child{border-bottom:none}.pitfall strong{font-size:1rem}.pitfall p{margin:6px 0 0;color:var(--muted);font-size:.94rem;line-height:1.6}.pitfall .chips{margin-top:8px}.table-wrap{overflow-x:auto;margin:8px 0 4px}.data-table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:480px}.data-table th,.data-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:top}.data-table thead th{background:var(--primary);color:#fff;font-weight:700;white-space:nowrap}.data-table thead th:first-child{border-radius:8px 0 0 8px}.data-table thead th:last-child{border-radius:0 8px 8px 0}.data-table tbody tr:nth-child(2n){background:var(--primary-soft)}.data-table tr:last-child td{border-bottom:none}.data-table .total-row td{font-weight:700;background:#e2622b24}.booking-tag{margin-right:6px;vertical-align:middle}.chip.level-S{background:var(--primary-soft);color:var(--primary);font-weight:700}.chip.level-A{background:#d9770624;color:var(--accent);font-weight:700}.chip.level-B{background:#78827e29;color:var(--muted);font-weight:700}.chip.level-C{background:#78827e14;color:var(--muted)}.poi-chip{border:1px dashed var(--primary);background:var(--primary-soft);color:var(--primary);cursor:pointer;font-family:inherit;transition:filter .15s}.poi-chip:hover{filter:brightness(.95)}.poi-chip:active{filter:brightness(.88)}.map-wrap{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border)}.map-container{width:100%;height:62vh;min-height:380px}.map-overlay-info{position:absolute;left:12px;bottom:12px;z-index:20;display:flex;flex-direction:column;gap:6px;pointer-events:none}.map-distance{width:fit-content;padding:8px 14px;border-radius:999px;background:#1d5c40eb;color:#fff;font-size:.92rem;font-weight:600}.map-distance.error{background:#b91c1ceb}.map-hint{width:fit-content;padding:6px 12px;border-radius:999px;background:#141e1bb8;color:#fff;font-size:.8rem}.map-city{padding:4px 12px;border-radius:999px;background:#0f766e;color:#fff;font-size:.95rem;font-weight:700;box-shadow:0 2px 6px #00000040;white-space:nowrap}.map-pin{position:relative;width:32px;height:32px;border-radius:50%;background:#d97706;border:3px solid #fff;box-shadow:0 2px 6px #0000004d;color:#fff;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer}.map-pin.done{background:#14b8a6}.map-pin-label{position:absolute;top:-24px;left:50%;transform:translate(-50%);padding:2px 8px;border-radius:6px;background:#141e1bcc;color:#fff;font-size:.72rem;font-weight:500;white-space:nowrap}@media(max-width:480px){html{font-size:16px}.timeline-item{flex-direction:column;gap:6px}.time-badge{width:fit-content}}
