*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;color-scheme:light dark;--color-bg: #ffffff;--color-bg-subtle: #f7f7f5;--color-text: #1a1a1a;--color-text-muted: #6b6b6b;--color-border: #e3e3e0;--color-accent: #2f4bd1;--color-accent-contrast: #ffffff}@media(prefers-color-scheme:dark){:root{--color-bg: #121212;--color-bg-subtle: #1b1b1b;--color-text: #f2f2f0;--color-text-muted: #a3a3a3;--color-border: #333331;--color-accent: #7c93ff;--color-accent-contrast: #121212}}body{min-height:100dvh;background-color:var(--color-bg);color:var(--color-text)}.page{max-width:64rem;margin-inline:auto;padding:3rem 1.5rem}.button{border:1px solid var(--color-border);border-radius:6px;background-color:var(--color-bg);color:var(--color-text);padding:.55rem 1rem;font-size:.9rem;font-weight:500;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.button:hover{border-color:var(--color-text-muted)}.button--primary{background-color:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.button--primary:hover{opacity:.9}.button--ghost{background-color:transparent;border-color:transparent;color:var(--color-text-muted);padding:.4rem .6rem}.button--ghost:hover{color:var(--color-text);border-color:var(--color-border)}.planner__header{margin-bottom:2rem}.planner__eyebrow{font-size:.85rem;font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.planner__header h1{font-size:2rem;font-weight:600;letter-spacing:-.01em}.planner__summary{margin-top:.5rem;font-size:.95rem;color:var(--color-text-muted)}.planner__empty{margin-top:2rem;padding:2rem;text-align:center;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:8px;background-color:var(--color-bg-subtle)}.planner__groups{display:flex;flex-direction:column;gap:2.5rem;margin-top:2.5rem}.task-form{padding:1.5rem;border:1px solid var(--color-border);border-radius:8px;background-color:var(--color-bg-subtle)}.task-form__row{display:flex;flex-wrap:wrap;gap:1rem}.task-form__field{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;font-weight:500;color:var(--color-text-muted);flex:1 1 10rem}.task-form__field--grow{flex:2 1 16rem}.task-form__field input{border:1px solid var(--color-border);border-radius:6px;padding:.55rem .7rem;font-size:.95rem;color:var(--color-text);background-color:var(--color-bg)}.task-form__field input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.task-form__actions{display:flex;gap:.75rem;margin-top:1.25rem}.task-group__label{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:.85rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.task-group__list{list-style:none;display:flex;flex-direction:column;gap:.75rem}.task-item{display:flex;align-items:flex-start;gap:.85rem;padding:.9rem 1rem;border:1px solid var(--color-border);border-radius:8px;background-color:var(--color-bg);transition:opacity .15s ease}.task-item__checkbox{margin-top:.2rem;width:1.1rem;height:1.1rem;accent-color:var(--color-accent);cursor:pointer;flex-shrink:0}.task-item__body{flex:1;min-width:0}.task-item__title{font-size:.98rem;font-weight:500}.task-item--completed .task-item__title{text-decoration:line-through;color:var(--color-text-muted)}.task-item__meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem}.task-item__time,.task-item__subject{font-size:.78rem;font-weight:500;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:4px;padding:.15rem .5rem}.task-item__actions{display:flex;gap:.25rem;flex-shrink:0}
