:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,sans-serif;color:#27231f;background:#fffdf9;font-synthesis:none;text-rendering:optimizeLegibility;--paper: #fffdf9;--surface: #ffffff;--ink: #27231f;--muted: #746e67;--line: #e9e2d9;--soft: #f7f3ed;--tomato: #e95c4d;--tomato-dark: #c9453a;--leaf: #54885a;--leaf-soft: #eef5ed;--sun: #f2c452;--blue: #4e7f9b;--danger: #b83f3f}*{box-sizing:border-box;letter-spacing:0}html{min-width:320px;min-height:100%;background:var(--paper);-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100dvh;background:var(--paper);color:var(--ink);overscroll-behavior-y:none}body.sheet-open{overflow:hidden}button,input,select{font:inherit}button{color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(78,127,155,.28);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.58}.app-shell{width:min(100%,560px);min-height:100dvh;margin:0 auto;background:var(--paper)}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:calc(18px + env(safe-area-inset-top)) 20px 13px}.app-header h1,.page-heading h2{margin:2px 0 0;font-size:24px;line-height:1.25;font-weight:780}.eyebrow{margin:0;color:var(--tomato-dark);font-size:10px;line-height:1.4;font-weight:800}.save-indicator{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;color:var(--muted);background:var(--surface)}.save-indicator.saved{color:var(--leaf)}.save-indicator.offline{color:var(--tomato-dark)}.main-content{padding:0 16px calc(96px + env(safe-area-inset-bottom))}.location-select-wrap{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) 18px;align-items:center;gap:8px;width:100%;min-height:46px;margin-bottom:14px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--blue)}.location-select-wrap select{width:100%;min-width:0;height:44px;border:0;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--ink);font-size:15px;font-weight:650;text-overflow:ellipsis}.segmented{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;min-height:50px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--soft)}.segmented.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.segmented button{min-width:0;min-height:44px;padding:7px 8px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:14px;font-weight:680;white-space:nowrap}.segmented button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #27231f1a}.mode-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:10px;margin-top:10px}.mode-row:has(.segmented:last-child){grid-template-columns:minmax(0,1fr)}.icon-button,.add-button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--blue)}.result-stage{min-height:300px;margin-top:14px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.result-stage.has-result{min-height:0}.result-image-wrap{position:relative;width:100%;aspect-ratio:4 / 3;overflow:hidden;background:var(--soft)}.result-image{display:block;width:100%;height:100%;object-fit:cover}.source-badge{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:6px;background:#fffffff0;color:var(--ink);font-size:12px;font-weight:750;box-shadow:0 2px 8px #27231f1f}.source-badge.nearby{color:#356b4a}.result-copy{padding:18px}.restaurant-name{display:flex;align-items:center;gap:6px;margin:0 0 6px;color:var(--muted);font-size:14px;font-weight:650}.result-copy h2{margin:0;overflow-wrap:anywhere;font-size:27px;line-height:1.25;font-weight:800}.result-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;color:var(--muted);font-size:13px}.inferred-note{margin:9px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.score{display:inline-flex;align-items:center;gap:6px;color:var(--tomato)}.score .hearts{display:inline-flex;align-items:center;gap:1px}.score b{color:var(--ink);font-size:13px}.score.small{gap:4px}.score.small b{font-size:11px}.idle-state{display:grid;min-height:300px;grid-template-rows:minmax(0,224px) auto;align-items:stretch}.idle-state img{display:block;width:100%;height:224px;object-fit:cover}.idle-state div{display:flex;align-items:center;justify-content:center;gap:8px;min-height:76px;padding:14px;color:var(--tomato-dark)}.idle-state p{margin:0;color:var(--muted);font-size:14px;font-weight:650;text-align:center}.draw-button,.primary-button,.secondary-button,.locate-button,.text-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:8px;font-weight:750}.draw-button{width:100%;min-height:54px;margin-top:12px;border:1px solid var(--tomato-dark);background:var(--tomato);color:#fff;font-size:17px;box-shadow:0 5px 0 var(--tomato-dark)}.draw-button:active{transform:translateY(3px);box-shadow:0 2px 0 var(--tomato-dark)}.decision-actions{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:10px;margin-top:12px}.primary-button{border:1px solid var(--tomato-dark);background:var(--tomato);color:#fff}.secondary-button{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.text-button{width:100%;margin-top:8px;border:0;background:transparent;color:var(--blue);font-size:14px}.recent-section{margin-top:28px;padding-top:18px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.section-heading h3{margin:0;font-size:16px}.section-heading>span{color:var(--muted);font-size:12px}.recent-list{margin-top:8px}.recent-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:42px;border-bottom:1px solid var(--line)}.recent-row span{overflow:hidden;font-size:14px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.recent-row small{max-width:140px;overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.page-heading{min-height:52px;margin:4px 2px 15px;align-items:center}.page-heading h2{font-size:22px}.add-button{border-color:var(--tomato);background:var(--tomato);color:#fff}.library-modes{margin-bottom:12px}.meal-list,.location-list{display:grid;gap:8px}.meal-row{display:grid;grid-template-columns:72px minmax(0,1fr) 22px;align-items:center;gap:12px;width:100%;min-height:84px;padding:6px 12px 6px 6px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left}.meal-row>img{width:72px;height:72px;border-radius:6px;object-fit:cover}.meal-row-copy{display:grid;min-width:0;gap:3px}.meal-row-copy strong,.meal-row-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meal-row-copy strong{font-size:15px}.meal-row-copy small{color:var(--muted);font-size:12px}.empty-state{display:grid;place-items:center;min-height:260px;padding:28px;color:var(--muted);text-align:center}.empty-state p{margin:12px 0 18px}.empty-state .secondary-button{min-width:148px;padding:0 18px}.location-row{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.location-row.selected{border-color:#54885aa6;box-shadow:inset 3px 0 0 var(--leaf)}.location-main{display:grid;grid-template-columns:40px minmax(0,1fr) 22px;align-items:center;gap:10px;width:100%;min-height:70px;padding:10px 12px;border:0;background:transparent;text-align:left}.location-main>span:nth-child(2){display:grid;min-width:0;gap:3px}.location-main strong,.location-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-main small{color:var(--muted)}.location-main>svg{color:var(--leaf)}.location-pin{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--leaf-soft);color:var(--leaf)}.row-tools{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}.row-tools button{display:grid;place-items:center;min-height:44px;border:0;background:var(--soft);color:var(--muted)}.row-tools button+button{border-left:1px solid var(--line);color:var(--danger)}.bottom-nav{position:fixed;z-index:20;right:0;bottom:0;left:50%;display:grid;grid-template-columns:repeat(3,1fr);width:min(100%,560px);min-height:calc(66px + env(safe-area-inset-bottom));padding:7px 12px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fffdf9f5;transform:translate(-50%);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.bottom-nav button{display:grid;place-items:center;align-content:center;gap:3px;min-width:0;min-height:50px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:11px;font-weight:700}.bottom-nav button.active{color:var(--tomato-dark)}.sheet-backdrop{position:fixed;z-index:50;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;justify-content:center;padding-top:env(safe-area-inset-top);background:#27231f6b}.bottom-sheet{display:grid;grid-template-rows:auto auto minmax(0,1fr);width:min(100%,560px);max-height:92dvh;overflow:hidden;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;background:var(--paper);box-shadow:0 -12px 34px #27231f2e;animation:sheet-in .18s ease-out}.sheet-handle{width:42px;height:4px;margin:8px auto 2px;border-radius:2px;background:#cbc3ba}.bottom-sheet>header{display:flex;align-items:center;justify-content:space-between;min-height:50px;padding:4px 16px 8px 20px;border-bottom:1px solid var(--line)}.bottom-sheet>header h2{margin:0;font-size:19px}.bottom-sheet>header button{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--soft)}.sheet-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:env(safe-area-inset-bottom)}.editor-form{display:grid;gap:16px;padding:16px}.image-picker{position:relative;display:block;width:100%;aspect-ratio:16 / 9;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--soft);cursor:pointer}.image-picker img{display:block;width:100%;height:100%;object-fit:cover}.image-picker>span{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 10px;border-radius:6px;background:#fffffff0;color:var(--ink);font-size:13px;font-weight:720}.image-picker input{position:absolute;width:1px;height:1px;opacity:0}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field{display:grid;gap:7px;min-width:0;color:var(--ink);font-size:13px;font-weight:700}.field input,.field select,.search-row input{width:100%;min-width:0;height:46px;padding:0 12px;border:1px solid #dcd4ca;border-radius:8px;background:var(--surface);color:var(--ink);font-size:16px;font-weight:500}.field input::placeholder,.search-row input::placeholder{color:#aaa199}.fieldset{min-width:0;margin:0;padding:0;border:0}.fieldset legend,.preference-field b{margin-bottom:7px;font-size:13px;font-weight:700}.check-segments{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.check-segments button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:43px;padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted)}.check-segments button.active{border-color:var(--leaf);background:var(--leaf-soft);color:#356b3f;font-weight:750}.preference-field{display:grid;gap:9px}.preference-field>span{display:flex;align-items:center;justify-content:space-between;gap:12px}.preference-field input{width:100%;height:30px;accent-color:var(--tomato)}.sheet-actions{display:flex;align-items:center;gap:10px;padding-top:4px}.save-button{flex:1;min-height:50px}.danger-button{flex:0 0 50px;width:50px;padding:0;border:1px solid #edcccc;background:#fff7f7;color:var(--danger)}.locate-button{width:100%;border:1px solid #45734b;background:var(--leaf);color:#fff}.divider{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;color:var(--muted);font-size:12px}.divider:before,.divider:after{height:1px;background:var(--line);content:""}.search-row{display:grid;grid-template-columns:minmax(0,1fr) 46px;gap:8px}.search-row button{display:grid;place-items:center;width:46px;height:46px;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--blue)}.search-results{display:grid;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.search-results button{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:8px;min-height:54px;padding:8px 10px;border:0;background:transparent;color:var(--blue);text-align:left}.search-results button+button{border-top:1px solid var(--line)}.search-results span{display:grid;min-width:0;gap:2px}.search-results strong,.search-results small{overflow:hidden;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}.search-results small{color:var(--muted)}.coordinate-status{display:flex;align-items:center;gap:7px;margin:0;color:var(--muted);font-size:12px}.coordinate-status.ready{color:var(--leaf)}.toast{position:fixed;z-index:80;bottom:calc(82px + env(safe-area-inset-bottom));left:50%;max-width:calc(100% - 36px);padding:11px 16px;border-radius:8px;background:#27231f;color:#fff;font-size:14px;font-weight:650;text-align:center;transform:translate(-50%);box-shadow:0 8px 24px #27231f33;animation:toast-in .15s ease-out}.spin{animation:spin .8s linear infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes toast-in{0%{transform:translate(-50%,8px);opacity:0}to{transform:translate(-50%);opacity:1}}@media(min-width:600px){body{background:#f2f5f1}.app-shell{min-height:100dvh;border-right:1px solid var(--line);border-left:1px solid var(--line);box-shadow:0 0 35px #27231f12}}@media(max-width:380px){.app-header{padding-right:16px;padding-left:16px}.app-header h1{font-size:21px}.main-content{padding-right:12px;padding-left:12px}.field-grid{grid-template-columns:1fr}.result-copy h2{font-size:24px}.recent-row small{max-width:105px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
