:root{--mint: #7FEEDD;--mint-dark: #57CFBB;--mint-pale: #E4FBF6;--sage: #4C9C82;--ink: #0E0E0E;--ink-soft: #3A3A3A;--paper: #FFFFFF;--line: #DCEDE8;--amber: #E8A23C;--amber-bg: #FCEFD9;--amber-text: #8A5510;--sky: #3C7FE8;--sky-bg: #DEEAFC;--rose: #C9524B;--rose-bg: #F7DEDC;--gray-bg: #ECECEC;--sage-text: #2F6B58;--sky-text: #1F4FA0;--gray-text: #5A5A5A;--rose-text: #9D352F;--plum: #8B5FBF;--plum-bg: #F1E9F9;--plum-text: #6B3FA0;--radius-s: 8px;--radius-m: 14px;--radius-l: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 20px;--space-5: 32px;--space-6: 48px;--font-display: "Archivo", "Noto Sans TC", sans-serif;--font-body: "Noto Sans TC", "Archivo", sans-serif;--chrome-h: 152px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3,.display{font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;margin:0}h1{font-size:40px;line-height:.95}h2{font-size:24px;line-height:1}h3{font-size:16px;letter-spacing:.02em}p,label,span,td,th,input,select,button{font-family:var(--font-body)}a{color:var(--sage)}.app-shell{max-width:720px;margin:0 auto;min-height:100vh}.admin-shell{max-width:1080px;margin:0 auto;padding-bottom:var(--space-6)}.hero{position:relative;background:var(--mint);padding:var(--space-6) var(--space-4) var(--space-5);overflow:hidden}.hero-topo{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.35;pointer-events:none}.hero-eyebrow{font-family:var(--font-display);font-weight:600;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);opacity:.7;position:relative}.lang-toggle{position:relative;font-family:var(--font-display);font-weight:700;font-size:12px;border:1.5px solid var(--ink);border-radius:999px;padding:4px 14px;cursor:pointer;background:#fff;white-space:nowrap}.lang-toggle:active{background:var(--mint-pale)}.lang-toggle:after{content:"";position:absolute;top:-9px;right:-2px;bottom:-9px;left:-2px}.hero-title{position:relative;font-size:56px;margin-top:var(--space-2)}.hero-title .thin{font-weight:400;display:block}.hero-title .black{font-weight:900;display:block}.hero-meta{position:relative;margin-top:var(--space-4);font-size:14px;color:var(--ink-soft)}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-m);padding:var(--space-4);margin:var(--space-3) var(--space-4)}.card+.card{margin-top:var(--space-3)}.section{padding:0 var(--space-4);margin-top:var(--space-5)}#panel-itinerary{margin-top:var(--space-3);padding-bottom:60vh}.section-title{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-3)}.section-title .cross{color:var(--sage);font-size:14px}.collapse-arrow{color:var(--ink-soft);font-size:14px;transition:transform .15s ease;transform:rotate(-90deg);flex-shrink:0}.collapse-arrow.open{transform:rotate(0)}.btn{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:.02em;font-size:13px;border:2px solid var(--ink);border-radius:999px;padding:10px 22px;background:var(--ink);color:var(--mint);cursor:pointer;transition:transform .1s ease,opacity .15s ease}.btn:hover{opacity:.85}.btn:active{transform:scale(.97)}.btn-outline{background:transparent;color:var(--ink)}.btn-mint{background:var(--mint);border-color:var(--ink);color:var(--ink)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{padding:6px 14px;font-size:11px}input[type=text],input[type=password],input[type=number],input[type=datetime-local],select,textarea{font-size:15px;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius-s);width:100%;background:var(--paper);color:var(--ink)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--sage)}.field{margin-bottom:var(--space-3)}.field label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:6px}.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;letter-spacing:.03em;padding:3px 10px;border-radius:999px}.badge-meat{background:var(--ink);color:var(--mint)}.badge-veg{background:var(--sage);color:#fff}.badge-nomeat{background:var(--sky);color:#fff}.badge-drink{background:var(--mint);color:var(--ink)}.chip{font-weight:700}.chip-inquiring{background:var(--amber-bg);color:var(--amber-text)}.chip-quoted{background:var(--sky-bg);color:var(--sky-text)}.chip-confirmed{background:var(--mint-pale);color:var(--sage-text)}.chip-declined{background:var(--gray-bg);color:var(--gray-text)}.chip-style-shared{background:var(--mint-pale);color:var(--sage-text)}.chip-style-personal{background:var(--sky-bg);color:var(--sky-text)}.chip-style-bento{background:var(--amber-bg);color:var(--amber-text)}.chip-style-catering{background:var(--plum-bg);color:var(--plum-text)}.chip-style-unset{background:var(--gray-bg);color:var(--gray-text)}.day-block{margin-bottom:var(--space-4);scroll-margin-top:var(--chrome-h)}.day-date{font-family:var(--font-display);font-weight:900;font-size:20px;margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2)}.day-date:before{content:"";width:10px;height:10px;background:var(--mint);border:2px solid var(--ink);border-radius:3px}.day-block.today .day-date:before{background:var(--sage)}.today-chip{font-family:var(--font-body);font-weight:700;font-size:11px;color:#fff;background:var(--sage);padding:2px 8px;border-radius:999px}.itinerary-item{display:flex;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px dashed var(--line)}.itinerary-item:last-child{border-bottom:none}.itinerary-time{font-weight:700;font-size:13px;white-space:nowrap;color:var(--sage);min-width:90px}.itinerary-activity{font-size:14px;line-height:1.5}.itinerary-location{font-size:12px;color:var(--ink-soft);margin-top:2px}.menu-note-link{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:12px;font-weight:700;color:var(--sage);cursor:pointer}.menu-modal-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#141e1c80;z-index:100;align-items:flex-end;justify-content:center}.menu-modal-overlay.open{display:flex}.menu-modal{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:480px;max-height:70vh;overflow-y:auto;padding:var(--space-4);box-shadow:0 -4px 24px #00000026}@media(min-width:560px){.menu-modal-overlay{align-items:center}.menu-modal{border-radius:16px;max-height:60vh}}.menu-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.menu-modal-header h3{font-family:var(--font-display);font-size:18px}.menu-modal-close{font-size:20px;color:var(--ink-soft);cursor:pointer;padding:4px 8px}.menu-modal-body{padding:10px 12px;background:var(--mint-pale);border-radius:10px;font-size:13px;color:var(--ink-soft);line-height:1.8}.dish-option{display:flex;justify-content:space-between;align-items:center;border:1.5px solid var(--line);border-radius:var(--radius-s);padding:var(--space-3);margin-bottom:var(--space-2);cursor:pointer}.dish-option.selected{border-color:var(--sage);background:var(--mint-pale)}.dish-option .dish-name{font-weight:700}.dish-option>.dish-name,.dish-option>.dish-text{flex:1 1 auto;min-width:0;margin-right:var(--space-3)}.dish-option>.badge,.dish-option>.dish-thumb,.dish-option .temp-pills{flex-shrink:0}.dish-thumb{width:56px;height:56px;border-radius:8px;object-fit:cover;margin-right:var(--space-3);background:var(--mint-pale);cursor:zoom-in}.dish-desc{font-size:12px;font-weight:400;color:var(--ink-soft);line-height:1.4;margin-top:3px}.photo-modal-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:200;align-items:center;justify-content:center;padding:var(--space-4)}.photo-modal-overlay.open{display:flex}.photo-modal-img{max-width:100%;max-height:90vh;border-radius:12px;box-shadow:0 8px 32px #0006}.photo-modal-close{position:absolute;top:var(--space-4);right:var(--space-4);font-size:28px;color:#fff;cursor:pointer;padding:4px 10px;line-height:1}.temp-pills{display:flex;border:1.5px solid var(--line);border-radius:10px;overflow:hidden}.temp-pill{display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;font-size:13px;font-weight:700;color:var(--ink-soft);background:#fff}.temp-pill:not(:last-child){border-right:1.5px solid var(--line)}.temp-pill.active{background:var(--sage);color:#fff}.order-notes-field{margin:10px 0}.order-notes-field label{font-size:12px;font-weight:700;color:var(--ink-soft);display:block;margin-bottom:4px}.order-notes-field input{width:100%;padding:8px 10px;border:1.5px solid var(--line);border-radius:var(--radius-s);font-size:13px;font-family:inherit}.deadline-note{font-size:12px;color:var(--rose);margin-top:var(--space-2)}.deadline-emphasis{font-family:var(--font-display);font-size:14px;font-weight:800;color:var(--rose);margin-bottom:var(--space-3)}.sticky-stack{position:sticky;top:0;z-index:20;background:var(--paper)}.appbar{position:relative;height:56px;background:var(--mint);border-bottom:1.5px solid var(--ink);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:0 var(--space-4);overflow:hidden}.appbar-id{position:relative;display:flex;align-items:center;gap:var(--space-2);min-width:0;flex:1 1 auto}.appbar-mark{font-size:15px;line-height:1;opacity:.55;flex-shrink:0}.appbar-idtext{min-width:0}.appbar-name{font-family:var(--font-display);font-weight:800;font-size:15px;line-height:20px;letter-spacing:.01em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar-sub{font-family:var(--font-body);font-weight:700;font-size:11px;line-height:14px;color:var(--ink);opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar-sub>span:not(:empty)+span:not(:empty):before{content:" · "}.appbar-right{position:relative;display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.avatar{width:30px;height:30px;border-radius:999px;background:var(--ink);color:var(--mint);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:13px;text-transform:uppercase;flex-shrink:0;border:none;padding:0;cursor:pointer;position:relative}.avatar:after{content:"";position:absolute;top:-7px;right:-7px;bottom:-7px;left:-7px}.account-scrim{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:25}.account-scrim.open{display:block}.account-menu{display:none;position:absolute;top:56px;right:var(--space-4);z-index:30;min-width:140px;background:var(--paper);border:1.5px solid var(--ink);border-radius:var(--radius-s);box-shadow:0 8px 24px #00000026;overflow:hidden}.account-menu.open{display:block}.account-menu a{display:flex;align-items:center;min-height:44px;padding:0 var(--space-3);font-size:13px;font-weight:700;color:var(--ink);text-decoration:none}.account-menu a:active{background:var(--mint-pale)}.tabbar{display:flex;gap:var(--space-4);height:44px;padding:0 var(--space-4);background:var(--paper);border-bottom:1px solid var(--line)}.tab{display:flex;align-items:center;font-family:var(--font-display);font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;color:var(--ink-soft);cursor:pointer;border-bottom:3px solid transparent}.tab.active{color:var(--ink);border-bottom-color:var(--mint-dark)}.tab-badge{margin-left:var(--space-2);font-family:var(--font-body);font-weight:700;font-size:10px;text-transform:none;letter-spacing:0;color:var(--amber-text);background:var(--amber-bg);padding:2px 7px;border-radius:999px;white-space:nowrap}.daystrip{height:52px;background:var(--mint-pale);border-bottom:1px solid var(--line);overflow:hidden}.daystrip-scroll{display:flex;align-items:center;gap:6px;height:100%;padding:0 var(--space-4);overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}.daystrip-scroll::-webkit-scrollbar{display:none}.daychip{flex:0 0 auto;width:44px;height:44px;border:1.5px solid var(--line);border-radius:var(--radius-s);background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;text-decoration:none;color:var(--ink);scroll-margin-inline:var(--space-4)}.daychip-wd{font-family:var(--font-display);font-weight:600;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}.daychip-num{font-family:var(--font-body);font-weight:700;font-size:15px;line-height:1}.daychip.is-today{background:var(--ink);border-color:var(--ink)}.daychip.is-today .daychip-wd{color:var(--mint);opacity:.75}.daychip.is-today .daychip-num{color:var(--mint)}.daychip.active{outline:2px solid var(--sage);outline-offset:2px;border-color:var(--sage)}.dish-count{font-family:var(--font-display);font-weight:800;font-size:20px;line-height:1;margin-left:auto;white-space:nowrap}.dish-count-unit{font-family:var(--font-body);font-weight:700;font-size:12px;color:var(--ink-soft);margin-left:2px}.table-scroll{overflow-x:auto}table.admin-table{width:100%;border-collapse:collapse;font-size:13px}table.admin-table th,table.admin-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}table.admin-table th{font-family:var(--font-display);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.empty-state{color:var(--ink-soft);font-size:13px;padding:var(--space-4);text-align:center}#adminShellLoading{padding:var(--space-4);text-align:center;color:var(--ink-soft)}.admin-topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);font-size:13px;color:var(--ink-soft)}#adminShellPlaceholder{padding:var(--space-4);text-align:center;color:var(--ink-soft)}.admin-tabs{display:flex;gap:var(--space-2, 8px);padding:var(--space-3) var(--space-4) 0;border-bottom:1px solid var(--line)}.admin-tab{padding:8px 14px;font-size:13px;font-weight:600;color:var(--ink-soft);border-bottom:2px solid transparent;cursor:pointer;background:none;border-top:none;border-left:none;border-right:none}.admin-tab.active{color:var(--ink);border-bottom-color:var(--sage)}#adminPanel{padding:var(--space-4)}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3)}.mini-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3);align-items:end}.row-actions{display:flex;gap:8px;margin-top:8px}.vendor-card{border:1.5px solid var(--line);border-radius:var(--radius-s);padding:var(--space-3);position:relative}.vendor-card.final{border-color:var(--sage);background:var(--mint-pale)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--mint);padding:10px 20px;border-radius:999px;font-size:13px;font-weight:600;z-index:50;box-shadow:0 8px 24px #0003}
