:root{--teal:#0e9271;--teal-dark:#0a6e55;--teal-deep:#075843;--teal-soft:#e2f5ee;--teal-tint:#f1faf6;--ink:#0f1f19;--ink-2:#3c4d46;--muted:#71827b;--faint:#9aa8a2;--line:#e5ece8;--line-2:#d8e2dd;--bg:#f4f7f5;--card:#fff;--amber:#b97507;--amber-soft:#fdf3df;--red:#c23a2c;--red-soft:#fbeae8;--blue:#2b6ca3;--blue-soft:#e9f2f9;--violet:#6a4fd6;--violet-soft:#efeafc;--rose:#c0457d;--rose-soft:#fbe9f2;--shadow-xs:0 1px 2px #0f1f190d;--shadow:0 1px 2px #0f1f190a,0 4px 14px #0f1f190d;--shadow-md:0 2px 6px #0f1f190f,0 10px 28px #0f1f1917;--shadow-lg:0 10px 44px #0f1f1929;--r:16px;--r-sm:12px;--r-lg:22px;--ease-out:cubic-bezier(.16,1,.3,1);--ease-spring:cubic-bezier(.34,1.35,.5,1);--dur-1:.15s;--dur-2:.25s;--dur-3:.38s;--font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;touch-action:manipulation;background:#dde5e0;font-size:15px;line-height:1.45}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:15px}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:6px}@keyframes ff-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes ff-pop{0%{opacity:0;transform:scale(.55)}70%{transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes ff-fade{0%{opacity:0}to{opacity:1}}@keyframes ffspin{to{transform:rotate(360deg)}}@keyframes ff-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes ff-pulse{0%,to{opacity:1}50%{opacity:.35}}.pad>:not(.sheet-bg){animation:ff-rise var(--dur-3) var(--ease-out) backwards}.pad>:first-child{animation-delay:20ms}.pad>:nth-child(2){animation-delay:60ms}.pad>:nth-child(3){animation-delay:.1s}.pad>:nth-child(4){animation-delay:.14s}.pad>:nth-child(5){animation-delay:.18s}.pad>:nth-child(6){animation-delay:.22s}.pad>:nth-child(7){animation-delay:.26s}.pad>:nth-child(n+8){animation-delay:.3s}.skeleton{background:linear-gradient(90deg,var(--line) 25%,var(--line-2) 50%,var(--line) 75%);color:#0000;background-size:200% 100%;border-radius:10px;animation:1.4s linear infinite ff-shimmer}#app{background:radial-gradient(120% 60% at 50% -10%,#e4f4ed 0%,var(--bg) 55%);flex-direction:column;max-width:440px;min-height:100dvh;margin:0 auto;display:flex;position:relative;box-shadow:0 0 60px #00000024}.screen{-webkit-overflow-scrolling:touch;flex:1;padding-bottom:96px;overflow-y:auto}.screen.no-nav{padding-bottom:24px}.topbar{z-index:20;-webkit-backdrop-filter:blur(16px)saturate(1.6);border-bottom:1px solid var(--line);background:#ffffffdb;align-items:center;gap:12px;min-height:56px;padding:14px 18px;display:flex;position:sticky;top:0}.topbar h1{letter-spacing:-.015em;font-size:19px;font-weight:700}.topbar button,.topbar a{white-space:nowrap}.topbar .sub{color:var(--muted);font-size:12px;font-weight:500}.topbar .back{width:40px;height:40px;transition:background var(--dur-1),transform var(--dur-1);border-radius:12px;place-items:center;margin-left:-8px;display:grid}.topbar .back:active{background:var(--line);transform:scale(.92)}.topbar .spacer{flex:1}.topbar .action{width:40px;height:40px;color:var(--ink-2);transition:background var(--dur-1),transform var(--dur-1);border-radius:12px;place-items:center;display:grid;position:relative}.topbar .action:active{background:var(--line);transform:scale(.92)}.topbar .action.wide{align-items:center;gap:6px;width:auto;padding:0 10px;font-size:13px;font-weight:600;display:flex}.pad{padding:18px}.row{align-items:center;gap:12px;display:flex}.col{flex-direction:column;display:flex}.between{justify-content:space-between;align-items:center;gap:12px;display:flex}.wrap{flex-wrap:wrap}.grow{flex:1}.gap8{gap:8px}.gap6{gap:6px}.gap16{gap:16px}.mt4{margin-top:4px}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt20{margin-top:20px}.mt24{margin-top:24px}.center{text-align:center}.hide{display:none!important}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);transition:box-shadow var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out)}.card.pad{padding:18px}.card-btn{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--r);width:100%;box-shadow:var(--shadow);transition:transform var(--dur-1) var(--ease-out),box-shadow var(--dur-2),background var(--dur-1);align-items:center;gap:14px;padding:16px 18px;display:flex}.card-btn:active{background:var(--teal-tint);transform:scale(.98)}@media (hover:hover){.card-btn:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}}.list{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}.list-item{border-bottom:1px solid var(--line);transition:background var(--dur-1);align-items:center;gap:13px;padding:15px 18px;display:flex}.list-item:last-child{border-bottom:none}.list-item.tap:active{background:var(--teal-tint)}@media (hover:hover){.list-item.tap:hover{background:var(--teal-tint)}}.h-lg{letter-spacing:-.02em;font-size:23px;font-weight:700}.h-md{letter-spacing:-.01em;font-size:18px;font-weight:650}.h-sm{font-size:15px;font-weight:600}.label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.muted{color:var(--muted)}.faint{color:var(--faint)}.sec-title{color:var(--ink-2);text-transform:uppercase;letter-spacing:.07em;align-items:center;gap:8px;padding:0 4px 10px;font-size:12.5px;font-weight:700;display:flex}.sec-title:before{content:"";background:var(--teal);border-radius:2px;flex:none;width:3px;height:12px}.big-num{letter-spacing:-.03em;font-size:34px;font-weight:750;line-height:1}.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.btn{white-space:nowrap;background:linear-gradient(180deg,#12a37f,var(--teal) 55%,var(--teal-dark));color:#fff;height:52px;transition:transform var(--dur-1) var(--ease-out),box-shadow var(--dur-2),filter var(--dur-1);border-radius:14px;justify-content:center;align-items:center;gap:8px;width:100%;padding:0 18px;font-size:15.5px;font-weight:650;display:inline-flex;box-shadow:0 1px 2px #07584359,0 6px 18px #0e927152,inset 0 1px #ffffff2e}.btn:active{filter:brightness(.94);transform:scale(.97);box-shadow:0 1px 2px #07584359,0 3px 8px #0e927140}@media (hover:hover){.btn:hover{filter:brightness(1.05);box-shadow:0 2px 4px #0758434d,0 10px 26px #0e927166,inset 0 1px #ffffff2e}}.btn:disabled{opacity:.45;box-shadow:none;cursor:default;pointer-events:none}.btn.sec{background:var(--card);color:var(--ink);border:1px solid var(--line-2);box-shadow:var(--shadow-xs)}.btn.sec:active{background:var(--line);filter:none}.btn.ghost{background:var(--teal-soft);color:var(--teal-dark);box-shadow:none;border:1px solid #cfe9dd}.btn.ghost:active{filter:none;background:#d3ede2}.btn.danger{background:linear-gradient(180deg,#d4483a,var(--red) 60%,#a92e21);box-shadow:0 1px 2px #78190f4d,0 6px 18px #c23a2c4d}.btn.sm{border-radius:11px;width:auto;height:40px;padding:0 15px;font-size:13.5px}.btn.xs{border-radius:9px;width:auto;height:34px;padding:0 12px;font-size:12.5px;font-weight:600}.btn .gw-spin{border-width:2.5px;width:18px;height:18px;margin:0}.field{margin-bottom:15px}.field label{color:var(--ink-2);margin-bottom:7px;font-size:12.5px;font-weight:600;display:block}.input{border:1px solid var(--line-2);width:100%;height:50px;color:var(--ink);transition:border-color var(--dur-2),box-shadow var(--dur-2);background:#fff;border-radius:13px;outline:none;padding:0 15px}.input:focus{border-color:var(--teal);box-shadow:0 0 0 4px var(--teal-soft)}textarea.input{resize:vertical;height:auto;min-height:88px;padding:13px 15px;line-height:1.5}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%237a8a83' stroke-width='2.2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat}[data-theme=dark] .input{background:var(--card)}.pill{background:var(--teal-soft);color:var(--teal-dark);animation:ff-fade var(--dur-2) var(--ease-out);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:12px;font-weight:600;display:inline-flex}.pill.gray{background:var(--line);color:var(--ink-2)}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.red{background:var(--red-soft);color:var(--red)}.dot{background:var(--teal);border-radius:50%;flex:none;width:8px;height:8px}.st-received{background:var(--blue-soft);color:var(--blue)}.st-processing{background:var(--amber-soft);color:var(--amber)}.st-processing:before{content:"";background:var(--amber);border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite ff-pulse}.st-ready{background:var(--teal-soft);color:var(--teal-dark)}.st-collected{background:var(--line);color:var(--ink-2)}.st-draft{background:var(--line);color:var(--muted)}.st-cancelled{background:var(--red-soft);color:var(--red)}.stars{gap:8px;display:flex}.stars button{color:var(--line-2);transition:transform var(--dur-1) var(--ease-spring),color var(--dur-1);font-size:30px;line-height:1}.stars button:active{transform:scale(1.25)}.stars button.on{color:#e8a92b}.gw-spin{border:4px solid var(--teal-soft);border-top-color:var(--teal);border-radius:50%;width:44px;height:44px;margin:0 auto;animation:.8s linear infinite ffspin}[data-theme=dark]{--teal:#2fb48a;--teal-dark:#7fe0c1;--teal-deep:#a8ecd6;--teal-soft:#12332a;--teal-tint:#0f1f1a;--ink:#e8efec;--ink-2:#b4c1bb;--muted:#8b9a93;--faint:#6f7d77;--line:#243430;--line-2:#31433d;--bg:#0d1512;--card:#141e1a;--amber:#e0a63a;--amber-soft:#2a2213;--red:#e8695b;--red-soft:#2c1815;--blue:#6db0e6;--blue-soft:#13273a;--violet:#b5a3f5;--violet-soft:#231c3d;--rose:#ef8fbb;--rose-soft:#3a1828;--shadow-xs:0 1px 2px #00000059;--shadow:0 1px 2px #0000004d,0 6px 20px #0006;--shadow-md:0 2px 6px #0006,0 10px 28px #00000080;--shadow-lg:0 10px 44px #0009}[data-theme=dark] body{background:#05100c}[data-theme=dark] #app{background:radial-gradient(120% 60% at 50% -10%,#0f2a21 0%,var(--bg) 55%)}[data-theme=dark] .btn.ghost{border-color:#1d4a3b}[data-theme=dark] #app{box-shadow:0 0 60px #0009}[data-theme=dark] .topbar{background:#141e1ae0}[data-theme=dark] .seg button.active{background:var(--card);color:var(--ink);box-shadow:none}[data-theme=dark] .step .qty,[data-theme=dark] .chip-toggle{background:var(--card)}[data-theme=dark] .tabbar{background:#141e1ae6}[data-theme=dark] #toast{background:#26332e}[data-theme=dark] .btn{color:#06231a;background:linear-gradient(#38c096,#2fb48a 55%,#249573);box-shadow:0 1px 2px #0006,0 6px 18px #2fb48a40}[data-theme=dark] .btn.danger{color:#2c0f0a;background:linear-gradient(#ec7a6d,#e8695b 60%,#cf4d3e)}[data-theme=dark] .skeleton{background:linear-gradient(90deg,var(--line) 25%,var(--line-2) 50%,var(--line) 75%);background-size:200% 100%}.tabbar{-webkit-backdrop-filter:blur(18px)saturate(1.6);border-top:1px solid var(--line);width:100%;max-width:440px;padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:30;background:#ffffffe6;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab{color:var(--faint);transition:color var(--dur-2);border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:7px 2px;font-size:10.5px;font-weight:600;display:flex;position:relative}.tab svg{width:23px;height:23px;transition:transform var(--dur-2) var(--ease-spring)}.tab:active svg{transform:scale(.85)}.tab.active{color:var(--teal-dark);background:var(--teal-soft)}.tab.active svg{transform:translateY(-1px)scale(1.06)}.tab.active:after{display:none}.tab .badge{background:var(--red);color:#fff;min-width:16px;height:16px;animation:ff-pop var(--dur-3) var(--ease-spring);border-radius:8px;place-items:center;margin-left:16px;padding:0 4px;font-size:9px;font-weight:700;display:grid;position:absolute;top:2px}.seg{background:var(--line);border-radius:13px;gap:4px;padding:4px;display:flex}.seg button{height:38px;color:var(--muted);transition:background var(--dur-2) var(--ease-out),color var(--dur-2),box-shadow var(--dur-2),transform var(--dur-1);border-radius:10px;flex:1;font-size:13.5px;font-weight:600}.seg button:active{transform:scale(.96)}.seg button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0000001a}.tl{padding-left:8px;position:relative}.tl-item{gap:14px;padding-bottom:22px;display:flex;position:relative}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";background:var(--line-2);width:2px;position:absolute;top:22px;bottom:0;left:9px}.tl-item:last-child:before{display:none}.tl-dot{background:var(--line-2);z-index:1;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;display:grid}.tl-item.done .tl-dot{background:var(--teal);animation:ff-pop var(--dur-3) var(--ease-spring) backwards}.tl-item.done:before{background:var(--teal)}#toast{z-index:200;background:var(--ink);color:#fff;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;max-width:380px;transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-3) var(--ease-spring);text-align:center;border-radius:14px;padding:12px 18px;font-size:13.5px;font-weight:550;position:fixed;bottom:96px;left:50%;transform:translate(-50%)translateY(14px)scale(.96)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)scale(1)}#toast.err{background:var(--red)}.sheet-bg{-webkit-backdrop-filter:blur(3px);z-index:100;opacity:0;transition:opacity var(--dur-2);background:#0a141080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-bg.show{opacity:1}.sheet{background:var(--bg);width:100%;max-width:440px;padding:8px 18px calc(24px + env(safe-area-inset-bottom));max-height:90vh;transition:transform var(--dur-3) var(--ease-spring);border-radius:22px 22px 0 0;overflow-y:auto;transform:translateY(100%);box-shadow:0 -12px 48px #00000038}.sheet-bg.show .sheet{transform:translateY(0)}.sheet .grab{background:var(--line-2);border-radius:2px;width:38px;height:4px;margin:8px auto 14px}.step{align-items:center;gap:14px;display:flex}.step .qty{border:1px solid var(--line-2);background:#fff;border-radius:11px;align-items:center;gap:0;display:flex;overflow:hidden}.step .qty button{width:40px;height:40px;color:var(--teal);transition:background var(--dur-1),transform var(--dur-1);place-items:center;font-size:20px;font-weight:600;display:grid}.step .qty button:active{background:var(--teal-tint);transform:scale(.9)}.step .qty span{text-align:center;font-variant-numeric:tabular-nums;min-width:34px;font-weight:650}.divider{background:var(--line);height:1px;margin:14px 0}.kv{justify-content:space-between;align-items:baseline;padding:7px 0;font-size:14.5px;display:flex}.kv .k{color:var(--ink-2)}.kv.total{border-top:1px dashed var(--line-2);margin-top:6px;padding-top:12px;font-size:17px;font-weight:700}.avatar{background:linear-gradient(145deg,var(--teal-soft),#d2ecdf);width:44px;height:44px;color:var(--teal-dark);border-radius:13px;flex:none;place-items:center;font-size:16px;font-weight:700;display:grid}[data-theme=dark] .avatar{background:linear-gradient(145deg,var(--teal-soft),#0d2e24)}.icon-tile{background:var(--teal-soft);width:44px;height:44px;color:var(--teal-dark);border-radius:13px;flex:none;place-items:center;display:grid}.empty{text-align:center;color:var(--muted);padding:56px 24px}.empty svg{width:52px;height:52px;color:var(--line-2);animation:ff-pop var(--dur-3) var(--ease-spring);margin-bottom:14px}.chip-toggle{border:1px solid var(--line);box-shadow:var(--shadow-xs);background:#fff;border-radius:14px;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.switch{background:var(--line-2);width:48px;height:28px;transition:background var(--dur-2);border-radius:14px;flex:none;padding:0;position:relative}.switch:before{content:"";position:absolute;inset:-8px}.switch.on{background:var(--teal)}.switch:after{content:"";width:22px;height:22px;transition:left var(--dur-2) var(--ease-spring),width var(--dur-1);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch:active:after{width:26px}.switch.on:after{left:23px}.switch.on:active:after{left:19px}.otp-box{letter-spacing:.18em;color:var(--teal);font-variant-numeric:tabular-nums;text-align:center;font-size:38px;font-weight:750}.notif-dot{background:var(--red);width:9px;height:9px;animation:ff-pop var(--dur-3) var(--ease-spring);border:2px solid #fff;border-radius:50%;position:absolute;top:10px;right:11px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat-tile{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-xs);text-align:left;transition:transform var(--dur-1) var(--ease-out),box-shadow var(--dur-2);border-radius:14px;padding:14px 16px}.stat-tile.tap:active{background:var(--teal-tint);transform:scale(.98)}@media (hover:hover){.stat-tile.tap:hover{box-shadow:var(--shadow-md)}}.stat-tile{position:relative;overflow:hidden}.stat-tile:before{content:"";background:var(--teal);width:4px;position:absolute;top:0;bottom:0;left:0}.stat-tile:first-child{background:linear-gradient(135deg,var(--teal-tint),var(--card) 70%)}.stat-tile:first-child .stat-num{color:var(--teal-dark)}.stat-tile:nth-child(2):before{background:var(--amber)}.stat-tile:nth-child(2){background:linear-gradient(135deg,var(--amber-soft),var(--card) 70%)}.stat-tile:nth-child(2) .stat-num{color:var(--amber)}.stat-tile:nth-child(3):before{background:var(--blue)}.stat-tile:nth-child(3){background:linear-gradient(135deg,var(--blue-soft),var(--card) 70%)}.stat-tile:nth-child(3) .stat-num{color:var(--blue)}.stat-tile:nth-child(4):before{background:var(--violet)}.stat-tile:nth-child(4){background:linear-gradient(135deg,var(--violet-soft),var(--card) 70%)}.stat-tile:nth-child(4) .stat-num{color:var(--violet)}.stat-num{letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;font-size:24px;font-weight:750}.stat-lbl{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;font-size:11.5px;font-weight:600}.svc-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.svc-tile{align-items:center;gap:12px;min-height:68px;padding:14px;text-decoration:none;display:flex}.svc-tile .icon-tile{width:42px;height:42px}.svc-tile .svc-lbl{font-size:13.5px;font-weight:650;line-height:1.2}.svc-tile[data-svc=washIron] .icon-tile{background:var(--blue-soft);color:var(--blue)}.svc-tile[data-svc=washFold] .icon-tile{background:var(--teal-soft);color:var(--teal-dark)}.svc-tile[data-svc=ironOnly] .icon-tile{background:var(--amber-soft);color:var(--amber)}.svc-tile[data-svc=dryClean] .icon-tile{background:var(--rose-soft);color:var(--rose)}.mode-strip{background:var(--ink);color:#fff;letter-spacing:.02em;justify-content:center;align-items:center;gap:8px;padding:6px 14px;font-size:11.5px;font-weight:600;display:flex}.mode-strip .swap{color:#fff;background:#ffffff29;border-radius:8px;padding:3px 10px;font-size:11px;font-weight:600}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}