*,:before,:after{box-sizing:border-box}body{background:#f2f0ea;margin:0;padding:0}#root{width:100%;min-height:100svh}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--navy:#1a1a3e;--navy-light:#252550;--gold:#c9a227;--gold-light:#f0d06a;--red:#c0392b;--bg:#f2f0ea;--card:#fff;--card-inner:#f8f7f3;--border:#e4e0d6;--text:#2a2a2a;--text-muted:#6e6e6e;--text-light:#999;--green:#2a9d8f;--orange:#e76f51;--accent:#c9a227;--radius:14px;--radius-sm:8px;--shadow:0 2px 12px #00000014;--shadow-lg:0 8px 32px #00000029}html,body,#root{height:100%;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px}button{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;font-family:inherit}.app{background:var(--bg);max-width:480px;min-height:100%;margin:0 auto}.app-header{z-index:100;background:linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%);color:#fff;padding:14px 16px 10px;position:sticky;top:0;box-shadow:0 2px 16px #00000040}.header-content{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.header-left{align-items:center;gap:10px;display:flex}.header-flags{font-size:22px;line-height:1}.header-title{letter-spacing:-.3px;color:#fff;font-size:20px;font-weight:700}.header-subtitle{color:var(--gold-light);font-size:12px;font-weight:500}.header-meta{color:#ffffffa6;align-items:center;gap:8px;font-size:11px;display:flex}.meta-sep{color:#ffffff4d}.hamburger{border-radius:8px;flex-direction:column;gap:5px;padding:6px;transition:background .2s;display:flex}.hamburger:active{background:#ffffff1a}.hamburger span{background:#fff;border-radius:2px;width:22px;height:2px;display:block}.app-main{padding:12px 12px 40px}.book-ahead{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:12px}.book-ahead-title{text-transform:uppercase;letter-spacing:.5px;color:var(--green);margin-bottom:8px;font-size:12px;font-weight:700}.book-ahead-items{flex-wrap:wrap;gap:6px;display:flex}.book-chip{color:#1a6b5e;background:#e8f5f3;border-radius:20px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:500;display:flex}.section-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:10px;font-size:12px;font-weight:700}.itinerary-list{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.day-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1.5px solid #0000;transition:border-color .2s;overflow:hidden}.day-card.today{border-color:var(--gold)}.day-card-header{text-align:left;justify-content:space-between;align-items:center;width:100%;padding:14px;transition:background .15s;display:flex}.day-card-header:active{background:var(--card-inner)}.day-card-left{align-items:center;gap:12px;display:flex}.day-emoji{text-align:center;min-width:32px;font-size:26px;line-height:1}.day-date{color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.day-name{color:var(--text-light);font-weight:400}.today-badge{background:var(--gold);color:#fff;letter-spacing:.5px;border-radius:10px;padding:2px 6px;font-size:9px;font-weight:800}.day-title{color:var(--text);margin-top:2px;font-size:15px;font-weight:700;line-height:1.3}.day-chevron{color:var(--text-light);text-align:center;min-width:20px;font-size:22px;line-height:1;transition:transform .25s}.day-chevron.expanded{transform:rotate(90deg)}.day-card-body{border-top:1px solid var(--border);padding:0 14px 14px}.arrival-note{color:#2c6eb5;background:#eef7ff;border-left:3px solid #4a90d9;border-radius:0 6px 6px 0;margin:12px 0 4px;padding:8px 10px;font-size:12px;font-weight:500}.commute-card{background:var(--card-inner);border-radius:var(--radius-sm);border:1px solid var(--border);margin:12px 0;overflow:hidden}.commute-header{text-align:left;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;display:flex}.commute-header:active{background:#eee9de}.commute-header-left{align-items:center;gap:10px;display:flex}.commute-icon{font-size:18px}.commute-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-size:12px;font-weight:700}.commute-sublabel{color:var(--text);margin-top:1px;font-size:13px;font-weight:500}.commute-chevron{color:var(--text-light);font-size:18px;transition:transform .2s}.commute-chevron.expanded{transform:rotate(90deg)}.commute-options{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding:8px;display:flex}.commute-option{border:1px solid var(--border);background:#fff;border-radius:8px;padding:10px}.commute-option-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.commute-option-icon{font-size:16px}.commute-option-method{flex:1;font-size:13px;font-weight:600}.commute-option-duration{background:var(--navy);color:#fff;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.commute-option-details{color:var(--text-muted);margin-top:5px;font-size:12px;line-height:1.4}.commute-option-price{color:var(--green);margin-top:4px;font-size:12px;font-weight:600}.commute-inline{flex-direction:column;gap:4px;margin:6px 0 0;display:flex}.commute-inline-option{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.commute-method-tag{background:var(--navy);color:#fff;border-radius:10px;padding:2px 7px;font-size:10px;font-weight:600}.commute-duration{color:var(--text);font-size:12px;font-weight:600}.commute-price{color:var(--green);font-size:11px;font-weight:500}.commute-from{color:var(--text-light);font-size:11px;font-style:italic}.macau-transport{border-radius:var(--radius-sm);background:#fff8e8;border:1px solid #f0d06a;margin:10px 0;padding:12px}.macau-transport-title{color:#8a6000;margin-bottom:5px;font-size:13px;font-weight:700}.macau-transport-note{color:#6b4800;margin-bottom:8px;font-size:12px;font-weight:500}.macau-transport-tips{flex-direction:column;gap:4px;list-style:none;display:flex}.macau-transport-tips li{color:#5a3d00;padding-left:12px;font-size:12px;line-height:1.4;position:relative}.macau-transport-tips li:before{content:"•";color:var(--gold);position:absolute;left:0}.day-section{margin-top:14px}.section-header{align-items:center;gap:7px;margin-bottom:8px;display:flex}.section-icon{font-size:16px}.section-time{text-transform:uppercase;letter-spacing:.5px;color:var(--navy);font-size:12px;font-weight:700}.section-activities{border-left:2px solid var(--border);flex-direction:column;gap:8px;margin-left:8px;padding-left:4px;display:flex}.activity-item{background:var(--card-inner);border-radius:var(--radius-sm);border:1px solid var(--border);padding:10px 12px}.activity-name{color:var(--text);margin-bottom:2px;font-size:14px;font-weight:700}.activity-address{color:var(--text-muted);margin-bottom:4px;font-size:11px}.activity-note{color:var(--text-muted);margin-top:4px;font-size:12px;line-height:1.45}.near-hotel-badge{color:#2e7d32;background:#e8f5e9;border-radius:10px;margin:4px 0;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.ticket-placeholder{border-radius:var(--radius-sm);background:#fff3e0;border:1.5px dashed #f0a030;align-items:flex-start;gap:10px;margin:8px 0;padding:10px 12px;display:flex}.ticket-icon{margin-top:1px;font-size:20px}.ticket-content{flex:1}.ticket-label{text-transform:uppercase;letter-spacing:.8px;color:#c17d00;margin-bottom:3px;font-size:10px;font-weight:800}.ticket-note{color:#7a4e00;font-size:12px;line-height:1.4}.ticket-stub{border-left:1.5px dashed #f0a030;flex-direction:column;align-items:center;gap:2px;min-width:40px;padding-left:10px;display:flex}.ticket-stub-text{color:#c17d00;text-transform:uppercase;letter-spacing:.4px;font-size:9px;font-weight:600}.ticket-file-card{border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;background:#e8f5e9;border:1.5px solid #66bb6a;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;padding:10px 12px;display:flex}.ticket-file-card:active{background:#d4edda}.ticket-file-left{align-items:flex-start;gap:10px;display:flex}.ticket-file-icon{margin-top:1px;font-size:20px}.ticket-file-label{text-transform:uppercase;letter-spacing:.8px;color:#2e7d32;margin-bottom:3px;font-size:10px;font-weight:800}.ticket-file-note{color:#388e3c;font-size:12px}.ticket-file-view{color:#2e7d32;white-space:nowrap;flex-shrink:0;font-size:12px;font-weight:700}.must-try{margin-top:8px}.must-try-label{text-transform:uppercase;letter-spacing:.5px;color:var(--red);margin-bottom:4px;font-size:10px;font-weight:700}.must-try-items{flex-wrap:wrap;gap:4px;display:flex}.must-try-tag{color:var(--red);background:#fff0ef;border:1px solid #ffd5d2;border-radius:10px;padding:3px 8px;font-size:11px;font-weight:500}.tips-section{margin-top:8px}.tips-toggle{color:var(--gold);align-items:center;gap:4px;padding:4px 0;font-size:12px;font-weight:600;display:flex}.tips-list{flex-direction:column;gap:5px;margin-top:6px;list-style:none;display:flex}.tips-list li{color:var(--text-muted);padding-left:14px;font-size:12px;line-height:1.4;position:relative}.tips-list li:before{content:"→";color:var(--gold);font-size:11px;position:absolute;left:0}.food-around{border-radius:var(--radius-sm);background:#f0faf8;border:1px solid #c8ede8;margin-top:16px;padding:12px}.food-around-title{color:var(--green);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;font-size:12px;font-weight:700}.food-item{border-bottom:1px solid #d4ece8;padding:8px 0}.food-item:last-child{border-bottom:none;padding-bottom:0}.food-item-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.food-name{color:var(--text);font-size:13px;font-weight:600}.food-type-tag{background:var(--green);color:#fff;white-space:nowrap;border-radius:10px;padding:2px 7px;font-size:10px;font-weight:600}.food-note{color:var(--text-muted);margin-top:3px;font-size:12px;line-height:1.4}.quick-facts{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:14px}.quick-facts-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.fact-card{background:var(--card-inner);border-radius:var(--radius-sm);border:1px solid var(--border);gap:8px;padding:10px;display:flex}.fact-icon{font-size:20px;line-height:1.2}.fact-label{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);font-size:10px;font-weight:700}.fact-value{color:var(--text);margin-top:1px;font-size:12px;font-weight:600}.fact-note{color:var(--text-light);margin-top:1px;font-size:10px;line-height:1.3}.footer-note{text-align:center;color:var(--text-light);padding:8px;font-size:12px}.menu-overlay{z-index:200;opacity:0;pointer-events:none;background:#00000080;transition:opacity .25s;position:fixed;inset:0}.menu-overlay.visible{opacity:1;pointer-events:all}.side-menu{z-index:201;width:min(88vw,360px);box-shadow:var(--shadow-lg);background:#fff;flex-direction:column;transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.side-menu.open{transform:translate(0)}.menu-header{background:linear-gradient(135deg, var(--navy), var(--navy-light));justify-content:space-between;align-items:center;padding:16px;display:flex}.menu-title{color:#fff;font-size:17px;font-weight:700}.menu-close{color:#fffc;border-radius:6px;padding:4px 8px;font-size:18px}.menu-close:active{background:#ffffff26}.menu-trip-info{background:var(--navy-light);flex-direction:column;gap:2px;padding:8px 16px 10px;display:flex}.menu-trip-info span{color:#fff9;font-size:11px}.menu-tabs{border-bottom:1px solid var(--border);background:#fff;display:flex}.menu-tab{color:var(--text-muted);text-align:center;border-bottom:2.5px solid #0000;flex:1;padding:11px 6px;font-size:11px;font-weight:600;transition:all .2s}.menu-tab.active{color:var(--navy);border-bottom-color:var(--gold)}.menu-content{background:var(--bg);-webkit-overflow-scrolling:touch;flex:1;padding:16px;overflow-y:auto}.section-title{color:var(--navy);margin-bottom:12px;font-size:15px;font-weight:700}.passport-subtitle{color:var(--text-muted);margin-bottom:12px;font-size:12px;line-height:1.4}.passport-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;display:grid}.passport-card{background:var(--card);border-radius:var(--radius-sm);border:2px dashed var(--border);text-align:center;cursor:pointer;flex-direction:column;align-items:center;gap:6px;padding:16px 10px;transition:border-color .2s;display:flex}.passport-card:active{border-color:var(--navy)}.passport-icon{font-size:30px}.passport-name{color:var(--text);font-size:12px;font-weight:600}.passport-upload{color:var(--text-light);font-size:10px}.passport-docs-section{margin-top:4px}.docs-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;font-size:11px;font-weight:700}.doc-card{background:var(--card);border-radius:var(--radius-sm);border:1.5px dashed var(--border);cursor:pointer;align-items:center;gap:10px;margin-bottom:6px;padding:10px 12px;display:flex}.doc-card:active{border-color:var(--navy)}.doc-icon{font-size:18px}.doc-name{color:var(--text);flex:1;font-size:13px;font-weight:500}.doc-upload{color:var(--navy);font-size:11px;font-weight:600}.priority-legend{flex-wrap:wrap;gap:10px;margin-bottom:12px;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:4px;font-size:11px;display:flex}.legend-dot{border-radius:50%;width:8px;height:8px}.legend-dot.critical{background:#e63946}.legend-dot.high{background:#f4a261}.legend-dot.medium{background:#2a9d8f}.legend-dot.low{background:#aaa}.reminder-category{background:var(--card);border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:10px;overflow:hidden}.reminder-cat-header{color:var(--text);text-align:left;background:var(--card);justify-content:space-between;align-items:center;width:100%;padding:11px 12px;font-size:13px;font-weight:700;display:flex}.reminder-cat-header:active{background:var(--card-inner)}.reminder-items{border-top:1px solid var(--border);background:var(--card-inner)}.reminder-item{border-bottom:1px solid var(--border);padding:10px 12px}.reminder-item:last-child{border-bottom:none}.reminder-item-header{align-items:flex-start;gap:8px;display:flex}.priority-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:4px}.reminder-text{color:var(--text);font-size:13px;font-weight:600;line-height:1.3}.reminder-note{color:var(--text-muted);margin-top:3px;margin-left:16px;font-size:11px;line-height:1.4}.food-guide-region{margin-bottom:16px}.food-region-title{color:var(--navy);border-bottom:2px solid var(--gold);margin-bottom:10px;padding-bottom:6px;font-size:13px;font-weight:700;display:inline-block}.food-guide-item{background:var(--card);border-radius:var(--radius-sm);border:1px solid var(--border);align-items:flex-start;gap:10px;margin-bottom:6px;padding:10px;display:flex}.food-guide-emoji{text-align:center;min-width:26px;font-size:22px;line-height:1}.food-guide-name{color:var(--text);font-size:13px;font-weight:700}.food-guide-where{color:var(--text-muted);margin-top:2px;font-size:11px}.food-guide-note{color:var(--text-light);margin-top:3px;font-size:11px;line-height:1.4}.docs-group{margin-bottom:16px}.docs-group .docs-title{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:6px;font-size:11px;font-weight:700}.doc-card{background:var(--card);border-radius:var(--radius-sm);border:1.5px dashed var(--border);cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:10px;margin-bottom:6px;padding:10px 12px;transition:border-color .2s,background .2s;display:flex}.doc-card:active{background:var(--card-inner)}.doc-card.uploaded{border-style:solid;border-color:var(--green);background:#f0faf8}.doc-card.pending{cursor:default;opacity:.7;background:#fffdf0;border-color:#f0d06a}.doc-icon{flex-shrink:0;font-size:20px}.doc-info{flex:1;min-width:0}.doc-name{color:var(--text);font-size:13px;font-weight:600;display:block}.doc-meta{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11px;display:block;overflow:hidden}.doc-upload{color:var(--navy);white-space:nowrap;font-size:12px;font-weight:700}.doc-pending-badge{font-size:16px}.doc-uploaded-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.doc-view-btn{color:var(--green);white-space:nowrap;font-size:11px;font-weight:600}.doc-clear-btn{color:var(--text-light);padding:2px 4px;font-size:14px;line-height:1}.viewer-overlay{z-index:500;background:#000000d9;flex-direction:column;display:flex;position:fixed;inset:0}.viewer-container{flex-direction:column;height:100%;display:flex}.viewer-header{background:#111;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.viewer-filename{color:#fffc;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.viewer-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.viewer-btn{color:var(--gold-light);cursor:pointer;background:#ffffff1a;border:none;border-radius:6px;padding:6px 10px;font-size:13px;font-weight:600;text-decoration:none}.viewer-btn.close{color:#ffffffb3;background:#ffffff14}.viewer-body{flex:1;justify-content:center;align-items:flex-start;display:flex;overflow:auto}.viewer-image{max-width:100%;height:auto;display:block}.viewer-pdf{background:#fff;border:none;width:100%;height:100%;min-height:calc(100vh - 60px)}.viewer-fallback{color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;padding:40px 20px;display:flex}.viewer-download-btn{background:var(--gold);color:#111;border-radius:10px;margin-top:16px;padding:12px 24px;font-size:15px;font-weight:700;text-decoration:none}.hotel-booking-card{background:var(--card);border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:8px;padding:12px}.hotel-booking-card.pending{background:#fffdf0;border-color:#f0d06a}.hotel-booking-header{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.hotel-booking-name{color:var(--navy);font-size:13px;font-weight:700;line-height:1.3}.hotel-booking-badge{white-space:nowrap;border-radius:10px;padding:3px 7px;font-size:10px;font-weight:700}.hotel-booking-badge.confirmed{color:#2e7d32;background:#e8f5e9}.hotel-booking-badge.pending{color:#8a6000;background:#fff8e1}.hotel-booking-dates{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.hotel-nights{background:var(--navy);color:#fff;border-radius:10px;padding:2px 7px;font-size:10px;font-weight:600}.hotel-booking-meta{flex-direction:column;gap:3px;display:flex}.hotel-meta-row{gap:8px;font-size:11px;display:flex}.hotel-meta-label{color:var(--text-muted);min-width:72px}.hotel-meta-value{color:var(--text);font-weight:500}.hotel-meta-value.ref{color:var(--navy);letter-spacing:.5px;font-weight:700}.hotel-booking-note{color:#8a6000;border-top:1px dashed #f0d06a;margin-top:7px;padding-top:7px;font-size:11px}.flights-section{flex-direction:column;gap:10px;display:flex}.booking-ref-card{background:linear-gradient(135deg, var(--navy), var(--navy-light));border-radius:var(--radius);color:#fff;padding:14px}.booking-ref-airline{color:var(--gold-light);margin-bottom:10px;font-size:13px;font-weight:700}.booking-ref-row{gap:24px;display:flex}.booking-ref-label{text-transform:uppercase;letter-spacing:.5px;color:#ffffff8c;margin-bottom:3px;font-size:10px}.booking-ref-code{color:#fff;letter-spacing:2px;font-size:24px;font-weight:800}.booking-ref-status{color:#7aefb2;font-size:13px;font-weight:600}.flight-card{background:var(--card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);padding:14px}.flight-card-route{color:var(--navy);margin-bottom:6px;font-size:16px;font-weight:800}.flight-card-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.flight-no-badge{color:#1a1a1a;letter-spacing:.3px;background:gold;border-radius:10px;padding:3px 8px;font-size:11px;font-weight:800}.flight-date{color:var(--text);font-size:12px;font-weight:600}.flight-duration{color:var(--text-muted);margin-left:auto;font-size:11px}.flight-legs{align-items:center;gap:8px;display:flex}.flight-leg{flex:1}.flight-leg.right{text-align:right}.flight-leg-time{color:var(--navy);font-size:18px;font-weight:800;line-height:1.1}.flight-leg-city{color:var(--text);margin-top:2px;font-size:12px;font-weight:600}.flight-leg-terminal{color:var(--text-muted);margin-top:1px;font-size:10px}.flight-arrow{flex-shrink:0;font-size:18px}.passengers-section{background:var(--card);border-radius:var(--radius-sm);border:1px solid var(--border);padding:12px}.passengers-title{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:700}.passenger-card{border-bottom:1px solid var(--border);padding:8px 0}.passenger-card:last-child{border-bottom:none;padding-bottom:0}.passenger-name{color:var(--text);margin-bottom:4px;font-size:13px;font-weight:700}.passenger-baggage{flex-direction:column;gap:2px;display:flex}.passenger-baggage span{color:var(--text-muted);font-size:11px}.flight-notes-section{border-radius:var(--radius-sm);background:#fff8e8;border:1px solid #f0d06a;padding:12px}.flight-notes-list{flex-direction:column;gap:5px;margin-top:6px;list-style:none;display:flex}.flight-notes-list li{color:#5a3d00;padding-left:14px;font-size:12px;line-height:1.4;position:relative}.flight-notes-list li:before{content:"•";color:var(--gold);position:absolute;left:0}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
