:root{font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif;color:#242321;background:#efece6;font-synthesis:none;--red: #ed4b31;--red-dark: #d73c24;--green: #47765a;--ink: #242321;--muted: #7c7973;--line: #e9e4dc;--paper: #fbf8f3;--card: #fffefc;--shadow: 0 14px 35px rgb(67 49 32 / 8%)}*{box-sizing:border-box}html{background:#efece6}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.app-shell{width:min(100%,480px);min-height:100vh;margin:0 auto;background:var(--paper);position:relative;box-shadow:0 0 60px #34291c1a}.app-content{min-height:100vh}.page-pad{padding:max(22px,env(safe-area-inset-top)) 20px calc(110px + env(safe-area-inset-bottom))}.eyebrow{margin:0 0 4px;color:var(--red);font-size:10px;font-weight:800;letter-spacing:.16em}.brand-header{display:flex;align-items:center;gap:10px;height:38px}.brand-header strong{font-size:19px;letter-spacing:-.03em}.brand-header>span{margin-left:auto;color:var(--muted);font-size:13px}.brand-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:12px;color:#fff;background:linear-gradient(145deg,#f36645,#df321f);box-shadow:0 8px 18px #ed4b3140}.home-intro{margin:34px 0 20px}.home-intro h1,.simple-header h1{margin:0;font-size:28px;letter-spacing:-.04em;line-height:1.25}.home-intro>p:last-child,.page-lead{margin:9px 0 0;color:var(--muted);font-size:14px}.search-box{width:100%;height:52px;display:flex;align-items:center;gap:10px;padding:0 16px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 8px 28px #3b2d1f0d;color:#9a968f}.search-box input{min-width:0;flex:1;border:0;outline:none;background:transparent;color:var(--ink)}.search-box button{display:grid;place-items:center;border:0;background:transparent;color:#99948d}.meal-notice{margin:14px 0 4px;color:var(--muted);font-size:13px}.filter-row{display:flex;gap:8px;padding:15px 0 4px;overflow-x:auto;scrollbar-width:none}.filter-row::-webkit-scrollbar,.category-scroll::-webkit-scrollbar{display:none}.filter-chip{flex:0 0 auto;display:flex;align-items:center;gap:6px;height:36px;padding:0 13px;border:1px solid #e5dfd7;border-radius:99px;background:#fff;color:#4f4d49;font-size:13px}.filter-chip.active{border-color:transparent;background:var(--red);color:#fff;box-shadow:0 8px 18px #ed4b3133}.filter-chip.selected:not(.active){color:var(--green);border-color:#cbdace;background:#f2f7f3}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:30px 0 15px}.section-heading h2{margin:0;font-size:22px;letter-spacing:-.03em}.section-heading>span{color:var(--muted);font-size:12px}.section-heading.compact{margin-top:24px}.recipe-list{display:grid;gap:13px}.infinite-sentinel{min-height:74px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:12px}.infinite-sentinel .loading-ring{width:20px;height:20px}.browse-end{margin:22px 0 0;color:#aaa49e;text-align:center;font-size:12px}.recipe-card{min-height:150px;display:grid;grid-template-columns:136px 1fr;position:relative;overflow:hidden;border:1px solid #eee8df;border-radius:22px;background:var(--card);box-shadow:var(--shadow)}.recipe-card .food-cover{height:100%;min-height:150px;border-radius:0}.recipe-card__content{min-width:0;display:flex;flex-direction:column;justify-content:space-between;padding:19px 18px 17px}.recipe-card__category{margin:0 0 5px;color:var(--red);font-size:11px;font-weight:700}.recipe-card h3{margin:0;font-size:21px;letter-spacing:-.03em}.recipe-card__desc{display:-webkit-box;margin:7px 0 0;overflow:hidden;color:var(--muted);font-size:12px;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.recipe-card__meta{display:flex;gap:7px;flex-wrap:wrap}.recipe-card__meta span{display:inline-flex;align-items:center;gap:4px;padding:5px 7px;border-radius:8px;background:#f2f7f3;color:var(--green);font-size:11px}.recipe-card__meta span:last-child{background:#fbf5ed;color:#8a6947}.recipe-card__arrow{position:absolute;right:13px;top:15px;color:#aaa59e}.food-cover{--cover-from: #8f2418;--cover-to: #ef7f45;position:relative;height:330px;overflow:hidden;background:linear-gradient(145deg,var(--cover-from),var(--cover-to))}.food-cover__image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.food-cover__glow{position:absolute;width:75%;aspect-ratio:1;top:-25%;right:-20%;border-radius:50%;background:#fff3;filter:blur(2px)}.food-cover__plate{position:absolute;width:72%;aspect-ratio:1;left:14%;top:14%;border:8px solid rgb(255 255 255 / 25%);border-radius:50%;background:#ffffff1f;box-shadow:0 22px 30px #1d0f0833,inset 0 0 0 10px #ffffff12}.food-cover__emoji{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:110px;filter:drop-shadow(0 18px 14px rgb(35 18 8 / 22%));transform:translateY(-2px)}.food-cover__leaf{position:absolute;width:18px;height:8px;border-radius:100% 0;background:#cce6aa;transform:rotate(-24deg);opacity:.8}.food-cover__leaf--one{left:12%;bottom:14%}.food-cover__leaf--two{left:18%;bottom:10%;transform:rotate(26deg)}.food-cover.compact .food-cover__plate{width:90%;left:5%;top:20%;border-width:5px}.food-cover.compact .food-cover__emoji{font-size:64px}.lottery-panel{margin:24px 0 2px;padding:16px;overflow:hidden;border:1px solid #f0ded5;border-radius:26px;background:linear-gradient(180deg,#fffaf4,#fff2e9);box-shadow:var(--shadow)}.lottery-panel__head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:14px}.lottery-panel__head h2{margin:0;font-size:23px;letter-spacing:-.04em}.lottery-panel__head>span{flex:0 0 auto;padding:6px 9px;border-radius:99px;background:#fff;color:var(--red);font-size:12px;font-weight:700}.lottery-window{position:relative;height:182px;margin:0 -16px;overflow:hidden;background:radial-gradient(circle at 50% 12%,rgb(255 255 255 / 88%),transparent 38%),linear-gradient(120deg,#ffe7d9,#fff8f0 46%,#eaf4e9)}.lottery-window:before,.lottery-window:after{content:"";position:absolute;z-index:2;top:0;width:70px;height:100%;pointer-events:none}.lottery-window:before{left:0;background:linear-gradient(90deg,#fff4ec 10%,transparent)}.lottery-window:after{right:0;background:linear-gradient(270deg,#fff4ec 10%,transparent)}.lottery-pointer{position:absolute;z-index:4;left:50%;top:10px;bottom:10px;width:2px;transform:translate(-50%);background:linear-gradient(180deg,transparent,rgb(237 75 49 / 72%) 16%,rgb(237 75 49 / 72%) 84%,transparent)}.lottery-pointer span{position:absolute;left:50%;top:0;width:36px;height:24px;transform:translate(-50%);border-radius:0 0 14px 14px;background:var(--red);box-shadow:0 8px 16px #ed4b3138}.lottery-pointer span:after{content:"";position:absolute;left:50%;bottom:-7px;width:14px;height:14px;transform:translate(-50%) rotate(45deg);border-radius:2px;background:var(--red)}.lottery-track{display:flex;gap:12px;padding:18px 0;will-change:transform}.lottery-card{flex:0 0 176px;overflow:hidden;border:1px solid #f0e5dc;border-radius:20px;background:#fff;box-shadow:0 12px 24px #442f1c17;transform:translateZ(0);transition:box-shadow .2s ease,transform .2s ease}.lottery-card.selected{box-shadow:0 16px 30px #ed4b3142,0 0 0 3px #ed4b312e;transform:translateY(-2px) scale(1.02)}.lottery-card .food-cover{height:84px;min-height:84px;border-radius:0}.lottery-card .food-cover__emoji{font-size:52px}.lottery-card__body{padding:10px 12px 12px}.lottery-card__body p{margin:0 0 3px;color:var(--red);font-size:10px;font-weight:800}.lottery-card__body h3{margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:18px;letter-spacing:-.04em}.lottery-card__body div{display:flex;gap:6px;margin-top:8px}.lottery-card__body span{display:inline-flex;align-items:center;gap:3px;padding:4px 6px;border-radius:8px;background:#f5f6ef;color:#5e715d;font-size:10px}.lottery-result{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-top:13px;padding:12px 13px;border:1px solid #f1d8cf;border-radius:16px;background:#fff;box-shadow:0 8px 18px #442f1c0f}.lottery-result span{display:inline-flex;align-items:center;gap:5px;color:var(--red);font-size:12px;font-weight:800}.lottery-result strong{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:18px}.lottery-result svg:last-child{color:#aaa29a}.lottery-hint{margin:12px 2px 0;color:var(--muted);font-size:12px;line-height:1.55}.lottery-draw-button{width:100%;height:54px;display:flex;align-items:center;justify-content:center;gap:9px;margin-top:14px;border:0;border-radius:17px;color:#fff;background:linear-gradient(100deg,#f15535,#e43a24);font-size:17px;font-weight:800;box-shadow:0 12px 25px #ed4b313d}.lottery-draw-button:disabled{cursor:not-allowed;opacity:.72}.lottery-draw-button .spinning{animation:spin .8s linear infinite}.shuffle-button{width:100%;height:58px;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;border:0;border-radius:18px;color:#fff;background:linear-gradient(100deg,#f15535,#e43a24);font-size:17px;font-weight:700;box-shadow:0 12px 25px #ed4b313d}.bottom-nav{position:fixed;z-index:30;width:min(100%,480px);left:50%;bottom:0;transform:translate(-50%);display:grid;grid-template-columns:repeat(4,1fr);padding:10px 12px calc(9px + env(safe-area-inset-bottom));border-top:1px solid #ebe6df;background:#fffefcf0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.bottom-nav__item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:5px;color:#8b8883;font-size:11px}.bottom-nav__item.router-link-exact-active{color:var(--red);font-weight:700}.page-state{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9c9790;text-align:center}.page-state h3{margin:12px 0 4px;color:#4f4b46}.page-state p{margin:0 0 14px;font-size:13px}.loading-ring{width:30px;height:30px;border:3px solid #efd9d3;border-top-color:var(--red);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.text-button{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--red)}.text-button.danger{color:#b64c3e}.recipe-card__dislike{position:absolute;z-index:2;right:43px;top:12px;width:29px;height:29px;display:grid;place-items:center;border:1px solid #eee6dd;border-radius:9px;background:#fff;color:#a79f96}.recipe-card__dislike:hover{color:var(--red);border-color:#f1c9be}.saved-section{margin-top:25px}.saved-list,.draw-history-list,.shopping-items{display:grid;gap:10px}.saved-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:15px;background:#fff}.saved-card>a{min-height:92px;display:grid;grid-template-columns:98px 1fr}.saved-card .food-cover{height:92px;min-height:92px}.saved-card .food-cover__emoji{font-size:48px}.saved-card a>div{padding:13px}.saved-card p{margin:0;color:var(--red);font-size:10px;font-weight:700}.saved-card h3{margin:4px 0 6px;font-size:17px}.saved-card span,.saved-card small{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:11px}.saved-card>button{position:absolute;right:10px;top:10px;width:30px;height:30px;display:grid;place-items:center;border:0;border-radius:8px;background:#f8f4f0;color:#9c938a}.draw-history-list a{display:grid;grid-template-columns:55px 1fr auto;gap:10px;align-items:center;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#fff}.draw-history-list b{color:var(--red);font-size:11px}.draw-history-list span{font-weight:700}.draw-history-list small{color:var(--muted)}.shopping-items>button{display:grid;grid-template-columns:27px 1fr auto;align-items:center;gap:10px;padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff;text-align:left}.shopping-items>button>span{width:22px;height:22px;display:grid;place-items:center;border:1px solid #d8d1c9;border-radius:50%;color:transparent}.shopping-items b,.shopping-items small{display:block}.shopping-items small{margin-top:3px;color:var(--muted);font-size:10px}.shopping-items strong{color:#706a63;font-size:12px}.shopping-items>button.checked{opacity:.55}.shopping-items>button.checked b{text-decoration:line-through}.shopping-items>button.checked>span{border-color:var(--green);background:var(--green);color:#fff}.shopping-back{width:100%;height:50px;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;border-radius:15px;background:#f1f6f0;color:var(--green);font-weight:700}.simple-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px}.round-icon{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;background:#fff;color:#595650}.category-scroll{display:flex;gap:9px;margin:18px -20px 0;padding:0 20px;overflow-x:auto;scrollbar-width:none}.category-pill{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:9px 13px;border:1px solid var(--line);border-radius:13px;background:#fff;color:#625f5a}.category-pill.active{border-color:var(--red);background:#fff0ec;color:var(--red)}.difficulty-row{display:flex;align-items:center;gap:7px;margin-top:15px;color:var(--muted);font-size:12px}.difficulty-row>span{margin-right:4px}.difficulty-row button{padding:6px 10px;border:0;border-radius:8px;background:#f0ece6;color:#65615c;font-size:12px}.difficulty-row button.active{background:var(--green);color:#fff}.detail-page{min-height:100vh;background:var(--paper)}.detail-page>.page-state{min-height:100vh}.detail-hero{position:relative}.detail-actions{position:absolute;inset:max(18px,env(safe-area-inset-top)) 18px auto;display:flex;justify-content:space-between}.detail-actions button{width:42px;height:42px;display:grid;place-items:center;border:0;border-radius:50%;background:#ffffffe5;color:#333;box-shadow:0 8px 20px #28191226}.detail-actions button.active{color:var(--red)}.toast{position:absolute;left:50%;bottom:20px;transform:translate(-50%);padding:8px 13px;border-radius:99px;background:#23211fd9;color:#fff;font-size:12px}.detail-sheet{position:relative;z-index:2;margin-top:-28px;padding:29px 20px 36px;border-radius:28px 28px 0 0;background:var(--paper)}.detail-category{margin:0 0 7px;color:var(--red);font-size:12px;font-weight:700}.detail-sheet>h1{margin:0;font-size:34px;letter-spacing:-.05em}.detail-desc{margin:8px 0 20px;color:var(--muted);line-height:1.6}.detail-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.detail-meta span{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 3px;border-radius:14px;background:#fff;color:var(--muted);font-size:10px;box-shadow:0 7px 18px #42301f0d}.detail-meta svg{color:var(--green)}.detail-meta b{color:#403d38;font-size:14px}.add-shopping{display:flex;align-items:center;justify-content:center;gap:7px;height:43px;margin-top:13px;border:1px solid #dce8de;border-radius:13px;background:#f3f8f3;color:var(--green);font-size:13px;font-weight:700}.detail-section{margin-top:33px}.detail-title{display:flex;align-items:center;gap:12px;margin-bottom:15px}.detail-title>span{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:var(--green);color:#fff;font-weight:800}.detail-title p{margin:0;color:var(--green);font-size:9px;font-weight:800;letter-spacing:.14em}.detail-title h2{margin:1px 0 0;font-size:20px}.ingredient-list{overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff}.ingredient-list button{width:100%;display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:13px 14px;border:0;border-bottom:1px solid #eee9e2;background:transparent;text-align:left}.ingredient-list button:last-child{border-bottom:0}.ingredient-list button.checked{background:#f3f8f4}.ingredient-list button.checked b{color:#8d918d;text-decoration:line-through}.check-circle{width:22px;height:22px;display:grid;place-items:center;border:1.5px solid #ccc6be;border-radius:50%;color:transparent}.checked .check-circle{border-color:var(--green);background:var(--green);color:#fff}.ingredient-list b,.ingredient-list small{display:block}.ingredient-list b{color:#45413d;font-size:14px}.ingredient-list small{margin-top:2px;color:#99948d;font-size:10px}.ingredient-list strong{color:#55514b;font-size:13px}.step-list{display:grid;gap:12px;margin:0;padding:0;list-style:none}.step-list li{display:grid;grid-template-columns:38px 1fr;gap:12px;padding:16px 15px;border:1px solid var(--line);border-radius:17px;background:#fff}.step-index{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#edf5ef;color:var(--green);font-weight:800}.step-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.step-heading h3{margin:0;font-size:16px}.step-heading span{color:var(--red);font-size:10px;white-space:nowrap}.step-list p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.65}.step-timer{display:inline-flex;align-items:center;gap:5px;margin-top:10px;padding:6px 9px;border:0;border-radius:8px;background:#fff0ec;color:var(--red);font-size:11px;font-weight:700}.tips-card{display:flex;gap:12px;margin-top:28px;padding:18px;border-radius:19px;background:linear-gradient(135deg,#e9f3e9,#f5f8ec);color:var(--green)}.tips-card h2{margin:0 0 7px;color:#355f47;font-size:17px}.tips-card p{margin:4px 0;color:#5f7466;font-size:12px;line-height:1.55}.recent-page .page-lead{margin-top:-14px;margin-bottom:25px}.timeline-list{margin-left:6px;border-left:1px solid #ddd6cc}.timeline-item{position:relative;padding:0 0 25px 19px}.timeline-dot{position:absolute;width:9px;height:9px;left:-5px;top:4px;border:2px solid var(--paper);border-radius:50%;background:var(--red);box-shadow:0 0 0 1px #f0a799}.timeline-item time{display:block;margin-bottom:8px;color:#8a857e;font-size:11px}.recent-card{height:104px;display:grid;grid-template-columns:105px 1fr;overflow:hidden;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:var(--shadow)}.recent-card .food-cover{height:104px;border-radius:0}.recent-card>div:last-child{padding:13px}.recent-card p{margin:0;color:var(--red);font-size:10px}.recent-card h3{margin:3px 0 9px;font-size:18px}.recent-card span{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11px}.remove-recent{position:absolute;right:10px;top:29px;width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:50%;background:#fff6f3;color:#c45e4d}@media(max-width:380px){.page-pad{padding-left:15px;padding-right:15px}.recipe-card{grid-template-columns:118px 1fr}.recipe-card__content{padding-left:14px;padding-right:14px}.detail-meta{gap:4px}}
