*{box-sizing:border-box}[hidden]{display:none!important}:root{color-scheme:dark;font-family:Avenir Next,Avenir,Segoe UI Variable,Segoe UI,system-ui,-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.55;--fs-1: .8125rem;--fs-2: .875rem;--fs-3: 1rem;--fs-4: 1.125rem;--fs-5: 1.5rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--bg: #0a0f1c;--surface: #101a2e;--surface-2: #182338;--surface-3: #203052;--border: #223150;--border-strong: #354a78;--ink: #e9eefb;--muted: #9aa9c7;--faint: #8ba0c4;--accent: #63e2f2;--accent-strong: #96f0fb;--accent-ink: #062531;--accent-soft: rgba(99, 226, 242, .12);--danger: #f58b8b;--danger-soft: rgba(245, 139, 139, .12);--danger-border: #6d2f2f;--success: #5fd39a;--success-soft: rgba(95, 211, 154, .12);--warn-ink: #f2cf7a;--warn-bg: rgba(242, 207, 122, .1);--warn-border: #8a6a24;--cat-transport: #63e2f2;--cat-stay: #8ee6a3;--cat-food: #f3ea7a;--cat-sight: #fbb65c;--cat-shopping: #b9c8ff;--cat-other: #f2a6c8;--radius: 12px;--radius-sm: 8px;--radius-pill: 999px}body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#app{max-width:1000px;margin:0 auto;padding:var(--s-6) var(--s-5) 96px}h1,h2,h3,h4{overflow-wrap:anywhere;margin:0;line-height:1.3}p{margin:0}ul{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:var(--accent-ink)}.app-loading{display:flex;flex-direction:column;align-items:center;gap:var(--s-3);padding:96px 0;color:var(--muted)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--surface-3);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fatal-card{background:var(--surface);border-left:3px solid var(--danger);border-radius:var(--radius);padding:var(--s-5);display:grid;gap:var(--s-3)}.fatal-card h1{font-size:var(--fs-4);color:var(--danger)}.fatal-detail{background:var(--surface-2);border-radius:var(--radius-sm);padding:var(--s-3);font-size:var(--fs-1);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;max-height:180px;overflow:auto;color:var(--muted)}.app-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--s-4)}.app-title{min-width:0}.app-brand{display:flex;align-items:center;gap:var(--s-3)}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);flex:none}.app-header h1{font-size:var(--fs-5);font-weight:700;letter-spacing:-.02em;line-height:1.2}.app-brand,.app-header .subtitle,.header-actions{animation:rise-in .28s ease-out both}.app-header .subtitle{color:var(--muted);font-size:var(--fs-2);margin-top:var(--s-1)}.header-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}button{font:inherit;cursor:pointer;border-width:1px;border-style:solid;border-color:transparent;background:var(--surface-2);color:var(--ink);border-radius:var(--radius-sm);padding:8px 14px;font-size:var(--fs-2);line-height:1.4;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .1s ease}button:hover{background:var(--surface-3)}button:active{transform:translateY(1px)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}button.danger{color:var(--danger);background:transparent;border-color:var(--danger-border)}button.danger:hover{background:var(--danger-soft);border-color:var(--danger)}button.link{border:none;background:none;color:var(--accent);padding:4px 8px}button.link:hover{background:var(--accent-soft);color:var(--accent-strong)}.chip{font-size:var(--fs-1);padding:5px 12px;border-radius:var(--radius-pill);background:var(--surface-2)}.chip:hover{background:var(--surface-3)}.banner{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);border-radius:var(--radius-sm);padding:10px 14px;margin-top:var(--s-4);font-size:var(--fs-2);animation:rise-in .28s ease-out both}.banner-info{background:var(--accent-soft);color:var(--accent-strong)}.banner-warn{background:var(--warn-bg);color:var(--warn-ink)}.banner-text{min-width:0;overflow-wrap:anywhere}.import-panel{background:var(--surface);border-left:3px solid var(--accent);border-radius:var(--radius);padding:var(--s-4);margin-top:var(--s-4);display:grid;gap:var(--s-2);animation:rise-in .28s ease-out both}.import-panel h2{font-size:var(--fs-4)}.import-panel p{font-size:var(--fs-2);color:var(--muted)}.panel,.card-form{background:var(--surface);border-radius:var(--radius);padding:var(--s-4)}.panel{margin-top:var(--s-4);animation:rise-in .28s ease-out both}.card-form{margin-top:var(--s-3)}.card-form h2{font-size:var(--fs-4);margin:0 0 var(--s-3)}.card-form h3{font-size:var(--fs-3);margin:0 0 var(--s-2)}.meta-form{background:var(--surface-2)}.form-row{display:flex;gap:var(--s-3);flex-wrap:wrap;margin-bottom:var(--s-3)}.field{display:flex;flex-direction:column;gap:var(--s-1);font-size:var(--fs-2);color:var(--muted);min-width:0;flex:1 1 150px}.field input,.field select{font:inherit;font-size:var(--fs-3);padding:9px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);min-width:140px;max-width:100%;transition:border-color .15s ease}.field input:focus,.field select:focus{border-color:var(--accent);outline:none}.field-hint{color:var(--faint);font-size:var(--fs-1)}.form-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.form-error{color:var(--danger);font-size:var(--fs-2);margin-bottom:var(--s-2);min-height:0}.form-error:empty{display:none}.form-hint{color:var(--warn-ink);font-size:var(--fs-2);margin-bottom:var(--s-2)}.form-hint:empty{display:none}.quick-days{display:flex;gap:var(--s-1);flex-wrap:wrap;margin-bottom:var(--s-3)}.toolbar{margin-top:var(--s-4);display:grid;gap:var(--s-2);animation:rise-in .28s ease-out both}.toolbar-controls{display:flex;gap:var(--s-2);flex-wrap:wrap}input.search-input{flex:1 1 220px;min-width:0;font:inherit;font-size:var(--fs-3);padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);transition:border-color .15s ease}.search-input:focus{border-color:var(--accent);outline:none}select.toolbar-select{font:inherit;font-size:var(--fs-2);padding:9px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);max-width:100%}.dir-button{font-size:var(--fs-2);white-space:nowrap}.trip-summary{font-size:var(--fs-2);color:var(--muted);animation:rise-in .28s ease-out both}input.search-input,select.toolbar-select,.dir-button{animation:rise-in .28s ease-out both}.overview-bar{margin-top:var(--s-4);display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;background:var(--surface);border-left:3px solid var(--accent);border-radius:var(--radius);padding:12px 16px;font-size:var(--fs-2);animation:rise-in .28s ease-out both}.overview-bar+.toolbar{margin-top:var(--s-2)}.overview-route{display:inline-flex;color:var(--accent);flex:none}.overview-item{color:var(--muted);min-width:0;overflow-wrap:anywhere}.overview-item.strong{color:var(--ink);font-weight:600}.overview-item.muted{color:var(--faint)}.conflict-notice{margin-top:var(--s-3);display:grid;gap:2px;background:var(--warn-bg);border-radius:var(--radius-sm);padding:10px 14px;font-size:var(--fs-2)}.conflict-notice-title{font-weight:600;color:var(--warn-ink)}.conflict-notice .muted{color:var(--faint);font-size:var(--fs-1)}.conflict-badge{font-size:var(--fs-1);background:var(--warn-bg);color:var(--warn-ink);border-radius:var(--radius-pill);padding:2px 10px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.conflict-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.trip-list{display:grid;gap:var(--s-4);margin:var(--s-4) 0}.trip-card{background:var(--surface);border-radius:var(--radius);padding:18px 20px;min-width:0;transition:background-color .15s ease,transform .15s ease;animation:rise-in .28s ease-out both}.trip-card:hover{background:var(--surface-2);transform:translateY(-1px)}.trip-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.trip-card-title{min-width:0;flex:1 1 220px}.trip-card-head h2{font-size:var(--fs-4);font-weight:650;letter-spacing:-.01em}.trip-meta{color:var(--muted);font-size:var(--fs-2);margin-top:var(--s-1);display:flex;gap:8px 12px;flex-wrap:wrap;overflow-wrap:anywhere}.trip-meta .over{color:var(--danger);font-weight:600}.trip-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.trip-actions button{font-size:var(--fs-2)}.empty-card{text-align:center;padding:var(--s-6) var(--s-4);display:grid;gap:var(--s-3);justify-items:center}.empty-icon{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:var(--accent-soft);color:var(--accent)}.empty-card h2{font-size:var(--fs-4)}.empty-text{color:var(--muted);font-size:var(--fs-2);max-width:420px}.empty-day{padding:var(--s-3) var(--s-3);color:var(--faint);font-size:var(--fs-2)}.day-list{margin-top:var(--s-4);display:grid;gap:var(--s-2)}.day-block{border-radius:var(--radius-sm);background:var(--surface-2);padding-left:22px;position:relative;overflow:hidden;animation:fade-in .2s ease-out both}.day-block:before{content:"";position:absolute;left:7px;top:12px;bottom:0;width:2px;background:var(--border-strong);border-radius:2px}.day-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);padding:10px 14px 10px 6px;cursor:pointer;flex-wrap:wrap;position:relative;border-radius:var(--radius-sm);transition:background-color .15s ease}.day-head:hover{background:var(--surface-3)}.day-head:before{content:"";position:absolute;left:-20px;top:50%;transform:translateY(-50%);width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--border-strong);transition:background-color .15s ease,border-color .15s ease}.day-block.is-open .day-head:before{background:var(--accent);border-color:var(--accent)}.day-head strong{font-size:var(--fs-3)}.day-head .day-cost{font-size:var(--fs-2);color:var(--muted)}.activity-list{list-style:none;margin:0;padding:0}.activity-row{display:flex;align-items:center;gap:var(--s-2);padding:9px 12px 9px 0;font-size:var(--fs-2);flex-wrap:wrap;min-width:0;position:relative;transition:background-color .15s ease}.activity-row:hover{background:var(--surface-3)}.activity-row:before{content:"";position:absolute;left:-18px;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background:var(--bg);border:2px solid var(--border-strong)}.activity-row .time{font-variant-numeric:tabular-nums;color:var(--muted);min-width:52px;white-space:nowrap}.activity-row .title{font-weight:600;overflow-wrap:anywhere;min-width:0}.activity-row .place{color:var(--muted);overflow-wrap:anywhere;min-width:0}.activity-row .tag{font-size:var(--fs-1);font-weight:700;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-pill);padding:2px 10px;white-space:nowrap}.activity-row .cost{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600}.activity-row .row-actions{display:flex;gap:var(--s-1);flex-wrap:wrap}.activity-row .row-actions button{padding:3px 9px;font-size:var(--fs-1)}.activity-row.has-conflict{background:var(--warn-bg)}.activity-row.has-conflict:before{background:var(--warn-ink);border-color:var(--warn-border)}.activity-form{border-radius:var(--radius-sm);background:var(--surface);padding:var(--s-3);margin:0 var(--s-2) var(--s-2) 0}.activity-form .form-row{margin-bottom:var(--s-2)}.activity-form .field input,.activity-form .field select{min-width:110px}.new-activity-bar{padding:var(--s-2) 0}.conflict-list{display:grid;gap:var(--s-1);padding:var(--s-2) var(--s-3) var(--s-2) 0;margin:0 var(--s-2) var(--s-2) 0;background:var(--warn-bg);border-radius:var(--radius-sm)}.conflict-item{font-size:var(--fs-2);color:var(--warn-ink);overflow-wrap:anywhere}.budget-panel{border-radius:var(--radius-sm);padding:var(--s-3);margin-top:var(--s-3);background:var(--surface-2)}.budget-panel h3{font-size:var(--fs-3);margin:0 0 var(--s-2)}.budget-panel h4{margin:var(--s-3) 0 var(--s-1);font-size:var(--fs-2);color:var(--muted)}.budget-head{display:flex;gap:16px;flex-wrap:wrap;font-size:var(--fs-2);color:var(--ink)}.budget-head .over{color:var(--danger);font-weight:600}.budget-head .muted{color:var(--faint)}.budget-progress{height:8px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden;margin-top:var(--s-3)}.budget-progress-fill{height:100%;background:var(--accent);border-radius:var(--radius-pill);transform-origin:left center;animation:grow-x .5s ease-out both}.budget-progress-fill.over{background:var(--danger)}.budget-progress-label{font-size:var(--fs-1);color:var(--muted);margin-top:var(--s-1)}.budget-rows{margin-top:var(--s-2);display:grid;gap:var(--s-1)}.budget-row{display:grid;grid-template-columns:minmax(60px,auto) minmax(40px,1fr) auto;align-items:center;gap:var(--s-2);font-size:var(--fs-2);min-width:0}.budget-row .budget-amount{font-variant-numeric:tabular-nums;white-space:nowrap}.budget-row .tag{justify-self:start}.budget-bar{height:6px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden;display:block;min-width:0}.budget-bar-fill{display:block;height:100%;background:var(--accent);border-radius:var(--radius-pill);transform-origin:left center;animation:grow-x .6s ease-out both}.tag[data-cat=交通],.budget-row[data-cat=交通] .budget-bar-fill{background:var(--cat-transport)}.tag[data-cat=住宿],.budget-row[data-cat=住宿] .budget-bar-fill{background:var(--cat-stay)}.tag[data-cat=餐饮],.budget-row[data-cat=餐饮] .budget-bar-fill{background:var(--cat-food)}.tag[data-cat=景点],.budget-row[data-cat=景点] .budget-bar-fill{background:var(--cat-sight)}.tag[data-cat=购物],.budget-row[data-cat=购物] .budget-bar-fill{background:var(--cat-shopping)}.tag[data-cat=其他],.budget-row[data-cat=其他] .budget-bar-fill{background:var(--cat-other)}.budget-advice{display:flex;gap:8px 16px;flex-wrap:wrap;margin-top:var(--s-2);font-size:var(--fs-2);color:var(--muted)}.budget-advice .over{color:var(--danger);font-weight:600}.budget-advice .muted{color:var(--faint)}.packing-section{border-radius:var(--radius-sm);padding:var(--s-3);margin-top:var(--s-3);background:var(--surface-2)}.packing-section h3{font-size:var(--fs-3);margin:0 0 var(--s-1)}.packing-meta{font-size:var(--fs-1);color:var(--muted);margin-bottom:var(--s-2)}.packing-bar{height:8px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden}.packing-bar-fill{height:100%;background:var(--success);border-radius:var(--radius-pill);transform-origin:left center;animation:grow-x .5s ease-out both}.packing-actions,.template-row{display:flex;gap:var(--s-1);flex-wrap:wrap;margin-top:var(--s-2)}.template-row{padding-top:var(--s-2)}.template-chip{background:var(--accent-soft);color:var(--accent-strong)}.template-chip:hover{background:#63e2f233;color:var(--accent-strong)}.packing-list{margin:var(--s-2) 0;display:grid;gap:var(--s-1)}.packing-item{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-2);min-width:0;padding:4px 0}.packing-item .name{flex:1;min-width:0;overflow-wrap:anywhere}.packing-item.checked .name{text-decoration:line-through;color:var(--faint)}.packing-item input[type=checkbox]{appearance:none;width:18px;height:18px;margin:0;border-radius:5px;border:2px solid var(--border-strong);background:var(--surface);cursor:pointer;display:grid;place-content:center;flex:none;transition:background-color .15s ease,border-color .15s ease}.packing-item input[type=checkbox]:hover{border-color:var(--accent)}.packing-item input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.packing-item input[type=checkbox]:checked:after{content:"";width:4px;height:8px;border:solid var(--accent-ink);border-width:0 2px 2px 0;transform:rotate(45deg);display:block;margin-top:-2px}.packing-item .row-actions button,.packing-item button{padding:3px 9px;font-size:var(--fs-1)}.packing-form{display:flex;gap:var(--s-2)}.packing-form input{flex:1;min-width:0;font:inherit;font-size:var(--fs-3);padding:9px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);transition:border-color .15s ease}.packing-form input:focus{border-color:var(--accent);outline:none}select.move-select{font:inherit;font-size:var(--fs-1);padding:3px 6px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);max-width:100%}.app-footer{margin-top:var(--s-6);padding-top:var(--s-4);color:var(--faint);font-size:var(--fs-1);display:flex;gap:var(--s-2);align-items:center}.app-footer:before{content:"";width:14px;height:2px;border-radius:2px;background:var(--accent)}.toast-host{position:fixed;right:16px;bottom:16px;z-index:50;display:grid;gap:var(--s-2);max-width:min(360px,calc(100vw - 32px))}.toast{background:var(--surface-3);color:var(--ink);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:11px 14px;font-size:var(--fs-2);cursor:pointer;animation:toast-in .18s ease-out;overflow-wrap:anywhere}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-out{opacity:0;transition:opacity .2s;pointer-events:none}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes grow-x{0%{transform:scaleX(.05)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-width:640px){#app{padding:var(--s-4) 12px 56px}.app-header h1{font-size:var(--fs-4)}.brand-mark{width:38px;height:38px}.header-actions{width:100%}.header-actions button{flex:1 1 auto;min-width:0;padding:10px 12px;font-size:var(--fs-2)}.trip-actions{width:100%}.trip-actions button{flex:1 1 calc(50% - 4px);min-width:0}.field,.field input,.field select{min-width:0;width:100%}.field{flex:1 1 100%}.toolbar-controls{display:grid;grid-template-columns:1fr 1fr}.overview-bar{gap:4px 12px;padding:10px 12px}.search-input,.dir-button{grid-column:1 / -1}.activity-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;row-gap:4px}.activity-row .time{grid-column:1}.activity-row .title{grid-column:2}.activity-row .cost{grid-column:3;margin-left:0}.activity-row .place{grid-column:2 / -1}.activity-row .tag{grid-column:1}.activity-row .row-actions{grid-column:1 / -1;justify-content:flex-end}.budget-row{grid-template-columns:minmax(52px,auto) 1fr;row-gap:2px}.budget-row .budget-amount{grid-column:2;justify-self:end}.packing-form button{white-space:nowrap}.toast-host{left:12px;right:12px;bottom:12px;max-width:none}.day-block{padding-left:20px}.day-head:before{left:-18px}.activity-row:before{left:-16px}}
