/* ============================================================
   Tally × 舒时  ·  Tally shell
   暖白、黑色主操作、单一强调、底部四个 Tab
   ============================================================ */

:root{
  --bg:#f9f9f7;
  --surface:#fcfcfb;
  --surface-2:#f4f3ed;
  --surface-3:#eeede6;
  --line:#e1e0d9;
  --line-2:#ecebe4;
  --txt:#0b0b0b;
  --sub:#52514e;
  --dim:#898781;
  --accent:#0b0b0b;
  --accent-hover:#272727;
  --accent-soft:#f1f0e9;
  --accent-line:#d6d4c8;
  --amber:#eb6834;
  --amber-cta:#eb6834;
  --amber-soft:#fff3ec;
  --amber-line:#f2c7b5;
  --green:#1baf7a;
  --green-soft:#eaf7f1;
  --green-line:#bfe6d5;
  --red:#d03b3b;
  --red-soft:#fdf0ef;
  --initial:#9aa8bd;
  --inspiration:#7a5af8;
  --present:#1baf7a;
  --shadow:0 1px 2px rgba(11,11,11,.03);
  --shadow-lg:0 18px 48px rgba(11,11,11,.14);
  --tw:52px;
  --ag:10px;
  --pad:18px;
}

html,body{background:var(--bg)}
body{font-size:14px;color:var(--txt)}
::selection{background:rgba(11,11,11,.12)}
:focus-visible{outline:2px solid rgba(11,11,11,.35);outline-offset:2px}

/* ---------- App frame ---------- */
.app{
  max-width:560px;
  padding:18px 18px 0;
  overflow:hidden;
}
.body{display:flex;flex:1;min-height:0;gap:0}
.rail{display:none!important}
.main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}

/* ---------- Bottom tabs ---------- */
.tabbar{
  position:relative;z-index:20;
  flex:none;width:100%;display:flex;gap:4px;
  margin:6px 0 0;padding:7px 2px calc(7px + env(safe-area-inset-bottom));
  border-radius:0;border:0;border-top:1px solid var(--line);
  background:var(--bg);box-shadow:none;
}
.tab{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding:4px 4px;border-radius:8px;
  font-size:10px;font-weight:500;letter-spacing:.2px;color:var(--dim);
  transition:color .15s,background .15s;
}
.tab svg{width:21px;height:21px;flex:none}
.tab:hover{color:var(--txt);background:var(--surface-2)}
.tab.active{color:var(--txt);font-weight:600;background:transparent}
.tab.active svg{stroke-width:1.9}

/* ---------- Tally timer ---------- */
.tally-view{padding:0 4px}
.tally-head{display:flex;align-items:baseline;justify-content:space-between;padding:8px 2px 0}
.tally-word{font-size:20px;font-weight:600;letter-spacing:-.5px;color:var(--txt)}
.tally-date{font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}
.tally-main{
  flex:1;min-height:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;
  padding:22px 0 10px;
}
.tally-status{
  display:flex;align-items:center;gap:7px;
  font-size:13px;letter-spacing:.4px;color:var(--sub);
}
.tally-dot{width:6px;height:6px;border-radius:50%;background:var(--dim)}
.tally-dot.on{background:var(--amber)}
.tally-clock{
  margin-top:14px;
  font-size:min(72px,18vw);line-height:1.05;font-weight:300;
  letter-spacing:.5px;font-variant-numeric:tabular-nums;
  color:var(--txt);white-space:nowrap;
}
.tally-hint{margin-top:12px;font-size:13px;color:var(--dim)}
.tally-prefill{
  margin-top:8px;max-width:88%;font-size:12px;color:var(--sub);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tally-primary{
  margin-top:26px;width:100%;max-width:360px;height:56px;
  border-radius:999px;background:var(--accent);color:#fff;
  font-size:17px;font-weight:600;letter-spacing:1px;
  transition:transform .12s,background .15s,opacity .15s;
}
.tally-primary:active{transform:scale(.985)}
.tally-primary.is-running{background:var(--amber)}
.tally-link{
  margin-top:12px;padding:6px 10px;font-size:12px;color:var(--dim);
  border-radius:6px;
}
.tally-link:hover{color:var(--txt);background:var(--surface-2)}
.tally-today{
  flex:none;display:flex;align-items:center;justify-content:space-between;
  margin:0 2px 10px;padding:13px 2px;border-top:1px solid var(--line);
  font-size:12px;color:var(--dim);
}
.tally-today-value{color:var(--sub);font-variant-numeric:tabular-nums}

/* ---------- Tally record sheet ---------- */
.timer-menu-btn{flex:none;display:grid;place-items:center;width:36px;height:36px;margin-top:-2px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--sub)}
.timer-menu-btn:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.timer-sidebar{position:fixed;inset:0;z-index:50;visibility:hidden;pointer-events:none}
.timer-sidebar.open{visibility:visible;pointer-events:auto}
.timer-sidebar-backdrop{position:absolute;inset:0;background:rgba(11,11,11,.22);opacity:0;transition:opacity .18s ease}
.timer-sidebar.open .timer-sidebar-backdrop{opacity:1}
.timer-sidebar-panel{position:absolute;top:0;bottom:0;left:max(0px,calc(50vw - 280px));width:252px;display:flex;flex-direction:column;padding:18px 14px;background:var(--surface);border-right:1px solid var(--line);box-shadow:18px 0 40px rgba(11,11,11,.10);transform:translateX(-104%);transition:transform .2s cubic-bezier(.2,.8,.2,1)}
.timer-sidebar.open .timer-sidebar-panel{transform:translateX(0)}
.ts-head{display:flex;align-items:center;justify-content:space-between;padding:0 4px 14px;font-size:15px;font-weight:600;color:var(--txt)}
.ts-close{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--dim);font-size:16px;line-height:1}
.ts-close:hover{color:var(--txt);background:var(--surface-2)}
.ts-list{display:flex;flex-direction:column;gap:3px;overflow-y:auto;overscroll-behavior:contain;min-height:0}
.ts-space{display:flex;flex-direction:column;gap:2px;padding:10px 10px;border-radius:10px;text-align:left;color:var(--sub)}
.ts-space:hover{background:var(--surface-2);color:var(--txt)}
.ts-space.active{background:var(--surface-2);color:var(--txt);box-shadow:inset 2px 0 0 var(--accent)}
.ts-space-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-space-meta{font-size:10px;color:var(--dim)}
.block.is-timer-target{cursor:pointer}
.block.is-timer-target:hover{border-color:var(--accent-line);background:#fbfbf7}
.record-meta{
  margin:0 0 14px;color:var(--dim);font-size:12px;
  font-variant-numeric:tabular-nums;
}
.record-time-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.record-time-row .time-input{width:44px}
.record-time-sep{margin-left:5px;font-size:11px;color:var(--dim)}
.record-time-row .record-dur-input{width:68px;min-width:0;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--txt);font-size:13px}
.record-time-row .record-dur-input:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 2px rgba(11,11,11,.08)}
.record-time-unit{font-size:11px;color:var(--dim)}
.record-plan{
  margin:0 0 14px;padding:11px 12px;border:1px solid var(--line);
  border-radius:12px;background:var(--surface-2);
}
.record-plan-main{display:flex;align-items:flex-start;gap:7px;font-size:12px;line-height:1.5}
.record-plan-main b{flex:none;font-size:10.5px;font-weight:500;color:var(--dim);padding-top:1px}
.record-plan-main span{min-width:0;color:var(--txt);font-weight:500}
.record-plan-check{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;color:var(--sub)}
.record-plan-check input{accent-color:var(--accent);width:14px;height:14px}
.tally-from-plan{margin:0 0 12px;width:100%;height:44px}
.step-history{display:flex;flex-direction:column;gap:0;padding:2px 0}
.step-history-row{position:relative;display:flex;align-items:center;gap:8px;min-height:27px;padding-left:2px}
.step-history-row:not(:last-child)::before{content:"";position:absolute;left:6px;top:15px;bottom:-3px;width:1px;background:var(--line)}
.step-history-dot{position:relative;z-index:1;width:9px;height:9px;border-radius:50%;flex:none;background:var(--initial);box-shadow:0 0 0 3px var(--surface)}
.step-history-dot[data-layer="inspiration"]{background:var(--inspiration)}
.step-history-dot[data-layer="trial"]{background:var(--amber)}
.step-history-dot[data-layer="iter"]{background:var(--present)}
.step-history-name{flex:1;font-size:12px;color:var(--sub)}
.step-history-name em{margin-left:5px;padding:1px 5px;border-radius:999px;background:var(--surface-2);font-size:9.5px;font-style:normal;color:var(--dim)}
.step-history-date{font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.record-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.record-pair .m-select{width:100%;min-width:0}
.cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.cat-choice{
  display:flex;align-items:center;justify-content:center;gap:5px;
  min-height:36px;padding:6px 4px;border-radius:8px;
  border:1px solid var(--line);background:var(--surface);
  color:var(--sub);font-size:12px;
}
.cat-choice:hover{background:var(--surface-2)}
.cat-choice.active{color:var(--txt);border-color:var(--accent);background:var(--surface);font-weight:600}
.cat-dot{width:7px;height:7px;border-radius:50%;flex:none}

/* ---------- Base controls: Tally tone ---------- */
.btn{border-radius:8px}
.btn.primary{color:#fff;background:var(--accent);border-radius:999px}
.btn.primary:hover{background:var(--accent-hover)}
.btn.deploy{color:var(--amber);background:var(--amber-soft);border-color:var(--amber-line);border-radius:999px}
.btn.deploy:hover{background:#ffe9dc;border-color:#e9b49f}
.btn.ghost{border-radius:8px;border-color:var(--line);background:var(--surface);color:var(--sub)}
.btn.ghost:hover{border-color:var(--accent-line);background:var(--surface-2);color:var(--txt)}
.btn.danger{border-radius:999px}
.m-input,.m-text,.m-select{border-radius:8px;border-color:var(--line);background:var(--surface)}
.m-input:focus,.m-text:focus,.m-select:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(11,11,11,.08)}
.mini-num,.time-input,.time-choice{border-radius:7px;border-color:var(--line);background:var(--surface)}
.mini-num:focus,.time-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(11,11,11,.08)}
.time-choice:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.time-choice[data-has="1"]{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.chip{background:var(--surface-2);color:var(--sub);border-color:var(--line)}

/* ---------- View head / cards ---------- */
.view-head{padding:2px 2px 16px;align-items:flex-start}
.vh-name{font-size:24px;font-weight:600;letter-spacing:-.3px;line-height:1.25}
.vh-stats{font-size:12px;color:var(--dim);margin-top:5px}
.head-actions{gap:6px;flex-wrap:wrap;justify-content:flex-end}
.back-btn{padding:6px 10px;border-radius:999px;border-color:var(--line);background:var(--surface);font-size:12px}
.back-btn:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.link-quiet{font-size:12px;color:var(--dim)}
.link-quiet:hover{color:var(--txt);background:var(--surface-2)}
.cal-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}
.scroll{padding:2px 2px 24px 2px;-webkit-overflow-scrolling:touch;touch-action:pan-y}
.scroll::-webkit-scrollbar-thumb{background:#d5d3c7;background-clip:content-box}

.composer{border-radius:16px;border-color:var(--line);background:var(--surface);box-shadow:none}
.composer textarea{font-size:14px;color:var(--txt)}
.composer textarea::placeholder{color:#a3a29c}
.composer-hint{font-size:10.5px;color:var(--dim)}
.tl-date{font-size:11px;color:var(--dim);letter-spacing:.3px}
.tl-time{font-size:10.5px;color:var(--dim)}
.block{border-radius:14px;border-color:var(--line);background:var(--surface);box-shadow:none}
.block:hover{border-color:#d5d3c7}
.block-text{font-size:14px;color:var(--txt)}
.block-meta{font-size:10.5px;color:var(--dim)}
.block-more{color:var(--dim)}
.block-aside{border-radius:6px;background:var(--surface-2);color:var(--sub)}
.block-aside-add{color:var(--dim)}
.block-aside-add:hover{color:var(--txt);background:var(--surface-2)}
.timer-btn,.timer-group{border-radius:999px;border-color:var(--line);background:var(--surface)}
.timer-btn:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.timer-group.running{color:var(--amber);border-color:var(--amber-line);background:var(--amber-soft)}
.timer-group.paused{color:var(--amber);border-color:var(--amber-line);background:var(--amber-soft)}
.timer-act:hover{background:rgba(11,11,11,.06)}

/* ---------- Spaces ---------- */
.space-stats{gap:6px;margin:0 2px 12px}
.space-stat{border-radius:10px;border-color:var(--line);background:var(--surface);box-shadow:none}
.space-stat.active{border-color:var(--accent);background:var(--surface)}
.space-stat .ss-label{font-size:10.5px;color:var(--dim)}
.space-stat .ss-num{font-size:16px;color:var(--txt)}
.space-search{border-radius:10px;border-color:var(--line);background:var(--surface)}
.space-panel{border-radius:16px;border-color:var(--line);background:var(--surface);box-shadow:none}
.space-panel-head{font-size:12px;color:var(--dim);border-bottom-color:var(--line-2)}
.space-row{border-radius:10px;background:transparent}
.space-row:hover{background:var(--surface-2)}
.space-row.active{background:var(--surface-2);box-shadow:none}
.space-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13.5px;color:var(--txt);text-align:left}
.space-cat{flex:none;padding:2px 6px;border-radius:999px;background:var(--surface-2);font-size:9.5px;color:var(--dim);font-weight:400}
.space-count{font-size:11px;color:var(--dim)}
.space-add{border-radius:999px;border-color:var(--line);background:var(--surface);color:var(--sub)}
.space-add:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.space-empty{color:var(--dim)}
.fab,.pencil-fab,.desk-add{display:none!important}
.insp-card{border-radius:14px;border-color:var(--line);background:var(--surface);box-shadow:none}

/* ---------- Calendar ---------- */
.cal-view{width:100%;min-width:0}
.cw-x{flex:1;min-width:0;width:100%;max-width:100%;min-height:0;display:flex;flex-direction:column;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.cal-toolbar{padding:0 2px 10px}
.cal-today,.cal-nav{border-radius:999px;border-color:var(--line);background:var(--surface)}
.cal-today:hover,.cal-nav:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.cal-range{font-size:12px;color:var(--sub)}
.cal-zoom-btn,.cal-zoom-pct{border-radius:999px;border-color:var(--line);background:var(--surface)}
.cal-zoom-btn:hover:not(:disabled),.cal-zoom-pct:hover{color:var(--txt);border-color:var(--accent-line);background:var(--surface-2)}
.cw{border-radius:14px;border-color:var(--line);background:var(--surface)}
.cw-day-head{background:var(--surface)}
.cw-day-head.today{background:var(--surface-2)}
.cw-col.today{background-color:var(--surface-2)}
.cw-entry{border-radius:7px;border-color:var(--line);background:var(--surface);box-shadow:none}
.cw-col-hit{cursor:default}
.cw-plan,.cw-entry,.cw-ad-chip,.cw-check,.cw-ad-check,.cw-ad-add,.cw-hover-add{cursor:pointer}
.cw-entry.is-done{opacity:.72}
.cw-check{border-color:#bdbcb1}
.cw-check.checked{background:var(--accent);border-color:var(--accent)}
.cw-ad-chip{border-radius:5px;border-color:var(--line);background:var(--surface)}
.cw-ad-check{border-color:#bdbcb1}
.cw-ad-check.checked{background:var(--accent);border-color:var(--accent)}
.cw-now{background:var(--amber)}
.cw-now::before{background:var(--amber)}
.cw-hover-add{border-color:var(--accent);background:var(--surface);color:var(--txt);box-shadow:0 4px 12px rgba(11,11,11,.12)}
.cw-hover-add:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.seg{background:var(--surface-2);border-radius:999px;padding:2px}
.seg-btn{border-radius:999px;font-size:12px;color:var(--dim)}
.seg-btn.active{background:var(--surface);color:var(--txt);box-shadow:0 1px 2px rgba(11,11,11,.06)}
.mo-cell{border-color:var(--line-2)}
.mo-cell.today{background:var(--surface-2)}
.mo-num{color:var(--txt)}
.mo-chip{background:var(--surface-2);color:var(--sub);border-radius:4px}
.mo-check{border-color:#bdbcb1}
.mo-check.checked{background:var(--accent);border-color:var(--accent)}
.plan-tabs{border-bottom-color:var(--line)}
.plan-tab{font-size:12px;color:var(--dim)}
.plan-tab.active{color:var(--txt);border-bottom-color:var(--accent)}
.plan-tab span{background:var(--surface-2);color:var(--dim)}
.plan-tab.active span{background:var(--surface-2);color:var(--txt)}
.done-month-select{border-radius:999px;border-color:var(--line);background:var(--surface)}
.done-month-nav{border-radius:999px;border-color:var(--line);background:var(--surface)}
.plan-row{border-bottom-color:var(--line-2)}
.plan-row:hover{background:var(--surface-2)}
.plan-row-title{font-size:14px;color:var(--txt)}
.plan-row-meta{font-size:10.5px;color:var(--dim)}
.plan-check{border-color:#bdbcb1}
.plan-check.checked{background:var(--accent);border-color:var(--accent)}
.plan-del{color:var(--dim)}
.plan-del:hover{color:var(--red);background:var(--red-soft)}
.plan-dur-btn{border-radius:999px;border-color:var(--line);background:var(--surface);color:var(--sub)}
.plan-timer-btn,.plan-timer-group{border-radius:999px;border-color:var(--line);background:var(--surface)}
.plan-timer-btn.active{color:var(--amber);border-color:var(--amber-line);background:var(--amber-soft)}
.plan-timer-group.running{color:var(--amber);border-color:var(--amber-line);background:var(--amber-soft)}
.plan-timer-group.paused{color:var(--amber);border-color:var(--amber-line);background:var(--amber-soft)}

/* ---------- Review / iteration ---------- */
.iter-root,.iter-board{border-radius:16px}
.iter-col{border-color:var(--line);background:var(--surface)}
.iter-col-head{background:var(--surface)}
.iter-col.open .iter-col-head{background:var(--surface-2)}
.iter-root-wire,.iter-wires{--iter-wire:#d6d4c8}
.iter-card,.iter-item, .iter-step-card{border-color:var(--line);background:var(--surface);box-shadow:none}
.iter-item-head{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.iter-layer-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--sub);font-size:9.5px;font-weight:600;line-height:1.6}
.iter-layer-tag[data-layer="inspiration"]{color:var(--inspiration);background:color-mix(in srgb,var(--inspiration) 9%,transparent)}
.iter-layer-tag[data-layer="trial"]{color:var(--amber);background:var(--amber-soft)}
.iter-layer-tag[data-layer="iter"]{color:var(--present);background:var(--green-soft)}
.iter-layer-state{font-size:9.5px;color:var(--dim)}
.iter-full-note{margin:0 0 8px;padding:7px 9px;border-radius:8px;background:var(--surface-2);color:var(--dim);font-size:10px;line-height:1.5}
.iter-col-label{letter-spacing:.5px}

/* ---------- Sheets / modals ---------- */
.sheet{border-radius:20px 20px 0 0;border-color:var(--line);background:var(--surface);box-shadow:0 -18px 48px rgba(11,11,11,.14)}
.sheet-head h3{font-size:16px;font-weight:600}
.field>span{font-size:11.5px;color:var(--dim)}
.sheet-note{color:var(--dim)}
.backdrop{background:rgba(11,11,11,.32)}

/* ---------- Misc ---------- */
.kb{color:var(--dim)}
.empty-icon{border-color:var(--line);background:var(--surface);color:var(--dim)}
.empty h3{color:var(--txt)}
.empty p{color:var(--dim)}
.hint-card{background:var(--surface);border-color:var(--line)}
.badge{background:var(--surface-2);color:var(--txt)}
.toast{background:var(--accent);color:#fff;border-radius:999px}

@media(max-width:600px){
  .app{padding:14px 14px 0}
  .tally-clock{font-size:64px}
  .tally-primary{max-width:none}
  .cal-view{width:min(calc(100vw - 28px), 532px);max-width:min(calc(100vw - 28px), 532px);overflow-x:hidden}
  .cw{min-width:640px}
  .view-head{align-items:flex-start;flex-wrap:wrap;row-gap:9px}
  .head-actions{gap:4px}
  .cal-head-actions{width:auto;max-width:100%;margin-left:0;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:7px}
  .cal-head-actions .seg{width:auto;max-width:100%;margin-left:0;justify-content:stretch}
  .cal-head-actions .seg-btn{flex:none;text-align:center;padding:5px 12px}
  .cal-head-actions .link-quiet{padding-left:0}
}

/* ---------- 复盘：Tally dashboard ---------- */
.review-tabs{flex:none;display:flex;gap:4px;margin:0 2px 12px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.review-tab{flex:1;min-width:0;height:34px;border-radius:9px;font-size:12px;font-weight:500;color:var(--dim);transition:background .15s,color .15s}
.review-tab:hover{color:var(--txt);background:var(--surface-2)}
.review-tab.active{background:var(--accent);color:#fff;font-weight:600}
.review-subtabs{flex:none;display:flex;gap:16px;margin:0 2px 10px;padding:0 2px;border-bottom:1px solid var(--line-2)}
.review-subtab{padding:6px 0 7px;border-bottom:2px solid transparent;font-size:11.5px;color:var(--dim)}
.review-subtab:hover{color:var(--txt)}
.review-subtab.active{color:var(--txt);border-bottom-color:var(--accent);font-weight:600}
.review-crumbs{flex:none;display:flex;align-items:center;gap:5px;margin:-3px 2px 9px;font-size:10.5px;color:var(--dim)}
.crumb-link{padding:1px 2px;border-radius:4px;color:var(--dim);font-size:10.5px}
.crumb-link:hover{color:var(--txt);background:var(--surface-2)}
.crumb-sep{color:#c6c4ba}
.crumb-current{color:var(--sub);font-weight:600}
.dash-range{margin:0 2px 12px;width:max-content}
.dash-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 2px 12px}
.dash-stat{padding:12px 12px 11px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.dash-stat span{display:block;font-size:10.5px;color:var(--dim);letter-spacing:.2px}
.dash-stat b{display:block;margin-top:4px;font-size:15px;font-weight:600;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap}
.dash-card{margin:0 2px 10px;padding:14px 14px 15px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.dash-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.dash-card-head>span:first-child{font-size:13px;font-weight:600;color:var(--txt);letter-spacing:-.1px}
.dash-card-sub{font-size:10.5px;color:var(--dim)}
.dash-ring-wrap{display:flex;align-items:center;gap:16px}
.dash-ring{position:relative;flex:none;width:132px;height:132px;border-radius:50%;display:grid;place-items:center}
.dash-ring-hole{width:88px;height:88px;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.dash-ring-hole b{font-size:15px;font-weight:600;color:var(--txt);font-variant-numeric:tabular-nums}
.dash-ring-hole span{margin-top:2px;font-size:10px;color:var(--dim)}
.dash-legend{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.dash-leg-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--sub)}
.dash-leg-dot{width:7px;height:7px;border-radius:50%;flex:none}
.dash-leg-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-leg-val{font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-leg-pct{width:34px;text-align:right;font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-empty{padding:16px 4px;text-align:center;font-size:12px;color:var(--dim)}
.dash-empty .btn{margin-top:10px}
.dash-daybar{position:relative;height:12px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.dash-day-seg{position:absolute;top:0;bottom:0;border-radius:2px;opacity:.9}
.dash-now{position:absolute;top:-3px;bottom:-3px;width:1.5px;background:var(--amber);opacity:.85}
.dash-dayaxis{display:flex;justify-content:space-between;margin-top:6px;font-size:9.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-bars{display:flex;align-items:flex-end;gap:5px;height:150px;padding-top:6px}
.dash-bar{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.dash-bar-val{font-size:9px;color:var(--dim);line-height:1.2;min-height:11px;font-variant-numeric:tabular-nums}
.dash-bar-track{width:100%;max-width:26px;flex:1;display:flex;align-items:flex-end;background:var(--surface-2);border-radius:5px;overflow:hidden}
.dash-bar-fill{width:100%;display:flex;flex-direction:column-reverse;background:var(--accent);border-radius:5px;min-height:0;overflow:hidden;transition:height .2s}
.dash-bar-seg{display:block;width:100%;flex:none}
.dash-bar-label{margin-top:5px;font-size:9.5px;color:var(--dim);white-space:nowrap}

/* 有效时间趋势 */
.dash-trend{width:100%}
.dash-trend svg{display:block;width:100%;height:auto;overflow:visible}
.dash-trend-axis{stroke:var(--line);stroke-width:1}
.dash-trend-all{stroke:#b9b7ad;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.dash-trend-effective{stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.dash-trend-x{font-size:8px;fill:var(--dim)}
.dash-trend-legend{display:flex;gap:14px;margin-top:4px;font-size:10px;color:var(--dim)}
.dash-trend-legend span{display:flex;align-items:center;gap:5px}
.dash-trend-legend i{width:12px;height:2px;border-radius:2px;background:var(--accent)}
.dash-trend-legend i.is-all{background:#b9b7ad}

/* 24h 纵向时间轴 */
.dash-vtl{position:relative;display:flex;align-items:stretch;height:360px;padding:2px 0 2px 0}
.dash-vtl-labels{position:relative;flex:none;width:38px;height:100%}
.dash-vtl-labels span{position:absolute;right:8px;transform:translateY(-50%);font-size:9.5px;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}
.dash-vtl-track{position:relative;flex:1;min-width:0;height:100%;border-left:1px solid var(--line);margin-left:0}
.dash-vtl-line{position:absolute;left:0;right:0;height:1px;background:var(--line-2)}
.dash-vtl-block{
  position:absolute;left:4px;right:4px;min-height:16px;overflow:hidden;
  display:flex;align-items:baseline;gap:5px;padding:3px 6px;
  border:0;border-left:2px solid var(--c,#898781);border-radius:4px;
  background:color-mix(in srgb,var(--c,#898781) 11%,transparent);
  text-align:left;color:var(--txt);
}
.dash-vtl-block:hover{background:color-mix(in srgb,var(--c,#898781) 18%,transparent)}
.dash-vtl-time{flex:none;font-size:9px;color:var(--sub);font-variant-numeric:tabular-nums}
.dash-vtl-text{flex:1;min-width:0;font-size:10.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-vtl-dur{flex:none;font-size:9px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-vtl-now{position:absolute;left:-4px;right:0;height:1.5px;background:var(--amber);z-index:3;pointer-events:none}
.dash-vtl-now::before{content:"";position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--amber)}
.dash-vtl-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;color:var(--dim)}
.dash-rec{display:flex;align-items:center;gap:7px;min-height:32px;border-top:1px solid var(--line-2);font-size:12px;color:var(--sub)}
.dash-rec:first-of-type{border-top:0}
.dash-rec-dot{width:6px;height:6px;border-radius:50%;flex:none}
.dash-rec-time{width:34px;flex:none;font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-rec-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt)}
.dash-rec-dur{flex:none;font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}
.dash-rec-space{margin:-3px 0 6px 20px;font-size:10px;color:var(--dim)}
.dash-layers{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.dash-layer{display:flex;flex-direction:column;gap:3px;padding:9px 8px;border-radius:10px;background:var(--surface-2)}
.dash-layer span{font-size:10.5px;color:var(--dim)}
.dash-layer b{font-size:17px;font-weight:600;color:var(--txt);font-variant-numeric:tabular-nums}
.dash-layer[data-layer="inspiration"] b{color:var(--inspiration)}
.dash-layer[data-layer="trial"] b{color:var(--amber)}
.dash-layer[data-layer="iter"] b{color:var(--present)}
.dash-iter-card{cursor:pointer;transition:border-color .15s,background .15s}
.dash-iter-card:hover{border-color:var(--accent-line);background:#fbfbf7}
.dash-exp-card{display:flex;align-items:center;justify-content:space-between;gap:10px;width:calc(100% - 4px);margin:0 2px 22px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);text-align:left}
.dash-exp-card:hover{border-color:var(--accent-line);background:#fbfbf7}
.dash-exp-card span:first-child{display:flex;flex-direction:column;gap:2px}
.dash-exp-card b{font-size:13px;color:var(--txt)}
.dash-exp-card small{font-size:10.5px;color:var(--dim)}
.dash-exp-count{font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}
.exp-card{margin:0 2px 8px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.exp-card.is-pinned{border-color:#d9d2a8;background:#fdfcf4}
.exp-toolbar{margin:0 2px 12px}
.exp-search{display:flex;align-items:center;gap:7px;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--dim)}
.exp-search svg{width:14px;height:14px;flex:none}
.exp-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-size:13px;color:var(--txt)}
.exp-search input::placeholder{color:var(--dim)}
.exp-filters{display:flex;align-items:center;gap:6px;margin-top:7px}
.exp-select{min-width:0;flex:1;height:31px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--sub);font-size:11px}
.exp-select:focus{border-color:var(--accent);outline:0}
.exp-pin-filter{flex:none;height:31px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--dim);font-size:11px}
.exp-pin-filter.active{color:#8a6d00;border-color:#e6d694;background:#fdf8e3}
.exp-icon-btn{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:var(--dim);font-size:15px;line-height:1}
.exp-icon-btn:hover{background:var(--surface-2);color:var(--txt)}
.exp-icon-btn.on{color:#b48a00}
.exp-actions{display:flex;justify-content:flex-end;margin-top:7px}
.exp-actions .link-quiet{font-size:10.5px;color:var(--dim)}
.exp-actions .link-quiet:hover{color:var(--txt);background:var(--surface-2)}
.exp-meta{display:flex;align-items:center;gap:7px;font-size:10.5px;color:var(--dim)}
.exp-layer{padding:2px 6px;border-radius:999px;background:var(--surface-2);color:var(--sub);font-size:10px}
.exp-layer[data-layer="inspiration"]{color:var(--inspiration);background:color-mix(in srgb,var(--inspiration) 9%,transparent)}
.exp-layer[data-layer="trial"]{color:var(--amber);background:var(--amber-soft)}
.exp-layer[data-layer="iter"]{color:var(--present);background:var(--green-soft)}
.exp-time{margin-left:auto;font-variant-numeric:tabular-nums}
.exp-title{margin-top:7px;font-size:13px;font-weight:600;color:var(--txt);line-height:1.5}
.exp-text{display:flex;gap:7px;margin-top:6px;font-size:12px;line-height:1.55;color:var(--sub)}
.exp-text b{flex:none;font-size:10px;font-weight:500;color:var(--dim);padding-top:2px}
.exp-text span{min-width:0}

/* ---------- 四层：初始 / 灵感 / 尝试 / 呈现 ---------- */
.tl-dot[data-layer="inspiration"]{color:var(--inspiration)}
.block[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.iter-item[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.wa-card[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.run-card[data-layer="inspiration"]{border-left:3px solid var(--inspiration)}
.cw-entry[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.cw-plan[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.cw-ad-chip[data-layer="inspiration"]{border-left-color:var(--inspiration)}
.tl-dot[data-layer="iter"]{color:var(--present)}
.block[data-layer="iter"]{border-left-color:var(--present)}
.iter-item[data-layer="iter"]{border-left-color:var(--present)}
.cw-entry[data-layer="iter"]{border-left-color:var(--present)}
.cw-plan[data-layer="iter"]{border-left-color:var(--present)}
.cw-ad-chip[data-layer="iter"]{border-left-color:var(--present)}
.tl-dot[data-layer="trial"]{color:var(--amber)}
.block[data-layer="trial"]{border-left-color:var(--amber)}
.iter-item[data-layer="trial"]{border-left-color:var(--amber)}
