/* ============================================================
   影单 · 摄影师排单  —  设计系统
   风格：iOS 日历 / 大字号 / 留白 / 克制的暖色强调
   ============================================================ */

:root{
  --bg:#F4F4F6;
  --bg-group:#EFEFF2;
  --card:#FFFFFF;
  --hair:rgba(60,60,67,.10);
  --hair-strong:rgba(60,60,67,.16);
  --text:#141418;
  --text-2:#5B5B66;
  --text-3:#9B9BA4;
  --accent:#E8553A;
  --accent-ink:#C13F27;
  --accent-soft:rgba(232,85,58,.11);
  --blue:#0A6CFF;
  --blue-soft:rgba(10,108,255,.10);
  --green:#1F9D55;
  --green-soft:rgba(31,157,85,.11);
  --amber:#C98A0B;
  --amber-soft:rgba(201,138,11,.12);
  --gray-soft:rgba(60,60,67,.07);
  --r-xl:26px;
  --r-lg:20px;
  --r-md:14px;
  --r-sm:10px;
  --sh-1:0 1px 2px rgba(16,16,20,.04), 0 10px 28px -16px rgba(16,16,20,.20);
  --sh-2:0 2px 6px rgba(16,16,20,.06), 0 24px 48px -24px rgba(16,16,20,.30);
  --nav-h:54px;
  --tab-h:64px;
  --pad:18px;
  --fz:17px;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  font-size:var(--fz);
  line-height:1.5;
  letter-spacing:.1px;
  overscroll-behavior-y:none;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;}
button{border:none;background:none;cursor:pointer;padding:0;}
a{color:var(--accent);text-decoration:none;}
img{display:block;max-width:100%;}
::-webkit-scrollbar{width:0;height:0;}

/* ---------------- 布局 ---------------- */
#app{
  max-width:560px;
  margin:0 auto;
  min-height:100vh;
  background:var(--bg);
  position:relative;
}
.view{
  padding:0 var(--pad) calc(var(--tab-h) + 40px);
}
.view.is-plain{padding:0 0 calc(var(--tab-h) + 40px);}

/* ---------------- 顶部导航 ---------------- */
.navbar{
  position:sticky;top:0;z-index:60;
  padding:14px var(--pad) 10px;
  background:rgba(244,244,246,.86);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
}
.navbar-row{display:flex;align-items:center;gap:10px;min-height:34px;}
.navbar-back{
  display:flex;align-items:center;gap:2px;
  color:var(--accent);font-size:16px;font-weight:500;
  margin-left:-6px;padding:2px 6px;border-radius:8px;
}
.navbar-back:active{background:var(--accent-soft);}
.navbar-spacer{flex:1;}
.navbar-actions{display:flex;align-items:center;gap:8px;}
.nav-btn{
  font-size:15.5px;color:var(--accent);font-weight:500;
  padding:6px 4px;border-radius:8px;white-space:nowrap;
}
.nav-btn:active{opacity:.5;}
.nav-btn.strong{font-weight:650;}
.title-xl{
  font-size:32px;font-weight:750;letter-spacing:-.6px;line-height:1.16;
  margin:2px 0 0;
}
.title-lg{font-size:26px;font-weight:720;letter-spacing:-.4px;margin:0;}
.subtitle{font-size:15px;color:var(--text-3);margin-top:3px;}

/* ---------------- 底部标签栏 ---------------- */
.tabbar{
  position:fixed;bottom:0;left:0;right:0;z-index:70;
  display:flex;align-items:flex-start;
  height:calc(var(--tab-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:rgba(250,250,252,.9);
  backdrop-filter:saturate(180%) blur(22px);
  -webkit-backdrop-filter:saturate(180%) blur(22px);
  border-top:1px solid var(--hair);
}
.tabbar-inner{
  display:flex;width:100%;max-width:560px;margin:0 auto;
}
.tab{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding-top:9px;color:var(--text-3);font-size:11.5px;font-weight:550;
  transition:color .16s;
}
.tab svg{width:25px;height:25px;stroke-width:1.7;}
.tab.active{color:var(--accent);}
.tab-fab{
  flex:0 0 68px;display:flex;align-items:center;justify-content:center;padding-top:6px;
}
.tab-fab .fab{
  width:52px;height:52px;border-radius:18px;
  background:linear-gradient(160deg,#F4684E,#DC4526);
  box-shadow:0 8px 20px -8px rgba(220,69,38,.65);
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.tab-fab .fab:active{transform:scale(.94);}
.tab-fab .fab svg{width:26px;height:26px;}

/* ---------------- 卡片 / 分组 ---------------- */
.card{
  background:var(--card);border-radius:var(--r-lg);
  box-shadow:var(--sh-1);
}
.group{margin-top:22px;}
.group-title{
  font-size:14px;font-weight:650;color:var(--text-3);
  letter-spacing:.4px;text-transform:uppercase;
  margin:0 4px 9px;
}
.group-card{
  background:var(--card);border-radius:var(--r-lg);
  box-shadow:var(--sh-1);overflow:hidden;
}
.row{
  display:flex;align-items:center;gap:14px;
  padding:15px 18px;min-height:56px;
  position:relative;
}
.row + .row::before{
  content:"";position:absolute;top:0;left:18px;right:0;height:1px;
  background:var(--hair);transform:scaleY(.5);
}
.row.tappable:active{background:var(--gray-soft);}
.row-main{flex:1;min-width:0;}
.row-label{font-size:17px;font-weight:500;}
.row-sub{font-size:14.5px;color:var(--text-3);margin-top:2px;line-height:1.4;}
.row-value{
  font-size:17px;color:var(--text-3);max-width:58%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.row-value.ink{color:var(--text);font-weight:550;}
.chev{color:#C4C4CC;flex:0 0 auto;}
.chev svg{width:16px;height:16px;display:block;}

/* ---------------- 表单 ---------------- */
.field{padding:13px 18px;position:relative;}
.field + .field::before{
  content:"";position:absolute;top:0;left:18px;right:0;height:1px;
  background:var(--hair);transform:scaleY(.5);
}
.field-label{
  font-size:13.5px;font-weight:600;color:var(--text-3);
  letter-spacing:.3px;margin-bottom:6px;display:block;
}
.field-label .req{color:var(--accent);margin-left:3px;}
.field-hint{font-size:13px;color:var(--text-3);margin-top:6px;line-height:1.45;}
.input,.textarea,select.input{
  width:100%;border:none;background:transparent;outline:none;
  font-size:17px;padding:0;color:var(--text);
}
.input::placeholder,.textarea::placeholder{color:#B9B9C1;}
.textarea{resize:none;line-height:1.55;min-height:64px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0;}
.grid2 .field:nth-child(2)::before{display:none;}
.grid2 .field:first-child{border-right:1px solid transparent;}
.switch{
  position:relative;width:51px;height:31px;border-radius:16px;
  background:#E3E3E8;transition:background .2s;flex:0 0 auto;
}
.switch.on{background:var(--green);}
.switch::after{
  content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;
  border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.18);
  transition:transform .2s;
}
.switch.on::after{transform:translateX(20px);}

/* ---------------- 按钮 ---------------- */
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:15px 18px;border-radius:16px;
  font-size:17px;font-weight:600;transition:transform .12s,opacity .12s;
}
.btn:active{transform:scale(.985);opacity:.9;}
.btn-primary{background:linear-gradient(160deg,#F4684E,#DC4526);color:#fff;
  box-shadow:0 10px 22px -12px rgba(220,69,38,.7);}
.btn-dark{background:#1C1C20;color:#fff;}
.btn-ghost{background:var(--card);color:var(--text);box-shadow:var(--sh-1);}
.btn-tint{background:var(--accent-soft);color:var(--accent-ink);}
.btn-danger{background:rgba(215,0,21,.09);color:#D70015;}
.btn-sm{padding:10px 14px;font-size:15px;border-radius:12px;width:auto;}
.btn-row{display:flex;gap:10px;margin-top:14px;}
.btn:disabled{opacity:.45;pointer-events:none;}

/* ---------------- 分段控制器 ---------------- */
.segmented{
  display:flex;gap:2px;padding:2px;border-radius:12px;
  background:rgba(118,118,128,.10);
}
.segmented button{
  flex:1;padding:7px 0;border-radius:10px;font-size:15px;font-weight:550;
  color:var(--text-2);transition:all .16s;
}
.segmented button.active{
  background:#fff;color:var(--text);font-weight:650;
  box-shadow:0 1px 3px rgba(0,0,0,.08),0 0 0 .5px rgba(0,0,0,.03);
}

/* ---------------- 标签 / 徽章 ---------------- */
.tag{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 9px;border-radius:8px;font-size:13px;font-weight:600;
  background:var(--gray-soft);color:var(--text-2);
}
.tag-red{background:var(--accent-soft);color:var(--accent-ink);}
.tag-blue{background:var(--blue-soft);color:#0A5CD6;}
.tag-green{background:var(--green-soft);color:var(--green);}
.tag-amber{background:var(--amber-soft);color:var(--amber);}
.tag-plain{background:transparent;padding:0;}
.tags{display:flex;gap:7px;flex-wrap:wrap;}

/* ---------------- 月度日历 ---------------- */
.cal-head{
  display:flex;align-items:center;justify-content:space-between;
  margin:6px 0 12px;gap:10px;
}
.cal-month{display:flex;align-items:baseline;gap:8px;}
.cal-month b{font-size:22px;font-weight:720;letter-spacing:-.3px;}
.cal-month span{font-size:14px;color:var(--text-3);}
.cal-nav{display:flex;gap:6px;}
.icon-btn{
  width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:var(--card);box-shadow:var(--sh-1);color:var(--text-2);
}
.icon-btn:active{background:var(--gray-soft);}
.icon-btn svg{width:17px;height:17px;}

.cal-panel{
  background:var(--card);border-radius:var(--r-xl);
  box-shadow:var(--sh-1);padding:12px 8px 14px;
}
.cal-weekdays{
  display:grid;grid-template-columns:repeat(7,1fr);gap:4px;
  margin-bottom:6px;
}
.cal-weekdays div{
  text-align:center;font-size:12.5px;font-weight:650;color:var(--text-3);letter-spacing:.4px;
}
.cal-weekdays div.wk{color:#C9A0A0;}
.cal-grid{
  display:grid;grid-template-columns:repeat(7,1fr);gap:4px;
}
.cell{
  height:112px;border-radius:12px;padding:5px 4px 4px;
  display:flex;flex-direction:column;gap:3px;overflow:hidden;
  background:rgba(118,118,128,.05);
  transition:background .14s,box-shadow .14s;
  position:relative;
}
.cell.empty{background:transparent;}
.cell.today{background:var(--accent-soft);}
.cell.sel{background:#1C1C20;}
.cell.sel .cell-day{color:#fff;}
.cell.sel .cell-day .num{color:#fff;}
.cell.sel .cal-chip{background:rgba(255,255,255,.16)!important;color:#fff!important;}
.cell.sel .cal-chip .t2{color:rgba(255,255,255,.75)!important;}
.cell.sel .cal-more{color:rgba(255,255,255,.8);}
.cell:active{box-shadow:inset 0 0 0 2px var(--hair-strong);}
.cell-day{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 3px;font-size:14.5px;font-weight:600;
}
.cell-day .num{color:var(--text);}
.cell.today .cell-day .num{color:var(--accent-ink);}
.cell-day .wk{font-size:10.5px;color:var(--text-3);font-weight:600;}
.cell.today .cell-day .wk{color:var(--accent);}
.cell-body{display:flex;flex-direction:column;gap:2.5px;overflow:hidden;flex:1;}
.cal-chip{
  border-radius:6px;padding:2px 3px;
  background:var(--accent-soft);color:var(--accent-ink);
  display:flex;flex-direction:column;line-height:1.18;overflow:hidden;
}
.cal-chip .t1{font-size:9.5px;font-weight:700;letter-spacing:-.15px;white-space:nowrap;}
.cal-chip .t2{
  font-size:9.5px;font-weight:600;color:rgba(193,63,39,.72);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.cal-chip.c-blue{background:var(--blue-soft);color:#0A5CD6;}
.cal-chip.c-blue .t2{color:rgba(10,92,214,.72);}
.cal-chip.c-green{background:var(--green-soft);color:var(--green);}
.cal-chip.c-green .t2{color:rgba(31,157,85,.75);}
.cal-chip.c-amber{background:var(--amber-soft);color:var(--amber);}
.cal-chip.c-amber .t2{color:rgba(201,138,11,.78);}
.cal-chip.c-gray{background:var(--gray-soft);color:var(--text-3);}
.cal-chip.c-gray .t2{color:var(--text-3);}
.cal-more{
  font-size:10px;font-weight:650;color:var(--text-3);
  padding-left:3px;line-height:1.1;
}

/* 月视图底部统计 */
.cal-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px;
}
.stat{
  background:var(--card);border-radius:var(--r-md);padding:12px 10px;
  box-shadow:var(--sh-1);text-align:center;
}
.stat b{display:block;font-size:19px;font-weight:720;letter-spacing:-.3px;}
.stat span{font-size:12px;color:var(--text-3);font-weight:550;}

/* ---------------- 订单卡片 ---------------- */
.order-card,.client-card{
  background:var(--card);border-radius:var(--r-lg);box-shadow:var(--sh-1);
  padding:15px 16px;display:flex;gap:13px;
}
.order-card:active,.client-card:active{background:#FCFCFD;}
.oc-time{
  flex:0 0 58px;display:flex;flex-direction:column;align-items:flex-start;
  padding-top:1px;
}
.oc-time .st{font-size:17px;font-weight:700;letter-spacing:-.2px;}
.oc-time .et{font-size:14px;color:var(--text-3);font-weight:550;margin-top:1px;}
.oc-bar{width:3px;border-radius:2px;background:var(--accent);flex:0 0 3px;opacity:.85;}
.oc-bar.done{background:#C7C7CE;}
.oc-bar.cancel{background:#E3E3E8;}
.oc-main{flex:1;min-width:0;}
.oc-title{font-size:17.5px;font-weight:650;letter-spacing:-.2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.oc-line{
  display:flex;align-items:center;gap:6px;font-size:14.5px;color:var(--text-2);
  margin-top:5px;line-height:1.4;
}
.oc-line svg{width:14px;height:14px;flex:0 0 auto;color:var(--text-3);}
.oc-line span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.oc-foot{
  display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap;
}
.oc-money{font-size:15px;font-weight:700;letter-spacing:-.2px;}
.oc-money .due{color:var(--accent-ink);}
.oc-money .paid{color:var(--green);}

.day-header{
  display:flex;align-items:flex-end;justify-content:space-between;
  padding:4px 2px 14px;
}
.day-header .big{font-size:44px;font-weight:750;line-height:1;letter-spacing:-1.5px;}
.day-header .meta{margin-left:12px;padding-bottom:4px;}
.day-header .meta .wd{font-size:17px;font-weight:650;}
.day-header .meta .sub{font-size:14px;color:var(--text-3);}

.list{display:flex;flex-direction:column;gap:11px;}

.empty-box{
  text-align:center;padding:44px 20px;color:var(--text-3);
}
.empty-box .ico{font-size:34px;margin-bottom:10px;opacity:.55;}
.empty-box p{margin:0;font-size:15.5px;line-height:1.6;}

/* ---------------- 详情页 ---------------- */
.hero{
  background:linear-gradient(155deg,#26262C,#16161A);
  border-radius:var(--r-xl);padding:22px 20px;color:#fff;
  box-shadow:var(--sh-2);
}
.hero .kicker{font-size:14px;color:rgba(255,255,255,.62);font-weight:600;letter-spacing:.4px;}
.hero .big-time{
  font-size:34px;font-weight:750;letter-spacing:-1px;margin-top:6px;line-height:1.12;
}
.hero .hsub{font-size:15px;color:rgba(255,255,255,.72);margin-top:6px;}
.hero .hrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}
.hero .htag{
  padding:5px 11px;border-radius:9px;font-size:13.5px;font-weight:600;
  background:rgba(255,255,255,.13);color:#fff;
}
.hero .htag.warn{background:rgba(255,159,10,.20);color:#FFC46B;}

.balance-card{
  background:var(--card);border-radius:var(--r-xl);box-shadow:var(--sh-1);
  padding:20px;margin-top:16px;
}
.bal-top{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.bal-label{font-size:14px;font-weight:650;color:var(--text-3);letter-spacing:.3px;}
.bal-amount{font-size:34px;font-weight:760;letter-spacing:-1px;color:var(--accent-ink);margin-top:2px;}
.bal-amount.clear{color:var(--green);}
.bal-rows{margin-top:16px;display:flex;flex-direction:column;gap:0;}
.bal-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:11px 0;font-size:16px;position:relative;
}
.bal-row + .bal-row::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:var(--hair);transform:scaleY(.5);
}
.bal-row .k{color:var(--text-2);}
.bal-row .v{font-weight:600;font-variant-numeric:tabular-nums;}
.progress{
  height:7px;border-radius:4px;background:var(--gray-soft);overflow:hidden;margin-top:14px;
}
.progress i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#F4684E,#DC4526);}

.kv-list{display:flex;flex-direction:column;}
.kv{
  display:flex;gap:14px;padding:13px 18px;position:relative;
}
.kv + .kv::before{
  content:"";position:absolute;top:0;left:18px;right:0;height:1px;
  background:var(--hair);transform:scaleY(.5);
}
.kv .k{flex:0 0 76px;font-size:15.5px;color:var(--text-3);font-weight:550;}
.kv .v{flex:1;font-size:16.5px;line-height:1.5;word-break:break-all;}
.kv .v.mono{font-variant-numeric:tabular-nums;}

.thumb-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:14px 18px 18px;
}
.thumb{
  aspect-ratio:1;border-radius:var(--r-md);overflow:hidden;background:var(--gray-soft);
  position:relative;
}
.thumb img{width:100%;height:100%;object-fit:cover;}
.thumb.add{
  display:flex;align-items:center;justify-content:center;color:var(--text-3);
  border:1.5px dashed var(--hair-strong);font-size:26px;background:transparent;
}
.img-empty{padding:16px 18px;font-size:15px;color:var(--text-3);}

/* ---------------- 导航面板 ---------------- */
.nav-panel{
  background:var(--card);border-radius:var(--r-xl);box-shadow:var(--sh-1);
  overflow:hidden;margin-top:16px;
}
.nav-modes{display:flex;gap:6px;padding:14px 16px 6px;}
.nav-modes button{
  flex:1;padding:9px 4px;border-radius:12px;font-size:13.5px;font-weight:600;
  background:rgba(118,118,128,.07);color:var(--text-2);
  display:flex;flex-direction:column;align-items:center;gap:3px;transition:all .15s;
}
.nav-modes button svg{width:19px;height:19px;}
.nav-modes button.active{background:#1C1C20;color:#fff;}
.nav-body{padding:10px 16px 4px;}
.nav-time{
  display:flex;align-items:baseline;gap:10px;
}
.nav-time .dur{font-size:30px;font-weight:750;letter-spacing:-.8px;}
.nav-time .dist{font-size:15px;color:var(--text-3);font-weight:600;}
.nav-depart{
  font-size:14.5px;color:var(--text-2);margin-top:6px;line-height:1.5;
}
.nav-depart b{color:var(--accent-ink);font-weight:700;}
.nav-steps{padding:12px 16px 0;display:flex;flex-direction:column;gap:7px;}
.nav-step{
  font-size:14px;color:var(--text-2);line-height:1.5;
  padding-left:16px;position:relative;
}
.nav-step::before{
  content:"";position:absolute;left:2px;top:8px;width:5px;height:5px;border-radius:50%;
  background:var(--accent);
}
.nav-note{
  font-size:13.5px;color:var(--amber);background:var(--amber-soft);
  border-radius:12px;padding:10px 13px;margin:12px 16px 0;line-height:1.5;
}
.nav-actions{padding:14px 16px 16px;display:flex;flex-direction:column;gap:9px;}
.nav-actions .btn{padding:14px;}
.nav-link-row{display:flex;gap:9px;}
.nav-link-row .btn{flex:1;}
.fallback{
  font-size:13.5px;color:var(--text-3);line-height:1.55;padding:0 4px;
}

/* ---------------- 图片查看器 ---------------- */
.viewer{
  position:fixed;inset:0;z-index:200;background:rgba(10,10,12,.94);
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.viewer img{max-width:100%;max-height:86vh;border-radius:12px;object-fit:contain;}
.viewer-close{
  position:absolute;top:calc(18px + env(safe-area-inset-top));right:18px;
  width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:19px;
}

/* ---------------- 弹层 / Sheet ---------------- */
.mask{
  position:fixed;inset:0;z-index:120;background:rgba(10,10,14,.42);
  backdrop-filter:blur(2px);animation:fade .2s ease;
}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:130;
  max-width:560px;margin:0 auto;
  background:var(--bg);border-radius:26px 26px 0 0;
  padding:8px 14px calc(18px + env(safe-area-inset-bottom));
  animation:up .26s cubic-bezier(.22,.8,.3,1);
  max-height:88vh;overflow-y:auto;
}
@keyframes up{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-grab{width:38px;height:5px;border-radius:3px;background:#D6D6DC;margin:6px auto 12px;}
.sheet-title{font-size:19px;font-weight:700;text-align:center;margin:0 0 14px;letter-spacing:-.2px;}
.sheet-body{display:flex;flex-direction:column;gap:10px;}
.sheet-item{
  background:var(--card);border-radius:15px;padding:15px 17px;font-size:16.5px;
  display:flex;align-items:center;gap:12px;font-weight:500;
}
.sheet-item:active{background:#F7F7F9;}
.sheet-item.danger{color:#D70015;justify-content:center;font-weight:600;}
.sheet-item.primary{color:var(--accent);justify-content:center;font-weight:650;}
.sheet-item .si-sub{font-size:13.5px;color:var(--text-3);font-weight:500;margin-top:2px;}
.dialog{
  position:fixed;z-index:130;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(88vw,340px);background:rgba(252,252,253,.96);
  backdrop-filter:blur(20px);border-radius:20px;padding:22px 20px 0;text-align:center;
  box-shadow:var(--sh-2);overflow:hidden;
}
.dialog h3{margin:0 0 7px;font-size:18.5px;font-weight:700;}
.dialog p{margin:0 0 18px;font-size:15px;color:var(--text-2);line-height:1.55;}
.dialog-actions{display:flex;border-top:1px solid var(--hair);margin:0 -20px;}
.dialog-actions button{
  flex:1;padding:15px 0;font-size:17px;color:var(--accent);font-weight:500;
}
.dialog-actions button + button{border-left:1px solid var(--hair);}
.dialog-actions button.strong{font-weight:700;}
.dialog-actions button.danger{color:#D70015;}

/* ---------------- Toast ---------------- */
.toast-root{
  position:fixed;left:0;right:0;bottom:calc(var(--tab-h) + 26px);z-index:300;
  display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;
}
.toast{
  background:rgba(28,28,32,.93);color:#fff;font-size:15px;font-weight:550;
  padding:11px 20px;border-radius:14px;max-width:80vw;text-align:center;
  animation:toastIn .22s ease;box-shadow:var(--sh-2);
}
@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ---------------- 自建提示条 ---------------- */
.tip{
  display:flex;gap:10px;padding:13px 15px;border-radius:var(--r-md);
  font-size:14.5px;line-height:1.5;background:var(--blue-soft);color:#0A5CD6;
  margin-top:14px;
}
.tip.warn{background:var(--amber-soft);color:#9A6A05;}
.tip.ok{background:var(--green-soft);color:var(--green);}
.tip svg{width:17px;height:17px;flex:0 0 auto;margin-top:1px;}

.spinner{
  width:15px;height:15px;border-radius:50%;
  border:2px solid rgba(255,255,255,.35);border-top-color:#fff;
  animation:spin .7s linear infinite;
}
.spinner.dark{border-color:var(--hair-strong);border-top-color:var(--text-2);}
@keyframes spin{to{transform:rotate(360deg)}}

.wrap-pad{padding:0 var(--pad);}
.mt6{margin-top:6px;} .mt10{margin-top:10px;} .mt16{margin-top:16px;}
.mt22{margin-top:22px;} .mt30{margin-top:30px;}
.txt-2{color:var(--text-2);} .txt-3{color:var(--text-3);}
.fz15{font-size:15px;} .fz14{font-size:14px;} .fz13{font-size:13px;}
.num{font-variant-numeric:tabular-nums;}
.center{text-align:center;}
.section-label{
  font-size:13.5px;font-weight:650;color:var(--text-3);letter-spacing:.4px;
  margin:24px 4px 9px;text-transform:uppercase;
}
.chips{display:flex;flex-wrap:wrap;gap:8px;}
.chip{
  padding:8px 14px;border-radius:12px;font-size:14.5px;font-weight:550;
  background:var(--card);box-shadow:var(--sh-1);color:var(--text-2);
}
.chip.on{background:#1C1C20;color:#fff;box-shadow:none;}
.chip-add{border:1.5px dashed var(--hair-strong);background:transparent;box-shadow:none;}
.picker{
  display:flex;flex-wrap:wrap;gap:8px;padding:13px 18px 16px;
}
.picker .chip{background:rgba(118,118,128,.08);box-shadow:none;}
.picker .chip.on{background:#1C1C20;color:#fff;}

/* ---------------- 周视图 ---------------- */
.week-stats{
  display:flex;align-items:center;gap:10px;font-size:14.5px;font-weight:600;color:var(--text-2);
  background:var(--card);border-radius:var(--r-md);padding:12px 16px;box-shadow:var(--sh-1);
}
.week-stats i{width:1px;height:14px;background:var(--hair-strong);}

/* ---------------- 登录 / 注册 ---------------- */
.auth-view{
  padding:0 var(--pad) 40px;
  min-height:100vh;
  display:flex;flex-direction:column;
}
.auth-hero{
  text-align:center;
  padding:54px 0 30px;
}
.auth-logo{
  width:74px;height:74px;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;
  border-radius:22px;
  background:linear-gradient(160deg,#F4684E,#DC4526);
  color:#fff;
  box-shadow:0 16px 34px -14px rgba(220,69,38,.6);
}
.auth-logo svg{stroke-width:1.6;}
.auth-title{
  font-size:30px;font-weight:760;letter-spacing:-.5px;
  margin:0;color:var(--text);
}
.auth-sub{
  font-size:15.5px;color:var(--text-3);margin:8px 0 0;
}
.auth-seg{margin-bottom:6px;}
.auth-submit{margin-top:18px;}
.auth-switch{
  text-align:center;margin-top:18px;font-size:15px;color:var(--text-3);
}
.auth-switch a{font-weight:600;}
.auth-tip{
  font-size:13px;color:var(--text-3);text-align:center;
  margin:22px 18px 0;line-height:1.5;
}

/* ---------------- 云同步状态点 ---------------- */
.sync-dot{
  display:inline-block;width:8px;height:8px;border-radius:50%;
  margin-right:7px;vertical-align:2px;background:#C4C4CC;
}
.sync-dot.s-syncing{background:var(--blue);animation:syncpulse 1s ease-in-out infinite;}
.sync-dot.s-ok{background:var(--green);}
.sync-dot.s-err{background:#D70015;}
@keyframes syncpulse{0%,100%{opacity:1}50%{opacity:.3}}

.day-group + .day-group{margin-top:20px;}
.day-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 4px 9px;
}
.dh-left{display:flex;align-items:baseline;gap:9px;}
.dh-d{font-size:21px;font-weight:750;letter-spacing:-.5px;}
.dh-info{font-size:14.5px;color:var(--text-3);font-weight:600;}
.free-row{
  font-size:14.5px;color:var(--text-3);padding:14px 18px;
  background:var(--card);border-radius:var(--r-md);box-shadow:var(--sh-1);
}

/* ---------------- 订单卡片扩展 ---------------- */
.oc-actions{display:flex;gap:8px;margin-top:11px;align-items:center;}
.oc-actions .btn{flex:0 0 auto;}
.oc-actions a.btn{text-decoration:none;}
.avatar{
  width:44px;height:44px;border-radius:15px;flex:0 0 44px;
  background:linear-gradient(160deg,#3A3A42,#1D1D22);color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:650;
}
.chat-box{
  padding:15px 18px;font-size:15.5px;line-height:1.65;color:var(--text-2);
  border-bottom:1px solid var(--hair);
}

@media (min-width:561px){
  #app{box-shadow:0 0 60px -20px rgba(0,0,0,.14);}
}