  :root{
    --ink:#1c2b20;
    --ink-soft:#2b4534;
    --ink-softer:#33513e;
    --paper:#f5f2e8;
    --paper-card:#fffdf8;
    --line:#e1dac2;
    --line-strong:#cfc7a9;
    --berry:#a8434b;
    --berry-soft:rgba(168,67,75,.12);
    --gold:#b9812c;
    --gold-soft:rgba(185,129,44,.14);
    --sage:#4f7355;
    --sage-soft:rgba(79,115,85,.14);
    --info:#4f6f8a;
    --info-soft:rgba(79,111,138,.14);
    --muted-dot:#8a8a72;
    --tag:#7a6a9e;
    --tag-soft:rgba(122,106,158,.14);
    --text-main:#24301f;
    --text-muted:#6f6e5e;
    --shadow-sm:0 1px 2px rgba(28,43,32,.06);
    --shadow-md:0 8px 24px rgba(28,43,32,.1);
    --radius:14px;
    --tab-h:64px;
    --safe-b: env(safe-area-inset-bottom, 0px);
    --safe-t: env(safe-area-inset-top, 0px);
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
  body{
    background:var(--paper);
    color:var(--text-main);
    font-family:-apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Heiti SC", Arial, sans-serif;
    font-size:15px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    min-height:100vh;
    min-height:100dvh;
    overflow-x:hidden;
    -webkit-tap-highlight-color:transparent;
  }
  button,.nav-item,.tab-btn,.chip,.icon-btn,a,input,select,textarea{-webkit-tap-highlight-color:transparent;}
  .nav-item,.tab-btn,.chip,.btn,.icon-btn{touch-action:manipulation;}
  h1,h2,h3,.font-display{font-family:Georgia,"Songti SC","STSong","Noto Serif CJK SC",serif;}
  .mono{font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;}
  button{font-family:inherit;}
  a{color:inherit;}
  ::selection{background:var(--gold-soft);}
  :focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

  /* ---------- layout shell ---------- */
  .app-shell{display:flex;min-height:100vh;}
  .sidebar{
    width:230px;flex-shrink:0;background:var(--ink);color:#eef1e9;
    padding:28px 18px 20px;display:flex;flex-direction:column;
    position:sticky;top:0;height:100vh;height:100dvh;
  }
  .brand{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;}
  .brand .mark{font-size:26px;font-weight:600;letter-spacing:.02em;}
  .brand .sub{font-size:11px;color:#b9c4b1;letter-spacing:.04em;}
  .sidebar-sub{font-size:12px;color:#9fae97;margin:2px 0 26px;}
  .nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;flex:1;}
  .nav-item{
    display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;
    color:#d8ddd0;cursor:pointer;font-size:14.5px;font-weight:500;
    transition:background .15s ease,color .15s ease;
  }
  .nav-item svg{width:18px;height:18px;flex-shrink:0;opacity:.9;}
  .nav-item:hover{background:var(--ink-soft);color:#fff;}
  .nav-item.active{background:var(--ink-softer);color:#fff;}
  .nav-item.active svg{opacity:1;}
  .sidebar-foot{border-top:1px solid rgba(255,255,255,.12);padding-top:14px;margin-top:10px;}
  .ghost-btn{
    background:none;border:1px solid rgba(255,255,255,.22);color:#cfd6c6;border-radius:9px;
    padding:8px 10px;font-size:12.5px;cursor:pointer;width:100%;text-align:left;
  }
  .ghost-btn:hover{background:rgba(255,255,255,.06);color:#fff;}

  .main{flex:1;min-width:0;padding:26px 30px 80px;max-width:1320px;}
  .topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap;}
  .topbar .date-line{font-size:13px;color:var(--text-muted);}
  .topbar h2{font-size:23px;margin:2px 0 0;font-weight:600;}
  .mobile-topbar{display:none;}

  .view{display:none;}
  .view.active{display:block;animation:fadeIn .32s ease;}
  @keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){.view.active{animation:none}}

  /* ---------- bottom tab (mobile) ---------- */
  .bottom-tab{
    display:none;position:fixed;left:0;right:0;bottom:0;z-index:40;
    background:var(--ink);border-top:1px solid rgba(255,255,255,.08);
    padding:8px 4px calc(8px + var(--safe-b));
  }
  .bottom-tab ul{list-style:none;margin:0;padding:0;display:flex;justify-content:space-between;}
  .bottom-tab li{flex:1;}
  .tab-btn{
    width:100%;background:none;border:none;color:#a9b5a0;display:flex;flex-direction:column;
    align-items:center;gap:3px;font-size:10.5px;padding:5px 2px;border-radius:10px;cursor:pointer;
  }
  .tab-btn svg{width:20px;height:20px;}
  .tab-btn.active{color:#fff;}
  .tab-btn.active svg{color:var(--gold);}

  /* ---------- cards / stat grid ---------- */
  .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px;}
  @media (max-width:520px){
    .stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;}
    .stat-card{padding:13px 14px;}
    .stat-card .value{font-size:20px;}
  }
  .stat-card{
    background:var(--paper-card);border:1px solid var(--line);border-radius:var(--radius);
    padding:16px 18px;box-shadow:var(--shadow-sm);
  }
  .stat-card .label{font-size:12.5px;color:var(--text-muted);display:flex;align-items:center;gap:6px;margin-bottom:8px;}
  .stat-card .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
  .stat-card .value{font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;font-size:25px;font-weight:600;letter-spacing:-.01em;}
  .stat-card .value small{font-size:13px;font-weight:500;color:var(--text-muted);margin-left:2px;}

  .panel{
    background:var(--paper-card);border:1px solid var(--line);border-radius:var(--radius);
    box-shadow:var(--shadow-sm);
  }
  .panel-head{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:16px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap;
  }
  .panel-head h3{margin:0;font-size:16.5px;font-weight:600;}
  .panel-head .hint{font-size:12px;color:var(--text-muted);}
  .panel-body{padding:6px 0;}
  .panel-body.pad{padding:16px 18px;}

  .overview-columns{display:grid;grid-template-columns:1.55fr 1fr;gap:18px;align-items:start;}
  @media (max-width:980px){.overview-columns{grid-template-columns:1fr;}}

  /* ---------- timeline ---------- */
  .timeline{list-style:none;margin:0;padding:14px 18px 18px;}
  .timeline li{position:relative;padding-left:22px;padding-bottom:18px;border-left:1.5px solid var(--line-strong);margin-left:5px;}
  .timeline li:last-child{border-color:transparent;padding-bottom:0;}
  .timeline li::before{content:'';position:absolute;left:-6.5px;top:2px;width:11px;height:11px;border-radius:50%;background:var(--paper-card);border:2px solid var(--sage);}
  .timeline li.overdue::before{border-color:var(--berry);}
  .timeline li.pending-flag::before{border-color:var(--gold);}
  .tl-time{font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;font-size:13px;color:var(--text-muted);}
  .tl-main{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px;flex-wrap:wrap;}
  .tl-title{font-weight:600;font-size:14.5px;}
  .tl-sub{font-size:12.5px;color:var(--text-muted);margin-top:2px;overflow-wrap:anywhere;}
  .tl-actions{display:flex;gap:6px;flex-shrink:0;}

  /* ---------- todo list ---------- */
  .todo-list{list-style:none;margin:0;padding:6px 12px 14px;display:flex;flex-direction:column;gap:2px;}
  .todo-item{display:flex;gap:10px;align-items:flex-start;padding:10px 6px;border-radius:10px;}
  .todo-item:hover{background:rgba(28,43,32,.035);}
  .todo-dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0;}
  .todo-dot.d-delivery{background:var(--sage);}
  .todo-dot.d-purchase{background:var(--gold);}
  .todo-dot.d-custom{background:var(--berry);}
  .todo-text{font-size:13.5px;overflow-wrap:anywhere;}
  .todo-tag{font-size:10.5px;color:var(--text-muted);}

  /* ---------- badges & chips ---------- */
  .badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;}
  .badge.pending{background:var(--gold-soft);color:#8a611c;}
  .badge.delivering{background:var(--info-soft);color:#3d5a70;}
  .badge.done{background:var(--sage-soft);color:#3d5c42;}
  .cat-dot{width:9px;height:9px;border-radius:3px;display:inline-block;flex-shrink:0;}
  .cat-flower{background:var(--sage);} .cat-pack{background:var(--gold);}
  .cat-supply{background:var(--info);} .cat-other{background:var(--muted-dot);}

  .chip-group{display:flex;gap:8px;flex-wrap:wrap;}
  .chip{padding:6px 13px;border-radius:999px;border:1px solid var(--line-strong);background:var(--paper-card);
    font-size:12.5px;cursor:pointer;color:var(--text-muted);}
  .chip.active{background:var(--ink);color:#fff;border-color:var(--ink);}
  select.chip{
    -webkit-appearance:none;appearance:none;font-family:inherit;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%236f6e5e' stroke-width='1.6'%3E%3Cpath d='M5 8l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 10px center;background-size:14px;padding-right:28px;
  }
  @media (max-width:899px){ select.chip{font-size:16px;padding:8px 30px 8px 13px;} }

  .search-box{display:flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:var(--paper-card);
    border-radius:10px;padding:8px 12px;min-width:200px;}
  .search-box input{border:none;outline:none;background:none;font-size:13.5px;width:100%;font-family:inherit;color:var(--text-main);}
  .search-box svg{width:15px;height:15px;color:var(--text-muted);flex-shrink:0;}

  .toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--line);}

  /* ---------- buttons ---------- */
  .btn{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:10px;padding:9px 15px;
    font-size:13.5px;font-weight:600;cursor:pointer;transition:filter .15s ease, transform .1s ease;}
  .btn:active{transform:scale(.98);}
  .btn svg{width:15px;height:15px;}
  .btn-primary{background:var(--ink);color:#fff;}
  .btn-primary:hover{filter:brightness(1.15);}
  .btn-accent{background:var(--berry);color:#fff;}
  .btn-accent:hover{filter:brightness(1.08);}
  .btn-ghost{background:var(--paper);color:var(--text-main);border:1px solid var(--line-strong);}
  .btn-ghost:hover{background:#efe9d6;}
  .btn-sm{padding:6px 11px;font-size:12px;border-radius:8px;}
  .icon-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px;display:inline-flex;}
  .icon-btn:hover{background:rgba(28,43,32,.06);color:var(--text-main);}
  .icon-btn svg{width:16px;height:16px;}

  /* ---------- data rows (responsive list) ---------- */
  .data-row{display:flex;align-items:center;gap:16px;padding:13px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
  .data-row:last-child{border-bottom:none;}
  .row-cell{flex:1 1 120px;min-width:0;}
  .row-cell.grow2{flex-grow:2;}
  .row-cell .cell-label{display:none;font-size:11px;color:var(--text-muted);}
  .row-cell .cell-val{font-size:13.8px;overflow-wrap:anywhere;}
  .row-cell .cell-val.strong{font-weight:600;}
  .row-cell.actions{flex:0 0 auto;display:flex;gap:4px;}
  .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tag-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;}
  .tag-pill{display:inline-flex;align-items:center;background:var(--tag-soft);color:var(--tag);
    padding:2px 9px;border-radius:999px;font-size:10.5px;font-weight:600;white-space:nowrap;}
  @media (max-width:680px){
    .data-row{flex-direction:column;align-items:stretch;gap:7px;padding:14px 16px;}
    .row-cell{display:flex;flex-direction:row;justify-content:space-between;align-items:baseline;gap:10px;}
    .row-cell .cell-label{display:inline-block;flex-shrink:0;}
    .row-cell.actions{justify-content:flex-end;align-items:center;border-top:1px dashed var(--line);padding-top:8px;margin-top:2px;}
  }

  .empty-state{text-align:center;padding:38px 16px;color:var(--text-muted);font-size:13.5px;}
  .empty-state svg{width:30px;height:30px;margin-bottom:8px;opacity:.5;}

  /* ---------- donut ---------- */
  .donut-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding:16px 18px 20px;}
  .donut{width:132px;height:132px;border-radius:50%;position:relative;flex-shrink:0;}
  .donut-hole{position:absolute;inset:20%;background:var(--paper-card);border-radius:50%;
    display:flex;flex-direction:column;align-items:center;justify-content:center;}
  .donut-hole .n{font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;font-weight:600;font-size:15px;}
  .donut-hole .t{font-size:10.5px;color:var(--text-muted);}
  .legend{display:flex;flex-direction:column;gap:9px;flex:1;min-width:180px;}
  .legend-row{display:flex;align-items:center;gap:8px;font-size:13px;}
  .legend-row .lg-label{flex:1;color:var(--text-main);}
  .legend-row .lg-pct{font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;font-size:12.5px;color:var(--text-muted);}

  /* ---------- forms & modal ---------- */
  .modal-overlay{position:fixed;inset:0;background:rgba(20,30,22,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
    display:none;align-items:center;justify-content:center;z-index:100;padding:16px;
    padding-top:calc(16px + var(--safe-t));padding-bottom:calc(16px + var(--safe-b));}
  .modal-overlay.open{display:flex;}
  .modal-box{background:var(--paper-card);border-radius:16px;padding:22px 22px 20px;width:100%;max-width:460px;
    max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-md);position:relative;}
  .modal-box h3{margin:0 0 14px;font-size:18px;}
  .field{margin-bottom:13px;}
  .field label{display:block;font-size:12.5px;color:var(--text-muted);margin-bottom:5px;}
  .field input,.field select,.field textarea{
    width:100%;border:1px solid var(--line-strong);background:var(--paper);border-radius:9px;
    padding:9px 11px;font-size:16px;font-family:inherit;color:var(--text-main);outline:none;
    -webkit-appearance:none;appearance:none;
  }
  .field select{
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%236f6e5e' stroke-width='1.6'%3E%3Cpath d='M5 8l5 5 5-5'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 10px center;background-size:16px;padding-right:32px;
  }
  .field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink-softer);background:var(--paper-card);}
  .field textarea{resize:vertical;min-height:56px;}
  .field-row{display:flex;gap:10px;}
  .field-row .field{flex:1;}

  /* ---------- tag editor ---------- */
  .tag-editor{border:1px solid var(--line-strong);border-radius:10px;padding:9px;background:var(--paper);}
  .tag-chips{display:flex;gap:6px;flex-wrap:wrap;}
  .tag-chips:not(:empty){margin-bottom:8px;}
  .tag-chip-edit{display:inline-flex;align-items:center;gap:5px;background:var(--tag-soft);color:var(--tag);
    padding:3px 8px 3px 10px;border-radius:999px;font-size:12px;font-weight:600;}
  .tag-chip-edit button{background:none;border:none;color:var(--tag);cursor:pointer;padding:0;display:flex;font-size:14px;line-height:1;}
  .tag-input-row{display:flex;gap:6px;}
  .tag-input-row input{flex:1;border:1px solid var(--line-strong);border-radius:8px;padding:7px 9px;
    font-size:16px;font-family:inherit;background:var(--paper-card);outline:none;}
  .tag-input-row input:focus{border-color:var(--tag);}

  /* ---------- settings ---------- */
  .icon-btn-lg{background:none;border:1px solid rgba(255,255,255,.22);color:#cfd6c6;border-radius:9px;
    width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
  .icon-btn-lg:hover{background:rgba(255,255,255,.08);color:#fff;}
  .icon-btn-lg svg{width:17px;height:17px;}
  .mobile-topbar .icon-btn-lg{border-color:var(--line-strong);color:var(--text-muted);}
  .mobile-topbar .icon-btn-lg:hover{background:rgba(28,43,32,.06);color:var(--ink);}
  .settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line);}
  .settings-row:last-child{border-bottom:none;}
  .settings-row .st-label{font-size:13.5px;font-weight:600;}
  .settings-row .st-desc{font-size:11.5px;color:var(--text-muted);margin-top:2px;}
  .switch{position:relative;width:42px;height:24px;flex-shrink:0;display:inline-block;}
  .switch input{opacity:0;width:0;height:0;position:absolute;}
  .switch .track{position:absolute;inset:0;background:var(--line-strong);border-radius:999px;cursor:pointer;transition:background .18s ease;}
  .switch .track::before{content:'';position:absolute;left:3px;top:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .18s ease;box-shadow:0 1px 2px rgba(0,0,0,.25);}
  .switch input:checked + .track{background:var(--sage);}
  .switch input:checked + .track::before{transform:translateX(18px);}

  /* ---------- reminder alert popups ---------- */
  .alert-stack{position:fixed;z-index:180;right:16px;bottom:calc(84px + var(--safe-b));display:flex;flex-direction:column;gap:10px;
    max-width:320px;width:calc(100% - 32px);pointer-events:none;}
  @media (min-width:900px){.alert-stack{bottom:24px;}}
  .alert-card{background:var(--paper-card);border:1px solid var(--line-strong);border-left:4px solid var(--gold);
    border-radius:12px;padding:12px 14px;box-shadow:var(--shadow-md);animation:slideIn .25s ease;pointer-events:auto;}
  .alert-card.urgent{border-left-color:var(--berry);}
  @keyframes slideIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .alert-card .al-title{font-size:12px;font-weight:700;color:var(--gold);display:flex;align-items:center;gap:5px;margin-bottom:4px;}
  .alert-card.urgent .al-title{color:var(--berry);}
  .alert-card .al-text{font-size:13.5px;line-height:1.45;margin-bottom:9px;overflow-wrap:anywhere;}
  .alert-card .al-actions{display:flex;gap:7px;justify-content:flex-end;}
  .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}
  .modal-close{position:absolute;top:14px;right:14px;}

  /* ---------- screenshot entry ---------- */
  .drop-zone{border:1.5px dashed var(--line-strong);border-radius:12px;padding:22px 16px;text-align:center;
    cursor:pointer;color:var(--text-muted);font-size:13px;background:var(--paper);}
  .drop-zone:hover{border-color:var(--gold);color:var(--text-main);}
  .drop-zone svg{width:24px;height:24px;margin-bottom:6px;opacity:.7;}
  .recog-status{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-muted);padding:8px 2px;}
  .spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--gold);
    animation:spin .7s linear infinite;flex-shrink:0;}
  @keyframes spin{to{transform:rotate(360deg)}}
  .recog-note{font-size:11.5px;color:var(--gold);background:var(--gold-soft);padding:6px 9px;border-radius:8px;margin-top:8px;}
  .recog-error{font-size:11.5px;color:var(--berry);background:var(--berry-soft);padding:6px 9px;border-radius:8px;margin-top:8px;}
  .thumb-preview{width:100%;max-height:140px;object-fit:cover;border-radius:10px;margin-bottom:8px;}

  /* ---------- order confirmation ticket ---------- */
  .ticket-wrap{padding:4px 2px 2px;}
  .ticket{
    background:#fffdf8;border-radius:4px;overflow:hidden;position:relative;
    box-shadow:0 10px 30px rgba(28,43,32,.16);
  }
  .ticket-head{background:var(--ink);color:#f2efe1;padding:18px 20px 16px;position:relative;}
  .ticket-head .tk-brand{font-family:Georgia,"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:19px;font-weight:600;display:flex;align-items:center;gap:7px;}
  .ticket-head .tk-title{font-size:11.5px;letter-spacing:.14em;color:#b9c4b1;margin-top:3px;text-transform:uppercase;}
  .ticket-head .tk-no{position:absolute;top:18px;right:20px;font-family:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;font-size:11px;color:#9fae97;text-align:right;}
  .ticket-perf{height:0;border-top:2px dashed #cdbf8f;position:relative;}
  .ticket-perf::before,.ticket-perf::after{content:'';position:absolute;top:-8px;width:16px;height:16px;border-radius:50%;background:var(--paper);}
  .ticket-perf::before{left:-8px;} .ticket-perf::after{right:-8px;}
  .ticket-body{padding:18px 20px 6px;}
  .tk-row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 14px;padding:9px 0;border-bottom:1px solid #ece4c9;font-size:13.5px;}
  .tk-row:last-child{border-bottom:none;}
  .tk-row .tk-label{color:var(--text-muted);flex-shrink:0;}
  .tk-row .tk-val{text-align:right;font-weight:600;overflow-wrap:anywhere;max-width:68%;}
  .ticket-foot{padding:14px 20px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
  .tk-shop{font-size:11.5px;color:var(--text-muted);}
  .tk-stamp{
    width:64px;height:64px;border-radius:50%;border:1.8px dashed var(--berry);color:var(--berry);
    display:flex;align-items:center;justify-content:center;text-align:center;font-size:11px;font-weight:700;
    transform:rotate(-11deg);letter-spacing:.05em;flex-shrink:0;
  }

  /* ---------- misc ---------- */
  .section-title{font-size:15.5px;font-weight:600;margin:26px 0 10px;}
  .subgrid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
  @media (max-width:760px){.subgrid-2{grid-template-columns:1fr;}}
  .loading-overlay{position:fixed;inset:0;background:var(--paper);z-index:200;display:flex;
    align-items:center;justify-content:center;flex-direction:column;gap:10px;transition:opacity .3s ease;}
  .loading-overlay .mark{font-family:Georgia,"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:24px;color:var(--ink);}
  .toast{position:fixed;bottom:calc(90px + var(--safe-b));left:50%;transform:translateX(-50%);
    background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;font-size:13px;z-index:150;
    box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity .25s ease, transform .25s ease;}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(-4px);}
  @media (min-width:900px){.toast{bottom:26px;}}

  /* ---------- responsive: mobile / desktop switch ---------- */
  @media (max-width:899px){
    .sidebar{display:none;}
    .bottom-tab{display:block;}
    .main{padding:calc(16px + var(--safe-t)) 14px calc(var(--tab-h) + 30px + var(--safe-b));max-width:none;}
    .topbar{display:none;}
    .mobile-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
    .mobile-topbar .mark{font-family:Georgia,"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:19px;font-weight:600;color:var(--ink);}
    .mobile-topbar .date-line{font-size:11.5px;color:var(--text-muted);}
  }
  @media (min-width:900px){
    .main{padding:30px 40px 60px;}
  }

  /* ============================================================
     Fan Flower 扩展样式: 主题色块 / 同步指示 / 移动端增强
     ============================================================ */

  /* ---------- 主题: 樱花粉 ---------- */
  :root[data-theme='sakura']{
    --ink:#4a2b33; --ink-soft:#5d3a44; --ink-softer:#6d4652;
    --paper:#faf3f1; --paper-card:#fffbfa; --line:#ecd8d4; --line-strong:#dcc0ba;
    --sage:#c76e85; --sage-soft:rgba(199,110,133,.14);
    --gold:#c98d4e; --gold-soft:rgba(201,141,78,.14);
    --info:#8a6f9e; --info-soft:rgba(138,111,158,.14);
    --berry:#b04a5a; --berry-soft:rgba(176,74,90,.12);
    --text-main:#3a2429; --text-muted:#8a7074;
    --tag:#9e6a8a; --tag-soft:rgba(158,106,138,.14);
  }
  /* ---------- 主题: 暖杏 ---------- */
  :root[data-theme='apricot']{
    --ink:#4a3220; --ink-soft:#5d4229; --ink-softer:#6d4e31;
    --paper:#faf4ea; --paper-card:#fffcf6; --line:#ecdcc4; --line-strong:#ddc7a6;
    --sage:#c47a3f; --sage-soft:rgba(196,122,63,.14);
    --gold:#a8842c; --gold-soft:rgba(168,132,44,.14);
    --info:#7a8a5f; --info-soft:rgba(122,138,95,.14);
    --berry:#a8552f; --berry-soft:rgba(168,85,47,.12);
    --text-main:#392a1a; --text-muted:#84715a;
    --tag:#9e7a5a; --tag-soft:rgba(158,122,90,.14);
  }
  /* ---------- 主题: 雾霭蓝 ---------- */
  :root[data-theme='mist']{
    --ink:#243447; --ink-soft:#31465e; --ink-softer:#3a536e;
    --paper:#f1f4f6; --paper-card:#fbfdfe; --line:#d8e0e6; --line-strong:#c0ccd6;
    --sage:#4f6f8a; --sage-soft:rgba(79,111,138,.14);
    --gold:#b9812c; --gold-soft:rgba(185,129,44,.14);
    --info:#5a8a7f; --info-soft:rgba(90,138,127,.14);
    --berry:#a8434b; --berry-soft:rgba(168,67,75,.12);
    --text-main:#22303d; --text-muted:#66788a;
    --tag:#6a7a9e; --tag-soft:rgba(106,122,158,.14);
  }
  /* ---------- 主题: 墨绿暗色 ---------- */
  :root[data-theme='dark']{
    --ink:#10190f; --ink-soft:#1d2c1f; --ink-softer:#27392a;
    --paper:#141d15; --paper-card:#1c281e; --line:#2c3c2e; --line-strong:#3a4d3c;
    --sage:#7fae87; --sage-soft:rgba(127,174,135,.16);
    --gold:#d3a04f; --gold-soft:rgba(211,160,79,.16);
    --info:#7fa3c0; --info-soft:rgba(127,163,192,.16);
    --berry:#d07078; --berry-soft:rgba(208,112,120,.16);
    --text-main:#e2e8dd; --text-muted:#93a18f;
    --tag:#b3a3d6; --tag-soft:rgba(179,163,214,.18);
    --muted-dot:#8a9a82;
    --shadow-sm:0 1px 2px rgba(0,0,0,.3); --shadow-md:0 8px 24px rgba(0,0,0,.45);
  }
  :root[data-theme='dark'] .ticket{color:#24301f;}
  :root[data-theme='dark'] .modal-overlay{background:rgba(5,10,6,.7);}

  /* ---------- 同步状态指示 ---------- */
  .sync-indicator{
    display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-muted);
    background:var(--paper-card);border:1px solid var(--line);border-radius:999px;
    padding:4px 11px;white-space:nowrap;user-select:none;
  }
  .sync-indicator .sync-dot{width:7px;height:7px;border-radius:50%;background:var(--muted-dot);flex-shrink:0;}
  .sync-indicator.ok .sync-dot{background:#4f9e5f;}
  .sync-indicator.busy .sync-dot{background:var(--gold);animation:syncPulse 1.1s ease-in-out infinite;}
  .sync-indicator.err .sync-dot{background:var(--berry);}
  .sync-indicator.off .sync-dot{background:var(--muted-dot);}
  @keyframes syncPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
  @media (prefers-reduced-motion:reduce){.sync-indicator.busy .sync-dot{animation:none}}

  /* ---------- 主题色块选择 ---------- */
  .theme-row{display:flex;gap:12px;padding:2px 0 14px;flex-wrap:wrap;}
  .theme-swatch{
    width:38px;height:38px;border-radius:50%;border:2px solid var(--line-strong);cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;padding:0;
    transition:transform .12s ease, box-shadow .12s ease;
  }
  .theme-swatch:hover{transform:scale(1.08);}
  .theme-swatch.active{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft);}
  .theme-swatch svg{width:16px;height:16px;}

  /* ---------- 提示弹窗 ---------- */
  .tip-body{font-size:13.5px;color:var(--text-main);display:flex;flex-direction:column;gap:9px;margin-bottom:14px;}
  .tip-line{line-height:1.65;}
  .tip-note{font-size:12px;color:var(--text-muted);background:var(--gold-soft);border-radius:9px;padding:9px 11px;margin-top:12px;line-height:1.6;}
  .tip-daily{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-muted);cursor:pointer;margin:2px 0 12px;}
  .tip-daily input{width:15px;height:15px;accent-color:var(--sage);}

  /* ---------- 加载更多 ---------- */
  .load-more{display:flex;justify-content:center;padding:14px 0 6px;}

  /* ---------- 移动端显示增强 ---------- */
  @media (max-width:680px){
    .main{padding:14px 12px calc(90px + var(--safe-b));}
    .panel{border-radius:12px;}
    .panel-head{flex-wrap:wrap;gap:8px;}
    .panel-head h3{font-size:15.5px;}
    .toolbar{flex-direction:column;align-items:stretch;gap:9px;}
    .chip-group{display:flex;gap:7px;overflow-x:auto;-webkit-overflow-scrolling:touch;
      padding-bottom:2px;scrollbar-width:none;}
    .chip-group::-webkit-scrollbar{display:none;}
    .chip-group .chip{flex-shrink:0;}
    .search-box{max-width:none !important;width:100%;}
    /* 数据行: 卡片化, 提升可读性 */
    #orderList .data-row, #expenseList .data-row, #incomeList .data-row{
      border:1px solid var(--line);border-radius:12px;margin:10px 10px 0;
      box-shadow:var(--shadow-sm);background:var(--paper-card);
    }
    #orderList .data-row:last-of-type, #expenseList .data-row:last-of-type, #incomeList .data-row:last-of-type{
      border-bottom:1px solid var(--line);
    }
    .data-row .row-cell .cell-val{font-size:13.5px;}
    .row-cell.actions{gap:10px;}
    .row-cell.actions .icon-btn{padding:9px;}
    .row-cell.actions .icon-btn svg{width:18px;height:18px;}
    .status-select{font-size:13px;padding:6px 26px 6px 10px;}
    /* 状态筛选 + 月份选择行 */
    #view-expenses .toolbar > div:last-child{width:100%;justify-content:space-between;}
    /* 环形图竖排居中 */
    .donut-wrap{flex-direction:column;align-items:center;}
    .legend{width:100%;}
    /* 概览双栏变单栏 */
    .overview-columns{grid-template-columns:1fr !important;}
    .subgrid-2{grid-template-columns:1fr !important;}
    /* 移动端顶栏同步指示精简 */
    .mobile-topbar .sync-indicator .sync-text{display:none;}
    .mobile-topbar .sync-indicator{padding:6px 8px;}
    /* 弹窗占满宽度, 底部对齐, 方便单手操作 */
    .modal-overlay{align-items:flex-end;padding:0;}
    .modal-box{max-width:none;border-radius:18px 18px 0 0;max-height:92vh;
      padding-bottom:calc(20px + var(--safe-b));}
    .field-row{flex-direction:column;gap:0;}
    .ticket-wrap{overflow-x:auto;}
  }
  @media (max-width:360px){
    .stat-grid{grid-template-columns:1fr 1fr;gap:8px;}
    .stat-card .value{font-size:18px;}
  }
  /* 平板: 双栏概览保持, 数据行自动换行不乱 */
  @media (min-width:681px) and (max-width:980px){
    .main{padding:20px 18px 70px;}
    .data-row{gap:10px;}
    .row-cell{flex-basis:100px;}
  }
