/* Visual + food upgrade layer; preserves the original design system. */
.hero{background-image:linear-gradient(90deg,rgba(3,39,34,.86),rgba(4,72,67,.55),rgba(15,74,100,.38)),url('assets/images/hero/malaysia-skyline.webp');background-size:cover;background-position:center}.hero:before{background:radial-gradient(circle at 82% 20%,rgba(245,193,80,.32),transparent 28%)}
.concertFeature{background-image:linear-gradient(135deg,rgba(13,63,53,.94),rgba(12,87,72,.83)),url('assets/images/concert/stage-decoration.svg');background-size:cover;background-position:center}.afterCard{background-image:linear-gradient(rgba(251,248,253,.95),rgba(251,248,253,.95)),url('assets/images/after-party/night-decoration.svg');background-size:cover;background-position:center}
.city-cover{position:relative;min-height:260px;border-radius:28px;overflow:hidden;color:#fff;margin:22px 0;display:flex;align-items:end;background:#16483f center/cover no-repeat;box-shadow:var(--shadow)}.city-cover:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 10%,rgba(3,36,31,.82) 100%)}.city-cover-content{position:relative;padding:28px;max-width:700px}.city-cover h3{font-size:32px;margin:0 0 6px}.city-cover p{margin:0;color:#e4f2ed}.city-cover.penang{background-image:url('assets/images/cities/penang-georgetown.webp')}.city-cover.kl{background-image:url('assets/images/cities/kuala-lumpur-night.webp')}
.attraction-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.visual-card{background:var(--paper);border:1px solid rgba(13,107,84,.1);border-radius:22px;overflow:hidden;box-shadow:0 10px 28px rgba(22,64,53,.08);transition:.2s}.visual-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.visual-thumb{position:relative;aspect-ratio:16/10;background:linear-gradient(135deg,#0d6b54,#197a9d);overflow:hidden}.visual-thumb img{width:100%;height:100%;display:block;object-fit:cover;transition:opacity .25s}.visual-thumb.fallback img{display:none}.visual-thumb:after{content:"南洋旅程";position:absolute;inset:auto 14px 12px auto;color:#fff;font-weight:900;opacity:.45}.visual-thumb img+span{position:absolute;left:10px;bottom:10px;background:rgba(0,0,0,.62);color:#fff;padding:4px 8px;border-radius:999px;font-size:11px}.visual-body{padding:17px}.visual-body h3{margin:0 0 5px;font-size:20px}.visual-body p{margin:5px 0}.visual-meta{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.visual-actions{display:flex;gap:8px;flex-wrap:wrap}.visual-actions .btn{flex:1 1 auto;min-height:42px}.city-pill{display:inline-flex;padding:4px 8px;background:#e2eee9;color:#195d4d;border-radius:999px;font-size:12px;font-weight:800}
.food-quickbar{display:grid;grid-template-columns:minmax(0,2fr) minmax(190px,1fr);gap:10px;margin:18px 0 10px}.food-quickbar input,.food-quickbar select,.food-toolbar select{width:100%;min-width:0;padding:11px 12px;border:1px solid #c9d9d2;background:#fff;border-radius:12px;color:var(--ink);font:inherit}.food-filter-panel{margin:0 0 10px;border:0}.food-filter-panel>summary{display:none;cursor:pointer;padding:11px 13px;border:1px solid #c9d9d2;border-radius:12px;background:#fff;color:var(--green);font-weight:900;list-style:none}.food-filter-panel>summary::-webkit-details-marker{display:none}.food-filter-panel>summary span{color:var(--muted);font-size:12px;font-weight:600}.food-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0}.food-count{color:var(--muted);margin:8px 0 18px}.food-groups{display:grid;gap:30px}.restaurant-meal-section{min-width:0}.restaurant-meal-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.restaurant-meal-head h3{font-size:24px;margin:0}.restaurant-meal-head p{margin:3px 0 0;color:var(--muted);font-size:13px}.food-group-more,.day-food-more{border:0;background:transparent;color:var(--green);font:inherit;font-weight:900;padding:8px;cursor:pointer;white-space:nowrap}.food-group-more:hover,.day-food-more:hover{text-decoration:underline}.restaurant-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.restaurant-card{display:flex;flex-direction:column;min-width:0;height:100%;cursor:pointer;border-radius:18px;box-shadow:0 7px 20px rgba(22,64,53,.07)}.restaurant-card:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.restaurant-card-thumb{position:relative;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(135deg,#e6efe8,#c7ded7)}.restaurant-card-thumb img{width:100%;height:100%;display:block;object-fit:cover}.restaurant-card-thumb.fallback img{display:none}.restaurant-card-thumb.fallback:after{content:"图片待核实";display:grid;place-items:center;position:absolute;inset:0;color:#fff;font-weight:900;background:linear-gradient(135deg,#0d6b54,#197a9d)}.restaurant-image-placeholder{display:grid;place-items:center;width:100%;height:100%;font-size:34px;color:#fff;background:linear-gradient(135deg,#0d6b54,#197a9d)}.restaurant-image-note{position:absolute;left:8px;bottom:8px;padding:3px 7px;border-radius:999px;background:rgba(5,34,29,.72);color:#fff;font-size:10px}.restaurant-state{position:absolute;top:8px;right:8px;max-width:calc(100% - 16px);padding:4px 7px;border-radius:999px;background:rgba(255,249,232,.92);color:#725000;font-size:10px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.restaurant-card-body{display:flex;flex:1;flex-direction:column;min-width:0;padding:11px}.restaurant-card h3{margin:0 0 1px;font-size:18px;line-height:1.25}.restaurant-en{margin:0;color:var(--muted);font-size:12px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.restaurant-signature,.restaurant-summary{margin:6px 0 0;font-size:13px;line-height:1.4}.restaurant-summary{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-price{margin:5px 0 0;font-weight:900;color:var(--green);font-size:14px}.food-tags{display:flex;flex-wrap:wrap;gap:4px;margin:7px 0 0}.food-tags .tag{padding:3px 7px;font-size:10px}.restaurant-card.is-selected{outline:3px solid var(--gold)}.restaurant-card.is-favorite{border-color:#d7aa40}.restaurant-card.is-eaten{opacity:.72}.image-source-line{color:var(--muted);font-size:12px}.restaurant-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.restaurant-detail-actions .btn{flex:1 1 170px}
.day-food-panel{margin-top:17px;padding:16px;border-radius:18px;background:#f4f0e4;border:1px solid #e8d8b5;min-width:0}.day-food-panel h4{margin:0 0 9px;font-size:18px}.day-food-groups{display:grid;gap:12px}.day-food-period{padding:11px;border-radius:15px;background:rgba(255,255,255,.55);min-width:0}.day-food-period-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.day-food-period h5{margin:0 0 7px;font-size:14px;color:var(--green)}.day-food-period h5 span{font-weight:600;color:var(--muted)}.day-food-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.day-food-card{min-width:0;text-align:left;border:1px solid #decda7;border-radius:13px;padding:10px;background:#fff;color:var(--ink);cursor:pointer}.day-food-card b,.day-food-card span,.day-food-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-food-card span{font-size:12px;margin-top:3px}.day-food-card small{margin-top:4px;color:var(--muted)}.modal-critical{margin:12px 0 0}.concert-paid-note{padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.12)}
.modal-backdrop{position:fixed;inset:0;z-index:2000;background:rgba(4,25,22,.72);display:none;align-items:center;justify-content:center;padding:20px}.modal-backdrop.open{display:flex}.detail-modal{width:min(920px,100%);max-height:min(90vh,880px);overflow:auto;background:var(--paper);border-radius:28px;box-shadow:0 35px 100px rgba(0,0,0,.35);position:relative}.modal-close{position:sticky;float:right;top:14px;right:14px;z-index:3;width:44px;height:44px;border:0;border-radius:50%;background:#fff;color:var(--ink);box-shadow:0 5px 18px rgba(0,0,0,.2);font-size:24px}.modal-hero{aspect-ratio:16/7;background:linear-gradient(135deg,#0d6b54,#197a9d);overflow:hidden}.modal-hero img{width:100%;height:100%;display:block;object-fit:cover}.modal-content{padding:26px}.modal-content h2{font-size:32px;margin:0}.modal-content h3{font-size:18px;margin:20px 0 7px}.modal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 22px;margin:18px 0}.modal-facts{padding:13px;background:#edf4f0;border-radius:14px}.modal-list{padding-left:20px}.modal-content .actions{margin-top:18px}body.modal-open{overflow:hidden}.source-disclosure{margin-top:18px}.source-disclosure summary{cursor:pointer;font-weight:900}.source-disclosure li{margin:7px 0}
.budget-paid{border-color:#b88829;background:#fff9e8}.paid-breakdown{font-size:13px;color:#73531b}.upgrade-marker-btn{margin-top:8px}
@media(max-width:1280px) and (min-width:769px){.restaurant-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:980px){.attraction-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.food-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.restaurant-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-food-mini{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:768px){.food-quickbar{grid-template-columns:minmax(0,1.45fr) minmax(130px,1fr);gap:8px;margin-bottom:8px}.food-filter-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:8px}.food-filter-panel[open]>summary{border-radius:12px 12px 0 0;border-bottom-color:transparent}.food-filter-panel[open] .food-toolbar{padding:10px;border:1px solid #c9d9d2;border-radius:0 0 12px 12px;background:#f7faf8}.food-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.food-count{margin-bottom:12px}.food-groups{gap:24px}.restaurant-meal-head{align-items:center}.restaurant-meal-head h3{font-size:20px}.restaurant-meal-head p{font-size:12px}.restaurant-grid{grid-template-columns:1fr;gap:8px}.restaurant-card{display:grid;grid-template-columns:92px minmax(0,1fr);height:auto;min-height:102px;border-radius:16px}.restaurant-card:hover{transform:none;box-shadow:0 7px 20px rgba(22,64,53,.07)}.restaurant-card-thumb{width:82px;height:82px;aspect-ratio:1;margin:10px;border-radius:12px}.restaurant-card-body{padding:9px 10px 8px 0;overflow:hidden}.restaurant-card h3{font-size:16px;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.restaurant-en{display:none}.restaurant-signature{margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-price{margin-top:2px;font-size:13px}.restaurant-summary{display:none}.food-tags{margin:4px 0 0;flex-wrap:nowrap;overflow:hidden}.food-tags .tag{flex:0 0 auto;max-width:31%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-backdrop.food-open{padding:0;align-items:flex-end}.detail-modal.food-detail-modal{height:94dvh;max-height:94dvh;border-radius:24px 24px 0 0}.food-detail-modal .modal-hero{aspect-ratio:16/9}.food-detail-modal .modal-content{padding:18px}.food-detail-modal .modal-content h2{font-size:25px}.food-detail-modal .modal-grid{grid-template-columns:1fr}.restaurant-detail-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.restaurant-detail-actions .btn{min-width:0;width:100%;white-space:normal}.day-food-mini{grid-template-columns:1fr}.day-food-card{min-height:62px}.day-food-panel{padding:12px}.day-food-period{padding:9px}}
@media(max-width:640px){.hero{background-position:58% center}.city-cover{min-height:230px}.city-cover-content{padding:20px}.city-cover h3{font-size:26px}.attraction-grid{grid-template-columns:1fr}.modal-backdrop{padding:0;align-items:flex-end}.detail-modal{height:94vh;max-height:94vh;border-radius:24px 24px 0 0}.modal-hero{aspect-ratio:16/9}.modal-content{padding:19px}.modal-content h2{font-size:25px}.modal-grid{grid-template-columns:1fr}.visual-actions .btn{min-height:46px}}
@media(max-width:640px){.heroBtns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.heroBtns .btn{width:auto;padding:10px 8px;font-size:14px}.heroStats{grid-template-columns:repeat(2,minmax(0,1fr))}.btn.small{min-height:44px}}
@media(prefers-reduced-motion:reduce){.visual-card,.visual-thumb img{transition:none!important}.visual-card:hover{transform:none}}
@media print{.city-cover{min-height:160px}.visual-actions,.food-quickbar,.food-filter-panel,.food-group-more,.day-food-more,.modal-backdrop{display:none!important}.attraction-grid,.restaurant-grid{grid-template-columns:repeat(2,1fr)}.visual-card{break-inside:avoid;box-shadow:none}}
