:root{
  /* 厨房绿 · 山水系 */
  --brand:#07C160;
  --brand-d:#06AD56;
  --brand-dd:#049147;
  --brand-l:#E8F8EF;
  --brand-ll:#F3FBF6;
  --gold:#FFB020;
  --ink:#1A1D1B;
  --ink-2:#5A605C;
  --sub:#9AA09C;
  --line:#EDEEEC;
  --bg:#F7F8F6;
  --card:#FFFFFF;
  --danger:#FF5B45;
  --radius:16px;
  --tab-h:54px;
  --act-h:56px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0;}
html,body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);}
body{padding:0;}
button{font-family:inherit;border:none;outline:none;cursor:pointer;background:none;color:inherit;}
input,textarea,select{font-family:inherit;outline:none;border:none;font-size:15px;}

/* ===== 手机框 ===== */
.phone{position:relative;width:100%;max-width:430px;min-height:100vh;margin:0 auto;
  background:var(--bg);display:flex;flex-direction:column;overflow:hidden;}
@media(min-width:480px){
  html,body{background:radial-gradient(circle at 50% 0%,#3b423d,#1c201e);}
  .phone{margin:26px auto;min-height:calc(100vh - 52px);border-radius:38px;
    box-shadow:0 30px 70px rgba(0,0,0,.45),0 0 0 10px #111 inset;}
}
.notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:150px;height:22px;
  background:#141210;z-index:80;border-radius:0 0 16px 16px;}

/* ===== 状态栏 ===== */
.statusbar{height:34px;background:var(--brand-dd);display:flex;align-items:center;
  padding:0 18px;color:#fff;font-size:13px;font-weight:600;
  position:relative;z-index:70;}

/* ===== 顶部品牌区（山水）===== */
.topbar{position:relative;flex-shrink:0;}
.banner-bg{position:absolute;inset:0;width:100%;height:152px;overflow:hidden;}
.banner-bg img{width:100%;height:100%;object-fit:cover;object-position:center 45%;display:block;}
.banner-veil{position:absolute;inset:0;background:linear-gradient(180deg,
  rgba(23,74,50,.55) 0%, rgba(23,74,50,.25) 55%, rgba(250,247,242,.92) 100%);}
.topbar-inner{position:relative;z-index:2;padding:10px 16px 12px;}
.tb-row{display:flex;align-items:center;justify-content:space-between;}
.app-name{font-size:19px;font-weight:800;color:#fff;letter-spacing:2px;
  text-shadow:0 1px 4px rgba(0,0,0,.28);}
.tb-actions{display:flex;gap:8px;}
.round-btn{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.22);
  color:#fff;font-size:15px;display:flex;align-items:center;justify-content:center;
  backdrop-filter:blur(4px);}
.round-btn:active{background:rgba(255,255,255,.38);}

.chef{display:flex;align-items:center;gap:11px;margin-top:12px;}
.avatar{width:48px;height:48px;border-radius:50%;background:#fff;display:flex;
  align-items:center;justify-content:center;font-size:26px;box-shadow:0 3px 10px rgba(0,0,0,.18);}
.chef-meta{color:#fff;}
.chef-name{font-size:17px;font-weight:700;text-shadow:0 1px 4px rgba(0,0,0,.28);}
.chef-sub{font-size:12px;opacity:.92;margin-top:2px;text-shadow:0 1px 3px rgba(0,0,0,.25);}

.searchbar{margin-top:10px;}
.searchbar input{width:100%;background:rgba(255,255,255,.94);border-radius:18px;
  padding:9px 15px;font-size:14px;color:var(--ink);}

/* ===== 视图 ===== */
.views{flex:1;overflow:hidden;position:relative;background:var(--bg);}
.view{position:absolute;inset:0;display:flex;flex-direction:column;overflow-y:auto;
  -webkit-overflow-scrolling:touch;padding-bottom:calc(var(--act-h) + var(--tab-h) + 8px);}
.view.hidden{display:none;}

.sec-head{display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px 10px;background:var(--bg);position:sticky;top:0;z-index:5;}
.sec-head h2{font-size:19px;font-weight:800;}
.sec-hint{font-size:12px;color:var(--sub);}
.mini-btn{font-size:12px;color:var(--brand);background:var(--brand-l);
  padding:5px 12px;border-radius:14px;font-weight:600;}

/* ===== 菜谱：左分类 + 右列表 ===== */
.menu-body{flex:1;display:flex;overflow:hidden;}
.cat-rail{width:92px;background:var(--brand-ll);overflow-y:auto;flex-shrink:0;padding:6px 0;
  border-right:1px solid var(--line);}
.cat-item{padding:14px 8px;font-size:13.5px;text-align:center;color:var(--ink-2);
  line-height:1.35;position:relative;transition:all .15s;}
.cat-item.active{background:var(--card);color:var(--brand-dd);font-weight:700;}
.cat-item.active::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:20px;background:var(--brand);border-radius:2px;}

.dish-list{flex:1;overflow-y:auto;background:var(--card);padding:6px 12px 12px;
  min-height:0;-webkit-overflow-scrolling:touch;}
.dish{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid var(--line);align-items:center;}
.dish:last-child{border-bottom:none;}
.dish-img{width:78px;height:78px;border-radius:13px;object-fit:cover;background:var(--bg);
  flex-shrink:0;font-size:32px;display:flex;align-items:center;justify-content:center;}
.dish-info{flex:1;min-width:0;}
.dish-name{font-size:15.5px;font-weight:700;letter-spacing:.3px;}
.dish-rating{font-size:12px;color:var(--sub);margin-top:5px;}
.dish-rating .st{color:var(--gold);letter-spacing:1px;}
.dish-rating .no{color:var(--brand);font-weight:600;}

.dish-add{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;
  font-size:19px;line-height:26px;text-align:center;flex-shrink:0;
  box-shadow:0 3px 8px rgba(7,193,96,.32);transition:transform .1s;}
.dish-add:active{transform:scale(.84);}
.dish-add.spec{width:auto;padding:0 12px;border-radius:14px;font-size:12.5px;font-weight:600;
  line-height:28px;}

.empty-tip{color:var(--sub);text-align:center;margin-top:56px;font-size:13.5px;}

/* ===== 底部固定操作条 ===== */
.actionbar{height:var(--act-h);background:var(--card);border-top:1px solid var(--line);
  display:flex;align-items:center;gap:10px;padding:0 12px;flex-shrink:0;}
.ab-btn{height:38px;border-radius:19px;font-size:14px;font-weight:700;display:flex;
  align-items:center;justify-content:center;gap:5px;transition:transform .1s;position:relative;}
.ab-btn:active{transform:scale(.96);}
.ab-btn.ghost{flex:0 0 auto;padding:0 13px;background:var(--brand-ll);color:var(--brand-dd);
  border:1px solid #CDEBD9;}
.ab-btn.ghost span{font-size:15px;}
.ab-btn.primary{flex:1;background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(7,193,96,.28);}
.ab-btn.dark{flex:1;padding:0 18px;background:#2B302D;color:#fff;}
.cart-badge{display:inline-flex;align-items:center;justify-content:center;min-width:19px;
  height:19px;background:var(--danger);border-radius:10px;font-size:11px;font-weight:800;
  margin-left:6px;padding:0 5px;}
.cart-badge.hidden{display:none;}

/* ===== 底部 Tab ===== */
.tabbar{height:var(--tab-h);background:var(--card);display:flex;border-top:1px solid var(--line);
  flex-shrink:0;position:relative;}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;font-size:11px;color:var(--sub);position:relative;transition:color .15s;}
.tab-ico{font-size:19px;filter:grayscale(1);opacity:.55;transition:all .15s;}
.tab.active{color:var(--brand-dd);font-weight:700;}
.tab.active .tab-ico{filter:none;opacity:1;transform:translateY(-1px) scale(1.08);}
.tab-dot{position:absolute;top:8px;right:24%;width:7px;height:7px;border-radius:50%;
  background:var(--danger);}
.tab-dot.hidden{display:none;}

/* ===== 弹窗 ===== */
.modal-mask{position:absolute;inset:0;background:rgba(20,26,22,.5);display:flex;
  align-items:flex-end;justify-content:center;z-index:90;}
.modal-mask.hidden{display:none;}
.modal.sheet{width:100%;background:#fff;border-radius:20px 20px 0 0;padding:16px 18px 22px;
  animation:up .26s cubic-bezier(.2,.9,.3,1);max-height:88%;overflow-y:auto;}
@keyframes up{from{transform:translateY(100%);}to{transform:translateY(0);}}
.modal.sheet.tall{max-height:92%;}
.modal.card{width:76%;background:#fff;border-radius:18px;padding:26px 22px;text-align:center;
  animation:pop .24s cubic-bezier(.2,.9,.3,1.1);margin:auto;}
@keyframes pop{from{transform:scale(.86);opacity:0;}to{transform:scale(1);opacity:1;}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.sheet-head h3{font-size:16.5px;font-weight:800;}
.x{width:28px;height:28px;border-radius:50%;background:var(--bg);color:var(--ink-2);font-size:19px;
  display:flex;align-items:center;justify-content:center;}
.sheet-foot{display:flex;gap:10px;margin-top:14px;}
.btn{flex:1;height:42px;border-radius:21px;font-size:15px;font-weight:700;display:flex;
  align-items:center;justify-content:center;transition:transform .1s;}
.btn:active{transform:scale(.97);}
.btn.primary{background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(7,193,96,.28);}
.btn.ghost{background:var(--brand-ll);color:var(--brand-dd);}
.btn.wide{width:100%;flex:none;}
.big-emoji{font-size:50px;margin-bottom:8px;}
.modal.card h3{font-size:19px;font-weight:800;}
.modal.card p{color:var(--sub);font-size:13.5px;margin:6px 0 18px;}

/* ===== 转盘（弱化版）===== */
.wheel-wrap{position:relative;width:230px;height:230px;margin:6px auto 0;}
.wheel-wrap.small{width:210px;height:210px;}
.wheel-pointer{position:absolute;top:-7px;left:50%;transform:translateX(-50%);width:0;height:0;
  border-left:11px solid transparent;border-right:11px solid transparent;
  border-top:20px solid var(--brand-dd);z-index:6;filter:drop-shadow(0 2px 3px rgba(0,0,0,.2));}
.wheel{width:100%;height:100%;border-radius:50%;
  background:conic-gradient(from -90deg,#07C160,#3FBF82,#8FDDB4,#C7F0D8,#5FCB95,#07C160);
  box-shadow:inset 0 0 0 8px #fff,0 12px 28px rgba(7,193,96,.22);
  transition:transform 3.4s cubic-bezier(.12,.78,.2,1);position:relative;}
.wheel-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:76px;height:76px;border-radius:50%;background:var(--brand);display:flex;
  align-items:center;justify-content:center;font-size:18px;font-weight:800;color:#fff;
  box-shadow:0 8px 18px rgba(7,193,96,.4);z-index:5;letter-spacing:2px;}
.wheel-label{position:absolute;top:50%;left:50%;transform-origin:0 0;font-size:11px;
  font-weight:700;color:#fff;white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.4);}

/* ===== 随机点菜结果 ===== */
.rand-result{text-align:center;margin-top:14px;min-height:44px;}
.rand-name{font-size:20px;font-weight:800;color:var(--brand-dd);}
.rand-sub{font-size:12.5px;color:var(--sub);margin-top:4px;}

/* ===== 菜品详情 ===== */
.dish-detail{padding-bottom:8px;}
.dd-img{width:100%;height:190px;object-fit:cover;border-radius:14px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;font-size:60px;}
.dd-name{font-size:19px;font-weight:800;margin-top:12px;}
.dd-meta{display:flex;align-items:center;gap:10px;margin-top:6px;font-size:13px;color:var(--sub);}
.dd-stars{color:var(--gold);letter-spacing:2px;font-size:15px;}
.dd-sec-title{font-size:13px;font-weight:700;color:var(--ink-2);margin:16px 0 8px;}
.review-item{background:var(--bg);border-radius:12px;padding:10px 12px;margin-bottom:8px;}
.review-top{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--sub);}
.review-top .st{color:var(--gold);letter-spacing:1px;}
.review-text{font-size:13.5px;margin-top:5px;line-height:1.6;}

/* ===== 选规格 ===== */
.spec-body{padding:4px 0;}
.spec-group{margin-bottom:14px;}
.spec-label{font-size:13px;font-weight:700;color:var(--ink-2);margin-bottom:8px;}
.spec-opts{display:flex;flex-wrap:wrap;gap:8px;}
.spec-opt{padding:7px 15px;border-radius:16px;background:var(--bg);font-size:13.5px;
  color:var(--ink-2);border:1.5px solid transparent;transition:all .12s;}
.spec-opt.on{background:var(--brand-l);color:var(--brand-dd);border-color:var(--brand);font-weight:700;}
.qty-row{display:flex;align-items:center;gap:14px;margin-top:6px;}
.qty-btn{width:30px;height:30px;border-radius:50%;background:var(--bg);font-size:19px;
  display:flex;align-items:center;justify-content:center;color:var(--ink-2);}
.qty-num{font-size:17px;font-weight:800;min-width:24px;text-align:center;}

/* ===== 评分 ===== */
.review-body{text-align:center;padding:6px 0 4px;}
.stars{font-size:36px;color:#DFE3E0;letter-spacing:6px;line-height:1;}
.stars span{transition:color .12s,transform .12s;display:inline-block;}
.stars span.on{color:var(--gold);transform:scale(1.12);}
#reviewText{width:100%;margin-top:14px;background:var(--bg);border-radius:12px;padding:12px;
  min-height:80px;resize:none;font-size:14px;color:var(--ink);}

/* ===== 表单 ===== */
.form label{display:block;margin-bottom:12px;font-size:12.5px;color:var(--ink-2);font-weight:600;}
.form input,.form select{width:100%;margin-top:6px;background:var(--bg);border-radius:12px;
  padding:11px 14px;color:var(--ink);font-weight:400;}
.form select{appearance:none;background-image:none;}

/* ===== 订单 ===== */
.order-list{padding:0 14px 10px;}
.order-card{background:var(--card);border-radius:15px;padding:14px;margin-bottom:11px;
  box-shadow:0 2px 10px rgba(26,29,27,.05);border:1px solid var(--line);}
.order-top{display:flex;justify-content:space-between;font-size:12px;color:var(--sub);margin-bottom:9px;}
.order-dishes{font-size:14px;line-height:1.85;}
.order-dishes .od{display:flex;align-items:center;gap:8px;}
.order-dishes img{width:30px;height:30px;border-radius:8px;object-fit:cover;}
.order-note{font-size:12px;color:var(--ink-2);margin-top:8px;background:var(--bg);
  padding:8px 11px;border-radius:10px;}
.status-pills{display:flex;gap:7px;margin-top:12px;}
.pill{flex:1;text-align:center;padding:8px 0;border-radius:14px;font-size:12.5px;font-weight:600;
  background:var(--bg);color:var(--sub);transition:transform .1s;}
.pill:active{transform:scale(.96);}
.pill.active-p{background:var(--danger);color:#fff;}
.pill.active-d{background:var(--brand);color:#fff;}
.pill.active-c{background:#B0B6B2;color:#fff;}

/* ===== 发现 ===== */
.disc-list{padding:0 14px 10px;}
.disc-card{display:flex;gap:12px;background:var(--card);border-radius:15px;padding:12px;
  margin-bottom:11px;border:1px solid var(--line);align-items:center;}
.disc-rank{width:26px;height:26px;border-radius:8px;background:var(--brand-l);color:var(--brand-dd);
  font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.disc-img{width:64px;height:64px;border-radius:12px;object-fit:cover;background:var(--bg);
  display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0;}
.disc-info{flex:1;min-width:0;}
.disc-name{font-size:15px;font-weight:700;}
.disc-sub{font-size:12px;color:var(--sub);margin-top:4px;}
.disc-sub .st{color:var(--gold);}

/* ===== 消息 ===== */
.msg-list{padding:0 14px 10px;}
.msg-item{display:flex;gap:11px;background:var(--card);border-radius:14px;padding:13px;
  margin-bottom:9px;border:1px solid var(--line);}
.msg-item.unread{background:var(--brand-ll);border-color:#CDEBD9;}
.msg-ico{width:36px;height:36px;border-radius:11px;background:var(--brand-l);color:var(--brand-dd);
  font-size:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.msg-body{flex:1;min-width:0;}
.msg-title{font-size:14.5px;font-weight:700;}
.msg-text{font-size:12.5px;color:var(--ink-2);margin-top:3px;line-height:1.55;}
.msg-time{font-size:11px;color:var(--sub);margin-top:5px;}

/* ===== 我的 ===== */
.me-card{display:flex;align-items:center;gap:14px;background:var(--card);margin:0 14px 12px;
  padding:16px;border-radius:16px;border:1px solid var(--line);}
.me-avatar{width:56px;height:56px;border-radius:50%;background:var(--brand-l);font-size:30px;
  display:flex;align-items:center;justify-content:center;}
.me-name{font-size:17px;font-weight:800;}
.me-sub{font-size:12.5px;color:var(--sub);margin-top:3px;}
.me-actions{display:flex;gap:10px;padding:0 14px 14px;}
.me-btn{flex:1;height:42px;border-radius:14px;background:var(--card);border:1px solid var(--line);
  font-size:14px;font-weight:700;color:var(--ink);}
.me-btn.primary{background:var(--brand);color:#fff;border:none;
  box-shadow:0 4px 12px rgba(7,193,96,.26);}
.me-stat{display:flex;gap:10px;padding:0 14px;}
.me-stat>div{flex:1;background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:14px 0;text-align:center;}
.me-stat b{display:block;font-size:20px;font-weight:800;color:var(--brand-dd);}
.me-stat span{font-size:11.5px;color:var(--sub);}

/* ===== 店主 PIN 弹窗 ===== */
.owner-pin{width:100%;font-size:24px;text-align:center;letter-spacing:8px;
  padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;
  outline:none;margin-top:6px;font-family:inherit;}
.owner-pin:focus{border-color:var(--brand);}
.owner-err{color:#C2410C;font-size:12px;min-height:18px;margin-top:6px;text-align:center;}
.owner-actions{display:flex;gap:10px;margin-top:14px;width:100%;}
.owner-actions .btn{flex:1;margin:0 !important;}
.owner-exit{background:transparent;color:var(--sub);font-size:12px;
  margin-top:14px;text-decoration:underline;display:block;margin-left:auto;margin-right:auto;}
.owner-exit.hidden{display:none;}

/* ===== 头像可按提示（长按 3 秒）===== */
.avatar{cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .15s;}
.avatar:active{transform:scale(.92);}
