@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans','Noto Sans TC',sans-serif;color:#27332f;background:#fff8ef;font-synthesis:none;--ink:#27332f;--muted:#879089;--tomato:#e76f51;--cream:#fff8ef;--sage:#a8b89a;--line:#f0e7db;--shadow:0 12px 36px #5a482110}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 86% 0%,#ffe8d5 0,transparent 32%),var(--cream)}button,input,select{font:inherit}button{cursor:pointer}.app-shell{max-width:1190px;margin:0 auto;padding:0 34px}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eadfd2}.brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px}.brand-icon{display:grid;place-items:center;background:#f9e4ce;width:35px;height:35px;border-radius:12px;font-size:19px}.icon-button,.dialog-close{border:0;background:#fff;border-radius:12px;width:40px;height:40px;box-shadow:0 3px 12px #392a140f;font-size:17px}.hero{display:flex;align-items:center;justify-content:space-between;padding:30px 4px 25px}.hero h1{font-size:clamp(30px,4vw,43px);letter-spacing:-1.5px;margin:5px 0}.hero p:not(.eyebrow){margin:0;color:#738079}.hero-doodle{font-size:57px;transform:rotate(-12deg);filter:drop-shadow(0 8px 9px #d9995d38)}.eyebrow{font-size:10px;letter-spacing:1.4px;font-weight:800;color:#ce7958;margin:0 0 6px}.layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,.85fr);gap:22px;align-items:start}.main-column,.side-column{display:grid;gap:18px}.card{background:#fff;border:1px solid #f1e9df;border-radius:20px;padding:22px;box-shadow:var(--shadow)}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2{font-size:19px;margin:0;letter-spacing:-.3px}.section-heading.compact{margin-bottom:17px}.count-pill{background:#f7f5ef;color:#778278;border-radius:30px;padding:6px 11px;font-size:11px}.wheel-card{text-align:center;padding:22px 26px 20px}.wheel-card>.section-heading{text-align:left}.wheel-wrap{position:relative;width:min(100%,352px);aspect-ratio:1;margin:13px auto 12px}.wheel-wrap canvas{width:100%;height:100%;display:block;filter:drop-shadow(0 9px 12px #5740211b)}.wheel-pointer{position:absolute;z-index:2;left:50%;top:-7px;transform:translateX(-50%);font-size:24px;color:#d35439;text-shadow:0 2px white}.wheel-center{pointer-events:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:68px;height:68px;background:#fff;border:5px solid #fff3e3;border-radius:50%;box-shadow:0 2px 12px #432e171c;display:grid;place-content:center;color:#9b6c44;font-size:11px;font-weight:800;line-height:1.5}.result-box{min-height:49px;display:flex;align-items:center;justify-content:center;gap:9px;margin:7px auto 14px;max-width:470px;padding:10px 12px;background:#fff8ef;border:1px dashed #f1d8be;border-radius:13px;font-weight:700;font-size:14px}.result-box.has-result{background:#fff3e9;border-style:solid;color:#bd573c;font-size:17px}.result-emoji{font-size:18px}.wheel-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.button{border:0;border-radius:12px;padding:11px 16px;font-size:12px;font-weight:800;transition:transform .16s,filter .16s}.button:hover:not(:disabled){transform:translateY(-1px);filter:brightness(.98)}.button:disabled{opacity:.43;cursor:not-allowed}.button-primary{background:var(--tomato);color:#fff;box-shadow:0 5px 12px #e76f5138}.button-secondary{background:#f3eee6;color:#5f675e}.button-quiet{background:transparent;color:#879089}.button-warm{background:#e49d54;color:#fff;width:100%;margin-top:14px}.helper-text{font-size:10px;color:#9a9b92;margin:12px 0 0}.filter-card,.history-card{padding:20px}.check-label{font-size:11px;color:#69766d;display:flex;align-items:center;gap:5px}.check-label input{accent-color:var(--tomato)}.filter-list{display:flex;gap:8px;flex-wrap:wrap}.filter-chip{border:1px solid var(--line);background:#fff;color:#707971;border-radius:30px;padding:8px 12px;font-size:11px;font-weight:600}.filter-chip.active{border-color:#eab397;background:#fff1e7;color:#bd593f}.filter-chip em{font-style:normal;margin-right:4px}.text-button{border:0;background:transparent;color:#b77353;font-weight:700;font-size:11px}.history-list{display:grid;gap:8px}.history-item{display:flex;align-items:center;gap:10px;border-radius:11px;background:#fcfaf6;padding:9px 11px;font-size:12px}.history-item .history-name{font-weight:700;flex:1}.history-date{font-size:10px;color:#99978c}.empty-state{padding:14px;text-align:center;color:#9c9e96;font-size:12px}.menu-card{padding:20px}.small-add{border:0;width:33px;height:33px;border-radius:11px;background:#fff0e5;color:#c5694b;font-size:20px}.search-box{display:flex;align-items:center;gap:8px;background:#faf8f4;border:1px solid #f1ece5;border-radius:11px;padding:0 10px;height:38px;color:#999}.search-box input{border:0;outline:none;background:none;min-width:0;width:100%;font-size:11px;color:var(--ink)}.menu-list{display:grid;gap:4px;margin:11px 0;max-height:260px;overflow:auto}.menu-row{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid #f5f1eb}.dish-icon{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;background:#fff5eb;font-size:17px;flex:none}.dish-info{min-width:0;flex:1}.dish-info strong{font-size:11px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dish-info span{font-size:9px;color:#92958d}.dish-state{border:0;background:transparent;padding:3px;font-size:14px}.edit-dish{border:0;background:transparent;color:#aaa;font-size:15px;padding:3px}.disabled-dish{opacity:.48}.outline-button{width:100%;padding:10px;border:1px solid #eee5d9;background:white;border-radius:10px;color:#80867f;font-size:10px;font-weight:700}.family-card{padding:20px}.family-icon{font-size:23px}.muted{color:#92978f;font-size:11px;margin:-7px 0 15px}.task-select{display:flex;align-items:center;justify-content:space-between;padding:10px 11px;background:#faf8f4;border-radius:10px;font-size:11px;color:#758078}.task-select select{border:0;background:transparent;color:#39483d;font-weight:700;outline:none}.family-result{margin-top:12px;min-height:47px;border-radius:12px;background:#fff8ef;display:grid;place-items:center;color:#aa8058;font-size:13px;font-weight:800}.member-heading{margin-top:17px;display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700}.member-list{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.member-chip{border-radius:20px;padding:6px 9px;background:#f5f1e9;font-size:10px;color:#69736b}.privacy-note{text-align:center;color:#93968d;font-size:10px;margin:0}footer{display:flex;justify-content:space-between;color:#aaa398;font-size:10px;padding:24px 3px 27px}footer span{color:#c39c77}.dialog{border:0;padding:0;border-radius:19px;width:min(420px,calc(100% - 32px));box-shadow:0 24px 80px #22170d40}.dialog::backdrop{background:#27271f66;backdrop-filter:blur(3px)}.dialog form{padding:24px}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-heading h2{margin:0;font-size:20px}.dialog-close{box-shadow:none;background:#f8f5f1;font-size:24px}.dialog label{display:grid;gap:6px;margin:13px 0;color:#68736b;font-size:11px;font-weight:700}.dialog input,.dialog select{width:100%;border:1px solid #e9e5dd;border-radius:9px;padding:10px;background:#fff;font-size:12px;outline-color:#e9ae8d}.dialog-actions{display:flex;justify-content:space-between;align-items:center;margin-top:21px}.danger{color:#cb6555}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#28342e;color:#fff;border-radius:12px;padding:11px 16px;font-size:12px;box-shadow:0 8px 25px #0002;transition:.2s;z-index:5}.toast.visible{opacity:1;transform:translate(-50%,0)}.spinning canvas{animation:wheel-bounce .25s infinite alternate}@keyframes wheel-bounce{to{filter:drop-shadow(0 12px 15px #e76f5140)}}@media(max-width:820px){.layout{grid-template-columns:1fr 300px;gap:14px}.app-shell{padding:0 20px}.wheel-card{padding-inline:16px}.wheel-wrap{width:min(100%,300px)}}@media(max-width:670px){.app-shell{padding:0 14px}.topbar{height:62px}.hero{padding:24px 3px 20px}.hero-doodle{font-size:42px}.layout{grid-template-columns:1fr}.side-column{grid-template-columns:1fr 1fr;align-items:start}.privacy-note{grid-column:1/-1}.menu-list{max-height:230px}.card{border-radius:17px;padding:17px}.wheel-card{padding:18px 13px}.wheel-wrap{width:min(84vw,320px)}footer{display:block;line-height:1.8}footer span{display:block}}@media(max-width:430px){.side-column{grid-template-columns:1fr}.privacy-note{grid-column:auto}.wheel-actions{gap:5px}.button{padding:10px 11px}.wheel-actions .button{font-size:11px}.wheel-actions .button-quiet{padding-inline:7px}.section-heading h2{font-size:17px}}
/* Card draw replaces the former wheel interface. */
.dish-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:min(100%,440px);margin:20px auto 16px;perspective:900px}
.dish-card{height:94px;border:0;border-radius:15px;background:transparent;padding:0;perspective:700px;}
.dish-card-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.dish-card.flipped .dish-card-inner{transform:rotateY(180deg)}
.dish-card-back,.dish-card-front{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;border-radius:15px;box-shadow:0 5px 14px #57402116}
.dish-card-back{color:#fff9ef;font-size:29px;background:repeating-linear-gradient(135deg,#e99570 0 8px,#e58b68 8px 16px);border:3px solid #fff}
.dish-card-back:after{content:"";position:absolute;inset:6px;border:1px solid #fff9ef99;border-radius:10px}
.dish-card-front{transform:rotateY(180deg);flex-direction:column;gap:4px;padding:8px;background:#fff6ec;border:1px solid #f0d9c4;color:#57493d}
.dish-card-front span{font-size:25px}.dish-card-front strong{font-size:11px;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dish-card:not(.flipped):hover{transform:translateY(-3px)}.dish-card.selected .dish-card-front{background:#fff0e5;border:2px solid #e9a17c}
.cards-empty{grid-column:1/-1;padding:40px 12px;background:#faf8f4;border-radius:15px;color:#999;font-size:13px}
@media(max-width:670px){.dish-cards{gap:8px;margin:16px auto 14px}.dish-card{height:clamp(72px,21vw,90px)}}
@media(max-width:430px){.dish-cards{gap:6px}.dish-card{height:72px}.dish-card-front{padding:5px}.dish-card-front span{font-size:21px}.dish-card-front strong{font-size:10px}}
