:root{--background:#f6f7fb;--surface:#fff;--text:#1d2130;--muted:#5d6478;--border:#dde1ea;--accent:#3355d1;--accent-text:#fff;--today:#eef2ff;--error:#b42318;--success:#1e7a3c;--homework:#d9480f;--event:#1c7ed6;--club:#2b8a3e;--now:#e03131;color:var(--text);background:var(--background);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}@media (prefers-color-scheme:dark){:root{--background:#14161d;--surface:#1e212b;--text:#e8eaf0;--muted:#a2a8b8;--border:#343846;--accent:#6d8bff;--accent-text:#0d1020;--today:#252b45;--error:#ff8a80;--success:#7ad397;--homework:#ff8a4c;--event:#5aa9f0;--club:#63c27a;--now:#ff6b6b}}*{box-sizing:border-box}body{background:var(--background);margin:0}button,input,select{font:inherit;color:inherit}.app{max-width:1200px;margin:0 auto;padding:24px 16px 48px}.app-header h1{margin:0;font-size:2rem}.app-header p{color:var(--muted);margin:4px 0 20px}.save-error,.form-error{color:var(--error)}.form-confirmation{color:var(--success)}.form-error,.form-confirmation{margin:12px 0 0}.update-banner{border:2px solid var(--accent);background:var(--today);border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:16px;padding:10px 14px;display:flex}.update-banner p{flex:200px;margin:0}.account-bar{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:16px;padding:10px 14px;display:flex}.account-bar p{flex:220px;margin:0}.account-email{color:var(--muted);overflow-wrap:anywhere}.account-bar .account-notice,.account-bar .account-error{flex-basis:100%}.account-notice{color:var(--success)}.account-error{color:var(--error)}.canvas-panel{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-bottom:16px;padding:10px 14px 14px}.canvas-panel h2{margin:0 0 8px;font-size:1.1rem}.canvas-panel p{margin:0}.canvas-link-form,.canvas-actions{flex-wrap:wrap;align-items:flex-end;gap:8px 12px;display:flex}.canvas-actions{align-items:center}.canvas-actions p{flex:220px}.canvas-updated{color:var(--muted)}.canvas-help{color:var(--muted);flex-basis:100%;font-size:.85rem}.course-names{flex-direction:column;gap:10px;display:flex}.course-name-field input{max-width:360px}.course-code{color:var(--text);overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:.85rem}.course-names-buttons{gap:8px;display:flex}.canvas-panel .account-notice,.canvas-panel .account-error{margin-top:8px}.form-section{margin-bottom:20px;scroll-margin-top:16px}.item-form{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}.item-form.editing{border:2px solid var(--accent)}.item-form h2{margin:0 0 12px;font-size:1.1rem}.item-form-fields{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:.9rem;display:flex}.field-title{flex:220px}.field input,.field select{border:1px solid var(--border);background:var(--background);border-radius:8px;min-height:42px;padding:8px 10px}.field-checkbox{min-height:42px;color:var(--text);cursor:pointer;flex-direction:row;align-items:center;gap:8px}.field-checkbox input{width:20px;height:20px;accent-color:var(--accent);margin:0}.weekday-picker{gap:4px;display:flex}.weekday-picker button{border:1px solid var(--border);background:var(--background);cursor:pointer;border-radius:8px;width:40px;height:42px;padding:0;font-weight:600}.weekday-picker button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:.85rem;font-weight:600;text-decoration:underline}.skipped-weeks{color:var(--muted);margin:12px 0 0;font-size:.9rem}.primary-button,.secondary-button{cursor:pointer;border-radius:8px;min-height:42px;padding:8px 18px;font-weight:600}.primary-button{background:var(--accent);color:var(--accent-text);border:none}.secondary-button{border:1px solid var(--border);background:var(--surface)}.calendar-toolbar{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:12px;display:flex}.calendar-nav{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.calendar-nav h2{white-space:nowrap;margin:0 8px;font-size:1.25rem}.calendar-toolbar button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;min-width:42px;min-height:42px;padding:6px 12px}.calendar-toolbar button:disabled{opacity:.5;cursor:default}.view-switch{display:flex}.view-switch button{min-width:72px;font-weight:600}.view-switch button:first-child{border-radius:8px 0 0 8px}.view-switch button:last-child{border-left:none;border-radius:0 8px 8px 0}.view-switch button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.calendar-empty{color:var(--muted)}.month-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.month-weekday{color:var(--muted);padding:2px 4px;font-size:.8rem;font-weight:600}.month-day{border:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:2px;min-width:0;min-height:72px;padding:4px;display:flex}.month-day:hover{border-color:var(--accent)}.month-day.outside{opacity:.45}.month-day.today{background:var(--today);border-color:var(--accent)}.month-day-number{font-size:.85rem;font-weight:600}.month-item{border-left:3px solid var(--item-color);background:var(--background);white-space:nowrap;text-overflow:ellipsis;border-radius:3px;padding:0 3px;font-size:.68rem;overflow:hidden}.month-more{color:var(--muted);font-size:.68rem}@media (width>=900px){.month-day{min-height:110px;padding:6px}.month-item,.month-more{font-size:.8rem}}.day-list{margin-bottom:12px}.day-list h3{margin:0 0 6px;font-size:1rem}.timeline-scroll{border:1px solid var(--border);background:var(--surface);border-radius:12px;max-height:min(70vh,720px);overflow-y:auto}.timeline{position:relative}.now-line{z-index:3;background:var(--now);pointer-events:none;height:2px;position:absolute;left:52px;right:0}.now-line:before{content:"";background:var(--now);border-radius:50%;width:10px;height:10px;position:absolute;top:-4px;left:-5px}.timeline-hour{border-top:1px solid var(--border);position:absolute;left:0;right:0}.timeline-hour:first-child{border-top:none}.timeline-label{color:var(--muted);font-size:.75rem;position:absolute;top:2px;left:8px}.timeline-blocks{margin:0;padding:0;list-style:none;position:absolute;inset:0 6px 0 56px}.day-block{border-left:4px solid var(--item-color);background:var(--background);border-radius:6px;align-items:flex-start;min-height:28px;display:flex;position:absolute;overflow:hidden}.day-block.editing{outline:2px solid var(--accent)}.day-block.done{opacity:.55}.day-block.done .block-title{text-decoration:line-through}.day-block.confirming{z-index:2;min-width:220px;overflow:visible;height:auto!important}.day-block .item-check{margin:6px 0 0 6px}.block-edit{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;min-width:0;padding:4px 26px 4px 6px;display:flex}.block-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.block-time{color:var(--muted);font-size:.8rem}.block-confirm{padding:6px 8px 8px;font-size:.9rem}.block-confirm p{margin:0 0 6px}.week-days{gap:8px;margin:0;padding:0;list-style:none;display:grid}@media (width>=900px){.week-days{grid-template-columns:repeat(7,minmax(0,1fr))}.day{min-height:220px}}.day{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px}.day.today{background:var(--today);border-color:var(--accent)}.day-heading{align-items:baseline;gap:6px;margin:0 0 8px;font-size:1rem;display:flex}.day-open{font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;margin:-2px -4px;padding:2px 4px}.day-open:hover{background:var(--border)}.day-name{color:var(--muted);font-weight:500}.today-badge{color:var(--accent);margin-left:auto;font-size:.75rem}.day-items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.item{border-left:4px solid var(--item-color);background:var(--background);border-radius:6px;position:relative}.item.editing{outline:2px solid var(--accent)}.item-main{align-items:flex-start;display:flex}.item-check{width:22px;height:22px;accent-color:var(--item-color);cursor:pointer;flex:none;margin:8px 0 0 8px}.item.done{opacity:.55}.item.done .item-title,.month-item.done{text-decoration:line-through}.month-item.done{opacity:.55}.item-edit{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;flex:1;min-width:0;padding:6px 28px 6px 8px;display:flex}.item-edit:hover{background:var(--border)}.item-homework{--item-color:var(--homework)}.item-event{--item-color:var(--event)}.item-club{--item-color:var(--club)}.item-type{text-transform:uppercase;letter-spacing:.03em;color:var(--item-color);font-size:.72rem;font-weight:600}.item-title{overflow-wrap:anywhere;font-weight:600}.item-time,.item-repeat{color:var(--muted);font-size:.85rem}.item-confirm{padding:4px 8px 8px;font-size:.9rem}.item-confirm p{margin:0 0 8px}.item-confirm-buttons{flex-wrap:wrap;gap:6px;display:flex}.item-confirm-buttons button{min-height:36px;padding:4px 12px}.danger-button{background:var(--error);color:var(--accent-text);cursor:pointer;border:none;border-radius:8px;font-weight:600}.item-skip{margin:-4px 0 2px 2px;font-size:.8rem}.item-delete{width:26px;height:26px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;font-size:1.1rem;position:absolute;top:2px;right:2px}.item-delete:hover{background:var(--border)}
