:root{
    --ink:#111512;
    --ink-soft:#39413d;
    --muted:#6f7974;
    --line:rgba(17,21,18,.09);
    --lime:#d7ff3f;
    --lime-soft:rgba(215,255,63,.55);
    --panel:rgba(255,255,255,.52);
    --panel-edge:rgba(255,255,255,.72);
    --radius-xl:34px;
    --radius-lg:24px;
    --radius-md:18px;
    --ease:cubic-bezier(.22,.75,.2,1);
    --shadow-panel:0 34px 80px -46px rgba(24,42,33,.45), inset 0 1px 0 rgba(255,255,255,.85);
    --shadow-card:0 14px 34px -24px rgba(24,42,33,.55);
  }

  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  [hidden]{display:none !important}
  ::selection{background:var(--lime);color:#12160b}
  html{-webkit-text-size-adjust:100%}
  body{
    min-height:100vh;
    color:var(--ink);
    font-family:"Manrope","PingFang SC","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif;
    font-weight:300;
    font-size:15px;
    line-height:1.5;
    letter-spacing:.005em;
    background:
      radial-gradient(1200px 720px at 10% -12%, rgba(255,255,255,.92), transparent 62%),
      radial-gradient(860px 560px at 92% 4%, rgba(215,255,63,.16), transparent 64%),
      radial-gradient(1100px 780px at 74% 104%, rgba(178,226,203,.6), transparent 62%),
      linear-gradient(166deg,#eef0ee 0%,#e6ebe6 38%,#dcece2 74%,#d6ebe0 100%);
    background-attachment:fixed;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
    overflow-x:hidden;
  }
  /* 极淡颗粒，增加高级质感 */
  body::after{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    z-index:0;
    opacity:.16;
    mix-blend-mode:soft-light;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
  }

  .bg-blobs{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
  .bg-blobs span{position:absolute;border-radius:50%;filter:blur(80px);opacity:.6;will-change:transform}
  .blob-a{width:46vw;height:46vw;left:-12vw;top:-14vw;background:radial-gradient(circle,rgba(255,255,255,.95),rgba(255,255,255,0) 68%);animation:drift 26s var(--ease) infinite alternate}
  .blob-b{width:38vw;height:38vw;right:-10vw;top:6vh;background:radial-gradient(circle,rgba(215,255,63,.24),rgba(215,255,63,0) 68%);animation:drift 32s var(--ease) infinite alternate-reverse}
  .blob-c{width:50vw;height:50vw;right:8vw;bottom:-24vw;background:radial-gradient(circle,rgba(160,216,188,.55),rgba(160,216,188,0) 66%);animation:drift 36s var(--ease) infinite alternate}
  @keyframes drift{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(3vw,3.5vh,0) scale(1.08)}}

  .shell{
    position:relative;
    z-index:1;
    width:100%;
    max-width:1380px;
    margin:0 auto;
    padding:26px clamp(16px,3.4vw,44px) 52px;
  }

  /* ---------- 顶栏 ---------- */
  .topbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    padding:4px 4px 22px;
    flex-wrap:wrap;
  }
  .brand{
    display:flex;
    align-items:center;
    gap:12px;
    font-size:11.5px;
    letter-spacing:.2em;
    text-transform:uppercase;
    font-weight:600;
  }
  .brand-dot{
    width:9px;height:9px;border-radius:50%;
    background:var(--lime);
    box-shadow:0 0 0 1px rgba(17,21,18,.55), 0 0 14px rgba(215,255,63,.9);
    flex:none;
  }
  .brand .slash{color:rgba(17,21,18,.22);font-weight:300;letter-spacing:0}
  .brand .dim{color:var(--muted);font-weight:400;letter-spacing:.06em;text-transform:none;font-size:12.5px}

  .top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .today{
    font-size:12px;
    color:var(--muted);
    letter-spacing:.04em;
    margin-left:auto;
    margin-right:6px;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
  }
  .pill{
    appearance:none;
    border:1px solid transparent;
    border-radius:999px;
    font-family:inherit;
    font-size:13px;
    font-weight:500;
    letter-spacing:.02em;
    padding:11px 20px;
    cursor:pointer;
    display:inline-flex;
    align-items:center;
    gap:7px;
    white-space:nowrap;
    transition:transform .3s var(--ease), background .3s, box-shadow .3s, color .3s, border-color .3s;
  }
  .pill svg{width:14px;height:14px;flex:none}
  .pill.solid{
    background:var(--ink);
    color:#f6f8f3;
    box-shadow:0 14px 30px -16px rgba(17,21,18,.65);
  }
  .pill.solid:hover{
    transform:translateY(-1px);
    box-shadow:0 18px 34px -14px rgba(17,21,18,.55), 0 0 0 1px rgba(215,255,63,.0);
    background:#1b211d;
  }
  .pill.solid:active{transform:translateY(0) scale(.985)}
  .pill.ghost{
    background:rgba(255,255,255,.4);
    border-color:rgba(255,255,255,.8);
    color:var(--ink-soft);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
  }
  .pill.ghost:hover{background:rgba(255,255,255,.72);color:var(--ink);transform:translateY(-1px)}
  .pill:focus-visible,.icon-btn:focus-visible,.add-row:focus-visible,.text-btn:focus-visible{
    outline:2px solid var(--ink);
    outline-offset:3px;
  }

  /* ---------- 概览面板 ---------- */
  .hero{
    position:relative;
    border-radius:var(--radius-xl);
    background:var(--panel);
    border:1px solid var(--panel-edge);
    box-shadow:var(--shadow-panel);
    backdrop-filter:blur(34px) saturate(125%);
    -webkit-backdrop-filter:blur(34px) saturate(125%);
    padding:clamp(26px,3vw,42px) clamp(24px,3.6vw,50px) clamp(26px,3vw,38px);
    overflow:hidden;
    animation:rise .9s var(--ease) both;
  }
  .hero::before{
    content:"";
    position:absolute;
    width:420px;height:420px;
    right:-120px;top:-220px;
    border-radius:50%;
    background:radial-gradient(circle,rgba(215,255,63,.22),transparent 66%);
    pointer-events:none;
  }
  .hero-top{
    position:relative;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:end;
    gap:clamp(24px,4vw,56px);
  }
  .eyebrow{
    font-size:10.5px;
    letter-spacing:.28em;
    text-transform:uppercase;
    color:var(--muted);
    font-weight:500;
    display:flex;
    align-items:center;
    gap:9px;
  }
  .eyebrow::before{
    content:"";
    width:16px;height:1px;
    background:rgba(17,21,18,.28);
  }
  .pct{
    display:flex;
    align-items:flex-start;
    margin:10px 0 0 -6px;
    font-family:"Manrope",-apple-system,"SF Pro Display","Helvetica Neue","PingFang SC","Hiragino Sans GB",Arial,sans-serif;
    font-size:clamp(96px,14.5vw,188px);
    font-weight:200;
    line-height:.84;
    letter-spacing:-.06em;
    font-variant-numeric:tabular-nums;
    font-feature-settings:"tnum" 1;
  }
  .pct-sign{
    font-size:.27em;
    font-weight:300;
    letter-spacing:-.02em;
    color:var(--muted);
    margin-left:.06em;
    transform:translateY(.42em);
  }
  .hero-sub{
    margin-top:16px;
    font-size:13px;
    color:var(--muted);
    letter-spacing:.02em;
    font-variant-numeric:tabular-nums;
  }
  .hero-sub b{color:var(--ink);font-weight:500}

  .stats{
    display:flex;
    flex-direction:column;
    gap:2px;
    min-width:196px;
    padding-bottom:8px;
  }
  .stat{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:22px;
    padding:9px 2px;
    border-bottom:1px solid rgba(17,21,18,.07);
    font-size:12.5px;
    color:var(--muted);
  }
  .stat:last-child{border-bottom:none}
  .stat-label{display:flex;align-items:center;gap:8px;letter-spacing:.03em}
  .stat-val{
    font-size:16px;
    font-weight:500;
    color:var(--ink);
    font-variant-numeric:tabular-nums;
    letter-spacing:-.01em;
  }
  .sdot{width:6px;height:6px;border-radius:50%;background:rgba(17,21,18,.18);flex:none}
  .sdot.doing{background:var(--lime);box-shadow:0 0 0 1px rgba(17,21,18,.28)}
  .sdot.done{background:rgba(17,21,18,.55)}

  .progress-wrap{margin-top:clamp(26px,3vw,38px)}
  .progress{
    display:flex;
    gap:5px;
    height:9px;
    width:100%;
  }
  .seg{
    position:relative;
    flex:1 1 0;
    border-radius:999px;
    background:rgba(17,21,18,.075);
    overflow:hidden;
  }
  .seg i{
    position:absolute;
    inset:0 auto 0 0;
    width:0;
    border-radius:999px;
    background:linear-gradient(180deg,#e5ff7a 0%,var(--lime) 55%,#c9f22c 100%);
    box-shadow:0 0 12px rgba(215,255,63,.45);
    transition:width .75s var(--ease);
  }
  .progress-legend{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    margin-top:12px;
    font-size:11.5px;
    letter-spacing:.06em;
    color:var(--muted);
    font-variant-numeric:tabular-nums;
  }
  .progress-legend .right{display:flex;align-items:center;gap:7px}
  .legend-key{
    width:14px;height:5px;border-radius:999px;
    background:var(--lime);
    box-shadow:0 0 8px rgba(215,255,63,.6);
    flex:none;
  }

  /* ---------- 今日简报 ---------- */
  .brief{
    margin-top:18px;
    display:grid;
    grid-template-columns:minmax(280px,.86fr) minmax(0,1.65fr);
    gap:16px;
    animation:rise .95s .05s var(--ease) both;
  }
  .brief-panel{
    position:relative;
    border-radius:30px;
    background:var(--panel);
    border:1px solid var(--panel-edge);
    box-shadow:var(--shadow-panel);
    backdrop-filter:blur(30px) saturate(122%);
    -webkit-backdrop-filter:blur(30px) saturate(122%);
    padding:22px 24px;
    overflow:hidden;
    display:flex;
    flex-direction:column;
  }
  .brief-head{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    margin-bottom:16px;
  }
  .brief-head .eyebrow{margin:0}
  .brief-date{font-size:11.5px;color:var(--muted);letter-spacing:.04em;white-space:nowrap}
  .lunar-panel::after{
    content:"";position:absolute;width:220px;height:220px;right:-90px;bottom:-120px;border-radius:50%;
    background:radial-gradient(circle,rgba(215,255,63,.18),transparent 68%);pointer-events:none;
  }
  .lunar-main{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:14px}
  .lunar-day{font-size:clamp(38px,3.4vw,50px);font-weight:200;line-height:1;letter-spacing:.02em}
  .lunar-side{display:flex;flex-direction:column;gap:6px;padding-bottom:4px;min-width:0}
  .lunar-ganzhi{font-size:11.5px;color:var(--muted);letter-spacing:.03em;line-height:1.5}
  .lunar-badge{
    align-self:flex-start;font-size:10.5px;letter-spacing:.12em;color:var(--ink-soft);
    border:1px solid var(--line);border-radius:999px;padding:3px 9px;
  }
  .lunar-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid rgba(17,21,18,.06)}
  .lunar-row p{
    margin:0;font-size:12.5px;line-height:1.7;color:var(--ink-soft);
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .tag{
    flex:none;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;
    font-size:11px;font-weight:600;margin-top:1px;
  }
  .tag.yi{background:var(--lime);color:#12160b}
  .tag.ji{background:rgba(17,21,18,.08);color:var(--ink-soft)}
  .lunar-fortune{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
  .lunar-fortune span{
    font-size:10.5px;color:var(--muted);letter-spacing:.03em;
    border:1px dashed rgba(17,21,18,.12);border-radius:999px;padding:3px 9px;
  }
  .lunar-fortune b{font-weight:500;color:var(--ink-soft)}
  .lunar-foot{
    margin-top:auto;padding-top:12px;display:flex;gap:8px;flex-wrap:wrap;
    font-size:11px;color:var(--muted);letter-spacing:.03em;
  }
  .lunar-foot span{
    border:1px solid rgba(17,21,18,.07);border-radius:999px;padding:4px 10px;
    background:rgba(255,255,255,.35);
  }
  .news-panel{min-width:0}
  .news-refresh{padding:4px 0;font-size:11.5px}
  .news-list{
    list-style:none;margin:0;padding:0 4px 0 0;
    display:flex;flex-direction:column;gap:2px;
    max-height:196px;overflow-y:auto;overscroll-behavior:contain;
    scrollbar-width:thin;
  }
  .news-list li{
    display:flex;gap:10px;align-items:baseline;
    padding:6px 4px;border-radius:10px;
    transition:background .25s var(--ease);
  }
  .news-list li:hover{background:rgba(255,255,255,.45)}
  .news-list .idx{
    flex:none;width:18px;font-size:10.5px;color:var(--muted);
    font-variant-numeric:tabular-nums;letter-spacing:.04em;padding-top:2px;
  }
  .news-list .txt{font-size:12.8px;line-height:1.6;color:var(--ink-soft)}
  .news-list li:first-child .txt{color:var(--ink);font-weight:400}
  .news-empty{color:var(--muted);font-size:12.5px;padding:8px 4px}
  .news-foot{
    margin-top:auto;padding-top:12px;display:flex;justify-content:space-between;gap:10px;
    font-size:10.5px;color:var(--muted);letter-spacing:.04em;
  }

  /* ---------- 看板 ---------- */
  .board{
    margin-top:20px;
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:16px;
    align-items:start;
    animation:rise 1s .1s var(--ease) both;
  }
  .column{
    position:relative;
    border-radius:var(--radius-lg);
    background:var(--panel);
    border:1px solid var(--panel-edge);
    box-shadow:var(--shadow-panel);
    backdrop-filter:blur(28px) saturate(120%);
    -webkit-backdrop-filter:blur(28px) saturate(120%);
    padding:16px 14px 14px;
    display:flex;
    flex-direction:column;
    min-height:372px;
    transition:background .35s var(--ease), box-shadow .35s var(--ease);
  }
  .column-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:2px 6px 14px;
  }
  .column-title{display:flex;align-items:center;gap:9px;min-width:0}
  .column-title h2{
    margin:0;
    font-size:13.5px;
    font-weight:500;
    letter-spacing:.04em;
    color:var(--ink);
  }
  .dot{width:7px;height:7px;border-radius:50%;flex:none;background:rgba(17,21,18,.18)}
  .column[data-status="doing"] .dot{background:var(--lime);box-shadow:0 0 0 1px rgba(17,21,18,.3),0 0 10px rgba(215,255,63,.7)}
  .column[data-status="done"] .dot{background:rgba(17,21,18,.55)}
  .count{
    font-size:11px;
    color:var(--muted);
    background:rgba(17,21,18,.05);
    border-radius:999px;
    padding:1.5px 7px;
    font-variant-numeric:tabular-nums;
    transition:background .3s,color .3s;
  }
  .icon-btn{
    appearance:none;
    border:none;
    background:rgba(255,255,255,.6);
    color:var(--ink-soft);
    width:27px;height:27px;
    border-radius:50%;
    display:grid;
    place-items:center;
    cursor:pointer;
    padding:0;
    transition:background .25s, color .25s, transform .25s var(--ease);
  }
  .icon-btn svg{width:13px;height:13px}
  .icon-btn:hover{background:var(--ink);color:#fff}
  .icon-btn:active{transform:scale(.92)}
  .add-mini{border:1px dashed rgba(17,21,18,.16);background:rgba(255,255,255,.35)}
  .add-mini:hover{background:var(--ink);color:var(--lime)}

  .col-body{
    flex:1;
    display:flex;
    flex-direction:column;
    gap:9px;
    padding:4px;
    border-radius:16px;
    min-height:120px;
    transition:background .3s var(--ease), box-shadow .3s var(--ease);
  }
  .column.drop-active{background:rgba(255,255,255,.66)}
  .column.drop-active .col-body{
    background:rgba(215,255,63,.1);
    box-shadow:inset 0 0 0 1.5px rgba(164,205,20,.4);
  }
  .column.drop-active .empty{display:none}

  /* ---------- 卡片 ---------- */
  .card{
    position:relative;
    border-radius:var(--radius-md);
    background:rgba(255,255,255,.78);
    border:1px solid rgba(255,255,255,.9);
    box-shadow:var(--shadow-card);
    padding:14px 14px 13px;
    cursor:grab;
    user-select:none;
    touch-action:pan-y;
    transition:transform .32s var(--ease), box-shadow .32s var(--ease), background .32s, border-color .32s;
    will-change:transform;
  }
  .card:hover{
    transform:translateY(-2px);
    background:#fff;
    box-shadow:0 22px 44px -26px rgba(24,42,33,.6);
  }
  .card:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
  .card-main{padding-right:38px}
  .card-title{
    margin:0;
    font-size:14px;
    font-weight:500;
    line-height:1.4;
    letter-spacing:-.005em;
    color:var(--ink);
    word-break:break-word;
  }
  .card-note{
    margin:5px 0 0;
    font-size:12px;
    line-height:1.55;
    color:var(--muted);
    word-break:break-word;
  }
  .card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:10px}
  .chip{
    font-size:10.5px;
    letter-spacing:.04em;
    color:#5e6863;
    background:rgba(17,21,18,.055);
    border-radius:999px;
    padding:3.5px 8px;
    line-height:1.2;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
  }
  .chip-time{color:#454e49}
  .chip-time::before{
    content:"";
    display:inline-block;
    width:4px;height:4px;
    border-radius:50%;
    background:rgba(17,21,18,.32);
    margin-right:5px;
    vertical-align:1.5px;
  }
  .chip-check{color:#4c554f}

  .card-actions{
    position:absolute;
    top:10px;right:10px;
    display:flex;
    gap:4px;
    opacity:0;
    transform:translateY(-2px);
    transition:opacity .25s var(--ease), transform .25s var(--ease);
  }
  .card:hover .card-actions,
  .card:focus-within .card-actions{opacity:1;transform:translateY(0)}
  .card-actions .icon-btn{
    width:24px;height:24px;
    background:rgba(17,21,18,.055);
    color:#4a534e;
  }
  .card-actions .icon-btn:hover{background:var(--ink);color:#fff}
  .card-actions .icon-btn svg{width:12px;height:12px}

  /* 进行中：整张荧光填充 */
  .card.card-lime{
    background:linear-gradient(152deg,#e6ff82 0%,var(--lime) 52%,#cbf32e 100%);
    border-color:rgba(255,255,255,.55);
    box-shadow:0 22px 44px -26px rgba(148,186,10,.8);
  }
  .card.card-lime:hover{
    background:linear-gradient(152deg,#ebff9a 0%,#dbff4f 52%,#d0f63a 100%);
    box-shadow:0 26px 50px -24px rgba(148,186,10,.85);
  }
  .card.card-lime .card-note{color:rgba(17,21,18,.62)}
  .card.card-lime .chip{background:rgba(17,21,18,.09);color:#252b1d}
  .card.card-lime .chip-time::before{background:rgba(17,21,18,.45)}
  .card.card-lime .card-actions .icon-btn{background:rgba(17,21,18,.1);color:#2c3225}
  .card.card-lime .card-actions .icon-btn:hover{background:var(--ink);color:var(--lime)}

  /* 已完成：低饱和 */
  .card.card-done{background:rgba(255,255,255,.6);box-shadow:0 10px 26px -24px rgba(24,42,33,.5)}
  .card.card-done .card-title{
    color:#5d6761;
    text-decoration:line-through;
    text-decoration-color:rgba(17,21,18,.28);
    text-decoration-thickness:1px;
  }
  .card.card-done:hover{background:rgba(255,255,255,.8)}

  .empty{
    margin:0;
    border:1.5px dashed rgba(17,21,18,.12);
    border-radius:16px;
    padding:26px 12px;
    text-align:center;
    font-size:12px;
    letter-spacing:.05em;
    color:#8a938e;
  }

  .drag-source{opacity:.2}
  .drag-ghost{
    position:fixed;
    left:0;top:0;
    z-index:200;
    margin:0;
    pointer-events:none;
    cursor:grabbing;
    box-shadow:0 34px 60px -24px rgba(20,40,30,.5);
    transform-origin:center;
    transition:none;
    opacity:1;
  }
  body.dragging{cursor:grabbing}
  body.dragging *{cursor:grabbing !important}
  .drop-slot{
    flex:none;
    height:58px;
    border-radius:16px;
    border:1.5px dashed rgba(17,21,18,.24);
    background:rgba(255,255,255,.45);
    animation:slotIn .22s var(--ease) both;
  }
  @keyframes slotIn{from{opacity:0;transform:scaleY(.7)}to{opacity:1;transform:scaleY(1)}}

  /* ---------- 入场与位移动画 ---------- */
  @keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
  @keyframes cardIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
  .card.is-new{animation:cardIn .5s var(--ease) both}

  /* ---------- 页脚 ---------- */
  .foot{
    margin-top:26px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:18px;
    flex-wrap:wrap;
    font-size:11px;
    letter-spacing:.08em;
    color:#78827d;
  }
  .foot span{display:inline-flex;align-items:center;gap:7px}
  .foot i{
    width:4px;height:4px;border-radius:50%;
    background:rgba(17,21,18,.22);
    display:inline-block;
  }

  /* ---------- 弹窗 ---------- */
  dialog{
    border:none;
    padding:0;
    background:transparent;
    color:var(--ink);
    max-width:100vw;
    max-height:calc(100vh - 28px);
    overflow:visible;
  }
  dialog::backdrop{
    background:rgba(219,231,223,.5);
    backdrop-filter:blur(12px) saturate(120%);
    -webkit-backdrop-filter:blur(12px) saturate(120%);
  }
  .dialog-card{
    width:min(486px,calc(100vw - 28px));
    max-height:calc(100vh - 28px);
    overflow-y:auto;
    overscroll-behavior:contain;
    background:rgba(252,253,250,.94);
    border:1px solid rgba(255,255,255,.9);
    border-radius:28px;
    padding:26px;
    box-shadow:0 50px 110px -40px rgba(18,34,26,.55), inset 0 1px 0 #fff;
    animation:modalIn .42s var(--ease) both;
  }
  @keyframes modalIn{from{opacity:0;transform:translateY(16px) scale(.975)}to{opacity:1;transform:none}}
  .dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
  .dialog-eyebrow{font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);font-weight:500}
  .dialog-title{margin:7px 0 0;font-size:22px;font-weight:300;letter-spacing:-.01em}
  .dialog-close{
    width:30px;height:30px;border-radius:50%;
    border:1px solid rgba(17,21,18,.1);
    background:rgba(255,255,255,.6);
    display:grid;place-items:center;
    cursor:pointer;color:var(--ink-soft);
    transition:background .25s,color .25s,transform .25s;
    flex:none;
  }
  .dialog-close:hover{background:var(--ink);color:#fff}
  .dialog-close:active{transform:scale(.92)}
  .dialog-close svg{width:13px;height:13px}

  .field{margin-bottom:15px}
  .field label,.field .label{
    display:flex;
    align-items:center;
    gap:6px;
    font-size:10px;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--muted);
    font-weight:500;
    margin-bottom:7px;
  }
  .field .optional{text-transform:none;letter-spacing:.06em;color:#9aa39e;font-weight:400}
  .field input[type="text"],.field input[type="time"],.field input[type="email"],.field input[type="password"],.field textarea{
    width:100%;
    font-family:inherit;
    font-size:14px;
    font-weight:400;
    color:var(--ink);
    background:rgba(17,21,18,.04);
    border:1px solid transparent;
    border-radius:13px;
    padding:11px 13px;
    outline:none;
    transition:background .25s,border-color .25s,box-shadow .25s;
    appearance:none;
    color-scheme:light;
  }
  .field textarea{resize:vertical;min-height:62px;line-height:1.55}
  .field input::placeholder,.field textarea::placeholder{color:#a4ada8;font-weight:300}
  .field input:focus,.field textarea:focus{
    background:#fff;
    border-color:rgba(17,21,18,.5);
    box-shadow:0 0 0 3px rgba(215,255,63,.65);
  }
  .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

  .segmented{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:3px;
    padding:4px;
    background:rgba(17,21,18,.05);
    border-radius:999px;
  }
  .segmented label{position:relative;margin:0;display:block}
  .segmented input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
  .segmented span{
    display:block;
    text-align:center;
    padding:8px 6px;
    border-radius:999px;
    font-size:12px;
    font-weight:500;
    letter-spacing:.04em;
    color:var(--muted);
    transition:background .3s var(--ease),color .3s var(--ease),box-shadow .3s;
  }
  .segmented input:checked + span{background:var(--ink);color:#f6f8f3;box-shadow:0 8px 16px -10px rgba(17,21,18,.6)}
  .segmented input[value="doing"]:checked + span{
    background:var(--lime);
    color:#12160b;
    box-shadow:0 8px 18px -10px rgba(160,200,0,.9);
  }
  .segmented input:focus-visible + span{outline:2px solid var(--ink);outline-offset:2px}

  .dialog-actions{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-top:22px;
  }
  .dialog-actions .right{display:flex;gap:9px;align-items:center;margin-left:auto}
  .text-btn{
    appearance:none;border:none;background:none;
    font-family:inherit;font-size:12px;letter-spacing:.04em;
    color:#8b938f;cursor:pointer;padding:8px 2px;
    border-bottom:1px solid transparent;
    transition:color .25s,border-color .25s;
  }
  .text-btn:hover{color:#8d2f22;border-color:rgba(141,47,34,.4)}
  .dialog-actions .pill{padding:10px 18px;font-size:12.5px}

  /* ---------- Toast ---------- */
  .toast{
    position:fixed;
    left:50%;
    bottom:26px;
    z-index:300;
    transform:translate(-50%,16px);
    display:flex;
    align-items:center;
    gap:16px;
    background:var(--ink);
    color:#f2f5ef;
    border-radius:999px;
    padding:9px 9px 9px 18px;
    font-size:12.5px;
    letter-spacing:.02em;
    box-shadow:0 24px 50px -22px rgba(0,0,0,.55);
    opacity:0;
    pointer-events:none;
    transition:opacity .3s var(--ease),transform .3s var(--ease);
    max-width:calc(100vw - 32px);
  }
  .toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
  .toast-msg{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .toast button{
    appearance:none;border:none;
    background:var(--lime);
    color:#12160b;
    font-family:inherit;
    font-size:12px;
    font-weight:600;
    letter-spacing:.02em;
    padding:7px 13px;
    border-radius:999px;
    cursor:pointer;
    flex:none;
    transition:transform .2s,filter .2s;
  }
  .toast button:hover{filter:brightness(.96);transform:translateY(-1px)}
  .toast button:focus-visible{outline:2px solid #fff;outline-offset:2px}

  /* ---------- 启动占位 ---------- */
  .boot{
    position:fixed;
    inset:0;
    z-index:500;
    display:grid;
    place-items:center;
    pointer-events:none;
  }
  .boot-dot{
    width:10px;height:10px;
    border-radius:50%;
    background:var(--lime);
    box-shadow:0 0 0 1px rgba(17,21,18,.5), 0 0 26px rgba(215,255,63,.9);
    animation:bootPulse 1.15s var(--ease) infinite;
  }
  @keyframes bootPulse{0%,100%{opacity:.55;transform:scale(.9)}50%{opacity:1;transform:scale(1.3)}}

  /* ---------- 同步状态 ---------- */
  .sync-pill{
    display:inline-flex;
    align-items:center;
    gap:7px;
    font-size:11px;
    letter-spacing:.05em;
    color:var(--muted);
    padding:8px 12px;
    border-radius:999px;
    background:rgba(255,255,255,.35);
    border:1px solid rgba(255,255,255,.7);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    white-space:nowrap;
    font-variant-numeric:tabular-nums;
  }
  .sync-pill i{
    width:6px;height:6px;
    border-radius:50%;
    background:var(--lime);
    box-shadow:0 0 8px rgba(215,255,63,.8);
    flex:none;
    transition:background .3s,box-shadow .3s;
  }
  .sync-pill.is-syncing i{background:#a9b2ad;box-shadow:none;animation:syncBlink 1s ease infinite}
  .sync-pill.is-offline i{background:#8d3b2f;box-shadow:none}
  .sync-pill.is-local i{background:rgba(17,21,18,.35);box-shadow:none}
  @keyframes syncBlink{50%{opacity:.3}}
  .signout-btn{padding:11px 16px;font-size:12px}

  /* ---------- 登录 ---------- */
  .auth{
    position:relative;
    z-index:2;
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:clamp(18px,4vw,44px);
  }
  .auth-inner{width:min(424px,100%);animation:rise .85s var(--ease) both}
  .auth-brand{
    display:flex;
    align-items:center;
    gap:12px;
    padding:0 4px 18px;
    font-size:11.5px;
    letter-spacing:.2em;
    text-transform:uppercase;
    font-weight:600;
  }
  .auth-card{
    background:var(--panel);
    border:1px solid var(--panel-edge);
    border-radius:30px;
    box-shadow:var(--shadow-panel);
    backdrop-filter:blur(34px) saturate(125%);
    -webkit-backdrop-filter:blur(34px) saturate(125%);
    padding:clamp(24px,4vw,34px);
    position:relative;
    overflow:hidden;
  }
  .auth-card::before{
    content:"";
    position:absolute;
    width:280px;height:280px;
    right:-130px;top:-170px;
    border-radius:50%;
    background:radial-gradient(circle,rgba(215,255,63,.24),transparent 66%);
    pointer-events:none;
  }
  .auth-card > *{position:relative}
  .auth-title{
    margin:12px 0 0;
    font-size:clamp(27px,5vw,32px);
    font-weight:200;
    letter-spacing:-.02em;
    line-height:1.2;
    color:var(--ink);
  }
  .auth-sub{
    margin:8px 0 22px;
    font-size:12.5px;
    line-height:1.65;
    color:var(--muted);
  }
  .auth-mode{grid-template-columns:1fr 1fr;margin-bottom:20px}
  .auth-mode span{font-size:12px}
  .auth-submit{
    width:100%;
    justify-content:center;
    margin-top:6px;
    padding:14px 20px;
    font-size:13.5px;
  }
  .auth-submit[disabled]{opacity:.6;cursor:progress;transform:none}
  .auth-error,.auth-notice{
    margin:12px 0 0;
    padding:9px 12px;
    border-radius:11px;
    font-size:12px;
    line-height:1.6;
  }
  .auth-error{color:#8d3b2f;background:rgba(141,59,47,.075)}
  .auth-notice{color:#3f4a43;background:rgba(215,255,63,.3)}
  .code-row{display:flex;gap:8px;align-items:stretch}
  .code-row input{flex:1;min-width:0}
  .code-btn{
    flex:none;
    padding:0 15px;
    font-size:11.5px;
    justify-content:center;
  }
  .code-btn[disabled]{opacity:.55;cursor:default;transform:none}
  .auth-foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-top:18px;
    padding-top:16px;
    border-top:1px solid rgba(17,21,18,.07);
    flex-wrap:wrap;
  }
  .auth-foot .text-btn{
    font-size:11.5px;
    color:var(--ink-soft);
    padding:2px 0;
  }
  .auth-foot .text-btn:hover{color:var(--ink);border-color:rgba(17,21,18,.2)}
  .auth-hint{
    font-size:10.5px;
    letter-spacing:.04em;
    color:#8f9893;
  }
  .auth-meta{
    margin:20px 0 0;
    text-align:center;
    font-size:10px;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:#8a938e;
  }
  .auth .field input{background:rgba(255,255,255,.55)}

  /* ---------- 响应式 ---------- */
  @media (max-width:1080px){
    .hero-top{grid-template-columns:1fr;gap:26px}
    .stats{flex-direction:row;gap:26px;min-width:0;padding:0}
    .stat{flex:1;border-bottom:none;border-top:1px solid rgba(17,21,18,.08);padding:10px 0 0;flex-direction:row}
    .stat-label{gap:7px}
  }
  @media (max-width:880px){
    .brief{grid-template-columns:1fr;gap:13px}
    .board{grid-template-columns:1fr;gap:13px}
    .column{min-height:0}
    .col-body{min-height:70px}
    .card-actions{opacity:1;transform:none}
    .card-actions .icon-btn{background:rgba(17,21,18,.07)}
  }
  @media (max-width:640px){
    .shell{padding-top:18px}
    .topbar{padding-bottom:16px;row-gap:12px;align-items:center}
    .brand{order:1}
    .today{order:2;width:auto;margin:0 0 0 auto;font-size:11px}
    .top-actions{order:3;width:100%;justify-content:flex-end}
    .field input[type="text"],.field input[type="time"],.field input[type="email"],.field input[type="password"],.field textarea{font-size:16px}
    .pct{font-size:clamp(84px,26vw,130px)}
    .stats{gap:14px}
    .stat{font-size:11.5px;gap:10px}
    .stat-val{font-size:14px}
    .progress{gap:4px}
    .dialog-card{padding:22px;border-radius:24px}
    .brief-panel{padding:18px 18px;border-radius:26px}
    .news-list{max-height:220px}
    .grid-2{grid-template-columns:1fr 1fr}
    .foot{gap:10px;font-size:10px}
    .sync-pill{padding:7px 10px;font-size:10.5px}
    .auth{padding:16px}
    .auth-brand{padding-bottom:14px}
    .auth-card{padding:22px;border-radius:26px}
    .auth-foot{gap:8px}
  }

  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{
      animation-duration:.001ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.001ms !important;
      scroll-behavior:auto !important;
    }
  }
