:root{font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;color:#24372d;background:#f5f7f2;font-size:16px;--green:#3d762e;--line:#e6eade}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid var(--line);border-radius:9px;background:white;color:inherit;padding:10px 15px;font-size:.875rem}button:hover{filter:brightness(.96)}button:focus-visible,a:focus-visible{outline:3px solid #9ebe45;outline-offset:3px}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:235px 1fr;min-height:100vh}aside{background:#fff;border-right:1px solid var(--line);padding:35px 22px 20px;display:flex;flex-direction:column;gap:6px}.brand{display:flex;align-items:center;gap:10px;font-size:2rem;margin-bottom:38px}.brand>span{font-size:1.28rem;font-weight:800;letter-spacing:1px}.brand small{display:block;font-size:.62rem;letter-spacing:2px;color:#839476;margin-top:6px}.side-label{font-size:.75rem;color:#869185;padding:0 12px;margin:4px 0 10px;letter-spacing:1px}.nav{display:flex;align-items:center;gap:12px;text-align:left;border:0;background:transparent;padding:14px;font-size:1rem;width:100%}.nav.active{background:#edf4e4;color:#467337;font-weight:700}.nav b{margin-left:auto;font-size:.75rem;background:#dce9cc;border-radius:5px;padding:2px 6px}.categories-title{margin-top:31px;display:flex;align-items:center;justify-content:space-between}.categories-title button{padding:0 5px;border:0;font-size:1.25rem}.cat-button{border:0;background:transparent;display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px}.cat-button.selected{background:#f0f5e9}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c)}.cat-button small{margin-left:auto;color:#9aa191}.side-bottom{margin-top:auto;padding:40px 10px 22px}.side-bottom>span{font-size:2rem}.side-bottom strong{display:block;font-size:.875rem;margin:8px 0}.side-bottom p{font-size:.75rem;color:#8a9385;line-height:1.8}.account{display:flex;gap:10px;align-items:center;padding-top:18px;border-top:1px solid var(--line);font-size:.75rem}.account>span{background:#e6eddc;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;font-weight:700}.account small{display:block;color:#8a9385;font-size:.65rem;margin-top:3px}.account div{overflow-wrap:anywhere}main{min-width:0;max-width:1700px;width:100%;margin:auto;padding:34px 38px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:20px}.eyebrow{font-size:.75rem;color:#849175;letter-spacing:1px}h1{font-size:1.85rem;margin:9px 0 10px;font-weight:800;letter-spacing:-1px}h1 span{font-size:1.4rem}header p{font-size:.875rem;color:#8a9385;margin:0}.primary{background:#457b33;border-color:#457b33;color:white;padding:13px 20px;box-shadow:0 3px 0 #315b24}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}.stats article{background:#fff;border:1px solid var(--line);padding:20px 18px;border-radius:13px;display:flex;gap:14px;align-items:center}.stat-icon{background:#edf4e6;border-radius:12px;width:46px;height:48px;display:grid;place-items:center;font-size:1.55rem}.orange{background:#fff2dd}.pink{background:#ffedf0}.yellow{background:#fff8d9}.stats article span{color:#7f897a;font-size:.75rem}.stats strong{font-size:1.8rem;display:block;line-height:1.4;font-variant-numeric:tabular-nums}.stats small{font-size:.7rem;color:#939b8b;font-weight:400;margin-left:9px}.battle-panel,.tasks-panel{border:1px solid var(--line);border-radius:15px;background:white;overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;gap:15px}h2{font-size:1.05rem;margin:0;font-weight:700}.panel-heading p{font-size:.75rem;color:#8c9684;margin:9px 0 0}.panel-heading h2 span{font-size:.7rem;padding:4px 8px;background:#edf4e3;color:#638548;border-radius:5px;margin-left:10px;font-weight:500}.horizon-label{font-size:.75rem;color:#8a9385;white-space:nowrap}select{border:1px solid var(--line);padding:8px;background:#fff;border-radius:6px;color:#4f6549;font-size:.875rem}.horizon-label select{margin-left:6px}.board-scroll{margin:0 14px}.board{position:relative;min-height:410px;background:#8bb84b url('/assets/garden-469c6d05961c.webp') center/100% 100%;border-radius:9px;display:grid;grid-template-columns:18% 1fr;grid-template-rows:1fr 4fr;align-items:stretch;border:4px solid #718b41}.house-label{grid-column:1;grid-row:1 / 3;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:white;text-shadow:0 2px 4px #263a1b;font-weight:700;gap:10px;font-size:.9rem}.house-label strong{font-size:1.5rem}.house-label>span{font-size:.8rem}.brain{font-size:2.4rem;display:flex;flex-direction:column;align-items:center;gap:8px}.brain progress{width:75px;height:9px;accent-color:#f8b9c6}.lanes{grid-column:2;grid-row:2;min-width:0;margin-bottom:18px;display:flex;flex-direction:column;padding-right:4%}.lane{position:relative;min-height:92px;flex:1}.lane:last-child{border:0}.lane-label{position:absolute;top:10px;left:8%;z-index:1;max-width:calc(100% - 24px);font-size:.75rem;line-height:1.4;color:#513316;font-weight:700;background:repeating-linear-gradient(0deg,transparent 0 6px,#8b54231a 7px 8px),linear-gradient(100deg,#dba15b,#f3cf8e 45%,#d49a52);padding:4px 10px;border:1px solid #96612f;border-radius:3px;box-shadow:0 2px 0 #784a27,1px 3px 3px #29441340;text-shadow:0 1px #ffe4ad;overflow-wrap:anywhere}.lane-label::after{content:"";position:absolute;top:calc(100% + 2px);left:calc(50% - 3px);width:6px;height:13px;background:linear-gradient(90deg,#865429,#be8a4d,#865429);border-radius:0 0 2px 2px;box-shadow:2px 2px 2px #29441340}.zombie{position:absolute;left:var(--position);top:27px;transform:translateX(-50%);padding:0;border:0;background:transparent;display:flex;align-items:center;flex-direction:column;max-width:110px;z-index:2;transition:left 1s}.zombie:hover{z-index:10;filter:none}.zombie .sprite{font-size:2.5rem;filter:drop-shadow(2px 4px 1px #29441350);line-height:1.3;animation:sway 2s infinite ease-in-out;animation-delay:var(--delay)}.zombie .z-title{font-size:.65rem;font-weight:600;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fffffff0;border:1px solid #50733f50;border-radius:4px;padding:3px 6px}.zombie.danger .z-title{background:#fff1ea;color:#ba4938}.zombie.lost .sprite{filter:grayscale(1)}.axis{display:flex;justify-content:space-between;padding:11px 4% 10px 18%;font-size:.7rem;color:#8e9c81}.legend{display:flex;gap:22px;flex-wrap:wrap;padding:12px 24px 19px;font-size:.7rem;color:#87927e}.legend span{display:flex;align-items:center;gap:7px}.legend span:last-child{margin-left:auto}.green{background:#6ca44a}.amber{background:#e8ad45}.red{background:#dd7862}.tasks-panel{margin-top:24px}.muted{font-size:.75rem;color:#8b9584}.task-row{display:flex;gap:14px;align-items:center;padding:17px 24px;border-top:1px solid #f0f2eb}.complete-button{padding:0;width:23px;height:23px;border-radius:50%;border:2px solid #cddbbd;flex-shrink:0}.complete-button:hover{background:#e5f3d7}.task-info{flex:1;min-width:0}.task-name{font-size:.9rem;font-weight:500;overflow-wrap:anywhere;cursor:pointer}.task-meta{display:flex;gap:10px;align-items:center;margin-top:7px;color:#8d9686;font-size:.75rem;flex-wrap:wrap}.task-notes{color:#7a8773;font-size:.8rem;margin:8px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.tag{padding:2px 7px;border-radius:4px;color:var(--c);background:color-mix(in srgb,var(--c) 10%,white)}.deadline{font-size:.8rem;white-space:nowrap;color:#72845f}.deadline.danger{color:#c66549}.deadline.lost{color:#a34b55}.row-edit{padding:5px 8px;color:#839277;border:0}.empty{text-align:center;padding:40px 15px 48px;color:#8b967e;font-size:.875rem}.empty .empty-icon{font-size:2.5rem;display:block;margin-bottom:12px}.empty p{font-size:.75rem;margin:10px 0 20px}.done-row .task-name{text-decoration:line-through;color:#8a9582}footer{text-align:center;font-size:.7rem;color:#99a08f;padding:22px 0 0}dialog{width:min(560px,calc(100vw - 32px));border:1px solid #e2e8d9;border-radius:18px;padding:28px;color:#2b3d2c;box-shadow:0 30px 100px #15270945}dialog::backdrop{background:#132b2266;backdrop-filter:blur(4px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.dialog-heading h2{font-size:1.25rem;margin-top:5px}.close{font-size:1.5rem;border:0;padding:3px 8px}form label{display:flex;flex-direction:column;gap:8px;font-size:.875rem;margin-bottom:20px}input,textarea{width:100%;padding:12px;border:1px solid #dce4d2;border-radius:8px;color:#30412d;background:#fff}textarea{resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1.4fr;gap:15px}.form-row select{height:46px}.form-tip{font-size:.75rem;color:#8b937f;background:#f4f7ec;padding:12px;border-radius:8px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-error{color:#b54538;font-size:.8rem}#notice{border:1px solid #e5d5a6;background:#fff8e8;border-radius:8px;padding:14px;margin-bottom:20px;font-size:.875rem}#notice a{text-decoration:underline;font-weight:600}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);padding:15px 25px;background:#2f532c;color:white;border-radius:12px;box-shadow:0 7px 24px #20381730;z-index:20;font-size:.875rem}@keyframes sway{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@media(min-width:1600px){.board{min-height:480px}.lane{min-height:105px}.zombie .sprite{font-size:3rem}}@media(max-width:1100px){.app{grid-template-columns:195px 1fr}aside{padding:25px 15px}main{padding:25px 22px}.stats{gap:8px}.stats article{padding:14px 10px;gap:8px}.stat-icon{width:35px;font-size:1.25rem}.stats article span{font-size:.7rem}.stats strong{font-size:1.5rem}.legend{gap:12px}}@media(max-width:760px){.app{display:block}aside{padding:16px;display:flex;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px}.brand{margin:0 auto 0 0;font-size:1.6rem}.brand>span{font-size:1rem}.brand small{font-size:.6rem}.side-label,#category-nav,.side-bottom,.account{display:none}.nav{width:auto;padding:9px;font-size:.8rem}.nav b{display:none}main{padding:23px 14px}h1{font-size:1.35rem}.eyebrow{font-size:.65rem}header{gap:10px}.primary{padding:11px 12px;white-space:nowrap}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stats article{padding:14px}.stats article span{font-size:.75rem}.board-scroll{overflow-x:auto;margin:0 8px}.board,.axis{min-width:650px}.panel-heading{padding:18px 15px;flex-wrap:wrap}.panel-heading p{line-height:1.8}.legend{padding:12px 15px;gap:12px}.legend span:last-child{margin-left:0}.task-row{padding:16px 14px;gap:10px;flex-wrap:wrap}.task-meta{font-size:.7rem}.deadline{font-size:.75rem}.form-row{grid-template-columns:1fr}.task-info{flex-basis:55%}dialog{padding:22px}.muted{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

[hidden]{display:none!important}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(#18372145,#18372155),url('/assets/garden-469c6d05961c.webp') center/cover}.login-card{background:#fffffff5;padding:36px;border-radius:20px;width:min(420px,100%);box-shadow:0 20px 70px #15320c50}.login-flower{font-size:3rem}.login-card h1{font-size:1.55rem}.login-card>p{font-size:.875rem;color:#798770;line-height:1.7;margin-bottom:26px}.login-card .primary{width:100%}.account #logout{margin-left:auto;padding:5px 7px}.house-label strong{font-size:1rem;overflow-wrap:anywhere;text-align:center}.account{flex-wrap:wrap}@media(max-width:760px){.account{display:flex;width:100%;border-top:0;padding:4px 0 0}.account>span{width:auto;height:auto;background:none}}

.zombie:disabled{opacity:1;cursor:default}.login-card #browse-guest{width:100%;margin-top:12px}

aside>.account{margin-top:auto}.brand>span{font-size:1.05rem;letter-spacing:0;white-space:nowrap}.brand{gap:8px}@media(max-width:760px){aside>.account{margin-top:0}.brand>span{font-size:1rem}}

.lane:nth-child(2) .lane-label{left:7%}.lane:nth-child(3) .lane-label{left:6%}.lane:nth-child(4) .lane-label{left:5%}.lane:nth-child(n+5) .lane-label{left:4%}.lane:last-child:not(:first-child) .lane-label{top:calc(10px - 50%)}
