/* Tianlala brand: signature yellow + black on a warm cream page. */
:root{--yellow:#F7BE00;--yellow-soft:#FFF3C4;--bg:#FFF9EA;--card:#fff;--ink:#1A1712;--muted:#7A6B52;--line:#F0E2B6;
  --brand:#1A1712;--ok:#2E7D4F;--err:#C62828}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 -apple-system,"PingFang SC","Noto Sans Khmer",sans-serif}
.wrap{max-width:520px;margin:0 auto;padding:16px}
h1{font-size:24px;line-height:1.3;margin:0 0 8px}
h2{font-size:17px;margin:0 0 8px}
p{margin:4px 0}
a{color:var(--ink)}
.muted{color:var(--muted);font-size:14px}
.strong{font-weight:600}
.center{text-align:center}
.right{text-align:right}

/* Brand bar */
.topbar{background:var(--yellow)}
.topbar-in{max-width:520px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.topbar .logo{height:22px;width:auto;display:block}
.topbar .lang a{margin-left:12px;font-size:14px;color:var(--ink);text-decoration:none;font-weight:600;opacity:.75}
.lang{text-align:right;font-size:14px}

/* Hero */
.hero{padding:8px 0 12px}
.hero-card{background:var(--yellow);border-radius:20px;padding:20px 80px 18px 18px;margin:4px 0 12px;position:relative;overflow:hidden}
.hero-card h1{font-size:26px;margin:0 0 6px}
.hero-card .bee{position:absolute;right:14px;top:14px;width:56px;height:56px}
.hero-card p{margin:2px 0}
.hero-card .chip-time{display:inline-block;margin-top:10px;background:var(--ink);color:var(--yellow);border-radius:999px;padding:5px 12px;font-weight:700;font-size:15px}
.hero-card .sub{opacity:.8}

/* Cards and text blocks */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin:12px 0;box-shadow:0 1px 0 rgba(26,23,18,.03)}
.banner{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;text-align:center;font-weight:600}
.notice{background:var(--yellow-soft);border:1px solid #F2D677;border-radius:14px;padding:12px 14px;margin:12px 0}
.ok{color:var(--ok);font-weight:600}
.err{color:var(--err);font-weight:600}
.badge{display:inline-block;margin-top:6px;padding:4px 12px;border-radius:999px;font-size:14px;font-weight:600;background:#fff;border:1px solid var(--line)}
.st-pending,.st-open{background:#fff}
.st-closed{background:var(--yellow-soft);border-color:#F2D677}
.st-paid,.st-delivered{background:#e6f4ea;border-color:#9fd3ae;color:var(--ok)}
.st-cancelled,.st-rejected{color:var(--err)}

/* Forms */
.field{display:block;border:0;padding:0;margin:0 0 16px}
.field>span,.field>legend{display:block;font-weight:600;margin-bottom:6px;padding:0}
input[name=name],input[name=note],input.text,select.text{width:100%;font-size:16px;padding:12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(247,190,0,.45)}
input.qty{width:110px;font-size:16px;padding:10px;border:1.5px solid var(--line);border-radius:12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Choice cards: drinks, sugar/ice chips, ordering mode */
.drinks{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.drink input,.chip input,.mode input{position:absolute;opacity:0;pointer-events:none}
.drink-card{display:block;border:1.5px solid var(--line);border-radius:12px;padding:10px;min-height:64px;background:#fff}
.drink-card b{display:block;font-size:15px}
.drink-card small{color:var(--muted);font-size:12px;display:block}
.drink-card .price{display:block;font-style:normal;font-weight:800;font-size:15px;margin-top:4px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip span{display:inline-block;border:1.5px solid var(--line);border-radius:999px;padding:8px 14px;background:#fff}
.modes{display:grid;gap:8px}
.mode span{display:block;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.mode span b{display:block;font-size:15px}
.mode span small{color:var(--muted);font-size:12px}
.drink input:checked+.drink-card,.chip input:checked+span,.mode input:checked+span{border-color:var(--ink);background:var(--yellow);box-shadow:inset 0 0 0 1px var(--ink)}
.drink-card,.mode span{position:relative}
.drink input:checked+.drink-card::after,.mode input:checked+span::after{content:"✓";position:absolute;right:8px;top:6px;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--yellow);font:700 14px/22px sans-serif;text-align:center}
.drink input:checked+.drink-card small,.mode input:checked+span small{color:var(--ink)}
.drink input:focus-visible+.drink-card,.chip input:focus-visible+span,.mode input:focus-visible+span{outline:2px solid var(--ink)}

/* Buttons */
.btn{display:block;width:100%;border:0;border-radius:14px;padding:15px;font-size:17px;font-weight:700;background:var(--ink);color:var(--yellow);text-align:center;text-decoration:none;cursor:pointer}
.btn.secondary{background:#fff;color:var(--ink);border:1.5px solid var(--ink);margin-top:12px}
.btn.yellow{background:var(--yellow);color:var(--ink)}
.btn-sm{flex:none;border:1.5px solid var(--ink);color:var(--ink);background:#fff;border-radius:10px;padding:5px 12px;text-decoration:none;font-size:14px;cursor:pointer}
.btn-sm.danger{border-color:var(--err);color:var(--err)}
.link-danger{background:none;border:0;color:var(--err);font-size:15px;padding:12px;text-decoration:underline}
.sticky-bar{position:sticky;bottom:0;padding:10px 0 calc(10px + env(safe-area-inset-bottom));background:linear-gradient(rgba(255,249,234,0),var(--bg) 30%);z-index:5}

/* Lists and amounts */
.mine{list-style:none;padding:0;margin:0}
.mine li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.mine li:last-child{border-bottom:0}
.qty-badge{background:var(--yellow);border-radius:8px;padding:0 6px}
.amounts{width:100%;border-collapse:collapse}
.amounts td{padding:6px 0;border-bottom:1px solid var(--line)}
.amounts td:last-child{text-align:right}
.amounts .total td{font-size:22px;font-weight:800;border-bottom:0}
.qr{display:block;max-width:260px;width:100%;margin:12px auto}
.share{display:flex;gap:8px;align-items:center}
.share input{flex:1;min-width:0;font-size:14px;padding:8px;border:1.5px solid var(--line);border-radius:10px}

/* Share poster (QR + who is treating), saved by long-press */
.poster-wrap{text-align:center}
.poster{display:block;width:100%;max-width:340px;margin:8px auto;border-radius:18px;box-shadow:0 6px 24px rgba(26,23,18,.15)}
.poster-actions{display:flex;gap:8px;justify-content:center;margin-top:8px;flex-wrap:wrap}

.foot{text-align:center;color:var(--muted);font-size:12px;padding:24px 16px 32px}
.foot img{width:22px;height:22px;vertical-align:middle;margin-right:6px}
.price-switch{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding:10px 12px;background:var(--yellow-soft);border-radius:12px;text-align:left;font-size:14px}

/* ---- Warm guest theme (2026-10 experience): cream, tea green and a sunny yellow, on guest and host pages only;
   the store and platform back offices keep the brand yellow/black above. ---- */
body.warm{--bg:#FFFDF6;--card:#FFFFFF;--ink:#203E33;--muted:#6E7B6C;--line:#E7E9DB;--brand:#285642;--yellow:#F8CE59;
  --yellow-soft:#FBF1CF;--tea:#EEF2E4;--tea-2:#E6EDDA;--ok:#2E7D4F;--err:#B3261E;background:var(--bg);color:var(--ink)}
body.warm .topbar{background:var(--bg);border-bottom:1px solid var(--line)}
body.warm .topbar .lang a{color:var(--brand)}
body.warm .btn{background:var(--brand);color:#fff;min-height:48px;border-radius:14px}
body.warm .btn:hover{background:#1B4231}
body.warm .btn.secondary{background:transparent;color:var(--brand);border:1.5px solid #CAD3BE}
body.warm .btn.yellow{background:var(--yellow);color:var(--ink)}
body.warm .btn-sm{border-color:#CAD3BE;color:var(--brand);min-height:44px;display:inline-flex;align-items:center;justify-content:center}
body.warm .card{border-color:var(--line);border-radius:18px}
body.warm .notice{background:var(--yellow-soft);border-color:#F0D98A}
body.warm a{color:var(--brand)}
body.warm :focus-visible{outline:3px solid #DFAA2A;outline-offset:2px}
body.warm input:focus,body.warm select:focus,body.warm textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(40,86,66,.15)}
body.warm .chip span,body.warm .mode span,body.warm .drink-card{border-color:var(--line)}
body.warm .drink input:checked+.drink-card,body.warm .chip input:checked+span,body.warm .mode input:checked+span{
  border-color:var(--brand);background:var(--tea-2);box-shadow:inset 0 0 0 1px var(--brand)}
body.warm .drink input:checked+.drink-card::after,body.warm .mode input:checked+span::after{background:var(--brand);color:#fff}
body.warm .hero-card{background:var(--yellow)}
body.warm .hero-card .chip-time{background:var(--ink);color:#FFF6D8}
body.warm .badge{border-color:var(--line)}

.invite-hero{position:relative;text-align:center;background:var(--yellow);border-radius:24px;padding:24px 16px 18px;overflow:hidden}
.invite-hero .tag{font-size:11px;letter-spacing:.2em;opacity:.75}
.invite-hero h1{font-size:30px;line-height:1.25;margin:12px 0 8px;white-space:pre-line;text-wrap:balance}
.invite-hero p{margin:0;font-size:14px;line-height:1.7}
.invite-hero .cup{width:150px;height:150px;display:block;margin:6px auto 0}
.invite-hero .spark{position:absolute;color:#FFF5C5;font-size:40px;line-height:1}
.invite-hero .s1{left:18px;top:90px;transform:rotate(12deg)}.invite-hero .s2{right:20px;top:30px;font-size:24px}
.host-words{display:flex;gap:12px;align-items:center;padding:16px 2px}
.host-words .avatar{flex:none;width:40px;height:40px;border-radius:50%;background:var(--tea-2);display:grid;place-items:center;font-weight:800}
.host-words p{margin:2px 0 0;color:var(--muted);font-size:14px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 16px}
.facts div{background:var(--tea);border-radius:14px;padding:12px;font-size:13px;line-height:1.6;min-width:0}
.facts b{display:block;font-size:14px}
.fine{font-size:13px;text-align:center;color:var(--muted);line-height:1.7;margin:10px 0}
.code-line{font-size:13px;text-align:center;color:var(--muted)}
.state-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center;font-weight:600;margin:12px 0}

.step-title{font-size:24px;margin:14px 0 4px}
.sub{color:var(--muted);font-size:14px;line-height:1.7;margin:0}
.moods{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 4px}
.mood-chip{border:1px solid var(--line);background:transparent;border-radius:999px;padding:9px 14px;font-size:14px;color:var(--muted);cursor:pointer;min-height:44px}
.mood-chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}
.drink-list{list-style:none;margin:8px 0 0;padding:0}
.drink-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:12px 0;text-decoration:none;color:var(--ink);min-height:72px}
.drink-row .mini{flex:none;width:56px;height:64px;border-radius:14px;display:grid;place-items:center;background:var(--tea)}
.drink-row .mini svg{width:44px;height:56px}
.drink-row .txt{min-width:0}
.drink-row h3{font-size:16px;margin:0 0 2px}
.drink-row small{color:var(--muted);font-size:12px;display:block}
.drink-row .price{font-weight:800;font-size:14px}
.drink-row .add{margin-left:auto;flex:none;width:36px;height:36px;border-radius:50%;background:var(--tea);color:var(--brand);display:grid;place-items:center;font-size:22px}
.random{border:1.5px dashed #C7CFB9;border-radius:14px;background:var(--tea);color:var(--brand);padding:14px;width:100%;font-size:14px;margin-top:16px;cursor:pointer;min-height:48px}
.pick-result{background:var(--yellow-soft);border-radius:16px;padding:16px;margin-top:12px;text-align:center}
.pick-result .row{display:flex;gap:10px;justify-content:center;margin-top:12px;flex-wrap:wrap}

.detail-art{background:var(--tea-2);border-radius:22px;text-align:center;padding:12px;margin:8px 0 14px}
.detail-art svg{width:150px;height:150px}
.option-title{font-weight:700;margin:18px 0 8px}
.choice-row{display:flex;gap:8px;flex-wrap:wrap}
.choice-row label{flex:1;min-width:88px}
.choice-row input{position:absolute;opacity:0;pointer-events:none}
.choice-row span{display:block;text-align:center;border:1.5px solid var(--line);border-radius:999px;padding:10px 8px;background:#fff;min-height:44px}
.choice-row input:checked+span{background:var(--brand);border-color:var(--brand);color:#fff}
.choice-row input:focus-visible+span{outline:3px solid #DFAA2A;outline-offset:2px}

.success{text-align:center;padding:18px 0 4px}
.success .check{width:56px;height:56px;border-radius:50%;background:var(--tea-2);display:grid;place-items:center;margin:auto;font-size:26px}
.success h1{font-size:24px;line-height:1.4;margin:16px 0 8px}
.status-line{display:inline-block;background:var(--tea);border-radius:999px;padding:6px 14px;font-size:14px;margin-top:6px}
.ticket{background:#F3EFD9;border-radius:18px;padding:18px;position:relative;margin:18px 0}
.ticket small{color:#7C836D;font-size:11px;letter-spacing:.08em}
.ticket .big{font-size:20px;font-weight:800;margin:8px 0 4px}
.ticket .spec{font-size:15px}
.ticket .foot{border-top:1px dashed #CBD0B6;margin-top:14px;padding-top:12px;font-size:13px}
.reply{background:var(--tea);border-radius:18px;padding:16px;margin-top:16px}
.reply h2{font-size:17px;margin:0 0 4px}
.quick{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.quick button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 12px;font-size:13px;color:var(--ink);cursor:pointer;min-height:44px}
.reply textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px;font:inherit;font-size:16px;background:#fff;color:var(--ink);resize:vertical}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin:10px 0;color:var(--muted)}
.consent input{width:20px;height:20px;margin-top:2px;flex:none}
.burst{position:fixed;left:50%;top:30%;pointer-events:none;font-size:22px;animation:burst .9s ease-out forwards;z-index:20}
@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(120deg);opacity:0}}
@media (prefers-reduced-motion: reduce){.burst{display:none}}

.share-area .poster{max-width:300px}
.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.share-actions .btn{margin:0;font-size:15px;padding:12px}
.share-msg{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:10px;font:inherit;font-size:14px;resize:vertical;background:#fff;color:var(--ink)}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:12px;padding:12px 16px;font-size:14px;z-index:30;max-width:90vw}
.notes{list-style:none;padding:0;margin:0}
.notes li{padding:10px 0;border-bottom:1px solid var(--line)}
.notes li:last-child{border-bottom:0}
.tagline{font-size:12px;color:var(--ok);margin-left:6px}
.back{display:inline-block;padding:10px 0;font-size:14px;text-decoration:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.env-banner{background:#B3261E;color:#fff;text-align:center;font-size:13px;font-weight:700;padding:6px 16px}
@media (max-width:360px){.topbar .logo{height:17px}.topbar .lang a{margin-left:8px;font-size:13px}.topbar-in{padding:10px 12px}}
