:root{color-scheme:light;--paper: #f4f0e6;--surface: #fffdf7;--ink: #2a2722;--ink-soft: #696254;--line: rgba(42, 39, 34, .13);--dot: rgba(42, 39, 34, .05);--accent: #c75233;--accent-deep: #a8401f;--danger: #a32d2d;--radius: 12px;--font-display: "Noto Serif SC", "Songti SC", serif;--card-bg: #fffdf7;--card-border: rgba(42, 39, 34, .09);--card-shadow: rgba(42, 39, 34, .1);--count-bg: rgba(255, 255, 255, .65);--modal-bg: #fbfaf4;--input-bg: #ffffff;--overlay: rgba(42, 39, 34, .45);--hint-bg: #ece6d4;--error-bg: #f6e4e1;--error-fg: #8c2b2b;--drop-bg: rgba(199, 82, 51, .12);--q-plan-bg: #e7f1e8;--q-plan-fg: #0f6e56;--q-now-bg: #f8e9e0;--q-now-fg: #a8401f;--q-skip-bg: #edebe2;--q-skip-fg: #675e50;--q-squeeze-bg: #f6efda;--q-squeeze-fg: #8a5d10;--chip-todo-bg: #edebe2;--chip-todo-fg: #756d5e;--chip-doing-bg: #f6ddcf;--chip-doing-fg: #a8401f;--chip-review-bg: #e3e8f1;--chip-review-fg: #4f618f;--chip-verify-bg: #f1e3c9;--chip-verify-fg: #8a5d10;--chip-done-bg: #dcecdf;--chip-done-fg: #0f6e56;--status-todo-border: rgba(117, 109, 94, .22);--status-doing-border: rgba(199, 82, 51, .78);--status-review-border: rgba(79, 97, 143, .36);--status-verify-border: rgba(138, 93, 16, .44);--status-overdue-border: rgba(163, 45, 45, .72);--status-doing-soft: rgba(199, 82, 51, .05);--status-review-soft: rgba(79, 97, 143, .05);--status-verify-soft: rgba(138, 93, 16, .05);--status-overdue-soft: rgba(163, 45, 45, .06)}[data-theme=dark]{color-scheme:dark;--paper: #1b1a17;--surface: #232220;--ink: #f2efe5;--ink-soft: #b6b0a0;--line: rgba(236, 234, 223, .14);--dot: rgba(236, 234, 223, .04);--accent: #e0744d;--accent-deep: #ea8862;--card-bg: #33302a;--card-border: rgba(255, 255, 255, .11);--card-shadow: rgba(0, 0, 0, .45);--count-bg: rgba(255, 255, 255, .08);--modal-bg: #262521;--input-bg: #1b1a17;--overlay: rgba(0, 0, 0, .6);--hint-bg: #2b2925;--error-bg: #382a27;--error-fg: #eba79d;--danger: #e08a80;--drop-bg: rgba(224, 116, 77, .14);--q-plan-bg: #20241f;--q-plan-fg: #82d0a8;--q-now-bg: #28211e;--q-now-fg: #ef9772;--q-skip-bg: #222120;--q-skip-fg: #a39e8f;--q-squeeze-bg: #262318;--q-squeeze-fg: #d9b366;--chip-todo-bg: rgba(255, 255, 255, .08);--chip-todo-fg: #a39e8f;--chip-doing-bg: rgba(224, 116, 77, .18);--chip-doing-fg: #ef9772;--chip-review-bg: rgba(141, 165, 219, .16);--chip-review-fg: #a4b8e3;--chip-verify-bg: rgba(217, 179, 102, .15);--chip-verify-fg: #d9b366;--chip-done-bg: rgba(130, 208, 168, .14);--chip-done-fg: #82d0a8;--status-todo-border: rgba(255, 255, 255, .14);--status-doing-border: rgba(224, 116, 77, .82);--status-review-border: rgba(164, 184, 227, .38);--status-verify-border: rgba(217, 179, 102, .5);--status-overdue-border: rgba(224, 138, 128, .78);--status-doing-soft: rgba(224, 116, 77, .08);--status-review-soft: rgba(164, 184, 227, .06);--status-verify-soft: rgba(217, 179, 102, .07);--status-overdue-soft: rgba(224, 138, 128, .08)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(var(--dot) 1px,transparent 1px);background-size:22px 22px;font-size:14px;line-height:1.6;transition:background-color .2s,color .2s}button{font:inherit;border:none;background:none;cursor:pointer;color:inherit}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:18px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--surface)}.brand h1{font-family:var(--font-display);font-size:21px;font-weight:700;margin:0;letter-spacing:.06em}.brand-sub{font-size:12px;color:var(--ink-soft)}.date-nav{display:flex;align-items:center;gap:10px;margin-left:auto}.date-label{text-align:center;min-width:110px;line-height:1.3}.date-main{display:block;font-family:var(--font-display);font-size:16px;font-weight:500;font-variant-numeric:tabular-nums}.date-week{font-size:12px;color:var(--ink-soft)}.topbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;min-width:0}.icon-btn{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--surface);font-size:18px;line-height:1;transition:background .15s}.icon-btn:hover{background:var(--paper)}.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;background:var(--accent);color:#fff;padding:9px 18px;border-radius:10px;font-weight:500;transition:background .15s,transform .1s}.primary-btn:hover:not(:disabled){background:var(--accent-deep)}.primary-btn:active:not(:disabled){transform:scale(.97)}.ghost-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;color:var(--ink-soft);padding:6px 10px;border-radius:8px}.ghost-btn:hover{background:#8078641f}.danger-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--danger);padding:6px 10px;border-radius:8px}.danger-btn:hover{background:#a32d2d1f}.hint-bar{padding:7px 24px;font-size:13px;color:var(--ink-soft);background:var(--hint-bg)}.error-bar{display:flex;align-items:center;gap:12px;padding:7px 24px;font-size:13px;color:var(--error-fg);background:var(--error-bg)}.error-text{font-size:13px;color:var(--danger);margin:4px 0 0}.error-boundary{min-height:100%;display:grid;place-items:center;padding:24px}.error-boundary>div{width:min(480px,100%);padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 12px 28px var(--card-shadow)}.error-boundary h1{margin:0 0 8px;font-family:var(--font-display);font-size:22px}.error-boundary p{margin:0;color:var(--ink-soft);word-break:break-word}.error-boundary-actions{display:flex;gap:10px;margin-top:18px}.ai-zone{display:flex;flex-direction:column;align-items:flex-start}.ai-toggle{margin:10px 0 0 34px;font-size:12px}.ai-zone-collapsed{margin-bottom:2px}.reading-toggle.on{border-color:var(--accent-deep);color:var(--accent-deep)}.reading-mode .ai-zone,.reading-mode .filter-bar,.reading-mode .filter-chips,.reading-mode .summary-strip,.reading-mode .focus-strip{display:none}.reading-mode .topbar>.brand,.reading-mode .topbar>.seg{display:none}.reading-mode .topbar-actions>button:not(.reading-toggle){display:none}.ai-area{align-self:stretch;padding:8px 24px 0 34px}.ai-bar{display:flex;align-items:flex-start;gap:10px}.ai-tag{font-family:var(--font-display);font-size:12px;font-weight:700;color:var(--accent-deep);border:1px solid var(--accent-deep);border-radius:6px;padding:2px 8px;letter-spacing:.08em}.ai-model{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft);font-size:12px}.ai-context{color:var(--ink-soft);font-size:12px;white-space:nowrap}.ai-bar .ai-input{flex:1;width:auto;min-height:44px;max-height:128px;line-height:1.45;resize:vertical}.ai-bar .ghost-btn{margin-top:2px}.ai-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0 112px}.ai-suggestions button{max-width:260px;overflow:hidden;padding:4px 9px;border:1px solid var(--line);border-radius:999px;background:var(--count-bg);color:var(--ink-soft);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ai-suggestions button:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--hint-bg)}.ai-template-chip{display:inline-flex;max-width:300px}.ai-template-chip button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ai-template-chip .ai-template-remove{width:28px;padding-left:0;padding-right:0;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;color:var(--danger)}.ai-error-row{display:flex;align-items:center;gap:8px;margin-top:6px}.ai-error{margin:0;flex:1}.ai-feedback{margin:6px 0 0;font-size:13px;color:var(--ink-soft)}.filter-bar{display:flex;align-items:center;gap:10px;padding:12px 24px 0 34px}.filter-search{position:relative;flex:1;min-width:220px}.filter-search input{padding-left:34px}.filter-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-soft);font-size:14px;pointer-events:none}.filter-scope{flex:0 0 auto}.filter-count{flex:0 0 auto;font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.filter-clear{flex:0 0 auto}.filter-chips{display:flex;align-items:center;gap:7px;padding:8px 24px 0 34px;overflow-x:auto;-webkit-overflow-scrolling:touch}.filter-chips button{flex:0 0 auto;padding:4px 9px;border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);background:var(--surface);font-size:12px}.filter-chips button:hover{border-color:var(--accent);color:var(--accent-deep)}.empty-filter{display:flex;align-items:center;gap:10px;margin:8px 24px 0 34px;padding:8px 10px;border:1px dashed var(--line);border-radius:10px;color:var(--ink-soft);background:var(--surface);font-size:13px}.empty-filter b{color:var(--ink)}.summary-strip{display:flex;align-items:center;gap:8px;padding:10px 24px 0 34px;overflow-x:auto}.summary-strip button{flex:0 0 auto;display:inline-flex;align-items:baseline;gap:4px;min-width:76px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;color:var(--ink-soft);background:var(--surface);font-size:12px}.summary-strip button:hover,.summary-strip button.on{border-color:var(--accent);color:var(--accent-deep);background:var(--hint-bg)}.summary-strip b{color:var(--ink);font-family:var(--font-display);font-size:17px;line-height:1}.focus-strip{display:flex;align-items:center;gap:8px;padding:8px 24px 0 34px;overflow-x:auto}.focus-strip>b{flex:0 0 auto;color:var(--ink-soft);font-family:var(--font-display);font-size:13px}.focus-strip button{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;max-width:280px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font-size:12px}.focus-strip .focus-primary{border-color:var(--accent);color:var(--accent-deep);background:var(--hint-bg)}.focus-strip button:hover{border-color:var(--accent);background:var(--hint-bg)}.focus-strip span{flex:0 0 auto;color:var(--danger);font-weight:500}.confirm-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#00000040;display:flex;align-items:center;justify-content:center}.confirm-box{background:var(--modal-bg);border:1px solid var(--line);border-radius:14px;padding:18px 22px;box-shadow:0 14px 40px #0000004d;max-width:340px}.confirm-box p{margin:0 0 14px;font-size:14px}.confirm-actions{display:flex;gap:10px;justify-content:flex-end}.board{flex:0 0 auto;position:relative;display:grid;grid-template-columns:minmax(300px,1fr) 3fr;grid-template-rows:auto auto;gap:12px;padding:16px 24px 28px 34px}.axis{position:absolute;font-size:11px;color:var(--ink-soft);letter-spacing:.2em;-webkit-user-select:none;user-select:none}.axis-y{left:10px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl}.axis-x{bottom:8px;left:50%;transform:translate(-50%)}.quadrant{display:flex;flex-direction:column;min-height:0;border-radius:14px;padding:12px 14px;animation:rise .35s ease both;transition:box-shadow .16s ease,outline-color .16s ease,transform .16s ease}.quadrant:nth-child(3){animation-delay:.04s}.quadrant:nth-child(4){animation-delay:.08s}.quadrant:nth-child(5){animation-delay:.12s}.quadrant:nth-child(6){animation-delay:.16s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.quadrant.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;box-shadow:inset 0 0 0 999px var(--drop-bg),0 8px 22px #2a27221f;transform:translateY(-1px)}.q-plan{background:var(--q-plan-bg)}.q-now{background:var(--q-now-bg)}.q-skip{background:var(--q-skip-bg)}.q-squeeze{background:var(--q-squeeze-bg)}.q-skip,.q-squeeze{min-height:76px}.q-skip .q-empty,.q-squeeze .q-empty{margin:6px 0}.q-plan .q-head h2{color:var(--q-plan-fg)}.q-now .q-head h2{color:var(--q-now-fg)}.q-skip .q-head h2{color:var(--q-skip-fg)}.q-squeeze .q-head h2{color:var(--q-squeeze-fg)}.q-head{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.q-head h2{font-family:var(--font-display);font-size:16px;font-weight:700;margin:0;letter-spacing:.04em}.q-hint{font-size:12px;color:var(--ink-soft)}.q-count{font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-soft);background:var(--count-bg);border-radius:999px;padding:1px 9px}.q-tools{margin-left:auto;display:flex;align-items:center;gap:6px;white-space:nowrap}.q-list{display:grid;gap:10px;align-content:start;padding-right:2px}.drop-tail{grid-column:1 / -1;height:0;min-height:0;opacity:0;display:flex;align-items:center;justify-content:center;border:1px dashed var(--accent);border-radius:10px;color:var(--accent);background:var(--drop-bg);font-size:12px;overflow:hidden;transition:height .14s ease,min-height .14s ease,opacity .14s ease}.drag-over .drop-tail{height:34px;min-height:34px;opacity:1}.q-plan .q-list,.q-skip .q-list{grid-template-columns:1fr}.q-now .q-list,.q-squeeze .q-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.q-empty{grid-column:1 / -1;font-size:12px;color:var(--ink-soft);text-align:center;margin-top:22px;opacity:.8}.card{position:relative;--status-border: var(--card-border);--status-soft-bg: transparent;background:var(--card-bg);border:1px solid var(--status-border);border-radius:var(--radius);padding:12px 14px;cursor:grab;box-shadow:inset 0 0 0 1px transparent;transition:background .14s ease,transform .14s ease,box-shadow .14s ease,opacity .14s ease,border-color .14s ease}.card:not(.card-dragging):hover{background:linear-gradient(var(--status-soft-bg),var(--status-soft-bg)),var(--card-bg);transform:translateY(-1px);border-color:var(--status-border);box-shadow:inset 0 0 0 1px var(--status-border),0 6px 16px var(--card-shadow)}.card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card:active{cursor:grabbing}.card-static,.card-static:active{cursor:pointer}.card-dragging{opacity:.42;transform:scale(.985) rotate(-.35deg);border-color:var(--status-border);box-shadow:inset 0 0 0 1px var(--status-border)}.card-drop-before,.card-drop-after{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent),0 6px 18px var(--card-shadow)}.card-drop-before{transform:translateY(2px)}.card-drop-after{transform:translateY(-2px)}.card-drop-before:before,.card-drop-after:after{content:"";position:absolute;left:10px;right:10px;height:3px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 4px var(--drop-bg);pointer-events:none}.card-drop-before:before{top:-7px}.card-drop-after:after{bottom:-7px}.card-todo{--status-border: var(--status-todo-border)}.card-doing{--status-border: var(--status-doing-border);--status-soft-bg: var(--status-doing-soft);box-shadow:inset 0 0 0 1px var(--status-border)}.card-review{--status-border: var(--status-review-border);--status-soft-bg: var(--status-review-soft)}.card-verify{--status-border: var(--status-verify-border);--status-soft-bg: var(--status-verify-soft)}.card-overdue{--status-border: var(--status-overdue-border);--status-soft-bg: var(--status-overdue-soft)}.card-top{display:flex;justify-content:space-between;align-items:center;font-size:12px}.card-top-left,.card-top-right{display:flex;align-items:center;gap:6px}.card-index{min-width:19px;height:19px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--count-bg);color:var(--ink-soft);font-size:11px;font-variant-numeric:tabular-nums}.card-score{color:var(--ink-soft);font-variant-numeric:tabular-nums}.card-x{width:18px;height:18px;border-radius:50%;font-size:13px;line-height:1;color:var(--ink-soft);opacity:0;transition:opacity .12s,background .12s,color .12s}.card:hover .card-x{opacity:1}.card-x:hover{background:#a32d2d24;color:var(--danger)}.card-title{font-size:15px;font-weight:500;margin:8px 0 0;line-height:1.5;word-break:break-word}.card-desc{margin:5px 0 0;font-size:13px;line-height:1.55;color:var(--ink-soft);white-space:pre-wrap;word-break:break-word}.card-meta{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 0;color:var(--ink-soft);font-size:11px;font-variant-numeric:tabular-nums}.card-meta span{padding:1px 7px;border-radius:999px;background:var(--count-bg)}.card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.mini-btn{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:3px 8px;border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);background:var(--input-bg);font-size:12px}.mini-btn:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--hint-bg)}.card-thumbs{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;margin-top:8px;overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:3px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.card-thumbs::-webkit-scrollbar{height:6px}.card-thumbs::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}.card-thumbs::-webkit-scrollbar-track{background:transparent}.card-thumb{position:relative;flex:0 0 44px;width:44px;height:44px;border-radius:8px;overflow:hidden;border:1px solid var(--card-border);padding:0;background:var(--input-bg)}.card-thumb img{width:100%;height:100%;object-fit:cover;display:block}.card-thumb:hover img{opacity:.85}.card-thumb .copied-badge{font-size:10px}.chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px;font-size:12px}.chip-icon,.btn-icon{line-height:1}.chip-icon{font-size:11px}.chip-todo{background:var(--chip-todo-bg);color:var(--chip-todo-fg)}.chip-doing{background:var(--chip-doing-bg);color:var(--chip-doing-fg)}.chip-review{background:var(--chip-review-bg);color:var(--chip-review-fg)}.chip-verify{background:var(--chip-verify-bg);color:var(--chip-verify-fg)}.chip-done{background:var(--chip-done-bg);color:var(--chip-done-fg)}.chip-due{background:var(--count-bg);color:var(--ink-soft)}.chip-overdue{background:var(--error-bg);color:var(--danger);font-weight:500}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.modal{width:min(620px,94vw);max-height:88vh;overflow-y:auto;background:var(--modal-bg);border-radius:16px;padding:22px 26px;box-shadow:0 18px 50px #0000004d;animation:pop .18s ease}@keyframes pop{0%{opacity:0;transform:scale(.97)}}.modal h2{font-family:var(--font-display);font-size:18px;font-weight:700;margin:0 0 16px}.draft-queue-bar{position:fixed;left:50%;top:18px;z-index:70;display:flex;align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:8px 10px 8px 14px;transform:translate(-50%);border:1px solid var(--line);border-radius:999px;background:var(--modal-bg);box-shadow:0 8px 22px var(--card-shadow);color:var(--ink-soft);font-size:13px}.draft-queue-bar span,.draft-queue-bar b{white-space:nowrap}.draft-queue-bar b{color:var(--accent-deep);font-weight:600}.draft-queue-bar .ghost-btn{padding-top:4px;padding-bottom:4px}.draft-batch-bar{position:fixed;left:50%;top:64px;z-index:70;display:flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:8px 10px;transform:translate(-50%);border:1px solid var(--line);border-radius:10px;background:var(--modal-bg);box-shadow:0 8px 22px var(--card-shadow);color:var(--ink-soft);font-size:13px}.draft-batch-bar span{white-space:nowrap}.draft-batch-bar select{min-width:92px}.draft-batch-bar label{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.field{margin-bottom:14px}.field-label{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-soft);margin-bottom:6px}.field-label b{color:var(--ink);font-variant-numeric:tabular-nums}.field-label b.over-limit{color:var(--danger)}input[type=text],textarea{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg);font:inherit;color:var(--ink);resize:vertical}input[type=text]:focus,textarea:focus{outline:2px solid rgba(199,82,51,.35);border-color:var(--accent)}.due-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}input[type=date]{padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg);font:inherit;color:var(--ink)}.quad-preview{font-size:13px;color:var(--ink-soft);margin:-4px 0 14px}.quad-preview b{color:var(--ink)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--input-bg)}.seg button{padding:7px 16px;font-size:13px;color:var(--ink-soft);transition:background .12s}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--ink);color:var(--paper)}.seg-sm button{padding:5px 11px;font-size:12px}.board-view-switch button{min-width:72px}.layout-switch{flex:0 0 auto}.scatter-board{flex:1;min-height:0;padding:16px 24px 28px 34px;display:flex;flex-direction:column;gap:12px}.scatter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.scatter-head h2{margin:0;font-family:var(--font-display);font-size:18px}.scatter-head p{margin:2px 0 0;color:var(--ink-soft);font-size:12px}.scatter-stats{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.scatter-stats span{display:inline-flex;align-items:baseline;gap:3px;padding:3px 8px;border-radius:999px;background:var(--count-bg);color:var(--ink-soft);font-size:12px}.scatter-stats b{color:var(--ink);font-size:14px}.scatter-stage{position:relative;flex:1;min-height:420px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:linear-gradient(90deg,transparent 49.8%,var(--line) 50%,transparent 50.2%),linear-gradient(0deg,transparent 49.8%,var(--line) 50%,transparent 50.2%),radial-gradient(circle at 78% 22%,var(--status-doing-soft),transparent 34%),radial-gradient(circle at 20% 78%,var(--status-verify-soft),transparent 30%),var(--surface)}.scatter-guide{position:absolute;background:var(--line);pointer-events:none}.scatter-guide-v{inset:0 auto 0 50%;width:1px}.scatter-guide-h{inset:50% 0 auto;height:1px}.scatter-axis{position:absolute;z-index:1;color:var(--ink-soft);font-size:11px}.scatter-axis-y{left:12px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl}.scatter-axis-x{right:16px;bottom:12px}.scatter-corner{position:absolute;z-index:1;padding:2px 8px;border-radius:999px;background:var(--count-bg);color:var(--ink-soft);font-size:12px}.scatter-corner-hot{top:12px;right:14px;color:var(--accent-deep)}.scatter-corner-low{left:14px;bottom:12px}.scatter-point{position:absolute;left:var(--x);top:var(--y);z-index:2;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:6px;row-gap:1px;min-width:92px;min-height:44px;max-width:190px;padding:7px 9px;transform:translate(-50%,-50%);border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);box-shadow:0 6px 14px var(--card-shadow);color:var(--ink);text-align:left;transition:border-color .12s,background .12s,transform .12s}.scatter-point:hover,.scatter-point:focus-visible{z-index:3;border-color:var(--accent);background:var(--hint-bg);transform:translate(-50%,-50%) translateY(-1px)}.scatter-dot{width:10px;height:10px;border-radius:50%;background:var(--chip-todo-fg)}.scatter-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500}.scatter-reason{grid-column:2;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-soft);font-size:11px}.scatter-doing .scatter-dot{background:var(--chip-doing-fg)}.scatter-review .scatter-dot{background:var(--chip-review-fg)}.scatter-verify .scatter-dot{background:var(--chip-verify-fg)}.scatter-done .scatter-dot{background:var(--chip-done-fg)}.scatter-overdue{border-color:var(--status-overdue-border)}.scatter-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;margin:0;color:var(--ink-soft)}.images{display:flex;flex-wrap:wrap;gap:10px}.thumb{position:relative;width:86px;height:86px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--input-bg)}.thumb-pic{display:block;width:100%;height:100%;padding:0}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb-pending{outline:2px dashed rgba(199,82,51,.5);outline-offset:-2px}.thumb-x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:#0000008c;color:#fff;font-size:13px;line-height:1;opacity:0;transition:opacity .12s}.thumb:hover .thumb-x{opacity:1}.copied-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0000008c;color:#fff;font-size:12px;pointer-events:none}.thumb-add{width:86px;height:86px;border:1.5px dashed var(--line);border-radius:10px;color:var(--ink-soft);font-size:12px;transition:border-color .15s,color .15s}.thumb-add:hover{border-color:var(--accent);color:var(--accent)}.paste-hint{font-size:12px;color:var(--ink-soft);margin:8px 0 0}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#000000c7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.lightbox img{max-width:92vw;max-height:80vh;border-radius:10px;box-shadow:0 20px 80px #0009}.lightbox-actions{display:flex;align-items:center;gap:10px}.lightbox-copy{min-width:86px;height:32px;border-radius:999px;background:var(--accent);color:#fff;font-size:13px;padding:0 14px}.lightbox-copy:hover{background:var(--accent-deep)}.lightbox-hint{color:#ffffffb8;font-size:12px}.lightbox-toast{position:absolute;bottom:44px;left:50%;transform:translate(-50%);background:var(--accent);color:#fff;font-size:13px;padding:6px 14px;border-radius:999px}.lightbox-x{position:absolute;top:16px;right:20px;width:34px;height:34px;border-radius:50%;background:#ffffff24;color:#fff;font-size:20px;line-height:1}.lightbox-x:hover{background:#ffffff42}.modal-foot{display:flex;align-items:center;gap:10px;margin-top:20px}.sync-modal{width:min(700px,94vw)}.sync-textarea{min-height:420px;resize:vertical;font-family:inherit;line-height:1.7}.review-modal{width:min(760px,94vw);max-height:calc(100vh - 48px)}.modal-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.modal-title-row h2{margin-bottom:2px}.modal-title-row p,.review-empty{margin:0;color:var(--ink-soft);font-size:13px}.review-total{flex:0 0 auto;padding:4px 9px;border-radius:999px;color:var(--ink-soft);background:var(--hint-bg);font-size:12px}.review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;margin-bottom:16px}.review-stat{min-width:0;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg)}.review-stat b{display:block;font-family:var(--font-display);font-size:22px;line-height:1.1;color:var(--ink)}.review-stat span{display:block;margin-top:4px;color:var(--ink-soft);font-size:12px}.review-section{padding-top:12px;border-top:1px solid var(--line)}.review-section+.review-section{margin-top:14px}.review-section h3{margin:0 0 8px;font-family:var(--font-display);font-size:16px}.review-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.review-days span{min-width:0;padding:8px 6px;border:1px solid var(--line);border-radius:9px;background:var(--input-bg)}.review-days b,.review-days em{display:block;font-style:normal;text-align:center}.review-days b{color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums}.review-days em{color:var(--ink-soft);font-size:11px}.review-section ul{margin:0;padding:0;list-style:none}.review-section li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px dashed var(--line)}.review-section li:first-child{border-top:none}.review-section li b{min-width:0}.review-section li span{flex:0 0 auto;color:var(--ink-soft);font-size:12px}.review-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.review-modal .modal-foot{position:sticky;bottom:-22px;padding-top:12px;padding-bottom:2px;background:var(--modal-bg);border-top:1px solid var(--line)}.backup-modal{width:min(680px,94vw)}.backup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.backup-grid section{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--input-bg)}.backup-grid h3{margin:0 0 6px;font-family:var(--font-display);font-size:16px}.backup-grid p{margin:0;color:var(--ink-soft);font-size:13px}.backup-grid b{color:var(--ink);font-weight:600}.backup-health{display:grid;gap:3px;color:var(--ink-soft);font-size:13px}.backup-health b{color:var(--accent-deep)}.backup-health-ok b{color:var(--chip-done-fg)}.backup-health-warn b{color:var(--danger)}.backup-health em{overflow:hidden;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.spacer{flex:1}@media(max-width:760px){.topbar{flex-wrap:wrap;gap:12px;padding:14px 16px;width:100vw;max-width:100vw;overflow:hidden}.brand{width:100%}.date-nav{width:100%;margin-left:0;justify-content:center}.board-view-switch,.layout-switch,.filter-scope,.filter-status,.summary-strip,.focus-strip{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.topbar-actions{width:calc(100vw - 32px);max-width:100%;flex:0 0 calc(100vw - 32px);display:grid;grid-template-columns:1fr 1fr}.topbar-actions .primary-btn{grid-column:1 / -1}.topbar-actions button{width:100%;min-width:0;padding-left:8px;padding-right:8px}.ai-area,.filter-bar,.filter-chips,.empty-filter,.summary-strip,.focus-strip{padding-left:16px;padding-right:16px}.empty-filter{margin-left:16px;margin-right:16px}.ai-bar{flex-wrap:wrap}.ai-bar .ai-input{order:4;flex:1 0 100%;width:100%}.ai-bar .ghost-btn{order:5;flex:1 0 100%;width:100%;margin-left:0}.ai-error-row{flex-wrap:wrap}.ai-error-row .ai-error{flex-basis:100%}.ai-suggestions{margin-left:0}.board{grid-template-columns:1fr;grid-template-rows:none;overflow-y:auto;padding:16px}.scatter-board{padding:16px;overflow-x:auto;-webkit-overflow-scrolling:touch}.scatter-head{width:clamp(560px,92vw,720px);flex-direction:column}.scatter-stats{justify-content:flex-start}.scatter-stage{flex:0 0 clamp(560px,92vw,720px);min-height:520px}.scatter-point{max-width:160px;padding:8px 10px}.quadrant{min-height:220px}.filter-bar{flex-wrap:wrap}.filter-search{flex-basis:100%;min-width:0}.review-columns{grid-template-columns:1fr 1fr}.draft-batch-bar{top:62px;flex-wrap:wrap;justify-content:center}.draft-batch-bar span{flex-basis:100%;text-align:center}.review-section li{display:block}.review-section li span{display:block;margin-top:2px}.review-days{grid-template-columns:repeat(4,minmax(0,1fr))}.backup-grid{grid-template-columns:1fr}.q-head{flex-wrap:wrap}.q-tools{width:100%;margin-left:0}.axis{display:none}}.app-booting{min-height:100vh;background:var(--paper)}.login-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--paper)}.login-card{width:min(360px,92vw);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:32px 28px;box-shadow:0 18px 50px var(--card-shadow);display:flex;flex-direction:column;gap:14px;animation:pop .18s ease}.login-card h1{font-family:var(--font-display);font-size:22px;font-weight:700;margin:0;color:var(--ink);text-align:center}.login-sub{margin:0;text-align:center;color:var(--ink-soft);font-size:14px}.login-input{width:100%;box-sizing:border-box;padding:11px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--input-bg);color:var(--ink);font-size:15px}.login-input:focus{outline:none;border-color:var(--accent)}.login-error{margin:0;color:var(--error-fg);font-size:13px;text-align:center}.login-submit{width:100%;justify-content:center;margin-top:4px}.account-modal{width:min(420px,94vw)}.account-field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;font-size:13px;color:var(--ink-soft)}.account-field input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--input-bg);color:var(--ink);font-size:15px}.account-field input:focus{outline:none;border-color:var(--accent)}
