:root{--bg: #F4EFE6;--ink: #1F1D19;--sub: #8A8375;--line: #B0A792;--line-soft: #DCD5C4;--red: #D64535;--red-soft: rgba(214,69,53,.1);--card: #FBF8F1;--footer-h: 44px;--deck-h: 0px;--top-h: clamp(200px, 30vh, 300px)}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:PingFang SC,Microsoft YaHei,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}#app{position:relative;height:100vh;width:100vw;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}#app.dragging{cursor:grabbing}#nowHeader{position:absolute;top:1.5vh;left:0;right:0;text-align:center;pointer-events:none;z-index:30}#nowTime{font-size:clamp(40px,7vw,80px);font-weight:700;letter-spacing:.04em;font-variant-numeric:tabular-nums;line-height:1.1}#nowDate{font-size:clamp(11px,1.2vw,14px);color:var(--sub);letter-spacing:.26em;margin-top:.5vh;font-variant-numeric:tabular-nums}#redLine{position:absolute;top:22vh;bottom:var(--footer-h);left:50%;width:2px;transform:translate(-50%);background:var(--red);z-index:20;pointer-events:none}#redLine:before{content:"";position:absolute;top:-7px;left:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%);background:var(--red);box-shadow:0 0 0 5px var(--red-soft),0 0 16px #d6453573}#ruler{position:absolute;top:0;left:0;right:0;height:var(--top-h);overflow:hidden;z-index:20;pointer-events:none}.ruler-inner{position:relative;height:100%}.axis-line{position:absolute;left:0;right:0;top:22vh;height:1px;background:var(--line)}.tick{position:absolute;top:22vh;width:1px;background:var(--line)}.tick.main{height:clamp(12px,1.8vh,20px)}.tick.minor{top:23.5vh;height:clamp(6px,1vh,10px);background:var(--line-soft)}.tick .t-label{position:absolute;top:clamp(10px,1.5vh,16px);font-size:clamp(10px,1vw,13px);left:50%;transform:translate(-50%);color:#6f6859;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.04em}.tick.cur{background:var(--red);height:clamp(14px,2.2vh,22px)}.tick.cur .t-label{color:var(--red);font-weight:700}#stage{position:absolute;top:var(--top-h);left:0;right:0;bottom:var(--footer-h);overflow:hidden;z-index:10}.lane-wrap{position:relative;height:100%}.lane{position:absolute;left:0;right:0;border-top:1px dashed var(--line-soft)}.lane-label{position:absolute;left:1.2vw;top:6px;font-size:clamp(13px,1.4vw,18px);font-weight:800;letter-spacing:.14em;width:auto;white-space:nowrap;z-index:8;background:#f4efe6e0;padding:2px 8px;border-radius:4px}.lane-label.u1{color:var(--red)}.lane-label.u2{color:#c97b2d}.lane-label.u3{color:#4f7e8c}.lane-label.u4{color:#8a857a}.task{position:absolute;padding:8px 14px;min-width:120px;border-radius:8px;overflow:visible;cursor:pointer}.task:hover{box-shadow:0 6px 20px #1f1d191a;z-index:5}.task .t-title{font-size:clamp(13px,1.3vw,18px);font-weight:600;line-height:1.3}.task .t-time{font-size:clamp(10px,.9vw,12px);margin-top:2px;font-variant-numeric:tabular-nums}.task.u1{background:#d6453512;border:1px solid #E6BBB0;border-left:4px solid var(--red)}.task.u1 .t-time{color:#b0503f}.task.u2{background:#c97b2d17;border:1px solid #E4C9A7;border-left:4px solid #C97B2D}.task.u2 .t-time{color:#a06a24}.task.u3{background:#4f7e8c17;border:1px solid #B9CDD2;border-left:4px solid #4F7E8C}.task.u3 .t-time{color:#3e6673}.task.u4{background:#7a756a14;border:1px solid #D5D0C6;border-left:4px solid #8A857A}.task.u4 .t-time{color:#6f6a5f}.task.wide .t-title,.task.wide .t-time{position:absolute;left:var(--tl,10px);right:auto;max-width:250px;overflow:hidden;text-overflow:ellipsis}.task.offscreen .t-title,.task.offscreen .t-time{display:none}.task.wide .t-title{top:5px}.task.wide .t-time{top:23px;margin-top:0}.task.past{opacity:.42;filter:grayscale(.35)}.task.active{box-shadow:0 0 0 1.5px var(--red),0 4px 16px #d6453529}.task.active:after{content:"";position:absolute;right:9px;top:50%;width:7px;height:7px;border-radius:50%;margin-top:-3.5px;background:var(--red);animation:breathe 1.8s ease-in-out infinite}@keyframes breathe{0%,to{box-shadow:0 0 #d6453559}50%{box-shadow:0 0 0 6px #d6453500}}#cardDeck{display:none;position:absolute;left:0;right:0;bottom:var(--footer-h);height:var(--deck-h);z-index:15;pointer-events:none}.pile-tag{position:absolute;bottom:2px;left:50%;transform:translate(-50%);font-size:clamp(9px,.8vw,11px);letter-spacing:.2em;color:var(--sub);opacity:.7;pointer-events:none}.pcard{position:absolute;border-radius:14px;background:linear-gradient(180deg,#fffefb,#f8f2e5);border:1px solid #E8DFCC;box-shadow:0 6px 20px #3c2d141a,0 2px 6px #3c2d140f,inset 0 1px #fffc;padding:10px 12px;cursor:pointer;transition:box-shadow .25s ease,filter .25s ease,transform .25s ease;will-change:transform;overflow:hidden;pointer-events:auto}.pcard:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:var(--card-accent,#C97B2D)}.pcard.u1{--card-accent:#D64535}.pcard.u2{--card-accent:#C97B2D}.pcard.u3{--card-accent:#4F7E8C}.pcard.u4{--card-accent:#8A857A}.pcard-title{font-size:clamp(11px,1vw,14px);font-weight:700;line-height:1.35;margin-top:6px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.pcard-time{font-size:clamp(9px,.8vw,11px);color:var(--sub);margin-top:4px;font-variant-numeric:tabular-nums}.pcard.hov{box-shadow:0 16px 40px #3c2d1438;z-index:100!important;filter:brightness(1.05)}.pcard.dim{opacity:.45;filter:brightness(.75) saturate(.85)}.pcard.center{z-index:200!important;width:clamp(180px,14vw,220px);height:clamp(140px,16vh,180px);border-radius:18px;border:1.5px solid var(--red);box-shadow:0 20px 56px #3c2d1438,0 6px 16px #3c2d141a,inset 0 1px #ffffffe6;padding:16px 20px;display:flex;flex-direction:column;justify-content:space-between}.pcard.center .pcard-title{font-size:clamp(15px,1.5vw,20px);margin-top:8px}.pcard.center .pcard-time{font-size:clamp(11px,1vw,14px);margin-top:8px}.pcard-done{font-family:inherit;font-size:clamp(11px,1vw,14px);font-weight:600;background:var(--red);color:#fff;border:none;border-radius:999px;padding:8px 24px;cursor:pointer;letter-spacing:.05em;align-self:center;box-shadow:0 4px 12px #d645354d;transition:transform .15s,box-shadow .15s}.pcard-done:hover{transform:translateY(-1px);box-shadow:0 6px 16px #d6453566}#toast{position:absolute;left:50%;top:15vh;transform:translate(-50%) translateY(-8px);z-index:50;pointer-events:none;opacity:0;background:var(--card);border:1px solid #E5DECE;border-left:4px solid var(--red);border-radius:12px;padding:14px 18px;min-width:240px;max-width:min(360px,84vw);box-shadow:0 10px 34px #1f1d1924;transition:opacity .22s ease,transform .22s ease}#toast.show{opacity:1;transform:translate(-50%) translateY(0)}#toast .to-t{font-size:15px;font-weight:700;line-height:1.35}#toast .to-m{font-size:12px;color:var(--sub);margin-top:5px;line-height:1.6}#toast .to-badge{display:inline-block;font-size:11px;letter-spacing:.06em;padding:2px 8px;border-radius:999px;margin-top:8px;background:var(--line-soft);color:var(--sub)}#toast .to-badge.on{background:var(--red-soft);color:var(--red);font-weight:600}#controls{display:none;position:absolute;right:16px;bottom:calc(var(--footer-h) + 12px);display:flex;align-items:center;gap:10px;z-index:40}#zoomLabel{font-size:clamp(10px,.9vw,12px);color:var(--sub);letter-spacing:.06em;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#f4efe6bf;font-variant-numeric:tabular-nums}#backNow{font-family:inherit;font-size:clamp(10px,.9vw,12px);color:#fff;background:var(--red);border:none;border-radius:999px;padding:7px 14px;cursor:pointer;letter-spacing:.08em;box-shadow:0 2px 10px #d6453559;display:none}#backNow.visible{display:inline-block}#hint{display:none;position:absolute;left:16px;bottom:calc(var(--footer-h) + 12px);z-index:40;font-size:clamp(9px,.8vw,11px);color:var(--sub);letter-spacing:.08em;opacity:.85;pointer-events:none}#hint b{color:var(--ink);font-weight:600}.footer-bar{position:absolute;left:0;right:0;bottom:0;height:var(--footer-h);z-index:999;pointer-events:auto;background:#fff;border-top:1px solid var(--line-soft);display:flex;align-items:center;justify-content:center;z-index:60}.footer-bar a{color:var(--sub);text-decoration:none;font-size:clamp(11px,1vw,13px);letter-spacing:.05em}.footer-bar a:hover{color:var(--ink);text-decoration:underline}@media(max-width:820px){#hint{display:none}}@media(prefers-reduced-motion:reduce){.task.active:after{animation:none}}
