:root{color:#111827;background:#f3f4f6;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.5}*{box-sizing:border-box}body{margin:0}.app{max-width:1200px;margin:0 auto;padding:24px 16px 48px}.header h1{margin:0 0 16px;font-size:1.6rem}.error{color:#9b1c1c;background:#fde8e8;border-radius:8px;padding:8px 12px}.layout{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start;gap:24px;display:grid}@media (width<=860px){.layout{grid-template-columns:1fr}}.calendar,.panel{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}.cal-nav{align-items:center;gap:8px;margin-bottom:12px;display:flex}.cal-nav h2{text-align:center;min-width:8em;margin:0 8px;font-size:1.2rem}.cal-nav button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:4px 12px;font-size:1rem}.cal-nav .today-btn{margin-left:auto}.grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.weekday{text-align:center;color:#4b5563;padding:4px 0;font-size:.85rem;font-weight:600}.sun{color:#c81e1e}.sat{color:#1e40af}.day{text-align:left;cursor:pointer;min-height:84px;font:inherit;background:#fff;border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;padding:4px 6px;display:flex;overflow:hidden}.day:hover{background:#f9fafb}.day.other{opacity:.45}.day.today .num{color:#fff;background:#2563eb;border-radius:999px;padding:0 7px}.day.selected{outline-offset:-1px;outline:2px solid #2563eb}.day:focus-visible,button:focus-visible,input:focus-visible{outline-offset:1px;outline:3px solid #f59e0b}.num{align-self:flex-start;font-size:.85rem;font-weight:600}.preview{color:#111827;width:100%;margin:4px 0 0;padding:0;font-size:.72rem;list-style:none}.preview li{white-space:nowrap;text-overflow:ellipsis;background:#e0e7ff;border-radius:4px;margin-bottom:2px;padding:1px 4px;overflow:hidden}.preview li.done{color:#6b7280;background:#f3f4f6;text-decoration:line-through}.preview li.more{color:#4b5563;background:0 0}.panel h2{margin:0 0 12px;font-size:1.1rem}.add-form{gap:8px;margin-bottom:12px;display:flex}.add-form input{min-width:0;font:inherit;border:1px solid #d1d5db;border-radius:8px;flex:1;padding:8px 10px}.add-form button{color:#fff;cursor:pointer;font:inherit;background:#2563eb;border:none;border-radius:8px;padding:8px 14px}.add-form button:disabled{cursor:not-allowed;background:#93c5fd}.empty{color:#4b5563}.todo-list{margin:0;padding:0;list-style:none}.todo{border-bottom:1px solid #f3f4f6;align-items:center;gap:8px;padding:8px 0;display:flex}.todo .title{word-break:break-word;cursor:pointer;flex:1;min-width:0}.todo.done .title{color:#6b7280;text-decoration:line-through}.todo .edit{min-width:0;font:inherit;flex:1;padding:4px 6px}.todo .move{border:1px solid #e5e7eb;border-radius:6px;padding:2px 4px;font-size:.8rem}.icon{cursor:pointer;color:#4b5563;background:0 0;border:none;padding:4px;font-size:1rem}.icon.danger{color:#c81e1e}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
