:root{--neon-p0: #b5342c;--neon-p1: #b5621f;--neon-p2: #3a5a7a;--neon-p3: #4a7a5a;--card-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}.card.p0{--neon: var(--neon-p0)}.card.p1{--neon: var(--neon-p1)}.card.p2{--neon: var(--neon-p2)}.card.p3{--neon: var(--neon-p3)}.card{position:relative;display:flex;flex-direction:column;gap:6px;padding:12px 14px 10px;background:#fdfbf5f2;border:1px solid rgba(47,44,38,.3);border-left:3px solid color-mix(in srgb,var(--neon) 75%,#fdfbf5);border-radius:4px;box-shadow:0 1px 4px #2f2c261a;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.card:hover{transform:translateY(-2px);border-color:#2f2c268c;border-left-color:var(--neon);box-shadow:0 6px 16px #2f2c2629}.card.selected{outline:2px solid var(--neon);outline-offset:1px}.card.dragging{opacity:.4}.card.drop-over{border-top:2px solid var(--neon)}.card-rank{display:flex;align-items:baseline;line-height:1}.card-rank-char{font-size:12px;font-weight:700;letter-spacing:.5px;color:#fdfbf5;background:var(--neon);border-radius:3px;padding:3px 5px;box-shadow:inset 0 0 0 1px #fdfbf559,0 1px 2px #2f2c2640}.card-name{font-weight:600;font-size:15px;overflow-wrap:anywhere}.card-name.overdue{color:var(--neon-p0)}.card-note{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.card-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px;padding-top:6px;border-top:1px dashed rgba(47,44,38,.25)}.card-badge{font-family:var(--card-mono);font-size:10px;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:1px 5px}.card-badge.status{color:var(--neon);border-color:color-mix(in srgb,var(--neon) 55%,transparent)}.card-badge.due{color:var(--neon-p1)}.card-badge.due.overdue{color:#fff;background:var(--neon-p0);border-color:var(--neon-p0)}.card-badge.waiting{color:var(--neon-p2)}.card-badge.tag{color:var(--muted)}.card-badge.assignee{display:inline-flex;align-items:center;gap:4px;color:var(--ink)}.assignee-avatar{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--ink);color:#fdfbf5;font-style:normal;font-size:9px;font-family:var(--font-serif)}.card-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2f2c2661;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:10}.card-editor-overlay.p0{--neon: var(--neon-p0)}.card-editor-overlay.p1{--neon: var(--neon-p1)}.card-editor-overlay.p2{--neon: var(--neon-p2)}.card-editor-overlay.p3{--neon: var(--neon-p3)}.card-editor{background:#fdfbf5fa;border:1px solid rgba(47,44,38,.35);border-radius:8px;box-shadow:0 12px 40px #2f2c2647;padding:18px;width:440px;display:flex;flex-direction:column;gap:10px}.card-editor-title{margin:0;font-family:var(--font-serif, "STSong", "Songti SC", serif);font-size:15px;letter-spacing:3px;color:var(--neon)}.card-editor label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.card-editor input:focus,.card-editor select:focus,.card-editor textarea:focus{outline:none;border-color:var(--neon);box-shadow:0 0 0 2px color-mix(in srgb,var(--neon) 22%,transparent)}.card-editor-row{display:flex;gap:10px}.card-editor-row label{flex:1}.card-editor-actions{display:flex;gap:8px}.card-editor-actions .spacer{flex:1}.card-editor-actions button.primary{background:var(--neon);border-color:var(--neon);color:#fff;font-weight:700}@media (max-width: 768px){.card-editor{width:calc(100vw - 20px);max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);overflow-y:auto;padding:14px}.card-editor-row{flex-wrap:wrap}.card-editor-row label{flex:1 1 120px}}.ctx-menu{position:fixed;z-index:30;min-width:160px;background:#fdfbf5fa;border:1px solid rgba(47,44,38,.35);border-radius:6px;box-shadow:0 8px 24px #2f2c2638;padding:4px;display:flex;flex-direction:column}.ctx-item{display:flex;align-items:center;gap:6px;width:100%;padding:7px 10px;background:none;border:none;border-radius:4px;text-align:left;font-size:13px;color:inherit;cursor:pointer}.ctx-item:hover{background:#2f2c2614}.ctx-arrow{margin-left:auto;opacity:.6;font-size:11px}.ctx-sub{margin:0 4px 2px 14px;border-left:1px dashed rgba(47,44,38,.25)}.ctx-sub-item{font-size:12px}.ctx-check{width:14px;color:var(--neon-p2);font-weight:700}.ctx-item.checked{font-weight:600}.ctx-menu .p0{color:var(--neon-p0)}.ctx-menu .p1{color:var(--neon-p1)}.ctx-menu .p2{color:var(--neon-p2)}.ctx-menu .p3{color:var(--neon-p3)}.ctx-danger{color:var(--neon-p0)}.ctx-danger:hover{background:#b5342c1a}.card-menu-btn{position:absolute;top:6px;right:6px;width:22px;height:22px;padding:0;border:1px solid transparent;border-radius:4px;background:none;color:var(--muted);font-size:14px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease}.card:hover .card-menu-btn,.card-menu-btn:focus-visible{opacity:1;border-color:var(--border);background:#fdfbf5e6}@media (hover: none){.card-menu-btn{opacity:1}}@media (prefers-reduced-motion: no-preference){.ctx-menu{animation:ctx-in .12s ease-out}@keyframes ctx-in{0%{opacity:0;transform:translateY(-4px)}}}.card.drag-overlay{cursor:grabbing;box-shadow:0 14px 32px #2f2c2659}.column.wip-reject{border-color:var(--danger)}.column.wip-full .column-count{color:var(--danger);font-weight:600}.done-group>.card-slot{margin-top:8px}@keyframes card-in{0%{opacity:0;transform:translateY(-8px)}}@keyframes card-done-in{0%{opacity:0;transform:scale(.9)}60%{opacity:1;transform:scale(1.04)}to{transform:scale(1)}}@keyframes overlay-pop{0%{transform:scale(1) rotate(0)}}@keyframes wip-shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes wip-count-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.18);opacity:.8}}@media (prefers-reduced-motion: no-preference){.card.drag-overlay{transform:scale(1.05) rotate(2.5deg);animation:overlay-pop .12s ease-out}.card-slot{transition:transform .16s ease}.card-slot.slot-shift{transform:translateY(8px)}.card-slot.slot-in{animation:card-in .22s ease-out}.card-slot.slot-done-in{animation:card-done-in .45s ease-out}.column.wip-reject{animation:wip-shake .32s ease-in-out infinite}.column.wip-full .column-count{display:inline-block;animation:wip-count-pulse 1.6s ease-in-out infinite}}.rv-view{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px;max-width:760px;margin:0 auto;width:100%}.rv-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px}.rv-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.rv-stat-num{font-size:24px;font-weight:700;color:var(--accent)}.rv-stat-label{font-size:12px;color:var(--muted)}.rv-meter{grid-column:1 / -1;height:6px;border-radius:3px;background:var(--panel-2);overflow:hidden}.rv-meter-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .3s}.rv-week{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.rv-week-header{display:flex;align-items:baseline;gap:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}.rv-week-title{font-weight:600}.rv-week-range{color:var(--muted);font-size:12px}.rv-week-stats{margin-left:auto;color:var(--muted);font-size:12px}.rv-card{background:var(--panel-2);border:1px solid var(--border);border-left:3px solid var(--muted);border-radius:6px}.rv-card.p0{border-left-color:var(--neon-p0, var(--danger))}.rv-card.p1{border-left-color:var(--neon-p1, var(--accent))}.rv-card.p2{border-left-color:var(--neon-p2, var(--accent))}.rv-card.p3{border-left-color:var(--neon-p3, var(--muted))}.rv-card-head{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;padding:8px 10px;text-align:left}.rv-card-head:hover{border:none}.rv-card-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rv-card-date{color:var(--muted);font-size:12px}.rv-chevron{color:var(--muted);transition:transform .15s}.rv-chevron.open{transform:rotate(90deg)}.rv-badge-miss{font-size:11px;padding:0 6px;border-radius:4px;color:var(--danger);border:1px solid var(--danger)}.rv-badge-done{font-size:11px;padding:0 6px;border-radius:4px;color:var(--accent);border:1px solid var(--accent)}@media (prefers-reduced-motion: no-preference){.rv-badge-miss{animation:rv-pulse 1.6s ease-in-out infinite}}@keyframes rv-pulse{0%,to{opacity:1}50%{opacity:.45}}.rv-form{display:flex;flex-direction:column;gap:8px;padding:8px 10px 10px;border-top:1px solid var(--border)}.rv-section{display:flex;flex-direction:column;gap:8px;margin:0;padding:8px 10px 10px;border:1px solid var(--border);border-radius:6px}.rv-section legend{padding:0 4px;font-size:12px;font-weight:600;color:var(--accent)}.rv-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.rv-form textarea{resize:vertical}.rv-form-actions{display:flex;align-items:center;gap:8px}.rv-hint{color:var(--muted);font-size:12px}.cal-view{flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 18px;overflow-y:auto}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.cal-title{margin:0;font-family:var(--font-serif);font-size:20px;font-weight:700;letter-spacing:4px;color:var(--ink)}.cal-nav{display:flex;gap:6px;align-items:center}.cal-nav-btn{min-width:32px;background:var(--panel);font-family:var(--font-serif)}.cal-today-btn{color:var(--accent)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}.cal-weekday{text-align:center;font-family:var(--font-serif);font-size:13px;letter-spacing:2px;color:var(--muted);padding:2px 0}.cal-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;gap:6px}.cal-cell{position:relative;min-height:96px;display:flex;flex-direction:column;padding:6px;background:var(--panel);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid var(--border);border-radius:8px;overflow:visible}.cal-cell.cal-out{background:var(--panel-2)}.cal-cell.cal-out .cal-date{color:var(--muted);opacity:.6}.cal-cell.cal-open{border-color:var(--accent);z-index:6}.cal-date{align-self:flex-start;background:transparent;border:none;padding:0 2px;font-family:var(--font-serif);font-size:13px;font-weight:700;color:var(--ink);line-height:1.4}.cal-date.overdue{color:var(--accent)}.cal-today-ring{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:1.5px solid var(--accent);border-radius:50%;color:var(--accent)}.cal-tasks{display:flex;flex-direction:column;gap:2px;margin-top:4px;overflow:hidden}.cal-task{display:flex;align-items:center;gap:5px;width:100%;padding:1px 4px;background:transparent;border:none;border-radius:4px;font-size:12px;line-height:1.5;color:var(--text);text-align:left;cursor:pointer}.cal-task:hover{background:var(--panel-2);border:none}.cal-task-dot{flex:none;width:7px;height:7px;border-radius:50%}.cal-task-check{flex:none;width:12px;color:var(--bamboo);font-weight:700;text-align:center}.cal-task-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-task.done .cal-task-title{color:var(--muted);text-decoration:line-through}.cal-more{align-self:flex-start;background:transparent;border:none;padding:0 4px;font-size:11px;color:var(--accent);cursor:pointer}.cal-more:hover{border:none;text-decoration:underline}.cal-daypop{position:absolute;top:calc(100% + 4px);left:0;z-index:20;min-width:200px;max-width:260px;display:flex;flex-direction:column;gap:2px;padding:8px;background:var(--panel);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #2f2c262e}.cal-daypop-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-serif);font-size:12px;color:var(--muted);margin-bottom:4px}.cal-daypop-close{background:transparent;border:none;padding:0 4px;color:var(--muted);font-size:14px;line-height:1}.cal-daypop-empty{font-size:12px;color:var(--muted);padding:4px}@media (prefers-reduced-motion: no-preference){.cal-cell{transition:border-color .15s ease}.cal-task{transition:background .12s ease}.cal-daypop{animation:cal-pop-in .15s ease}@keyframes cal-pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}}@media (max-width: 768px){.cal-view{padding:10px 12px}.cal-title{font-size:17px;letter-spacing:2px}.cal-weekday{font-size:12px;letter-spacing:0}.cal-grid{gap:4px}.cal-cell{min-height:56px;padding:4px;border-radius:6px}.cal-date{font-size:12px}.cal-today-ring{width:19px;height:19px}.cal-tasks{flex-direction:row;flex-wrap:wrap;gap:3px}.cal-task{width:auto;padding:2px}.cal-task-title{display:none}.cal-task-check{width:auto;font-size:11px}.cal-more{display:none}.cal-daypop{position:fixed;left:12px;right:12px;top:auto;bottom:12px;min-width:0;max-width:none;max-height:50vh;overflow-y:auto}.cal-daypop .cal-task{width:100%;padding:4px}.cal-daypop .cal-task-title{display:block}}:root{color-scheme:light;--bg: #f3efe3;--panel: rgba(253, 251, 245, .88);--panel-2: rgba(247, 243, 233, .94);--border: rgba(58, 54, 46, .28);--text: #2f2c26;--muted: #847e6f;--accent: #b5342c;--danger: #b5342c;--ink: #2f2c26;--seal: #b5342c;--bamboo: #4a7a5a;--font-serif: "STSong", "Songti SC", "Noto Serif SC", "Source Han Serif SC", "SimSun", serif}*{box-sizing:border-box}body{margin:0;background-color:var(--bg);background-image:url(../bg-ink.jpg);background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed;color:var(--text);font:14px/1.6 -apple-system,PingFang SC,Helvetica Neue,sans-serif}.app{height:100vh;height:100dvh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;gap:14px;flex-wrap:wrap;position:relative;z-index:30;padding:10px 18px;background:var(--panel);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-bottom:1px solid var(--border)}.app-header h1{margin:0;display:flex;align-items:center;gap:10px;font-family:var(--font-serif);font-size:20px;font-weight:700;letter-spacing:6px;color:var(--ink)}.brand-logo{width:26px;height:26px;flex:none}.view-tabs{display:flex;gap:4px;overflow-x:auto}.view-tabs button{border-color:transparent;background:transparent;color:var(--muted);white-space:nowrap}.view-tabs button.active{background:var(--panel-2);border-color:var(--accent);color:var(--accent);font-weight:600}.sync-badge{font-size:12px;padding:2px 8px;border-radius:10px;border:1px solid var(--border);background:var(--panel-2)}.sync-badge.online{color:var(--bamboo);border-color:var(--bamboo)}.sync-badge.offline{color:var(--danger);border-color:var(--danger)}.sync-badge.disabled{color:var(--muted)}.settings-wrap{position:relative}.settings-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:40;background:var(--panel);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:8px;padding:12px;width:300px;display:flex;flex-direction:column;gap:8px;box-shadow:0 8px 24px #2f2c262e}.settings-panel label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.settings-panel label.settings-inline{flex-direction:row;align-items:center;gap:8px;color:var(--text)}.settings-inline input[type=checkbox]{width:auto;margin:0}.settings-actions{display:flex;gap:8px;align-items:center}.toolbar{display:flex;align-items:center;gap:8px;flex:1;flex-wrap:wrap}.toolbar .search{width:220px}.hint{color:var(--muted);font-size:12px}.spacer{flex:1}input,select,textarea,button{background:#ffffffa6;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font:inherit}button{cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--danger)}.empty-hint{padding:8px 18px;color:var(--muted);line-height:1.6}.app>main{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto}.board{flex:1;min-height:0;display:flex;gap:14px;padding:14px 18px;overflow-x:auto}.column{flex:1 1 0;min-width:250px;display:flex;flex-direction:column;background:var(--panel);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid var(--border);border-radius:10px}.column.drop-over{border-color:var(--accent)}.column.wip-full .column-header{color:var(--danger)}.column-header{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;border-bottom:1px solid var(--border);font-family:var(--font-serif);font-weight:700;letter-spacing:2px}.column-count{color:var(--muted);font-weight:400;font-size:12px}.overdue-banner{margin:8px 8px 0;padding:4px 8px;border-radius:6px;background:#b5342c1a;color:var(--danger);font-size:12px}.column-body{flex:1;min-height:0;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:10px}.quick-add-btn{background:transparent;border-style:dashed;color:var(--muted);width:100%}.quick-add-input{width:100%}.done-group summary{cursor:pointer;color:var(--muted);font-size:12px;padding:2px 0}.toast{position:fixed;bottom:42px;left:50%;transform:translate(-50%);background:var(--danger);color:#fff;padding:8px 16px;border-radius:8px;z-index:20;box-shadow:0 4px 16px #2f2c264d}.status-bar{flex:none;height:30px;display:flex;align-items:center;gap:16px;padding:0 18px;overflow-x:auto;white-space:nowrap;font-size:12px;color:var(--muted);background:var(--panel);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-top:1px solid var(--border)}.status-bar b{color:var(--text);font-weight:600}.status-bar .stat-overdue,.status-bar .stat-overdue b{color:var(--accent)}.status-bar .stat-done-today,.status-bar .stat-done-today b{color:var(--bamboo)}.card-complete-btn{position:absolute;top:6px;right:32px;width:22px;height:22px;padding:0;border:1.5px solid var(--ink);border-radius:50%;background:none;color:transparent;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,border-color .12s ease}.card:hover .card-complete-btn,.card-complete-btn:focus-visible{opacity:1}.card-complete-btn:hover{background:var(--bamboo);border-color:var(--bamboo);color:#fff}@media (hover: none){.card-complete-btn{opacity:1}}@media (max-width: 768px){.app-header{gap:8px;padding:8px 12px}.app-header h1{font-size:17px;letter-spacing:3px}.brand-logo{width:22px;height:22px}.hint{display:none}.toolbar{gap:6px}.toolbar .search{width:auto;flex:1 1 140px;min-width:0}.empty-hint{font-size:13px;padding:6px 12px}.status-bar{gap:12px;padding:0 12px}.board{gap:10px;padding:10px 12px;scroll-snap-type:x mandatory}.column{flex:0 0 82vw;min-width:0;scroll-snap-align:start}.settings-panel{position:fixed;left:12px;right:12px;top:auto;bottom:12px;width:auto}}
