:root{
  --bg:#f1ece3; --panel:#fff; --panel2:#faf7f1;
  --line:#e2dace; --line2:#cfc3b2;
  --tx:#13293d; --tx2:#43536a; --tx3:#5b6979;
  --accent:#1b4f7a; --accent2:#e8f0f7; --gold:#c9a24b;
  --ok:#1f6a4b; --warn:#7d5609; --err:#a81010;
  --okbg:#e4f2ea; --warnbg:#fbf1d9; --errbg:#fbe6e6;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);
  font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif}
body.has-bar{padding-bottom:84px}
h1,h2,h3,h4{margin:0;font-weight:800;letter-spacing:.01em}
a{color:var(--accent)}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{border:1.5px solid var(--line2);border-radius:10px;background:#fff;padding:9px 11px;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
[hidden]{display:none!important}

/* 頂條 */
header{background:var(--tx);border-bottom:3px solid var(--gold);color:#f4efe6;padding:10px 16px 12px}
header .brand{color:#c9d4e0;text-decoration:none;font-size:13px;font-weight:700}
header h1{font-size:20px;color:#fff;margin-top:2px;line-height:1.35}
header .meta{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);
  padding:2px 10px;border-radius:999px;font-size:13px;color:#eef3f7}
.pill.gold{background:var(--gold);color:#2a1f06;border-color:var(--gold);font-weight:700}
.pill.red{background:#b3261e;border-color:#b3261e;color:#fff;font-weight:700}
.pill.green{background:#2d7a57;border-color:#2d7a57;color:#fff;font-weight:700}

main{max-width:760px;margin:0 auto;padding:14px 12px 40px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:15px;margin-bottom:12px;
  box-shadow:0 1px 2px rgba(19,41,61,.05)}
.card>h2{font-size:17px;margin-bottom:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.card>h2 .n{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--tx);color:#fff;font-size:13px}
.card.hl{border:2px solid var(--gold);background:#fffaf0}
.hint{font-size:14px;color:var(--tx3);margin:2px 0 10px;line-height:1.6}
.err{color:var(--err);font-size:14px;font-weight:700;margin-top:6px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1 1 auto}
.muted{color:var(--tx3)}
.w100{width:100%}
.fl{display:block;font-size:13.5px;font-weight:800;color:var(--tx2);margin:12px 0 5px}
.fl:first-child{margin-top:0}
.small{font-size:13px}
.right{margin-left:auto}

/* 按鈕 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:11px;
  background:var(--tx);color:#fff;font-weight:800;padding:11px 16px;font-size:16px;cursor:pointer;text-decoration:none;min-height:44px}
.btn.big{width:100%;padding:15px;font-size:18px}
.btn.gold{background:var(--gold);color:#2a1f06}
.btn.line{background:#06c755;color:#fff}
.btn.ghost{background:var(--panel2);color:var(--tx);border:1.5px solid var(--line2)}
.btn.red{background:#b3261e}
.btn.sm{padding:7px 12px;font-size:14px;min-height:36px;border-radius:9px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.link{background:none;border:0;color:var(--accent);font-weight:700;cursor:pointer;padding:4px 2px;text-decoration:underline;font-size:14px}

/* 選項 chip */
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1.5px solid var(--line2);background:var(--panel2);color:var(--tx);padding:8px 13px;border-radius:10px;
  font-size:15px;font-weight:700;cursor:pointer;min-height:40px;display:inline-flex;align-items:center;gap:5px}
.chip.on{background:var(--tx);border-color:var(--tx);color:#fff}
.chip.need{border-color:#d08b3a;border-style:dashed}
.chip small{font-weight:600;opacity:.75}

/* 二選一大卡（請客／各付各） */
.pick2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opt{border:2px solid var(--line2);border-radius:13px;padding:13px;background:var(--panel2);cursor:pointer;text-align:left}
.opt b{display:block;font-size:17px}
.opt span{display:block;font-size:13px;color:var(--tx3);margin-top:3px;line-height:1.5}
.opt.on{border-color:var(--tx);background:var(--accent2);box-shadow:inset 0 0 0 1px var(--tx)}

/* 店家清單（開團勾選） */
.stores{display:flex;flex-direction:column;gap:8px}
.st{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel2)}
.st.on{border-color:var(--tx);background:var(--accent2)}
.st input[type=checkbox]{width:22px;height:22px;flex:none;accent-color:var(--tx)}
.st .nm{font-weight:800}
.st .sub{font-size:13px;color:var(--tx3)}

/* 名字 */
.names{display:flex;flex-wrap:wrap;gap:8px}
.nmb{border:1.5px solid var(--line2);background:var(--panel2);padding:10px 14px;border-radius:11px;font-size:16px;font-weight:700;
  cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:46px}
.nmb .d{font-size:12px;font-weight:600;color:var(--tx3)}
.nmb.done{background:var(--okbg);border-color:#a9cbb8}
.nmb.done .d{color:var(--ok)}
.nmb.skip{background:#f0f0f0;border-color:#d4d4d4;color:#777}
.tag{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 11px;border-radius:999px;background:var(--panel2);
  border:1.5px solid var(--line2);font-size:14px;font-weight:700}
.tag button{border:0;background:none;font-size:16px;line-height:1;padding:2px 5px;cursor:pointer;color:var(--tx3)}
.tag.red{background:var(--errbg);border-color:#e6b4b4;color:var(--err);padding-right:11px}

/* 菜單（點餐） */
.tabs{position:sticky;top:0;z-index:5;background:var(--bg);padding:8px 0;margin:-4px 0 6px;display:flex;gap:7px;overflow-x:auto}
.tabs a{flex:none;text-decoration:none;color:var(--tx);background:#fff;border:1.5px solid var(--line2);border-radius:999px;padding:6px 13px;font-weight:800;font-size:14px}
.menu h3{font-size:18px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.menu h4{font-size:14px;color:var(--tx3);margin:14px 0 4px;padding-bottom:3px;border-bottom:1px dashed var(--line2)}
.it{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid #f0ebe2;cursor:pointer}
.it:last-child{border-bottom:0}
.it .nm{flex:1 1 auto;font-weight:700;line-height:1.4}
.it .pr{color:var(--tx2);font-size:14px;white-space:nowrap;text-align:right}
.it .q{flex:none;min-width:26px;height:26px;border-radius:13px;background:var(--gold);color:#2a1f06;font-weight:900;display:grid;place-items:center;font-size:14px;padding:0 6px}
.it .plus{flex:none;width:36px;height:36px;border-radius:50%;border:0;background:var(--tx);color:#fff;font-size:22px;font-weight:700;line-height:1;cursor:pointer}
.it.off{cursor:default}
.it.off .plus{display:none}
.dk{font-size:12px;font-weight:700;color:#7a4b12;background:#fbecd6;border-radius:6px;padding:1px 6px;margin-left:4px;white-space:nowrap}

/* 底部購物條 */
.bar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:#fff;border-top:1px solid var(--line);
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(19,41,61,.08)}
.bar .in{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:center}
.bar .sum{flex:1 1 auto;cursor:pointer;line-height:1.35}
.bar .sum b{font-size:18px}
.bar .sum .st2{font-size:13px;font-weight:700}
.st2.ok{color:var(--ok)} .st2.warn{color:#b05a00}

/* 底部彈出 */
.mask{position:fixed;inset:0;background:rgba(10,20,30,.45);z-index:30}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:31;background:#fff;border-radius:18px 18px 0 0;max-height:88vh;overflow:auto;
  padding:16px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(0,0,0,.18)}
.sheet .inner{max-width:720px;margin:0 auto}
.sheet h3{font-size:19px;margin-bottom:2px;padding-right:36px}
.sheet .x{position:absolute;right:12px;top:10px;border:0;background:var(--panel2);width:36px;height:36px;border-radius:50%;font-size:18px;cursor:pointer}
.sheet .grp{margin-top:14px}
.sheet .grp>label{display:block;font-size:14px;font-weight:800;color:var(--tx2);margin-bottom:6px}
.sheet .grp>label .req{color:#b05a00;font-weight:700;font-size:12px;margin-left:4px}
.qty{display:inline-flex;align-items:center;border:1.5px solid var(--line2);border-radius:12px;overflow:hidden}
.qty button{width:44px;height:42px;border:0;background:var(--panel2);font-size:22px;font-weight:800;cursor:pointer}
.qty span{min-width:44px;text-align:center;font-size:18px;font-weight:800}
.cartline{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f0ebe2}
.cartline .grow{line-height:1.45}

/* 店家編輯器（全螢幕） */
.editor{position:fixed;inset:0;z-index:40;background:var(--bg);overflow:auto}
.editor .top{position:sticky;top:0;z-index:3;background:var(--tx);color:#fff;padding:10px 12px;display:flex;align-items:center;gap:10px}
.editor .top b{flex:1 1 auto;font-size:17px}
.editor .top .btn{min-height:38px;padding:7px 13px;font-size:15px}
.editor main{padding-bottom:110px}
.ei{border:1.5px solid var(--line);border-radius:12px;padding:9px;margin-bottom:8px;background:#fff}
.ei.unc{background:#fff6d6;border-color:#e2c25c}
.ei.bad{background:var(--errbg);border-color:#e6a0a0}
.ei .r1{display:flex;gap:6px}
.ei .r1 .nm{flex:1 1 auto;font-weight:700}
.ei .r2{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.ei .cat{width:96px;font-size:14px}
.ei .pz{display:inline-flex;align-items:center;gap:3px}
.ei input{padding:7px 8px;font-size:15px}
.ei .pz .lb{width:40px;font-size:14px;text-align:center;padding:7px 2px}
.ei .pz .pr{width:58px;padding:7px 6px}
.ei .pz .dl{border:0;background:none;color:var(--tx3);font-size:14px;cursor:pointer;padding:2px 1px}
.ei .r2 .link{font-size:13px;padding:4px 0}
.ecat{font-size:13.5px;font-weight:800;color:var(--tx3);margin:14px 2px 6px;padding-bottom:3px;border-bottom:1px dashed var(--line2)}
.ecat:first-child{margin-top:4px}
.ei .dkb{flex:none;width:42px;border:1.5px solid var(--line2);border-radius:9px;background:#fff;font-size:18px;cursor:pointer;opacity:.35;filter:grayscale(1)}
.ei .dkb.on{opacity:1;filter:none;background:#fbecd6;border-color:#e0b77a}
.ei .del{flex:none;border:0;background:var(--panel2);border-radius:9px;width:40px;font-size:16px;cursor:pointer;color:var(--err)}
.ei .dkt{display:inline-flex;align-items:center;gap:5px;font-size:13.5px;font-weight:700;color:#7a4b12;background:#fbecd6;padding:5px 9px;border-radius:9px;cursor:pointer}
.ei .dkt input{width:18px;height:18px;accent-color:#7a4b12}
.ei .why{font-size:12.5px;color:#7d5609;margin-top:5px;font-weight:700}
.warnbox{background:var(--warnbg);border:1px solid #ecd59a;color:#5c3f05;border-radius:12px;padding:10px 12px;font-size:14px;margin-bottom:10px}
.okbox{background:var(--okbg);border:1px solid #b9dcc8;color:#174d36;border-radius:12px;padding:10px 12px;font-size:14px;margin-bottom:10px}
.loading{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--tx2)}
.spin{width:22px;height:22px;border:3px solid #d8cfc0;border-top-color:var(--tx);border-radius:50%;animation:sp 1s linear infinite;flex:none}
@keyframes sp{to{transform:rotate(360deg)}}

/* 管理頁 */
.big{font-size:28px;font-weight:900;letter-spacing:.01em}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px}
.kpi{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:8px;text-align:center}
.kpi b{display:block;font-size:24px;line-height:1.2}
.kpi span{font-size:12.5px;color:var(--tx3);font-weight:700}
.kpi.red b{color:var(--err)}
.olist .ol{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line)}
.olist .ol:last-child{border-bottom:0}
.olist .ol .q{font-weight:900;white-space:nowrap}
.tot{display:flex;justify-content:space-between;font-weight:900;font-size:17px;margin-top:8px;padding-top:8px;border-top:2px solid var(--tx)}
.person{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #f0ebe2}
.person:last-child{border-bottom:0}
.person .who{font-weight:800;min-width:66px}
.person .what{flex:1 1 auto;font-size:14.5px;color:var(--tx2);line-height:1.5}
.person .amt{font-weight:800;white-space:nowrap}
.paid{border:1.5px solid var(--line2);background:#fff;border-radius:9px;padding:5px 9px;font-weight:800;font-size:13px;cursor:pointer;white-space:nowrap;min-height:34px}
.paid.on{background:var(--okbg);border-color:#9cc8b0;color:var(--ok)}
.sharebox{background:var(--panel2);border:1px dashed var(--line2);border-radius:10px;padding:10px;font-size:14px;white-space:pre-wrap;word-break:break-all;margin:8px 0}
.keybox{background:#fff4f2;border:1px solid #efc2bb;border-radius:10px;padding:10px;font-size:13.5px;margin-top:10px;color:#6a2018}
details>summary{cursor:pointer;font-weight:800;list-style:none}
details>summary::-webkit-details-marker{display:none}
details>summary::after{content:" ▾";color:var(--tx3)}
details[open]>summary::after{content:" ▴"}

.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);background:var(--tx);color:#fff;padding:10px 16px;
  border-radius:12px;font-weight:700;opacity:0;pointer-events:none;transition:.25s;z-index:60;max-width:90vw;text-align:center}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* 主揪管理頁：電腦版放寬、兩欄並排（左：收單／誰點了；右：給店家的單／每個人） */
@media (min-width:1000px){
  main.wide{max-width:1200px}
  .adm{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px;align-items:start}
  .adm>.col{min-width:0}
}
@media (min-width:700px){
  main{padding:20px 16px 50px}
  header{padding:12px 24px 14px}
  header h1{font-size:23px}
  .pick2{gap:14px}
}
