:root{--color-bg:#fff;--color-bg-secondary:#f5f5f5;--color-bg-card:#fff;--color-border:#e5e5e5;--color-text:#111;--color-text-muted:#6b6b6b;--color-primary:#00c4bb;--color-primary-dark:#009990;--color-primary-light:#e0fffe;--color-primary-text:#00302e;--color-danger:#dc2626;--color-danger-light:#fef2f2;--color-success:#38ff8f;--color-success-light:#e6fff3;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 12px #0000001a;--shadow-lg:0 8px 32px #0000002e;--top-bar-height:56px;--bottom-nav-height:64px;--safe-area-bottom:env(safe-area-inset-bottom,0px)}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#121212;--color-bg-secondary:#2a2a2a;--color-bg-card:#1e1e1e;--color-border:#2e2e2e;--color-text:#f0f0f0;--color-text-muted:#9e9e9e;--color-primary-light:#003533;--color-danger-light:#1f0909;--color-success-light:#00341a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.app-shell{flex-direction:column;max-width:600px;height:100%;margin:0 auto;display:flex;position:relative}.top-bar{width:100%;max-width:600px;height:var(--top-bar-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:100;justify-content:space-between;align-items:center;padding:0 16px;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)}.top-bar-title{align-items:center;gap:8px;font-size:17px;font-weight:600;display:flex}.top-bar-logo{object-fit:contain;width:auto;height:24px}.avatar-btn{background:0 0;border:none;align-items:center;padding:0;display:flex}.main-content{padding-top:var(--top-bar-height);padding-bottom:calc(var(--bottom-nav-height) + var(--safe-area-bottom));flex:1;overflow-y:auto}.bottom-nav{width:100%;max-width:600px;height:calc(var(--bottom-nav-height) + var(--safe-area-bottom));padding-bottom:var(--safe-area-bottom);background:var(--color-bg);border-top:1px solid var(--color-border);z-index:100;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--color-text-muted);border-radius:var(--radius-md);flex-direction:column;align-items:center;gap:3px;padding:6px 12px;font-size:10px;font-weight:500;text-decoration:none;transition:color .15s;display:flex}.nav-item.active{color:var(--color-primary)}.nav-item-fab{color:var(--color-text-muted);flex-direction:column;align-items:center;gap:3px;font-size:10px;font-weight:500;text-decoration:none;display:flex}.nav-item-fab.active{color:var(--color-primary)}.fab-btn{border-radius:var(--radius-full);background:var(--color-primary);width:48px;height:48px;color:var(--color-primary-text);box-shadow:var(--shadow-md);justify-content:center;align-items:center;margin-top:-8px;display:flex}.page{padding:16px}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.page-loading{justify-content:center;align-items:center;height:50vh;display:flex}.login-page{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{text-align:center;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:360px;display:flex}.login-logo{object-fit:contain;width:120px;height:auto}.login-card h1{font-size:26px;font-weight:700}.login-subtitle{color:var(--color-text-muted);font-size:15px}.pending-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.pending-card{text-align:center;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:360px;display:flex}.pending-icon{font-size:56px;line-height:1}.pending-card h1{font-size:22px;font-weight:700}.pending-card p{color:var(--color-text-muted);font-size:14px;line-height:1.6}.pending-email{color:var(--color-text)!important;font-size:13px!important}.pending-actions{flex-direction:column;gap:10px;width:100%;display:flex}.profile-page{flex-direction:column;align-items:center;gap:20px;padding-top:32px;display:flex}.profile-header{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.profile-header h2{font-size:20px;font-weight:600}.admin-page{flex-direction:column;gap:24px;display:flex}.admin-section{flex-direction:column;gap:10px;display:flex}.user-list{flex-direction:column;gap:8px;display:flex}.user-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:center;gap:12px;padding:12px;display:flex}.user-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.user-name{align-items:center;gap:6px;font-size:14px;font-weight:500;display:flex}.user-email{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.user-actions{flex-shrink:0;gap:6px;display:flex}.avatar{border-radius:var(--radius-full);object-fit:cover;flex-shrink:0}.avatar-sm{width:32px;height:32px;font-size:14px}.avatar-md{width:40px;height:40px;font-size:16px}.avatar-lg{width:72px;height:72px;font-size:28px}.avatar:not(.avatar-sm):not(.avatar-md):not(.avatar-lg){width:40px;height:40px;font-size:16px}.avatar-placeholder{background:var(--color-primary-light);color:var(--color-primary);justify-content:center;align-items:center;font-weight:600;display:flex}.btn{border-radius:var(--radius-md);border:none;justify-content:center;align-items:center;gap:8px;width:100%;padding:10px 20px;font-size:14px;font-weight:600;transition:opacity .15s,background .15s;display:inline-flex}.btn:active{opacity:.85}.btn-sm{width:auto;padding:6px 12px;font-size:13px}.btn-primary{background:var(--color-primary);color:var(--color-primary-text)}.btn-primary:hover{background:var(--color-primary-dark)}.btn-danger{background:var(--color-danger);color:#fff}.btn-icon{border-radius:var(--radius-full);background:var(--color-bg-secondary);border:1px solid var(--color-border);cursor:pointer;width:34px;height:34px;color:var(--color-text-muted);flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.btn-icon:active{background:var(--color-border);color:var(--color-text)}.btn-ghost{background:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border)}.btn-google{background:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border);font-size:15px}.badge{border-radius:var(--radius-full);padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-admin{background:var(--color-primary-light);color:var(--color-primary)}.badge-pending{background:var(--color-danger-light);color:var(--color-danger)}.admin-subsection{margin-bottom:12px}.admin-subsection-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:11px;font-weight:600}.alert{border-radius:var(--radius-md);text-align:left;width:100%;padding:10px 14px;font-size:14px}.alert-error{background:var(--color-danger-light);color:var(--color-danger)}.section-title{font-size:17px;font-weight:600}.empty-text{color:var(--color-text-muted);font-size:14px}.loading-screen{justify-content:center;align-items:center;height:100vh;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:13px;font-weight:600}.input{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);outline:none;padding:10px 12px;font-family:inherit;font-size:15px;transition:border-color .15s}.input:focus{border-color:var(--color-primary)}.textarea{resize:vertical;min-height:72px}select.input{appearance:none;cursor:pointer}.new-category-row{align-items:center;gap:8px;margin-top:6px;display:flex}.new-category-row .input{flex:1}.btn-back{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:16px;font-weight:600}.card-list{flex-direction:column;gap:8px;display:flex}.restaurant-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;align-items:center;gap:12px;width:100%;padding:14px 12px;transition:background .1s;display:flex}.restaurant-card:active{background:var(--color-bg-secondary)}.restaurant-card-icon{border-radius:var(--radius-md);background:var(--color-primary-light);width:44px;height:44px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:20px;font-weight:700;display:flex}.restaurant-card-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.restaurant-card-name{font-size:15px;font-weight:600}.restaurant-card-meta{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.chevron{color:var(--color-text-muted);flex-shrink:0;font-size:20px}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;display:flex}.empty-state-icon{font-size:48px;line-height:1}.empty-state-title{font-size:17px;font-weight:600}.empty-state-body{color:var(--color-text-muted);font-size:14px}.restaurant-header{align-items:flex-start;gap:12px;padding:4px 0 16px;display:flex}.restaurant-header-icon{border-radius:var(--radius-lg);background:var(--color-primary-light);width:52px;height:52px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:24px;font-weight:700;display:flex}.restaurant-header-info{flex:1;min-width:0}.restaurant-header-name{font-size:20px;font-weight:700}.restaurant-header-meta{color:var(--color-text-muted);margin-top:2px;font-size:13px}.restaurant-header-links{flex-shrink:0;gap:8px;display:flex}.icon-link{cursor:pointer;color:inherit;background:0 0;border:none;align-items:center;padding:0;font-size:20px;line-height:1;text-decoration:none;display:inline-flex}.search-input{border:1.5px solid var(--color-border);background:var(--color-bg-card);width:100%;color:var(--color-text);box-sizing:border-box;border-radius:10px;outline:none;margin-bottom:12px;padding:10px 14px;font-size:15px;transition:border-color .15s}.search-input:focus{border-color:var(--color-primary)}.search-input::placeholder{color:var(--color-text-muted)}.filter-chips{scrollbar-width:none;gap:8px;padding-bottom:12px;display:flex;overflow-x:auto}.filter-chips::-webkit-scrollbar{display:none}.chip{border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text-muted);white-space:nowrap;cursor:pointer;padding:6px 14px;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s}.chip.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.item-list{flex-direction:column;gap:2px;display:flex}.menu-item-row{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:center;margin-bottom:6px;display:flex;overflow:hidden}.menu-item-row-main{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;min-width:0;padding:12px}.menu-item-row-info{flex-direction:column;gap:4px;display:flex}.menu-item-name{font-size:15px;font-weight:500}.menu-item-meta-row{align-items:center;gap:6px;display:flex}.menu-item-category{color:var(--color-text-muted);background:var(--color-bg-secondary);border-radius:var(--radius-full);padding:2px 6px;font-size:11px}.menu-item-row-actions{border-left:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:4px;padding:0 10px;display:flex}.status-badge{border-radius:var(--radius-full);padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.status-badge-tried{background:var(--color-success-light);color:var(--color-success)}.status-badge-wishlist{background:var(--color-primary-light);color:var(--color-primary)}.status-toggle-btn{border-radius:var(--radius-full);border:2px solid var(--color-border);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;font-size:14px;transition:border-color .15s,color .15s;display:flex}.status-toggle-btn.tried{border-color:var(--color-success);color:var(--color-success)}.star-rating{gap:1px;display:flex}.star{cursor:pointer;color:var(--color-border);background:0 0;border:none;padding:0;line-height:1;transition:color .1s}.star.filled{color:#f59e0b}.star:disabled{cursor:default}.favorite-toggle{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:2px;line-height:1;transition:color .1s}.favorite-toggle.active{color:#ef4444}.item-detail-header{border-bottom:1px solid var(--color-border);margin-bottom:20px;padding-bottom:16px}.item-detail-name{margin-bottom:6px;font-size:22px;font-weight:700}.item-detail-meta{align-items:center;gap:8px;margin-bottom:6px;display:flex}.item-price{color:var(--color-text-muted);font-size:14px}.item-description{color:var(--color-text-muted);font-size:14px;line-height:1.5}.detail-section{margin-bottom:24px}.detail-section-title{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;font-size:13px;font-weight:700}.my-status-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;gap:14px;padding:16px;display:flex}.my-status-row{justify-content:space-between;align-items:center;display:flex}.status-pill-btn{cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;display:flex}.status-pill-hint{color:var(--color-text-muted);font-size:11px}.my-rating-row{justify-content:space-between;align-items:center;display:flex}.rating-label{color:var(--color-text-muted);font-size:14px}.family-list{flex-direction:column;gap:10px;display:flex}.family-row{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:center;gap:10px;padding:10px 12px;display:flex}.family-row-info{flex-direction:column;flex:1;gap:3px;display:flex}.family-member-name{font-size:14px;font-weight:500}.you-label{color:var(--color-text-muted);font-weight:400}.not-tried-label{color:var(--color-text-muted);font-size:12px}.attendee-list{flex-direction:column;gap:8px;display:flex}.attendee-item{cursor:pointer;align-items:center;gap:10px;font-size:14px;font-weight:500;display:flex}.attendee-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer}.order-entry{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;gap:12px;margin-bottom:10px;padding:14px;display:flex}.order-entry-header{justify-content:space-between;align-items:center;display:flex}.order-entry-num{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:700}.btn-remove{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:14px}.photo-upload-label{border:1px dashed var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text-muted);align-items:center;gap:8px;padding:8px 14px;font-size:14px;transition:border-color .15s;display:inline-flex}.photo-upload-label:hover{border-color:var(--color-primary);color:var(--color-primary)}.photo-input-hidden{display:none}.photo-preview-wrap{display:inline-block;position:relative}.photo-preview{object-fit:cover;border-radius:var(--radius-md);width:100%;max-height:200px}.photo-remove-btn{color:#fff;border-radius:var(--radius-full);cursor:pointer;background:#0009;border:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;display:flex;position:absolute;top:6px;right:6px}.visit-detail-header{border-bottom:1px solid var(--color-border);margin-bottom:20px;padding-bottom:16px}.visit-detail-restaurant{font-size:22px;font-weight:700}.visit-detail-date{color:var(--color-text-muted);margin-top:4px;font-size:14px}.visit-detail-attendees{color:var(--color-text-muted);margin-top:4px;font-size:13px}.visit-detail-notes{color:var(--color-text-muted);margin-top:8px;font-size:14px;font-style:italic}.order-list{flex-direction:column;gap:10px;display:flex}.order-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.order-card-body{padding:12px}.order-item-name{font-size:15px;font-weight:600}.order-notes{color:var(--color-text-muted);margin-top:4px;font-size:13px}.order-photo{object-fit:cover;width:100%;max-height:220px;display:block}.visit-card-list{flex-direction:column;gap:6px;display:flex}.visit-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px;transition:background .1s;display:flex}.visit-card:active{background:var(--color-bg-secondary)}.visit-card-date{flex:1;font-size:14px;font-weight:500}.visit-card-attendees{color:var(--color-text-muted);font-size:13px}.dashboard-page{flex-direction:column;gap:24px;display:flex}.dashboard-greeting{padding-bottom:4px}.dashboard-greeting h2{font-size:22px;font-weight:700}.stats-strip{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;align-items:center;padding:14px 0;display:flex}.stats-strip-item{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.stats-strip-value{color:var(--color-primary);font-size:22px;font-weight:700}.stats-strip-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.stats-strip-divider{background:var(--color-border);width:1px;height:32px}.family-stats-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.family-stat-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;gap:4px;padding:14px;display:flex}.family-stat-card-wide{grid-column:1/-1}.family-stat-value{color:var(--color-text);font-size:22px;font-weight:700}.family-stat-restaurant{font-size:16px;font-weight:600}.family-stat-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.dashboard-section{flex-direction:column;gap:12px;display:flex}.dashboard-section-header{justify-content:space-between;align-items:center;display:flex}.link-btn{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:600}.dashboard-empty{background:var(--color-bg-secondary);border-radius:var(--radius-md);color:var(--color-text-muted);text-align:center;padding:16px;font-size:14px}.fav-restaurant-list{flex-direction:column;gap:8px;display:flex}.fav-restaurant-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px;transition:background .1s;display:flex}.fav-restaurant-card:active{background:var(--color-bg-secondary)}.fav-restaurant-icon{border-radius:var(--radius-md);background:var(--color-primary-light);width:44px;height:44px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:20px;font-weight:700;display:flex}.fav-restaurant-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.fav-restaurant-name{font-size:15px;font-weight:600}.fav-restaurant-meta{color:var(--color-text-muted);font-size:12px}.fav-count{color:#ef4444;flex-shrink:0;align-items:center;gap:3px;font-size:13px;font-weight:600;display:flex}.recent-visit-list{flex-direction:column;gap:8px;display:flex}.recent-visit-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px;transition:background .1s;display:flex}.recent-visit-card:active{background:var(--color-bg-secondary)}.recent-visit-icon{border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);width:44px;height:44px;color:var(--color-text-muted);flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex}.recent-visit-info{flex-direction:column;flex:1;gap:2px;display:flex}.recent-visit-name{font-size:14px;font-weight:600}.recent-visit-date{color:var(--color-text-muted);font-size:12px}.profile-stats{gap:10px;width:100%;display:flex}.stat-card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;flex:1;align-items:center;gap:4px;padding:14px 8px;display:flex}.stat-value{color:var(--color-primary);font-size:24px;font-weight:700}.stat-label{color:var(--color-text-muted);text-align:center;font-size:11px}.profile-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;padding:16px}.pref-row{justify-content:space-between;align-items:center;display:flex}.pref-label{font-size:15px;font-weight:500}.toggle-btn{border-radius:var(--radius-full);background:var(--color-border);cursor:pointer;border:none;flex-shrink:0;width:48px;height:28px;padding:0;transition:background .2s;position:relative}.toggle-btn.on{background:var(--color-primary)}.toggle-thumb{border-radius:var(--radius-full);width:22px;height:22px;box-shadow:var(--shadow-sm);background:#fff;transition:transform .2s;display:block;position:absolute;top:3px;left:3px}.toggle-btn.on .toggle-thumb{transform:translate(20px)}.dialog-overlay{z-index:200;background:#00000080;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{background:var(--color-bg-card);width:100%;max-width:340px;box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;gap:12px;padding:24px;display:flex}.dialog-title{color:var(--color-text);font-size:17px;font-weight:700}.dialog-message{color:var(--color-text-muted);font-size:14px;line-height:1.5}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}
