:root{
  --bg:#fff8ef;--panel:#fff;--text:#292521;--muted:#7f756d;--line:#eadfd3;
  --primary:#ff7548;--primary-dark:#e8592d;--soft:#fff0e6;--danger:#d64a43;
  --shadow:0 18px 48px rgba(93,63,38,.12);--radius:24px;--safe-bottom:env(safe-area-inset-bottom,0px)
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--text);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;background:
radial-gradient(circle at 8% 4%,rgba(255,190,113,.23),transparent 25%),
radial-gradient(circle at 96% 12%,rgba(255,116,91,.15),transparent 23%),
linear-gradient(180deg,#fffaf4,#fff5e9)}
button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.app-shell{width:min(1120px,100%);margin:auto;padding:20px 18px calc(40px + var(--safe-bottom))}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.brand{display:flex;align-items:center;gap:12px}.brand-icon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;font-size:25px;background:linear-gradient(135deg,#ffab4d,#ff6d52);box-shadow:0 10px 24px rgba(255,117,72,.25)}
.brand h1{font-size:23px;line-height:1.1;margin:0}.brand p{font-size:13px;color:var(--muted);margin:4px 0 0}
.panel{background:rgba(255,255,255,.94);border:1px solid rgba(234,223,211,.95);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(10px)}
.location-card{padding:20px}.location-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.location-copy{min-width:0}.location-copy strong{display:block;font-size:18px;margin:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.location-copy small{display:block;color:var(--muted);line-height:1.45}
.eyebrow{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:#bd5b33}
button{border:0}.primary-button,.secondary-button,.text-button,.icon-button,.spin-button,.stage-button{border-radius:14px;font-weight:800;transition:.18s ease}.primary-button{background:linear-gradient(135deg,#ff8751,#ff694a);color:#fff;padding:12px 17px;box-shadow:0 9px 20px rgba(255,105,74,.25)}.primary-button:hover,.spin-button:hover{transform:translateY(-1px)}.primary-button:disabled,.spin-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.secondary-button{background:#fff;color:var(--text);border:1px solid var(--line);padding:11px 15px}.text-button{background:transparent;color:#b24e28;padding:9px}.compact{padding:10px 13px}.full{width:100%}.icon-button{width:44px;height:44px;background:#fff;border:1px solid var(--line)}
.control-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-top:18px}.control-grid label,.modal label{display:grid;gap:7px;font-size:12px;font-weight:800;color:#655c55}.control-grid select,.modal input{width:100%;border:1px solid var(--line);border-radius:13px;background:#fff;padding:11px 12px;color:var(--text);outline:none}.control-grid select:focus,.modal input:focus{border-color:#ff966c;box-shadow:0 0 0 4px rgba(255,117,72,.1)}
.action-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}.privacy-note{margin-top:12px;padding:10px 12px;background:#fff8ef;border-radius:13px;color:var(--muted);font-size:12px;line-height:1.5}
.status-card{display:flex;align-items:center;gap:14px;margin-top:16px;padding:16px 18px}.status-card p{margin:4px 0 0;color:var(--muted);font-size:13px}.spinner{width:25px;height:25px;border:3px solid #f1d8c8;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;flex:none}.spinner.done{animation:none;border-color:#75be8e;position:relative}.spinner.done:after{content:"✓";position:absolute;inset:-4px;display:grid;place-items:center;color:#2e9451;font-weight:900}.spinner.error{animation:none;border-color:#e78a84;position:relative}.spinner.error:after{content:"!";position:absolute;inset:-4px;display:grid;place-items:center;color:var(--danger);font-weight:900}@keyframes spin{to{transform:rotate(360deg)}}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}.metric{padding:15px;text-align:center}.metric strong{display:block;font-size:24px}.metric span{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.wheel-panel{padding:20px;margin-top:16px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.section-heading h2{font-size:20px;margin:4px 0 0}.section-heading p{font-size:13px;color:var(--muted);margin:5px 0 0}.stage-switch{display:flex;background:#f7eee6;border-radius:13px;padding:4px;flex:none}.stage-button{padding:9px 12px;background:transparent;color:#786d64}.stage-button.active{background:#fff;color:#c95428;box-shadow:0 4px 12px rgba(79,55,34,.1)}.stage-button:disabled{opacity:.45;cursor:not-allowed}
.category-strip{display:flex;gap:8px;overflow:auto;padding:13px 1px 5px;scrollbar-width:none}.category-strip::-webkit-scrollbar{display:none}.category-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 11px;white-space:nowrap;font-size:12px;font-weight:800;color:#665d55}.category-chip.active{background:#2d2925;color:#fff;border-color:#2d2925}
.wheel-layout{text-align:center}.wheel-wrap{position:relative;width:min(580px,92vw);aspect-ratio:1;margin:10px auto 8px;display:grid;place-items:center}.wheel-wrap canvas{width:100%;height:100%;filter:drop-shadow(0 17px 22px rgba(73,46,24,.18))}.pointer{position:absolute;z-index:4;left:50%;top:-2px;transform:translateX(-50%);width:0;height:0;border-left:18px solid transparent;border-right:18px solid transparent;border-top:42px solid #292521;filter:drop-shadow(0 4px 4px rgba(0,0,0,.18))}.wheel-hub{position:absolute;z-index:3;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:#fff;border:8px solid #292521;font-size:28px;box-shadow:0 8px 20px rgba(0,0,0,.18)}.wheel-actions{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.spin-button{min-width:190px;padding:15px 26px;color:#fff;font-size:17px;background:linear-gradient(135deg,#ff8751,#ff6049);box-shadow:0 10px 23px rgba(255,96,73,.28)}.wheel-hint{font-size:12px;color:var(--muted);margin:10px 0 0}
.list-panel,.history-panel,.footer-note{padding:20px;margin-top:16px}.restaurant-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:15px}.restaurant-card{border:1px solid var(--line);border-radius:17px;padding:14px;background:#fffaf6;min-width:0}.restaurant-card.selected{border-color:#ff8b60;box-shadow:0 0 0 3px rgba(255,117,72,.11)}.restaurant-card h3{font-size:15px;margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.restaurant-meta{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;border-radius:999px;background:#fff;padding:5px 8px;border:1px solid #f0e4da;font-size:11px;color:#655c55}.tag.delivery{background:#eaf8ef;color:#237844;border-color:#cdebd7}.restaurant-address{color:var(--muted);font-size:12px;margin:9px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-actions{display:flex;gap:7px}.card-actions a,.card-actions button{flex:1;text-decoration:none;text-align:center;border-radius:11px;padding:8px;background:#fff;border:1px solid var(--line);color:#a54a27;font-size:12px;font-weight:800}
.history-list{display:grid;gap:8px;margin-top:14px}.history-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:#fffaf6}.history-item strong{font-size:14px}.history-item small{display:block;color:var(--muted);margin-top:3px}.empty-state{text-align:center;color:var(--muted);font-size:13px;padding:18px}
.footer-note{font-size:13px;line-height:1.65;color:var(--muted)}.footer-note strong{color:var(--text)}.footer-note p{margin:7px 0}.footer-note code{background:#f7eee6;padding:2px 5px;border-radius:6px}.attribution{font-size:11px}
.modal-backdrop{position:fixed;inset:0;background:rgba(29,25,21,.45);backdrop-filter:blur(5px);z-index:30}.modal{position:fixed;z-index:31;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,92vw);background:#fff;border-radius:26px;padding:22px;box-shadow:0 28px 90px rgba(0,0,0,.25)}.modal-header{display:flex;align-items:center;justify-content:space-between}.modal h2{margin:0 0 12px}.modal p{color:var(--muted);font-size:13px;line-height:1.55}.modal label{margin:10px 0}.close-button{width:38px;height:38px;border-radius:12px;background:#fff;border:1px solid var(--line)}.result-modal{text-align:center}.result-emoji{font-size:52px}.result-modal h2{font-size:31px;color:#df582e;word-break:break-word;margin:8px 0}.result-details{display:grid;gap:7px;margin:14px 0}.result-detail{padding:10px;border-radius:12px;background:#fff7f0;font-size:13px}.result-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.result-actions a{text-decoration:none}.result-actions .primary-button,.result-actions .secondary-button{display:inline-flex;align-items:center;justify-content:center}
.toast{position:fixed;z-index:50;left:50%;bottom:calc(24px + var(--safe-bottom));transform:translateX(-50%);background:#292521;color:#fff;border-radius:12px;padding:11px 15px;box-shadow:0 9px 30px rgba(0,0,0,.2);font-size:13px}.confetti{position:fixed;inset:0;z-index:32;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-20px;width:9px;height:15px;animation:fall 1.5s ease-in forwards}@keyframes fall{to{transform:translate(var(--x),105vh) rotate(720deg);opacity:.7}}
@media(max-width:800px){.control-grid{grid-template-columns:repeat(2,1fr)}.restaurant-list{grid-template-columns:1fr}.summary-grid{gap:8px}.metric{padding:12px 5px}}
@media(max-width:560px){.app-shell{padding:15px 12px calc(30px + var(--safe-bottom))}.brand p{display:none}.brand h1{font-size:20px}.brand-icon{width:43px;height:43px}.location-card,.wheel-panel,.list-panel,.history-panel,.footer-note{padding:15px;border-radius:20px}.location-row{align-items:flex-start}.location-row .compact{flex:none;font-size:12px;padding:10px}.control-grid{grid-template-columns:1fr 1fr;gap:8px}.control-grid select{font-size:12px;padding:10px 8px}.action-row .primary-button{flex:1}.summary-grid{grid-template-columns:repeat(4,1fr)}.metric strong{font-size:19px}.metric span{font-size:10px}.section-heading{align-items:center}.section-heading h2{font-size:18px}.section-heading p{display:none}.stage-button{padding:8px 9px;font-size:12px}.wheel-wrap{width:94vw;margin-left:50%;transform:translateX(-50%)}.wheel-hub{width:72px;height:72px;border-width:7px}.spin-button{min-width:165px}.restaurant-card{padding:12px}.modal{padding:19px}.result-modal h2{font-size:28px}}
