:root{color:#35231d;background:#fff9f0;font-family:PingFang SC,Noto Sans CJK SC,system-ui,sans-serif;font-synthesis:none;--paper: #fff9f0;--surface: #fffdf8;--ink: #35231d;--muted: #78685e;--line: #eadccd;--tomato: #c64735;--tomato-dark: #aa3628;--herb: #55794a;--radius: 18px}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--paper)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{min-height:100vh}.app-content{padding-bottom:86px}.page{width:min(100%,980px);margin:0 auto;padding:28px 20px 40px}.page-header{display:grid;gap:18px;margin-bottom:20px}h1,h2,p{margin-top:0}.page-header h1{margin-bottom:0;font-family:Songti SC,STSong,serif;font-size:clamp(2.35rem,10vw,4.2rem);line-height:.98;letter-spacing:-.05em}.date-picker{display:block}.date-picker input{width:100%;min-height:56px;padding:0 16px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:15px;font-size:1.05rem}.search-field{display:block;margin-bottom:16px}.search-field input{width:100%;min-height:54px;padding:0 18px 0 46px;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%2335231d' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") no-repeat 17px center;font-size:1rem}.category-row{display:flex;gap:9px;overflow-x:auto;padding:0 0 18px;scrollbar-width:none}.category-row::-webkit-scrollbar{display:none}.category-row button,.mode-switch button{min-height:44px;white-space:nowrap;padding:0 18px;border:0;border-radius:999px;color:var(--ink);background:#f4eadf}.category-row button.active,.mode-switch button.active{color:#fff;background:var(--herb)}.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.recipe-card{min-width:0;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 28px #462a1d0f}.recipe-card img{display:block;width:100%;aspect-ratio:1 / .9;object-fit:cover}.recipe-card__body{padding:14px}.recipe-card__category{margin-bottom:5px;color:var(--herb);font-size:.75rem;font-weight:700}.recipe-card h2{margin-bottom:7px;font-family:Songti SC,STSong,serif;font-size:clamp(1.12rem,4.8vw,1.45rem);line-height:1.15}.recipe-card__body>p:not(.recipe-card__category){min-height:3.1em;margin-bottom:12px;color:var(--muted);font-size:.84rem;line-height:1.55}.button{min-height:46px;padding:0 18px;border:0;border-radius:13px;color:#fff;background:var(--tomato);font-weight:700}.button:hover{background:var(--tomato-dark)}.button:disabled{opacity:.55;cursor:wait}.button--wide{width:100%}.button--selected{background:var(--herb)}.bottom-nav{position:fixed;z-index:10;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(4,1fr);padding:8px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:#fffdf8f5;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bottom-nav a{display:grid;place-items:center;gap:2px;min-height:58px;color:#78685e;font-size:.77rem;font-weight:650}.bottom-nav svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.bottom-nav a.active{color:var(--tomato)}.welcome{min-height:100vh;display:grid;background:var(--paper)}.welcome__photo{min-height:32vh;background:linear-gradient(to bottom,transparent 70%,var(--paper)),url(/recipe-images/welcome.webp) center / cover}.welcome__panel{width:min(100%,520px);margin:-30px auto 0;padding:28px 22px 40px;border-radius:28px 28px 0 0;background:var(--paper)}.welcome h1{margin-bottom:10px;font-family:Songti SC,STSong,serif;font-size:3rem;line-height:1;letter-spacing:-.05em}.welcome__panel>p{color:var(--muted);line-height:1.65}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:24px 0;padding:5px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}.mode-switch button{padding:0 12px;background:transparent}.welcome form{display:grid;gap:16px}.welcome form label{display:grid;gap:7px;font-weight:700}.welcome form input{width:100%;min-height:50px;padding:0 14px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--surface)}.form-error{margin:0;padding:11px 13px;border-radius:10px;color:#912b20;background:#fbe5df;line-height:1.45}.empty-state,.loading{padding:36px 0;color:var(--muted);text-align:center}.menu-list,.shopping-list{display:grid;gap:12px}.menu-card,.shopping-item,.family-code,.family-page section{padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.menu-card__main{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:14px;width:100%;padding:0;border:0;color:var(--ink);background:transparent;text-align:left}.menu-card__main img{width:64px;height:64px;border-radius:12px;object-fit:cover}.menu-card p{margin:10px 0 0;color:var(--muted)}.text-button{min-height:44px;padding:0;border:0;color:var(--tomato);background:transparent;font-weight:700}.shopping-item{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:10px;cursor:pointer}.shopping-item input{width:22px;height:22px;accent-color:var(--herb)}.shopping-item span{display:grid;gap:4px}.shopping-item small,.family-code small,.member-list small{color:var(--muted)}.shopping-item.checked strong{color:var(--muted);text-decoration:line-through}.family-page header{margin-bottom:22px}.family-page h1{font-family:Songti SC,STSong,serif;font-size:clamp(2.35rem,10vw,4.2rem)}.eyebrow{margin-bottom:6px;color:var(--herb);font-weight:800}.family-code{display:grid;gap:7px;margin-bottom:18px}.family-code strong{font-size:2rem;letter-spacing:.12em}.member-list{display:grid;gap:12px;padding:0;list-style:none}.member-list li{display:flex;justify-content:space-between}.family-switcher{display:grid;gap:14px;margin-bottom:18px}.family-switcher h2{margin-bottom:0}.family-switcher__list{display:grid;gap:8px}.family-switcher__list>div,.family-switcher__list>button{display:flex;justify-content:space-between;align-items:center;min-height:52px;padding:0 12px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:#f7efe5;text-align:left}.family-switcher__list>button{width:100%;cursor:pointer}.family-switcher__list small{color:var(--muted)}.danger-button{width:100%;min-height:48px;margin-top:18px;border:1px solid #d7a69d;border-radius:13px;color:#9f3024;background:transparent;font-weight:700}.danger-button:disabled{opacity:.55}.recipe-detail{min-height:100vh;background:var(--paper)}.detail-header{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;min-height:68px;padding:4px 12px}.detail-header button{width:44px;height:44px;border:0;color:var(--ink);background:transparent;font-size:2.5rem;line-height:1}.detail-header h1{margin:0;font-family:Songti SC,STSong,serif;font-size:2rem;text-align:center}.detail-cover{display:block;width:100%;max-height:56vh;aspect-ratio:4 / 3;object-fit:cover}.detail-content{width:min(100%,760px);margin:0 auto;padding:22px 20px 42px}.detail-description{font-family:Songti SC,STSong,serif;font-size:1.35rem}.detail-action{display:grid;grid-template-columns:1.35fr 1fr;gap:12px;margin:20px 0 30px}.detail-action .button{min-height:56px}.detail-content section{padding:22px 0;border-top:1px dashed #e3cdb9}.detail-content section h2{position:relative;margin-bottom:16px;padding-left:17px;font-family:Songti SC,STSong,serif;font-size:1.65rem}.detail-content section h2:before{position:absolute;top:.16em;bottom:.16em;left:0;width:5px;border-radius:999px;background:var(--tomato);content:""}.ingredient-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 24px;padding:0;list-style:none}.ingredient-list li{display:flex;justify-content:space-between;gap:12px}.detail-content ol,.detail-content section>ul:not(.ingredient-list){display:grid;gap:10px;padding-left:24px;line-height:1.65}@media(min-width:720px){.page-header{grid-template-columns:1fr 240px;align-items:end}.recipe-grid{grid-template-columns:repeat(3,1fr);gap:20px}.welcome{grid-template-columns:1.1fr 1fr;align-items:center}.welcome__photo{min-height:100vh}.welcome__panel{margin:0 auto;border-radius:28px}.bottom-nav{right:50%;left:50%;width:min(520px,100%);transform:translate(-50%);border:1px solid var(--line);border-bottom:0;border-radius:20px 20px 0 0}}@media(max-width:370px){.recipe-grid,.ingredient-list,.detail-action{grid-template-columns:1fr}}@media(prefers-reduced-motion:no-preference){.recipe-card,.button{transition:transform .18s ease,background-color .18s ease}.recipe-card:has(a:focus-visible),.recipe-card:hover{transform:translateY(-2px)}}
