
:root{
  --bg:#F5F6F2;--surface:#FFFFFF;--ink:#15201B;--muted:#56635C;--line:#E2E6E3;--line-soft:#EEF1EE;--field:#D5DBD7;
  --brand:#0F5C46;--brand-press:#0A4434;--on-brand:#FFFFFF;--hero-sub:#D6EBE3;--tint:#E3EFEA;--tint-ink:#0B4A38;
  --danger:#A3311A;--danger-line:#F0C9BE;--warn-bg:#FBEBC8;--warn-ink:#5A3800;--chip:#ECEFEC;--focus:#CFE5DC;
  --b-draft-bg:#ECEFEC;--b-draft:#3F4A44;--b-ready-bg:#FBEBC8;--b-ready:#6B4200;--b-sent-bg:#DDF0E7;--b-sent:#0B4A38;--b-done-bg:#DCE6FA;--b-done:#1F3A8A;
  --bubble-bg:#E6EFE9;--scrim:rgba(21,32,27,.5);
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1513;--surface:#18201D;--ink:#E9EFEC;--muted:#9AA8A1;--line:#2A3430;--line-soft:#222B27;--field:#3A4741;
    --brand:#1E7A5C;--brand-press:#18664C;--on-brand:#FFFFFF;--hero-sub:#CFE5DC;--tint:#1D3029;--tint-ink:#9FD9C2;
    --danger:#F08A73;--danger-line:#5A2A20;--warn-bg:#3A2E12;--warn-ink:#F3D08A;--chip:#26302C;--focus:#2C5546;
    --b-draft-bg:#2A3430;--b-draft:#C9D3CE;--b-ready-bg:#3A2E12;--b-ready:#F3D08A;--b-sent-bg:#173A2D;--b-sent:#9FD9C2;--b-done-bg:#1E2A47;--b-done:#B7C8F2;
    --bubble-bg:#1D2925;--scrim:rgba(0,0,0,.6);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1513;--surface:#18201D;--ink:#E9EFEC;--muted:#9AA8A1;--line:#2A3430;--line-soft:#222B27;--field:#3A4741;
  --brand:#1E7A5C;--brand-press:#18664C;--on-brand:#FFFFFF;--hero-sub:#CFE5DC;--tint:#1D3029;--tint-ink:#9FD9C2;
  --danger:#F08A73;--danger-line:#5A2A20;--warn-bg:#3A2E12;--warn-ink:#F3D08A;--chip:#26302C;--focus:#2C5546;
  --b-draft-bg:#2A3430;--b-draft:#C9D3CE;--b-ready-bg:#3A2E12;--b-ready:#F3D08A;--b-sent-bg:#173A2D;--b-sent:#9FD9C2;--b-done-bg:#1E2A47;--b-done:#B7C8F2;
  --bubble-bg:#1D2925;--scrim:rgba(0,0,0,.6);
  color-scheme:dark;
}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);height:100%;background:var(--bg)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
body{height:100%;margin:0;background:var(--bg);color:var(--ink);font-family:'Plus Jakarta Sans','Segoe UI',system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font-family:inherit;color:inherit}
#app{height:100%;max-width:480px;margin:0 auto;background:var(--bg);position:relative;overflow:hidden}
@media (min-width:520px){#app{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
.screen{height:100%;display:flex;flex-direction:column}
.scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
h1,h2,p{margin:0}

/* top bars */
.topbar{flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--line);padding:12px 12px 12px;display:flex;align-items:center;gap:8px;min-height:68px}
.topbar .titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.topbar h1{font-size:18px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .sub{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tabhead{flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--line);padding:20px 20px 14px;display:flex;flex-direction:column;gap:14px}
.tabhead .line{display:flex;align-items:center;justify-content:space-between;gap:12px}
.tabhead h1{font-size:24px;font-weight:800;letter-spacing:-.4px}
.iconbtn{width:44px;height:44px;flex-shrink:0;border:none;border-radius:12px;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink)}
.iconbtn.tinted{background:var(--tint);color:var(--brand)}
.iconbtn svg{width:22px;height:22px}

/* buttons */
.btn{height:56px;border:none;border-radius:14px;padding:0 18px;font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;text-decoration:none;width:100%;transition:background-color .15s}
.btn svg{width:20px;height:20px;flex-shrink:0}
.btn-primary{background:var(--brand);color:var(--on-brand)}
.btn-primary:active{background:var(--brand-press)}
.btn-outline{background:var(--surface);color:var(--ink);border:1.5px solid var(--field)}
.btn-danger{background:var(--surface);color:var(--danger);border:1.5px solid var(--danger-line)}
.btn-sm{height:46px;font-size:14px;border-radius:12px;padding:0 12px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.linkbtn{min-height:44px;border:none;background:transparent;padding:0 6px;display:inline-flex;align-items:center;gap:6px;font-size:15px;font-weight:700;color:var(--brand);cursor:pointer;text-decoration:none}
.linkbtn svg{width:18px;height:18px}
.footer{flex-shrink:0;background:var(--surface);border-top:1px solid var(--line);padding:14px 16px 18px;display:flex;flex-direction:column;gap:10px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}

/* forms */
.form{padding:20px;display:flex;flex-direction:column;gap:18px}
.field{display:flex;flex-direction:column;gap:8px}
.label{font-size:15px;font-weight:700}
.label .opt{font-weight:500;color:var(--muted)}
.input{height:54px;width:100%;padding:0 16px;border:1.5px solid var(--field);border-radius:14px;background:var(--surface);font-size:17px;color:var(--ink);min-width:0}
textarea.input{height:auto;padding:14px 16px;line-height:1.4;resize:none}
select.input{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2356635C' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.input::placeholder{color:#8A958F}
.input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus)}
.input[aria-invalid="true"]{border-color:var(--danger)}
.phone{display:flex;gap:8px}
.phone select{width:108px;flex-shrink:0;font-weight:600}
.hint{font-size:13px;color:var(--muted)}
.err{font-size:13px;font-weight:600;color:var(--danger)}
.err:empty{display:none}
.divider{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;color:var(--muted)}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--field);background:var(--surface);font-size:15px;font-weight:700;cursor:pointer;color:var(--ink);flex-shrink:0}
.chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.chips.scrollx{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}
.chip.sm{height:40px;font-size:14px}

/* cards & lists */
.section{padding:24px 16px 0;display:flex;flex-direction:column;gap:12px}
.section:last-child{padding-bottom:24px}
.sechead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sechead h2{font-size:19px;font-weight:800}
.sechead .meta{font-size:13px;color:var(--muted)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:18px}
.list{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.rowlink{width:100%;min-height:68px;padding:12px 14px;border:none;border-bottom:1px solid var(--line-soft);background:var(--surface);display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;color:var(--ink)}
.list > :last-child{border-bottom:none}
.rowlink .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.rowlink .t{font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rowlink .s{font-size:13px;color:var(--muted)}
.chev{width:18px;height:18px;flex-shrink:0;color:#8A958F}
.avatar{width:44px;height:44px;flex-shrink:0;border-radius:12px;background:var(--tint);color:var(--brand);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800}
.badge{flex-shrink:0;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.b-draft{background:var(--b-draft-bg);color:var(--b-draft)}
.b-ready{background:var(--b-ready-bg);color:var(--b-ready)}
.b-sent{background:var(--b-sent-bg);color:var(--b-sent)}
.b-done{background:var(--b-done-bg);color:var(--b-done)}
.b-off{background:var(--danger-line);color:var(--danger)}
.planbox{padding:16px;display:flex;flex-direction:column;gap:12px}
.planbox .price{font-size:30px;font-weight:800;letter-spacing:-.5px}
.planbox .price small{font-size:15px;font-weight:600;color:var(--muted)}
.alert{border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.alert.off{background:var(--surface);border:1.5px solid var(--danger-line)}
.alert.off .h{color:var(--danger)}
.alert.warn{background:var(--warn-bg);color:var(--warn-ink)}
.alert.trial{background:var(--tint);color:var(--tint-ink)}
.alert .h{font-size:16px;font-weight:800}
.alert p{font-size:14px;line-height:1.45}
.alert .row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.supcard{padding:16px;display:flex;flex-direction:column;gap:14px}
.supcard .top{display:flex;align-items:center;gap:12px}
.supcard .info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.supcard .name{font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.supcard .ph{font-size:13px;color:var(--muted)}
.supcard .count{flex-shrink:0;font-size:13px;font-weight:600;color:var(--muted)}
.kv{padding:6px 16px}
.kv .r{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line-soft);font-size:14px}
.kv .r:last-child{border-bottom:none}
.kv .k{color:var(--muted);flex-shrink:0}
.kv .v{font-weight:700;text-align:right;overflow-wrap:anywhere}
.stack{display:flex;flex-direction:column;gap:10px}
.empty{padding:28px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.empty p{font-size:15px;line-height:1.5;color:var(--muted);max-width:30ch}
.empty .ic{width:56px;height:56px;border-radius:16px;background:var(--tint);color:var(--brand);display:flex;align-items:center;justify-content:center}
.empty .ic svg{width:28px;height:28px}
.note{display:flex;gap:10px;padding:12px 14px;border-radius:12px;font-size:13px;line-height:1.45}
.note svg{width:18px;height:18px;flex-shrink:0;margin-top:1px}
.note.warn{background:var(--warn-bg);color:var(--warn-ink)}
.note.tint{background:var(--tint);color:var(--tint-ink)}

/* hero */
.hero{background:var(--brand);padding:24px 24px 28px;border-radius:0 0 28px 28px;display:flex;flex-direction:column;gap:20px;color:var(--on-brand)}
.hero .hi{font-size:14px;color:var(--hero-sub)}
.hero .shop{font-size:24px;font-weight:800;letter-spacing:-.5px;overflow-wrap:anywhere}
.hero .me{width:46px;height:46px;flex-shrink:0;border-radius:50%;background:#FFFFFF;color:#0F5C46;border:none;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;cursor:pointer}
.hero .cta{height:56px;border:none;border-radius:16px;background:#FFFFFF;color:#0F5C46;font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer}
.hero .cta svg{width:22px;height:22px}
.quick{padding:24px 16px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.quick button{min-height:92px;padding:14px 8px;border-radius:16px;background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:var(--ink);font-size:13px;font-weight:700}
.quick svg{width:26px;height:26px;color:var(--brand)}

/* welcome */
.welcome .hero{padding:48px 28px 40px;border-radius:0 0 32px 32px;gap:28px}
.logo{display:flex;align-items:center;gap:12px}
.logo .mark{width:52px;height:52px;border-radius:16px;background:#FFFFFF;color:#0F5C46;display:flex;align-items:center;justify-content:center}
.logo .mark svg{width:28px;height:28px}
.logo .word{font-size:26px;font-weight:800;letter-spacing:-.5px}
.welcome h1{font-size:32px;line-height:1.15;font-weight:800;letter-spacing:-.8px}
.welcome .lead{font-size:16px;line-height:1.5;color:var(--hero-sub)}
.steps{padding:32px 28px 8px;display:flex;flex-direction:column;gap:20px}
.steps .h{font-size:14px;font-weight:700;color:var(--muted)}
.step{display:flex;align-items:center;gap:16px}
.step .i{width:48px;height:48px;flex-shrink:0;border-radius:14px;background:var(--tint);color:var(--brand);display:flex;align-items:center;justify-content:center}
.step .i svg{width:24px;height:24px}
.step .a{font-size:17px;font-weight:700}
.step .b{font-size:14px;color:var(--muted)}

/* order entry */
.prow{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 12px 12px 16px;display:flex;align-items:center;gap:10px;transition:opacity .15s}
.prow.zero{opacity:.62}
.prow .main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.prow .n{font-size:16px;font-weight:700;overflow-wrap:anywhere}
.prow .d{font-size:13px;color:var(--muted)}
.stepper{flex-shrink:0;display:flex;align-items:center;gap:6px}
.stepper button{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.stepper .dec{border:1.5px solid var(--field);background:var(--surface);color:var(--ink)}
.stepper .inc{border:none;background:var(--brand);color:var(--on-brand)}
.stepper svg{width:18px;height:18px}
.qty{width:56px;height:44px;border:1.5px solid var(--field);border-radius:12px;text-align:center;font-size:18px;font-weight:800;background:var(--surface);color:var(--ink);-moz-appearance:textfield}
.qty::-webkit-inner-spin-button,.qty::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.qty:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--focus)}
.sum{display:flex;justify-content:space-between;font-size:14px}
.sum .k{color:var(--muted)}
.sum .v{font-weight:800}

/* message preview */
.otable{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.otable table{width:100%;border-collapse:collapse;font-size:15px}
.otable th{background:var(--brand);color:var(--on-brand);font-size:13px;font-weight:700;text-align:left;padding:12px 14px}
.otable td{padding:12px 14px;border-top:1px solid var(--line-soft);vertical-align:middle}
.otable tbody tr:nth-child(even) td{background:var(--bg)}
.otable .no{width:40px;color:var(--muted);font-weight:700}
.otable .q{text-align:right;width:76px;font-weight:800;white-space:nowrap}
.otable th.q{font-weight:700}
.otable .nm{font-weight:700;overflow-wrap:anywhere}
.otable .sb{display:block;font-size:12.5px;font-weight:500;color:var(--muted);margin-top:2px}
.otable tfoot td{background:var(--tint);color:var(--tint-ink);font-weight:800;border-top:1.5px solid var(--line)}
.mono{display:block;font-family:ui-monospace,'SF Mono',Menlo,Consolas,'Roboto Mono',monospace;font-size:12.5px;line-height:1.45;white-space:pre;overflow-x:auto;margin:4px 0}
details.msg{background:var(--surface);border:1px solid var(--line);border-radius:18px}
details.msg summary{min-height:52px;padding:0 16px;display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700;cursor:pointer;list-style:none}
details.msg summary::-webkit-details-marker{display:none}
details.msg summary .chev{transition:transform .15s}
details.msg[open] summary .chev{transform:rotate(90deg)}
details.msg .bubblewrap{margin:0 12px 12px}
.bubblewrap{background:var(--bubble-bg);border-radius:18px;padding:14px}
.bubble{background:var(--surface);border-radius:4px 14px 14px 14px;padding:14px 16px;font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}

/* success */
.success{padding:48px 24px 0;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}
.success .ring{width:96px;height:96px;border-radius:50%;background:var(--b-sent-bg);display:flex;align-items:center;justify-content:center}
.success .dot{width:64px;height:64px;border-radius:50%;background:var(--brand);color:var(--on-brand);display:flex;align-items:center;justify-content:center}
.success .dot svg{width:34px;height:34px}
.success h1{font-size:26px;font-weight:800;letter-spacing:-.5px}
.success p{font-size:15px;line-height:1.5;color:var(--muted)}
.success .card{width:100%;text-align:left}

/* nav */
.nav{flex-shrink:0;height:72px;padding:6px 8px 10px;background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.nav button{border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
.nav button svg{width:24px;height:24px}
.nav button[aria-current="page"]{color:var(--brand);font-weight:800}

/* sheet & toast */
.backdrop{position:absolute;inset:0;background:var(--scrim);display:flex;flex-direction:column;justify-content:flex-end;z-index:20;animation:fade .15s ease-out}
.sheet{background:var(--surface);border-radius:24px 24px 0 0;padding:14px 20px 24px;display:flex;flex-direction:column;gap:14px;max-height:85%;overflow-y:auto;animation:up .2s ease-out}
.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--field);align-self:center}
.sheet h2{font-size:20px;font-weight:800}
.sheet p{font-size:15px;line-height:1.5;color:var(--muted)}
.sheet p strong{color:var(--ink)}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes up{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
.toast{position:absolute;left:16px;right:16px;bottom:96px;z-index:30;background:var(--ink);color:var(--bg);padding:14px 16px;border-radius:14px;font-size:15px;font-weight:600;text-align:center;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;pointer-events:none}
.toast.show{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.searchwrap{position:relative}
.searchwrap svg{position:absolute;left:14px;top:15px;width:18px;height:18px;color:var(--muted)}
.searchwrap .input{height:48px;padding-left:42px;background:var(--bg);font-size:16px}
