:root{--bg: #f7f7f8;--surface: #ffffff;--surface-2: #f1f1f3;--border: #e5e5ea;--text: #1a1a1f;--text-muted: #6b6b76;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--success: #16a34a;--danger: #dc2626;--shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06);--radius: 14px}@media (prefers-color-scheme: dark){:root{--bg: #0f1014;--surface: #18181d;--surface-2: #23232a;--border: #2a2a33;--text: #f1f1f3;--text-muted: #9a9aa3;--primary: #818cf8;--primary-hover: #a5b4fc;--primary-soft: #1e1b4b;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.3)}}html.theme-light{--bg: #f7f7f8;--surface: #ffffff;--surface-2: #f1f1f3;--border: #e5e5ea;--text: #1a1a1f;--text-muted: #6b6b76;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--success: #16a34a;--danger: #dc2626;--shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06)}html.theme-dark{--bg: #0f1014;--surface: #18181d;--surface-2: #23232a;--border: #2a2a33;--text: #f1f1f3;--text-muted: #9a9aa3;--primary: #818cf8;--primary-hover: #a5b4fc;--primary-soft: #1e1b4b;--success: #22c55e;--danger: #f87171;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.3)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.5}.app{max-width:640px;margin:0 auto;padding:24px 16px 80px}.header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:12px}.header h1{font-size:24px;font-weight:700;margin:0 0 4px;letter-spacing:-.01em}.header p{font-size:13px;color:var(--text-muted);margin:0}.logo{width:36px;height:36px;border-radius:8px;flex-shrink:0;background:var(--surface-2);object-fit:cover}.icon-btn{background:var(--surface);border:1px solid var(--border);width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text);font-size:16px;transition:background .15s,transform .15s}.icon-btn:hover{background:var(--surface-2)}.icon-btn:active{transform:scale(.95)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);margin-bottom:16px}.row{display:flex;gap:8px;align-items:center}.row>*{min-width:0}.col{display:flex;flex-direction:column;gap:8px}.input,.btn{font:inherit;font-size:14px;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);outline:none;transition:border-color .15s,background .15s}.input:focus{border-color:var(--primary)}.input::placeholder{color:var(--text-muted)}.input.flex{flex:1}.btn{cursor:pointer;font-weight:500;background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover{background:var(--border)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-ghost{background:transparent;border:1px solid var(--border)}.btn-danger{background:transparent;color:var(--danger);border:1px solid transparent;padding:6px 10px;font-size:13px}.btn-danger:hover{background:var(--surface-2)}.label{font-size:12px;color:var(--text-muted);margin-bottom:6px;display:block}.task-list{display:flex;flex-direction:column;gap:8px}.task{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface-2);border-radius:10px;border:1px solid transparent;transition:opacity .2s,background .2s,border-color .15s}.task:hover{border-color:var(--border)}.task.is-done{opacity:.55}.task.is-done .task-content{text-decoration:line-through}.task-time{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600;color:var(--text-muted);min-width:44px}.task-content{flex:1;font-size:15px;word-break:break-word}.task-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.checkbox{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:22px;height:22px;border:2px solid var(--border);border-radius:6px;cursor:pointer;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.checkbox:hover{border-color:var(--primary)}.checkbox:checked{background:var(--primary);border-color:var(--primary)}.checkbox:checked:after{content:"";width:12px;height:6px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}.month-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px}.month-bar .month-label{flex:1;text-align:center;font-size:16px;font-weight:600}.month-bar button{width:32px;height:32px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center}.month-bar button:hover{background:var(--border)}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px}.weekdays>div{text-align:center;font-size:12px;color:var(--text-muted);padding:4px 0;font-weight:500}.weekdays>div.weekend{color:var(--danger)}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.day{position:relative;aspect-ratio:1 / 1;border-radius:8px;background:var(--surface-2);border:1px solid transparent;display:flex;flex-direction:column;padding:4px 6px;cursor:pointer;font-size:13px;color:var(--text);transition:background .15s,border-color .15s,transform .1s;overflow:hidden;text-align:left;font-family:inherit}.day:hover{background:color-mix(in srgb,var(--primary) 8%,var(--surface-2))}.day:active{transform:scale(.97)}.day.out{color:var(--text-muted);opacity:.35}.day.is-today{border-color:var(--primary)}.day.is-today .day-num{background:var(--primary);color:#fff;border-radius:999px;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;padding:0 6px}.day.is-selected{background:var(--primary-soft);border-color:var(--primary)}.day.is-weekend:not(.is-today):not(.out) .day-num{color:var(--danger)}.day-num{font-size:13px;line-height:22px;align-self:flex-start}.day-summary{font-size:10px;color:var(--text-muted);margin-top:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.day-dots{display:flex;gap:2px;margin-top:auto;flex-wrap:wrap;align-items:center}.day-dot{width:5px;height:5px;border-radius:50%;background:var(--primary)}.day-dot.done{background:var(--success);opacity:.5}.day.has-tasks .day-num{font-weight:600}.expanded{margin-top:12px;border-top:1px solid var(--border);padding-top:12px;animation:expandIn .2s ease}@keyframes expandIn{0%{opacity:0;transform:translateY(-4px)}}.expanded-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px}.expanded-title{font-size:15px;font-weight:600}.expanded-meta{font-size:12px;color:var(--text-muted);margin-left:auto;margin-right:8px}.expanded-close{background:transparent;border:none;cursor:pointer;color:var(--text-muted);font-size:20px;padding:2px 8px;border-radius:6px;line-height:1}.expanded-close:hover{background:var(--surface-2);color:var(--text)}.add-row{display:flex;gap:6px;align-items:center;padding:8px 0;margin-bottom:8px}.add-row .input{padding:8px 10px;font-size:13px}.add-row .btn{padding:8px 12px;font-size:13px;height:auto}.date-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px}.date-bar .date-label{flex:1;text-align:center;font-size:15px;font-weight:600}.date-bar button{width:32px;height:32px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center}.date-bar button:hover{background:var(--border)}.empty{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty .emoji{font-size:40px;margin-bottom:8px}.empty .title{font-size:15px;color:var(--text);margin-bottom:4px}.empty .hint{font-size:13px}.skeleton{background:linear-gradient(90deg,var(--surface-2) 0%,var(--border) 50%,var(--surface-2) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;height:48px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.error-banner{background:color-mix(in srgb,var(--danger) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);color:var(--danger);padding:10px 12px;border-radius:10px;font-size:13px;display:flex;align-items:center;gap:8px}.room-badge{display:inline-flex;align-items:center;gap:6px;background:var(--primary-soft);color:var(--primary);padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:13px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:1000;max-width:90%}.toast.is-show{opacity:1;transform:translate(-50%) translateY(-4px)}.toast.is-error{background:var(--danger);color:#fff}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}}.modal{background:var(--surface);border-radius:var(--radius);padding:20px;max-width:380px;width:100%;box-shadow:0 20px 60px #0000004d;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(8px);opacity:0}}.modal h3{margin:0 0 8px;font-size:17px}.modal p{margin:0 0 16px;color:var(--text-muted);font-size:14px}.modal .actions{display:flex;gap:8px;justify-content:flex-end}@media (max-width: 480px){.app{padding:16px 12px 80px}.task{padding:10px 12px}.header h1{font-size:20px}.logo{width:32px;height:32px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
